dea17dc3ba
Slash commands with arguments were silently failing in OpenCode TUI because command definitions included 'name' and 'argumentHint' fields that don't exist in OpenCode's Command schema. Strip these fields before registration across all command/skill loaders to ensure compatibility. Affected loaders: - builtin commands - claude-code command loader - opencode skill loader - claude-code plugin loader 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import type { CommandDefinition } from "../claude-code-command-loader"
|
|
import type { BuiltinCommandName, BuiltinCommands } from "./types"
|
|
import { INIT_DEEP_TEMPLATE } from "./templates/init-deep"
|
|
import { RALPH_LOOP_TEMPLATE, CANCEL_RALPH_TEMPLATE } from "./templates/ralph-loop"
|
|
|
|
const BUILTIN_COMMAND_DEFINITIONS: Record<BuiltinCommandName, Omit<CommandDefinition, "name">> = {
|
|
"init-deep": {
|
|
description: "(builtin) Initialize hierarchical AGENTS.md knowledge base",
|
|
template: `<command-instruction>
|
|
${INIT_DEEP_TEMPLATE}
|
|
</command-instruction>
|
|
|
|
<user-request>
|
|
$ARGUMENTS
|
|
</user-request>`,
|
|
argumentHint: "[--create-new] [--max-depth=N]",
|
|
},
|
|
"ralph-loop": {
|
|
description: "(builtin) Start self-referential development loop until completion",
|
|
template: `<command-instruction>
|
|
${RALPH_LOOP_TEMPLATE}
|
|
</command-instruction>
|
|
|
|
<user-task>
|
|
$ARGUMENTS
|
|
</user-task>`,
|
|
argumentHint: '"task description" [--completion-promise=TEXT] [--max-iterations=N]',
|
|
},
|
|
"cancel-ralph": {
|
|
description: "(builtin) Cancel active Ralph Loop",
|
|
template: `<command-instruction>
|
|
${CANCEL_RALPH_TEMPLATE}
|
|
</command-instruction>`,
|
|
},
|
|
}
|
|
|
|
export function loadBuiltinCommands(
|
|
disabledCommands?: BuiltinCommandName[]
|
|
): BuiltinCommands {
|
|
const disabled = new Set(disabledCommands ?? [])
|
|
const commands: BuiltinCommands = {}
|
|
|
|
for (const [name, definition] of Object.entries(BUILTIN_COMMAND_DEFINITIONS)) {
|
|
if (!disabled.has(name as BuiltinCommandName)) {
|
|
const { argumentHint: _argumentHint, ...openCodeCompatible } = definition
|
|
commands[name] = openCodeCompatible as CommandDefinition
|
|
}
|
|
}
|
|
|
|
return commands
|
|
}
|