File size: 426 Bytes
68d7816
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import type { ToolDescription } from '#/llm/message';

import type { ToolExecuteInput, ToolResult } from './executor';

export interface ToolDefinition extends ToolDescription {
  execute(input: ToolExecuteInput): Promise<ToolResult>;
}

export function defineTool(tool: ToolDefinition): ToolDefinition {
  if (tool.name.trim() === '') {
    throw new Error('tool name must not be empty');
  }
  return Object.freeze(tool);
}