from typing import TypedDict

from app.schemas.changeset import ChangeItem


class AgentGraphState(TypedDict, total=False):
    task_id: str
    project_id: str
    message: str
    progress_key: str
    rag_context: str
    confluence_context: str
    files_map: dict[str, dict]
    docs_candidates: list[dict]
    target_path: str
    target_file_content: str
    target_file_hash: str
    existing_docs_detected: bool
    existing_docs_summary: str
    docs_strategy: str
    rules_bundle: str
    doc_plan: str
    generated_doc: str
    generated_docs_bundle: list[dict]
    validation_passed: bool
    validation_feedback: str
    validation_attempts: int
    resolved_request: dict
    question_profile: dict
    source_bundle: dict
    analysis_brief: dict
    answer_brief: dict
    final_answer: str
    answer: str
    changeset: list[ChangeItem]
    edits_requested_path: str
    edits_context_files: list[dict]
    edits_plan: list[dict]
    edits_contracts: list[dict]
    edits_generation_feedback: str
