mirror of
https://github.com/nix-community/home-manager.git
synced 2026-01-11 09:29:41 +08:00
Adds support for custom tools - user-defined functions that the LLM can call during conversations. Custom tools work alongside opencode's built-in tools and are configured through the new `tools` option. The configuration follows the same pattern as other opencode settings like `agents` and `commands`, supporting: - Inline TypeScript content - Individual file paths - Bulk directory imports
43 lines
1.3 KiB
Nix
43 lines
1.3 KiB
Nix
{
|
|
programs.opencode = {
|
|
enable = true;
|
|
tools = {
|
|
database-query = ''
|
|
import { tool } from "@opencode-ai/plugin"
|
|
|
|
export default tool({
|
|
description: "Query the project database",
|
|
args: {
|
|
query: tool.schema.string().describe("SQL query to execute"),
|
|
},
|
|
async execute(args) {
|
|
return `Executed query: ''${args.query}`
|
|
},
|
|
})
|
|
'';
|
|
api-client = ''
|
|
import { tool } from "@opencode-ai/plugin"
|
|
|
|
export default tool({
|
|
description: "Make API requests to external services",
|
|
args: {
|
|
endpoint: tool.schema.string().describe("API endpoint to call"),
|
|
method: tool.schema.string().describe("HTTP method"),
|
|
},
|
|
async execute(args) {
|
|
return `Called ''${args.method} ''${args.endpoint}`
|
|
},
|
|
})
|
|
'';
|
|
};
|
|
};
|
|
nmt.script = ''
|
|
assertFileExists home-files/.config/opencode/tool/database-query.ts
|
|
assertFileExists home-files/.config/opencode/tool/api-client.ts
|
|
assertFileContent home-files/.config/opencode/tool/database-query.ts \
|
|
${./database-query-tool.ts}
|
|
assertFileContent home-files/.config/opencode/tool/api-client.ts \
|
|
${./api-client-tool.ts}
|
|
'';
|
|
}
|