summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-09-10 14:05:26 -0500
committerGitHub <[email protected]>2025-09-10 14:05:26 -0500
commit780e532094256d31e6b6ca3e836ae3af286c64ee (patch)
tree0a7621e6cf7aa272025b984a1ebe64ed07678ed2
parent29310957c8aa0dd6c5ba17fbf22ce708c8ccb775 (diff)
downloadopencode-780e532094256d31e6b6ca3e836ae3af286c64ee.tar.gz
opencode-780e532094256d31e6b6ca3e836ae3af286c64ee.zip
resolve nested commands (#2537)
-rw-r--r--packages/opencode/src/config/config.ts17
1 files changed, 14 insertions, 3 deletions
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index 9bc9882f0..786ddcc65 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(),
}