Просмотр исходного кода

tweak: move zod validation for tools to ensure it always runs (#3565)

Haris Gušić 3 месяцев назад
Родитель
Сommit
dc87659791
2 измененных файлов с 7 добавлено и 3 удалено
  1. 0 1
      packages/opencode/src/session/prompt.ts
  2. 7 2
      packages/opencode/src/tool/tool.ts

+ 0 - 1
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!,

+ 7 - 2
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
       },
     }
   }