pratik-250620's picture
Upload folder using huggingface_hub
6835659 verified
from __future__ import annotations
from dataclasses import dataclass
from typing import Protocol
from .schema import SemanticPlan
from .merge_logic import merge_council_plans, MergeReport
from .unified_planner import UnifiedPlannerLLM
class Planner(Protocol):
name: str
def plan(self, user_prompt: str) -> SemanticPlan:
...
@dataclass(frozen=True)
class CouncilResult:
plan_a: SemanticPlan
plan_b: SemanticPlan
plan_c: SemanticPlan
merged_plan: SemanticPlan
merge_report: MergeReport
class SemanticPlanningCouncil:
"""
Council-lite (3 planners):
- A: Core semantics & constraints
- B: Mood/style emphasis
- C: Soundscape/audio emphasis
"""
def __init__(self, planner_a: Planner, planner_b: Planner, planner_c: Planner):
self.planner_a = planner_a
self.planner_b = planner_b
self.planner_c = planner_c
def run(self, user_prompt: str) -> CouncilResult:
plan_a = self.planner_a.plan(user_prompt)
plan_b = self.planner_b.plan(user_prompt)
plan_c = self.planner_c.plan(user_prompt)
merged, report = merge_council_plans(plan_a, plan_b, plan_c)
return CouncilResult(
plan_a=plan_a,
plan_b=plan_b,
plan_c=plan_c,
merged_plan=merged,
merge_report=report,
)
class PlannerCouncil:
def __init__(self):
self.planner = UnifiedPlannerLLM()
def run(self, user_prompt: str) -> SemanticPlan:
return self.planner.plan(user_prompt)