Issue #22 defines the first stable domain contracts that later runtime, communication, Orleans, and orchestration slices will share. The goal is to keep these shapes broad enough for coding and non-coding agents while staying serialization-safe and independent from the Uno UI host.
- typed identifiers for workspaces, agents, sessions, fleets, providers, runtimes, tools, approvals, artifacts, telemetry, and evaluations
- shared state enums for session lifecycle, provider readiness, approval status, execution modes, artifacts, telemetry, and evaluation outcomes
- DTO-style records for workspaces, agents, fleets, providers, runtimes, sessions, approvals, artifacts, telemetry, and evaluations
- references from runtime-foundation contracts back into this domain slice
- Orleans grain implementations
- live provider execution or SDK adapters
- transport contracts for issue
#23
flowchart LR
Workspace["WorkspaceDescriptor"]
Session["SessionDescriptor"]
Fleet["FleetDescriptor"]
Agent["AgentProfileDescriptor"]
Provider["ProviderDescriptor"]
Runtime["ModelRuntimeDescriptor"]
Tool["ToolCapabilityDescriptor"]
Approval["SessionApprovalRecord"]
Artifact["ArtifactDescriptor"]
Telemetry["TelemetryRecord"]
Evaluation["EvaluationRecord"]
Workspace --> Session
Fleet --> Session
Agent --> Fleet
Provider --> Agent
Runtime --> Agent
Tool --> Agent
Session --> Approval
Session --> Artifact
Session --> Telemetry
Artifact --> Evaluation
Session --> Evaluation
ControlPlaneIdentifiersuseGuid.CreateVersion7()so new IDs are sortable and modern without leaking UI concerns into the core domain slice.- DTOs are modeled as non-positional
sealed recordtypes withinitproperties and safe defaults soSystem.Text.Jsoncan round-trip them without custom infrastructure. ProviderConnectionStatusincludes non-happy-path states such asRequiresAuthentication,Misconfigured, andOutdatedbecause the operator UI must surface these explicitly before live sessions start.AgentProfileDescriptorsupports mixed provider and local-runtime participation by allowing eitherProviderId,ModelRuntimeId, or both depending on future orchestration needs.SessionDescriptor,SessionApprovalRecord,ArtifactDescriptor,TelemetryRecord, andEvaluationRecordcarry the minimum shared flow data needed by issues#23,#24, and#25.
dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter FullyQualifiedName~ControlPlaneDomaindotnet test DotPilot.Tests/DotPilot.Tests.csprojdotnet test DotPilot.slnx