types.ts
1 import type { EstopState } from '@/types' 2 3 export interface DaemonStatusPayload { 4 running: boolean 5 schedulerActive: boolean 6 autostartEnabled: boolean 7 backgroundServicesEnabled: boolean 8 reducedMode: boolean 9 manualStopRequested: boolean 10 estop: EstopState 11 queueLength: number 12 lastProcessed: number | null 13 nextScheduled: number | null 14 heartbeat: Record<string, unknown> | null 15 health: { 16 monitorActive: boolean 17 connectorMonitorActive: boolean 18 staleSessions: number 19 connectorsInBackoff: number 20 connectorsExhausted: number 21 checkIntervalSec: number 22 connectorCheckIntervalSec: number 23 integrity: { 24 enabled: boolean 25 lastCheckedAt: number | null 26 lastDriftCount: number 27 } 28 } 29 webhookRetry: { 30 pendingRetries: number 31 deadLettered: number 32 } 33 guards: { 34 healthCheckRunning: boolean 35 connectorHealthCheckRunning: boolean 36 shuttingDown: boolean 37 providerCircuitBreakers: number 38 } 39 } 40 41 export interface DaemonHealthSummaryPayload { 42 ok: boolean 43 uptime: number 44 components: { 45 daemon: { status: 'healthy' | 'stopped' | 'degraded' } 46 connectors: { healthy: number; errored: number; total: number } 47 providers: { healthy: number; cooldown: number; total: number } 48 gateways: { healthy: number; degraded: number; total: number } 49 } 50 estop: boolean 51 nextScheduledTask: number | null 52 } 53 54 export interface PersistedDaemonStatusRecord { 55 pid: number | null 56 adminPort: number | null 57 desiredState: 'running' | 'stopped' 58 manualStopRequested: boolean 59 startedAt: number | null 60 stoppedAt: number | null 61 lastHeartbeatAt: number | null 62 updatedAt: number 63 lastLaunchSource: string | null 64 lastStopSource: string | null 65 lastError: string | null 66 lastStatus: DaemonStatusPayload | null 67 lastHealthSummary: DaemonHealthSummaryPayload | null 68 } 69 70 export interface DaemonAdminMetadata { 71 pid: number 72 port: number 73 token: string 74 launchedAt: number 75 source: string | null 76 } 77 78 export interface DaemonConnectorRuntimeState { 79 status: 'running' | 'stopped' | 'error' 80 authenticated?: boolean 81 hasCredentials?: boolean 82 qrDataUrl?: string | null 83 reconnectAttempts?: number 84 nextRetryAt?: number 85 reconnectError?: string | null 86 reconnectExhausted?: boolean 87 presence?: { 88 lastMessageAt: number | null 89 channelId: string | null 90 } | null 91 } 92 93 export interface DaemonRunningConnectorInfo { 94 id: string 95 name: string 96 platform: string 97 agentId: string | null 98 supportsSend: boolean 99 configuredTargets: string[] 100 recentChannelId: string | null 101 }