"""Orchestrator for the roadmap RAG pipeline."""
from __future__ import annotations

from typing import Any, Dict, Optional

from .ingest_resource import ingest_resource
from .generate_lessons import generate_lessons_from_roadmap


def run_roadmap_rag_pipeline(
    run_id: str,
    resource_path: Optional[str],
    roadmap_path: str,
    collection_name: Optional[str] = None,
    persist_directory: Optional[str] = None,
    chunk_size: int = 1000,
    chunk_overlap: int = 200,
    top_k: int = 4,
    max_steps: Optional[int] = None,
    skip_ingest: bool = False,
    embedding_model: Optional[str] = None,
    embedding_batch_size: Optional[int] = None,
    vectorstore_batch_size: Optional[int] = None,
) -> Dict[str, Any]:
    """Run the full roadmap RAG pipeline (ingest + lesson generation)."""
    if not skip_ingest:
        if not resource_path:
            raise ValueError("Resource path is required when skip_ingest is False")
        ingest_resource(
            run_id=run_id,
            resource_path=resource_path,
            collection_name=collection_name,
            persist_directory=persist_directory,
            chunk_size=chunk_size,
            chunk_overlap=chunk_overlap,
            embedding_model=embedding_model,
            embedding_batch_size=embedding_batch_size,
            vectorstore_batch_size=vectorstore_batch_size,
        )

    lessons = generate_lessons_from_roadmap(
        run_id=run_id,
        roadmap_path=roadmap_path,
        collection_name=collection_name,
        persist_directory=persist_directory,
        top_k=top_k,
        max_steps=max_steps,
        embedding_model=embedding_model,
        embedding_batch_size=embedding_batch_size,
    )

    return lessons


__all__ = ["run_roadmap_rag_pipeline"]
