diff --git a/packages/opencode/src/cli/cmd/tui/context/theme.tsx b/packages/opencode/src/cli/cmd/tui/context/theme.tsx index 621b7cbf84..465ed805ea 100644 --- a/packages/opencode/src/cli/cmd/tui/context/theme.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/theme.tsx @@ -409,6 +409,7 @@ async function getCustomThemes() { cwd: dir, absolute: true, dot: true, + symlink: true, })) { const name = path.basename(item, ".json") result[name] = await Filesystem.readJson(item) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 23e0b5b46f..3118847199 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -358,6 +358,7 @@ export namespace Config { cwd: dir, absolute: true, dot: true, + symlink: true, })) { const md = await ConfigMarkdown.parse(item).catch(async (err) => { const message = ConfigMarkdown.FrontmatterError.isInstance(err) @@ -396,6 +397,7 @@ export namespace Config { cwd: dir, absolute: true, dot: true, + symlink: true, })) { const md = await ConfigMarkdown.parse(item).catch(async (err) => { const message = ConfigMarkdown.FrontmatterError.isInstance(err) @@ -433,6 +435,7 @@ export namespace Config { cwd: dir, absolute: true, dot: true, + symlink: true, })) { const md = await ConfigMarkdown.parse(item).catch(async (err) => { const message = ConfigMarkdown.FrontmatterError.isInstance(err) @@ -469,6 +472,7 @@ export namespace Config { cwd: dir, absolute: true, dot: true, + symlink: true, })) { plugins.push(pathToFileURL(item).href) } diff --git a/packages/opencode/src/skill/skill.ts b/packages/opencode/src/skill/skill.ts index 27065182fa..c474c94dd7 100644 --- a/packages/opencode/src/skill/skill.ts +++ b/packages/opencode/src/skill/skill.ts @@ -93,6 +93,7 @@ export namespace Skill { absolute: true, include: "file", dot: true, + symlink: true, }) .then((matches) => Promise.all(matches.map(addSkill))) .catch((error) => { @@ -124,6 +125,7 @@ export namespace Skill { cwd: dir, absolute: true, include: "file", + symlink: true, }) for (const match of matches) { await addSkill(match) @@ -143,6 +145,7 @@ export namespace Skill { cwd: resolved, absolute: true, include: "file", + symlink: true, }) for (const match of matches) { await addSkill(match) @@ -158,6 +161,7 @@ export namespace Skill { cwd: dir, absolute: true, include: "file", + symlink: true, }) for (const match of matches) { await addSkill(match) diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index 649c495d2b..ef0e78ffa8 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -36,7 +36,9 @@ export namespace ToolRegistry { const custom = [] as Tool.Info[] const matches = await Config.directories().then((dirs) => - dirs.flatMap((dir) => Glob.scanSync("{tool,tools}/*.{js,ts}", { cwd: dir, absolute: true, dot: true })), + dirs.flatMap((dir) => + Glob.scanSync("{tool,tools}/*.{js,ts}", { cwd: dir, absolute: true, dot: true, symlink: true }), + ), ) if (matches.length) await Config.waitForDependencies() for (const match of matches) { diff --git a/packages/opencode/src/util/glob.ts b/packages/opencode/src/util/glob.ts index e4df4c4e88..febf062daa 100644 --- a/packages/opencode/src/util/glob.ts +++ b/packages/opencode/src/util/glob.ts @@ -16,7 +16,7 @@ export namespace Glob { absolute: options.absolute, dot: options.dot, follow: options.symlink ?? false, - nodir: options.include === "file", + nodir: options.include !== "all", } }