From 780e532094256d31e6b6ca3e836ae3af286c64ee Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 10 Sep 2025 14:05:26 -0500 Subject: [PATCH] resolve nested commands (#2537) --- packages/opencode/src/config/config.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 9bc9882f..786ddcc6 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -118,16 +118,27 @@ export namespace Config { // Load command markdown files result.command = result.command || {} const markdownCommands = [ - ...(await Filesystem.globUp("command/*.md", Global.Path.config, Global.Path.config)), - ...(await Filesystem.globUp(".opencode/command/*.md", Instance.directory, Instance.worktree)), + ...(await Filesystem.globUp("command/**/*.md", Global.Path.config, Global.Path.config)), + ...(await Filesystem.globUp(".opencode/command/**/*.md", Instance.directory, Instance.worktree)), ] for (const item of markdownCommands) { const content = await Bun.file(item).text() const md = matter(content) if (!md.data) continue + const name = (() => { + const patterns = ["/.opencode/command/", "/command/"] + const pattern = patterns.find((p) => item.includes(p)) + + if (pattern) { + const index = item.indexOf(pattern) + return item.slice(index + pattern.length, -3) + } + return path.basename(item, ".md") + })() + const config = { - name: path.basename(item, ".md"), + name, ...md.data, template: md.content.trim(), }