@signetai/signet-memory-openclaw 0.206.8 → 0.207.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 +270 -10
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15878,6 +15878,92 @@ function up132(db) {
15878
15878
  ON epistemic_assertions(agent_id, subject_entity_id, status, asserted_at DESC, created_at DESC);
15879
15879
  `);
15880
15880
  }
15881
+ function up133(db) {
15882
+ db.exec(`
15883
+ CREATE TABLE IF NOT EXISTS memory_head_revisions (
15884
+ id TEXT PRIMARY KEY,
15885
+ agent_id TEXT NOT NULL,
15886
+ revision INTEGER NOT NULL,
15887
+ content TEXT NOT NULL,
15888
+ content_hash TEXT NOT NULL,
15889
+ rendered_token_count INTEGER NOT NULL,
15890
+ pass_id TEXT NOT NULL,
15891
+ base_revision INTEGER NOT NULL,
15892
+ base_hash TEXT NOT NULL,
15893
+ created_at TEXT NOT NULL,
15894
+ UNIQUE(agent_id, revision)
15895
+ );
15896
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revisions_agent
15897
+ ON memory_head_revisions(agent_id, revision DESC);
15898
+ CREATE TABLE IF NOT EXISTS memory_head_entries (
15899
+ entry_id TEXT PRIMARY KEY,
15900
+ agent_id TEXT NOT NULL,
15901
+ canonical_text TEXT NOT NULL,
15902
+ entry_hash TEXT NOT NULL,
15903
+ status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
15904
+ first_revision INTEGER NOT NULL,
15905
+ last_revision INTEGER NOT NULL,
15906
+ created_at TEXT NOT NULL,
15907
+ updated_at TEXT NOT NULL
15908
+ );
15909
+ CREATE INDEX IF NOT EXISTS idx_memory_head_entries_agent
15910
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
15911
+ CREATE TABLE IF NOT EXISTS memory_head_revision_entries (
15912
+ agent_id TEXT NOT NULL,
15913
+ revision INTEGER NOT NULL,
15914
+ entry_id TEXT NOT NULL,
15915
+ ordinal INTEGER NOT NULL,
15916
+ operation TEXT NOT NULL CHECK(operation IN ('add','update','remove','retain')),
15917
+ provenance_json TEXT NOT NULL,
15918
+ PRIMARY KEY(agent_id, revision, entry_id),
15919
+ UNIQUE(agent_id, revision, ordinal)
15920
+ );
15921
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revision_entries_entry
15922
+ ON memory_head_revision_entries(agent_id, entry_id, revision DESC);
15923
+ `);
15924
+ const columns = db.prepare("PRAGMA table_info(memory_md_heads)").all();
15925
+ const names = new Set(columns.map((column) => String(column.name)));
15926
+ if (!names.has("revision_id"))
15927
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN revision_id TEXT");
15928
+ if (!names.has("pass_id"))
15929
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN pass_id TEXT");
15930
+ if (!names.has("format_version"))
15931
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN format_version INTEGER NOT NULL DEFAULT 1");
15932
+ }
15933
+ function up134(db) {
15934
+ db.exec(`
15935
+ CREATE TABLE memory_head_entries_v134 (
15936
+ entry_id TEXT NOT NULL, agent_id TEXT NOT NULL, canonical_text TEXT NOT NULL,
15937
+ entry_hash TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
15938
+ first_revision INTEGER NOT NULL, last_revision INTEGER NOT NULL,
15939
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
15940
+ PRIMARY KEY(agent_id, entry_id)
15941
+ );
15942
+ INSERT INTO memory_head_entries_v134
15943
+ SELECT entry_id, agent_id, canonical_text, entry_hash, status, first_revision, last_revision, created_at, updated_at
15944
+ FROM memory_head_entries;
15945
+ DROP TABLE memory_head_entries;
15946
+ ALTER TABLE memory_head_entries_v134 RENAME TO memory_head_entries;
15947
+ CREATE INDEX idx_memory_head_entries_agent
15948
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
15949
+ `);
15950
+ }
15951
+ function up135(db) {
15952
+ db.exec(`
15953
+ CREATE TABLE IF NOT EXISTS memory_head_publications (
15954
+ agent_id TEXT NOT NULL,
15955
+ revision INTEGER NOT NULL,
15956
+ revision_id TEXT NOT NULL,
15957
+ status TEXT NOT NULL CHECK(status IN ('pending', 'completed')),
15958
+ created_at TEXT NOT NULL,
15959
+ completed_at TEXT,
15960
+ PRIMARY KEY(agent_id, revision),
15961
+ UNIQUE(agent_id, revision_id)
15962
+ );
15963
+ CREATE INDEX IF NOT EXISTS idx_memory_head_publications_pending
15964
+ ON memory_head_publications(agent_id, status, revision DESC);
15965
+ `);
15966
+ }
15881
15967
  var MIGRATIONS = [
15882
15968
  {
15883
15969
  version: 1,
@@ -16932,6 +17018,24 @@ var MIGRATIONS = [
16932
17018
  name: "observer-scoped-epistemic-assertions",
16933
17019
  up: up132,
16934
17020
  artifacts: { tables: ["epistemic_assertions"] }
17021
+ },
17022
+ {
17023
+ version: 133,
17024
+ name: "dreaming-memory-head",
17025
+ up: up133,
17026
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
17027
+ },
17028
+ {
17029
+ version: 134,
17030
+ name: "scope-memory-head-entries",
17031
+ up: up134,
17032
+ artifacts: { tables: ["memory_head_entries"] }
17033
+ },
17034
+ {
17035
+ version: 135,
17036
+ name: "memory-head-publication",
17037
+ up: up135,
17038
+ artifacts: { tables: ["memory_head_publications"] }
16935
17039
  }
16936
17040
  ];
16937
17041
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -16967,16 +17071,42 @@ function classifyError(error) {
16967
17071
  }
16968
17072
  return { state: "corrupt", message };
16969
17073
  }
17074
+ function tryRequireOverride() {
17075
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
17076
+ if (!override)
17077
+ return null;
17078
+ const isAbsolute = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
17079
+ if (!isAbsolute)
17080
+ return null;
17081
+ try {
17082
+ return require2(override);
17083
+ } catch {
17084
+ return null;
17085
+ }
17086
+ }
16970
17087
  async function loadModule() {
16971
- modulePromise ??= Promise.resolve().then(() => __toESM(require_keyring(), 1)).catch(() => null);
17088
+ modulePromise ??= (async () => {
17089
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
17090
+ if (override)
17091
+ return tryRequireOverride();
17092
+ return await Promise.resolve().then(() => __toESM(require_keyring(), 1)).catch(() => null);
17093
+ })();
16972
17094
  return modulePromise;
16973
17095
  }
16974
17096
  function loadModuleSync() {
16975
17097
  if (syncModule !== undefined)
16976
17098
  return syncModule;
17099
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
17100
+ syncModule = tryRequireOverride();
17101
+ return syncModule;
17102
+ }
17103
+ const override = tryRequireOverride();
17104
+ if (override) {
17105
+ syncModule = override;
17106
+ return syncModule;
17107
+ }
16977
17108
  try {
16978
- const mod = require2("@napi-rs/keyring");
16979
- syncModule = mod;
17109
+ syncModule = require2("@napi-rs/keyring");
16980
17110
  } catch {
16981
17111
  syncModule = null;
16982
17112
  }
@@ -28884,7 +29014,7 @@ function memoriesFtsNeedsTokenizerRepair2(sql) {
28884
29014
  return true;
28885
29015
  return !normalized.includes(`tokenize='${MEMORIES_FTS_TOKENIZER2}'`);
28886
29016
  }
28887
- function up133(db) {
29017
+ function up136(db) {
28888
29018
  db.exec(`
28889
29019
  CREATE TABLE IF NOT EXISTS schema_migrations (
28890
29020
  version INTEGER PRIMARY KEY,
@@ -29368,7 +29498,7 @@ function addColumnIfMissing52(db, table, column, definition) {
29368
29498
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
29369
29499
  }
29370
29500
  }
29371
- function up134(db) {
29501
+ function up137(db) {
29372
29502
  db.exec(`
29373
29503
  CREATE TABLE IF NOT EXISTS ingestion_jobs (
29374
29504
  id TEXT PRIMARY KEY,
@@ -33123,11 +33253,97 @@ function up1322(db) {
33123
33253
  ON epistemic_assertions(agent_id, subject_entity_id, status, asserted_at DESC, created_at DESC);
33124
33254
  `);
33125
33255
  }
33256
+ function up1332(db) {
33257
+ db.exec(`
33258
+ CREATE TABLE IF NOT EXISTS memory_head_revisions (
33259
+ id TEXT PRIMARY KEY,
33260
+ agent_id TEXT NOT NULL,
33261
+ revision INTEGER NOT NULL,
33262
+ content TEXT NOT NULL,
33263
+ content_hash TEXT NOT NULL,
33264
+ rendered_token_count INTEGER NOT NULL,
33265
+ pass_id TEXT NOT NULL,
33266
+ base_revision INTEGER NOT NULL,
33267
+ base_hash TEXT NOT NULL,
33268
+ created_at TEXT NOT NULL,
33269
+ UNIQUE(agent_id, revision)
33270
+ );
33271
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revisions_agent
33272
+ ON memory_head_revisions(agent_id, revision DESC);
33273
+ CREATE TABLE IF NOT EXISTS memory_head_entries (
33274
+ entry_id TEXT PRIMARY KEY,
33275
+ agent_id TEXT NOT NULL,
33276
+ canonical_text TEXT NOT NULL,
33277
+ entry_hash TEXT NOT NULL,
33278
+ status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
33279
+ first_revision INTEGER NOT NULL,
33280
+ last_revision INTEGER NOT NULL,
33281
+ created_at TEXT NOT NULL,
33282
+ updated_at TEXT NOT NULL
33283
+ );
33284
+ CREATE INDEX IF NOT EXISTS idx_memory_head_entries_agent
33285
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
33286
+ CREATE TABLE IF NOT EXISTS memory_head_revision_entries (
33287
+ agent_id TEXT NOT NULL,
33288
+ revision INTEGER NOT NULL,
33289
+ entry_id TEXT NOT NULL,
33290
+ ordinal INTEGER NOT NULL,
33291
+ operation TEXT NOT NULL CHECK(operation IN ('add','update','remove','retain')),
33292
+ provenance_json TEXT NOT NULL,
33293
+ PRIMARY KEY(agent_id, revision, entry_id),
33294
+ UNIQUE(agent_id, revision, ordinal)
33295
+ );
33296
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revision_entries_entry
33297
+ ON memory_head_revision_entries(agent_id, entry_id, revision DESC);
33298
+ `);
33299
+ const columns = db.prepare("PRAGMA table_info(memory_md_heads)").all();
33300
+ const names = new Set(columns.map((column) => String(column.name)));
33301
+ if (!names.has("revision_id"))
33302
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN revision_id TEXT");
33303
+ if (!names.has("pass_id"))
33304
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN pass_id TEXT");
33305
+ if (!names.has("format_version"))
33306
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN format_version INTEGER NOT NULL DEFAULT 1");
33307
+ }
33308
+ function up1342(db) {
33309
+ db.exec(`
33310
+ CREATE TABLE memory_head_entries_v134 (
33311
+ entry_id TEXT NOT NULL, agent_id TEXT NOT NULL, canonical_text TEXT NOT NULL,
33312
+ entry_hash TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
33313
+ first_revision INTEGER NOT NULL, last_revision INTEGER NOT NULL,
33314
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
33315
+ PRIMARY KEY(agent_id, entry_id)
33316
+ );
33317
+ INSERT INTO memory_head_entries_v134
33318
+ SELECT entry_id, agent_id, canonical_text, entry_hash, status, first_revision, last_revision, created_at, updated_at
33319
+ FROM memory_head_entries;
33320
+ DROP TABLE memory_head_entries;
33321
+ ALTER TABLE memory_head_entries_v134 RENAME TO memory_head_entries;
33322
+ CREATE INDEX idx_memory_head_entries_agent
33323
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
33324
+ `);
33325
+ }
33326
+ function up1352(db) {
33327
+ db.exec(`
33328
+ CREATE TABLE IF NOT EXISTS memory_head_publications (
33329
+ agent_id TEXT NOT NULL,
33330
+ revision INTEGER NOT NULL,
33331
+ revision_id TEXT NOT NULL,
33332
+ status TEXT NOT NULL CHECK(status IN ('pending', 'completed')),
33333
+ created_at TEXT NOT NULL,
33334
+ completed_at TEXT,
33335
+ PRIMARY KEY(agent_id, revision),
33336
+ UNIQUE(agent_id, revision_id)
33337
+ );
33338
+ CREATE INDEX IF NOT EXISTS idx_memory_head_publications_pending
33339
+ ON memory_head_publications(agent_id, status, revision DESC);
33340
+ `);
33341
+ }
33126
33342
  var MIGRATIONS2 = [
33127
33343
  {
33128
33344
  version: 1,
33129
33345
  name: "baseline",
33130
- up: up133,
33346
+ up: up136,
33131
33347
  artifacts: { tables: ["memories", "conversations", "embeddings"] }
33132
33348
  },
33133
33349
  {
@@ -33205,7 +33421,7 @@ var MIGRATIONS2 = [
33205
33421
  {
33206
33422
  version: 13,
33207
33423
  name: "ingestion-tracking",
33208
- up: up134,
33424
+ up: up137,
33209
33425
  artifacts: {
33210
33426
  columns: [
33211
33427
  { table: "memories", column: "source_path" },
@@ -34177,6 +34393,24 @@ var MIGRATIONS2 = [
34177
34393
  name: "observer-scoped-epistemic-assertions",
34178
34394
  up: up1322,
34179
34395
  artifacts: { tables: ["epistemic_assertions"] }
34396
+ },
34397
+ {
34398
+ version: 133,
34399
+ name: "dreaming-memory-head",
34400
+ up: up1332,
34401
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
34402
+ },
34403
+ {
34404
+ version: 134,
34405
+ name: "scope-memory-head-entries",
34406
+ up: up1342,
34407
+ artifacts: { tables: ["memory_head_entries"] }
34408
+ },
34409
+ {
34410
+ version: 135,
34411
+ name: "memory-head-publication",
34412
+ up: up1352,
34413
+ artifacts: { tables: ["memory_head_publications"] }
34180
34414
  }
34181
34415
  ];
34182
34416
  var LATEST_SCHEMA_VERSION2 = MIGRATIONS2[MIGRATIONS2.length - 1]?.version ?? 0;
@@ -34212,16 +34446,42 @@ function classifyError2(error) {
34212
34446
  }
34213
34447
  return { state: "corrupt", message };
34214
34448
  }
34449
+ function tryRequireOverride2() {
34450
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34451
+ if (!override)
34452
+ return null;
34453
+ const isAbsolute = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
34454
+ if (!isAbsolute)
34455
+ return null;
34456
+ try {
34457
+ return require22(override);
34458
+ } catch {
34459
+ return null;
34460
+ }
34461
+ }
34215
34462
  async function loadModule2() {
34216
- modulePromise2 ??= Promise.resolve().then(() => __toESM2(require_keyring2(), 1)).catch(() => null);
34463
+ modulePromise2 ??= (async () => {
34464
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34465
+ if (override)
34466
+ return tryRequireOverride2();
34467
+ return await Promise.resolve().then(() => __toESM2(require_keyring2(), 1)).catch(() => null);
34468
+ })();
34217
34469
  return modulePromise2;
34218
34470
  }
34219
34471
  function loadModuleSync2() {
34220
34472
  if (syncModule2 !== undefined)
34221
34473
  return syncModule2;
34474
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
34475
+ syncModule2 = tryRequireOverride2();
34476
+ return syncModule2;
34477
+ }
34478
+ const override = tryRequireOverride2();
34479
+ if (override) {
34480
+ syncModule2 = override;
34481
+ return syncModule2;
34482
+ }
34222
34483
  try {
34223
- const mod = require22("@napi-rs/keyring");
34224
- syncModule2 = mod;
34484
+ syncModule2 = require22("@napi-rs/keyring");
34225
34485
  } catch {
34226
34486
  syncModule2 = null;
34227
34487
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/signet-memory-openclaw",
3
- "version": "0.206.8",
3
+ "version": "0.207.2",
4
4
  "description": "Signet adapter for OpenClaw — runtime plugin for AI agent memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",