/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type { FunctionDeclaration } from '@google/genai'; /** * Kind of tool for categorization */ export declare enum Kind { Read = "read", Edit = "edit", Search = "search", Execute = "execute", Other = "other" } /** * Tool execution result */ export interface ToolResult { llmContent: string | any; returnDisplay: string | any; error?: { message: string; type: string; }; } /** * Tool location for file-based tools */ export interface ToolLocation { path: string; line?: number; } /** * Tool confirmation details */ export interface ToolCallConfirmationDetails { type: 'edit' | 'exec'; title: string; [key: string]: any; } /** * Tool confirmation outcome */ export declare enum ToolConfirmationOutcome { Proceed = "proceed", ProceedAlways = "proceed_always", Cancel = "cancel" } /** * Base tool invocation interface */ export interface ToolInvocation { params: TParams; getDescription(): string; toolLocations?(): ToolLocation[]; shouldConfirmExecute?(abortSignal: AbortSignal): Promise; execute(abortSignal: AbortSignal, updateOutput?: (output: string) => void): Promise; } /** * Base tool invocation implementation */ export declare abstract class BaseToolInvocation implements ToolInvocation { readonly params: TParams; constructor(params: TParams); abstract getDescription(): string; toolLocations(): ToolLocation[]; shouldConfirmExecute(_abortSignal: AbortSignal): Promise; abstract execute(abortSignal: AbortSignal, updateOutput?: (output: string) => void): Promise; } /** * Declarative tool interface */ export interface DeclarativeTool { readonly name: string; readonly displayName: string; readonly description: string; readonly kind: Kind; readonly schema: FunctionDeclaration; readonly isOutputMarkdown: boolean; readonly canUpdateOutput: boolean; validateParams(params: unknown): { isValid: true; params: TParams; } | { isValid: false; error: string; }; invoke(params: TParams): ToolInvocation; } /** * Any declarative tool type */ export type AnyDeclarativeTool = DeclarativeTool; /** * Base declarative tool implementation */ export declare abstract class BaseDeclarativeTool implements DeclarativeTool { readonly name: string; readonly displayName: string; readonly description: string; readonly kind: Kind; readonly parameterSchema: Record; readonly isOutputMarkdown: boolean; readonly canUpdateOutput: boolean; readonly schema: FunctionDeclaration; constructor(name: string, displayName: string, description: string, kind: Kind, parameterSchema: Record, isOutputMarkdown?: boolean, canUpdateOutput?: boolean); validateParams(params: unknown): { isValid: true; params: TParams; } | { isValid: false; error: string; }; protected validateToolParamValues(_params: TParams): string | null; invoke(params: TParams): ToolInvocation; protected abstract createInvocation(params: TParams): ToolInvocation; } /** * File diff for file editing tools */ export interface FileDiff { fileDiff: string; fileName: string; originalContent: string; newContent: string; diffStat?: any; } /** * Edit confirmation details */ export interface ToolEditConfirmationDetails extends ToolCallConfirmationDetails { type: 'edit'; fileName: string; filePath: string; fileDiff: string; originalContent: string; newContent: string; onConfirm: (outcome: ToolConfirmationOutcome) => Promise; ideConfirmation?: any; } /** * Execute confirmation details */ export interface ToolExecuteConfirmationDetails extends ToolCallConfirmationDetails { type: 'exec'; command: string; rootCommand: string; onConfirm: (outcome: ToolConfirmationOutcome) => Promise; } //# sourceMappingURL=tools.d.ts.map