From 1a5fd2ccb2c96931921dfddbc64639ddf946980c Mon Sep 17 00:00:00 2001 From: Olcan Date: Fri, 30 May 2025 13:59:05 -0700 Subject: add flags for markdown rendering and live updating to Tool to avoid special-casing shell tool by name, and open door for other tools to specify their rendering/updating (#629) --- packages/server/src/tools/shell.ts | 2 ++ packages/server/src/tools/tools.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+) (limited to 'packages/server/src') diff --git a/packages/server/src/tools/shell.ts b/packages/server/src/tools/shell.ts index 388c1543..4efc3500 100644 --- a/packages/server/src/tools/shell.ts +++ b/packages/server/src/tools/shell.ts @@ -42,6 +42,8 @@ export class ShellTool extends BaseTool { toolDisplayName, toolDescription, toolParameterSchema, + false, // output is not markdown + true, // output can be updated ); } diff --git a/packages/server/src/tools/tools.ts b/packages/server/src/tools/tools.ts index eb1da248..e5d0c7cf 100644 --- a/packages/server/src/tools/tools.ts +++ b/packages/server/src/tools/tools.ts @@ -33,6 +33,16 @@ export interface Tool< */ schema: FunctionDeclaration; + /** + * Whether the tool's output should be rendered as markdown + */ + isOutputMarkdown: boolean; + + /** + * Whether the tool supports live (streaming) output + */ + canUpdateOutput: boolean; + /** * Validates the parameters for the tool * Should be called from both `shouldConfirmExecute` and `execute` @@ -85,6 +95,8 @@ export abstract class BaseTool< * @param name Internal name of the tool (used for API calls) * @param displayName User-friendly display name of the tool * @param description Description of what the tool does + * @param isOutputMarkdown Whether the tool's output should be rendered as markdown + * @param canUpdateOutput Whether the tool supports live (streaming) output * @param parameterSchema JSON Schema defining the parameters */ constructor( @@ -92,6 +104,8 @@ export abstract class BaseTool< readonly displayName: string, readonly description: string, readonly parameterSchema: Record, + readonly isOutputMarkdown: boolean = true, + readonly canUpdateOutput: boolean = false, ) {} /** -- cgit v1.2.3