ai-agent-test 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SYSTEM.md CHANGED
@@ -9,6 +9,7 @@ And read existing code and files enough before making changes, to avoid duplicat
9
9
  2. When user says "commit" - Perform both `git add`, `git commit`, AND `git push` (no confirmation needed)
10
10
  3. If you need more information to complete the task, ask the user a follow-up question using the `ask_user_followup` tool. You can call this multiple times if needed. You can use this tool to break loop if the agent falls into a loop with the same tool calling.
11
11
  4. OUTPUT FORMAT: You are communicating through a raw, unformatted terminal interface. You must output absolute plain text only. Never use asterisks, underscores, or backticks. For emphasis, use ALL CAPS. For lists, use a standard dash (-) followed by a single space.
12
+ 5. ALWAYS RE-READ FILES BEFORE EDITING - If you have previously read a file in this session, you MUST RE-READ it immediately before making ANY edits. The user may have manually modified files during the session, and you must not overwrite their changes. Run a fresh read() call before every edit() or write() operation.
12
13
 
13
14
  ## GIT BEST PRACTICES:
14
15
 
@@ -22,6 +23,9 @@ And read existing code and files enough before making changes, to avoid duplicat
22
23
  - You can use built-in git commands using bash tools.
23
24
  - Use `gh` (GitHub CLI) for GitHub operations
24
25
  - Run `compilation_check` before committing to catch errors (e.g., `npx tsc --noEmit`, `npm run lint`)
26
+ - Use `doc_retrieval` for library, framework, database, API, and platform documentation questions. It can discover official docs on its own, but you can pass explicit URLs or preferred domains when they are already known.
27
+ - Prefer `doc_retrieval` over `internet_search` when the task needs reference docs or latest technical usage details. Use `internet_search` for broader web research, news, or non-documentation sources.
28
+ - If documentation output is missing key details, call `doc_retrieval` again with a higher `maxReadBodyLength`, or set it to `0` to disable truncation.
25
29
 
26
30
  ## METADATA:
27
31
 
package/TODOs.md ADDED
@@ -0,0 +1,3 @@
1
+ - 1. [ ] concat ~/.ai/SYSTEM.md and project's .ai/SYSTEM.md to ai-agent's system prompt.
2
+ - 2. [ ] add doc retrival tool. To get latest lib info so the agent can solve tasks more effectively. Not just library, it can be doc for technologies like postgres. so approach should be broader not just like npm library. and check internet_search tool if you can extract logic and have shared code. also improve SYSTEM.md once it's done.
3
+ - 3. [ ] improve loop with testing tools so the agent can complete tasks in better shape.
package/bin/ai CHANGED
@@ -3,9 +3,44 @@
3
3
  // Pass command-line arguments to the main module first
4
4
  import { argv } from "process"
5
5
 
6
- // Set AI_MODEL_INDEX environment variable if provided via 'models' command
7
- if (argv[2] === "models" && argv[3]) {
8
- process.env.AI_MODEL_INDEX = argv[3]
6
+ // Handle models command
7
+ if (argv[2] === "models") {
8
+ const subCommand = argv[3]
9
+
10
+ if (subCommand === "ls") {
11
+ // List all models
12
+ import("fs").then(({ readFileSync }) => {
13
+ import("os").then(({ homedir }) => {
14
+ import("path").then(({ join }) => {
15
+ try {
16
+ const modelsFile = join(homedir(), ".ai", "models.json")
17
+ const fileContent = readFileSync(modelsFile, "utf-8")
18
+ const models = JSON.parse(fileContent)
19
+
20
+ if (!Array.isArray(models) || models.length === 0) {
21
+ console.log("No models found in ~/.ai/models.json")
22
+ process.exit(1)
23
+ }
24
+
25
+ const displayPath = modelsFile.replace(homedir(), "~")
26
+ console.log(`Available models (${displayPath}):`)
27
+ models.forEach((model, index) => {
28
+ console.log(
29
+ `${index}. ${model.modelName} (${model.modelApiType})`,
30
+ )
31
+ })
32
+ process.exit(0)
33
+ } catch (error) {
34
+ console.error(`Failed to load models: ${error.message}`)
35
+ process.exit(1)
36
+ }
37
+ })
38
+ })
39
+ })
40
+ } else if (subCommand) {
41
+ // Set AI_MODEL_INDEX environment variable
42
+ process.env.AI_MODEL_INDEX = subCommand
43
+ }
9
44
  }
10
45
 
11
46
  // Load config after setting model index
@@ -38,6 +73,7 @@ if (argv[2] === "--help") {
38
73
  Usage: ai [options] [model-index]
39
74
 
40
75
  Commands:
76
+ models ls List all available models
41
77
  models <idx> Run with model at index <idx> from config
42
78
  sessions ls List last 20 sessions
43
79
  sessions <idx> Load and restart from session <idx>
@@ -50,6 +86,7 @@ Arguments:
50
86
 
51
87
  Examples:
52
88
  ai # Run with default model
89
+ ai models ls # List all available models
53
90
  ai models 1 # Run with second model in config
54
91
  ai sessions ls # List last 20 sessions
55
92
  ai sessions 2 # Load and restart from session 2
package/dist/index.js CHANGED
@@ -208,15 +208,9 @@ async function runLoop(prompt) {
208
208
  async function main() {
209
209
  console.log(chalk.cyan(`AI Agent Ready! (${process.cwd()})\n`));
210
210
  console.log(chalk.cyan("interrupt: ESC, debug: 'debug [num]', newline: Shift+Enter"));
211
- // Check for updates - only show if update is available
212
- try {
213
- const updateInfo = await checkNpmUpdate();
214
- if (updateInfo?.show) {
215
- console.log(chalk.cyan(`\nNew version available! Run 'ai update' (${updateInfo.currentVersion} -> ${updateInfo.latestVersion})`));
216
- }
217
- }
218
- catch (error) {
219
- // Silent fail - just don't show update message if something goes wrong
211
+ const updateInfo = await checkNpmUpdate();
212
+ if (updateInfo?.show) {
213
+ console.log(chalk.cyan(`\nNew version available! Run 'ai update' (${updateInfo.currentVersion} -> ${updateInfo.latestVersion})`));
220
214
  }
221
215
  console.log(chalk.cyan("============================================================\n"));
222
216
  while (true) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,QAAQ;;;;;;qCAiBhB;QACD,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAsGF,CAAA"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,QAAQ;;;;;;qCAiBhB;QACD,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB;CAuHF,CAAA"}
@@ -58,6 +58,17 @@ export const bashTool = {
58
58
  }
59
59
  else {
60
60
  console.error(chalk.red(`[TOOL - bash] ⚠️ Command failed with code ${code}`));
61
+ // Print stderr output for visibility
62
+ if (stderrOutput.trim()) {
63
+ const lines = stderrOutput.trim().split("\n");
64
+ console.error(chalk.red(`[TOOL - bash] Stderr preview: ${lines[0]}...`));
65
+ if (lines.length > 1) {
66
+ console.error(chalk.red(`[TOOL - bash] ${lines[1]}...`));
67
+ if (lines.length > 2) {
68
+ console.error(chalk.red(`[TOOL - bash] and ${lines.length - 2} more line(s)`));
69
+ }
70
+ }
71
+ }
61
72
  resolve({
62
73
  success: false,
63
74
  error: `Command failed with code ${code}`,
@@ -1 +1 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE;;KAEV;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC3D,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,8FAA8F,CAC/F;KACJ,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EACP,OAAO,GAIR,EAAE,EAAE;QACH,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,+CAA+C,OAAO,OAAO,OAAO,EAAE,CACvE,CACF,CAAA;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;gBAC7C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAQ;aACvC,CAAC,CAAA;YAEF,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,IAAI,SAAS,GAA0B,IAAI,CAAA;YAC3C,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,IAAI,CAAA;oBACjB,IAAI,SAAS,EAAE,CAAC;wBACd,YAAY,CAAC,SAAS,CAAC,CAAA;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC,CAAA;YAED,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,IAAI,YAAY,GAAG,EAAE,CAAA;YAErB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACzC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACzC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YACjC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;gBAC1C,YAAY,EAAE,CAAA;gBACd,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,+CAA+C;oBAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAC5D,CAAA;wBACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;4BACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACrB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,qBAAqB,KAAK,CAAC,MAAM,GAAG,CAAC,eAAe,CACrD,CACF,CAAA;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC;wBACN,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,WAAW,MAAM,mCAAmC;qBAC7D,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAC/D,CAAA;oBACD,OAAO,CAAC;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,4BAA4B,IAAI,EAAE;wBACzC,MAAM,EAAE,YAAY,IAAI,SAAS;qBAClC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBACnC,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC/D,CAAA;gBACD,OAAO,CAAC;oBACN,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,MAAM,EAAE,SAAS;iBAClB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,cAAc;YACd,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;gBAChC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBACnC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;wBACvB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,4CAA4C,OAAO,UAAU,CAC9D,CACF,CAAA;wBACD,OAAO,CAAC;4BACN,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,2BAA2B,OAAO,UAAU;4BACnD,MAAM,EAAE,wCAAwC;yBACjD,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC,EAAE,SAAS,CAAC,CAAA;YACf,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ export declare const docRetrieval: {
3
+ description: string;
4
+ inputSchema: z.ZodObject<{
5
+ query: z.ZodString;
6
+ urls: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
+ preferredDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ maxResults: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
9
+ maxReadBodyLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
10
+ }, z.core.$strip>;
11
+ execute: ({ query, urls, preferredDomains, maxResults, maxReadBodyLength, }: {
12
+ query: string;
13
+ urls?: string[];
14
+ preferredDomains?: string[];
15
+ maxResults?: number;
16
+ maxReadBodyLength?: number;
17
+ }) => Promise<{
18
+ success: boolean;
19
+ error: string;
20
+ output?: never;
21
+ metadata?: never;
22
+ } | {
23
+ success: boolean;
24
+ output: string;
25
+ metadata: {
26
+ maxResults: number;
27
+ maxReadBodyLength: number;
28
+ preferredDomains: string[];
29
+ searchQueries: string[];
30
+ resultCount: number;
31
+ };
32
+ error?: never;
33
+ }>;
34
+ };
35
+ //# sourceMappingURL=doc_retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc_retrieval.d.ts","sourceRoot":"","sources":["../../src/tools/doc_retrieval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkQvB,eAAO,MAAM,YAAY;;;;;;;;;iFAuCpB;QACD,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B;;;;;;;;;;;;;;;;;CAoHF,CAAA"}
@@ -0,0 +1,283 @@
1
+ import { assert } from "console";
2
+ import chalk from "chalk";
3
+ import { z } from "zod";
4
+ import { fetchExtractedPageContent, searchWeb, } from "./web_retrieval.js";
5
+ const DOC_HOST_BONUS = new Set([
6
+ "developer.mozilla.org",
7
+ "docs.github.com",
8
+ "docs.python.org",
9
+ ]);
10
+ const LOW_SIGNAL_HOST_PENALTIES = new Set([
11
+ "dev.to",
12
+ "medium.com",
13
+ "hashnode.com",
14
+ "reddit.com",
15
+ "stackoverflow.com",
16
+ "geeksforgeeks.org",
17
+ ]);
18
+ const KNOWN_DOC_DOMAINS = [
19
+ { match: /\bpostgres(?:ql)?\b/i, domains: ["postgresql.org"] },
20
+ { match: /\breact\b/i, domains: ["react.dev"] },
21
+ { match: /\bnext(?:\.js|js)?\b/i, domains: ["nextjs.org"] },
22
+ { match: /\bnode(?:\.js|js)?\b/i, domains: ["nodejs.org"] },
23
+ { match: /\btypescript\b/i, domains: ["typescriptlang.org"] },
24
+ { match: /\bjavascript\b|\bmdn\b/i, domains: ["developer.mozilla.org"] },
25
+ { match: /\bprisma\b/i, domains: ["prisma.io"] },
26
+ { match: /\btailwind\b/i, domains: ["tailwindcss.com"] },
27
+ { match: /\bvite\b/i, domains: ["vite.dev"] },
28
+ { match: /\bopenai\b/i, domains: ["platform.openai.com"] },
29
+ { match: /\banthropic\b|\bclaude\b/i, domains: ["docs.anthropic.com"] },
30
+ ];
31
+ function uniqueStrings(values) {
32
+ return [...new Set(values.filter(Boolean))];
33
+ }
34
+ function normalizeDomain(value) {
35
+ return value
36
+ .trim()
37
+ .replace(/^https?:\/\//, "")
38
+ .replace(/^www\./, "")
39
+ .replace(/\/.*$/, "")
40
+ .toLowerCase();
41
+ }
42
+ function normalizeUrl(url) {
43
+ return url.replace(/[),.;!?]+$/, "");
44
+ }
45
+ function extractUrls(text) {
46
+ const matches = text.match(/https?:\/\/[^\s]+/g) || [];
47
+ return uniqueStrings(matches.map(normalizeUrl));
48
+ }
49
+ function getHostname(url) {
50
+ return new URL(url).hostname.replace(/^www\./, "").toLowerCase();
51
+ }
52
+ function getPathname(url) {
53
+ return new URL(url).pathname.toLowerCase();
54
+ }
55
+ function inferDocDomains(query) {
56
+ const domains = [];
57
+ for (const candidate of KNOWN_DOC_DOMAINS) {
58
+ if (candidate.match.test(query)) {
59
+ domains.push(...candidate.domains);
60
+ }
61
+ }
62
+ return uniqueStrings(domains);
63
+ }
64
+ function buildSearchQueries({ query, preferredDomains, }) {
65
+ const queries = [`${query} official documentation`, `${query} docs`];
66
+ for (const domain of preferredDomains.slice(0, 4)) {
67
+ queries.push(`site:${domain} ${query}`);
68
+ }
69
+ return uniqueStrings(queries);
70
+ }
71
+ function scoreSearchResult({ result, preferredDomains, }) {
72
+ const reasons = [];
73
+ let score = 0;
74
+ try {
75
+ const hostname = getHostname(result.url);
76
+ const pathname = getPathname(result.url);
77
+ const titleAndDescription = `${result.title} ${result.description || ""}`.toLowerCase();
78
+ if (preferredDomains.some((domain) => hostname === domain || hostname.endsWith(`.${domain}`))) {
79
+ score += 45;
80
+ reasons.push("preferred domain");
81
+ }
82
+ if (hostname.startsWith("docs.")) {
83
+ score += 18;
84
+ reasons.push("docs subdomain");
85
+ }
86
+ if (DOC_HOST_BONUS.has(hostname)) {
87
+ score += 25;
88
+ reasons.push("trusted documentation host");
89
+ }
90
+ if (/(\/docs?\/|\/reference\/|\/api\/|\/guide\/|\/manual\/|\/learn\/)/.test(pathname)) {
91
+ score += 14;
92
+ reasons.push("documentation path");
93
+ }
94
+ if (/(docs|documentation|reference|guide|manual)/.test(titleAndDescription)) {
95
+ score += 10;
96
+ reasons.push("documentation title");
97
+ }
98
+ if (/(blog|news|release notes)/.test(titleAndDescription) ||
99
+ pathname.includes("/blog/")) {
100
+ score -= 10;
101
+ reasons.push("blog-like result");
102
+ }
103
+ if (LOW_SIGNAL_HOST_PENALTIES.has(hostname)) {
104
+ score -= 25;
105
+ reasons.push("low-signal host");
106
+ }
107
+ }
108
+ catch {
109
+ score -= 100;
110
+ reasons.push("invalid url");
111
+ }
112
+ return {
113
+ ...result,
114
+ score,
115
+ reasons,
116
+ };
117
+ }
118
+ function dedupeResults(results) {
119
+ const seen = new Set();
120
+ const deduped = [];
121
+ for (const result of results) {
122
+ const normalizedUrl = normalizeUrl(result.url);
123
+ if (seen.has(normalizedUrl)) {
124
+ continue;
125
+ }
126
+ seen.add(normalizedUrl);
127
+ deduped.push({
128
+ ...result,
129
+ url: normalizedUrl,
130
+ });
131
+ }
132
+ return deduped;
133
+ }
134
+ async function resolveCandidateUrls({ query, explicitUrls, preferredDomains, maxResults, apiKey, }) {
135
+ const explicitResults = explicitUrls.map((url) => ({
136
+ url,
137
+ title: url,
138
+ description: "Explicit URL from request",
139
+ }));
140
+ const needsSearch = explicitResults.length < maxResults;
141
+ const searchQueries = needsSearch
142
+ ? buildSearchQueries({ query, preferredDomains })
143
+ : [];
144
+ const discoveredResults = needsSearch
145
+ ? (await Promise.all(searchQueries.slice(0, 5).map((searchQuery) => searchWeb({
146
+ query: searchQuery,
147
+ count: Math.min(3, maxResults),
148
+ apiKey,
149
+ }).catch(() => [])))).flat()
150
+ : [];
151
+ const rankedResults = dedupeResults([
152
+ ...explicitResults,
153
+ ...discoveredResults,
154
+ ])
155
+ .map((result) => scoreSearchResult({
156
+ result,
157
+ preferredDomains,
158
+ }))
159
+ .sort((left, right) => right.score - left.score)
160
+ .slice(0, maxResults);
161
+ return {
162
+ rankedResults,
163
+ searchQueries,
164
+ };
165
+ }
166
+ export const docRetrieval = {
167
+ description: "Retrieve documentation pages for libraries, frameworks, platforms, databases, and other technologies. This tool can discover official docs automatically, prefers authoritative sources, and reads more content per page than general internet search. Set maxReadBodyLength to 0 to disable truncation.",
168
+ inputSchema: z.object({
169
+ query: z
170
+ .string()
171
+ .describe("The documentation question or topic to research."),
172
+ urls: z
173
+ .array(z.string().url())
174
+ .optional()
175
+ .describe("Optional documentation URLs to fetch directly before searching."),
176
+ preferredDomains: z
177
+ .array(z.string())
178
+ .optional()
179
+ .describe("Optional preferred domains such as react.dev or postgresql.org."),
180
+ maxResults: z
181
+ .number()
182
+ .max(5)
183
+ .default(3)
184
+ .optional()
185
+ .describe("Maximum number of documentation pages to return."),
186
+ maxReadBodyLength: z
187
+ .number()
188
+ .default(12000)
189
+ .optional()
190
+ .describe("Approximate characters to return from each page after extraction. Use 0 for no truncation."),
191
+ }),
192
+ execute: async ({ query, urls = [], preferredDomains = [], maxResults = 3, maxReadBodyLength = 12000, }) => {
193
+ const explicitUrls = uniqueStrings([...urls, ...extractUrls(query)]);
194
+ const resolvedDomains = uniqueStrings([
195
+ ...preferredDomains.map(normalizeDomain),
196
+ ...inferDocDomains(query),
197
+ ]);
198
+ const needsSearch = explicitUrls.length < maxResults;
199
+ const apiKey = process.env.BRAVE_API_KEY || "";
200
+ if (needsSearch) {
201
+ assert(apiKey, "BRAVE_API_KEY environment variable is required when doc retrieval needs web search");
202
+ }
203
+ console.log(chalk.yellow(`\n[TOOL - doc_retrieval] Query: ${query}`));
204
+ if (resolvedDomains.length > 0) {
205
+ console.log(chalk.green(`[TOOL - doc_retrieval] Preferred domains: ${resolvedDomains.join(", ")}`));
206
+ }
207
+ const { rankedResults, searchQueries } = await resolveCandidateUrls({
208
+ query,
209
+ explicitUrls,
210
+ preferredDomains: resolvedDomains,
211
+ maxResults,
212
+ apiKey,
213
+ });
214
+ if (rankedResults.length === 0) {
215
+ return {
216
+ success: false,
217
+ error: "No documentation results found",
218
+ };
219
+ }
220
+ const documents = await Promise.all(rankedResults.map(async (result, index) => {
221
+ console.log(chalk.green(`[TOOL - doc_retrieval] Result ${index + 1}: ${result.title} - ${result.url}`));
222
+ try {
223
+ const content = await fetchExtractedPageContent(maxReadBodyLength
224
+ ? {
225
+ url: result.url,
226
+ maxLength: maxReadBodyLength,
227
+ }
228
+ : {
229
+ url: result.url,
230
+ });
231
+ return {
232
+ ...result,
233
+ content,
234
+ };
235
+ }
236
+ catch (error) {
237
+ return {
238
+ ...result,
239
+ error: error.message,
240
+ };
241
+ }
242
+ }));
243
+ const successfulDocuments = documents.filter((document) => document.content);
244
+ if (successfulDocuments.length === 0) {
245
+ return {
246
+ success: false,
247
+ error: "Unable to fetch any documentation pages",
248
+ };
249
+ }
250
+ const output = documents
251
+ .map((document, index) => [
252
+ `## Doc ${index + 1}: ${document.title}`,
253
+ `URL: ${document.url}`,
254
+ `Score: ${document.score}`,
255
+ document.reasons.length > 0
256
+ ? `Why selected: ${document.reasons.join(", ")}`
257
+ : "",
258
+ document.description ? `Summary: ${document.description}` : "",
259
+ "",
260
+ document.error
261
+ ? `[fetch failed] ${document.error}`
262
+ : document.content || "",
263
+ ]
264
+ .filter(Boolean)
265
+ .join("\n"))
266
+ .join("\n\n---\n\n");
267
+ const truncationNotice = maxReadBodyLength
268
+ ? `[Content limited to about ${maxReadBodyLength} characters per page. Increase maxReadBodyLength or set it to 0 if needed.]`
269
+ : "[Content is not truncated.]";
270
+ return {
271
+ success: true,
272
+ output: `${output}\n\n${truncationNotice}`,
273
+ metadata: {
274
+ maxResults,
275
+ maxReadBodyLength,
276
+ preferredDomains: resolvedDomains,
277
+ searchQueries,
278
+ resultCount: successfulDocuments.length,
279
+ },
280
+ };
281
+ },
282
+ };
283
+ //# sourceMappingURL=doc_retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc_retrieval.js","sourceRoot":"","sources":["../../src/tools/doc_retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,yBAAyB,EACzB,SAAS,GAEV,MAAM,oBAAoB,CAAA;AAY3B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAA;AAEF,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;CACpB,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAG;IACxB,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE;IAC9D,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;IAC3D,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;IAC3D,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE;IAC7D,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,uBAAuB,CAAC,EAAE;IACxE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;IAChD,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE;IACxD,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IAC7C,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE;IAC1D,EAAE,KAAK,EAAE,2BAA2B,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE;CAC/D,CAAA;AAEV,SAAS,aAAa,CAAC,MAAgB;IACrC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,IAAI,EAAE;SACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,WAAW,EAAE,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;IACtD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,KAAK,EACL,gBAAgB,GAIjB;IACC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,yBAAyB,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;IAEpE,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,QAAQ,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,MAAM,EACN,gBAAgB,GAIjB;IACC,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,mBAAmB,GACvB,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAA;QAE7D,IACE,gBAAgB,CAAC,IAAI,CACnB,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CACnE,EACD,CAAC;YACD,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAClC,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChC,CAAC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAC5C,CAAC;QAED,IACE,kEAAkE,CAAC,IAAI,CACrE,QAAQ,CACT,EACD,CAAC;YACD,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACpC,CAAC;QAED,IACE,6CAA6C,CAAC,IAAI,CAAC,mBAAmB,CAAC,EACvE,CAAC;YACD,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACrC,CAAC;QAED,IACE,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3B,CAAC;YACD,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAClC,CAAC;QAED,IAAI,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,KAAK,IAAI,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,IAAI,GAAG,CAAA;QACZ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA0B;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,OAAO,GAAsB,EAAE,CAAA;IAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,MAAM;YACT,GAAG,EAAE,aAAa;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,EAClC,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,MAAM,GAOP;IAIC,MAAM,eAAe,GAAsB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpE,GAAG;QACH,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,2BAA2B;KACzC,CAAC,CAAC,CAAA;IAEH,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,UAAU,CAAA;IACvD,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QACjD,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC,CACE,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC5C,SAAS,CAAC;YACR,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;YAC9B,MAAM;SACP,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CACnB,CACF,CACF,CAAC,IAAI,EAAE;QACV,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,aAAa,GAAG,aAAa,CAAC;QAClC,GAAG,eAAe;QAClB,GAAG,iBAAiB;KACrB,CAAC;SACC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACd,iBAAiB,CAAC;QAChB,MAAM;QACN,gBAAgB;KACjB,CAAC,CACH;SACA,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAEvB,OAAO;QACL,aAAa;QACb,aAAa;KACd,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW,EACT,0SAA0S;IAC5S,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;aACvB,QAAQ,EAAE;aACV,QAAQ,CACP,iEAAiE,CAClE;QACH,gBAAgB,EAAE,CAAC;aAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,iEAAiE,CAClE;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,EAAE;aACV,QAAQ,CACP,4FAA4F,CAC7F;KACJ,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EACd,KAAK,EACL,IAAI,GAAG,EAAE,EACT,gBAAgB,GAAG,EAAE,EACrB,UAAU,GAAG,CAAC,EACd,iBAAiB,GAAG,KAAK,GAO1B,EAAE,EAAE;QACH,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpE,MAAM,eAAe,GAAG,aAAa,CAAC;YACpC,GAAG,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC;YACxC,GAAG,eAAe,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,UAAU,CAAA;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAA;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CACJ,MAAM,EACN,oFAAoF,CACrF,CAAA;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC,CAAA;QACrE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,6CAA6C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CACF,CAAA;QACH,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAoB,CAAC;YAClE,KAAK;YACL,YAAY;YACZ,gBAAgB,EAAE,eAAe;YACjC,UAAU;YACV,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gCAAgC;aACxC,CAAA;QACH,CAAC;QAED,MAAM,SAAS,GAAwB,MAAM,OAAO,CAAC,GAAG,CACtD,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,iCAAiC,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,GAAG,EAAE,CAC9E,CACF,CAAA;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,iBAAiB;oBACf,CAAC,CAAC;wBACE,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,SAAS,EAAE,iBAAiB;qBAC7B;oBACH,CAAC,CAAC;wBACE,GAAG,EAAE,MAAM,CAAC,GAAG;qBAChB,CACN,CAAA;gBACD,OAAO;oBACL,GAAG,MAAM;oBACT,OAAO;iBACR,CAAA;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,GAAG,MAAM;oBACT,KAAK,EAAE,KAAK,CAAC,OAAO;iBACrB,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QAED,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC5E,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yCAAyC;aACjD,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,SAAS;aACrB,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CACvB;YACE,UAAU,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,KAAK,EAAE;YACxC,QAAQ,QAAQ,CAAC,GAAG,EAAE;YACtB,UAAU,QAAQ,CAAC,KAAK,EAAE;YAC1B,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBACzB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChD,CAAC,CAAC,EAAE;YACN,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YAC9D,EAAE;YACF,QAAQ,CAAC,KAAK;gBACZ,CAAC,CAAC,kBAAkB,QAAQ,CAAC,KAAK,EAAE;gBACpC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE;SAC3B;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CACd;aACA,IAAI,CAAC,aAAa,CAAC,CAAA;QAEtB,MAAM,gBAAgB,GAAG,iBAAiB;YACxC,CAAC,CAAC,6BAA6B,iBAAiB,6EAA6E;YAC7H,CAAC,CAAC,6BAA6B,CAAA;QAEjC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,GAAG,MAAM,OAAO,gBAAgB,EAAE;YAC1C,QAAQ,EAAE;gBACR,UAAU;gBACV,iBAAiB;gBACjB,gBAAgB,EAAE,eAAe;gBACjC,aAAa;gBACb,WAAW,EAAE,mBAAmB,CAAC,MAAM;aACxC;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  export interface Edit {
3
3
  oldText: string;
4
4
  newText: string;
5
+ replaceAll?: boolean;
5
6
  }
6
7
  export declare const editTool: {
7
8
  description: string;
@@ -10,6 +11,7 @@ export declare const editTool: {
10
11
  edits: z.ZodArray<z.ZodObject<{
11
12
  oldText: z.ZodString;
12
13
  newText: z.ZodString;
14
+ replaceAll: z.ZodOptional<z.ZodBoolean>;
13
15
  }, z.core.$strip>>;
14
16
  }, z.core.$strip>;
15
17
  execute: ({ path: filePath, edits, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;0CAqBhB;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,IAAI,EAAE,CAAA;KACd;;;;;;;;;;;;;;;CAwDF,CAAA"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;0CA2BhB;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,IAAI,EAAE,CAAA;KACd;;;;;;;;;;;;;;;CA+DF,CAAA"}
@@ -12,8 +12,12 @@ export const editTool = {
12
12
  .string()
13
13
  .describe("The exact text for JS's `replace()` function"),
14
14
  newText: z.string().describe("The new text to insert"),
15
+ replaceAll: z
16
+ .boolean()
17
+ .optional()
18
+ .describe("If true, replace all occurrences instead of just the first one"),
15
19
  }))
16
- .describe("Array of edits, each containing oldText and newText for exact match replacement"),
20
+ .describe("Array of edits to apply. Use multiple edits in one call (oneshot) when modifying several parts of the file."),
17
21
  }),
18
22
  execute: async ({ path: filePath, edits, }) => {
19
23
  console.log(chalk.yellow(`\n[TOOL - edit] Editing file: ${filePath} (edits: ${edits.length})`));
@@ -29,9 +33,16 @@ export const editTool = {
29
33
  let editsApplied = 0;
30
34
  for (const edit of edits) {
31
35
  const existingContent = content;
32
- content = content.replace(edit.oldText, edit.newText);
33
- if (content !== existingContent) {
36
+ let newContent = content;
37
+ if (edit.replaceAll) {
38
+ newContent = content.replaceAll(edit.oldText, edit.newText);
39
+ }
40
+ else {
41
+ newContent = content.replace(edit.oldText, edit.newText);
42
+ }
43
+ if (newContent !== content) {
34
44
  editsApplied++;
45
+ content = newContent;
35
46
  }
36
47
  else {
37
48
  console.warn(chalk.yellow(`[TOOL - edit] ⚠️ oldText not found in file: ${edit.oldText.substring(0, 50)}...`));
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EACT,wOAAwO;IAC1O,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACzD,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACvD,CAAC,CACH;aACA,QAAQ,CACP,iFAAiF,CAClF;KACJ,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EACd,IAAI,EAAE,QAAQ,EACd,KAAK,GAIN,EAAE,EAAE;QACH,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iCAAiC,QAAQ,YAAY,KAAK,CAAC,MAAM,GAAG,CACrE,CACF,CAAA;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,mBAAmB,QAAQ,EAAE;iBACrC,CAAA;YACH,CAAC;YAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAChD,IAAI,YAAY,GAAG,CAAC,CAAA;YAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,eAAe,GAAG,OAAO,CAAA;gBAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBAErD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;oBAChC,YAAY,EAAE,CAAA;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,+CAA+C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAClF,CACF,CAAA;gBACH,CAAC;YACH,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAE5C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS,QAAQ,0CAA0C,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE;gBACxG,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,YAAY;oBACxB,UAAU,EAAE,KAAK,CAAC,MAAM;iBACzB;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CACpE,CAAA;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}