@zabaca/lattice 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +45 -26
- package/package.json +2 -2
package/dist/main.js
CHANGED
|
@@ -873,8 +873,7 @@ class GraphService {
|
|
|
873
873
|
const allResults = [];
|
|
874
874
|
const conn = await this.ensureConnected();
|
|
875
875
|
const vectorStr = `[${queryVector.join(", ")}]`;
|
|
876
|
-
|
|
877
|
-
const reader = await conn.runAndReadAll(`
|
|
876
|
+
const sql = `
|
|
878
877
|
SELECT
|
|
879
878
|
name,
|
|
880
879
|
label,
|
|
@@ -883,10 +882,11 @@ class GraphService {
|
|
|
883
882
|
array_cosine_similarity(embedding, ${vectorStr}::FLOAT[${this.embeddingDimensions}]) as similarity
|
|
884
883
|
FROM nodes
|
|
885
884
|
WHERE embedding IS NOT NULL
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
885
|
+
`;
|
|
886
|
+
try {
|
|
887
|
+
const reader = await conn.runAndReadAll(sql);
|
|
888
|
+
const rows = reader.getRows();
|
|
889
|
+
for (const row of rows) {
|
|
890
890
|
const [name, label, title, description, similarity] = row;
|
|
891
891
|
allResults.push({
|
|
892
892
|
name,
|
|
@@ -1289,13 +1289,18 @@ class VoyageEmbeddingProvider {
|
|
|
1289
1289
|
class EmbeddingService {
|
|
1290
1290
|
configService;
|
|
1291
1291
|
logger = new Logger3(EmbeddingService.name);
|
|
1292
|
-
provider;
|
|
1292
|
+
provider = null;
|
|
1293
1293
|
config;
|
|
1294
1294
|
constructor(configService) {
|
|
1295
1295
|
this.configService = configService;
|
|
1296
1296
|
this.config = this.loadConfig();
|
|
1297
|
-
|
|
1298
|
-
|
|
1297
|
+
}
|
|
1298
|
+
getProvider() {
|
|
1299
|
+
if (!this.provider) {
|
|
1300
|
+
this.provider = this.createProvider();
|
|
1301
|
+
this.logger.log(`Initialized embedding provider: ${this.provider.name}`);
|
|
1302
|
+
}
|
|
1303
|
+
return this.provider;
|
|
1299
1304
|
}
|
|
1300
1305
|
loadConfig() {
|
|
1301
1306
|
const providerEnv = this.configService.get("EMBEDDING_PROVIDER");
|
|
@@ -1342,35 +1347,36 @@ class EmbeddingService {
|
|
|
1342
1347
|
}
|
|
1343
1348
|
}
|
|
1344
1349
|
getProviderName() {
|
|
1345
|
-
return this.
|
|
1350
|
+
return this.getProvider().name;
|
|
1346
1351
|
}
|
|
1347
1352
|
getDimensions() {
|
|
1348
|
-
return this.
|
|
1353
|
+
return this.getProvider().dimensions;
|
|
1349
1354
|
}
|
|
1350
1355
|
async generateEmbedding(text) {
|
|
1351
1356
|
if (!text || text.trim().length === 0) {
|
|
1352
1357
|
throw new Error("Cannot generate embedding for empty text");
|
|
1353
1358
|
}
|
|
1354
|
-
return this.
|
|
1359
|
+
return this.getProvider().generateEmbedding(text);
|
|
1355
1360
|
}
|
|
1356
1361
|
async generateQueryEmbedding(text) {
|
|
1357
1362
|
if (!text || text.trim().length === 0) {
|
|
1358
1363
|
throw new Error("Cannot generate embedding for empty text");
|
|
1359
1364
|
}
|
|
1360
|
-
|
|
1361
|
-
|
|
1365
|
+
const provider = this.getProvider();
|
|
1366
|
+
if (provider.generateQueryEmbedding) {
|
|
1367
|
+
return provider.generateQueryEmbedding(text);
|
|
1362
1368
|
}
|
|
1363
|
-
return
|
|
1369
|
+
return provider.generateEmbedding(text);
|
|
1364
1370
|
}
|
|
1365
1371
|
async generateEmbeddings(texts) {
|
|
1366
1372
|
const validTexts = texts.filter((t) => t && t.trim().length > 0);
|
|
1367
1373
|
if (validTexts.length === 0) {
|
|
1368
1374
|
return [];
|
|
1369
1375
|
}
|
|
1370
|
-
return this.
|
|
1376
|
+
return this.getProvider().generateEmbeddings(validTexts);
|
|
1371
1377
|
}
|
|
1372
1378
|
isRealProvider() {
|
|
1373
|
-
return this.
|
|
1379
|
+
return this.getProvider().name !== "mock";
|
|
1374
1380
|
}
|
|
1375
1381
|
}
|
|
1376
1382
|
EmbeddingService = __legacyDecorateClassTS([
|
|
@@ -3367,26 +3373,36 @@ GraphValidatorService = __legacyDecorateClassTS([
|
|
|
3367
3373
|
// src/commands/sync.command.ts
|
|
3368
3374
|
class SyncCommand extends CommandRunner7 {
|
|
3369
3375
|
syncService;
|
|
3376
|
+
graphService;
|
|
3370
3377
|
_graphValidator;
|
|
3371
3378
|
watcher = null;
|
|
3372
3379
|
isShuttingDown = false;
|
|
3373
|
-
constructor(syncService, _graphValidator) {
|
|
3380
|
+
constructor(syncService, graphService, _graphValidator) {
|
|
3374
3381
|
super();
|
|
3375
3382
|
this.syncService = syncService;
|
|
3383
|
+
this.graphService = graphService;
|
|
3376
3384
|
this._graphValidator = _graphValidator;
|
|
3377
3385
|
}
|
|
3386
|
+
async safeExit(code) {
|
|
3387
|
+
try {
|
|
3388
|
+
await this.graphService.checkpoint();
|
|
3389
|
+
} catch (error) {
|
|
3390
|
+
console.error("Warning: checkpoint failed during exit");
|
|
3391
|
+
}
|
|
3392
|
+
process.exit(code);
|
|
3393
|
+
}
|
|
3378
3394
|
async run(paths, options) {
|
|
3379
3395
|
if (options.watch && options.dryRun) {
|
|
3380
3396
|
console.log(`
|
|
3381
3397
|
\u26A0\uFE0F Watch mode is not compatible with --dry-run mode
|
|
3382
3398
|
`);
|
|
3383
|
-
|
|
3399
|
+
await this.safeExit(1);
|
|
3384
3400
|
}
|
|
3385
3401
|
if (options.watch && options.force) {
|
|
3386
3402
|
console.log(`
|
|
3387
3403
|
\u26A0\uFE0F Watch mode is not compatible with --force mode (for safety)
|
|
3388
3404
|
`);
|
|
3389
|
-
|
|
3405
|
+
await this.safeExit(1);
|
|
3390
3406
|
}
|
|
3391
3407
|
if (options.force && paths.length === 0) {
|
|
3392
3408
|
console.log(`
|
|
@@ -3394,7 +3410,7 @@ class SyncCommand extends CommandRunner7 {
|
|
|
3394
3410
|
`);
|
|
3395
3411
|
console.log(` Usage: lattice sync --force <path1> [path2] ...
|
|
3396
3412
|
`);
|
|
3397
|
-
|
|
3413
|
+
await this.safeExit(1);
|
|
3398
3414
|
}
|
|
3399
3415
|
const syncOptions = {
|
|
3400
3416
|
force: options.force,
|
|
@@ -3441,12 +3457,12 @@ class SyncCommand extends CommandRunner7 {
|
|
|
3441
3457
|
if (options.watch) {
|
|
3442
3458
|
await this.enterWatchMode(syncOptions);
|
|
3443
3459
|
} else {
|
|
3444
|
-
|
|
3460
|
+
await this.safeExit(initialResult.errors.length > 0 ? 1 : 0);
|
|
3445
3461
|
}
|
|
3446
3462
|
} catch (error) {
|
|
3447
3463
|
console.error(`
|
|
3448
3464
|
\u274C Sync failed:`, error instanceof Error ? error.message : String(error));
|
|
3449
|
-
|
|
3465
|
+
await this.safeExit(1);
|
|
3450
3466
|
}
|
|
3451
3467
|
}
|
|
3452
3468
|
async enterWatchMode(syncOptions) {
|
|
@@ -3503,10 +3519,12 @@ class SyncCommand extends CommandRunner7 {
|
|
|
3503
3519
|
debouncedSync();
|
|
3504
3520
|
}
|
|
3505
3521
|
});
|
|
3506
|
-
process.on("SIGINT", () =>
|
|
3522
|
+
process.on("SIGINT", () => {
|
|
3523
|
+
this.shutdown().catch(console.error);
|
|
3524
|
+
});
|
|
3507
3525
|
await new Promise(() => {});
|
|
3508
3526
|
}
|
|
3509
|
-
shutdown() {
|
|
3527
|
+
async shutdown() {
|
|
3510
3528
|
if (this.isShuttingDown)
|
|
3511
3529
|
return;
|
|
3512
3530
|
this.isShuttingDown = true;
|
|
@@ -3516,7 +3534,7 @@ class SyncCommand extends CommandRunner7 {
|
|
|
3516
3534
|
if (this.watcher) {
|
|
3517
3535
|
this.watcher.close();
|
|
3518
3536
|
}
|
|
3519
|
-
|
|
3537
|
+
await this.safeExit(0);
|
|
3520
3538
|
}
|
|
3521
3539
|
printSyncResults(result, isWatchMode = false) {
|
|
3522
3540
|
console.log(`
|
|
@@ -3706,6 +3724,7 @@ SyncCommand = __legacyDecorateClassTS([
|
|
|
3706
3724
|
}),
|
|
3707
3725
|
__legacyMetadataTS("design:paramtypes", [
|
|
3708
3726
|
typeof SyncService === "undefined" ? Object : SyncService,
|
|
3727
|
+
typeof GraphService === "undefined" ? Object : GraphService,
|
|
3709
3728
|
typeof GraphValidatorService === "undefined" ? Object : GraphValidatorService
|
|
3710
3729
|
])
|
|
3711
3730
|
], SyncCommand);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zabaca/lattice",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"description": "Human-initiated, AI-powered knowledge graph for markdown documentation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@anthropic-ai/claude-agent-sdk": "^0.1.67",
|
|
47
|
-
"@duckdb/node-api": "1.3.1
|
|
47
|
+
"@duckdb/node-api": "1.4.3-r.1",
|
|
48
48
|
"@nestjs/common": "^10.0.0",
|
|
49
49
|
"@nestjs/config": "^3.0.0",
|
|
50
50
|
"@nestjs/core": "^10.0.0",
|