Add signal contracts for reachability, exploitability, trust, and unknown symbols
- Introduced `ReachabilityState`, `RuntimeHit`, `ExploitabilitySignal`, `ReachabilitySignal`, `SignalEnvelope`, `SignalType`, `TrustSignal`, and `UnknownSymbolSignal` records to define various signal types and their properties. - Implemented JSON serialization attributes for proper data interchange. - Created project files for the new signal contracts library and corresponding test projects. - Added deterministic test fixtures for micro-interaction testing. - Included cryptographic keys for secure operations with cosign.
This commit is contained in:
25
src/__Libraries/StellaOps.Router.Config/PayloadLimits.cs
Normal file
25
src/__Libraries/StellaOps.Router.Config/PayloadLimits.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
namespace StellaOps.Router.Config;
|
||||
|
||||
/// <summary>
|
||||
/// Configuration for payload and memory limits.
|
||||
/// </summary>
|
||||
public sealed class PayloadLimits
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the maximum request bytes per call.
|
||||
/// Default: 10 MB.
|
||||
/// </summary>
|
||||
public long MaxRequestBytesPerCall { get; set; } = 10 * 1024 * 1024;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the maximum request bytes per connection.
|
||||
/// Default: 100 MB.
|
||||
/// </summary>
|
||||
public long MaxRequestBytesPerConnection { get; set; } = 100 * 1024 * 1024;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the maximum aggregate in-flight bytes across all requests.
|
||||
/// Default: 1 GB.
|
||||
/// </summary>
|
||||
public long MaxAggregateInflightBytes { get; set; } = 1024 * 1024 * 1024;
|
||||
}
|
||||
17
src/__Libraries/StellaOps.Router.Config/RouterConfig.cs
Normal file
17
src/__Libraries/StellaOps.Router.Config/RouterConfig.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace StellaOps.Router.Config;
|
||||
|
||||
/// <summary>
|
||||
/// Root configuration for the router.
|
||||
/// </summary>
|
||||
public sealed class RouterConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the payload limits configuration.
|
||||
/// </summary>
|
||||
public PayloadLimits PayloadLimits { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the service configurations.
|
||||
/// </summary>
|
||||
public List<ServiceConfig> Services { get; set; } = [];
|
||||
}
|
||||
60
src/__Libraries/StellaOps.Router.Config/ServiceConfig.cs
Normal file
60
src/__Libraries/StellaOps.Router.Config/ServiceConfig.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using StellaOps.Router.Common;
|
||||
|
||||
namespace StellaOps.Router.Config;
|
||||
|
||||
/// <summary>
|
||||
/// Configuration for a service in the router.
|
||||
/// </summary>
|
||||
public sealed class ServiceConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the service name.
|
||||
/// </summary>
|
||||
public required string ServiceName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the default version for requests without explicit version.
|
||||
/// </summary>
|
||||
public string? DefaultVersion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the default transport type for this service.
|
||||
/// </summary>
|
||||
public TransportType DefaultTransport { get; set; } = TransportType.Tcp;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the endpoint configurations.
|
||||
/// </summary>
|
||||
public List<EndpointConfig> Endpoints { get; set; } = [];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configuration for an endpoint in a service.
|
||||
/// </summary>
|
||||
public sealed class EndpointConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the HTTP method.
|
||||
/// </summary>
|
||||
public required string Method { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the path template.
|
||||
/// </summary>
|
||||
public required string Path { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the default timeout.
|
||||
/// </summary>
|
||||
public TimeSpan? DefaultTimeout { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether streaming is supported.
|
||||
/// </summary>
|
||||
public bool SupportsStreaming { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the claim requirements.
|
||||
/// </summary>
|
||||
public List<ClaimRequirement> RequiringClaims { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StellaOps.Router.Common\StellaOps.Router.Common.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user