mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-29 06:32:28 +00:00
* refactor: migrate from KuzuDB to LadybugDB v0.15 KuzuDB was archived (Apple acquisition, Oct 2025). LadybugDB is the community fork with full API compatibility. - Package swap: kuzu → @ladybugdb/core, kuzu-wasm → @ladybugdb/wasm-core - Rename all internal paths: kuzu → lbug (adapters, schema, storage) - Storage path: .gitnexus/kuzu → .gitnexus/lbug (with auto-cleanup) - Add explicit VECTOR extension loading (required in v0.15) - Update CI workflow, documentation, and all tests - 1151 unit + 27 integration tests passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address code review findings (P1-P3) P1: Fix WASM adapter to use getAll() API, wire cleanupOldKuzuFiles into analyze command, add symlink path traversal protection. P2: Cache VECTOR extension load state, batch augmentation engine queries (20→4), fix web getCopyQuery for multi-language tables, fix stale KuzuDB references, correct brainstorm package names. P3: Complete lbug-wasm.d.ts type declarations, batch semantic search per-label, update stale BM25 comment. * chore: remove outdated KuzuDB migration brainstorming document * fix: load FTS extension in MCP pool adapter on init The read-only pool adapter never loaded the FTS extension, so all QUERY_FTS_INDEX calls failed silently. This broke search-pool and augmentation integration tests, and caused empty results in the web UI server mode. * feat: implement shared Database caching and connection reference counting * feat: enhance KuzuDB migration handling and status reporting * fix: mock cleanupOldKuzuFiles in local backend callTool tests * fix: update mock for cleanupOldKuzuFiles and adjust imports in callTool tests --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
/**
|
|
* Vitest globalSetup — runs once in the MAIN process before any forks.
|
|
*
|
|
* Creates a single shared LadybugDB with full schema so that forked test
|
|
* files only need to clear + reseed data instead of recreating the
|
|
* entire schema each time (~29 DDL queries per file eliminated).
|
|
*
|
|
* The dbPath is shared with test files via vitest's provide/inject API.
|
|
*/
|
|
import path from 'path';
|
|
import lbug from '@ladybugdb/core';
|
|
import type { GlobalSetupContext } from 'vitest/node';
|
|
import { createTempDir } from './helpers/test-db.js';
|
|
import {
|
|
NODE_SCHEMA_QUERIES,
|
|
REL_SCHEMA_QUERIES,
|
|
EMBEDDING_SCHEMA,
|
|
} from '../src/core/lbug/schema.js';
|
|
|
|
export default async function setup({ provide }: GlobalSetupContext) {
|
|
const tmpHandle = await createTempDir('gitnexus-shared-');
|
|
const dbPath = path.join(tmpHandle.dbPath, 'lbug');
|
|
|
|
// Create DB with full schema
|
|
const db = new lbug.Database(dbPath);
|
|
const conn = new lbug.Connection(db);
|
|
|
|
for (const q of NODE_SCHEMA_QUERIES) {
|
|
await conn.query(q);
|
|
}
|
|
for (const q of REL_SCHEMA_QUERIES) {
|
|
await conn.query(q);
|
|
}
|
|
await conn.query(EMBEDDING_SCHEMA);
|
|
|
|
// Pre-install FTS extension so forks don't need to download it
|
|
try {
|
|
await conn.query('INSTALL fts');
|
|
await conn.query('LOAD EXTENSION fts');
|
|
} catch {
|
|
// FTS may already be installed system-wide — not fatal
|
|
}
|
|
|
|
// Close native handles explicitly on Windows (file locks require it).
|
|
// On Linux/macOS, skip close — the N-API destructor hooks can segfault
|
|
// or deadlock. The teardown function removes the temp directory, and
|
|
// process exit reclaims all native resources.
|
|
if (process.platform === 'win32') {
|
|
conn.close();
|
|
db.close();
|
|
}
|
|
|
|
// Share the dbPath with all test files via inject('lbugDbPath')
|
|
provide('lbugDbPath', dbPath);
|
|
|
|
// Teardown: remove temp directory after all tests complete
|
|
return async () => {
|
|
await tmpHandle.cleanup();
|
|
};
|
|
}
|