feat: support manual add and edit for memory facts (#1538)

* feat: support manual add and edit for memory facts

* fix: restore memory updater save helper

* fix: address memory fact review feedback

* fix: remove duplicate memory fact edit action

* docs: simplify memory fact review setup

* docs: relax memory review startup instructions

* fix: clear rebase marker in memory settings page

* fix: address memory fact review and format issues

* fix: address memory fact review feedback

* refactor: make memory fact updates explicit patch semantics

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
This commit is contained in:
Admire
2026-03-29 23:53:23 +08:00
committed by GitHub
parent cdb2a3a017
commit fc7de7fffe
15 changed files with 977 additions and 52 deletions
+47
View File
@@ -673,6 +673,21 @@ class TestMemoryManagement:
result = client.clear_memory()
assert result == data
def test_create_memory_fact(self, client):
data = {"version": "1.0", "facts": []}
with patch("deerflow.agents.memory.updater.create_memory_fact", return_value=data) as create_fact:
result = client.create_memory_fact(
"User prefers concise code reviews.",
category="preference",
confidence=0.88,
)
create_fact.assert_called_once_with(
content="User prefers concise code reviews.",
category="preference",
confidence=0.88,
)
assert result == data
def test_delete_memory_fact(self, client):
data = {"version": "1.0", "facts": []}
with patch("deerflow.agents.memory.updater.delete_memory_fact", return_value=data) as delete_fact:
@@ -680,6 +695,38 @@ class TestMemoryManagement:
delete_fact.assert_called_once_with("fact_123")
assert result == data
def test_update_memory_fact(self, client):
data = {"version": "1.0", "facts": []}
with patch("deerflow.agents.memory.updater.update_memory_fact", return_value=data) as update_fact:
result = client.update_memory_fact(
"fact_123",
"User prefers spaces",
category="workflow",
confidence=0.91,
)
update_fact.assert_called_once_with(
fact_id="fact_123",
content="User prefers spaces",
category="workflow",
confidence=0.91,
)
assert result == data
def test_update_memory_fact_preserves_omitted_fields(self, client):
data = {"version": "1.0", "facts": []}
with patch("deerflow.agents.memory.updater.update_memory_fact", return_value=data) as update_fact:
result = client.update_memory_fact(
"fact_123",
"User prefers spaces",
)
update_fact.assert_called_once_with(
fact_id="fact_123",
content="User prefers spaces",
category=None,
confidence=None,
)
assert result == data
def test_get_memory_config(self, client):
config = MagicMock()
config.enabled = True