/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/plugin/src/tool.ts
54 строки
1 KB
James Long
fix(plugin): `ask` in tools from plugins returns promise instead of effect (#28217)
18 май 2026, 21:57
Не верифицирован
18 май 2026, 21:57
12ae223
Код
Авторство
О чём код?
import { z } from "zod" export type ToolContext = { sessionID: string messageID: string agent: string /** * Current project directory for this session. * Prefer this over process.cwd() when resolving relative paths. */ directory: string /** * Project worktree root for this session. * Useful for generating stable relative paths (e.g. path.relative(worktree, absPath)). */ worktree: 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 } } export type ToolAttachment = { type: "file" mime: string url: string filename?: string } export type ToolResult = | string | { title?: string output: string metadata?: { [key: string]: any } attachments?: ToolAttachment[] } export function tool<Args extends z.ZodRawShape>(input: { description: string args: Args execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<ToolResult> }) { return input } tool.schema = z export type ToolDefinition = ReturnType<typeof tool>