from __future__ import annotations from pathlib import Path AIRPLAN_DIRNAME = "AirPlan" def airplan_root(project_root: Path) -> Path: return project_root / AIRPLAN_DIRNAME def docs_root(project_root: Path) -> Path: return airplan_root(project_root) / "docs" def state_root(project_root: Path) -> Path: return airplan_root(project_root) / "state" def agents_path(project_root: Path) -> Path: return airplan_root(project_root) / "AGENTS.md" def root_agents_bootstrap_path(project_root: Path) -> Path: return project_root / "AGENTS.md" def plan_path(project_root: Path) -> Path: return airplan_root(project_root) / "plan.md" def todo_path(project_root: Path) -> Path: return airplan_root(project_root) / "todo.md" def analysis_requirements_path(project_root: Path) -> Path: return docs_root(project_root) / "analysis" / "requirements.md" def architecture_root(project_root: Path) -> Path: return docs_root(project_root) / "architecture" def architecture_solution_path(project_root: Path) -> Path: return architecture_root(project_root) / "solution-architecture.md" def architecture_adr_dir(project_root: Path) -> Path: return architecture_root(project_root) / "adr" def architecture_c4_module_path(project_root: Path) -> Path: return architecture_root(project_root) / "c4" / "module.md" def debug_root(project_root: Path) -> Path: return docs_root(project_root) / "debug" def debug_log_path(project_root: Path) -> Path: return debug_root(project_root) / "debug-log.md" def gui_debug_log_path(project_root: Path) -> Path: return debug_root(project_root) / "gui-debug-log.md" def airxdb_artifacts_dir(project_root: Path) -> Path: return debug_root(project_root) / "airxdb-artifacts" def network_root(project_root: Path) -> Path: return docs_root(project_root) / "network" def airndb_log_path(project_root: Path) -> Path: return network_root(project_root) / "airndb-log.md" def airndb_captures_dir(project_root: Path) -> Path: return network_root(project_root) / "airndb-captures" def validation_root(project_root: Path) -> Path: return docs_root(project_root) / "validation" def staticanalysis_path(project_root: Path) -> Path: return docs_root(project_root) / "staticanalysis.md" def plugin_state_root(project_root: Path, plugin_name: str) -> Path: return state_root(project_root) / plugin_name def airarc_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airarc") def aireng_root(project_root: Path) -> Path: return plugin_state_root(project_root, "aireng") def airdo_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airdo") def airdbg_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airdbg") def airndb_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airndb") def airsdb_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airsdb") def airxdb_root(project_root: Path) -> Path: return plugin_state_root(project_root, "airxdb") def required_project_artifacts() -> tuple[str, ...]: return ( "AirPlan/AGENTS.md", "AirPlan/docs/architecture/adr", "AirPlan/docs/architecture/c4/module.md", "AirPlan/plan.md", "AirPlan/todo.md", )