feat(integrations): add @mem0/eve memory provider
Give Eve agents a first-class Mem0 recall/capture provider so they can use Mem0 in the agent loop instead of MCP. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
dae67f74f5
commit
1d83bb0835
@@ -0,0 +1,32 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { createIdempotencyGate } from "../src/idempotency.js";
|
||||
|
||||
describe("createIdempotencyGate", () => {
|
||||
it("runs work once per operation id", async () => {
|
||||
const once = createIdempotencyGate();
|
||||
let calls = 0;
|
||||
const work = async () => {
|
||||
calls += 1;
|
||||
};
|
||||
|
||||
await Promise.all([once("op_1", work), once("op_1", work)]);
|
||||
await once("op_1", work);
|
||||
|
||||
expect(calls).toBe(1);
|
||||
});
|
||||
|
||||
it("retries after a failure", async () => {
|
||||
const once = createIdempotencyGate();
|
||||
let calls = 0;
|
||||
const work = async () => {
|
||||
calls += 1;
|
||||
if (calls === 1) {
|
||||
throw new Error("nope");
|
||||
}
|
||||
};
|
||||
|
||||
await expect(once("op_1", work)).rejects.toThrow("nope");
|
||||
await once("op_1", work);
|
||||
expect(calls).toBe(2);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user