diff options
| author | soryu <soryu@soryu.co> | 2026-01-20 12:47:39 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-20 12:56:58 +0000 |
| commit | 36233b7cb834223878aa075bb379846eb6d7bb05 (patch) | |
| tree | d3eec4bc5fd30d41afe2d9df82ac62ca3f405a65 /makima/src/bin | |
| parent | 7d5af3d817cf8aa62c9ee12b7f78a17730182e1d (diff) | |
| download | soryu-36233b7cb834223878aa075bb379846eb6d7bb05.tar.gz soryu-36233b7cb834223878aa075bb379846eb6d7bb05.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'makima/src/bin')
| -rw-r--r-- | makima/src/bin/makima.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/makima/src/bin/makima.rs b/makima/src/bin/makima.rs index 8fc8b60..e103742 100644 --- a/makima/src/bin/makima.rs +++ b/makima/src/bin/makima.rs @@ -187,6 +187,7 @@ async fn run_daemon( disable_verbose: config.process.disable_verbose, bubblewrap: bubblewrap_config, api_url, + api_key: config.server.api_key.clone(), heartbeat_commit_interval_secs: config.process.heartbeat_commit_interval_secs, }; @@ -439,6 +440,30 @@ async fn run_supervisor( args.common.contract_id ); } + SupervisorCommand::Complete(args) => { + let client = ApiClient::new(args.common.api_url, args.common.api_key)?; + eprintln!("Marking contract {} as complete...", args.common.contract_id); + match client.supervisor_complete(args.common.contract_id).await { + Ok(_) => { + println!(r#"{{"success": true, "message": "Contract marked as complete"}}"#); + } + Err(e) => { + eprintln!("Error: {}", e); + println!(r#"{{"success": false, "error": "{}"}}"#, e); + std::process::exit(1); + } + } + } + SupervisorCommand::ResumeContract(args) => { + let client = ApiClient::new(args.api_url, args.api_key)?; + eprintln!("Resuming contract {}...", args.contract_id); + let result = client.supervisor_resume_contract(args.contract_id).await?; + println!("{}", serde_json::to_string(&serde_json::json!({ + "success": true, + "message": "Contract resumed", + "contract": result.0 + }))?); + } } Ok(()) |
