1- using System . Diagnostics ;
21using DotPilot . Core . Features . ControlPlaneDomain ;
2+ using DotPilot . Core . Features . RuntimeCommunication ;
33using DotPilot . Core . Features . RuntimeFoundation ;
4+ using ManagedCode . Communication ;
45
56namespace DotPilot . Runtime . Features . RuntimeFoundation ;
67
78public sealed class DeterministicAgentRuntimeClient : IAgentRuntimeClient
89{
910 private const string ApprovalKeyword = "approval" ;
11+ private const string DeterministicProviderDisplayName = "Deterministic Runtime Client" ;
1012 private const string PlanSummary =
1113 "Planned the runtime foundation flow with contracts first, then communication, host lifecycle, and orchestration." ;
1214 private const string ExecuteSummary =
@@ -19,34 +21,50 @@ public sealed class DeterministicAgentRuntimeClient : IAgentRuntimeClient
1921 private const string ExecuteArtifact = "runtime-foundation.snapshot.json" ;
2022 private const string ReviewArtifact = "runtime-foundation.review.md" ;
2123
22- public ValueTask < AgentTurnResult > ExecuteAsync ( AgentTurnRequest request , CancellationToken cancellationToken )
24+ public ValueTask < Result < AgentTurnResult > > ExecuteAsync ( AgentTurnRequest request , CancellationToken cancellationToken )
2325 {
24- ArgumentException . ThrowIfNullOrWhiteSpace ( request . Prompt ) ;
2526 cancellationToken . ThrowIfCancellationRequested ( ) ;
27+ if ( string . IsNullOrWhiteSpace ( request . Prompt ) )
28+ {
29+ return ValueTask . FromResult ( Result < AgentTurnResult > . Fail ( RuntimeCommunicationProblems . InvalidPrompt ( ) ) ) ;
30+ }
31+
32+ if ( request . ProviderStatus is not ProviderConnectionStatus . Available )
33+ {
34+ return ValueTask . FromResult (
35+ Result < AgentTurnResult > . Fail (
36+ RuntimeCommunicationProblems . ProviderUnavailable (
37+ request . ProviderStatus ,
38+ DeterministicProviderDisplayName ) ) ) ;
39+ }
2640
2741 return ValueTask . FromResult ( request . Mode switch
2842 {
29- AgentExecutionMode . Plan => new AgentTurnResult (
30- PlanSummary ,
31- SessionPhase . Plan ,
32- ApprovalState . NotRequired ,
33- [ CreateArtifact ( request . SessionId , PlanArtifact , ArtifactKind . Plan ) ] ) ,
34- AgentExecutionMode . Execute when RequiresApproval ( request . Prompt ) => new AgentTurnResult (
35- PendingApprovalSummary ,
36- SessionPhase . Paused ,
37- ApprovalState . Pending ,
38- [ CreateArtifact ( request . SessionId , ExecuteArtifact , ArtifactKind . Snapshot ) ] ) ,
39- AgentExecutionMode . Execute => new AgentTurnResult (
40- ExecuteSummary ,
41- SessionPhase . Execute ,
42- ApprovalState . NotRequired ,
43- [ CreateArtifact ( request . SessionId , ExecuteArtifact , ArtifactKind . Snapshot ) ] ) ,
44- AgentExecutionMode . Review => new AgentTurnResult (
45- ReviewSummary ,
46- SessionPhase . Review ,
47- ApprovalState . Approved ,
48- [ CreateArtifact ( request . SessionId , ReviewArtifact , ArtifactKind . Report ) ] ) ,
49- _ => throw new UnreachableException ( ) ,
43+ AgentExecutionMode . Plan => Result < AgentTurnResult > . Succeed (
44+ new AgentTurnResult (
45+ PlanSummary ,
46+ SessionPhase . Plan ,
47+ ApprovalState . NotRequired ,
48+ [ CreateArtifact ( request . SessionId , PlanArtifact , ArtifactKind . Plan ) ] ) ) ,
49+ AgentExecutionMode . Execute when RequiresApproval ( request . Prompt ) => Result < AgentTurnResult > . Succeed (
50+ new AgentTurnResult (
51+ PendingApprovalSummary ,
52+ SessionPhase . Paused ,
53+ ApprovalState . Pending ,
54+ [ CreateArtifact ( request . SessionId , ExecuteArtifact , ArtifactKind . Snapshot ) ] ) ) ,
55+ AgentExecutionMode . Execute => Result < AgentTurnResult > . Succeed (
56+ new AgentTurnResult (
57+ ExecuteSummary ,
58+ SessionPhase . Execute ,
59+ ApprovalState . NotRequired ,
60+ [ CreateArtifact ( request . SessionId , ExecuteArtifact , ArtifactKind . Snapshot ) ] ) ) ,
61+ AgentExecutionMode . Review => Result < AgentTurnResult > . Succeed (
62+ new AgentTurnResult (
63+ ReviewSummary ,
64+ SessionPhase . Review ,
65+ ApprovalState . Approved ,
66+ [ CreateArtifact ( request . SessionId , ReviewArtifact , ArtifactKind . Report ) ] ) ) ,
67+ _ => Result < AgentTurnResult > . Fail ( RuntimeCommunicationProblems . OrchestrationUnavailable ( ) ) ,
5068 } ) ;
5169 }
5270
0 commit comments