2025-10-27 03:50:41 +08:00
|
|
|
import { z } from "zod"
|
2025-09-18 15:58:21 +08:00
|
|
|
|
|
|
|
|
export type ToolContext = {
|
|
|
|
|
sessionID: string
|
|
|
|
|
messageID: string
|
|
|
|
|
agent: string
|
|
|
|
|
abort: AbortSignal
|
2026-01-14 07:31:18 +08:00
|
|
|
metadata(input: { title?: string; metadata?: { [key: string]: any } }): void
|
|
|
|
|
ask(input: AskInput): Promise<void>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type AskInput = {
|
|
|
|
|
permission: string
|
|
|
|
|
patterns: string[]
|
|
|
|
|
always: string[]
|
|
|
|
|
metadata: { [key: string]: any }
|
2025-09-18 15:58:21 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-18 17:42:59 +08:00
|
|
|
export function tool<Args extends z.ZodRawShape>(input: {
|
|
|
|
|
description: string
|
|
|
|
|
args: Args
|
|
|
|
|
execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<string>
|
|
|
|
|
}) {
|
|
|
|
|
return input
|
2025-09-18 15:58:21 +08:00
|
|
|
}
|
2025-09-18 17:42:59 +08:00
|
|
|
tool.schema = z
|
2025-09-18 15:58:21 +08:00
|
|
|
|
|
|
|
|
export type ToolDefinition = ReturnType<typeof tool>
|