@signetai/connector-base 0.206.0 → 0.206.2

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.
Files changed (2) hide show
  1. package/dist/index.js +69 -7
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -11311,6 +11311,7 @@ var DAEMON_DERIVED_MEMORY_SOURCE_TYPES = [
11311
11311
  "dreaming"
11312
11312
  ];
11313
11313
  var MEMORIES_FTS_TOKENIZER = "unicode61";
11314
+ var FTS_STATE_TABLE = "memories_fts_state";
11314
11315
  function normalizeSql(sql) {
11315
11316
  return sql.replace(/\s+/g, " ").trim().toLowerCase();
11316
11317
  }
@@ -11323,18 +11324,67 @@ function createMemoriesFts(db) {
11323
11324
  tokenize='${MEMORIES_FTS_TOKENIZER}'
11324
11325
  );
11325
11326
  `);
11327
+ ensureMemoriesFtsState(db);
11328
+ createMemoriesFtsTriggers(db);
11329
+ }
11330
+ function ensureMemoriesFtsState(db) {
11326
11331
  db.exec(`
11327
- CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
11328
- INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
11329
- END;
11332
+ CREATE TABLE IF NOT EXISTS ${FTS_STATE_TABLE} (
11333
+ id INTEGER PRIMARY KEY CHECK (id = 1),
11334
+ memory_count INTEGER NOT NULL,
11335
+ indexed_count INTEGER NOT NULL,
11336
+ updated_at TEXT NOT NULL
11337
+ );
11338
+ INSERT OR IGNORE INTO ${FTS_STATE_TABLE} (id, memory_count, indexed_count, updated_at)
11339
+ VALUES (
11340
+ 1,
11341
+ -1,
11342
+ 0,
11343
+ datetime('now')
11344
+ );
11330
11345
  `);
11346
+ }
11347
+ function createMemoriesFtsTriggers(db) {
11331
11348
  db.exec(`
11332
- CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
11349
+ DROP TRIGGER IF EXISTS memories_ai;
11350
+ DROP TRIGGER IF EXISTS memories_ad;
11351
+ DROP TRIGGER IF EXISTS memories_au;
11352
+
11353
+ CREATE TRIGGER memories_ai AFTER INSERT ON memories BEGIN
11354
+ INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
11355
+ UPDATE ${FTS_STATE_TABLE}
11356
+ SET memory_count = CASE WHEN memory_count < 0 THEN -1 ELSE memory_count + 1 END,
11357
+ indexed_count = CASE WHEN indexed_count < 0 THEN 0 ELSE indexed_count + 1 END,
11358
+ updated_at = datetime('now')
11359
+ WHERE id = 1;
11360
+ END;
11361
+
11362
+ CREATE TRIGGER memories_ad AFTER DELETE ON memories BEGIN
11363
+ UPDATE ${FTS_STATE_TABLE}
11364
+ SET memory_count = CASE WHEN memory_count < 0 THEN -1 ELSE MAX(0, memory_count - 1) END,
11365
+ indexed_count = CASE
11366
+ WHEN indexed_count < 0 THEN 0
11367
+ ELSE MAX(0, indexed_count - CASE WHEN EXISTS(
11368
+ SELECT 1 FROM memories_fts_docsize WHERE id = old.rowid
11369
+ ) THEN 1 ELSE 0 END)
11370
+ END,
11371
+ updated_at = datetime('now')
11372
+ WHERE id = 1;
11333
11373
  INSERT INTO memories_fts(memories_fts, rowid, content) VALUES('delete', old.rowid, old.content);
11334
11374
  END;
11335
- `);
11336
- db.exec(`
11337
- CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE OF content ON memories BEGIN
11375
+
11376
+ CREATE TRIGGER memories_au AFTER UPDATE OF content ON memories BEGIN
11377
+ UPDATE ${FTS_STATE_TABLE}
11378
+ SET indexed_count = CASE
11379
+ WHEN indexed_count < 0 THEN CASE WHEN EXISTS(
11380
+ SELECT 1 FROM memories_fts_docsize WHERE id = old.rowid
11381
+ ) THEN 0 ELSE 1 END
11382
+ ELSE indexed_count + CASE WHEN EXISTS(
11383
+ SELECT 1 FROM memories_fts_docsize WHERE id = old.rowid
11384
+ ) THEN 0 ELSE 1 END
11385
+ END,
11386
+ updated_at = datetime('now')
11387
+ WHERE id = 1;
11338
11388
  INSERT INTO memories_fts(memories_fts, rowid, content) VALUES('delete', old.rowid, old.content);
11339
11389
  INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
11340
11390
  END;
@@ -11345,11 +11395,23 @@ function recreateMemoriesFtsSchema(db) {
11345
11395
  db.exec("DROP TRIGGER IF EXISTS memories_ad");
11346
11396
  db.exec("DROP TRIGGER IF EXISTS memories_au");
11347
11397
  db.exec("DROP TABLE IF EXISTS memories_fts");
11398
+ db.exec(`DROP TABLE IF EXISTS ${FTS_STATE_TABLE}`);
11348
11399
  createMemoriesFts(db);
11349
11400
  }
11350
11401
  function recreateMemoriesFts(db) {
11351
11402
  recreateMemoriesFtsSchema(db);
11352
11403
  db.exec("INSERT INTO memories_fts(rowid, content) SELECT rowid, content FROM memories");
11404
+ refreshMemoriesFtsState(db);
11405
+ }
11406
+ function refreshMemoriesFtsState(db) {
11407
+ ensureMemoriesFtsState(db);
11408
+ db.exec(`
11409
+ UPDATE ${FTS_STATE_TABLE}
11410
+ SET memory_count = (SELECT COUNT(*) FROM memories),
11411
+ indexed_count = (SELECT COUNT(*) FROM memories_fts_docsize),
11412
+ updated_at = datetime('now')
11413
+ WHERE id = 1;
11414
+ `);
11353
11415
  }
11354
11416
  function readMemoriesFtsSql(db) {
11355
11417
  const row = db.prepare("SELECT sql FROM sqlite_master WHERE name = 'memories_fts' AND type = 'table'").get();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/connector-base",
3
- "version": "0.206.0",
3
+ "version": "0.206.2",
4
4
  "description": "Base class for Signet harness connectors",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -26,7 +26,7 @@
26
26
  "typecheck": "tsc --noEmit"
27
27
  },
28
28
  "dependencies": {
29
- "@signetai/core": "0.206.0",
29
+ "@signetai/core": "0.206.2",
30
30
  "json5": "^2.2.3",
31
31
  "jsonc-parser": "3.3.1"
32
32
  },