release orchestrator v1 draft and build fixes

This commit is contained in:
master
2026-01-12 12:24:17 +02:00
parent f3de858c59
commit 9873f80830
1598 changed files with 240385 additions and 5944 deletions

View File

@@ -168,17 +168,19 @@ public sealed record ReplayVerificationResult
public sealed class AIArtifactReplayer : IAIArtifactReplayer
{
private readonly ILlmProvider _provider;
private readonly TimeProvider _timeProvider;
public AIArtifactReplayer(ILlmProvider provider)
public AIArtifactReplayer(ILlmProvider provider, TimeProvider? timeProvider = null)
{
_provider = provider;
_timeProvider = timeProvider ?? TimeProvider.System;
}
public async Task<ReplayResult> ReplayAsync(
AIArtifactReplayManifest manifest,
CancellationToken cancellationToken = default)
{
var startTime = DateTime.UtcNow;
var startTime = _timeProvider.GetUtcNow();
try
{
@@ -191,7 +193,7 @@ public sealed class AIArtifactReplayer : IAIArtifactReplayer
ReplayedOutput = string.Empty,
ReplayedOutputHash = string.Empty,
Identical = false,
Duration = DateTime.UtcNow - startTime,
Duration = _timeProvider.GetUtcNow() - startTime,
ErrorMessage = "Replay requires temperature=0 for determinism"
};
}
@@ -205,7 +207,7 @@ public sealed class AIArtifactReplayer : IAIArtifactReplayer
ReplayedOutput = string.Empty,
ReplayedOutputHash = string.Empty,
Identical = false,
Duration = DateTime.UtcNow - startTime,
Duration = _timeProvider.GetUtcNow() - startTime,
ErrorMessage = $"Model {manifest.ModelId} is not available"
};
}
@@ -233,7 +235,7 @@ public sealed class AIArtifactReplayer : IAIArtifactReplayer
ReplayedOutput = result.Content,
ReplayedOutputHash = replayedHash,
Identical = identical,
Duration = DateTime.UtcNow - startTime
Duration = _timeProvider.GetUtcNow() - startTime
};
}
catch (Exception ex)
@@ -244,7 +246,7 @@ public sealed class AIArtifactReplayer : IAIArtifactReplayer
ReplayedOutput = string.Empty,
ReplayedOutputHash = string.Empty,
Identical = false,
Duration = DateTime.UtcNow - startTime,
Duration = _timeProvider.GetUtcNow() - startTime,
ErrorMessage = ex.Message
};
}

View File

@@ -20,6 +20,7 @@ public sealed class ConversationStore : IConversationStore, IAsyncDisposable
private readonly NpgsqlDataSource _dataSource;
private readonly ILogger<ConversationStore> _logger;
private readonly ConversationStoreOptions _options;
private readonly TimeProvider _timeProvider;
private static readonly JsonSerializerOptions JsonOptions = new()
{
@@ -32,11 +33,13 @@ public sealed class ConversationStore : IConversationStore, IAsyncDisposable
public ConversationStore(
NpgsqlDataSource dataSource,
ILogger<ConversationStore> logger,
ConversationStoreOptions? options = null)
ConversationStoreOptions? options = null,
TimeProvider? timeProvider = null)
{
_dataSource = dataSource;
_logger = logger;
_options = options ?? new ConversationStoreOptions();
_timeProvider = timeProvider ?? TimeProvider.System;
}
/// <inheritdoc />
@@ -217,7 +220,7 @@ public sealed class ConversationStore : IConversationStore, IAsyncDisposable
WHERE updated_at < @cutoff
""";
var cutoff = DateTimeOffset.UtcNow - maxAge;
var cutoff = _timeProvider.GetUtcNow() - maxAge;
await using var cmd = _dataSource.CreateCommand(sql);
cmd.Parameters.AddWithValue("cutoff", cutoff);