// ============================================================================
// Agent Status Types
// Per spec Section 7.3: Agent Card Component Interface
// ============================================================================

export type AgentStatus = 'active' | 'idle' | 'thinking' | 'error' | 'offline';

export interface AgentCardData {
  /** Short agent ID, e.g., "otto" */
  id: string;

  /** Display name, e.g., "Otto" */
  displayName: string;

  /** Role description, e.g., "Orchestrator Agent" */
  role: string;

  /** Current agent status */
  status: AgentStatus;

  /** Current task description, e.g., "Reviewing PR #42" */
  currentTask?: string;

  /** Task progress percentage 0–100 */
  taskProgress?: number;

  /** Elapsed time string, e.g., "04m 12s" */
  taskElapsed?: string;

  /** Full session key, e.g., "agent:otto:telegram:direct:8787..." */
  sessionKey: string;

  /** Communication channel, e.g., "telegram" */
  channel: string;

  /** Timestamp of last activity */
  lastActivity: Date;

  /** Error message (populated only on error status) */
  errorMessage?: string;
}

export interface AgentStatusUpdate {
  agentId: string;
  status: AgentStatus;
  timestamp: Date;
}

export interface TaskProgressUpdate {
  agentId: string;
  taskName?: string;
  progress: number;
  elapsed?: string;
}