namespace ClawdDotNet.Web.Contracts;
/// #689: A case — escalation or conflict — with everything each level said.
public sealed record CaseDto(
string Id,
string Kind,
string Status,
string Subject,
string OpenedBy,
DateTime OpenedAt,
DateTime DeadlineUtc,
DateTime? HumanCalledAt,
// null: a human holds it.
string? Holder,
string HolderTaskId,
int Level,
string OriginTaskId,
string OriginRunId,
IReadOnlyList Parties,
IReadOnlyList Informed,
IReadOnlyList WaitingFor,
IReadOnlyList Trail,
string? DecisionId);
public sealed record CaseEntryDto(DateTime At, string Author, string Kind, string Text, string? RunId);
public sealed record DecisionDto(
string Id,
string Subject,
string Question,
string Answer,
string Reasoning,
string DecidedBy,
DateTime DecidedAt,
string? ScopeUnitId,
// "Purchasing / Team A"; null: binds the whole instance.
string? ScopePath,
string CaseId,
string? RunId);
public sealed record CaseDecisionInputDto(string? Answer, string? Reasoning);
public sealed record CaseStatementInputDto(string? AgentId, string? Question);