use mcport::{RequestContext, ToolReply, json};
use super::tools::{active, message, progress, reply};
use crate::{Repository, WorktreeSafety};
pub fn worktree_safety(
context: &RequestContext,
repository: &Repository,
arguments: &mcport::Value,
) -> ToolReply {
reply((|| {
super::arguments::object(arguments)?;
active(context)?;
progress(context, 0.0, "classifying worktree safety")?;
let safety = repository.worktree_safety().map_err(message)?;
progress(context, 1.0, "worktree safety ready")?;
Ok(safety_value(&safety))
})())
}
fn safety_value(safety: &WorktreeSafety) -> mcport::Value {
json!({
"level": format!("{:?}", safety.level),
"kind": format!("{:?}", safety.kind),
"trackedDirty": safety.tracked_dirty,
"stagedDirty": safety.staged_dirty,
"untrackedCount": safety.untracked_count,
"ignoredCount": safety.ignored_count,
"submoduleUnknown": safety.submodule_unknown,
"readOnly": true
})
}