Add Memory Gateway agent plugin
This commit is contained in:
70
plugins/memory-gateway-agent/tests/test_lifecycle.py
Normal file
70
plugins/memory-gateway-agent/tests/test_lifecycle.py
Normal file
@ -0,0 +1,70 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from memory_gateway_plugin import register
|
||||
from memory_gateway_plugin.config import PluginConfig
|
||||
from memory_gateway_plugin.lifecycle import after_user_message, on_conversation_start, on_session_end
|
||||
|
||||
|
||||
class FakeClient:
|
||||
def search_memory(self, payload):
|
||||
return {
|
||||
"ok": True,
|
||||
"data": {
|
||||
"results": [
|
||||
{
|
||||
"memory": {
|
||||
"id": "mem_1",
|
||||
"namespace": "user/u/long_term",
|
||||
"summary": "用户偏好中文输出。",
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
def append_episode(self, payload):
|
||||
return {"ok": True, "data": payload}
|
||||
|
||||
def commit_session(self, session_id, payload):
|
||||
return {"ok": True, "data": {"session_id": session_id}}
|
||||
|
||||
|
||||
def test_lifecycle_hooks_do_not_crash_when_ctx_missing_features():
|
||||
result = register(object())
|
||||
|
||||
assert result["ok"] is True
|
||||
assert result["mode"] == "manual"
|
||||
|
||||
|
||||
def test_lifecycle_search_returns_compact_context():
|
||||
result = on_conversation_start(
|
||||
{"user_id": "u", "agent_id": "a", "session_id": "s", "user_message": "之前偏好是什么?"},
|
||||
client=FakeClient(),
|
||||
config=PluginConfig(auto_search=True),
|
||||
)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert "用户偏好中文输出" in result["memory_context"]
|
||||
|
||||
|
||||
def test_lifecycle_append_policy_accepts_stable_preference():
|
||||
result = after_user_message(
|
||||
{"user_id": "u", "agent_id": "a", "session_id": "s", "user_message": "请记住:我偏好中文。"},
|
||||
client=FakeClient(),
|
||||
config=PluginConfig(auto_append_episode=True),
|
||||
)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert result["appended"] is True
|
||||
|
||||
|
||||
def test_lifecycle_session_end_auto_commit_disabled():
|
||||
result = on_session_end(
|
||||
{"user_id": "u", "agent_id": "a", "session_id": "s"},
|
||||
client=FakeClient(),
|
||||
config=PluginConfig(auto_commit_session=False),
|
||||
)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert result["committed"] is False
|
||||
|
||||
Reference in New Issue
Block a user