"""Planning strategies: linear vs dependency-based order.""" from typing import Callable from fusionagi.planning.graph import topological_order from fusionagi.schemas.plan import Plan def linear_order(plan: Plan) -> list[str]: """Return step ids in declaration order (ignore dependencies).""" return plan.step_ids() def dependency_order(plan: Plan) -> list[str]: """Return step ids in dependency order (topological sort).""" return topological_order(plan) def get_strategy(name: str) -> Callable[[Plan], list[str]]: """Return strategy function by name: linear or dependency.""" if name == "linear": return linear_order return dependency_order