Files
waggle-os/packages/agent/tests/cognify-linking.test.ts
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

80 lines
2.2 KiB
TypeScript

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();
});
});