"""Conductor infrastructure for model orchestration.

This module provides abstract interfaces and concrete adapters for building
model orchestration pipelines. Partners can use the provided adapters or
implement the ConductorInterface to create custom orchestration logic.

Supported backends:
    - RND1: Local diffusion model via vLLM/SGLang
    - Claude: Remote API via Anthropic

Example usage:

    # Using RND1 (local)
    from partner_inference_harness.conductor import RND1Conductor, ConductorRequest

    conductor = RND1Conductor(base_url="http://localhost:8080")
    response = conductor.complete(ConductorRequest(query="Hello"))

    # Using Claude (remote)
    from partner_inference_harness.conductor import ClaudeConductor

    conductor = ClaudeConductor(model="claude-sonnet-4-20250514")
    response = conductor.complete(ConductorRequest(query="Hello"))

    # Custom implementation
    from partner_inference_harness.conductor import ConductorInterface

    class MyCustomConductor(ConductorInterface):
        ...
"""

from partner_inference_harness.conductor.claude_conductor import ClaudeConductor
from partner_inference_harness.conductor.interface import (
    ConductorError,
    ConductorInterface,
    ConductorRequest,
    ConductorResponse,
)
from partner_inference_harness.conductor.rnd1_conductor import RND1Conductor

__all__ = [
    # Interface
    "ConductorInterface",
    "ConductorRequest",
    "ConductorResponse",
    "ConductorError",
    # Adapters
    "RND1Conductor",
    "ClaudeConductor",
]
