Files
Control-Center/frontend-legacy/src/app/services/agent-status.service.ts

47 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-04-25 19:02:57 +00:00
import { Injectable, signal } from '@angular/core';
import { AgentCardData, AgentStatus, AgentStatusUpdate, TaskProgressUpdate } from '../models/agent.model';
/**
* Agent Status Service stub for future SignalR integration.
* Per spec Section 7.4: Connects to /hubs/agent-status for real-time updates.
*
* TODO: Implement SignalR hub connection when backend is ready.
* TODO: Wire up NgRx store or signals for reactive state management.
*/
@Injectable({ providedIn: 'root' })
export class AgentStatusService {
/** Stub: list of agents (will come from SignalR) */
private readonly _agents = signal<AgentCardData[]>([]);
readonly agents = this._agents.asReadonly();
/** Stub: update an agent's status */
updateStatus(update: AgentStatusUpdate): void {
this._agents.update(agents =>
agents.map(agent =>
agent.id === update.agentId
? { ...agent, status: update.status }
: agent
)
);
}
/** Stub: update an agent's task progress */
updateTaskProgress(progress: TaskProgressUpdate): void {
this._agents.update(agents =>
agents.map(agent =>
agent.id === progress.agentId
? {
...agent,
taskProgress: progress.progress,
...(progress.taskName ? { currentTask: progress.taskName } : {}),
...(progress.elapsed ? { taskElapsed: progress.elapsed } : {}),
}
: agent
)
);
}
// TODO: connect() — Initialize SignalR connection
// TODO: disconnect() — Clean up SignalR connection
}