import type { AgentConfig, HarnessConfig, InputProcessor, OutputProcessor, StopCondition } from '../../types/index.js'; import type { HookRunner } from '../../hooks/HookRunner.js'; import type { ContextManager } from '../ContextManager.js'; import type { ToolEnforcer } from '../../guards/ToolEnforcer.js'; import type { ExtractionEngine } from '../ExtractionEngine.js'; import type { MemoryService } from '../../memory/MemoryService.js'; import type { SessionStore } from '../../session/SessionStore.js'; import type { SessionCache } from '../SessionCache.js'; import type { StreamEmitter } from '../StreamEmitter.js'; import type { AgentStateController } from '../../foundation/AgentStateController.js'; import type { ConversationState } from '../../foundation/ConversationState.js'; import type { ConversationEventLog } from '../../foundation/ConversationEventLog.js'; import type { ToolExecutor } from '../../foundation/ToolExecutor.js'; import type { SuggestionManager } from '../SuggestionManager.js'; import type { FlowExecutor } from '../FlowExecutor.js'; import type { KnowledgeProvider } from '../KnowledgeProvider.js'; export interface TurnServices { readonly conversationState: ConversationState; readonly agentStateController: AgentStateController; readonly eventLog: ConversationEventLog; readonly toolExecutor: ToolExecutor; readonly streamEmitter: StreamEmitter; readonly hookRunner: HookRunner; readonly enforcer: ToolEnforcer; readonly extractionEngine: ExtractionEngine; readonly suggestionManager: SuggestionManager; readonly flowExecutor: FlowExecutor; readonly contextManager: ContextManager | undefined; readonly knowledgeProvider: KnowledgeProvider | undefined; readonly memoryService: MemoryService | undefined; readonly sessionCache: SessionCache | undefined; readonly sessionStore: SessionStore; readonly agents: ReadonlyMap; readonly config: HarnessConfig; readonly defaultAgentId: string; readonly defaultModel: HarnessConfig['defaultModel']; readonly maxSteps: number; readonly maxHandoffs: number; readonly stopConditions: StopCondition[]; readonly inputProcessors: InputProcessor[]; readonly outputProcessors: OutputProcessor[]; readonly outputProcessorMode: string; readonly outputRedactions?: Array<{ re: RegExp; replacement: string; }>; readonly alwaysRouteThroughTriage: boolean; readonly triageAgentId?: string; }