feat(cli): commande /profile + sélection de profil avec reset de session confirmé — #164 (QA verte)

Ajoute /profile comme commande slash first-class dont la sémantique de reset
de session reste explicite et testable, séparée de la palette générique :

- domain + application: /profile est enregistrée et renvoie un effet
  SlashCommandEffect::ProfileSwitch { session_id }. La commande ne reset pas
  directement : elle délègue l'effet au frontend pour imposer une confirmation.
- frontend (CustomAgentChatView): à l'exécution de /profile, ouverture d'un
  popup de sélection de profil informant que la validation reset la session,
  avec confirmation explicite (confirmedReset) requise avant changeAgentProfile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-06 15:12:00 +02:00
parent a6ba3ff6e1
commit 2cd8df4a4e
5 changed files with 367 additions and 16 deletions

View File

@ -422,10 +422,7 @@ export class MockAgentGateway implements AgentGateway {
name: "/profile",
shortDescription: "Changer le profil de l'agent",
requiresConfirmation: true,
availability: {
status: "unavailable",
reason: "La selection de profil est livree par le ticket #164",
},
availability: { status: "available" },
source: "native",
native: "profile",
},
@ -939,6 +936,21 @@ export class MockAgentGateway implements AgentGateway {
},
};
}
if (command.native === "profile") {
if (!options.sessionId) {
throw {
code: "INVALID",
message: "/profile requires a current session id",
} as GatewayError;
}
return {
command: structuredClone(command),
effect: {
kind: "profileSwitch",
sessionId: options.sessionId,
},
};
}
return {
command: structuredClone(command),
effect: {