summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-01 01:40:18 +0000
committersoryu <soryu@soryu.co>2026-02-01 01:40:18 +0000
commit164791ce4715c556b090745c4fca84166f31e958 (patch)
tree2928bde2c93eba607b816c7cc58f890a7839b40d
parentd0b9edbe470f6bee134b5bc52108c77b05f28f87 (diff)
downloadsoryu-makima/contract-management-phase4.tar.gz
soryu-makima/contract-management-phase4.zip
[WIP] Heartbeat checkpoint - 2026-02-01 01:40:18 UTCmakima/contract-management-phase4
-rw-r--r--makima/src/daemon/api/contract.rs16
-rw-r--r--makima/src/daemon/cli/contract.rs6
2 files changed, 11 insertions, 11 deletions
diff --git a/makima/src/daemon/api/contract.rs b/makima/src/daemon/api/contract.rs
index 119c0ba..6ba9e51 100644
--- a/makima/src/daemon/api/contract.rs
+++ b/makima/src/daemon/api/contract.rs
@@ -376,9 +376,9 @@ impl ApiClient {
params.push("worktrees=true".to_string());
}
let query = params.join("&");
- let result = self.get(&format!("/api/v1/contracts/cleanup?{}", query)).await?;
+ let result: JsonValue = self.get(&format!("/api/v1/contracts/cleanup?{}", query)).await?;
serde_json::from_value(result.0)
- .map_err(|e| ApiError::Other(format!("Failed to parse cleanup preview: {}", e)))
+ .map_err(|e| ApiError::Parse(format!("Failed to parse cleanup preview: {}", e)))
}
/// Archive completed/failed contracts older than the threshold.
@@ -393,9 +393,9 @@ impl ApiClient {
status_filter: Some(vec!["completed".to_string(), "failed".to_string()]),
dry_run: Some(dry_run),
};
- let result = self.post("/api/v1/contracts/batch", &req).await?;
+ let result: JsonValue = self.post("/api/v1/contracts/batch", &req).await?;
serde_json::from_value(result.0)
- .map_err(|e| ApiError::Other(format!("Failed to parse archive response: {}", e)))
+ .map_err(|e| ApiError::Parse(format!("Failed to parse archive response: {}", e)))
}
/// Delete archived contracts older than the threshold.
@@ -410,9 +410,9 @@ impl ApiClient {
status_filter: Some(vec!["archived".to_string()]),
dry_run: Some(dry_run),
};
- let result = self.post("/api/v1/contracts/batch", &req).await?;
+ let result: JsonValue = self.post("/api/v1/contracts/batch", &req).await?;
serde_json::from_value(result.0)
- .map_err(|e| ApiError::Other(format!("Failed to parse delete response: {}", e)))
+ .map_err(|e| ApiError::Parse(format!("Failed to parse delete response: {}", e)))
}
/// Clean up orphaned worktrees.
@@ -423,9 +423,9 @@ impl ApiClient {
status_filter: None,
dry_run: Some(dry_run),
};
- let result = self.post("/api/v1/contracts/batch", &req).await?;
+ let result: JsonValue = self.post("/api/v1/contracts/batch", &req).await?;
serde_json::from_value(result.0)
- .map_err(|e| ApiError::Other(format!("Failed to parse worktree cleanup response: {}", e)))
+ .map_err(|e| ApiError::Parse(format!("Failed to parse worktree cleanup response: {}", e)))
}
/// List contracts with filtering options.
diff --git a/makima/src/daemon/cli/contract.rs b/makima/src/daemon/cli/contract.rs
index 9d6784d..39d41e3 100644
--- a/makima/src/daemon/cli/contract.rs
+++ b/makima/src/daemon/cli/contract.rs
@@ -94,11 +94,11 @@ pub struct CreateFileArgs {
#[derive(Args, Debug, Clone)]
pub struct ContractsCommonArgs {
/// API URL
- #[arg(long, env = "MAKIMA_API_URL", default_value = "https://api.makima.jp", global = true)]
+ #[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", global = true)]
+ /// API key for authentication (can also be set via MAKIMA_API_KEY or config file)
+ #[arg(long, env = "MAKIMA_API_KEY", default_value = "")]
pub api_key: String,
}