fix(memory): prevent autosave key collisions across runtime flows
Fixes #221 - SQLite Memory Override bug. This PR resolves memory overwrite behavior in autosave paths by replacing fixed memory keys with unique keys, and improves short-horizon recall quality in channel runtime. **Root Cause** SQLite memory uses a unique constraint on `memories.key` and writes with `ON CONFLICT(key) DO UPDATE`. Several autosave paths reused fixed keys (or sender-stable keys), so newer messages overwrote earlier conversation entries. **Changes** - Channel runtime: autosave key changed from `channel_sender` to `channel_sender_messageId` - Added memory-context injection before provider calls (aligned with agent loop behavior) - Agent loop: autosave keys changed from fixed `user_msg`/`assistant_resp` to UUID-suffixed keys - Gateway: Webhook/WhatsApp autosave keys changed to UUID-suffixed keys All CI checks passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
7b9ba5be6c
commit
b442a07530
11 changed files with 381 additions and 61 deletions
|
|
@ -72,7 +72,9 @@ fn whatsapp_signature_rejects_tampered_body() {
|
|||
|
||||
// Tampered body should be rejected even with valid-looking signature
|
||||
assert!(!zeroclaw::gateway::verify_whatsapp_signature(
|
||||
secret, tampered_body, &sig
|
||||
secret,
|
||||
tampered_body,
|
||||
&sig
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -87,7 +89,9 @@ fn whatsapp_signature_rejects_wrong_secret() {
|
|||
|
||||
// Wrong secret should reject the signature
|
||||
assert!(!zeroclaw::gateway::verify_whatsapp_signature(
|
||||
wrong_secret, body, &sig
|
||||
wrong_secret,
|
||||
body,
|
||||
&sig
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue