live output from shell tool (#573)

This commit is contained in:
Olcan
2025-05-27 15:40:18 -07:00
committed by GitHub
parent 0d5f7686d7
commit bfeaac8441
4 changed files with 87 additions and 23 deletions

View File

@@ -123,6 +123,7 @@ export class ShellTool extends BaseTool<ShellToolParams, ToolResult> {
async execute(
params: ShellToolParams,
abortSignal: AbortSignal,
onOutputChunk?: (chunk: string) => void,
): Promise<ToolResult> {
const validationError = this.validateToolParams(params);
if (validationError) {
@@ -157,6 +158,9 @@ export class ShellTool extends BaseTool<ShellToolParams, ToolResult> {
const str = data.toString();
stdout += str;
output += str;
if (onOutputChunk) {
onOutputChunk(str);
}
});
let stderr = '';
@@ -174,6 +178,9 @@ export class ShellTool extends BaseTool<ShellToolParams, ToolResult> {
}
stderr += str;
output += str;
if (onOutputChunk) {
onOutputChunk(str);
}
});
let error: Error | null = null;

View File

@@ -64,7 +64,11 @@ export interface Tool<
* @param params Parameters for the tool execution
* @returns Result of the tool execution
*/
execute(params: TParams, signal: AbortSignal): Promise<TResult>;
execute(
params: TParams,
signal: AbortSignal,
onOutputChunk?: (chunk: string) => void,
): Promise<TResult>;
}
/**
@@ -144,7 +148,11 @@ export abstract class BaseTool<
* @param signal AbortSignal for tool cancellation
* @returns Result of the tool execution
*/
abstract execute(params: TParams, signal: AbortSignal): Promise<TResult>;
abstract execute(
params: TParams,
signal: AbortSignal,
onOutputChunk?: (chunk: string) => void,
): Promise<TResult>;
}
export interface ToolResult {