refactor(justfile): drop aliases/duplication, enforce single canonical commands, and add descriptions for all recipes
This commit is contained in:
1 parent
bd8a892101
commit
6e0ccf8082
3 files changed
+135
-107
No files matched your search
+52
-44
@@ -820,7 +820,7 @@ impl MemoryHandler {
|
||||
}
|
||||
|
||||
pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) -> String {
|
||||
let detail = match name {
|
||||
let (action, detail) = match name {
|
||||
"log_code_change" => {
|
||||
let file = args.get("file_path")
|
||||
.or_else(|| args.get("file"))
|
||||
@@ -831,40 +831,44 @@ pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) ->
|
||||
.or_else(|| args.get("description"))
|
||||
.and_then(|v| v.as_str());
|
||||
|
||||
match (file, summary) {
|
||||
let d = match (file, summary) {
|
||||
(Some(f), Some(s)) => format!("{}: {}", f, s),
|
||||
(Some(f), None) => f.to_string(),
|
||||
(None, Some(s)) => s.to_string(),
|
||||
(None, None) => "".to_string(),
|
||||
}
|
||||
(None, None) => String::new(),
|
||||
};
|
||||
("Log Code Change", d)
|
||||
}
|
||||
"log_decision" => {
|
||||
args.get("title")
|
||||
let d = args.get("title")
|
||||
.or_else(|| args.get("decision"))
|
||||
.or_else(|| args.get("summary"))
|
||||
.and_then(|v| v.as_str())
|
||||
.unwrap_or("")
|
||||
.to_string()
|
||||
.to_string();
|
||||
("Log Decision", d)
|
||||
}
|
||||
"log_error_fix" => {
|
||||
args.get("error")
|
||||
let d = args.get("error")
|
||||
.or_else(|| args.get("summary"))
|
||||
.or_else(|| args.get("solution"))
|
||||
.and_then(|v| v.as_str())
|
||||
.unwrap_or("")
|
||||
.to_string()
|
||||
.to_string();
|
||||
("Log Error Fix", d)
|
||||
}
|
||||
"log_tech_debt" => {
|
||||
if let Some(summary) = args.get("summary").or_else(|| args.get("description")).and_then(|v| v.as_str()) {
|
||||
let d = if let Some(summary) = args.get("summary").or_else(|| args.get("description")).and_then(|v| v.as_str()) {
|
||||
summary.to_string()
|
||||
} else if let Some(file) = args.get("file_path").or_else(|| args.get("file")).and_then(|v| v.as_str()) {
|
||||
file.to_string()
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
("Log Tech Debt", d)
|
||||
}
|
||||
"create_entities" => {
|
||||
if let Some(entities) = args.get("entities").and_then(|v| v.as_array()) {
|
||||
let d = if let Some(entities) = args.get("entities").and_then(|v| v.as_array()) {
|
||||
let names: Vec<&str> = entities
|
||||
.iter()
|
||||
.filter_map(|e| e.get("name").or_else(|| e.get("entity_name")).and_then(|n| n.as_str()))
|
||||
@@ -882,11 +886,12 @@ pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) ->
|
||||
} else if let Some(name) = args.get("name").or_else(|| args.get("entity_name")).and_then(|v| v.as_str()) {
|
||||
name.to_string()
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
("Create Entities", d)
|
||||
}
|
||||
"create_relations" => {
|
||||
if let Some(relations) = args.get("relations").and_then(|v| v.as_array()) {
|
||||
let d = if let Some(relations) = args.get("relations").and_then(|v| v.as_array()) {
|
||||
if let Some(first) = relations.first() {
|
||||
let from = first.get("from").and_then(|v| v.as_str()).unwrap_or("?");
|
||||
let to = first.get("to").and_then(|v| v.as_str()).unwrap_or("?");
|
||||
@@ -900,55 +905,57 @@ pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) ->
|
||||
format!("{} relation(s)", relations.len())
|
||||
}
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
("Create Relations", d)
|
||||
}
|
||||
"add_task" => {
|
||||
args.get("title")
|
||||
let d = args.get("title")
|
||||
.or_else(|| args.get("name"))
|
||||
.and_then(|v| v.as_str())
|
||||
.unwrap_or("")
|
||||
.to_string()
|
||||
.to_string();
|
||||
("Add Task", d)
|
||||
}
|
||||
"update_task_status" => {
|
||||
if let (Some(id), Some(status)) = (
|
||||
let d = if let (Some(id), Some(status)) = (
|
||||
args.get("task_id").or_else(|| args.get("id")).and_then(|v| v.as_str()),
|
||||
args.get("status").and_then(|v| v.as_str()),
|
||||
) {
|
||||
format!("Task {} -> {}", id, status)
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
("Update Task Status", d)
|
||||
}
|
||||
"omni_search" | "search_graph" | "search_snippets" | "search_web" => {
|
||||
args.get("query")
|
||||
let d = args.get("query")
|
||||
.and_then(|v| v.as_str())
|
||||
.map(|q| format!("\"{}\"", q))
|
||||
.unwrap_or_default()
|
||||
.unwrap_or_default();
|
||||
("Search", d)
|
||||
}
|
||||
"manage_sticky_notes" => {
|
||||
let action = args.get("action").and_then(|v| v.as_str()).unwrap_or("");
|
||||
if let Some(content) = args.get("content").and_then(|v| v.as_str()) {
|
||||
"manage_sticky_notes" | "add_sticky_note" => {
|
||||
let action = args.get("action").and_then(|v| v.as_str()).unwrap_or("add");
|
||||
let d = if let Some(content) = args.get("content").and_then(|v| v.as_str()) {
|
||||
let preview: String = content.chars().take(40).collect();
|
||||
if !action.is_empty() {
|
||||
format!("{} \"{}\"", action, preview)
|
||||
} else {
|
||||
format!("\"{}\"", preview)
|
||||
}
|
||||
format!("{} \"{}\"", action, preview)
|
||||
} else {
|
||||
action.to_string()
|
||||
}
|
||||
};
|
||||
("Sticky Note", d)
|
||||
}
|
||||
"write_clipboard" => {
|
||||
if let Some(text) = args.get("text").or_else(|| args.get("content")).and_then(|v| v.as_str()) {
|
||||
let d = if let Some(text) = args.get("text").or_else(|| args.get("content")).and_then(|v| v.as_str()) {
|
||||
let preview: String = text.chars().take(40).collect();
|
||||
format!("\"{}\"", preview)
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
("Write Clipboard", d)
|
||||
}
|
||||
_ => {
|
||||
if let Some(title) = args
|
||||
let d = if let Some(title) = args
|
||||
.get("title")
|
||||
.or_else(|| args.get("summary"))
|
||||
.or_else(|| args.get("description"))
|
||||
@@ -961,8 +968,9 @@ pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) ->
|
||||
{
|
||||
title.to_string()
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
(name, d)
|
||||
}
|
||||
};
|
||||
|
||||
@@ -973,9 +981,9 @@ pub fn format_tool_activity_description(name: &str, args: &serde_json::Value) ->
|
||||
}
|
||||
|
||||
if !truncated.is_empty() {
|
||||
format!("Agent executed tool: {} ({})", name, truncated)
|
||||
format!("{}: {}", action, truncated)
|
||||
} else {
|
||||
format!("Agent executed tool: {}", name)
|
||||
format!("{}", action)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -988,13 +996,13 @@ mod tests {
|
||||
#[test]
|
||||
fn test_format_tool_activity_description() {
|
||||
let msg1 = format_tool_activity_description("log_code_change", &json!({ "file": "src/lib.rs", "summary": "Refactored library" }));
|
||||
assert_eq!(msg1, "Agent executed tool: log_code_change (src/lib.rs: Refactored library)");
|
||||
assert_eq!(msg1, "Log Code Change: src/lib.rs: Refactored library");
|
||||
|
||||
let msg2 = format_tool_activity_description("create_entities", &json!({ "entities": [{ "name": "EntityA" }, { "name": "EntityB" }] }));
|
||||
assert_eq!(msg2, "Agent executed tool: create_entities (EntityA, EntityB)");
|
||||
assert_eq!(msg2, "Create Entities: EntityA, EntityB");
|
||||
|
||||
let msg3 = format_tool_activity_description("read_graph", &json!({}));
|
||||
assert_eq!(msg3, "Agent executed tool: read_graph");
|
||||
assert_eq!(msg3, "read_graph");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in new issue
Block a user