Skip to content

Commit 250cfe9

Browse files
hailoryxydt-tanshanshan
authored andcommitted
fix(memory): backfill provider.model with resolved model name
When an adapter returns an empty provider.model, set it to the resolved model name from resolveProviderModel. Uses direct property assignment instead of spread to preserve prototype-defined methods on plugin provider objects (P1 finding). Prevents downstream identity mismatches and broken vector search (issue #90042). Supersedes #91660 (31 days old, merge conflicts).
1 parent 9b238a7 commit 250cfe9

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

extensions/memory-core/src/memory/embeddings.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,4 +313,23 @@ describe("createEmbeddingProvider", () => {
313313
expect(model).toBe("generic-default");
314314
expect(mockEmbeddingRegistry.genericLookupConfigs).toEqual([options.config]);
315315
});
316+
317+
it("backfills empty provider.model with resolved model name (#90042)", async () => {
318+
registerMemoryEmbeddingProvider({
319+
id: "openai",
320+
transport: "remote",
321+
defaultModel: "text-embedding-3-small",
322+
create: async () => ({
323+
provider: {
324+
id: "openai",
325+
model: "",
326+
embedQuery: async () => [1],
327+
embedBatch: async (texts) => texts.map(() => [1]),
328+
},
329+
}),
330+
});
331+
332+
const result = await createEmbeddingProvider(createOptions("openai"));
333+
expect(result.provider?.model).toBe("text-embedding-3-small");
334+
});
316335
});

extensions/memory-core/src/memory/embeddings.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ async function createWithAdapter(
242242
model: resolveProviderModel(adapter, options.model),
243243
};
244244
const result = await adapter.create(createOptions);
245+
if (result.provider && !result.provider.model) {
246+
result.provider.model = createOptions.model;
247+
}
245248
return {
246249
provider: result.provider,
247250
requestedProvider: options.provider,

0 commit comments

Comments
 (0)