Files
flynn/src/tools/types.ts
T
William Valentin b00706325b feat: add tool framework foundation (types, registry, executor, shell tool, model types, SOUL.md)
- Task 0: SOUL.md + loadSystemPrompt() in daemon
- Task 1: Tool type definitions (Tool, ToolCall, ToolResult, etc.)
- Task 2: ToolRegistry with Anthropic/OpenAI serialization
- Task 3: ToolExecutor with hooks, timeout, truncation
- Task 4: shell.exec builtin tool
- Task 8: Model types updated for tool use (ToolDefinition, ModelToolCall, etc.)
- Task 15: Model index exports for tool types
2026-02-05 17:39:40 -08:00

53 lines
1.0 KiB
TypeScript

export interface ToolInputSchema {
type: 'object';
properties: Record<string, unknown>;
required?: string[];
}
export interface Tool {
name: string;
description: string;
inputSchema: ToolInputSchema;
execute(args: unknown): Promise<ToolResult>;
}
export interface ToolCall {
id: string;
name: string;
args: unknown;
}
export interface ToolResult {
success: boolean;
output: string;
error?: string;
}
// Content block for assistant messages containing tool calls
export interface ToolUseBlock {
type: 'tool_use';
id: string;
name: string;
input: unknown;
}
// Content block for user messages returning tool results
export interface ToolResultBlock {
type: 'tool_result';
tool_use_id: string;
content: string;
is_error?: boolean;
}
// Message from assistant requesting tool use
export interface ToolUseMessage {
role: 'assistant';
content: ToolUseBlock[];
}
// Message from user returning tool results
export interface ToolResultMessage {
role: 'user';
content: ToolResultBlock[];
}