up
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled

This commit is contained in:
master
2025-11-28 18:21:46 +02:00
parent 05da719048
commit d1cbb905f8
103 changed files with 49604 additions and 105 deletions

View File

@@ -137,6 +137,85 @@ internal static class Program
services.AddSingleton<IScannerExecutor, ScannerExecutor>();
services.AddSingleton<IScannerInstaller, ScannerInstaller>();
// CLI-FORENSICS-53-001: Forensic snapshot client
services.AddHttpClient<IForensicSnapshotClient, ForensicSnapshotClient>(client =>
{
client.Timeout = TimeSpan.FromMinutes(5);
if (!string.IsNullOrWhiteSpace(options.BackendUrl) &&
Uri.TryCreate(options.BackendUrl, UriKind.Absolute, out var backendUri))
{
client.BaseAddress = backendUri;
}
}).AddEgressPolicyGuard("stellaops-cli", "forensic-api");
// CLI-FORENSICS-54-001: Forensic verifier (local only, no HTTP)
services.AddSingleton<IForensicVerifier, ForensicVerifier>();
// CLI-FORENSICS-54-002: Attestation reader (local only, no HTTP)
services.AddSingleton<IAttestationReader, AttestationReader>();
// CLI-LNM-22-002: VEX observations client
services.AddHttpClient<IVexObservationsClient, VexObservationsClient>(client =>
{
client.Timeout = TimeSpan.FromMinutes(2);
if (!string.IsNullOrWhiteSpace(options.BackendUrl) &&
Uri.TryCreate(options.BackendUrl, UriKind.Absolute, out var backendUri))
{
client.BaseAddress = backendUri;
}
}).AddEgressPolicyGuard("stellaops-cli", "vex-api");
// CLI-PROMO-70-001: Promotion assembler (local, may call crane/cosign)
services.AddHttpClient<IPromotionAssembler, PromotionAssembler>(client =>
{
client.Timeout = TimeSpan.FromMinutes(5);
});
// CLI-DETER-70-003: Determinism harness (local only, executes docker)
services.AddSingleton<IDeterminismHarness, DeterminismHarness>();
// CLI-OBS-51-001: Observability client for health metrics
services.AddHttpClient<IObservabilityClient, ObservabilityClient>(client =>
{
client.Timeout = TimeSpan.FromSeconds(30);
}).AddEgressPolicyGuard("stellaops-cli", "observability-api");
// CLI-PACKS-42-001: Pack client for Task Pack operations
services.AddHttpClient<IPackClient, PackClient>(client =>
{
client.Timeout = TimeSpan.FromMinutes(10); // Pack operations may take longer
}).AddEgressPolicyGuard("stellaops-cli", "packs-api");
// CLI-EXC-25-001: Exception client for exception governance operations
services.AddHttpClient<IExceptionClient, ExceptionClient>(client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
}).AddEgressPolicyGuard("stellaops-cli", "exceptions-api");
// CLI-ORCH-32-001: Orchestrator client for source/job management
services.AddHttpClient<IOrchestratorClient, OrchestratorClient>(client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
}).AddEgressPolicyGuard("stellaops-cli", "orchestrator-api");
// CLI-PARITY-41-001: SBOM client for SBOM explorer
services.AddHttpClient<ISbomClient, SbomClient>(client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
}).AddEgressPolicyGuard("stellaops-cli", "sbom-api");
// CLI-PARITY-41-002: Notify client for notification management
services.AddHttpClient<INotifyClient, NotifyClient>(client =>
{
client.Timeout = TimeSpan.FromSeconds(60);
}).AddEgressPolicyGuard("stellaops-cli", "notify-api");
// CLI-SBOM-60-001: Sbomer client for layer/compose operations
services.AddHttpClient<ISbomerClient, SbomerClient>(client =>
{
client.Timeout = TimeSpan.FromMinutes(5); // Composition may take longer
}).AddEgressPolicyGuard("stellaops-cli", "sbomer-api");
await using var serviceProvider = services.BuildServiceProvider();
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
var startupLogger = loggerFactory.CreateLogger("StellaOps.Cli.Startup");