diff options
| author | spoons-and-mirrors <[email protected]> | 2025-08-17 04:55:14 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-16 22:55:14 -0400 |
| commit | 1e204c23b9ef4f1281022894e90e68d8511e7912 (patch) | |
| tree | fae83cb1f7c3ee7588c44f2f51f8e4b0e1c9a7e7 | |
| parent | daea79c0d44438bf1884082381522723a9e7de7c (diff) | |
| download | opencode-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.ts | 21 |
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(), } |
