forked from kent/consciousness
cli: convert cmd_edit to use memory_rpc
Add raw parameter to memory_render for getting content without links footer. cmd_edit now uses memory_render(raw=true) to read and memory_write to save. Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
366b17163d
commit
4b4271f618
2 changed files with 20 additions and 20 deletions
|
|
@ -228,11 +228,16 @@ pub fn journal_tools() -> [super::Tool; 3] {
|
|||
|
||||
async fn render(args: &serde_json::Value) -> Result<String> {
|
||||
let key = get_str(args, "key")?;
|
||||
let raw = args.get("raw").and_then(|v| v.as_bool()).unwrap_or(false);
|
||||
let arc = cached_store().await?;
|
||||
let store = arc.lock().await;
|
||||
Ok(MemoryNode::from_store(&store, key)
|
||||
.ok_or_else(|| anyhow::anyhow!("node not found: {}", key))?
|
||||
.render())
|
||||
let node = MemoryNode::from_store(&store, key)
|
||||
.ok_or_else(|| anyhow::anyhow!("node not found: {}", key))?;
|
||||
if raw {
|
||||
Ok(node.content)
|
||||
} else {
|
||||
Ok(node.render())
|
||||
}
|
||||
}
|
||||
|
||||
async fn write(agent: &Option<std::sync::Arc<crate::agent::Agent>>, args: &serde_json::Value) -> Result<String> {
|
||||
|
|
|
|||
|
|
@ -225,13 +225,13 @@ pub fn cmd_edit(key: &[String]) -> Result<(), String> {
|
|||
if key.is_empty() {
|
||||
return Err("edit requires a key".into());
|
||||
}
|
||||
let raw_key = key.join(" ");
|
||||
let store = store::Store::load()?;
|
||||
let key = store.resolve_key(&raw_key).unwrap_or(raw_key.clone());
|
||||
let key = key.join(" ");
|
||||
|
||||
let content = store.nodes.get(&key)
|
||||
.map(|n| n.content.clone())
|
||||
.unwrap_or_default();
|
||||
// Get raw content via RPC
|
||||
let content = crate::mcp_server::memory_rpc(
|
||||
"memory_render",
|
||||
serde_json::json!({"key": key, "raw": true}),
|
||||
).unwrap_or_default();
|
||||
|
||||
let tmp = std::env::temp_dir().join(format!("poc-memory-edit-{}.md", key.replace('/', "_")));
|
||||
std::fs::write(&tmp, &content)
|
||||
|
|
@ -261,17 +261,12 @@ pub fn cmd_edit(key: &[String]) -> Result<(), String> {
|
|||
return Err("Content is empty, aborting".into());
|
||||
}
|
||||
|
||||
drop(store);
|
||||
let mut store = store::Store::load()?;
|
||||
let result = store.upsert(&key, &new_content)?;
|
||||
match result {
|
||||
"unchanged" => println!("No change: '{}'", key),
|
||||
"updated" => println!("Updated '{}' (v{})", key, store.nodes[&key].version),
|
||||
_ => println!("Created '{}'", key),
|
||||
}
|
||||
if result != "unchanged" {
|
||||
store.save()?;
|
||||
}
|
||||
super::check_dry_run();
|
||||
let result = crate::mcp_server::memory_rpc(
|
||||
"memory_write",
|
||||
serde_json::json!({"key": key, "content": new_content}),
|
||||
).map_err(|e| e.to_string())?;
|
||||
println!("{}", result);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue