feat(workstate): UI live-state des conversations/délégations (Lot A frontend)

Ajoute le port et l'adaptateur workState (+ mock) côté frontend, le type domaine
associé, et la feature `workstate` (panneau ProjectWorkStatePanel + hook
useProjectWorkState) consommant le read-model live exposé par le backend.
Intègre le panneau dans ProjectsView. Tests verts (workstate + projects).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 18:06:28 +02:00
parent aae18499a9
commit 17685a08e1
11 changed files with 397 additions and 1 deletions

View File

@ -33,6 +33,7 @@ import type {
PermissionSet,
Project,
ProjectPermissions,
ProjectWorkState,
ProfileAvailability,
ResumableAgent,
Skill,
@ -639,6 +640,12 @@ export interface PermissionGateway {
): Promise<EffectivePermissions | null>;
}
/** Read-only live work-state read-model for conversations/delegations. */
export interface WorkStateGateway {
/** Reads the current per-agent live/offline and idle/busy state for a project. */
getProjectWorkState(projectId: string): Promise<ProjectWorkState>;
}
/**
* The full set of gateways the app depends on, injected via the DI provider.
* The composition (real vs mock) is chosen in `app/`.
@ -658,4 +665,5 @@ export interface Gateways {
memory: MemoryGateway;
embedder: EmbedderGateway;
permission: PermissionGateway;
workState: WorkStateGateway;
}