using System.Collections.Immutable; using System.Text.Json.Serialization; using StellaOps.Policy.Engine.Services; namespace StellaOps.Policy.Engine.Domain; public sealed record PolicyBundleRequest( [property: JsonPropertyName("dsl")] PolicyDslPayload Dsl, [property: JsonPropertyName("signingKeyId")] string? SigningKeyId, [property: JsonPropertyName("provenance")] PolicyProvenanceInput? Provenance = null); /// /// Input provenance information for policy compilation. /// public sealed record PolicyProvenanceInput( [property: JsonPropertyName("sourceType")] string SourceType, [property: JsonPropertyName("sourceUrl")] string? SourceUrl = null, [property: JsonPropertyName("submitter")] string? Submitter = null, [property: JsonPropertyName("commitSha")] string? CommitSha = null, [property: JsonPropertyName("branch")] string? Branch = null); public sealed record PolicyBundleResponse( [property: JsonPropertyName("success")] bool Success, [property: JsonPropertyName("digest")] string? Digest, [property: JsonPropertyName("signature")] string? Signature, [property: JsonPropertyName("sizeBytes")] int SizeBytes, [property: JsonPropertyName("createdAt")] DateTimeOffset? CreatedAt, [property: JsonPropertyName("diagnostics")] ImmutableArray Diagnostics, [property: JsonPropertyName("aocMetadata")] PolicyAocMetadataResponse? AocMetadata = null); /// /// AOC metadata returned from policy compilation. /// public sealed record PolicyAocMetadataResponse( [property: JsonPropertyName("compilationId")] string CompilationId, [property: JsonPropertyName("compilerVersion")] string CompilerVersion, [property: JsonPropertyName("compiledAt")] DateTimeOffset CompiledAt, [property: JsonPropertyName("sourceDigest")] string SourceDigest, [property: JsonPropertyName("artifactDigest")] string ArtifactDigest, [property: JsonPropertyName("complexityScore")] double ComplexityScore, [property: JsonPropertyName("ruleCount")] int RuleCount, [property: JsonPropertyName("durationMilliseconds")] long DurationMilliseconds);