fix(ts-sdk): prevent hallucinated memories on empty messages payload … (#5613)

This commit is contained in:
Md. Mamun Hossain
2026-06-18 17:01:02 +05:30
committed by GitHub
parent 466249113c
commit 4065e846f6
2 changed files with 11 additions and 7 deletions
+5
View File
@@ -253,6 +253,11 @@ export default class MemoryClient {
messages: Array<Message>,
options: AddMemoryOptions & Record<string, any> = {},
): Promise<Array<Memory>> {
// Tightly scoped validation guard to resolve #5465
if (!messages || (Array.isArray(messages) && messages.length === 0)) {
throw new Error("Cannot process an empty messages payload.");
}
if (this.telemetryId === "") await this.ping();
const payload = this._preparePayload(messages, options);
@@ -59,16 +59,15 @@ describe("MemoryClient - add()", () => {
expect(getFetchBody(call!).user_id).toBe("user_1");
});
test("sends empty messages array without crashing", async () => {
const extra = new Map<string, { status: number; body: unknown }>();
extra.set("/v3/memories/add/", { status: 200, body: [] });
const mock = setupMockFetch(extra);
test("throws an error when given an empty messages array", async () => {
setupMockFetch();
const client = new MemoryClient({ apiKey: TEST_API_KEY });
await client.add([], { userId: "u1" });
const call = findFetchCall(mock, "/v3/memories/add/", "POST");
expect(getFetchBody(call!).messages).toEqual([]);
//Asserts that the validation guard catches the empty input early
await expect(client.add([], { userId: "u1" })).rejects.toThrow(
"Cannot process an empty messages payload.",
);
});
});