summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorspoons-and-mirrors <[email protected]>2025-08-17 04:55:14 +0200
committerGitHub <[email protected]>2025-08-16 22:55:14 -0400
commit1e204c23b9ef4f1281022894e90e68d8511e7912 (patch)
treefae83cb1f7c3ee7588c44f2f51f8e4b0e1c9a7e7
parentdaea79c0d44438bf1884082381522723a9e7de7c (diff)
downloadopencode-1e204c23b9ef4f1281022894e90e68d8511e7912.tar.gz
opencode-1e204c23b9ef4f1281022894e90e68d8511e7912.zip
tweak(config): make markdown agent files in subfolder discoverable `.opencode/agent/some-folder/*.md` (#1999)
-rw-r--r--packages/opencode/src/config/config.ts21
1 files changed, 18 insertions, 3 deletions
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index 41f7215e7..a41b445d7 100644
--- a/packages/opencode/src/config/config.ts
+++ b/packages/opencode/src/config/config.ts
@@ -44,16 +44,31 @@ export namespace Config {
result.agent = result.agent || {}
const markdownAgents = [
- ...(await Filesystem.globUp("agent/*.md", Global.Path.config, Global.Path.config)),
- ...(await Filesystem.globUp(".opencode/agent/*.md", app.path.cwd, app.path.root)),
+ ...(await Filesystem.globUp("agent/**/*.md", Global.Path.config, Global.Path.config)),
+ ...(await Filesystem.globUp(".opencode/agent/**/*.md", app.path.cwd, app.path.root)),
]
for (const item of markdownAgents) {
const content = await Bun.file(item).text()
const md = matter(content)
if (!md.data) continue
+ // Extract relative path from agent folder for nested agents
+ let agentName = path.basename(item, ".md")
+ const agentFolderPath = item.includes("/.opencode/agent/")
+ ? item.split("/.opencode/agent/")[1]
+ : item.includes("/agent/")
+ ? item.split("/agent/")[1]
+ : agentName + ".md"
+
+ // If agent is in a subfolder, include folder path in name
+ if (agentFolderPath.includes("/")) {
+ const relativePath = agentFolderPath.replace(".md", "")
+ const pathParts = relativePath.split("/")
+ agentName = pathParts.slice(0, -1).join("/").toUpperCase() + "/" + pathParts[pathParts.length - 1].toUpperCase()
+ }
+
const config = {
- name: path.basename(item, ".md"),
+ name: agentName,
...md.data,
prompt: md.content.trim(),
}