From db49f499586f7c1d2ec99af9af158c17ce2e6a7e Mon Sep 17 00:00:00 2001 From: ProofOfConcept Date: Fri, 10 Apr 2026 16:04:31 -0400 Subject: [PATCH] Improve tool parameter schemas: add defaults, readable formatting Format memory_query and journal_tail parameter JSON as indented multi-line for readability. Add JSON Schema "default" values and document the "format" parameter on memory_query. Co-Authored-By: Proof of Concept --- src/agent/tools/memory.rs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/agent/tools/memory.rs b/src/agent/tools/memory.rs index 51d38d3..5ff60f8 100644 --- a/src/agent/tools/memory.rs +++ b/src/agent/tools/memory.rs @@ -66,8 +66,16 @@ pub fn memory_tools() -> [super::Tool; 13] { Tool { name: "memory_supersede", description: "Mark a node as superseded by another (sets weight to 0.01).", parameters_json: r#"{"type":"object","properties":{"old_key":{"type":"string"},"new_key":{"type":"string"},"reason":{"type":"string"}},"required":["old_key","new_key"]}"#, handler: Arc::new(|a, v| Box::pin(async move { supersede(&a, &v).await })) }, - Tool { name: "memory_query", description: "Run a structured query against the memory graph.", - parameters_json: r#"{"type":"object","properties":{"query":{"type":"string","description":"Query expression"}},"required":["query"]}"#, + Tool { name: "memory_query", + description: "Run a structured query against the memory graph.", + parameters_json: r#"{ + "type": "object", + "properties": { + "query": {"type": "string", "description": "Query expression"}, + "format": {"type": "string", "description": "compact (default) or full (with content and graph metrics)", "default": "compact"} + }, + "required": ["query"] + }"#, handler: Arc::new(|_a, v| Box::pin(async move { query(&v).await })) }, Tool { name: "graph_topology", description: "Show graph topology stats (nodes, edges, clustering, hubs).", parameters_json: r#"{"type":"object","properties":{}}"#, @@ -81,8 +89,16 @@ pub fn memory_tools() -> [super::Tool; 13] { pub fn journal_tools() -> [super::Tool; 3] { use super::Tool; [ - Tool { name: "journal_tail", description: "Read the last N entries at a given level (0=journal, 1=daily, 2=weekly, 3=monthly).", - parameters_json: r#"{"type":"object","properties":{"count":{"type":"integer","description":"Number of entries (default 1)"},"level":{"type":"integer","description":"0=journal, 1=daily digest, 2=weekly, 3=monthly (default 0)"},"keys_only":{"type":"boolean","description":"Return only node keys, not content"}}}"#, + Tool { name: "journal_tail", + description: "Read the last N entries at a given level.", + parameters_json: r#"{ + "type": "object", + "properties": { + "count": {"type": "integer", "description": "Number of entries", "default": 1}, + "level": {"type": "integer", "description": "0=journal, 1=daily, 2=weekly, 3=monthly", "default": 0}, + "keys_only": {"type": "boolean", "description": "Return only node keys, not content", "default": false} + } + }"#, handler: Arc::new(|_a, v| Box::pin(async move { journal_tail(&v).await })) }, Tool { name: "journal_new", description: "Start a new journal entry.", parameters_json: r#"{"type":"object","properties":{"name":{"type":"string","description":"Short node name (becomes the key)"},"title":{"type":"string","description":"Descriptive title"},"body":{"type":"string","description":"Entry body"}},"required":["name","title","body"]}"#,