summaryrefslogtreecommitdiff
path: root/makima/src/daemon/cli/mod.rs
blob: 66c7941b78c6c94255a0d8d349512638267e1954 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//! Command-line interface for the makima CLI.

pub mod contract;
pub mod daemon;
pub mod server;
pub mod supervisor;

use clap::{Parser, Subcommand};

pub use contract::ContractArgs;
pub use daemon::DaemonArgs;
pub use server::ServerArgs;
pub use supervisor::SupervisorArgs;

/// Makima - unified CLI for server, daemon, and task management.
#[derive(Parser, Debug)]
#[command(name = "makima")]
#[command(version, about = "Makima CLI - server, daemon, and task management", long_about = None)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Commands,
}

#[derive(Subcommand, Debug)]
pub enum Commands {
    /// Run the makima server
    Server(ServerArgs),

    /// Run the daemon (connect to server, manage tasks)
    Daemon(DaemonArgs),

    /// Supervisor commands for contract orchestration
    #[command(subcommand)]
    Supervisor(SupervisorCommand),

    /// Contract commands for task-contract interaction
    #[command(subcommand)]
    Contract(ContractCommand),
}

/// Supervisor subcommands for contract orchestration.
#[derive(Subcommand, Debug)]
pub enum SupervisorCommand {
    /// List all tasks in the contract
    Tasks(SupervisorArgs),

    /// Get the task tree structure
    Tree(SupervisorArgs),

    /// Create and start a new task
    Spawn(supervisor::SpawnArgs),

    /// Wait for a task to complete
    Wait(supervisor::WaitArgs),

    /// Read a file from a task's worktree
    ReadFile(supervisor::ReadFileArgs),

    /// Create a git branch
    Branch(supervisor::BranchArgs),

    /// Merge a task's changes to a branch
    Merge(supervisor::MergeArgs),

    /// Create a pull request
    Pr(supervisor::PrArgs),

    /// View task diff
    Diff(supervisor::DiffArgs),

    /// Create a checkpoint
    Checkpoint(supervisor::CheckpointArgs),

    /// List checkpoints
    Checkpoints(SupervisorArgs),

    /// Get contract status
    Status(SupervisorArgs),

    /// Ask a question and wait for user feedback
    Ask(supervisor::AskArgs),
}

/// Contract subcommands for task-contract interaction.
#[derive(Subcommand, Debug)]
pub enum ContractCommand {
    /// Get contract status
    Status(ContractArgs),

    /// Get the phase checklist
    Checklist(ContractArgs),

    /// Get contract goals
    Goals(ContractArgs),

    /// List contract files
    Files(ContractArgs),

    /// Get a specific file's content
    File(contract::FileArgs),

    /// Report progress on the contract
    Report(contract::ReportArgs),

    /// Get suggested next action
    SuggestAction(ContractArgs),

    /// Get completion recommendation
    CompletionAction(contract::CompletionActionArgs),

    /// Update a file (reads content from stdin)
    UpdateFile(contract::UpdateFileArgs),

    /// Create a new file (reads content from stdin)
    CreateFile(contract::CreateFileArgs),
}

impl Cli {
    /// Parse command-line arguments
    pub fn parse_args() -> Self {
        Self::parse()
    }
}