feat(backend,application,frontend,domain,web-server,app-tauri): bouton Redémarrer l'agent dans la barre supérieure des cellules — #317 (QA verte)
La cellule expose un bouton Redémarrer l'agent valable pour les trois modes de présentation (headless, TUI native, CLI custom), sans jamais prendre la présentation pour vérité runtime. - Application: use case RestartCellAgentRuntime validant le binding exact cellule/runtime via les snapshots live (RestartRuntimeNotFound, ConflictAgentVisibleElsewhere, AgentNotBoundToCell) puis déléguant au scheduler self-restart existant (schedule_cell); CellAgentPresentation purement informationnelle. - Backend/app-tauri/web-server: commande restart_cell_agent sur contrat DTO identique Tauri/HTTP, stop borné par timeout typé (RestartStopTimeout), relance préservant routage TUI natif, géométrie de cellule (node/rows/cols) et conversation; évenements domaine enrichis. - Frontend: bouton dans la barre de cellule avec confirmation, overlay d'état Redémarrage…/échec (libellés par code d'erreur, Fermer/ Réessayer), gardes d'identité de cellule et de restarts externes, gateway/mock/http adapters et ports alignés. - Tests: dto_agents, workstate_actions, contrats web-server, LayoutGrid.cellControlsLayering, adapters agent/mock/http. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -232,6 +232,26 @@ export interface ReattachAgentChatOptions {
|
||||
agentId?: string;
|
||||
}
|
||||
|
||||
export type CellAgentPresentation = "headless" | "tui" | "customCli" | "unknown";
|
||||
|
||||
export interface RestartCellAgentRuntimeInput {
|
||||
projectId: string;
|
||||
nodeId: string;
|
||||
agentId: string;
|
||||
presentation: CellAgentPresentation;
|
||||
layoutId?: string;
|
||||
}
|
||||
|
||||
export interface RestartCellAgentRuntimeScheduled {
|
||||
restartId: string;
|
||||
status: "scheduled";
|
||||
agentId: string;
|
||||
nodeId: string;
|
||||
kind: "pty" | "structured";
|
||||
presentation: CellAgentPresentation;
|
||||
layoutId: string | null;
|
||||
}
|
||||
|
||||
/** Agents: create, list, read/update context, delete, launch (L6). */
|
||||
export interface AgentGateway {
|
||||
/** Lists all agents belonging to the given project. */
|
||||
@ -269,6 +289,10 @@ export interface AgentGateway {
|
||||
* commands from the Work panel. The backend owns the live-agent lifecycle.
|
||||
*/
|
||||
stopLiveAgent(projectId: string, agentId: string, reason?: string): Promise<StoppedLiveAgent>;
|
||||
/** Atomically stops and relaunches the runtime bound to one visible agent cell. */
|
||||
restartCellAgentRuntime(
|
||||
input: RestartCellAgentRuntimeInput,
|
||||
): Promise<RestartCellAgentRuntimeScheduled>;
|
||||
/** Creates a new agent from scratch; returns the created agent. */
|
||||
createAgent(projectId: string, input: CreateAgentInput): Promise<Agent>;
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user