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?.scope).toBe("opencode")
|
||||||
expect(commitCommand?.content).toContain("Use parent opencode commit command.")
|
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 {
|
import {
|
||||||
parseFrontmatter,
|
parseFrontmatter,
|
||||||
sanitizeModelField,
|
sanitizeModelField,
|
||||||
|
findProjectOpencodeCommandDirs,
|
||||||
getOpenCodeCommandDirs,
|
getOpenCodeCommandDirs,
|
||||||
discoverPluginCommandDefinitions,
|
discoverPluginCommandDefinitions,
|
||||||
} from "../../shared"
|
} from "../../shared"
|
||||||
@@ -82,14 +83,16 @@ export function discoverCommandsSync(
|
|||||||
const userCommandsDir = join(getClaudeConfigDir(), "commands")
|
const userCommandsDir = join(getClaudeConfigDir(), "commands")
|
||||||
const projectCommandsDir = join(directory ?? process.cwd(), ".claude", "commands")
|
const projectCommandsDir = join(directory ?? process.cwd(), ".claude", "commands")
|
||||||
const opencodeGlobalDirs = getOpenCodeCommandDirs({ binary: "opencode" })
|
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 userCommands = discoverCommandsFromDir(userCommandsDir, "user")
|
||||||
const opencodeGlobalCommands = opencodeGlobalDirs.flatMap((commandsDir) =>
|
const opencodeGlobalCommands = opencodeGlobalDirs.flatMap((commandsDir) =>
|
||||||
discoverCommandsFromDir(commandsDir, "opencode")
|
discoverCommandsFromDir(commandsDir, "opencode")
|
||||||
)
|
)
|
||||||
const projectCommands = discoverCommandsFromDir(projectCommandsDir, "project")
|
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 pluginCommands = discoverPluginCommands(options)
|
||||||
|
|
||||||
const builtinCommandsMap = loadBuiltinCommands()
|
const builtinCommandsMap = loadBuiltinCommands()
|
||||||
|
|||||||
Reference in New Issue
Block a user