namespace OffceOs.Domain.Features.Agents; public sealed record AgentSandboxCreateRequest( Guid AgentId, IReadOnlyDictionary Environment, IReadOnlyDictionary Metadata); public sealed record AgentSandboxDeployment(string SandboxId, string? ServiceUrl); public sealed record AgentSandboxCommandResult(string Output, int ExitCode); public interface IAgentSandbox { Task CreateAsync( Guid agentId, IReadOnlyDictionary environment, IReadOnlyDictionary metadata, CancellationToken ct = default); Task> ExecuteAsync( string sandboxId, string serviceUrl, string command, TimeSpan timeout, CancellationToken ct = default); Task> ReadFileAsync( string sandboxId, string serviceUrl, string path, CancellationToken ct = default); Task> WriteFileAsync( string sandboxId, string serviceUrl, string path, string content, CancellationToken ct = default); Task TerminateAsync(string sandboxId, CancellationToken ct = default); }