forked from kent/consciousness
cli: convert write/delete/journal-write to use memory_rpc
- cmd_write → memory_write RPC - cmd_node_delete → new memory_delete MCP tool + RPC - cmd_journal_write → journal_new RPC Removes validate_inline_refs and find_current_transcript (now handled server-side or not needed). Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
7842b6fc8b
commit
366b17163d
3 changed files with 37 additions and 121 deletions
|
|
@ -115,6 +115,7 @@ async fn dispatch(
|
|||
"memory_links" => links(&args).await,
|
||||
"memory_link_set" => link_set(&args).await,
|
||||
"memory_link_add" => link_add(agent, &args).await,
|
||||
"memory_delete" => delete(&args).await,
|
||||
"memory_weight_set" => weight_set(&args).await,
|
||||
"memory_rename" => rename(&args).await,
|
||||
"memory_supersede" => supersede(agent, &args).await,
|
||||
|
|
@ -130,7 +131,7 @@ async fn dispatch(
|
|||
|
||||
// ── Definitions ────────────────────────────────────────────────
|
||||
|
||||
pub fn memory_tools() -> [super::Tool; 12] {
|
||||
pub fn memory_tools() -> [super::Tool; 13] {
|
||||
use super::Tool;
|
||||
[
|
||||
Tool { name: "memory_render", description: "Read a memory node's content and links.",
|
||||
|
|
@ -151,6 +152,9 @@ pub fn memory_tools() -> [super::Tool; 12] {
|
|||
Tool { name: "memory_link_add", description: "Add a new link between two nodes.",
|
||||
parameters_json: r#"{"type":"object","properties":{"source":{"type":"string"},"target":{"type":"string"}},"required":["source","target"]}"#,
|
||||
handler: Arc::new(|a, v| Box::pin(async move { dispatch("memory_link_add", &a, v).await })) },
|
||||
Tool { name: "memory_delete", description: "Delete a memory node.",
|
||||
parameters_json: r#"{"type":"object","properties":{"key":{"type":"string","description":"Node key"}},"required":["key"]}"#,
|
||||
handler: Arc::new(|a, v| Box::pin(async move { dispatch("memory_delete", &a, v).await })) },
|
||||
Tool { name: "memory_weight_set", description: "Set a node's weight directly (0.01 to 1.0).",
|
||||
parameters_json: r#"{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","description":"0.01 to 1.0"}},"required":["key","weight"]}"#,
|
||||
handler: Arc::new(|a, v| Box::pin(async move { dispatch("memory_weight_set", &a, v).await })) },
|
||||
|
|
@ -311,6 +315,16 @@ async fn link_add(agent: &Option<std::sync::Arc<crate::agent::Agent>>, args: &se
|
|||
Ok(format!("linked {} → {} (strength={:.2})", s, t, strength))
|
||||
}
|
||||
|
||||
async fn delete(args: &serde_json::Value) -> Result<String> {
|
||||
let key = get_str(args, "key")?;
|
||||
let arc = cached_store().await?;
|
||||
let mut store = arc.lock().await;
|
||||
let resolved = store.resolve_key(key).map_err(|e| anyhow::anyhow!("{}", e))?;
|
||||
store.delete_node(&resolved).map_err(|e| anyhow::anyhow!("{}", e))?;
|
||||
store.save().map_err(|e| anyhow::anyhow!("{}", e))?;
|
||||
Ok(format!("deleted {}", resolved))
|
||||
}
|
||||
|
||||
async fn weight_set(args: &serde_json::Value) -> Result<String> {
|
||||
let arc = cached_store().await?;
|
||||
let mut store = arc.lock().await;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue