"""Ports owned by the query planning bounded context.""" from __future__ import annotations from typing import Any, Protocol from uuid import UUID from query_planning.domain import GenerationRequest, GeneratorKind, GeneratorOutput, KnowledgeNeedDraft class QueryGenerator(Protocol): kind: GeneratorKind def generate(self, request: GenerationRequest) -> GeneratorOutput: ... class LegacyQueryBatchSink(Protocol): def create_query_batch(self, **kwargs: Any) -> Any: ... def add_query(self, **kwargs: Any) -> Any: ... class QueryPlanningStore(Protocol): def create_plan(self, **kwargs: Any) -> UUID: ... def add_knowledge_need(self, *, plan_id: UUID, need: KnowledgeNeedDraft) -> UUID: ... def link_plan_batch(self, *, plan_id: UUID, batch_id: UUID) -> None: ... def link_query_need(self, *, query_id: UUID, knowledge_need_id: UUID) -> None: ...