summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSpoon <[email protected]>2026-02-13 05:52:17 +0100
committerGitHub <[email protected]>2026-02-12 22:52:17 -0600
commit1608565c808c9136bdc6930a356649bd9824cc69 (patch)
tree125ff9d5559fdf5686445a1c527da016ddefcb6e
parentb06afd657d59c2c88394513e3b633060ec6f454b (diff)
downloadopencode-1608565c808c9136bdc6930a356649bd9824cc69.tar.gz
opencode-1608565c808c9136bdc6930a356649bd9824cc69.zip
feat(hook): add tool.definition hook for plugins to modify tool description and parameters (#4956)
-rw-r--r--packages/opencode/src/tool/registry.ts10
-rw-r--r--packages/plugin/src/index.ts4
2 files changed, 13 insertions, 1 deletions
diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts
index 5ed5a879b..9a06cb599 100644
--- a/packages/opencode/src/tool/registry.ts
+++ b/packages/opencode/src/tool/registry.ts
@@ -149,9 +149,17 @@ export namespace ToolRegistry {
})
.map(async (t) => {
using _ = log.time(t.id)
+ const tool = await t.init({ agent })
+ const output = {
+ description: tool.description,
+ parameters: tool.parameters,
+ }
+ await Plugin.trigger("tool.definition", { toolID: t.id }, output)
return {
id: t.id,
- ...(await t.init({ agent })),
+ ...tool,
+ description: output.description,
+ parameters: output.parameters,
}
}),
)
diff --git a/packages/plugin/src/index.ts b/packages/plugin/src/index.ts
index 664f2c967..bd4ba5304 100644
--- a/packages/plugin/src/index.ts
+++ b/packages/plugin/src/index.ts
@@ -224,4 +224,8 @@ export interface Hooks {
input: { sessionID: string; messageID: string; partID: string },
output: { text: string },
) => Promise<void>
+ /**
+ * Modify tool definitions (description and parameters) sent to LLM
+ */
+ "tool.definition"?: (input: { toolID: string }, output: { description: string; parameters: any }) => Promise<void>
}