feat(layout): supporte la création de layouts plugins (customPluginLayout)

Étend le flux de création de layout backend (DTO, usecases, store) et le
frontend (sélecteur, adaptateurs, LayoutTabs/LayoutGrid) pour permettre
d'ouvrir un layout déclaré par un plugin installé (ex. Android Health),
sans passer par le message bloquant "extension backend pas encore livrée".

Ticket #141 — QA vert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 18:34:21 +02:00
parent 168f93df78
commit 45617992ef
29 changed files with 907 additions and 99 deletions

View File

@ -952,16 +952,24 @@ export type LayoutOperation =
| { type: "setSession"; target: string; session?: string | null }
| { type: "setCellAgent"; target: string; agent: string | null }
| { type: "setCellConversation"; target: string; conversationId: string | null }
| { type: "setAgentRunning"; target: string; running: boolean };
| { type: "setAgentRunning"; target: string; running: boolean }
| { type: "setPluginLayoutState"; target: string; state: unknown };
/** The kind of a named layout. */
export type LayoutKind = "terminal" | "gitGraph";
export type LayoutKind = "terminal" | "gitGraph" | "plugin";
/** Origin metadata required to create and render a plugin-provided layout. */
export interface PluginLayoutOrigin {
pluginId: string;
layoutType: string;
}
/** Named layout entry returned by `listLayouts`. */
export interface LayoutInfo {
id: string;
name: string;
kind: LayoutKind;
pluginOrigin?: PluginLayoutOrigin | null;
}
/**