huskies: merge 964
This commit is contained in:
@@ -37,7 +37,9 @@ pub(crate) fn tool_get_story_todos(args: &Value, ctx: &AppContext) -> Result<Str
|
||||
let contents = crate::http::workflow::read_story_content(&root, story_id)
|
||||
.map_err(|_| format!("Story file not found: {story_id}.md"))?;
|
||||
|
||||
let story_name = crate::crdt_state::read_item(story_id).map(|v| v.name().to_string());
|
||||
let story_name = crate::crdt_state::read_item(story_id)
|
||||
.map(|v| v.name().to_string())
|
||||
.unwrap_or_default();
|
||||
let todos = parse_unchecked_todos(&contents);
|
||||
|
||||
serde_json::to_string_pretty(&json!({
|
||||
|
||||
@@ -18,7 +18,15 @@ pub(crate) fn tool_update_story(args: &Value, ctx: &AppContext) -> Result<String
|
||||
// escape hatch; every known key is recognised and routed below, and any
|
||||
// unknown key is rejected loudly rather than silently flushed to disk.
|
||||
if let Some(name) = args.get("name").and_then(|v| v.as_str()) {
|
||||
crate::crdt_state::set_name(story_id, Some(name));
|
||||
if name.trim().is_empty() {
|
||||
return Err("name must not be empty".to_string());
|
||||
}
|
||||
if !crate::crdt_state::set_name(story_id, Some(name)) {
|
||||
return Err(format!(
|
||||
"Story '{story_id}' not found in CRDT — name was not updated. \
|
||||
The story may not exist or may not yet be registered."
|
||||
));
|
||||
}
|
||||
}
|
||||
if let Some(agent) = args.get("agent").and_then(|v| v.as_str()) {
|
||||
crate::crdt_state::set_agent(story_id, agent.parse::<crate::config::AgentName>().ok());
|
||||
@@ -38,8 +46,15 @@ pub(crate) fn tool_update_story(args: &Value, ctx: &AppContext) -> Result<String
|
||||
);
|
||||
}
|
||||
"name" => {
|
||||
let s = value.as_str().filter(|s| !s.is_empty());
|
||||
crate::crdt_state::set_name(story_id, s);
|
||||
let s = value.as_str().filter(|s| !s.trim().is_empty());
|
||||
if s.is_none() {
|
||||
return Err("name must not be empty".to_string());
|
||||
}
|
||||
if !crate::crdt_state::set_name(story_id, s) {
|
||||
return Err(format!(
|
||||
"Story '{story_id}' not found in CRDT — name was not updated."
|
||||
));
|
||||
}
|
||||
}
|
||||
"agent" => {
|
||||
let parsed = value
|
||||
|
||||
Reference in New Issue
Block a user