Revert output tool hacks (AST scanning + silent success)
These were wrong approaches — replacing with proper closure-based output tool that writes directly to shared Subconscious state. Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
68fbcc351f
commit
d167b11283
2 changed files with 5 additions and 29 deletions
|
|
@ -165,28 +165,6 @@ impl AutoAgent {
|
||||||
.map_err(|e| format!("{}: {}", self.name, e))?;
|
.map_err(|e| format!("{}: {}", self.name, e))?;
|
||||||
|
|
||||||
if result.had_tool_calls {
|
if result.had_tool_calls {
|
||||||
// Extract output() calls from the conversation
|
|
||||||
let ctx = backend.0.context.lock().await;
|
|
||||||
for node in ctx.conversation() {
|
|
||||||
if let super::context::AstNode::Branch { children, .. } = node {
|
|
||||||
for child in children {
|
|
||||||
if let Some(leaf) = child.leaf() {
|
|
||||||
if let super::context::NodeBody::ToolCall { name, arguments } = leaf.body() {
|
|
||||||
if name == "output" {
|
|
||||||
if let Ok(args) = serde_json::from_str::<serde_json::Value>(arguments) {
|
|
||||||
let key = args["key"].as_str().unwrap_or("");
|
|
||||||
let value = args["value"].as_str().unwrap_or("");
|
|
||||||
if !key.is_empty() {
|
|
||||||
self.outputs.insert(key.to_string(), value.to_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
drop(ctx);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -245,13 +245,11 @@ fn output(args: &serde_json::Value) -> Result<String> {
|
||||||
anyhow::bail!("invalid output key: {}", key);
|
anyhow::bail!("invalid output key: {}", key);
|
||||||
}
|
}
|
||||||
let value = get_str(args, "value")?;
|
let value = get_str(args, "value")?;
|
||||||
// Write to disk if output dir is set (subprocess agents),
|
let dir = std::env::var("POC_AGENT_OUTPUT_DIR")
|
||||||
// otherwise just return success (forked agents extract from AST)
|
.map_err(|_| anyhow::anyhow!("no output directory set"))?;
|
||||||
if let Ok(dir) = std::env::var("POC_AGENT_OUTPUT_DIR") {
|
let path = std::path::Path::new(&dir).join(key);
|
||||||
let path = std::path::Path::new(&dir).join(&key);
|
std::fs::write(&path, value)
|
||||||
std::fs::write(&path, &value)
|
|
||||||
.with_context(|| format!("writing output {}", path.display()))?;
|
.with_context(|| format!("writing output {}", path.display()))?;
|
||||||
}
|
|
||||||
Ok(format!("{}: {}", key, value))
|
Ok(format!("{}: {}", key, value))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue