"""Quality assurance utilities for Agentflow.

This package groups Agentflow's testing and evaluation tooling under a
single namespace:

- ``agentflow.qa.testing``    — test doubles, mocks, quick tests, and helpers
- ``agentflow.qa.evaluation`` — eval sets, criteria, runners, reporters, and results
"""

from . import evaluation, testing
from .evaluation import (
    AgentEvaluator,
    BaseCriterion,
    BatchSimulator,
    Colors,
    CompositeCriterion,
    ConsoleReporter,
    ContainsKeywordsCriterion,
    ConversationScenario,
    CriterionConfig,
    CriterionResult,
    EvalCase,
    EvalCaseResult,
    EvalConfig,
    EvalFixtures,
    EvalPlugin,
    EvalPresets,
    EvalReport,
    EvalSet,
    EvalSetBuilder,
    EvalSummary,
    EvalTestCase,
    EvaluationRunner,
    EventCollector,
    ExactMatchCriterion,
    ExecutionResult,
    FactualAccuracyCriterion,
    HallucinationCriterion,
    HTMLReporter,
    Invocation,
    JSONReporter,
    JUnitXMLReporter,
    LLMCallerMixin,
    LLMJudgeCriterion,
    MatchType,
    MessageContent,
    NodeOrderMatchCriterion,
    NodeResponseData,
    PublisherCallback,
    QuickEval,
    ReporterConfig,
    ReporterManager,
    ReporterOutput,
    ResponseMatchCriterion,
    RougeMatchCriterion,
    Rubric,
    RubricBasedCriterion,
    SafetyCriterion,
    SessionInput,
    SimulationGoalsCriterion,
    SimulationResult,
    StepType,
    SyncCriterion,
    ToolCall,
    ToolNameMatchCriterion,
    TrajectoryCollector,
    TrajectoryMatchCriterion,
    TrajectoryStep,
    UserSimulator,
    UserSimulatorConfig,
    WeightedCriterion,
    assert_criterion_passed,
    assert_eval_passed,
    create_eval_app,
    create_simple_eval_set,
    eval_test,
    make_trajectory_callback,
    parametrize_eval_cases,
    print_report,
    run_eval,
)
from .testing import (
    InMemoryStore,
    MockComposioAdapter,
    MockLangChainAdapter,
    MockMCPClient,
    MockToolRegistry,
    QuickTest,
    TestAgent,
    TestContext,
    TestResult,
)


__all__ = [
    # --- Evaluation: Runner ---
    "AgentEvaluator",
    # --- Evaluation: Criteria (base) ---
    "BaseCriterion",
    # --- Evaluation: Simulators ---
    "BatchSimulator",
    # --- Evaluation: Reporters ---
    "Colors",
    "CompositeCriterion",
    "ConsoleReporter",
    # --- Evaluation: Criteria (response) ---
    "ContainsKeywordsCriterion",
    "ConversationScenario",
    # --- Evaluation: Config ---
    "CriterionConfig",
    # --- Evaluation: Results ---
    "CriterionResult",
    # --- Evaluation: Dataset ---
    "EvalCase",
    "EvalCaseResult",
    "EvalConfig",
    # --- Evaluation: Testing helpers ---
    "EvalFixtures",
    "EvalPlugin",
    "EvalPresets",
    "EvalReport",
    "EvalSet",
    "EvalSetBuilder",
    "EvalSummary",
    "EvalTestCase",
    "EvaluationRunner",
    # --- Evaluation: Collectors ---
    "EventCollector",
    "ExactMatchCriterion",
    # --- Evaluation: Execution ---
    "ExecutionResult",
    # --- Evaluation: Criteria (advanced) ---
    "FactualAccuracyCriterion",
    "HTMLReporter",
    "HallucinationCriterion",
    # --- Testing ---
    "InMemoryStore",
    "Invocation",
    "JSONReporter",
    "JUnitXMLReporter",
    "LLMCallerMixin",
    # --- Evaluation: Criteria (LLM-as-judge) ---
    "LLMJudgeCriterion",
    "MatchType",
    "MessageContent",
    "MockComposioAdapter",
    "MockLangChainAdapter",
    "MockMCPClient",
    "MockToolRegistry",
    # --- Evaluation: Criteria (trajectory) ---
    "NodeOrderMatchCriterion",
    "NodeResponseData",
    "PublisherCallback",
    "QuickEval",
    "QuickTest",
    "ReporterConfig",
    "ReporterManager",
    "ReporterOutput",
    "ResponseMatchCriterion",
    "RougeMatchCriterion",
    "Rubric",
    "RubricBasedCriterion",
    "SafetyCriterion",
    "SessionInput",
    "SimulationGoalsCriterion",
    "SimulationResult",
    "StepType",
    "SyncCriterion",
    "TestAgent",
    "TestContext",
    "TestResult",
    "ToolCall",
    "ToolNameMatchCriterion",
    "TrajectoryCollector",
    "TrajectoryMatchCriterion",
    "TrajectoryStep",
    "UserSimulator",
    "UserSimulatorConfig",
    "WeightedCriterion",
    "assert_criterion_passed",
    "assert_eval_passed",
    "create_eval_app",
    "create_simple_eval_set",
    "eval_test",
    # Submodules
    "evaluation",
    "make_trajectory_callback",
    "parametrize_eval_cases",
    "print_report",
    "run_eval",
    "testing",
]
