diff options
Diffstat (limited to 'packages/core/src/tools/tools.ts')
| -rw-r--r-- | packages/core/src/tools/tools.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/core/src/tools/tools.ts b/packages/core/src/tools/tools.ts index 5347caa0..e99eda92 100644 --- a/packages/core/src/tools/tools.ts +++ b/packages/core/src/tools/tools.ts @@ -5,6 +5,7 @@ */ import { FunctionDeclaration, PartListUnion, Schema } from '@google/genai'; +import { Summarizer, defaultSummarizer } from '../utils/summarizer.js'; /** * Interface representing the base Tool functionality @@ -44,6 +45,16 @@ export interface Tool< canUpdateOutput: boolean; /** + * A function that summarizes the result of the tool execution. + */ + summarizer?: Summarizer; + + /** + * Whether the tool's display output should be summarized + */ + shouldSummarizeDisplay?: boolean; + + /** * Validates the parameters for the tool * Should be called from both `shouldConfirmExecute` and `execute` * `shouldConfirmExecute` should return false immediately if invalid @@ -98,6 +109,8 @@ export abstract class BaseTool< * @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 + * @param summarizer Function to summarize the tool's output + * @param shouldSummarizeDisplay Whether the tool's display output should be summarized */ constructor( readonly name: string, @@ -106,6 +119,8 @@ export abstract class BaseTool< readonly parameterSchema: Schema, readonly isOutputMarkdown: boolean = true, readonly canUpdateOutput: boolean = false, + readonly summarizer: Summarizer = defaultSummarizer, + readonly shouldSummarizeDisplay: boolean = false, ) {} /** @@ -174,6 +189,11 @@ export abstract class BaseTool< export interface ToolResult { /** + * A short, one-line summary of the tool's action and result. + * e.g., "Read 5 files", "Wrote 256 bytes to foo.txt" + */ + summary?: string; + /** * Content meant to be included in LLM history. * This should represent the factual outcome of the tool execution. */ |
