This commit is contained in:
79
packages/agent/tests/cognify-linking.test.ts
Normal file
79
packages/agent/tests/cognify-linking.test.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
||||
import {
|
||||
MindDB,
|
||||
FrameStore,
|
||||
SessionStore,
|
||||
KnowledgeGraph,
|
||||
HybridSearch,
|
||||
} from '@waggle/core';
|
||||
import { MockEmbedder } from '../../hive-mind-core/tests/mind/helpers/mock-embedder.js';
|
||||
import { CognifyPipeline } from '../src/cognify.js';
|
||||
|
||||
describe('CognifyPipeline with linking', () => {
|
||||
let db: MindDB;
|
||||
let frames: FrameStore;
|
||||
let sessions: SessionStore;
|
||||
let knowledge: KnowledgeGraph;
|
||||
let search: HybridSearch;
|
||||
|
||||
beforeEach(() => {
|
||||
db = new MindDB(':memory:');
|
||||
const embedder = new MockEmbedder();
|
||||
frames = new FrameStore(db);
|
||||
sessions = new SessionStore(db);
|
||||
knowledge = new KnowledgeGraph(db);
|
||||
search = new HybridSearch(db, embedder);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
db.close();
|
||||
});
|
||||
|
||||
it('returns relatedFrames when enableLinking is true', async () => {
|
||||
// First, index an existing frame so there's something to link to
|
||||
const pipeline1 = new CognifyPipeline({
|
||||
frames,
|
||||
sessions,
|
||||
knowledge,
|
||||
search,
|
||||
});
|
||||
await pipeline1.cognify('PostgreSQL database migration strategies and best practices');
|
||||
|
||||
// Now create a pipeline with linking enabled
|
||||
const pipeline2 = new CognifyPipeline({
|
||||
frames,
|
||||
sessions,
|
||||
knowledge,
|
||||
search,
|
||||
enableLinking: true,
|
||||
});
|
||||
|
||||
const result = await pipeline2.cognify(
|
||||
'Working on the PostgreSQL database migration for the backend service'
|
||||
);
|
||||
|
||||
expect(result.frameId).toBeGreaterThan(0);
|
||||
expect(result.relatedFrames).toBeDefined();
|
||||
expect(Array.isArray(result.relatedFrames)).toBe(true);
|
||||
|
||||
// Should find the previously indexed frame as related
|
||||
if (result.relatedFrames && result.relatedFrames.length > 0) {
|
||||
expect(result.relatedFrames[0]).toHaveProperty('frameId');
|
||||
expect(result.relatedFrames[0]).toHaveProperty('content');
|
||||
expect(result.relatedFrames[0]).toHaveProperty('score');
|
||||
}
|
||||
});
|
||||
|
||||
it('does not return relatedFrames when enableLinking is false', async () => {
|
||||
const pipeline = new CognifyPipeline({
|
||||
frames,
|
||||
sessions,
|
||||
knowledge,
|
||||
search,
|
||||
});
|
||||
|
||||
const result = await pipeline.cognify('Some content about TypeScript');
|
||||
|
||||
expect(result.relatedFrames).toBeUndefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user