fix(command-loader): strip incompatible fields before registering with OpenCode

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)
This commit is contained in:
YeonGyu-Kim
2025-12-31 03:13:29 +09:00
parent c6efe70f09
commit dea17dc3ba
4 changed files with 12 additions and 8 deletions

View File

@@ -246,7 +246,7 @@ $ARGUMENTS
const formattedDescription = `(plugin: ${plugin.name}) ${data.description || ""}`
commands[namespacedName] = {
const definition = {
name: namespacedName,
description: formattedDescription,
template: wrappedTemplate,
@@ -255,6 +255,8 @@ $ARGUMENTS
subtask: data.subtask,
argumentHint: data["argument-hint"],
}
const { name: _name, argumentHint: _argumentHint, ...openCodeCompatible } = definition
commands[namespacedName] = openCodeCompatible as CommandDefinition
log(`Loaded plugin command: ${namespacedName}`, { path: commandPath })
} catch (error) {
@@ -306,12 +308,14 @@ ${body.trim()}
$ARGUMENTS
</user-request>`
skills[namespacedName] = {
const definition = {
name: namespacedName,
description: formattedDescription,
template: wrappedTemplate,
model: sanitizeModelField(data.model),
}
const { name: _name, ...openCodeCompatible } = definition
skills[namespacedName] = openCodeCompatible as CommandDefinition
log(`Loaded plugin skill: ${namespacedName}`, { path: resolvedPath })
} catch (error) {