opencode
opencode copied to clipboard
feat(plugin): align plugin tool types with built-in tool capabilities
What does this PR do?
Fixes: #8327
Related: #8269, #8380
[!NOTE] This is complementary to the v2 SDK upgrade in #8380. This PR improves type safety of the
ToolContextused for developing custom tools in plugins. The other PR is focused on upgrading the client capabilities for plugins. Similar, but slightly different goals.
This PR aligns plugin tool types with the capabilities tools already have. Specifically:
- Exposes
ToolContextfields to plugin tools:callID,extra, ~metadata()~, and ~ask()~ to give plugins the correct context types- update:
metadata()andask()were added in #8269
- update:
- Adds
ExecuteResulttype allowing plugin tools to return structured result objects withtitle,metadata,output, andattachmentsinstead of only plain strings - Updates the registry to handle structured results from plugin tools, bypassing truncation when plugins return an
ExecuteResultdirectly (assuming tools till truncate...we could add a check here?) - Exports all useful intermediate-types so plugin authors can use them more ergonomically.
This enables plugins to provide richer tool responses with proper metadata updates, closer matching the flexibility of built-in tools.
How did you verify your code works?
- Ran the test suite
- Ran TypeScript type checking
- Verified locally with a plugin in development that required proper metadata updates from plugin tools
The types all align nicely in the registry: