From 3c2fda4d91bae9959492ab7f2f22ae7a9cc6ca87 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 10 Mar 2026 01:16:51 -0400 Subject: [PATCH] core: fix custom tool loading to properly resolve module paths --- packages/opencode/src/tool/registry.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index c6d7fbc1e4..467bca4fd4 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -30,6 +30,7 @@ import { Truncate } from "./truncation" import { ApplyPatchTool } from "./apply_patch" import { Glob } from "../util/glob" import { pathToFileURL } from "url" +import { createRequire } from "module" export namespace ToolRegistry { const log = Log.create({ service: "tool.registry" }) @@ -45,7 +46,9 @@ export namespace ToolRegistry { if (matches.length) await Config.waitForDependencies() for (const match of matches) { const namespace = path.basename(match, path.extname(match)) - const mod = await import(pathToFileURL(match).href) + const require = createRequire(match) + const resolved = require.resolve(match) + const mod = await import(pathToFileURL(resolved).href) for (const [id, def] of Object.entries(mod)) { custom.push(fromPlugin(id === "default" ? namespace : `${namespace}_${id}`, def)) }