docs(coding-agent): clarify that tool errors must be thrown, not returned

Returning { isError: true } from a tool's execute function was silently
ignored - the agent loop only sets isError via the catch block. Fix the
with-deps example to throw instead, add a clear note in the Tool Definition
docs section, and update the Error Handling summary.

closes #1881
This commit is contained in:
Mario Zechner
2026-03-06 14:36:18 +01:00
parent e4172e68d0
commit b079003cf6
3 changed files with 15 additions and 6 deletions

View File

@@ -21,11 +21,7 @@ export default function (pi: ExtensionAPI) {
execute: async (_toolCallId, params) => {
const result = ms(params.duration as ms.StringValue);
if (result === undefined) {
return {
content: [{ type: "text", text: `Invalid duration: "${params.duration}"` }],
isError: true,
details: {},
};
throw new Error(`Invalid duration: "${params.duration}"`);
}
return {
content: [{ type: "text", text: `${params.duration} = ${result} milliseconds` }],