feat(plugins): seam slash-commands contribuées par plugin via callback — #165 (QA verte)
Permet à un plugin de contribuer des commandes slash adossées à une callback, transitant par le registry/contrat unifié (#162) : - sdk/IdeaSDK: manifeste contributes.slashCommands (déclaratif) — pointer bumpé. - domain: source Plugin étendue + effet PluginCallback (la commande ne s'exécute pas directement : elle renvoie une référence à la callback du plugin). - application: registration des commandes plugin dans le registry + exécution renvoyant l'effet PluginCallback ; métadonnées UI suffisantes pour l'autocomplete. - backend + app-tauri: DTO + commandes Tauri listant/invoquant les commandes plugin. - frontend (contrat): types adapters/domain/ports/mock pour pluginCallback et l'invocation avec arguments. L'exécution effective de la callback côté runtime UI est livrée par #166. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -906,7 +906,7 @@ export class MockAgentGateway implements AgentGateway {
|
||||
|
||||
async executeSlashCommand(
|
||||
name: string,
|
||||
options: { sessionId?: string | null } = {},
|
||||
options: { sessionId?: string | null; arguments?: unknown[] } = {},
|
||||
): Promise<ExecuteSlashCommandResult> {
|
||||
const normalized = name.trim().startsWith("/") ? name.trim() : `/${name.trim()}`;
|
||||
const command = this.slashCommands.find((item) => item.name === normalized);
|
||||
@ -951,6 +951,18 @@ export class MockAgentGateway implements AgentGateway {
|
||||
},
|
||||
};
|
||||
}
|
||||
if (command.plugin) {
|
||||
return {
|
||||
command: structuredClone(command),
|
||||
effect: {
|
||||
kind: "pluginCallback",
|
||||
pluginId: command.plugin.pluginId,
|
||||
commandId: command.plugin.commandId,
|
||||
sessionId: options.sessionId ?? undefined,
|
||||
arguments: structuredClone(options.arguments ?? []),
|
||||
},
|
||||
};
|
||||
}
|
||||
return {
|
||||
command: structuredClone(command),
|
||||
effect: {
|
||||
|
||||
Reference in New Issue
Block a user