@signetai/signet-memory-openclaw 0.77.5 → 0.77.7

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 +126 -0
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -8438,6 +8438,124 @@ function up47(db) {
8438
8438
  AND COALESCE(source_type, 'summary') = 'summary';
8439
8439
  `);
8440
8440
  }
8441
+ function up48(db) {
8442
+ db.exec(`
8443
+ CREATE TABLE IF NOT EXISTS memory_thread_heads (
8444
+ agent_id TEXT NOT NULL DEFAULT 'default',
8445
+ thread_key TEXT NOT NULL,
8446
+ label TEXT NOT NULL,
8447
+ project TEXT,
8448
+ session_key TEXT,
8449
+ source_type TEXT NOT NULL DEFAULT 'summary',
8450
+ source_ref TEXT,
8451
+ harness TEXT,
8452
+ node_id TEXT NOT NULL,
8453
+ latest_at TEXT NOT NULL,
8454
+ sample TEXT NOT NULL,
8455
+ updated_at TEXT NOT NULL,
8456
+ PRIMARY KEY (agent_id, thread_key)
8457
+ );
8458
+
8459
+ CREATE INDEX IF NOT EXISTS idx_thread_heads_agent_latest
8460
+ ON memory_thread_heads(agent_id, latest_at DESC);
8461
+ CREATE INDEX IF NOT EXISTS idx_thread_heads_agent_project
8462
+ ON memory_thread_heads(agent_id, project);
8463
+
8464
+ INSERT INTO memory_thread_heads (
8465
+ agent_id, thread_key, label, project, session_key, source_type,
8466
+ source_ref, harness, node_id, latest_at, sample, updated_at
8467
+ )
8468
+ SELECT
8469
+ ss.agent_id,
8470
+ CASE
8471
+ WHEN ss.harness IS NOT NULL AND TRIM(ss.harness) != ''
8472
+ AND (ss.project IS NULL OR TRIM(ss.project) = '')
8473
+ AND (ss.source_ref IS NULL OR TRIM(ss.source_ref) = '')
8474
+ AND (ss.session_key IS NULL OR TRIM(ss.session_key) = '')
8475
+ THEN 'harness:' || TRIM(ss.harness)
8476
+ ELSE
8477
+ CASE
8478
+ WHEN ss.source_ref IS NOT NULL AND TRIM(ss.source_ref) != '' AND ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN
8479
+ 'project:' || TRIM(ss.project) || '|source:' || TRIM(ss.source_ref)
8480
+ WHEN ss.source_ref IS NOT NULL AND TRIM(ss.source_ref) != '' THEN 'source:' || TRIM(ss.source_ref)
8481
+ WHEN ss.session_key IS NOT NULL AND TRIM(ss.session_key) != '' AND ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN
8482
+ 'project:' || TRIM(ss.project) || '|session:' || TRIM(ss.session_key)
8483
+ WHEN ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN 'project:' || TRIM(ss.project)
8484
+ WHEN ss.session_key IS NOT NULL AND TRIM(ss.session_key) != '' THEN 'session:' || TRIM(ss.session_key)
8485
+ ELSE 'thread:unscoped'
8486
+ END ||
8487
+ CASE
8488
+ WHEN ss.harness IS NOT NULL AND TRIM(ss.harness) != '' THEN '|harness:' || TRIM(ss.harness)
8489
+ ELSE ''
8490
+ END
8491
+ END AS thread_key,
8492
+ CASE
8493
+ WHEN ss.source_ref IS NOT NULL AND TRIM(ss.source_ref) != '' AND ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN
8494
+ 'project:' || TRIM(ss.project) || '#source:' || TRIM(ss.source_ref)
8495
+ WHEN ss.source_ref IS NOT NULL AND TRIM(ss.source_ref) != '' THEN 'source:' || TRIM(ss.source_ref)
8496
+ WHEN ss.session_key IS NOT NULL AND TRIM(ss.session_key) != '' AND ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN
8497
+ 'project:' || TRIM(ss.project) || '#session:' || TRIM(ss.session_key)
8498
+ WHEN ss.project IS NOT NULL AND TRIM(ss.project) != '' THEN 'project:' || TRIM(ss.project)
8499
+ WHEN ss.session_key IS NOT NULL AND TRIM(ss.session_key) != '' THEN 'session:' || TRIM(ss.session_key)
8500
+ WHEN ss.harness IS NOT NULL AND TRIM(ss.harness) != '' THEN 'harness:' || TRIM(ss.harness)
8501
+ ELSE 'thread:unscoped'
8502
+ END AS label,
8503
+ ss.project,
8504
+ ss.session_key,
8505
+ COALESCE(ss.source_type, ss.kind, 'summary') AS source_type,
8506
+ ss.source_ref,
8507
+ ss.harness,
8508
+ ss.id AS node_id,
8509
+ ss.latest_at,
8510
+ SUBSTR(REPLACE(REPLACE(TRIM(ss.content), CHAR(10), ' '), CHAR(13), ' '), 1, 240) AS sample,
8511
+ ss.latest_at AS updated_at
8512
+ FROM (
8513
+ SELECT
8514
+ s0.*,
8515
+ ROW_NUMBER() OVER (
8516
+ PARTITION BY s0.agent_id,
8517
+ CASE
8518
+ WHEN s0.harness IS NOT NULL AND TRIM(s0.harness) != ''
8519
+ AND (s0.project IS NULL OR TRIM(s0.project) = '')
8520
+ AND (s0.source_ref IS NULL OR TRIM(s0.source_ref) = '')
8521
+ AND (s0.session_key IS NULL OR TRIM(s0.session_key) = '')
8522
+ THEN 'harness:' || TRIM(s0.harness)
8523
+ ELSE
8524
+ CASE
8525
+ WHEN s0.source_ref IS NOT NULL AND TRIM(s0.source_ref) != '' AND s0.project IS NOT NULL AND TRIM(s0.project) != '' THEN
8526
+ 'project:' || TRIM(s0.project) || '|source:' || TRIM(s0.source_ref)
8527
+ WHEN s0.source_ref IS NOT NULL AND TRIM(s0.source_ref) != '' THEN 'source:' || TRIM(s0.source_ref)
8528
+ WHEN s0.session_key IS NOT NULL AND TRIM(s0.session_key) != '' AND s0.project IS NOT NULL AND TRIM(s0.project) != '' THEN
8529
+ 'project:' || TRIM(s0.project) || '|session:' || TRIM(s0.session_key)
8530
+ WHEN s0.project IS NOT NULL AND TRIM(s0.project) != '' THEN 'project:' || TRIM(s0.project)
8531
+ WHEN s0.session_key IS NOT NULL AND TRIM(s0.session_key) != '' THEN 'session:' || TRIM(s0.session_key)
8532
+ ELSE 'thread:unscoped'
8533
+ END ||
8534
+ CASE
8535
+ WHEN s0.harness IS NOT NULL AND TRIM(s0.harness) != '' THEN '|harness:' || TRIM(s0.harness)
8536
+ ELSE ''
8537
+ END
8538
+ END
8539
+ ORDER BY s0.latest_at DESC, s0.created_at DESC
8540
+ ) AS rn
8541
+ FROM session_summaries s0
8542
+ WHERE COALESCE(s0.source_type, s0.kind) != 'chunk'
8543
+ ) ss
8544
+ WHERE ss.rn = 1
8545
+ ON CONFLICT(agent_id, thread_key) DO UPDATE SET
8546
+ label = excluded.label,
8547
+ project = excluded.project,
8548
+ session_key = excluded.session_key,
8549
+ source_type = excluded.source_type,
8550
+ source_ref = excluded.source_ref,
8551
+ harness = excluded.harness,
8552
+ node_id = excluded.node_id,
8553
+ latest_at = excluded.latest_at,
8554
+ sample = excluded.sample,
8555
+ updated_at = excluded.updated_at
8556
+ WHERE excluded.latest_at >= memory_thread_heads.latest_at;
8557
+ `);
8558
+ }
8441
8559
  var MIGRATIONS = [
8442
8560
  {
8443
8561
  version: 1,
@@ -8806,6 +8924,14 @@ var MIGRATIONS = [
8806
8924
  version: 47,
8807
8925
  name: "agent-scoped-temporal-uniqueness",
8808
8926
  up: up47
8927
+ },
8928
+ {
8929
+ version: 48,
8930
+ name: "thread-heads",
8931
+ up: up48,
8932
+ artifacts: {
8933
+ tables: ["memory_thread_heads"]
8934
+ }
8809
8935
  }
8810
8936
  ];
8811
8937
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/signet-memory-openclaw",
3
- "version": "0.77.5",
3
+ "version": "0.77.7",
4
4
  "description": "Signet adapter for OpenClaw — runtime plugin for AI agent memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -36,7 +36,7 @@
36
36
  "@sinclair/typebox": "0.34.47"
37
37
  },
38
38
  "devDependencies": {
39
- "@signet/core": "0.77.5",
39
+ "@signet/core": "0.77.7",
40
40
  "@types/node": "^22.0.0"
41
41
  },
42
42
  "peerDependencies": {