opencode_offline/packages/plugin/src/tool.ts

29 lines
635 B
TypeScript
Raw Normal View History

import { z } from "zod"
2025-09-18 15:58:21 +08:00
export type ToolContext = {
sessionID: string
messageID: string
agent: string
abort: AbortSignal
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>