"""Project root self-registration model.

`<PROJECT_ROOT>/<OKSTRA_DIR_NAME>/project.json` 을 권위 소스로 삼아
PROJECT_ROOT 를 해석하고, 실행 시점에 upsert 한다. 과거 모델
(`examples/projects/<id>.conf.sh`) 는 폐기되었다.

`OKSTRA_DIR_NAME` 및 자주 쓰는 path 헬퍼는 `.dirs` 모듈이 SSOT.
"""
from __future__ import annotations

from .dirs import (
    DISCOVERY_RELATIVE,
    LATEST_TASK_RELATIVE,
    OKSTRA_DIR_NAME,
    OKSTRA_RELATIVE,
    PROJECT_JSON_RELATIVE,
    TASK_CATALOG_RELATIVE,
    TASKS_RELATIVE,
    discovery_dir,
    okstra_root,
    project_json_path,
    tasks_root,
)
from .resolver import (
    ResolverError,
    resolve_project_root,
    upsert_project_json,
)
from .state import (
    StateError,
    code_review_target_snapshot,
    find_task_root,
    list_project_tasks,
    parse_task_key,
    read_latest_task,
    read_task_catalog,
    read_task_key,
    read_task_manifest,
    resolve_task_id,
    resolve_task_identity,
    resolve_task_reference,
    slugify,
    stage_map_read_side_snapshot,
    task_read_side_snapshot,
)

__all__ = [
    "DISCOVERY_RELATIVE",
    "LATEST_TASK_RELATIVE",
    "OKSTRA_DIR_NAME",
    "OKSTRA_RELATIVE",
    "PROJECT_JSON_RELATIVE",
    "ResolverError",
    "StateError",
    "TASKS_RELATIVE",
    "TASK_CATALOG_RELATIVE",
    "code_review_target_snapshot",
    "discovery_dir",
    "find_task_root",
    "list_project_tasks",
    "okstra_root",
    "parse_task_key",
    "project_json_path",
    "read_latest_task",
    "read_task_catalog",
    "read_task_key",
    "read_task_manifest",
    "resolve_project_root",
    "resolve_task_id",
    "resolve_task_identity",
    "resolve_task_reference",
    "slugify",
    "stage_map_read_side_snapshot",
    "task_read_side_snapshot",
    "tasks_root",
    "upsert_project_json",
]
