diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 9042ed16..080f9d99 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -534,7 +534,6 @@ export namespace SessionPrompt { args, }, ) - item.parameters.parse(args) const result = await item.execute(args, { sessionID: input.sessionID, abort: options.abortSignal!, diff --git a/packages/opencode/src/tool/tool.ts b/packages/opencode/src/tool/tool.ts index c7a28c51..f826d0c9 100644 --- a/packages/opencode/src/tool/tool.ts +++ b/packages/opencode/src/tool/tool.ts @@ -42,8 +42,13 @@ export namespace Tool { return { id, init: async () => { - if (init instanceof Function) return init() - return init + const toolInfo = init instanceof Function ? await init() : init + const execute = toolInfo.execute + toolInfo.execute = (args, ctx) => { + toolInfo.parameters.parse(args) + return execute(args, ctx) + } + return toolInfo }, } }