search and ai stabilization work, localization stablized.

This commit is contained in:
master
2026-02-24 23:29:36 +02:00
parent 4f947a8b61
commit b07d27772e
766 changed files with 55299 additions and 3221 deletions

View File

@@ -18,6 +18,7 @@ using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using static StellaOps.Localization.T;
namespace StellaOps.Scanner.WebService.Endpoints;
@@ -129,9 +130,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid policy diagnostics request",
_t("scanner.policy.invalid_diagnostics_request"),
StatusCodes.Status400BadRequest,
detail: "Policy content is required for diagnostics.");
detail: _t("scanner.policy.diagnostics_content_required"));
}
var format = PolicyDtoMapper.ParsePolicyFormat(request.Policy.Format);
@@ -167,9 +168,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid policy preview request",
_t("scanner.policy.invalid_preview_request"),
StatusCodes.Status400BadRequest,
detail: "imageDigest is required.");
detail: _t("scanner.policy.preview_image_digest_required"));
}
if (!request.ImageDigest.Contains(':', StringComparison.Ordinal))
@@ -177,9 +178,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid policy preview request",
_t("scanner.policy.invalid_preview_request"),
StatusCodes.Status400BadRequest,
detail: "imageDigest must include algorithm prefix (e.g. sha256:...).");
detail: _t("scanner.policy.preview_image_digest_prefix_required"));
}
if (request.Findings is not null)
@@ -190,9 +191,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid policy preview request",
_t("scanner.policy.invalid_preview_request"),
StatusCodes.Status400BadRequest,
detail: "All findings must include an id value.");
detail: _t("scanner.policy.preview_findings_id_required"));
}
}
@@ -216,9 +217,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid runtime policy request",
_t("scanner.policy.invalid_runtime_request"),
StatusCodes.Status400BadRequest,
detail: "images collection must include at least one digest.");
detail: _t("scanner.policy.runtime_images_required"));
}
var normalizedImages = new List<string>();
@@ -230,9 +231,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid runtime policy request",
_t("scanner.policy.invalid_runtime_request"),
StatusCodes.Status400BadRequest,
detail: "Image digests must be non-empty.");
detail: _t("scanner.policy.runtime_image_digest_nonempty"));
}
var trimmed = image.Trim();
@@ -241,9 +242,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid runtime policy request",
_t("scanner.policy.invalid_runtime_request"),
StatusCodes.Status400BadRequest,
detail: "Image digests must include an algorithm prefix (e.g. sha256:...).");
detail: _t("scanner.policy.runtime_image_digest_prefix_required"));
}
if (seen.Add(trimmed))
@@ -257,9 +258,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid runtime policy request",
_t("scanner.policy.invalid_runtime_request"),
StatusCodes.Status400BadRequest,
detail: "images collection must include at least one unique digest.");
detail: _t("scanner.policy.runtime_images_unique_required"));
}
var namespaceValue = string.IsNullOrWhiteSpace(request.Namespace) ? null : request.Namespace.Trim();
@@ -306,9 +307,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid linkset request",
_t("scanner.policy.invalid_linkset_request"),
StatusCodes.Status400BadRequest,
detail: "advisoryIds must include at least one value.");
detail: _t("scanner.policy.linkset_advisory_ids_required"));
}
if (request.IncludePolicyOverlay && string.IsNullOrWhiteSpace(request.ImageDigest))
@@ -316,9 +317,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid linkset request",
_t("scanner.policy.invalid_linkset_request"),
StatusCodes.Status400BadRequest,
detail: "imageDigest is required when includePolicyOverlay is true.");
detail: _t("scanner.policy.linkset_image_digest_required_for_overlay"));
}
var linksets = await linksetResolver.ResolveByAdvisoryIdsAsync(request.AdvisoryIds, cancellationToken).ConfigureAwait(false);
@@ -472,9 +473,9 @@ internal static class PolicyEndpoints
return ProblemResultFactory.Create(
context,
ProblemTypes.Validation,
"Invalid policy overlay request",
_t("scanner.policy.invalid_overlay_request"),
StatusCodes.Status400BadRequest,
detail: "nodes collection must include at least one node.");
detail: _t("scanner.policy.overlay_nodes_required"));
}
var tenant = !string.IsNullOrWhiteSpace(request.Tenant)