namespace ClaudeDo.Worker.Prime;

/// <summary>Prompts and CLI args for the non-daily-prep Prime actions.
/// The daily-prep ones live in <see cref="DailyPrepPrompt"/>.</summary>
public static class PrimePrompts
{
    /// <summary>The whole point of a ping is to open the usage window, so it asks for the
    /// cheapest possible answer. Not user-editable — a schedule's prompt override is ignored
    /// for this kind.</summary>
    public const string PingPrompt = "Reply with the single word: ok";

    /// <summary>No tools at all: --strict-mcp-config without a --mcp-config argument loads no
    /// MCP server, and one turn leaves no room to act on a tool result anyway.</summary>
    public static IReadOnlyList<string> BuildPingArgs() =>
    [
        "-p", "--output-format", "stream-json", "--verbose",
        "--permission-mode", "default",
        "--max-turns", "1",
        "--strict-mcp-config",
    ];

    /// <summary>ClaudeDo's MCP server only — no Read/Write/Edit/Bash. An unattended 07:00 run
    /// may create and queue tasks; it may not touch the filesystem.</summary>
    public static IReadOnlyList<string> BuildCustomArgs(int maxTurns) =>
    [
        "-p", "--output-format", "stream-json", "--verbose",
        "--permission-mode", "acceptEdits",
        "--max-turns", maxTurns.ToString(),
        "--allowedTools", "mcp__claudedo",
    ];
}
