summaryrefslogtreecommitdiff
path: root/packages/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/tools/shell.ts7
-rw-r--r--packages/server/src/tools/tools.ts12
2 files changed, 17 insertions, 2 deletions
diff --git a/packages/server/src/tools/shell.ts b/packages/server/src/tools/shell.ts
index 9e61717c..6ee36b8d 100644
--- a/packages/server/src/tools/shell.ts
+++ b/packages/server/src/tools/shell.ts
@@ -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;
diff --git a/packages/server/src/tools/tools.ts b/packages/server/src/tools/tools.ts
index 2f5a4095..c57bbd39 100644
--- a/packages/server/src/tools/tools.ts
+++ b/packages/server/src/tools/tools.ts
@@ -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 {