@signetai/connector-hermes-agent 0.206.7 → 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 +3 -3
package/dist/index.js CHANGED
@@ -15621,6 +15621,92 @@ function up132(db) {
15621
15621
  ON epistemic_assertions(agent_id, subject_entity_id, status, asserted_at DESC, created_at DESC);
15622
15622
  `);
15623
15623
  }
15624
+ function up133(db) {
15625
+ db.exec(`
15626
+ CREATE TABLE IF NOT EXISTS memory_head_revisions (
15627
+ id TEXT PRIMARY KEY,
15628
+ agent_id TEXT NOT NULL,
15629
+ revision INTEGER NOT NULL,
15630
+ content TEXT NOT NULL,
15631
+ content_hash TEXT NOT NULL,
15632
+ rendered_token_count INTEGER NOT NULL,
15633
+ pass_id TEXT NOT NULL,
15634
+ base_revision INTEGER NOT NULL,
15635
+ base_hash TEXT NOT NULL,
15636
+ created_at TEXT NOT NULL,
15637
+ UNIQUE(agent_id, revision)
15638
+ );
15639
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revisions_agent
15640
+ ON memory_head_revisions(agent_id, revision DESC);
15641
+ CREATE TABLE IF NOT EXISTS memory_head_entries (
15642
+ entry_id TEXT PRIMARY KEY,
15643
+ agent_id TEXT NOT NULL,
15644
+ canonical_text TEXT NOT NULL,
15645
+ entry_hash TEXT NOT NULL,
15646
+ status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
15647
+ first_revision INTEGER NOT NULL,
15648
+ last_revision INTEGER NOT NULL,
15649
+ created_at TEXT NOT NULL,
15650
+ updated_at TEXT NOT NULL
15651
+ );
15652
+ CREATE INDEX IF NOT EXISTS idx_memory_head_entries_agent
15653
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
15654
+ CREATE TABLE IF NOT EXISTS memory_head_revision_entries (
15655
+ agent_id TEXT NOT NULL,
15656
+ revision INTEGER NOT NULL,
15657
+ entry_id TEXT NOT NULL,
15658
+ ordinal INTEGER NOT NULL,
15659
+ operation TEXT NOT NULL CHECK(operation IN ('add','update','remove','retain')),
15660
+ provenance_json TEXT NOT NULL,
15661
+ PRIMARY KEY(agent_id, revision, entry_id),
15662
+ UNIQUE(agent_id, revision, ordinal)
15663
+ );
15664
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revision_entries_entry
15665
+ ON memory_head_revision_entries(agent_id, entry_id, revision DESC);
15666
+ `);
15667
+ const columns = db.prepare("PRAGMA table_info(memory_md_heads)").all();
15668
+ const names = new Set(columns.map((column) => String(column.name)));
15669
+ if (!names.has("revision_id"))
15670
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN revision_id TEXT");
15671
+ if (!names.has("pass_id"))
15672
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN pass_id TEXT");
15673
+ if (!names.has("format_version"))
15674
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN format_version INTEGER NOT NULL DEFAULT 1");
15675
+ }
15676
+ function up134(db) {
15677
+ db.exec(`
15678
+ CREATE TABLE memory_head_entries_v134 (
15679
+ entry_id TEXT NOT NULL, agent_id TEXT NOT NULL, canonical_text TEXT NOT NULL,
15680
+ entry_hash TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
15681
+ first_revision INTEGER NOT NULL, last_revision INTEGER NOT NULL,
15682
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
15683
+ PRIMARY KEY(agent_id, entry_id)
15684
+ );
15685
+ INSERT INTO memory_head_entries_v134
15686
+ SELECT entry_id, agent_id, canonical_text, entry_hash, status, first_revision, last_revision, created_at, updated_at
15687
+ FROM memory_head_entries;
15688
+ DROP TABLE memory_head_entries;
15689
+ ALTER TABLE memory_head_entries_v134 RENAME TO memory_head_entries;
15690
+ CREATE INDEX idx_memory_head_entries_agent
15691
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
15692
+ `);
15693
+ }
15694
+ function up135(db) {
15695
+ db.exec(`
15696
+ CREATE TABLE IF NOT EXISTS memory_head_publications (
15697
+ agent_id TEXT NOT NULL,
15698
+ revision INTEGER NOT NULL,
15699
+ revision_id TEXT NOT NULL,
15700
+ status TEXT NOT NULL CHECK(status IN ('pending', 'completed')),
15701
+ created_at TEXT NOT NULL,
15702
+ completed_at TEXT,
15703
+ PRIMARY KEY(agent_id, revision),
15704
+ UNIQUE(agent_id, revision_id)
15705
+ );
15706
+ CREATE INDEX IF NOT EXISTS idx_memory_head_publications_pending
15707
+ ON memory_head_publications(agent_id, status, revision DESC);
15708
+ `);
15709
+ }
15624
15710
  var MIGRATIONS = [
15625
15711
  {
15626
15712
  version: 1,
@@ -16675,6 +16761,24 @@ var MIGRATIONS = [
16675
16761
  name: "observer-scoped-epistemic-assertions",
16676
16762
  up: up132,
16677
16763
  artifacts: { tables: ["epistemic_assertions"] }
16764
+ },
16765
+ {
16766
+ version: 133,
16767
+ name: "dreaming-memory-head",
16768
+ up: up133,
16769
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
16770
+ },
16771
+ {
16772
+ version: 134,
16773
+ name: "scope-memory-head-entries",
16774
+ up: up134,
16775
+ artifacts: { tables: ["memory_head_entries"] }
16776
+ },
16777
+ {
16778
+ version: 135,
16779
+ name: "memory-head-publication",
16780
+ up: up135,
16781
+ artifacts: { tables: ["memory_head_publications"] }
16678
16782
  }
16679
16783
  ];
16680
16784
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -16710,16 +16814,42 @@ function classifyError(error) {
16710
16814
  }
16711
16815
  return { state: "corrupt", message };
16712
16816
  }
16817
+ function tryRequireOverride() {
16818
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
16819
+ if (!override)
16820
+ return null;
16821
+ const isAbsolute2 = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
16822
+ if (!isAbsolute2)
16823
+ return null;
16824
+ try {
16825
+ return require2(override);
16826
+ } catch {
16827
+ return null;
16828
+ }
16829
+ }
16713
16830
  async function loadModule() {
16714
- modulePromise ??= Promise.resolve().then(() => __toESM2(require_keyring(), 1)).catch(() => null);
16831
+ modulePromise ??= (async () => {
16832
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
16833
+ if (override)
16834
+ return tryRequireOverride();
16835
+ return await Promise.resolve().then(() => __toESM2(require_keyring(), 1)).catch(() => null);
16836
+ })();
16715
16837
  return modulePromise;
16716
16838
  }
16717
16839
  function loadModuleSync() {
16718
16840
  if (syncModule !== undefined)
16719
16841
  return syncModule;
16842
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
16843
+ syncModule = tryRequireOverride();
16844
+ return syncModule;
16845
+ }
16846
+ const override = tryRequireOverride();
16847
+ if (override) {
16848
+ syncModule = override;
16849
+ return syncModule;
16850
+ }
16720
16851
  try {
16721
- const mod = require2("@napi-rs/keyring");
16722
- syncModule = mod;
16852
+ syncModule = require2("@napi-rs/keyring");
16723
16853
  } catch {
16724
16854
  syncModule = null;
16725
16855
  }
@@ -28484,7 +28614,7 @@ function memoriesFtsNeedsTokenizerRepair2(sql) {
28484
28614
  return true;
28485
28615
  return !normalized.includes(`tokenize='${MEMORIES_FTS_TOKENIZER2}'`);
28486
28616
  }
28487
- function up133(db) {
28617
+ function up136(db) {
28488
28618
  db.exec(`
28489
28619
  CREATE TABLE IF NOT EXISTS schema_migrations (
28490
28620
  version INTEGER PRIMARY KEY,
@@ -28968,7 +29098,7 @@ function addColumnIfMissing52(db, table, column, definition) {
28968
29098
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
28969
29099
  }
28970
29100
  }
28971
- function up134(db) {
29101
+ function up137(db) {
28972
29102
  db.exec(`
28973
29103
  CREATE TABLE IF NOT EXISTS ingestion_jobs (
28974
29104
  id TEXT PRIMARY KEY,
@@ -32723,11 +32853,97 @@ function up1322(db) {
32723
32853
  ON epistemic_assertions(agent_id, subject_entity_id, status, asserted_at DESC, created_at DESC);
32724
32854
  `);
32725
32855
  }
32856
+ function up1332(db) {
32857
+ db.exec(`
32858
+ CREATE TABLE IF NOT EXISTS memory_head_revisions (
32859
+ id TEXT PRIMARY KEY,
32860
+ agent_id TEXT NOT NULL,
32861
+ revision INTEGER NOT NULL,
32862
+ content TEXT NOT NULL,
32863
+ content_hash TEXT NOT NULL,
32864
+ rendered_token_count INTEGER NOT NULL,
32865
+ pass_id TEXT NOT NULL,
32866
+ base_revision INTEGER NOT NULL,
32867
+ base_hash TEXT NOT NULL,
32868
+ created_at TEXT NOT NULL,
32869
+ UNIQUE(agent_id, revision)
32870
+ );
32871
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revisions_agent
32872
+ ON memory_head_revisions(agent_id, revision DESC);
32873
+ CREATE TABLE IF NOT EXISTS memory_head_entries (
32874
+ entry_id TEXT PRIMARY KEY,
32875
+ agent_id TEXT NOT NULL,
32876
+ canonical_text TEXT NOT NULL,
32877
+ entry_hash TEXT NOT NULL,
32878
+ status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
32879
+ first_revision INTEGER NOT NULL,
32880
+ last_revision INTEGER NOT NULL,
32881
+ created_at TEXT NOT NULL,
32882
+ updated_at TEXT NOT NULL
32883
+ );
32884
+ CREATE INDEX IF NOT EXISTS idx_memory_head_entries_agent
32885
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
32886
+ CREATE TABLE IF NOT EXISTS memory_head_revision_entries (
32887
+ agent_id TEXT NOT NULL,
32888
+ revision INTEGER NOT NULL,
32889
+ entry_id TEXT NOT NULL,
32890
+ ordinal INTEGER NOT NULL,
32891
+ operation TEXT NOT NULL CHECK(operation IN ('add','update','remove','retain')),
32892
+ provenance_json TEXT NOT NULL,
32893
+ PRIMARY KEY(agent_id, revision, entry_id),
32894
+ UNIQUE(agent_id, revision, ordinal)
32895
+ );
32896
+ CREATE INDEX IF NOT EXISTS idx_memory_head_revision_entries_entry
32897
+ ON memory_head_revision_entries(agent_id, entry_id, revision DESC);
32898
+ `);
32899
+ const columns = db.prepare("PRAGMA table_info(memory_md_heads)").all();
32900
+ const names = new Set(columns.map((column) => String(column.name)));
32901
+ if (!names.has("revision_id"))
32902
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN revision_id TEXT");
32903
+ if (!names.has("pass_id"))
32904
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN pass_id TEXT");
32905
+ if (!names.has("format_version"))
32906
+ db.exec("ALTER TABLE memory_md_heads ADD COLUMN format_version INTEGER NOT NULL DEFAULT 1");
32907
+ }
32908
+ function up1342(db) {
32909
+ db.exec(`
32910
+ CREATE TABLE memory_head_entries_v134 (
32911
+ entry_id TEXT NOT NULL, agent_id TEXT NOT NULL, canonical_text TEXT NOT NULL,
32912
+ entry_hash TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('active','removed','superseded')),
32913
+ first_revision INTEGER NOT NULL, last_revision INTEGER NOT NULL,
32914
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
32915
+ PRIMARY KEY(agent_id, entry_id)
32916
+ );
32917
+ INSERT INTO memory_head_entries_v134
32918
+ SELECT entry_id, agent_id, canonical_text, entry_hash, status, first_revision, last_revision, created_at, updated_at
32919
+ FROM memory_head_entries;
32920
+ DROP TABLE memory_head_entries;
32921
+ ALTER TABLE memory_head_entries_v134 RENAME TO memory_head_entries;
32922
+ CREATE INDEX idx_memory_head_entries_agent
32923
+ ON memory_head_entries(agent_id, entry_id, last_revision DESC);
32924
+ `);
32925
+ }
32926
+ function up1352(db) {
32927
+ db.exec(`
32928
+ CREATE TABLE IF NOT EXISTS memory_head_publications (
32929
+ agent_id TEXT NOT NULL,
32930
+ revision INTEGER NOT NULL,
32931
+ revision_id TEXT NOT NULL,
32932
+ status TEXT NOT NULL CHECK(status IN ('pending', 'completed')),
32933
+ created_at TEXT NOT NULL,
32934
+ completed_at TEXT,
32935
+ PRIMARY KEY(agent_id, revision),
32936
+ UNIQUE(agent_id, revision_id)
32937
+ );
32938
+ CREATE INDEX IF NOT EXISTS idx_memory_head_publications_pending
32939
+ ON memory_head_publications(agent_id, status, revision DESC);
32940
+ `);
32941
+ }
32726
32942
  var MIGRATIONS2 = [
32727
32943
  {
32728
32944
  version: 1,
32729
32945
  name: "baseline",
32730
- up: up133,
32946
+ up: up136,
32731
32947
  artifacts: { tables: ["memories", "conversations", "embeddings"] }
32732
32948
  },
32733
32949
  {
@@ -32805,7 +33021,7 @@ var MIGRATIONS2 = [
32805
33021
  {
32806
33022
  version: 13,
32807
33023
  name: "ingestion-tracking",
32808
- up: up134,
33024
+ up: up137,
32809
33025
  artifacts: {
32810
33026
  columns: [
32811
33027
  { table: "memories", column: "source_path" },
@@ -33777,6 +33993,24 @@ var MIGRATIONS2 = [
33777
33993
  name: "observer-scoped-epistemic-assertions",
33778
33994
  up: up1322,
33779
33995
  artifacts: { tables: ["epistemic_assertions"] }
33996
+ },
33997
+ {
33998
+ version: 133,
33999
+ name: "dreaming-memory-head",
34000
+ up: up1332,
34001
+ artifacts: { tables: ["memory_head_revisions", "memory_head_entries", "memory_head_revision_entries"] }
34002
+ },
34003
+ {
34004
+ version: 134,
34005
+ name: "scope-memory-head-entries",
34006
+ up: up1342,
34007
+ artifacts: { tables: ["memory_head_entries"] }
34008
+ },
34009
+ {
34010
+ version: 135,
34011
+ name: "memory-head-publication",
34012
+ up: up1352,
34013
+ artifacts: { tables: ["memory_head_publications"] }
33780
34014
  }
33781
34015
  ];
33782
34016
  var LATEST_SCHEMA_VERSION2 = MIGRATIONS2[MIGRATIONS2.length - 1]?.version ?? 0;
@@ -33819,16 +34053,42 @@ function classifyError2(error) {
33819
34053
  }
33820
34054
  return { state: "corrupt", message };
33821
34055
  }
34056
+ function tryRequireOverride2() {
34057
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34058
+ if (!override)
34059
+ return null;
34060
+ const isAbsolute2 = override.startsWith("/") || /^\\\\[^\\]+\\[^\\]+/.test(override) || /^[A-Za-z]:[\\/]/.test(override);
34061
+ if (!isAbsolute2)
34062
+ return null;
34063
+ try {
34064
+ return require22(override);
34065
+ } catch {
34066
+ return null;
34067
+ }
34068
+ }
33822
34069
  async function loadModule2() {
33823
- modulePromise2 ??= Promise.resolve().then(() => __toESM(require_keyring2(), 1)).catch(() => null);
34070
+ modulePromise2 ??= (async () => {
34071
+ const override = process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim();
34072
+ if (override)
34073
+ return tryRequireOverride2();
34074
+ return await Promise.resolve().then(() => __toESM(require_keyring2(), 1)).catch(() => null);
34075
+ })();
33824
34076
  return modulePromise2;
33825
34077
  }
33826
34078
  function loadModuleSync2() {
33827
34079
  if (syncModule2 !== undefined)
33828
34080
  return syncModule2;
34081
+ if (process.env.SIGNET_KEYRING_NATIVE_MODULE_PATH?.trim()) {
34082
+ syncModule2 = tryRequireOverride2();
34083
+ return syncModule2;
34084
+ }
34085
+ const override = tryRequireOverride2();
34086
+ if (override) {
34087
+ syncModule2 = override;
34088
+ return syncModule2;
34089
+ }
33829
34090
  try {
33830
- const mod = require22("@napi-rs/keyring");
33831
- syncModule2 = mod;
34091
+ syncModule2 = require22("@napi-rs/keyring");
33832
34092
  } catch {
33833
34093
  syncModule2 = null;
33834
34094
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/connector-hermes-agent",
3
- "version": "0.206.7",
3
+ "version": "0.207.2",
4
4
  "description": "Signet connector for Hermes Agent — installs Signet as a pluggable memory provider",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,8 +25,8 @@
25
25
  "typecheck": "tsc --noEmit"
26
26
  },
27
27
  "dependencies": {
28
- "@signetai/connector-base": "0.206.7",
29
- "@signetai/core": "0.206.7"
28
+ "@signetai/connector-base": "0.207.2",
29
+ "@signetai/core": "0.207.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.0.0",