package com.correx.core.kernel.orchestration

import com.correx.core.approvals.domain.ApprovalEngine
import com.correx.core.context.builder.ContextPackBuilder
import com.correx.core.inference.InferenceRouter
import com.correx.core.risk.RiskAssessor
import com.correx.core.toolintent.FileSystemWorldProbe
import com.correx.core.toolintent.ToolCallAssessor
import com.correx.core.toolintent.WorkspacePolicy
import com.correx.core.toolintent.WorldProbe
import com.correx.core.tools.contract.ToolExecutor
import com.correx.core.tools.registry.ToolRegistry
import com.correx.core.transitions.evaluation.PromptResolver
import com.correx.core.transitions.resolution.TransitionResolver
import com.correx.core.validation.pipeline.ValidationPipeline

data class OrchestratorEngines(
    val transitionResolver: TransitionResolver,
    val contextPackBuilder: ContextPackBuilder,
    val inferenceRouter: InferenceRouter,
    val validationPipeline: ValidationPipeline,
    val approvalEngine: ApprovalEngine,
    val riskAssessor: RiskAssessor,
    val promptResolver: PromptResolver = PromptResolver { "" },
    val toolExecutor: ToolExecutor? = null,
    val toolRegistry: ToolRegistry? = null,
    val toolCallAssessor: ToolCallAssessor? = null,
    val workspacePolicy: WorkspacePolicy? = null,
    val worldProbe: WorldProbe = FileSystemWorldProbe(),
    val workspaceToolRegistryProvider: WorkspaceToolRegistryProvider? = null,
)
