Skip to content

Commit

Permalink
[ts] add tool interface
Browse files Browse the repository at this point in the history
  • Loading branch information
mrhyde committed Jan 11, 2025
1 parent ba0a642 commit 49972d3
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions packages/ryanair-agent/source/domain/tool.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
export type ToolParameter = {
name: string
type: 'string' | 'number' | 'boolean' | 'object' | 'array'
description: string
required: boolean
}

export type ToolDefinition = {
name: string
description: string
parameters: ToolParameter[]
}

export type ToolResult = {
success: boolean
result: unknown
error?: string
}

export type Tool = ToolDefinition & {
execute(params: Record<string, unknown>): Promise<ToolResult>
}

export class ToolRegistry {
private tools: Map<string, Tool> = new Map()

registerTool(tool: Tool): void {
this.tools.set(tool.name, tool)
}

getTool(name: string): Tool | undefined {
return this.tools.get(name)
}

getToolDefinitions(): ToolDefinition[] {
return Array.from(this.tools.values()).map(({ name, description, parameters }) => ({
name,
description,
parameters
}))
}
}

0 comments on commit 49972d3

Please sign in to comment.