namespace Nexus.Api.DTOs;

public sealed record CreateProjectRequest(string Name, string? Description);
public sealed record CreateTaskRequest(string Title, string? Priority, Guid? ProjectId);
public sealed record UpdateTaskStateRequest(string State);
public sealed record ChatRequest(
    string Message,
    string? ConversationId,
    string? AgentId,
    MissionControlContextRequest? Context = null);

public sealed record MissionControlContextRequest(
    string? RouteName,
    string? Path,
    string? Surface,
    string? EntityType,
    string? EntityId);

public sealed record UpdateProjectRequest(string? Name, string? Description, string? Status);
public sealed record UpdateTaskRequest(string? Title, string? Priority, Guid? ProjectId);

public sealed record AgentCommandRequest(string Message);

public sealed record SaveConfigRequest(string Content, string? ExpectedHash = null);

public sealed record AgentListResponse(
    string Id,
    string Name,
    string Role,
    string Model,
    string Status,
    DateTimeOffset? LastSeen,
    string? Workspace,
    string? Description
);

public sealed record AgentDetailResponse(
    string Id,
    string Name,
    string Role,
    string Model,
    string Status,
    DateTimeOffset? LastSeen,
    string? Workspace,
    string? AgentDir,
    string? Description,
    IReadOnlyList<string>? SubAgents,
    string? IdentityName
);

public sealed record AgentCommandResponse(
    string Runtime,
    string AgentId,
    string ConversationId,
    string Content
);

public sealed record CronJobEntry(string Id, string Name, string Schedule, string LastRun, string NextRun, string Status);
public sealed record UpcomingCronEntry(string Id, string Name, string NextRun, string Schedule);
