Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace StellaOps.TaskRunner.Client.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Request to create a new pack run.
|
||||
/// </summary>
|
||||
public sealed record CreatePackRunRequest(
|
||||
[property: JsonPropertyName("packId")] string PackId,
|
||||
[property: JsonPropertyName("packVersion")] string? PackVersion = null,
|
||||
[property: JsonPropertyName("inputs")] IReadOnlyDictionary<string, object>? Inputs = null,
|
||||
[property: JsonPropertyName("tenantId")] string? TenantId = null,
|
||||
[property: JsonPropertyName("correlationId")] string? CorrelationId = null);
|
||||
|
||||
/// <summary>
|
||||
/// Response from creating a pack run.
|
||||
/// </summary>
|
||||
public sealed record CreatePackRunResponse(
|
||||
[property: JsonPropertyName("runId")] string RunId,
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("planHash")] string PlanHash,
|
||||
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt);
|
||||
|
||||
/// <summary>
|
||||
/// Pack run state.
|
||||
/// </summary>
|
||||
public sealed record PackRunState(
|
||||
[property: JsonPropertyName("runId")] string RunId,
|
||||
[property: JsonPropertyName("packId")] string PackId,
|
||||
[property: JsonPropertyName("packVersion")] string PackVersion,
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("planHash")] string PlanHash,
|
||||
[property: JsonPropertyName("currentStepId")] string? CurrentStepId,
|
||||
[property: JsonPropertyName("steps")] IReadOnlyList<PackRunStepState> Steps,
|
||||
[property: JsonPropertyName("pendingApprovals")] IReadOnlyList<PendingApproval>? PendingApprovals,
|
||||
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt,
|
||||
[property: JsonPropertyName("startedAt")] DateTimeOffset? StartedAt,
|
||||
[property: JsonPropertyName("completedAt")] DateTimeOffset? CompletedAt,
|
||||
[property: JsonPropertyName("error")] PackRunError? Error);
|
||||
|
||||
/// <summary>
|
||||
/// State of a single step in a pack run.
|
||||
/// </summary>
|
||||
public sealed record PackRunStepState(
|
||||
[property: JsonPropertyName("stepId")] string StepId,
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("startedAt")] DateTimeOffset? StartedAt,
|
||||
[property: JsonPropertyName("completedAt")] DateTimeOffset? CompletedAt,
|
||||
[property: JsonPropertyName("retryCount")] int RetryCount,
|
||||
[property: JsonPropertyName("outputs")] IReadOnlyDictionary<string, object>? Outputs);
|
||||
|
||||
/// <summary>
|
||||
/// Pending approval gate.
|
||||
/// </summary>
|
||||
public sealed record PendingApproval(
|
||||
[property: JsonPropertyName("approvalId")] string ApprovalId,
|
||||
[property: JsonPropertyName("stepId")] string StepId,
|
||||
[property: JsonPropertyName("message")] string? Message,
|
||||
[property: JsonPropertyName("requiredGrants")] IReadOnlyList<string> RequiredGrants,
|
||||
[property: JsonPropertyName("requestedAt")] DateTimeOffset RequestedAt);
|
||||
|
||||
/// <summary>
|
||||
/// Pack run error information.
|
||||
/// </summary>
|
||||
public sealed record PackRunError(
|
||||
[property: JsonPropertyName("code")] string Code,
|
||||
[property: JsonPropertyName("message")] string Message,
|
||||
[property: JsonPropertyName("stepId")] string? StepId);
|
||||
|
||||
/// <summary>
|
||||
/// Request to apply an approval decision.
|
||||
/// </summary>
|
||||
public sealed record ApprovalDecisionRequest(
|
||||
[property: JsonPropertyName("decision")] string Decision,
|
||||
[property: JsonPropertyName("planHash")] string PlanHash,
|
||||
[property: JsonPropertyName("actorId")] string? ActorId = null,
|
||||
[property: JsonPropertyName("summary")] string? Summary = null);
|
||||
|
||||
/// <summary>
|
||||
/// Response from applying an approval decision.
|
||||
/// </summary>
|
||||
public sealed record ApprovalDecisionResponse(
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("resumed")] bool Resumed);
|
||||
|
||||
/// <summary>
|
||||
/// Request to simulate a task pack.
|
||||
/// </summary>
|
||||
public sealed record SimulatePackRequest(
|
||||
[property: JsonPropertyName("manifest")] string Manifest,
|
||||
[property: JsonPropertyName("inputs")] IReadOnlyDictionary<string, object>? Inputs = null);
|
||||
|
||||
/// <summary>
|
||||
/// Simulation result for a task pack.
|
||||
/// </summary>
|
||||
public sealed record SimulatePackResponse(
|
||||
[property: JsonPropertyName("valid")] bool Valid,
|
||||
[property: JsonPropertyName("planHash")] string? PlanHash,
|
||||
[property: JsonPropertyName("steps")] IReadOnlyList<SimulatedStep> Steps,
|
||||
[property: JsonPropertyName("errors")] IReadOnlyList<string>? Errors);
|
||||
|
||||
/// <summary>
|
||||
/// Simulated step in a pack run.
|
||||
/// </summary>
|
||||
public sealed record SimulatedStep(
|
||||
[property: JsonPropertyName("stepId")] string StepId,
|
||||
[property: JsonPropertyName("kind")] string Kind,
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("loopInfo")] LoopInfo? LoopInfo,
|
||||
[property: JsonPropertyName("conditionalInfo")] ConditionalInfo? ConditionalInfo,
|
||||
[property: JsonPropertyName("policyInfo")] PolicyInfo? PolicyInfo);
|
||||
|
||||
/// <summary>
|
||||
/// Loop step simulation info.
|
||||
/// </summary>
|
||||
public sealed record LoopInfo(
|
||||
[property: JsonPropertyName("itemsExpression")] string? ItemsExpression,
|
||||
[property: JsonPropertyName("iterator")] string Iterator,
|
||||
[property: JsonPropertyName("maxIterations")] int MaxIterations);
|
||||
|
||||
/// <summary>
|
||||
/// Conditional step simulation info.
|
||||
/// </summary>
|
||||
public sealed record ConditionalInfo(
|
||||
[property: JsonPropertyName("branches")] IReadOnlyList<BranchInfo> Branches,
|
||||
[property: JsonPropertyName("hasElse")] bool HasElse);
|
||||
|
||||
/// <summary>
|
||||
/// Conditional branch info.
|
||||
/// </summary>
|
||||
public sealed record BranchInfo(
|
||||
[property: JsonPropertyName("condition")] string Condition,
|
||||
[property: JsonPropertyName("stepCount")] int StepCount);
|
||||
|
||||
/// <summary>
|
||||
/// Policy gate simulation info.
|
||||
/// </summary>
|
||||
public sealed record PolicyInfo(
|
||||
[property: JsonPropertyName("policyId")] string PolicyId,
|
||||
[property: JsonPropertyName("failureAction")] string FailureAction);
|
||||
|
||||
/// <summary>
|
||||
/// Artifact metadata.
|
||||
/// </summary>
|
||||
public sealed record ArtifactInfo(
|
||||
[property: JsonPropertyName("name")] string Name,
|
||||
[property: JsonPropertyName("path")] string Path,
|
||||
[property: JsonPropertyName("size")] long Size,
|
||||
[property: JsonPropertyName("sha256")] string Sha256,
|
||||
[property: JsonPropertyName("contentType")] string? ContentType,
|
||||
[property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt);
|
||||
|
||||
/// <summary>
|
||||
/// List of artifacts.
|
||||
/// </summary>
|
||||
public sealed record ArtifactListResponse(
|
||||
[property: JsonPropertyName("artifacts")] IReadOnlyList<ArtifactInfo> Artifacts);
|
||||
|
||||
/// <summary>
|
||||
/// Run log entry.
|
||||
/// </summary>
|
||||
public sealed record RunLogEntry(
|
||||
[property: JsonPropertyName("timestamp")] DateTimeOffset Timestamp,
|
||||
[property: JsonPropertyName("level")] string Level,
|
||||
[property: JsonPropertyName("stepId")] string? StepId,
|
||||
[property: JsonPropertyName("message")] string Message,
|
||||
[property: JsonPropertyName("traceId")] string? TraceId);
|
||||
|
||||
/// <summary>
|
||||
/// Cancel run response.
|
||||
/// </summary>
|
||||
public sealed record CancelRunResponse(
|
||||
[property: JsonPropertyName("status")] string Status,
|
||||
[property: JsonPropertyName("message")] string? Message);
|
||||
Reference in New Issue
Block a user