feat(core): separate stdout and stderr in discovered tool output

This commit is contained in:
Aishanee Shah
2026-02-16 20:21:04 +00:00
parent 9e7c1b1984
commit f8b3d14d26
2 changed files with 3 additions and 2 deletions

View File

@@ -550,8 +550,9 @@ describe('ToolRegistry', () => {
expect(result.error?.type).toBe(
ToolErrorType.DISCOVERED_TOOL_EXECUTION_ERROR,
);
expect(result.llmContent).toContain('<stdout>(empty)</stdout>');
expect(result.llmContent).toContain(
'<output>Something went wrong</output>',
'<stderr>Something went wrong</stderr>',
);
expect(result.llmContent).toContain('<exit_code>1</exit_code>');
});

View File

@@ -104,7 +104,7 @@ class DiscoveredToolInvocation extends BaseToolInvocation<
// if there is any error, non-zero exit code, signal, or stderr, return error details instead of stdout
if (error || code !== 0 || signal || stderr) {
const parts = [
`<output>${(stdout + stderr).trim() || '(empty)'}</output>`,
`<output>\n <stdout>${stdout.trim() || '(empty)'}</stdout>\n <stderr>${stderr.trim() || '(empty)'}</stderr>\n </output>`,
];
if (error) {
parts.push(`<error>${error}</error>`);