@traqr/memory 0.2.14 → 0.2.15

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.
package/dist/migrate.js CHANGED
@@ -37,8 +37,9 @@ async function migrate() {
37
37
  `,
38
38
  }).then(({ error }) => {
39
39
  if (error) {
40
- // If RPC doesn't exist, try raw query via REST
41
- console.warn('exec_sql RPC not available, attempting direct execution...');
40
+ // No fallback exists proceed only because the table may already
41
+ // exist; the tracking-table read below fails loudly if it doesn't.
42
+ console.warn(`exec_sql RPC unavailable (${error.message}) — assuming ${MIGRATIONS_TABLE} already exists`);
42
43
  }
43
44
  });
44
45
  // Find migration files
@@ -47,10 +48,16 @@ async function migrate() {
47
48
  .filter(f => f.endsWith('.sql'))
48
49
  .sort();
49
50
  console.log(`Found ${files.length} migration files`);
50
- // Check which have been applied
51
- const { data: applied } = await client
51
+ // Check which have been applied. An unreadable tracking table must be
52
+ // fatal: treating it as "nothing applied" would re-run every migration.
53
+ const { data: applied, error: trackingError } = await client
52
54
  .from(MIGRATIONS_TABLE)
53
55
  .select('name');
56
+ if (trackingError) {
57
+ console.error(`Cannot read ${MIGRATIONS_TABLE}: ${trackingError.message}`);
58
+ console.error('Create the exec_sql RPC, or paste .traqr/schema.sql into the Supabase SQL Editor.');
59
+ process.exit(1);
60
+ }
54
61
  const appliedSet = new Set((applied || []).map(r => r.name));
55
62
  let appliedCount = 0;
56
63
  let skippedCount = 0;
@@ -67,8 +74,13 @@ async function migrate() {
67
74
  console.error(` FAIL ${file}: ${error.message}`);
68
75
  process.exit(1);
69
76
  }
70
- // Record migration
71
- await client.from(MIGRATIONS_TABLE).insert({ name: file });
77
+ // Record migration. A failed record means silent re-application on
78
+ // the next run — stop loudly instead.
79
+ const { error: recordError } = await client.from(MIGRATIONS_TABLE).insert({ name: file });
80
+ if (recordError) {
81
+ console.error(` FAIL ${file} applied but could not be recorded: ${recordError.message}`);
82
+ process.exit(1);
83
+ }
72
84
  appliedCount++;
73
85
  console.log(` OK ${file}`);
74
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,7 @@
9
9
  * The caller is responsible for extraction.
10
10
  */
11
11
  import { Hono } from 'hono';
12
- import { storeWithDedup } from '../lib/memory.js';
13
- import { getMemoryClient } from '../lib/client.js';
12
+ import { storeWithDedup, citeMemory } from '../lib/memory.js';
14
13
  import { passesIngestionGate } from '../lib/quality-gate.js';
15
14
  const app = new Hono();
16
15
  app.post('/', async (c) => {
@@ -57,15 +56,15 @@ app.post('/', async (c) => {
57
56
  let citedCount = 0;
58
57
  const citedMemories = Array.isArray(body.citedMemories) ? body.citedMemories : [];
59
58
  if (citedMemories.length > 0) {
60
- const client = getMemoryClient();
61
59
  for (const id of citedMemories.slice(0, 50)) {
62
60
  try {
63
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
- await client.rpc('cite_memory', { p_memory_id: id });
61
+ // Provider-routed (TD-817): throws on failure, so citedCount
62
+ // only counts cites that actually landed.
63
+ await citeMemory(id);
65
64
  citedCount++;
66
65
  }
67
- catch {
68
- // Best-effort
66
+ catch (err) {
67
+ console.warn(`[memory/capture] Failed to cite ${id}:`, err);
69
68
  }
70
69
  }
71
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/routes/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/routes/capture.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Records that an agent explicitly referenced memories (cited them).
6
6
  */
7
7
  import { Hono } from 'hono';
8
- import { getMemoryClient } from '../lib/client.js';
8
+ import { citeMemory } from '../lib/memory.js';
9
9
  const app = new Hono();
10
10
  app.post('/', async (c) => {
11
11
  try {
@@ -19,13 +19,14 @@ app.post('/', async (c) => {
19
19
  return c.json({ success: false, error: 'memoryId or memoryIds required' }, 400);
20
20
  }
21
21
  const ids = memoryIds.slice(0, 50);
22
- const client = getMemoryClient();
23
22
  let citedCount = 0;
24
23
  const failedIds = [];
25
24
  for (const id of ids) {
26
25
  try {
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- await client.rpc('cite_memory', { p_memory_id: id });
26
+ // Provider-routed (TD-817): works on DATABASE_URL-only deployments
27
+ // and throws on failure, so failed cites land in failedIds instead
28
+ // of counting as successes.
29
+ await citeMemory(id);
29
30
  citedCount++;
30
31
  }
31
32
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"cite.js","sourceRoot":"","sources":["../../src/routes/cite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AAEtB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAE/B,MAAM,SAAS,GAAa,IAAI,CAAC,SAAS;YACxC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACb,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,CAAC,CAAC,EAAE,CAAA;QAER,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;QAChC,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,MAAM,SAAS,GAAa,EAAE,CAAA;QAE9B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,MAAO,MAAM,CAAC,GAAW,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC7D,UAAU,EAAE,CAAA;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACxD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC;YAC/B,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,GAAG,CAAC,MAAM;SACtB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC5C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EACnF,GAAG,CACJ,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,GAAG,CAAA"}
1
+ {"version":3,"file":"cite.js","sourceRoot":"","sources":["../../src/routes/cite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AAEtB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAE/B,MAAM,SAAS,GAAa,IAAI,CAAC,SAAS;YACxC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACb,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,CAAC,CAAC,EAAE,CAAA;QAER,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClC,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,MAAM,SAAS,GAAa,EAAE,CAAA;QAE9B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,mEAAmE;gBACnE,mEAAmE;gBACnE,4BAA4B;gBAC5B,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;gBACpB,UAAU,EAAE,CAAA;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACxD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC;YAC/B,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,GAAG,CAAC,MAAM;SACtB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC5C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EACnF,GAAG,CACJ,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,GAAG,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traqr/memory",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "Persistent memory for AI agents. Multi-strategy retrieval (semantic + BM25 + RRF), 3-zone cosine triage, type-aware lifecycle, entity canonicalization. Postgres + pgvector.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",