// Types de nœuds des arbres. Les handlers de commandes reçoivent un nœud (clic ou menu contextuel) et // narrowent sur `kind`. Volontairement plats (données + discriminant) ; la hiérarchie parent/enfant est // tenue par les providers (maps indexées) pour que reveal()/getParent fonctionnent. import type { GroupSummary, RepoSummary, SessionSummary, WorktreeSummary } from '@arboretum/shared'; export interface RepoNode { kind: 'repo'; repo: RepoSummary; } export interface WorktreeNode { kind: 'worktree'; repoId: string; worktree: WorktreeSummary; } export interface SessionNode { kind: 'session'; session: SessionSummary; repoId: string; worktreePath: string; } export interface GroupNode { kind: 'group'; group: GroupSummary; } export interface GroupSessionNode { kind: 'group-session'; session: SessionSummary; groupId: string; } export type ReposNode = RepoNode | WorktreeNode | SessionNode; export type GroupsNode = GroupNode | RepoNode | WorktreeNode | SessionNode | GroupSessionNode; export type AnyNode = ReposNode | GroupsNode;