@signetai/signet-memory-openclaw 0.206.8 → 0.208.0

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 +360 -10
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15878,6 +15878,120 @@ 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
+ }
15967
+ function up136(db) {
15968
+ const cols = new Set(db.prepare("PRAGMA table_info(memory_head_revisions)").all().map((r2) => r2.name));
15969
+ for (const [name, type] of [
15970
+ ["entry_id", "TEXT"],
15971
+ ["entry_text", "TEXT"],
15972
+ ["operation", "TEXT"],
15973
+ ["source_refs_json", "TEXT"],
15974
+ ["supporting_quotes_json", "TEXT"]
15975
+ ]) {
15976
+ if (!cols.has(name))
15977
+ db.exec(`ALTER TABLE memory_head_revisions ADD COLUMN ${name} ${type}`);
15978
+ }
15979
+ db.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_memory_head_revisions_entry ON memory_head_revisions(agent_id, revision, entry_id)");
15980
+ }
15981
+ function up137(db) {
15982
+ const cols = new Set(db.prepare("PRAGMA table_info(dreaming_passes)").all().map((r2) => r2.name));
15983
+ for (const [name, type] of [
15984
+ ["head_revision", "INTEGER"],
15985
+ ["head_hash", "TEXT"],
15986
+ ["head_added", "INTEGER NOT NULL DEFAULT 0"],
15987
+ ["head_updated", "INTEGER NOT NULL DEFAULT 0"],
15988
+ ["head_removed", "INTEGER NOT NULL DEFAULT 0"],
15989
+ ["head_deferred", "INTEGER NOT NULL DEFAULT 0"],
15990
+ ["head_no_op", "INTEGER NOT NULL DEFAULT 0"]
15991
+ ])
15992
+ if (!cols.has(name))
15993
+ db.exec(`ALTER TABLE dreaming_passes ADD COLUMN ${name} ${type}`);
15994
+ }
15881
15995
  var MIGRATIONS = [
15882
15996
  {
15883
15997
  version: 1,
@@ -16932,6 +17046,41 @@ var MIGRATIONS = [
16932
17046
  name: "observer-scoped-epistemic-assertions",
16933
17047
  up: up132,
16934
17048
  artifacts: { tables: ["epistemic_assertions"] }
17049
+ },
17050
+ {
17051
+ version: 133,
17052
+ name: "dreaming-memory-head",
17053
+ up: up133,
17054
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
17055
+ },
17056
+ {
17057
+ version: 134,
17058
+ name: "scope-memory-head-entries",
17059
+ up: up134,
17060
+ artifacts: { tables: ["memory_head_entries"] }
17061
+ },
17062
+ {
17063
+ version: 135,
17064
+ name: "memory-head-publication",
17065
+ up: up135,
17066
+ artifacts: { tables: ["memory_head_publications"] }
17067
+ },
17068
+ {
17069
+ version: 136,
17070
+ name: "memory-head-revisions",
17071
+ up: up136,
17072
+ artifacts: { tables: ["memory_head_revisions"] }
17073
+ },
17074
+ {
17075
+ version: 137,
17076
+ name: "dreaming-head-manifest",
17077
+ up: up137,
17078
+ artifacts: {
17079
+ columns: [
17080
+ { table: "dreaming_passes", column: "head_revision" },
17081
+ { table: "dreaming_passes", column: "head_hash" }
17082
+ ]
17083
+ }
16935
17084
  }
16936
17085
  ];
16937
17086
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -16967,16 +17116,42 @@ function classifyError(error) {
16967
17116
  }
16968
17117
  return { state: "corrupt", message };
16969
17118
  }
17119
+ function tryRequireOverride() {
17120
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
17121
+ if (!override)
17122
+ return null;
17123
+ const isAbsolute = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
17124
+ if (!isAbsolute)
17125
+ return null;
17126
+ try {
17127
+ return require2(override);
17128
+ } catch {
17129
+ return null;
17130
+ }
17131
+ }
16970
17132
  async function loadModule() {
16971
- modulePromise ??= Promise.resolve().then(() => __toESM(require_keyring(), 1)).catch(() => null);
17133
+ modulePromise ??= (async () => {
17134
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
17135
+ if (override)
17136
+ return tryRequireOverride();
17137
+ return await Promise.resolve().then(() => __toESM(require_keyring(), 1)).catch(() => null);
17138
+ })();
16972
17139
  return modulePromise;
16973
17140
  }
16974
17141
  function loadModuleSync() {
16975
17142
  if (syncModule !== undefined)
16976
17143
  return syncModule;
17144
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
17145
+ syncModule = tryRequireOverride();
17146
+ return syncModule;
17147
+ }
17148
+ const override = tryRequireOverride();
17149
+ if (override) {
17150
+ syncModule = override;
17151
+ return syncModule;
17152
+ }
16977
17153
  try {
16978
- const mod = require2("@napi-rs/keyring");
16979
- syncModule = mod;
17154
+ syncModule = require2("@napi-rs/keyring");
16980
17155
  } catch {
16981
17156
  syncModule = null;
16982
17157
  }
@@ -28884,7 +29059,7 @@ function memoriesFtsNeedsTokenizerRepair2(sql) {
28884
29059
  return true;
28885
29060
  return !normalized.includes(`tokenize='${MEMORIES_FTS_TOKENIZER2}'`);
28886
29061
  }
28887
- function up133(db) {
29062
+ function up138(db) {
28888
29063
  db.exec(`
28889
29064
  CREATE TABLE IF NOT EXISTS schema_migrations (
28890
29065
  version INTEGER PRIMARY KEY,
@@ -29368,7 +29543,7 @@ function addColumnIfMissing52(db, table, column, definition) {
29368
29543
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
29369
29544
  }
29370
29545
  }
29371
- function up134(db) {
29546
+ function up139(db) {
29372
29547
  db.exec(`
29373
29548
  CREATE TABLE IF NOT EXISTS ingestion_jobs (
29374
29549
  id TEXT PRIMARY KEY,
@@ -33123,11 +33298,125 @@ function up1322(db) {
33123
33298
  ON epistemic_assertions(agent_id, subject_entity_id, status, asserted_at DESC, created_at DESC);
33124
33299
  `);
33125
33300
  }
33301
+ function up1332(db) {
33302
+ db.exec(`
33303
+ CREATE TABLE IF NOT EXISTS memory_head_revisions (
33304
+ id TEXT PRIMARY KEY,
33305
+ agent_id TEXT NOT NULL,
33306
+ revision INTEGER NOT NULL,
33307
+ content TEXT NOT NULL,
33308
+ content_hash TEXT NOT NULL,
33309
+ rendered_token_count INTEGER NOT NULL,
33310
+ pass_id TEXT NOT NULL,
33311
+ base_revision INTEGER NOT NULL,
33312
+ base_hash TEXT NOT NULL,
33313
+ created_at TEXT NOT NULL,
33314
+ UNIQUE(agent_id, revision)
33315
+ );
33316
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revisions_agent
33317
+ ON memory_head_revisions(agent_id, revision DESC);
33318
+ CREATE TABLE IF NOT EXISTS memory_head_entries (
33319
+ entry_id TEXT PRIMARY KEY,
33320
+ agent_id TEXT NOT NULL,
33321
+ canonical_text TEXT NOT NULL,
33322
+ entry_hash TEXT NOT NULL,
33323
+ status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
33324
+ first_revision INTEGER NOT NULL,
33325
+ last_revision INTEGER NOT NULL,
33326
+ created_at TEXT NOT NULL,
33327
+ updated_at TEXT NOT NULL
33328
+ );
33329
+ CREATE INDEX IF NOT EXISTS idx_memory_head_entries_agent
33330
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
33331
+ CREATE TABLE IF NOT EXISTS memory_head_revision_entries (
33332
+ agent_id TEXT NOT NULL,
33333
+ revision INTEGER NOT NULL,
33334
+ entry_id TEXT NOT NULL,
33335
+ ordinal INTEGER NOT NULL,
33336
+ operation TEXT NOT NULL CHECK(operation IN ('add','update','remove','retain')),
33337
+ provenance_json TEXT NOT NULL,
33338
+ PRIMARY KEY(agent_id, revision, entry_id),
33339
+ UNIQUE(agent_id, revision, ordinal)
33340
+ );
33341
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revision_entries_entry
33342
+ ON memory_head_revision_entries(agent_id, entry_id, revision DESC);
33343
+ `);
33344
+ const columns = db.prepare("PRAGMA table_info(memory_md_heads)").all();
33345
+ const names = new Set(columns.map((column) => String(column.name)));
33346
+ if (!names.has("revision_id"))
33347
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN revision_id TEXT");
33348
+ if (!names.has("pass_id"))
33349
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN pass_id TEXT");
33350
+ if (!names.has("format_version"))
33351
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN format_version INTEGER NOT NULL DEFAULT 1");
33352
+ }
33353
+ function up1342(db) {
33354
+ db.exec(`
33355
+ CREATE TABLE memory_head_entries_v134 (
33356
+ entry_id TEXT NOT NULL, agent_id TEXT NOT NULL, canonical_text TEXT NOT NULL,
33357
+ entry_hash TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
33358
+ first_revision INTEGER NOT NULL, last_revision INTEGER NOT NULL,
33359
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
33360
+ PRIMARY KEY(agent_id, entry_id)
33361
+ );
33362
+ INSERT INTO memory_head_entries_v134
33363
+ SELECT entry_id, agent_id, canonical_text, entry_hash, status, first_revision, last_revision, created_at, updated_at
33364
+ FROM memory_head_entries;
33365
+ DROP TABLE memory_head_entries;
33366
+ ALTER TABLE memory_head_entries_v134 RENAME TO memory_head_entries;
33367
+ CREATE INDEX idx_memory_head_entries_agent
33368
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
33369
+ `);
33370
+ }
33371
+ function up1352(db) {
33372
+ db.exec(`
33373
+ CREATE TABLE IF NOT EXISTS memory_head_publications (
33374
+ agent_id TEXT NOT NULL,
33375
+ revision INTEGER NOT NULL,
33376
+ revision_id TEXT NOT NULL,
33377
+ status TEXT NOT NULL CHECK(status IN ('pending', 'completed')),
33378
+ created_at TEXT NOT NULL,
33379
+ completed_at TEXT,
33380
+ PRIMARY KEY(agent_id, revision),
33381
+ UNIQUE(agent_id, revision_id)
33382
+ );
33383
+ CREATE INDEX IF NOT EXISTS idx_memory_head_publications_pending
33384
+ ON memory_head_publications(agent_id, status, revision DESC);
33385
+ `);
33386
+ }
33387
+ function up1362(db) {
33388
+ const cols = new Set(db.prepare("PRAGMA table_info(memory_head_revisions)").all().map((r22) => r22.name));
33389
+ for (const [name, type] of [
33390
+ ["entry_id", "TEXT"],
33391
+ ["entry_text", "TEXT"],
33392
+ ["operation", "TEXT"],
33393
+ ["source_refs_json", "TEXT"],
33394
+ ["supporting_quotes_json", "TEXT"]
33395
+ ]) {
33396
+ if (!cols.has(name))
33397
+ db.exec(`ALTER TABLE memory_head_revisions ADD COLUMN ${name} ${type}`);
33398
+ }
33399
+ db.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_memory_head_revisions_entry ON memory_head_revisions(agent_id, revision, entry_id)");
33400
+ }
33401
+ function up1372(db) {
33402
+ const cols = new Set(db.prepare("PRAGMA table_info(dreaming_passes)").all().map((r22) => r22.name));
33403
+ for (const [name, type] of [
33404
+ ["head_revision", "INTEGER"],
33405
+ ["head_hash", "TEXT"],
33406
+ ["head_added", "INTEGER NOT NULL DEFAULT 0"],
33407
+ ["head_updated", "INTEGER NOT NULL DEFAULT 0"],
33408
+ ["head_removed", "INTEGER NOT NULL DEFAULT 0"],
33409
+ ["head_deferred", "INTEGER NOT NULL DEFAULT 0"],
33410
+ ["head_no_op", "INTEGER NOT NULL DEFAULT 0"]
33411
+ ])
33412
+ if (!cols.has(name))
33413
+ db.exec(`ALTER TABLE dreaming_passes ADD COLUMN ${name} ${type}`);
33414
+ }
33126
33415
  var MIGRATIONS2 = [
33127
33416
  {
33128
33417
  version: 1,
33129
33418
  name: "baseline",
33130
- up: up133,
33419
+ up: up138,
33131
33420
  artifacts: { tables: ["memories", "conversations", "embeddings"] }
33132
33421
  },
33133
33422
  {
@@ -33205,7 +33494,7 @@ var MIGRATIONS2 = [
33205
33494
  {
33206
33495
  version: 13,
33207
33496
  name: "ingestion-tracking",
33208
- up: up134,
33497
+ up: up139,
33209
33498
  artifacts: {
33210
33499
  columns: [
33211
33500
  { table: "memories", column: "source_path" },
@@ -34177,6 +34466,41 @@ var MIGRATIONS2 = [
34177
34466
  name: "observer-scoped-epistemic-assertions",
34178
34467
  up: up1322,
34179
34468
  artifacts: { tables: ["epistemic_assertions"] }
34469
+ },
34470
+ {
34471
+ version: 133,
34472
+ name: "dreaming-memory-head",
34473
+ up: up1332,
34474
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
34475
+ },
34476
+ {
34477
+ version: 134,
34478
+ name: "scope-memory-head-entries",
34479
+ up: up1342,
34480
+ artifacts: { tables: ["memory_head_entries"] }
34481
+ },
34482
+ {
34483
+ version: 135,
34484
+ name: "memory-head-publication",
34485
+ up: up1352,
34486
+ artifacts: { tables: ["memory_head_publications"] }
34487
+ },
34488
+ {
34489
+ version: 136,
34490
+ name: "memory-head-revisions",
34491
+ up: up1362,
34492
+ artifacts: { tables: ["memory_head_revisions"] }
34493
+ },
34494
+ {
34495
+ version: 137,
34496
+ name: "dreaming-head-manifest",
34497
+ up: up1372,
34498
+ artifacts: {
34499
+ columns: [
34500
+ { table: "dreaming_passes", column: "head_revision" },
34501
+ { table: "dreaming_passes", column: "head_hash" }
34502
+ ]
34503
+ }
34180
34504
  }
34181
34505
  ];
34182
34506
  var LATEST_SCHEMA_VERSION2 = MIGRATIONS2[MIGRATIONS2.length - 1]?.version ?? 0;
@@ -34212,16 +34536,42 @@ function classifyError2(error) {
34212
34536
  }
34213
34537
  return { state: "corrupt", message };
34214
34538
  }
34539
+ function tryRequireOverride2() {
34540
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34541
+ if (!override)
34542
+ return null;
34543
+ const isAbsolute = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
34544
+ if (!isAbsolute)
34545
+ return null;
34546
+ try {
34547
+ return require22(override);
34548
+ } catch {
34549
+ return null;
34550
+ }
34551
+ }
34215
34552
  async function loadModule2() {
34216
- modulePromise2 ??= Promise.resolve().then(() => __toESM2(require_keyring2(), 1)).catch(() => null);
34553
+ modulePromise2 ??= (async () => {
34554
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34555
+ if (override)
34556
+ return tryRequireOverride2();
34557
+ return await Promise.resolve().then(() => __toESM2(require_keyring2(), 1)).catch(() => null);
34558
+ })();
34217
34559
  return modulePromise2;
34218
34560
  }
34219
34561
  function loadModuleSync2() {
34220
34562
  if (syncModule2 !== undefined)
34221
34563
  return syncModule2;
34564
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
34565
+ syncModule2 = tryRequireOverride2();
34566
+ return syncModule2;
34567
+ }
34568
+ const override = tryRequireOverride2();
34569
+ if (override) {
34570
+ syncModule2 = override;
34571
+ return syncModule2;
34572
+ }
34222
34573
  try {
34223
- const mod = require22("@napi-rs/keyring");
34224
- syncModule2 = mod;
34574
+ syncModule2 = require22("@napi-rs/keyring");
34225
34575
  } catch {
34226
34576
  syncModule2 = null;
34227
34577
  }
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.208.0",
4
4
  "description": "Signet adapter for OpenClaw — runtime plugin for AI agent memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",