Files
Agentic-AI-Template/Codex/Coding/harness framework cs/scripts/dotnet_harness/models.py
T
2026-09-08 10:30:07 +09:00

87 lines
1.5 KiB
Python

from dataclasses import dataclass
from enum import Enum
from pathlib import Path
class ProjectKind(Enum):
DOTNET = "dotnet"
class ResultCheckKind(Enum):
TRX_HAS_TESTS = "trx_has_tests"
PROJECT_IS_NET8 = "project_is_net8"
@dataclass(frozen=True)
class DotnetConfig:
target: Path | None = None
configuration: str = "Debug"
test_projects: tuple[Path, ...] = ()
@dataclass(frozen=True)
class TDDConfig:
test_roots: tuple[Path, ...]
test_patterns: tuple[str, ...]
exclude: tuple[str, ...] = ()
@dataclass(frozen=True)
class HarnessConfig:
version: int
project_type: str
dotnet: DotnetConfig
tdd: TDDConfig
@dataclass(frozen=True)
class ProjectSelection:
kind: ProjectKind
project_file: Path
projects: tuple[Path, ...] = ()
@dataclass(frozen=True)
class DiscoveryResult:
selection: ProjectSelection | None
@dataclass(frozen=True)
class Toolchain:
dotnet: Path
sdk_version: str
@dataclass(frozen=True)
class CommandSpec:
argv: tuple[str, ...]
cwd: Path
stage: str
timeout_seconds: int = 1800
@dataclass(frozen=True)
class ResultCheck:
kind: ResultCheckKind
path: Path | None = None
@dataclass(frozen=True)
class ValidationStep:
command: CommandSpec
checks: tuple[ResultCheck, ...] = ()
@dataclass(frozen=True)
class ValidationPlan:
project_kind: ProjectKind
steps: tuple[ValidationStep, ...]
@dataclass(frozen=True)
class CommandResult:
command: CommandSpec
returncode: int
stdout: str
stderr: str