summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2026-02-12 00:33:18 -0600
committerGitHub <[email protected]>2026-02-12 00:33:18 -0600
commit624dd94b5dd8dca03aa3b246312f8b54fd3331f1 (patch)
treeaaca4c6890d155c49227cb951f584f5aabc2074d
parentd86f24b6b3d0e4772a3da07724771e0172e533db (diff)
downloadopencode-624dd94b5dd8dca03aa3b246312f8b54fd3331f1.tar.gz
opencode-624dd94b5dd8dca03aa3b246312f8b54fd3331f1.zip
tweak: tool outputs to be more llm friendly (#13269)
-rw-r--r--packages/opencode/src/tool/edit.ts12
-rw-r--r--packages/opencode/src/tool/glob.ts4
-rw-r--r--packages/opencode/src/tool/grep.ts9
3 files changed, 15 insertions, 10 deletions
diff --git a/packages/opencode/src/tool/edit.ts b/packages/opencode/src/tool/edit.ts
index 0bf1d6792..d84f6ec34 100644
--- a/packages/opencode/src/tool/edit.ts
+++ b/packages/opencode/src/tool/edit.ts
@@ -38,7 +38,7 @@ export const EditTool = Tool.define("edit", {
}
if (params.oldString === params.newString) {
- throw new Error("oldString and newString must be different")
+ throw new Error("No changes to apply: oldString and newString are identical.")
}
const filePath = path.isAbsolute(params.filePath) ? params.filePath : path.join(Instance.directory, params.filePath)
@@ -617,7 +617,7 @@ export function trimDiff(diff: string): string {
export function replace(content: string, oldString: string, newString: string, replaceAll = false): string {
if (oldString === newString) {
- throw new Error("oldString and newString must be different")
+ throw new Error("No changes to apply: oldString and newString are identical.")
}
let notFound = true
@@ -647,9 +647,9 @@ export function replace(content: string, oldString: string, newString: string, r
}
if (notFound) {
- throw new Error("oldString not found in content")
+ throw new Error(
+ "Could not find oldString in the file. It must match exactly, including whitespace, indentation, and line endings.",
+ )
}
- throw new Error(
- "Found multiple matches for oldString. Provide more surrounding lines in oldString to identify the correct match.",
- )
+ throw new Error("Found multiple matches for oldString. Provide more surrounding context to make the match unique.")
}
diff --git a/packages/opencode/src/tool/glob.ts b/packages/opencode/src/tool/glob.ts
index 6943795f8..9df1eedca 100644
--- a/packages/opencode/src/tool/glob.ts
+++ b/packages/opencode/src/tool/glob.ts
@@ -62,7 +62,9 @@ export const GlobTool = Tool.define("glob", {
output.push(...files.map((f) => f.path))
if (truncated) {
output.push("")
- output.push("(Results are truncated. Consider using a more specific path or pattern.)")
+ output.push(
+ `(Results are truncated: showing first ${limit} results. Consider using a more specific path or pattern.)`,
+ )
}
}
diff --git a/packages/opencode/src/tool/grep.ts b/packages/opencode/src/tool/grep.ts
index c10b4dfb8..41ed494de 100644
--- a/packages/opencode/src/tool/grep.ts
+++ b/packages/opencode/src/tool/grep.ts
@@ -109,7 +109,8 @@ export const GrepTool = Tool.define("grep", {
}
}
- const outputLines = [`Found ${finalMatches.length} matches`]
+ const totalMatches = matches.length
+ const outputLines = [`Found ${totalMatches} matches${truncated ? ` (showing first ${limit})` : ""}`]
let currentFile = ""
for (const match of finalMatches) {
@@ -127,7 +128,9 @@ export const GrepTool = Tool.define("grep", {
if (truncated) {
outputLines.push("")
- outputLines.push("(Results are truncated. Consider using a more specific path or pattern.)")
+ outputLines.push(
+ `(Results truncated: showing ${limit} of ${totalMatches} matches (${totalMatches - limit} hidden). Consider using a more specific path or pattern.)`,
+ )
}
if (hasErrors) {
@@ -138,7 +141,7 @@ export const GrepTool = Tool.define("grep", {
return {
title: params.pattern,
metadata: {
- matches: finalMatches.length,
+ matches: totalMatches,
truncated,
},
output: outputLines.join("\n"),