From 54c6d409e1d5667f4ab7f63a43e1459e68575c94 Mon Sep 17 00:00:00 2001 From: soryu Date: Tue, 20 Jan 2026 17:19:18 +0000 Subject: Clean contract lifecycle: Add supervisor complete command (#13) * feat: Add contract lifecycle management commands (complete and resume-contract) Add supervisor commands for properly managing contract lifecycle: - `makima supervisor complete` - Mark a contract as complete and stop the supervisor - `makima supervisor resume-contract` - Resume a completed contract (reactivate it) Also adds `api_key` field to TaskConfig for authenticated API calls. This consolidates the lifecycle management features from the contract-lifecycle-cleanup branch. Co-Authored-By: Claude Opus 4.5 * Fix: prevent supervisor auto-start for completed contracts When viewing a completed contract, the supervisor was auto-starting on component mount. This would resurrect completed contracts and cause them to continue running. Changes: - Add contract.status !== 'completed' check to the auto-start condition - Add contract.status to the useEffect dependency array Co-Authored-By: Claude Opus 4.5 * Task completion checkpoint --------- Co-authored-by: Claude Opus 4.5 --- makima/src/daemon/cli/mod.rs | 6 ++++++ makima/src/daemon/cli/supervisor.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) (limited to 'makima/src/daemon/cli') diff --git a/makima/src/daemon/cli/mod.rs b/makima/src/daemon/cli/mod.rs index ba71c28..3394b35 100644 --- a/makima/src/daemon/cli/mod.rs +++ b/makima/src/daemon/cli/mod.rs @@ -122,6 +122,12 @@ pub enum SupervisorCommand { /// Rewind supervisor conversation RewindConversation(supervisor::ConversationRewindArgs), + + /// Mark the contract as complete and stop the supervisor + Complete(supervisor::CompleteArgs), + + /// Resume a completed contract (reactivate it) + ResumeContract(supervisor::ResumeContractArgs), } /// Contract subcommands for task-contract interaction. diff --git a/makima/src/daemon/cli/supervisor.rs b/makima/src/daemon/cli/supervisor.rs index ae1a126..798a55f 100644 --- a/makima/src/daemon/cli/supervisor.rs +++ b/makima/src/daemon/cli/supervisor.rs @@ -390,3 +390,30 @@ pub struct ConversationRewindArgs { #[arg(long)] pub rewind_code: bool, } + +/// Arguments for complete command (mark contract as complete). +#[derive(Args, Debug)] +pub struct CompleteArgs { + #[command(flatten)] + pub common: SupervisorArgs, +} + +// ============================================================================ +// Resume Contract Command Args +// ============================================================================ + +/// Arguments for resume-contract command (reactivate a completed contract). +#[derive(Args, Debug)] +pub struct ResumeContractArgs { + /// API URL + #[arg(long, env = "MAKIMA_API_URL", default_value = "https://api.makima.jp")] + pub api_url: String, + + /// API key for authentication + #[arg(long, env = "MAKIMA_API_KEY")] + pub api_key: String, + + /// Contract ID to resume + #[arg(index = 1)] + pub contract_id: Uuid, +} -- cgit v1.2.3