summaryrefslogtreecommitdiffhomepage
path: root/packages/plugin/src/tool.ts
blob: 7c1d3d7c53377e6a505899d4e1254220aef99409 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { z } from "zod/v4"

export type ToolContext = {
  sessionID: string
  messageID: string
  agent: string
  abort: AbortSignal
}

export function tool<Args extends z.ZodRawShape>(
  input: (zod: typeof z) => {
    description: string
    args: Args
    execute: (args: z.infer<z.ZodObject<Args>>, ctx: ToolContext) => Promise<string>
  },
) {
  return input(z)
}

export type ToolDefinition = ReturnType<typeof tool>