Skip to content

Commit 732d475

Browse files
committed
memory(test): fix typecheck — test stubs cast as interface at usage sites, PADState from core/config
1 parent 1472981 commit 732d475

4 files changed

Lines changed: 20 additions & 12 deletions

File tree

src/memory/retrieval/hybrid/__tests__/HybridRetriever.integration.spec.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import type { IEmbeddingManager } from '../../../../core/embeddings/IEmbeddingMa
77
import type { MemoryTrace, MemoryScope } from '../../../core/types.js';
88
import type { PADState } from '../../../core/config.js';
99

10-
class HashEmbedder implements IEmbeddingManager {
10+
// Test stubs: use structural typing + `as unknown as IEmbeddingManager` at
11+
// construction sites below. Interfaces have methods (initialize,
12+
// getEmbeddingModelInfo, checkHealth) we don't need for these tests.
13+
class HashEmbedder {
1114
async generateEmbeddings(input: { texts: string | string[] }) {
1215
const texts = Array.isArray(input.texts) ? input.texts : [input.texts];
1316
const embeddings = texts.map((t) => {
@@ -26,7 +29,7 @@ class HashEmbedder implements IEmbeddingManager {
2629
getModel() { return 'hash'; }
2730
}
2831

29-
class NoopKG implements IKnowledgeGraph {
32+
class NoopKG {
3033
async recordMemory() { return 'noop'; }
3134
async findRelatedMemories() { return []; }
3235
async findEntityRelationships() { return []; }
@@ -67,7 +70,7 @@ describe('HybridRetriever (integration)', () => {
6770
const traceVectorStore = await mkVectorStore();
6871
const memoryStore = new MemoryStore({
6972
vectorStore: traceVectorStore,
70-
embeddingManager: embedder,
73+
embeddingManager: embedder as unknown as IEmbeddingManager,
7174
knowledgeGraph: new NoopKG() as unknown as IKnowledgeGraph,
7275
collectionPrefix: 'cogmem',
7376
});
@@ -94,7 +97,7 @@ describe('HybridRetriever (integration)', () => {
9497
const embedder = new HashEmbedder();
9598
const memoryStore = new MemoryStore({
9699
vectorStore: await mkVectorStore(),
97-
embeddingManager: embedder,
100+
embeddingManager: embedder as unknown as IEmbeddingManager,
98101
knowledgeGraph: new NoopKG() as unknown as IKnowledgeGraph,
99102
collectionPrefix: 'cogmem',
100103
});

src/memory/retrieval/session/__tests__/SessionRetriever.integration.spec.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ import { MemoryStore } from '../../store/MemoryStore.js';
55
import { InMemoryVectorStore } from '../../../../rag/vector_stores/InMemoryVectorStore.js';
66
import type { IKnowledgeGraph } from '../../graph/knowledge/IKnowledgeGraph.js';
77
import type { IEmbeddingManager } from '../../../../core/embeddings/IEmbeddingManager.js';
8-
import type { MemoryTrace, PADState, MemoryScope } from '../../../core/types.js';
8+
import type { MemoryTrace, MemoryScope } from '../../../core/types.js';
9+
import type { PADState } from '../../../core/config.js';
910

10-
class HashEmbedder implements IEmbeddingManager {
11+
// Test stubs: use structural typing + `as unknown as IEmbeddingManager`
12+
// at construction sites. Interfaces have methods (initialize,
13+
// getEmbeddingModelInfo, checkHealth) we don't need for these tests.
14+
class HashEmbedder {
1115
async generateEmbeddings(input: { texts: string | string[] }) {
1216
const texts = Array.isArray(input.texts) ? input.texts : [input.texts];
1317
const embeddings = texts.map((t) => {
@@ -26,7 +30,7 @@ class HashEmbedder implements IEmbeddingManager {
2630
getModel() { return 'hash'; }
2731
}
2832

29-
class NoopKG implements IKnowledgeGraph {
33+
class NoopKG {
3034
async recordMemory() { return 'noop'; }
3135
async findRelatedMemories() { return []; }
3236
async findEntityRelationships() { return []; }
@@ -63,7 +67,7 @@ const scope = { scope: 'user' as MemoryScope, scopeId: 'u1' };
6367

6468
describe('SessionRetriever (integration)', () => {
6569
it('end-to-end: index 3 session summaries, encode chunks, retrieve returns at least one chunk', async () => {
66-
const embedder = new HashEmbedder();
70+
const embedder = new HashEmbedder() as unknown as IEmbeddingManager;
6771
const traceVectorStore = await mkVectorStore();
6872
const summaryVectorStore = await mkVectorStore();
6973
const summaryStore = new SessionSummaryStore({
@@ -114,7 +118,7 @@ describe('SessionRetriever (integration)', () => {
114118
});
115119

116120
it('cache smoke: two retrieve calls with the same query return stable results', async () => {
117-
const embedder = new HashEmbedder();
121+
const embedder = new HashEmbedder() as unknown as IEmbeddingManager;
118122
const summaryStore = new SessionSummaryStore({
119123
vectorStore: await mkVectorStore(), embeddingManager: embedder,
120124
});

src/memory/retrieval/session/__tests__/SessionRetriever.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { SessionSummaryStore } from '../SessionSummaryStore.js';
44
import type {
55
ScoredMemoryTrace,
66
CognitiveRetrievalOptions,
7-
PADState,
87
MemoryScope,
98
} from '../../../core/types.js';
9+
import type { PADState } from '../../../core/config.js';
1010

1111
class FakeSummaryStore {
1212
constructor(private sessions: Array<{ sessionId: string; similarity: number }> = []) {}

src/memory/retrieval/session/__tests__/SessionSummaryStore.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { SessionSummaryStore } from '../SessionSummaryStore.js';
33
import { InMemoryVectorStore } from '../../../../rag/vector_stores/InMemoryVectorStore.js';
44
import type { IEmbeddingManager } from '../../../../core/embeddings/IEmbeddingManager.js';
55

6-
class FakeEmbedder implements IEmbeddingManager {
6+
// Test stub: cast at usage site below via `as unknown as IEmbeddingManager`.
7+
class FakeEmbedder {
78
async generateEmbeddings(input: { texts: string | string[] }) {
89
const texts = Array.isArray(input.texts) ? input.texts : [input.texts];
910
const embeddings = texts.map((t) => {
@@ -29,7 +30,7 @@ async function mkStore(): Promise<SessionSummaryStore> {
2930
defaultEmbeddingDimension: 8,
3031
similarityMetric: 'cosine',
3132
} as import('../../../../core/vector-store/IVectorStore.js').VectorStoreProviderConfig);
32-
return new SessionSummaryStore({ vectorStore, embeddingManager: new FakeEmbedder() });
33+
return new SessionSummaryStore({ vectorStore, embeddingManager: new FakeEmbedder() as unknown as IEmbeddingManager });
3334
}
3435

3536
describe('SessionSummaryStore', () => {

0 commit comments

Comments
 (0)