← back to Dw Boardroom Governance

frontend/src/types.ts

93 lines

export type DecisionType = 'A' | 'B' | 'C';
export type DecisionStatus = 'pending' | 'approved' | 'rejected' | 'modified' | 'deferred' | 'auto_approved';
export type HumanDecision = 'approve' | 'reject' | 'modify' | 'defer';
export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
export type DelegationStatus = 'active' | 'completed' | 'revoked' | 'expired';
export type InitiativeStatus = 'proposed' | 'active' | 'paused' | 'completed' | 'cancelled';
export type MeetingStatus = 'scheduled' | 'in_progress' | 'completed' | 'halted' | 'crashed';

export interface Decision {
  id: string;
  topic: string;
  decision_type: DecisionType;
  recommendation: string | null;
  human_decision: HumanDecision | null;
  owner: string;
  autonomy_level: number;
  deadline: string | null;
  status: DecisionStatus;
  source: string | null;
  score: number | null;
  reasoning: string | null;
  notes: string | null;
  created_at: string;
  resolved_at: string | null;
}

export interface DelegationContract {
  id: string;
  decision_id: string | null;
  owner: string;
  delegate: string;
  autonomy_level: number;
  metric: string | null;
  checkpoint_date: string | null;
  status: DelegationStatus;
  routing_keywords: string[] | null;
  hierarchy_path: string | null;
  created_at: string;
}

export interface Initiative {
  id: string;
  title: string;
  description: string | null;
  driver_agent: string;
  kpi: string | null;
  risk_level: RiskLevel;
  capital_allocated: number;
  status: InitiativeStatus;
  progress: number;
  created_at: string;
}

export interface Meeting {
  id: string;
  meeting_type: string;
  phase: string;
  started_at: string | null;
  ended_at: string | null;
  status: MeetingStatus;
  attendees: string[];
  summary: string | null;
  messages?: MeetingMessage[];
  created_at: string;
}

export interface MeetingMessage {
  id: number;
  meeting_id: string;
  agent_id: string;
  agent_name: string;
  message: string;
  message_type: string;
  created_at: string;
}

export interface WSEvent {
  type: string;
  payload: any;
  timestamp: string;
}

export interface GovernanceStatus {
  meeting: { active: boolean; activeMeetingId: string | null };
  decisions: Record<string, number>;
  delegations: Record<string, number>;
  initiatives: Record<string, number>;
  meetings: Record<string, number>;
  config: Record<string, any>;
  websocket: { connections: number };
  uptime: number;
}