fix(slashcommand): discover ancestor opencode commands
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -181,4 +181,27 @@ Use parent opencode commit command.
|
||||
expect(commitCommand?.scope).toBe("opencode")
|
||||
expect(commitCommand?.content).toContain("Use parent opencode commit command.")
|
||||
})
|
||||
|
||||
it("discovers ancestor project opencode commands from plural commands directory", () => {
|
||||
const projectRoot = join(projectDir, "workspace")
|
||||
const childDir = join(projectRoot, "apps", "cli")
|
||||
const commandsDir = join(projectRoot, ".opencode", "commands")
|
||||
|
||||
mkdirSync(childDir, { recursive: true })
|
||||
mkdirSync(commandsDir, { recursive: true })
|
||||
writeFileSync(
|
||||
join(commandsDir, "ancestor.md"),
|
||||
`---
|
||||
description: Discover command from ancestor plural directory
|
||||
---
|
||||
Use ancestor command.
|
||||
`,
|
||||
)
|
||||
|
||||
const commands = discoverCommandsSync(childDir)
|
||||
const ancestorCommand = commands.find((command) => command.name === "ancestor")
|
||||
|
||||
expect(ancestorCommand?.scope).toBe("opencode-project")
|
||||
expect(ancestorCommand?.content).toContain("Use ancestor command.")
|
||||
})
|
||||
})
|
||||
|
||||
@@ -3,6 +3,7 @@ import { basename, join } from "path"
|
||||
import {
|
||||
parseFrontmatter,
|
||||
sanitizeModelField,
|
||||
findProjectOpencodeCommandDirs,
|
||||
getOpenCodeCommandDirs,
|
||||
discoverPluginCommandDefinitions,
|
||||
} from "../../shared"
|
||||
@@ -82,14 +83,16 @@ export function discoverCommandsSync(
|
||||
const userCommandsDir = join(getClaudeConfigDir(), "commands")
|
||||
const projectCommandsDir = join(directory ?? process.cwd(), ".claude", "commands")
|
||||
const opencodeGlobalDirs = getOpenCodeCommandDirs({ binary: "opencode" })
|
||||
const opencodeProjectDir = join(directory ?? process.cwd(), ".opencode", "command")
|
||||
const opencodeProjectDirs = findProjectOpencodeCommandDirs(directory ?? process.cwd())
|
||||
|
||||
const userCommands = discoverCommandsFromDir(userCommandsDir, "user")
|
||||
const opencodeGlobalCommands = opencodeGlobalDirs.flatMap((commandsDir) =>
|
||||
discoverCommandsFromDir(commandsDir, "opencode")
|
||||
)
|
||||
const projectCommands = discoverCommandsFromDir(projectCommandsDir, "project")
|
||||
const opencodeProjectCommands = discoverCommandsFromDir(opencodeProjectDir, "opencode-project")
|
||||
const opencodeProjectCommands = opencodeProjectDirs.flatMap((commandsDir) =>
|
||||
discoverCommandsFromDir(commandsDir, "opencode-project"),
|
||||
)
|
||||
const pluginCommands = discoverPluginCommands(options)
|
||||
|
||||
const builtinCommandsMap = loadBuiltinCommands()
|
||||
|
||||
Reference in New Issue
Block a user