summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHaris Gušić <[email protected]>2025-10-30 17:31:44 +0100
committerGitHub <[email protected]>2025-10-30 11:31:44 -0500
commitdc87659791fb2119824b97934b0fcc7aebf35ac4 (patch)
treee63d3de8f4c3d2a03e57d828074e7455dbd7e03d
parent149f5eaa2e68b79ce8492d121c1bc0165b8d917d (diff)
downloadopencode-dc87659791fb2119824b97934b0fcc7aebf35ac4.tar.gz
opencode-dc87659791fb2119824b97934b0fcc7aebf35ac4.zip
tweak: move zod validation for tools to ensure it always runs (#3565)
-rw-r--r--packages/opencode/src/session/prompt.ts1
-rw-r--r--packages/opencode/src/tool/tool.ts9
2 files changed, 7 insertions, 3 deletions
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts
index 9042ed164..080f9d994 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 c7a28c516..f826d0c99 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
},
}
}