import sqlite3

conn = sqlite3.connect(":memory:")
conn.execute("CREATE TABLE memory (tenant TEXT, agent TEXT, value TEXT, "
             "source TEXT, version INT, PRIMARY KEY(tenant, agent))")
conn.execute("INSERT INTO memory VALUES ('t1','a1','简短回复','用户明确设置',1)")
conn.commit()


def update(tenant, agent, expected, value, source):
    with conn:
        changed = conn.execute(
            "UPDATE memory SET value=?,source=?,version=version+1 "
            "WHERE tenant=? AND agent=? AND version=?",
            (value, source, tenant, agent, expected),
        ).rowcount
    return changed == 1


assert update("t1", "a1", 1, "中文简短回复", "用户消息 m17")
assert not update("t1", "a1", 1, "英文回复", "过期推断")
assert not update("t2", "a1", 2, "覆盖内容", "另一租户")
row = conn.execute("SELECT value,source,version FROM memory").fetchone()
assert row == ("中文简短回复", "用户消息 m17", 2)
conn.close()
print("记忆保留来源，过期更新与跨租户键更新均未生效")
