mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix(honcho): strip whitespace from conclusion and delete_id inputs
Models may send whitespace-only strings like {"conclusion": " "} which
pass bool() but create meaningless conclusions. Strip both inputs so
whitespace-only values are treated as empty.
Adds tests for whitespace-only conclusion and delete_id.
Reviewed-by: @erosika
This commit is contained in:
parent
4377d7da0d
commit
fe3e68f572
2 changed files with 26 additions and 2 deletions
|
|
@ -1008,8 +1008,8 @@ class HonchoMemoryProvider(MemoryProvider):
|
||||||
return json.dumps({"result": "\n\n".join(parts) or "No context available."})
|
return json.dumps({"result": "\n\n".join(parts) or "No context available."})
|
||||||
|
|
||||||
elif tool_name == "honcho_conclude":
|
elif tool_name == "honcho_conclude":
|
||||||
delete_id = args.get("delete_id")
|
delete_id = (args.get("delete_id") or "").strip()
|
||||||
conclusion = args.get("conclusion", "")
|
conclusion = args.get("conclusion", "").strip()
|
||||||
peer = args.get("peer", "user")
|
peer = args.get("peer", "user")
|
||||||
|
|
||||||
has_delete_id = bool(delete_id)
|
has_delete_id = bool(delete_id)
|
||||||
|
|
|
||||||
|
|
@ -501,6 +501,30 @@ class TestConcludeToolDispatch:
|
||||||
provider._manager.create_conclusion.assert_not_called()
|
provider._manager.create_conclusion.assert_not_called()
|
||||||
provider._manager.delete_conclusion.assert_not_called()
|
provider._manager.delete_conclusion.assert_not_called()
|
||||||
|
|
||||||
|
def test_honcho_conclude_rejects_whitespace_only_conclusion(self):
|
||||||
|
"""Whitespace-only conclusion should be treated as empty."""
|
||||||
|
import json
|
||||||
|
provider = HonchoMemoryProvider()
|
||||||
|
provider._session_initialized = True
|
||||||
|
provider._session_key = "telegram:123"
|
||||||
|
provider._manager = MagicMock()
|
||||||
|
result = provider.handle_tool_call("honcho_conclude", {"conclusion": " "})
|
||||||
|
parsed = json.loads(result)
|
||||||
|
assert parsed == {"error": "Exactly one of conclusion or delete_id must be provided."}
|
||||||
|
provider._manager.create_conclusion.assert_not_called()
|
||||||
|
|
||||||
|
def test_honcho_conclude_rejects_whitespace_only_delete_id(self):
|
||||||
|
"""Whitespace-only delete_id should be treated as empty."""
|
||||||
|
import json
|
||||||
|
provider = HonchoMemoryProvider()
|
||||||
|
provider._session_initialized = True
|
||||||
|
provider._session_key = "telegram:123"
|
||||||
|
provider._manager = MagicMock()
|
||||||
|
result = provider.handle_tool_call("honcho_conclude", {"delete_id": " "})
|
||||||
|
parsed = json.loads(result)
|
||||||
|
assert parsed == {"error": "Exactly one of conclusion or delete_id must be provided."}
|
||||||
|
provider._manager.delete_conclusion.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Message chunking
|
# Message chunking
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue