import type { ChildProcess } from 'child_process'; import type { GroupQueue } from './group-queue.js'; import type { AgentType, RegisteredGroup } from './types.js'; export interface SchedulerDependencies { serviceAgentType?: AgentType; roomBindings: () => Record; getSessions: () => Record; queue: GroupQueue; onProcess: ( groupJid: string, proc: ChildProcess, processName: string, ipcDir: string, ) => void; sendMessage: (jid: string, text: string) => Promise; sendMessageViaReviewerBot?: (jid: string, text: string) => Promise; sendTrackedMessage?: (jid: string, text: string) => Promise; editTrackedMessage?: ( jid: string, messageId: string, text: string, ) => Promise; } export interface TaskExecutionContext { group: RegisteredGroup; groupDir: string; isMain: boolean; queueJid: string; runtimeIpcDir: string; runtimeTaskId?: string; sessionId?: string; useTaskScopedSession: boolean; taskAgentType: AgentType; }