File size: 1,634 Bytes
91c4b21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""CORTEX Engine integration boundary; the model remains owned by CORTEX AI."""
from __future__ import annotations
from dataclasses import dataclass
from typing import Any
from .jobs import JobManager
from .policy import Policy
from .providers import ProviderRegistry
from .router import CapabilityRouter
from .schemas import Capability, UnifiedResult

@dataclass
class OrchestrationEngine:
    router: CapabilityRouter
    providers: ProviderRegistry
    policy: Policy
    jobs: JobManager
    def plan(self, text: str, hints=()): return self.router.route(text, hints)
    def execute(self, text: str, *, hints=(), preferred_provider: str | None = None, payload: dict[str, Any] | None = None) -> UnifiedResult | Any:
        request = self.plan(text, hints)
        if request.capabilities == (Capability.TEXT_GENERATION,): return UnifiedResult(text=text, provenance=[{"component": "cortex_ai", "mode": "model"}])
        cap = next((c for c in request.capabilities if c not in (Capability.REASONING, Capability.STRUCTURED_DATA)), request.capabilities[0])
        provider = self.providers.select(cap, preferred_provider)
        self.policy.check_provider(provider.id, local=provider.local)
        body = {"text": text, **(payload or {})}
        if request.requires_async:
            return self.jobs.submit(provider.id, cap.value, provider.generate, body)
        result = provider.generate(body)
        return UnifiedResult(text=result.output if isinstance(result.output, str) else "", structured_data=result.output if isinstance(result.output, dict) else None, provenance=[{"provider": result.provider, **result.metadata}])