@withone/mem 0.1.0 → 0.2.1

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/bin/mem CHANGED
@@ -6,8 +6,14 @@
6
6
 
7
7
  set -e
8
8
 
9
- # Find the project root (where package.json is)
10
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ # Resolve symlinks (npm creates symlinks in node_modules/.bin/)
10
+ SOURCE="${BASH_SOURCE[0]}"
11
+ while [ -L "$SOURCE" ]; do
12
+ DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
13
+ SOURCE="$(readlink "$SOURCE")"
14
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
15
+ done
16
+ SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
11
17
  PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
12
18
 
13
19
  # Load .env from current working directory (preferred) or project root (fallback)
package/dist/cli.js CHANGED
@@ -33,7 +33,7 @@ import { dirname, join } from "path";
33
33
  import { fileURLToPath } from "url";
34
34
  const __filename = fileURLToPath(import.meta.url);
35
35
  const __dirname = dirname(__filename);
36
- import { add, get, list, update, remove, link, unlink, linked, search, context, archive, unarchive, flush, weight, } from "./client.js";
36
+ import { add, get, list, update, remove, link, unlink, linked, search, context, archive, unarchive, flush, weight, addExternalRef, findByExternalRef, listExternalRefs, findByKey, upsertByKeys, addKeys, removeKeys, } from "./client.js";
37
37
  import { SCHEMA_VERSION, getMigrationSQL } from "./schema.js";
38
38
  const program = new Command();
39
39
  program
@@ -46,20 +46,33 @@ program
46
46
  program
47
47
  .command("add <type> <json>")
48
48
  .description("Add a new memory")
49
- .action(async (type, jsonStr) => {
49
+ .option("-k, --keys <keys>", "Comma-separated identity keys")
50
+ .action(async (type, jsonStr, options) => {
50
51
  try {
51
52
  const data = JSON.parse(jsonStr);
52
53
  const tags = data.tags;
53
54
  const weightVal = data.weight;
55
+ const dataKeys = data.keys;
54
56
  delete data.tags;
55
57
  delete data.weight;
56
- const result = await add(type, data, { tags, weight: weightVal });
58
+ delete data.keys;
59
+ // Merge keys from --keys flag and data.keys
60
+ let keys;
61
+ if (options.keys) {
62
+ keys = options.keys.split(",").map((k) => k.trim());
63
+ }
64
+ if (Array.isArray(dataKeys)) {
65
+ keys = [...(keys || []), ...dataKeys];
66
+ }
67
+ const result = await add(type, data, { tags, keys, weight: weightVal });
57
68
  if (result) {
58
69
  const name = data.content?.slice(0, 50) || data.topic || data.title || result.id;
59
70
  console.log(`Added ${type}: ${name}`);
60
71
  console.log(`ID: ${result.id}`);
61
72
  if (weightVal)
62
73
  console.log(`Weight: ${weightVal}`);
74
+ if (keys?.length)
75
+ console.log(`Keys: ${keys.join(", ")}`);
63
76
  }
64
77
  else {
65
78
  console.error("Failed to add memory");
@@ -73,10 +86,22 @@ program
73
86
  });
74
87
  program
75
88
  .command("get <id>")
76
- .description("Get a memory by ID")
89
+ .description("Get a memory by ID or key")
77
90
  .option("--with-links", "Include linked records")
78
91
  .action(async (id, options) => {
79
- const result = await get(id, options.withLinks);
92
+ // Auto-detect: UUID starts with 8 hex chars followed by a dash
93
+ const isUuid = /^[0-9a-f]{8}-/.test(id);
94
+ let result;
95
+ if (isUuid) {
96
+ result = await get(id, options.withLinks);
97
+ }
98
+ else {
99
+ // Treat as a key
100
+ result = await findByKey(id);
101
+ if (result && options.withLinks) {
102
+ result = await get(result.id, true);
103
+ }
104
+ }
80
105
  if (result) {
81
106
  console.log(JSON.stringify(result, null, 2));
82
107
  }
@@ -141,6 +166,74 @@ program
141
166
  }
142
167
  });
143
168
  // =============================================================================
169
+ // Key-Based Commands
170
+ // =============================================================================
171
+ program
172
+ .command("upsert <type> <json>")
173
+ .description("Upsert a memory by keys (insert or update)")
174
+ .option("-k, --keys <keys>", "Comma-separated identity keys (required)")
175
+ .action(async (type, jsonStr, options) => {
176
+ try {
177
+ const data = JSON.parse(jsonStr);
178
+ const tags = data.tags;
179
+ const weightVal = data.weight;
180
+ const dataKeys = data.keys;
181
+ delete data.tags;
182
+ delete data.weight;
183
+ delete data.keys;
184
+ let keys = [];
185
+ if (options.keys) {
186
+ keys.push(...options.keys.split(",").map((k) => k.trim()));
187
+ }
188
+ if (Array.isArray(dataKeys)) {
189
+ keys.push(...dataKeys);
190
+ }
191
+ if (keys.length === 0) {
192
+ console.error("Keys required. Use --keys or include keys in JSON.");
193
+ process.exit(1);
194
+ }
195
+ const result = await upsertByKeys(type, data, keys, { tags, weight: weightVal });
196
+ if (result) {
197
+ const name = data.content?.slice(0, 50) || data.topic || data.title || result.record.id;
198
+ console.log(`${result.action === "inserted" ? "Inserted" : "Updated"} ${type}: ${name}`);
199
+ console.log(`ID: ${result.record.id}`);
200
+ console.log(`Action: ${result.action}`);
201
+ }
202
+ else {
203
+ console.error("Failed to upsert memory");
204
+ process.exit(1);
205
+ }
206
+ }
207
+ catch (error) {
208
+ console.error("Error:", error.message);
209
+ process.exit(1);
210
+ }
211
+ });
212
+ program
213
+ .command("add-key <id> <key>")
214
+ .description("Add a key to a memory")
215
+ .action(async (id, key) => {
216
+ if (await addKeys(id, [key])) {
217
+ console.log(`Added key "${key}" to ${id}`);
218
+ }
219
+ else {
220
+ console.error("Failed to add key");
221
+ process.exit(1);
222
+ }
223
+ });
224
+ program
225
+ .command("remove-key <id> <key>")
226
+ .description("Remove a key from a memory")
227
+ .action(async (id, key) => {
228
+ if (await removeKeys(id, [key])) {
229
+ console.log(`Removed key "${key}" from ${id}`);
230
+ }
231
+ else {
232
+ console.error("Failed to remove key");
233
+ process.exit(1);
234
+ }
235
+ });
236
+ // =============================================================================
144
237
  // Link Commands
145
238
  // =============================================================================
146
239
  program
@@ -182,6 +275,65 @@ program
182
275
  console.log(`\n${results.length} linked memories`);
183
276
  });
184
277
  // =============================================================================
278
+ // External Reference Commands
279
+ // =============================================================================
280
+ program
281
+ .command("ref <record_id> <system> <external_id>")
282
+ .description("Add an external reference to a record")
283
+ .option("--url <url>", "External URL (deep link)")
284
+ .action(async (recordId, system, externalId, options) => {
285
+ const result = await addExternalRef(recordId, system, externalId, {
286
+ url: options.url,
287
+ });
288
+ if (result) {
289
+ console.log(`Added ref: ${system}:${externalId} -> ${recordId}`);
290
+ if (options.url)
291
+ console.log(`URL: ${options.url}`);
292
+ }
293
+ else {
294
+ console.error("Failed to add external ref");
295
+ process.exit(1);
296
+ }
297
+ });
298
+ program
299
+ .command("refs <record_id>")
300
+ .description("List external references for a record")
301
+ .action(async (recordId) => {
302
+ const refs = await listExternalRefs(recordId);
303
+ if (refs.length === 0) {
304
+ console.log("No external references");
305
+ return;
306
+ }
307
+ for (const ref of refs) {
308
+ console.log(`${ref.system}:${ref.external_id}`);
309
+ if (ref.external_url)
310
+ console.log(` URL: ${ref.external_url}`);
311
+ console.log(` Synced: ${ref.last_synced_at}`);
312
+ }
313
+ console.log(`\n${refs.length} references`);
314
+ });
315
+ program
316
+ .command("find-ref <system> <external_id>")
317
+ .description("Find a record by external reference")
318
+ .action(async (system, externalId) => {
319
+ const result = await findByExternalRef(system, externalId);
320
+ if (result) {
321
+ const data = result.record.data;
322
+ const name = data.content?.slice(0, 50) ||
323
+ data.topic ||
324
+ data.title ||
325
+ data.name ||
326
+ result.record.id;
327
+ console.log(`Found: ${result.record.type}: ${name}`);
328
+ console.log(`ID: ${result.record.id}`);
329
+ console.log(JSON.stringify(result.record, null, 2));
330
+ }
331
+ else {
332
+ console.log(`No record found for ${system}:${externalId}`);
333
+ process.exit(1);
334
+ }
335
+ });
336
+ // =============================================================================
185
337
  // Search Commands
186
338
  // =============================================================================
187
339
  program
@@ -196,7 +348,8 @@ program
196
348
  });
197
349
  for (const r of results) {
198
350
  const data = r.data;
199
- const name = data.content?.slice(0, 50) ||
351
+ const name = data.name ||
352
+ data.content?.slice(0, 50) ||
200
353
  data.topic ||
201
354
  data.title ||
202
355
  r.id.slice(0, 8);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { SupabaseClient } from "@supabase/supabase-js";
6
6
  import OpenAI from "openai";
7
- import type { MemRecord, MemRecordWithLinks, SearchResult, ContextResult, LinkedRecord, AddRecordOptions, UpdateRecordOptions, SearchOptions, ContextOptions, LinkedOptions } from "./types.js";
7
+ import type { MemRecord, MemRecordWithLinks, ExternalRef, AddExternalRefOptions, SearchResult, ContextResult, LinkedRecord, AddRecordOptions, UpdateRecordOptions, SearchOptions, ContextOptions, LinkedOptions, UpsertResult } from "./types.js";
8
8
  export declare function getSupabase(): SupabaseClient;
9
9
  export declare function getOpenAI(): OpenAI;
10
10
  /**
@@ -87,6 +87,45 @@ export declare function flush(recordIds: string[]): Promise<number>;
87
87
  * Set weight for a record (1-10)
88
88
  */
89
89
  export declare function weight(recordId: string, value: number): Promise<boolean>;
90
+ /**
91
+ * Find a record by one of its keys
92
+ */
93
+ export declare function findByKey(key: string): Promise<MemRecord | null>;
94
+ /**
95
+ * Upsert a record by keys. If any key matches an existing record, update it.
96
+ * Otherwise insert a new record.
97
+ */
98
+ export declare function upsertByKeys(type: string, data: Record<string, unknown>, keys: string[], options?: {
99
+ tags?: string[];
100
+ weight?: number;
101
+ }): Promise<UpsertResult | null>;
102
+ /**
103
+ * Add keys to an existing record
104
+ */
105
+ export declare function addKeys(id: string, newKeys: string[]): Promise<boolean>;
106
+ /**
107
+ * Remove keys from an existing record
108
+ */
109
+ export declare function removeKeys(id: string, keysToRemove: string[]): Promise<boolean>;
110
+ /**
111
+ * Add an external reference to a record
112
+ */
113
+ export declare function addExternalRef(recordId: string, system: string, externalId: string, options?: AddExternalRefOptions): Promise<string | null>;
114
+ /**
115
+ * Find a record by its external reference
116
+ */
117
+ export declare function findByExternalRef(system: string, externalId: string): Promise<{
118
+ record: MemRecord;
119
+ ref: ExternalRef;
120
+ } | null>;
121
+ /**
122
+ * List all external references for a record
123
+ */
124
+ export declare function listExternalRefs(recordId: string): Promise<ExternalRef[]>;
125
+ /**
126
+ * Update the last_synced_at timestamp for an external ref
127
+ */
128
+ export declare function touchExternalRef(system: string, externalId: string): Promise<boolean>;
90
129
  /**
91
130
  * Apply the database schema
92
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -81,13 +81,16 @@ export function extractSearchableText(data) {
81
81
  * Add a new memory record
82
82
  */
83
83
  export async function add(type, data, options = {}) {
84
- const { tags, weight, generateEmbedding = true } = options;
84
+ const { tags, keys, weight, generateEmbedding = true } = options;
85
85
  const db = getSupabase();
86
86
  const insertData = {
87
87
  type,
88
88
  data,
89
89
  tags: tags || extractTags(data),
90
90
  };
91
+ if (keys?.length) {
92
+ insertData.keys = keys;
93
+ }
91
94
  if (weight !== undefined && weight >= 1 && weight <= 10) {
92
95
  insertData.weight = weight;
93
96
  }
@@ -159,7 +162,7 @@ export async function list(type, options = {}) {
159
162
  * Update a record
160
163
  */
161
164
  export async function update(id, data, options = {}) {
162
- const { tags, regenerateEmbedding = true } = options;
165
+ const { tags, keys, regenerateEmbedding = true } = options;
163
166
  const db = getSupabase();
164
167
  const existing = await get(id);
165
168
  if (!existing)
@@ -181,6 +184,9 @@ export async function update(id, data, options = {}) {
181
184
  if (tags !== undefined) {
182
185
  updateData.tags = tags;
183
186
  }
187
+ if (keys !== undefined) {
188
+ updateData.keys = keys;
189
+ }
184
190
  if (Object.keys(updateData).length === 0) {
185
191
  return existing;
186
192
  }
@@ -286,7 +292,46 @@ export async function search(query, options = {}) {
286
292
  console.error("Error in hybrid search:", error);
287
293
  return [];
288
294
  }
289
- const results = data || [];
295
+ let results = data || [];
296
+ // Boost name matches for short queries (1-2 words) where hybrid search
297
+ // tends to drown out exact name hits with semantically similar records
298
+ const wordCount = query.trim().split(/\s+/).length;
299
+ if (wordCount <= 2 && query.length <= 30) {
300
+ const pattern = `%${query}%`;
301
+ let nameQuery = db
302
+ .from("mem_records")
303
+ .select("id, type, data, tags")
304
+ .or(`data->>name.ilike.${pattern},data->>title.ilike.${pattern},data->>topic.ilike.${pattern}`)
305
+ .eq("status", "active");
306
+ if (type) {
307
+ nameQuery = nameQuery.eq("type", type);
308
+ }
309
+ const { data: nameHits, error: nameError } = await nameQuery.limit(5);
310
+ if (nameError) {
311
+ console.error("Name boost query failed:", nameError.message);
312
+ }
313
+ if (nameHits && nameHits.length > 0) {
314
+ const resultIds = new Set(results.map((r) => r.id));
315
+ const boostScore = results.length > 0 ? results[0].combined_score + 0.01 : 1.0;
316
+ // Boost existing results that match by name
317
+ const nameHitIds = new Set(nameHits.map((h) => h.id));
318
+ const boosted = results.filter((r) => nameHitIds.has(r.id)).map((r) => ({ ...r, combined_score: boostScore }));
319
+ const rest = results.filter((r) => !nameHitIds.has(r.id));
320
+ // Add name hits not already in results
321
+ const newHits = nameHits
322
+ .filter((h) => !resultIds.has(h.id))
323
+ .map((h) => ({
324
+ id: h.id,
325
+ type: h.type,
326
+ data: h.data,
327
+ tags: h.tags,
328
+ fts_rank: 0,
329
+ semantic_rank: 0,
330
+ combined_score: boostScore,
331
+ }));
332
+ results = [...boosted, ...newHits, ...rest].slice(0, limit);
333
+ }
334
+ }
290
335
  // Track access for returned results
291
336
  if (trackAccess && results.length > 0) {
292
337
  const ids = results.map((r) => r.id);
@@ -420,6 +465,186 @@ export async function weight(recordId, value) {
420
465
  return true;
421
466
  }
422
467
  // =============================================================================
468
+ // Key-Based Operations
469
+ // =============================================================================
470
+ /**
471
+ * Find a record by one of its keys
472
+ */
473
+ export async function findByKey(key) {
474
+ const db = getSupabase();
475
+ const { data, error } = await db.rpc("mem_find_by_key", { p_key: key });
476
+ if (error) {
477
+ console.error("Error finding by key:", error);
478
+ return null;
479
+ }
480
+ if (!data || data.length === 0)
481
+ return null;
482
+ return data[0];
483
+ }
484
+ /**
485
+ * Upsert a record by keys. If any key matches an existing record, update it.
486
+ * Otherwise insert a new record.
487
+ */
488
+ export async function upsertByKeys(type, data, keys, options = {}) {
489
+ const db = getSupabase();
490
+ const { tags, weight } = options;
491
+ // Generate embedding
492
+ let embedding = null;
493
+ if (hasOpenAI()) {
494
+ const searchableText = extractSearchableText(data);
495
+ if (searchableText) {
496
+ embedding = await getEmbedding(searchableText);
497
+ }
498
+ }
499
+ const { data: result, error } = await db.rpc("mem_upsert_by_keys", {
500
+ p_type: type,
501
+ p_data: data,
502
+ p_tags: tags || extractTags(data),
503
+ p_keys: keys,
504
+ p_weight: weight || null,
505
+ p_embedding: embedding,
506
+ });
507
+ if (error) {
508
+ console.error("Error upserting by keys:", error);
509
+ return null;
510
+ }
511
+ if (!result || result.length === 0)
512
+ return null;
513
+ const { id, action } = result[0];
514
+ const record = await get(id);
515
+ if (!record)
516
+ return null;
517
+ return { record, action };
518
+ }
519
+ /**
520
+ * Add keys to an existing record
521
+ */
522
+ export async function addKeys(id, newKeys) {
523
+ const db = getSupabase();
524
+ const record = await get(id);
525
+ if (!record)
526
+ return false;
527
+ const existing = record.keys || [];
528
+ const merged = [...new Set([...existing, ...newKeys])];
529
+ const { error } = await db
530
+ .from("mem_records")
531
+ .update({ keys: merged })
532
+ .eq("id", id);
533
+ if (error) {
534
+ console.error("Error adding keys:", error);
535
+ return false;
536
+ }
537
+ return true;
538
+ }
539
+ /**
540
+ * Remove keys from an existing record
541
+ */
542
+ export async function removeKeys(id, keysToRemove) {
543
+ const db = getSupabase();
544
+ const record = await get(id);
545
+ if (!record)
546
+ return false;
547
+ const existing = record.keys || [];
548
+ const removeSet = new Set(keysToRemove);
549
+ const filtered = existing.filter((k) => !removeSet.has(k));
550
+ const { error } = await db
551
+ .from("mem_records")
552
+ .update({ keys: filtered })
553
+ .eq("id", id);
554
+ if (error) {
555
+ console.error("Error removing keys:", error);
556
+ return false;
557
+ }
558
+ return true;
559
+ }
560
+ // =============================================================================
561
+ // External References
562
+ // =============================================================================
563
+ /**
564
+ * Add an external reference to a record
565
+ */
566
+ export async function addExternalRef(recordId, system, externalId, options = {}) {
567
+ const { url, metadata } = options;
568
+ const db = getSupabase();
569
+ const { data, error } = await db.rpc("mem_add_external_ref", {
570
+ p_record_id: recordId,
571
+ p_system: system,
572
+ p_external_id: externalId,
573
+ p_external_url: url || null,
574
+ p_metadata: metadata || {},
575
+ });
576
+ if (error) {
577
+ console.error("Error adding external ref:", error);
578
+ return null;
579
+ }
580
+ return data;
581
+ }
582
+ /**
583
+ * Find a record by its external reference
584
+ */
585
+ export async function findByExternalRef(system, externalId) {
586
+ const db = getSupabase();
587
+ const { data, error } = await db.rpc("mem_find_by_external_ref", {
588
+ p_system: system,
589
+ p_external_id: externalId,
590
+ });
591
+ if (error) {
592
+ console.error("Error finding by external ref:", error);
593
+ return null;
594
+ }
595
+ if (!data || data.length === 0)
596
+ return null;
597
+ const row = data[0];
598
+ return {
599
+ record: {
600
+ id: row.id,
601
+ type: row.type,
602
+ data: row.data,
603
+ tags: row.tags,
604
+ weight: row.weight,
605
+ status: row.status,
606
+ },
607
+ ref: {
608
+ id: row.ref_id,
609
+ record_id: row.id,
610
+ system,
611
+ external_id: externalId,
612
+ external_url: row.external_url,
613
+ metadata: row.ref_metadata,
614
+ last_synced_at: row.last_synced_at,
615
+ },
616
+ };
617
+ }
618
+ /**
619
+ * List all external references for a record
620
+ */
621
+ export async function listExternalRefs(recordId) {
622
+ const db = getSupabase();
623
+ const { data, error } = await db.rpc("mem_list_external_refs", {
624
+ p_record_id: recordId,
625
+ });
626
+ if (error) {
627
+ console.error("Error listing external refs:", error);
628
+ return [];
629
+ }
630
+ return (data || []).map((r) => ({
631
+ ...r,
632
+ record_id: recordId,
633
+ }));
634
+ }
635
+ /**
636
+ * Update the last_synced_at timestamp for an external ref
637
+ */
638
+ export async function touchExternalRef(system, externalId) {
639
+ const db = getSupabase();
640
+ const { error } = await db
641
+ .from("mem_external_refs")
642
+ .update({ last_synced_at: new Date().toISOString() })
643
+ .eq("system", system)
644
+ .eq("external_id", externalId);
645
+ return !error;
646
+ }
647
+ // =============================================================================
423
648
  // Migration
424
649
  // =============================================================================
425
650
  import { getMigrationSQL } from "./schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * A simple, graph-based memory system backed by Supabase
5
5
  * with hybrid search and relevance scoring.
6
6
  */
7
- export { getSupabase, getOpenAI, hasOpenAI, add, get, list, update, remove, link, unlink, linked, search, ftsSearch, context, incrementAccess, archive, unarchive, flush, weight, migrate, getEmbedding, extractSearchableText, } from "./client.js";
8
- export type { MemRecord, MemRecordWithLinks, MemLink, SearchResult, ContextResult, LinkedRecord, AddRecordOptions, UpdateRecordOptions, SearchOptions, ContextOptions, LinkedOptions, } from "./types.js";
7
+ export { getSupabase, getOpenAI, hasOpenAI, add, get, list, update, remove, link, unlink, linked, search, ftsSearch, context, incrementAccess, archive, unarchive, flush, weight, findByKey, upsertByKeys, addKeys, removeKeys, addExternalRef, findByExternalRef, listExternalRefs, touchExternalRef, migrate, getEmbedding, extractSearchableText, } from "./client.js";
8
+ export type { MemRecord, MemRecordWithLinks, MemLink, ExternalRef, AddExternalRefOptions, SearchResult, ContextResult, LinkedRecord, UpsertResult, AddRecordOptions, UpdateRecordOptions, SearchOptions, ContextOptions, LinkedOptions, } from "./types.js";
9
9
  export { SCHEMA_VERSION, SCHEMA_SQL, VECTOR_INDEX_SQL, FUNCTIONS_SQL, getMigrationSQL, } from "./schema.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,WAAW,EACX,SAAS,EACT,SAAS,EAGT,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EAGN,IAAI,EACJ,MAAM,EACN,MAAM,EAGN,MAAM,EACN,SAAS,EAGT,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,EACT,KAAK,EACL,MAAM,EAGN,OAAO,EAGP,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,WAAW,EACX,SAAS,EACT,SAAS,EAGT,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EAGN,IAAI,EACJ,MAAM,EACN,MAAM,EAGN,MAAM,EACN,SAAS,EAGT,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,EACT,KAAK,EACL,MAAM,EAGN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EAGV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAGhB,OAAO,EAGP,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,10 @@ link, unlink, linked,
16
16
  search, ftsSearch,
17
17
  // Context & Relevance
18
18
  context, incrementAccess, archive, unarchive, flush, weight,
19
+ // Key-Based Operations
20
+ findByKey, upsertByKeys, addKeys, removeKeys,
21
+ // External References
22
+ addExternalRef, findByExternalRef, listExternalRefs, touchExternalRef,
19
23
  // Migration
20
24
  migrate,
21
25
  // Utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAwB;AACxB,OAAO;AACL,eAAe;AACf,WAAW,EACX,SAAS,EACT,SAAS;AAET,kBAAkB;AAClB,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM;AAEN,kBAAkB;AAClB,IAAI,EACJ,MAAM,EACN,MAAM;AAEN,SAAS;AACT,MAAM,EACN,SAAS;AAET,sBAAsB;AACtB,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,EACT,KAAK,EACL,MAAM;AAEN,YAAY;AACZ,OAAO;AAEP,YAAY;AACZ,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAiBrB,8BAA8B;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAwB;AACxB,OAAO;AACL,eAAe;AACf,WAAW,EACX,SAAS,EACT,SAAS;AAET,kBAAkB;AAClB,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM;AAEN,kBAAkB;AAClB,IAAI,EACJ,MAAM,EACN,MAAM;AAEN,SAAS;AACT,MAAM,EACN,SAAS;AAET,sBAAsB;AACtB,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,EACT,KAAK,EACL,MAAM;AAEN,uBAAuB;AACvB,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU;AAEV,sBAAsB;AACtB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB;AAEhB,YAAY;AACZ,OAAO;AAEP,YAAY;AACZ,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAoBrB,8BAA8B;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC"}
package/dist/schema.d.ts CHANGED
@@ -6,9 +6,9 @@
6
6
  * - mem_records: All memories
7
7
  * - mem_links: Relationships between records
8
8
  */
9
- export declare const SCHEMA_VERSION = "1.0.0";
10
- export declare const SCHEMA_SQL = "\n-- =============================================================================\n-- Mem: Memory for AI Agents\n-- https://mem.now\n-- Version: 1.0.0\n-- =============================================================================\n\n-- Enable required extensions\nCREATE EXTENSION IF NOT EXISTS vector;\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\n\n-- =============================================================================\n-- RECORDS: All memories\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_records (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n type TEXT NOT NULL, -- user-defined (note, decision, preference, etc.)\n data JSONB NOT NULL, -- flexible structure\n tags TEXT[],\n embedding vector(1536),\n searchable_text TEXT,\n searchable tsvector GENERATED ALWAYS AS (\n to_tsvector('english', COALESCE(searchable_text, ''))\n ) STORED,\n\n -- Relevance scoring\n weight INTEGER NOT NULL DEFAULT 5 CHECK (weight BETWEEN 1 AND 10),\n access_count INTEGER NOT NULL DEFAULT 0,\n last_accessed_at TIMESTAMPTZ,\n status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'archived')),\n\n created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\n);\n\n-- =============================================================================\n-- LINKS: Relationships between records\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_links (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n from_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,\n to_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,\n relation TEXT NOT NULL,\n bidirectional BOOLEAN NOT NULL DEFAULT false, -- true = traversable both ways\n metadata JSONB,\n created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n UNIQUE(from_id, to_id, relation)\n);\n\n-- =============================================================================\n-- INDEXES\n-- =============================================================================\n\nCREATE INDEX IF NOT EXISTS idx_mem_records_type ON mem_records(type);\nCREATE INDEX IF NOT EXISTS idx_mem_records_tags ON mem_records USING GIN(tags);\nCREATE INDEX IF NOT EXISTS idx_mem_records_data ON mem_records USING GIN(data);\nCREATE INDEX IF NOT EXISTS idx_mem_records_searchable ON mem_records USING GIN(searchable);\nCREATE INDEX IF NOT EXISTS idx_mem_records_status ON mem_records(status);\nCREATE INDEX IF NOT EXISTS idx_mem_records_relevance ON mem_records(\n status, weight DESC, access_count DESC, last_accessed_at DESC NULLS LAST\n);\n\nCREATE INDEX IF NOT EXISTS idx_mem_links_from ON mem_links(from_id);\nCREATE INDEX IF NOT EXISTS idx_mem_links_to ON mem_links(to_id);\nCREATE INDEX IF NOT EXISTS idx_mem_links_relation ON mem_links(relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_from_relation ON mem_links(from_id, relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_to_relation ON mem_links(to_id, relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_bidirectional ON mem_links(bidirectional) WHERE bidirectional = true;\n\n-- =============================================================================\n-- SCHEMA METADATA\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\n);\n\nINSERT INTO mem_meta (key, value) VALUES ('version', '1.0.0')\nON CONFLICT (key) DO UPDATE SET value = '1.0.0', updated_at = NOW();\n";
9
+ export declare const SCHEMA_VERSION = "1.2.0";
10
+ export declare const SCHEMA_SQL = "\n-- =============================================================================\n-- Mem: Memory for AI Agents\n-- https://mem.now\n-- Version: 1.2.0\n-- =============================================================================\n\n-- Enable required extensions\nCREATE EXTENSION IF NOT EXISTS vector;\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\n\n-- =============================================================================\n-- RECORDS: All memories\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_records (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n type TEXT NOT NULL, -- user-defined (note, decision, preference, etc.)\n data JSONB NOT NULL, -- flexible structure\n tags TEXT[],\n keys TEXT[],\n embedding vector(1536),\n searchable_text TEXT,\n searchable tsvector GENERATED ALWAYS AS (\n to_tsvector('english', COALESCE(searchable_text, ''))\n ) STORED,\n\n -- Relevance scoring\n weight INTEGER NOT NULL DEFAULT 5 CHECK (weight BETWEEN 1 AND 10),\n access_count INTEGER NOT NULL DEFAULT 0,\n last_accessed_at TIMESTAMPTZ,\n status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'archived')),\n\n created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\n);\n\n-- =============================================================================\n-- LINKS: Relationships between records\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_links (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n from_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,\n to_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,\n relation TEXT NOT NULL,\n bidirectional BOOLEAN NOT NULL DEFAULT false, -- true = traversable both ways\n metadata JSONB,\n created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n UNIQUE(from_id, to_id, relation)\n);\n\n-- Upgrade path: add keys column if it doesn't exist\nALTER TABLE mem_records ADD COLUMN IF NOT EXISTS keys TEXT[];\n\n-- =============================================================================\n-- INDEXES\n-- =============================================================================\n\nCREATE INDEX IF NOT EXISTS idx_mem_records_type ON mem_records(type);\nCREATE INDEX IF NOT EXISTS idx_mem_records_keys ON mem_records USING GIN(keys);\nCREATE INDEX IF NOT EXISTS idx_mem_records_tags ON mem_records USING GIN(tags);\nCREATE INDEX IF NOT EXISTS idx_mem_records_data ON mem_records USING GIN(data);\nCREATE INDEX IF NOT EXISTS idx_mem_records_searchable ON mem_records USING GIN(searchable);\nCREATE INDEX IF NOT EXISTS idx_mem_records_status ON mem_records(status);\nCREATE INDEX IF NOT EXISTS idx_mem_records_relevance ON mem_records(\n status, weight DESC, access_count DESC, last_accessed_at DESC NULLS LAST\n);\n\nCREATE INDEX IF NOT EXISTS idx_mem_links_from ON mem_links(from_id);\nCREATE INDEX IF NOT EXISTS idx_mem_links_to ON mem_links(to_id);\nCREATE INDEX IF NOT EXISTS idx_mem_links_relation ON mem_links(relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_from_relation ON mem_links(from_id, relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_to_relation ON mem_links(to_id, relation);\nCREATE INDEX IF NOT EXISTS idx_mem_links_bidirectional ON mem_links(bidirectional) WHERE bidirectional = true;\n\n-- =============================================================================\n-- EXTERNAL REFERENCES: Track where records came from\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_external_refs (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n record_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,\n system TEXT NOT NULL,\n external_id TEXT NOT NULL,\n external_url TEXT,\n metadata JSONB DEFAULT '{}',\n last_synced_at TIMESTAMPTZ DEFAULT NOW(),\n created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n UNIQUE(record_id, system, external_id)\n);\n\nCREATE UNIQUE INDEX IF NOT EXISTS idx_mem_ext_refs_lookup ON mem_external_refs(system, external_id);\nCREATE INDEX IF NOT EXISTS idx_mem_ext_refs_record ON mem_external_refs(record_id);\n\n-- =============================================================================\n-- SCHEMA METADATA\n-- =============================================================================\n\nCREATE TABLE IF NOT EXISTS mem_meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\n);\n\nINSERT INTO mem_meta (key, value) VALUES ('version', '1.2.0')\nON CONFLICT (key) DO UPDATE SET value = '1.2.0', updated_at = NOW();\n";
11
11
  export declare const VECTOR_INDEX_SQL = "\nDO $$\nBEGIN\n IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_mem_records_embedding') THEN\n CREATE INDEX idx_mem_records_embedding ON mem_records USING hnsw(embedding vector_cosine_ops);\n END IF;\nEND $$;\n";
12
- export declare const FUNCTIONS_SQL = "\n-- =============================================================================\n-- HYBRID SEARCH\n-- Combines semantic similarity with full-text search using RRF\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_hybrid_search(\n query_text TEXT,\n query_embedding vector(1536),\n match_count INT DEFAULT 10,\n filter_type TEXT DEFAULT NULL,\n full_text_weight FLOAT DEFAULT 0.3,\n semantic_weight FLOAT DEFAULT 0.7,\n rrf_k INT DEFAULT 50,\n include_archived BOOLEAN DEFAULT FALSE\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n fts_rank FLOAT,\n semantic_rank FLOAT,\n combined_score FLOAT\n)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n RETURN QUERY\n WITH fts_results AS (\n SELECT\n r.id,\n ROW_NUMBER() OVER (ORDER BY ts_rank_cd(r.searchable, websearch_to_tsquery('english', query_text)) DESC) AS rank\n FROM mem_records r\n WHERE r.searchable @@ websearch_to_tsquery('english', query_text)\n AND (filter_type IS NULL OR r.type = filter_type)\n AND (include_archived OR r.status = 'active')\n LIMIT match_count * 2\n ),\n semantic_results AS (\n SELECT\n r.id,\n ROW_NUMBER() OVER (ORDER BY r.embedding <=> query_embedding) AS rank\n FROM mem_records r\n WHERE r.embedding IS NOT NULL\n AND (filter_type IS NULL OR r.type = filter_type)\n AND (include_archived OR r.status = 'active')\n ORDER BY r.embedding <=> query_embedding\n LIMIT match_count * 2\n ),\n combined AS (\n SELECT\n COALESCE(fts.id, sem.id) AS id,\n COALESCE(1.0 / (rrf_k + fts.rank), 0.0) AS fts_score,\n COALESCE(1.0 / (rrf_k + sem.rank), 0.0) AS sem_score\n FROM fts_results fts\n FULL OUTER JOIN semantic_results sem ON fts.id = sem.id\n )\n SELECT\n r.id,\n r.type,\n r.data,\n r.tags,\n c.fts_score::FLOAT AS fts_rank,\n c.sem_score::FLOAT AS semantic_rank,\n (c.fts_score * full_text_weight + c.sem_score * semantic_weight)::FLOAT AS combined_score\n FROM combined c\n JOIN mem_records r ON r.id = c.id\n ORDER BY (c.fts_score * full_text_weight + c.sem_score * semantic_weight) DESC\n LIMIT match_count;\nEND;\n$$;\n\n-- =============================================================================\n-- RELEVANCE SCORING\n-- Combines: weight (40%), access frequency (30%), recency (30%)\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_calculate_relevance(\n p_weight INTEGER,\n p_access_count INTEGER,\n p_last_accessed_at TIMESTAMPTZ,\n p_created_at TIMESTAMPTZ,\n max_access_count INTEGER DEFAULT 100\n)\nRETURNS FLOAT\nLANGUAGE plpgsql\nAS $$\nDECLARE\n weight_score FLOAT;\n access_score FLOAT;\n recency_score FLOAT;\n days_since_access FLOAT;\nBEGIN\n -- Normalize weight to 0-1 (weight is 1-10)\n weight_score := (p_weight - 1) / 9.0;\n\n -- Normalize access count to 0-1 (capped at max_access_count)\n access_score := LEAST(p_access_count::FLOAT / max_access_count, 1.0);\n\n -- Calculate recency score (1.0 for today, decays over 30 days to 0.1)\n IF p_last_accessed_at IS NOT NULL THEN\n days_since_access := EXTRACT(EPOCH FROM (NOW() - p_last_accessed_at)) / 86400.0;\n recency_score := GREATEST(1.0 - (days_since_access / 30.0) * 0.9, 0.1);\n ELSE\n -- Never accessed, use created_at with lower base score\n days_since_access := EXTRACT(EPOCH FROM (NOW() - p_created_at)) / 86400.0;\n recency_score := GREATEST(0.5 - (days_since_access / 60.0) * 0.4, 0.1);\n END IF;\n\n -- Combine scores: weight 40%, access 30%, recency 30%\n RETURN (weight_score * 0.4) + (access_score * 0.3) + (recency_score * 0.3);\nEND;\n$$;\n\n-- =============================================================================\n-- CONTEXT: Get most relevant records for startup\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_get_context(\n match_count INT DEFAULT 20,\n filter_types TEXT[] DEFAULT NULL\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n weight INTEGER,\n access_count INTEGER,\n relevance_score FLOAT\n)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n RETURN QUERY\n SELECT\n r.id,\n r.type,\n r.data,\n r.tags,\n r.weight,\n r.access_count,\n mem_calculate_relevance(r.weight, r.access_count, r.last_accessed_at, r.created_at)::FLOAT AS relevance_score\n FROM mem_records r\n WHERE r.status = 'active'\n AND (filter_types IS NULL OR r.type = ANY(filter_types))\n ORDER BY mem_calculate_relevance(r.weight, r.access_count, r.last_accessed_at, r.created_at) DESC\n LIMIT match_count;\nEND;\n$$;\n\n-- =============================================================================\n-- ACCESS TRACKING\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_increment_access(record_ids UUID[])\nRETURNS VOID\nLANGUAGE plpgsql\nAS $$\nBEGIN\n UPDATE mem_records\n SET\n access_count = access_count + 1,\n last_accessed_at = NOW()\n WHERE id = ANY(record_ids);\nEND;\n$$;\n\n-- =============================================================================\n-- ARCHIVE / UNARCHIVE\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_archive(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET status = 'archived', updated_at = NOW()\n WHERE id = ANY(record_ids) AND status = 'active';\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_unarchive(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET status = 'active', updated_at = NOW()\n WHERE id = ANY(record_ids) AND status = 'archived';\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\n-- =============================================================================\n-- FLUSH: Reset access count\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_flush(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET\n access_count = 0,\n last_accessed_at = NULL,\n updated_at = NOW()\n WHERE id = ANY(record_ids);\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\n-- =============================================================================\n-- GRAPH TRAVERSAL\n-- Respects bidirectional flag\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_get_record_with_links(record_id UUID)\nRETURNS JSONB\nLANGUAGE sql\nAS $$\n SELECT jsonb_build_object(\n 'id', r.id,\n 'type', r.type,\n 'data', r.data,\n 'tags', r.tags,\n 'weight', r.weight,\n 'access_count', r.access_count,\n 'status', r.status,\n 'created_at', r.created_at,\n 'updated_at', r.updated_at,\n 'outgoing', COALESCE((\n SELECT jsonb_agg(jsonb_build_object(\n 'relation', l.relation,\n 'bidirectional', l.bidirectional,\n 'metadata', l.metadata,\n 'record', jsonb_build_object(\n 'id', linked.id,\n 'type', linked.type,\n 'data', linked.data\n )\n ))\n FROM mem_links l\n JOIN mem_records linked ON linked.id = l.to_id\n WHERE l.from_id = r.id\n ), '[]'::jsonb),\n 'incoming', COALESCE((\n SELECT jsonb_agg(jsonb_build_object(\n 'relation', l.relation,\n 'bidirectional', l.bidirectional,\n 'metadata', l.metadata,\n 'record', jsonb_build_object(\n 'id', linked.id,\n 'type', linked.type,\n 'data', linked.data\n )\n ))\n FROM mem_links l\n JOIN mem_records linked ON linked.id = l.from_id\n WHERE l.to_id = r.id\n ), '[]'::jsonb)\n )\n FROM mem_records r\n WHERE r.id = record_id;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_get_linked(\n record_id UUID,\n relation_type TEXT DEFAULT NULL,\n direction TEXT DEFAULT 'outgoing'\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n relation TEXT,\n bidirectional BOOLEAN,\n link_metadata JSONB\n)\nLANGUAGE sql\nAS $$\n -- Outgoing links (from this record to others)\n SELECT\n r.id,\n r.type,\n r.data,\n l.relation,\n l.bidirectional,\n l.metadata\n FROM mem_links l\n JOIN mem_records r ON r.id = l.to_id\n WHERE l.from_id = record_id\n AND (relation_type IS NULL OR l.relation = relation_type)\n AND (direction = 'outgoing' OR direction = 'both')\n\n UNION ALL\n\n -- Incoming links (from others to this record)\n -- Only include if bidirectional=true OR direction includes incoming\n SELECT\n r.id,\n r.type,\n r.data,\n l.relation,\n l.bidirectional,\n l.metadata\n FROM mem_links l\n JOIN mem_records r ON r.id = l.from_id\n WHERE l.to_id = record_id\n AND (relation_type IS NULL OR l.relation = relation_type)\n AND (\n direction = 'incoming'\n OR direction = 'both'\n OR l.bidirectional = true\n );\n$$;\n\n-- =============================================================================\n-- LINK OPERATIONS\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_create_link(\n from_record_id UUID,\n to_record_id UUID,\n relation_type TEXT,\n is_bidirectional BOOLEAN DEFAULT false,\n link_metadata JSONB DEFAULT NULL\n)\nRETURNS UUID\nLANGUAGE plpgsql\nAS $$\nDECLARE\n link_id UUID;\nBEGIN\n INSERT INTO mem_links (from_id, to_id, relation, bidirectional, metadata)\n VALUES (from_record_id, to_record_id, relation_type, is_bidirectional, link_metadata)\n ON CONFLICT (from_id, to_id, relation) DO UPDATE\n SET bidirectional = is_bidirectional,\n metadata = COALESCE(link_metadata, mem_links.metadata)\n RETURNING id INTO link_id;\n RETURN link_id;\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_remove_link(\n from_record_id UUID,\n to_record_id UUID,\n relation_type TEXT\n)\nRETURNS BOOLEAN\nLANGUAGE plpgsql\nAS $$\nBEGIN\n DELETE FROM mem_links\n WHERE from_id = from_record_id\n AND to_id = to_record_id\n AND relation = relation_type;\n RETURN FOUND;\nEND;\n$$;\n\n-- =============================================================================\n-- TRIGGERS\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_extract_searchable_text(record_type TEXT, record_data JSONB)\nRETURNS TEXT\nLANGUAGE plpgsql\nAS $$\nBEGIN\n -- Generic extraction: concatenate all string values\n RETURN (SELECT string_agg(value::TEXT, ' ')\n FROM jsonb_each_text(record_data)\n WHERE value IS NOT NULL AND value != '');\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_records_trigger()\nRETURNS TRIGGER\nLANGUAGE plpgsql\nAS $$\nBEGIN\n NEW.searchable_text := mem_extract_searchable_text(NEW.type, NEW.data);\n NEW.updated_at := NOW();\n RETURN NEW;\nEND;\n$$;\n\nDROP TRIGGER IF EXISTS mem_records_before_upsert ON mem_records;\nCREATE TRIGGER mem_records_before_upsert\nBEFORE INSERT OR UPDATE ON mem_records\nFOR EACH ROW\nEXECUTE FUNCTION mem_records_trigger();\n";
12
+ export declare const FUNCTIONS_SQL = "\n-- =============================================================================\n-- HYBRID SEARCH\n-- Combines semantic similarity with full-text search using RRF\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_hybrid_search(\n query_text TEXT,\n query_embedding vector(1536),\n match_count INT DEFAULT 10,\n filter_type TEXT DEFAULT NULL,\n full_text_weight FLOAT DEFAULT 0.3,\n semantic_weight FLOAT DEFAULT 0.7,\n rrf_k INT DEFAULT 50,\n include_archived BOOLEAN DEFAULT FALSE\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n fts_rank FLOAT,\n semantic_rank FLOAT,\n combined_score FLOAT\n)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n RETURN QUERY\n WITH fts_results AS (\n SELECT\n r.id,\n ROW_NUMBER() OVER (ORDER BY ts_rank_cd(r.searchable, websearch_to_tsquery('english', query_text)) DESC) AS rank\n FROM mem_records r\n WHERE r.searchable @@ websearch_to_tsquery('english', query_text)\n AND (filter_type IS NULL OR r.type = filter_type)\n AND (include_archived OR r.status = 'active')\n LIMIT match_count * 2\n ),\n semantic_results AS (\n SELECT\n r.id,\n ROW_NUMBER() OVER (ORDER BY r.embedding <=> query_embedding) AS rank\n FROM mem_records r\n WHERE r.embedding IS NOT NULL\n AND (filter_type IS NULL OR r.type = filter_type)\n AND (include_archived OR r.status = 'active')\n ORDER BY r.embedding <=> query_embedding\n LIMIT match_count * 2\n ),\n combined AS (\n SELECT\n COALESCE(fts.id, sem.id) AS id,\n COALESCE(1.0 / (rrf_k + fts.rank), 0.0) AS fts_score,\n COALESCE(1.0 / (rrf_k + sem.rank), 0.0) AS sem_score\n FROM fts_results fts\n FULL OUTER JOIN semantic_results sem ON fts.id = sem.id\n )\n SELECT\n r.id,\n r.type,\n r.data,\n r.tags,\n c.fts_score::FLOAT AS fts_rank,\n c.sem_score::FLOAT AS semantic_rank,\n (c.fts_score * full_text_weight + c.sem_score * semantic_weight)::FLOAT AS combined_score\n FROM combined c\n JOIN mem_records r ON r.id = c.id\n ORDER BY (c.fts_score * full_text_weight + c.sem_score * semantic_weight) DESC\n LIMIT match_count;\nEND;\n$$;\n\n-- =============================================================================\n-- RELEVANCE SCORING\n-- Combines: weight (40%), access frequency (30%), recency (30%)\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_calculate_relevance(\n p_weight INTEGER,\n p_access_count INTEGER,\n p_last_accessed_at TIMESTAMPTZ,\n p_created_at TIMESTAMPTZ,\n max_access_count INTEGER DEFAULT 100\n)\nRETURNS FLOAT\nLANGUAGE plpgsql\nAS $$\nDECLARE\n weight_score FLOAT;\n access_score FLOAT;\n recency_score FLOAT;\n days_since_access FLOAT;\nBEGIN\n -- Normalize weight to 0-1 (weight is 1-10)\n weight_score := (p_weight - 1) / 9.0;\n\n -- Normalize access count to 0-1 (capped at max_access_count)\n access_score := LEAST(p_access_count::FLOAT / max_access_count, 1.0);\n\n -- Calculate recency score (1.0 for today, decays over 30 days to 0.1)\n IF p_last_accessed_at IS NOT NULL THEN\n days_since_access := EXTRACT(EPOCH FROM (NOW() - p_last_accessed_at)) / 86400.0;\n recency_score := GREATEST(1.0 - (days_since_access / 30.0) * 0.9, 0.1);\n ELSE\n -- Never accessed, use created_at with lower base score\n days_since_access := EXTRACT(EPOCH FROM (NOW() - p_created_at)) / 86400.0;\n recency_score := GREATEST(0.5 - (days_since_access / 60.0) * 0.4, 0.1);\n END IF;\n\n -- Combine scores: weight 40%, access 30%, recency 30%\n RETURN (weight_score * 0.4) + (access_score * 0.3) + (recency_score * 0.3);\nEND;\n$$;\n\n-- =============================================================================\n-- CONTEXT: Get most relevant records for startup\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_get_context(\n match_count INT DEFAULT 20,\n filter_types TEXT[] DEFAULT NULL\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n keys TEXT[],\n weight INTEGER,\n access_count INTEGER,\n relevance_score FLOAT\n)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n RETURN QUERY\n SELECT\n r.id,\n r.type,\n r.data,\n r.tags,\n r.keys,\n r.weight,\n r.access_count,\n mem_calculate_relevance(r.weight, r.access_count, r.last_accessed_at, r.created_at)::FLOAT AS relevance_score\n FROM mem_records r\n WHERE r.status = 'active'\n AND (filter_types IS NULL OR r.type = ANY(filter_types))\n ORDER BY mem_calculate_relevance(r.weight, r.access_count, r.last_accessed_at, r.created_at) DESC\n LIMIT match_count;\nEND;\n$$;\n\n-- =============================================================================\n-- ACCESS TRACKING\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_increment_access(record_ids UUID[])\nRETURNS VOID\nLANGUAGE plpgsql\nAS $$\nBEGIN\n UPDATE mem_records\n SET\n access_count = access_count + 1,\n last_accessed_at = NOW()\n WHERE id = ANY(record_ids);\nEND;\n$$;\n\n-- =============================================================================\n-- ARCHIVE / UNARCHIVE\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_archive(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET status = 'archived', updated_at = NOW()\n WHERE id = ANY(record_ids) AND status = 'active';\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_unarchive(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET status = 'active', updated_at = NOW()\n WHERE id = ANY(record_ids) AND status = 'archived';\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\n-- =============================================================================\n-- FLUSH: Reset access count\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_flush(record_ids UUID[])\nRETURNS INTEGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n affected INTEGER;\nBEGIN\n UPDATE mem_records\n SET\n access_count = 0,\n last_accessed_at = NULL,\n updated_at = NOW()\n WHERE id = ANY(record_ids);\n GET DIAGNOSTICS affected = ROW_COUNT;\n RETURN affected;\nEND;\n$$;\n\n-- =============================================================================\n-- GRAPH TRAVERSAL\n-- Respects bidirectional flag\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_get_record_with_links(record_id UUID)\nRETURNS JSONB\nLANGUAGE sql\nAS $$\n SELECT jsonb_build_object(\n 'id', r.id,\n 'type', r.type,\n 'data', r.data,\n 'tags', r.tags,\n 'keys', r.keys,\n 'weight', r.weight,\n 'access_count', r.access_count,\n 'status', r.status,\n 'created_at', r.created_at,\n 'updated_at', r.updated_at,\n 'outgoing', COALESCE((\n SELECT jsonb_agg(jsonb_build_object(\n 'relation', l.relation,\n 'bidirectional', l.bidirectional,\n 'metadata', l.metadata,\n 'record', jsonb_build_object(\n 'id', linked.id,\n 'type', linked.type,\n 'data', linked.data\n )\n ))\n FROM mem_links l\n JOIN mem_records linked ON linked.id = l.to_id\n WHERE l.from_id = r.id\n ), '[]'::jsonb),\n 'incoming', COALESCE((\n SELECT jsonb_agg(jsonb_build_object(\n 'relation', l.relation,\n 'bidirectional', l.bidirectional,\n 'metadata', l.metadata,\n 'record', jsonb_build_object(\n 'id', linked.id,\n 'type', linked.type,\n 'data', linked.data\n )\n ))\n FROM mem_links l\n JOIN mem_records linked ON linked.id = l.from_id\n WHERE l.to_id = r.id\n ), '[]'::jsonb)\n )\n FROM mem_records r\n WHERE r.id = record_id;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_get_linked(\n record_id UUID,\n relation_type TEXT DEFAULT NULL,\n direction TEXT DEFAULT 'outgoing'\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n relation TEXT,\n bidirectional BOOLEAN,\n link_metadata JSONB\n)\nLANGUAGE sql\nAS $$\n -- Outgoing links (from this record to others)\n SELECT\n r.id,\n r.type,\n r.data,\n l.relation,\n l.bidirectional,\n l.metadata\n FROM mem_links l\n JOIN mem_records r ON r.id = l.to_id\n WHERE l.from_id = record_id\n AND (relation_type IS NULL OR l.relation = relation_type)\n AND (direction = 'outgoing' OR direction = 'both')\n\n UNION ALL\n\n -- Incoming links (from others to this record)\n -- Only include if bidirectional=true OR direction includes incoming\n SELECT\n r.id,\n r.type,\n r.data,\n l.relation,\n l.bidirectional,\n l.metadata\n FROM mem_links l\n JOIN mem_records r ON r.id = l.from_id\n WHERE l.to_id = record_id\n AND (relation_type IS NULL OR l.relation = relation_type)\n AND (\n direction = 'incoming'\n OR direction = 'both'\n OR l.bidirectional = true\n );\n$$;\n\n-- =============================================================================\n-- LINK OPERATIONS\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_create_link(\n from_record_id UUID,\n to_record_id UUID,\n relation_type TEXT,\n is_bidirectional BOOLEAN DEFAULT false,\n link_metadata JSONB DEFAULT NULL\n)\nRETURNS UUID\nLANGUAGE plpgsql\nAS $$\nDECLARE\n link_id UUID;\nBEGIN\n INSERT INTO mem_links (from_id, to_id, relation, bidirectional, metadata)\n VALUES (from_record_id, to_record_id, relation_type, is_bidirectional, link_metadata)\n ON CONFLICT (from_id, to_id, relation) DO UPDATE\n SET bidirectional = is_bidirectional,\n metadata = COALESCE(link_metadata, mem_links.metadata)\n RETURNING id INTO link_id;\n RETURN link_id;\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_remove_link(\n from_record_id UUID,\n to_record_id UUID,\n relation_type TEXT\n)\nRETURNS BOOLEAN\nLANGUAGE plpgsql\nAS $$\nBEGIN\n DELETE FROM mem_links\n WHERE from_id = from_record_id\n AND to_id = to_record_id\n AND relation = relation_type;\n RETURN FOUND;\nEND;\n$$;\n\n-- =============================================================================\n-- EXTERNAL REFERENCES\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_add_external_ref(\n p_record_id UUID,\n p_system TEXT,\n p_external_id TEXT,\n p_external_url TEXT DEFAULT NULL,\n p_metadata JSONB DEFAULT '{}'\n)\nRETURNS UUID\nLANGUAGE plpgsql\nAS $$\nDECLARE\n ref_id UUID;\nBEGIN\n INSERT INTO mem_external_refs (record_id, system, external_id, external_url, metadata)\n VALUES (p_record_id, p_system, p_external_id, p_external_url, p_metadata)\n ON CONFLICT (record_id, system, external_id) DO UPDATE\n SET external_url = COALESCE(p_external_url, mem_external_refs.external_url),\n metadata = COALESCE(p_metadata, mem_external_refs.metadata),\n last_synced_at = NOW()\n RETURNING id INTO ref_id;\n RETURN ref_id;\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_find_by_external_ref(\n p_system TEXT,\n p_external_id TEXT\n)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n weight INTEGER,\n status TEXT,\n ref_id UUID,\n external_url TEXT,\n ref_metadata JSONB,\n last_synced_at TIMESTAMPTZ\n)\nLANGUAGE sql\nAS $$\n SELECT\n r.id,\n r.type,\n r.data,\n r.tags,\n r.weight,\n r.status,\n e.id AS ref_id,\n e.external_url,\n e.metadata AS ref_metadata,\n e.last_synced_at\n FROM mem_external_refs e\n JOIN mem_records r ON r.id = e.record_id\n WHERE e.system = p_system AND e.external_id = p_external_id;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_list_external_refs(p_record_id UUID)\nRETURNS TABLE (\n id UUID,\n system TEXT,\n external_id TEXT,\n external_url TEXT,\n metadata JSONB,\n last_synced_at TIMESTAMPTZ,\n created_at TIMESTAMPTZ\n)\nLANGUAGE sql\nAS $$\n SELECT id, system, external_id, external_url, metadata, last_synced_at, created_at\n FROM mem_external_refs\n WHERE record_id = p_record_id\n ORDER BY created_at;\n$$;\n\n-- =============================================================================\n-- KEY-BASED LOOKUP AND UPSERT\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_enforce_key_uniqueness()\nRETURNS TRIGGER\nLANGUAGE plpgsql\nAS $$\nDECLARE\n conflicting_id UUID;\nBEGIN\n IF NEW.keys IS NULL THEN\n RETURN NEW;\n END IF;\n\n SELECT id INTO conflicting_id\n FROM mem_records\n WHERE keys && NEW.keys AND id != NEW.id\n LIMIT 1;\n\n IF conflicting_id IS NOT NULL THEN\n RAISE EXCEPTION 'Key conflict: one or more keys in % already exist on record %',\n NEW.keys, conflicting_id\n USING ERRCODE = 'unique_violation';\n END IF;\n\n RETURN NEW;\nEND;\n$$;\n\nDROP TRIGGER IF EXISTS mem_enforce_key_uniqueness_trigger ON mem_records;\nCREATE TRIGGER mem_enforce_key_uniqueness_trigger\nBEFORE INSERT OR UPDATE ON mem_records\nFOR EACH ROW\nEXECUTE FUNCTION mem_enforce_key_uniqueness();\n\nCREATE OR REPLACE FUNCTION mem_find_by_key(p_key TEXT)\nRETURNS TABLE (\n id UUID,\n type TEXT,\n data JSONB,\n tags TEXT[],\n keys TEXT[],\n weight INTEGER,\n access_count INTEGER,\n status TEXT,\n created_at TIMESTAMPTZ,\n updated_at TIMESTAMPTZ\n)\nLANGUAGE sql\nAS $$\n SELECT r.id, r.type, r.data, r.tags, r.keys, r.weight, r.access_count,\n r.status, r.created_at, r.updated_at\n FROM mem_records r\n WHERE r.keys @> ARRAY[p_key];\n$$;\n\nCREATE OR REPLACE FUNCTION mem_upsert_by_keys(\n p_type TEXT,\n p_data JSONB,\n p_tags TEXT[],\n p_keys TEXT[],\n p_weight INTEGER DEFAULT NULL,\n p_embedding vector(1536) DEFAULT NULL\n)\nRETURNS TABLE (id UUID, action TEXT)\nLANGUAGE plpgsql\nAS $$\nDECLARE\n existing_id UUID;\n result_id UUID;\n result_action TEXT;\nBEGIN\n -- Find existing record by key overlap\n SELECT r.id INTO existing_id\n FROM mem_records r\n WHERE r.keys && p_keys\n LIMIT 1;\n\n IF existing_id IS NOT NULL THEN\n -- Update: merge data, union tags and keys\n UPDATE mem_records r\n SET data = r.data || p_data,\n tags = (SELECT ARRAY(SELECT DISTINCT unnest FROM unnest(COALESCE(r.tags, '{}') || COALESCE(p_tags, '{}')))),\n keys = (SELECT ARRAY(SELECT DISTINCT unnest FROM unnest(COALESCE(r.keys, '{}') || COALESCE(p_keys, '{}')))),\n weight = COALESCE(p_weight, r.weight),\n embedding = COALESCE(p_embedding, r.embedding)\n WHERE r.id = existing_id;\n\n result_id := existing_id;\n result_action := 'updated';\n ELSE\n -- Insert new record\n INSERT INTO mem_records (type, data, tags, keys, weight, embedding)\n VALUES (\n p_type,\n p_data,\n p_tags,\n p_keys,\n COALESCE(p_weight, 5),\n p_embedding\n )\n RETURNING mem_records.id INTO result_id;\n\n result_action := 'inserted';\n END IF;\n\n RETURN QUERY SELECT result_id, result_action;\nEND;\n$$;\n\n-- =============================================================================\n-- TRIGGERS\n-- =============================================================================\n\nCREATE OR REPLACE FUNCTION mem_extract_searchable_text(record_type TEXT, record_data JSONB)\nRETURNS TEXT\nLANGUAGE plpgsql\nAS $$\nBEGIN\n -- Generic extraction: concatenate all string values\n RETURN (SELECT string_agg(value::TEXT, ' ')\n FROM jsonb_each_text(record_data)\n WHERE value IS NOT NULL AND value != '');\nEND;\n$$;\n\nCREATE OR REPLACE FUNCTION mem_records_trigger()\nRETURNS TRIGGER\nLANGUAGE plpgsql\nAS $$\nBEGIN\n NEW.searchable_text := mem_extract_searchable_text(NEW.type, NEW.data);\n NEW.updated_at := NOW();\n RETURN NEW;\nEND;\n$$;\n\nDROP TRIGGER IF EXISTS mem_records_before_upsert ON mem_records;\nCREATE TRIGGER mem_records_before_upsert\nBEFORE INSERT OR UPDATE ON mem_records\nFOR EACH ROW\nEXECUTE FUNCTION mem_records_trigger();\n";
13
13
  export declare function getMigrationSQL(): string;
14
14
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,UAAU,0qHAmFtB,CAAC;AAGF,eAAO,MAAM,gBAAgB,oPAO5B,CAAC;AAEF,eAAO,MAAM,aAAa,k6XAsZzB,CAAC;AAGF,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,UAAU,utJA2GtB,CAAC;AAGF,eAAO,MAAM,gBAAgB,oPAO5B,CAAC;AAEF,eAAO,MAAM,aAAa,qjiBAwlBzB,CAAC;AAGF,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
package/dist/schema.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * - mem_records: All memories
7
7
  * - mem_links: Relationships between records
8
8
  */
9
- export const SCHEMA_VERSION = "1.0.0";
9
+ export const SCHEMA_VERSION = "1.2.0";
10
10
  export const SCHEMA_SQL = `
11
11
  -- =============================================================================
12
12
  -- Mem: Memory for AI Agents
@@ -27,6 +27,7 @@ CREATE TABLE IF NOT EXISTS mem_records (
27
27
  type TEXT NOT NULL, -- user-defined (note, decision, preference, etc.)
28
28
  data JSONB NOT NULL, -- flexible structure
29
29
  tags TEXT[],
30
+ keys TEXT[],
30
31
  embedding vector(1536),
31
32
  searchable_text TEXT,
32
33
  searchable tsvector GENERATED ALWAYS AS (
@@ -58,11 +59,15 @@ CREATE TABLE IF NOT EXISTS mem_links (
58
59
  UNIQUE(from_id, to_id, relation)
59
60
  );
60
61
 
62
+ -- Upgrade path: add keys column if it doesn't exist
63
+ ALTER TABLE mem_records ADD COLUMN IF NOT EXISTS keys TEXT[];
64
+
61
65
  -- =============================================================================
62
66
  -- INDEXES
63
67
  -- =============================================================================
64
68
 
65
69
  CREATE INDEX IF NOT EXISTS idx_mem_records_type ON mem_records(type);
70
+ CREATE INDEX IF NOT EXISTS idx_mem_records_keys ON mem_records USING GIN(keys);
66
71
  CREATE INDEX IF NOT EXISTS idx_mem_records_tags ON mem_records USING GIN(tags);
67
72
  CREATE INDEX IF NOT EXISTS idx_mem_records_data ON mem_records USING GIN(data);
68
73
  CREATE INDEX IF NOT EXISTS idx_mem_records_searchable ON mem_records USING GIN(searchable);
@@ -78,6 +83,25 @@ CREATE INDEX IF NOT EXISTS idx_mem_links_from_relation ON mem_links(from_id, rel
78
83
  CREATE INDEX IF NOT EXISTS idx_mem_links_to_relation ON mem_links(to_id, relation);
79
84
  CREATE INDEX IF NOT EXISTS idx_mem_links_bidirectional ON mem_links(bidirectional) WHERE bidirectional = true;
80
85
 
86
+ -- =============================================================================
87
+ -- EXTERNAL REFERENCES: Track where records came from
88
+ -- =============================================================================
89
+
90
+ CREATE TABLE IF NOT EXISTS mem_external_refs (
91
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
92
+ record_id UUID NOT NULL REFERENCES mem_records(id) ON DELETE CASCADE,
93
+ system TEXT NOT NULL,
94
+ external_id TEXT NOT NULL,
95
+ external_url TEXT,
96
+ metadata JSONB DEFAULT '{}',
97
+ last_synced_at TIMESTAMPTZ DEFAULT NOW(),
98
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
99
+ UNIQUE(record_id, system, external_id)
100
+ );
101
+
102
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_mem_ext_refs_lookup ON mem_external_refs(system, external_id);
103
+ CREATE INDEX IF NOT EXISTS idx_mem_ext_refs_record ON mem_external_refs(record_id);
104
+
81
105
  -- =============================================================================
82
106
  -- SCHEMA METADATA
83
107
  -- =============================================================================
@@ -228,6 +252,7 @@ RETURNS TABLE (
228
252
  type TEXT,
229
253
  data JSONB,
230
254
  tags TEXT[],
255
+ keys TEXT[],
231
256
  weight INTEGER,
232
257
  access_count INTEGER,
233
258
  relevance_score FLOAT
@@ -241,6 +266,7 @@ BEGIN
241
266
  r.type,
242
267
  r.data,
243
268
  r.tags,
269
+ r.keys,
244
270
  r.weight,
245
271
  r.access_count,
246
272
  mem_calculate_relevance(r.weight, r.access_count, r.last_accessed_at, r.created_at)::FLOAT AS relevance_score
@@ -339,6 +365,7 @@ AS $$
339
365
  'type', r.type,
340
366
  'data', r.data,
341
367
  'tags', r.tags,
368
+ 'keys', r.keys,
342
369
  'weight', r.weight,
343
370
  'access_count', r.access_count,
344
371
  'status', r.status,
@@ -474,6 +501,197 @@ BEGIN
474
501
  END;
475
502
  $$;
476
503
 
504
+ -- =============================================================================
505
+ -- EXTERNAL REFERENCES
506
+ -- =============================================================================
507
+
508
+ CREATE OR REPLACE FUNCTION mem_add_external_ref(
509
+ p_record_id UUID,
510
+ p_system TEXT,
511
+ p_external_id TEXT,
512
+ p_external_url TEXT DEFAULT NULL,
513
+ p_metadata JSONB DEFAULT '{}'
514
+ )
515
+ RETURNS UUID
516
+ LANGUAGE plpgsql
517
+ AS $$
518
+ DECLARE
519
+ ref_id UUID;
520
+ BEGIN
521
+ INSERT INTO mem_external_refs (record_id, system, external_id, external_url, metadata)
522
+ VALUES (p_record_id, p_system, p_external_id, p_external_url, p_metadata)
523
+ ON CONFLICT (record_id, system, external_id) DO UPDATE
524
+ SET external_url = COALESCE(p_external_url, mem_external_refs.external_url),
525
+ metadata = COALESCE(p_metadata, mem_external_refs.metadata),
526
+ last_synced_at = NOW()
527
+ RETURNING id INTO ref_id;
528
+ RETURN ref_id;
529
+ END;
530
+ $$;
531
+
532
+ CREATE OR REPLACE FUNCTION mem_find_by_external_ref(
533
+ p_system TEXT,
534
+ p_external_id TEXT
535
+ )
536
+ RETURNS TABLE (
537
+ id UUID,
538
+ type TEXT,
539
+ data JSONB,
540
+ tags TEXT[],
541
+ weight INTEGER,
542
+ status TEXT,
543
+ ref_id UUID,
544
+ external_url TEXT,
545
+ ref_metadata JSONB,
546
+ last_synced_at TIMESTAMPTZ
547
+ )
548
+ LANGUAGE sql
549
+ AS $$
550
+ SELECT
551
+ r.id,
552
+ r.type,
553
+ r.data,
554
+ r.tags,
555
+ r.weight,
556
+ r.status,
557
+ e.id AS ref_id,
558
+ e.external_url,
559
+ e.metadata AS ref_metadata,
560
+ e.last_synced_at
561
+ FROM mem_external_refs e
562
+ JOIN mem_records r ON r.id = e.record_id
563
+ WHERE e.system = p_system AND e.external_id = p_external_id;
564
+ $$;
565
+
566
+ CREATE OR REPLACE FUNCTION mem_list_external_refs(p_record_id UUID)
567
+ RETURNS TABLE (
568
+ id UUID,
569
+ system TEXT,
570
+ external_id TEXT,
571
+ external_url TEXT,
572
+ metadata JSONB,
573
+ last_synced_at TIMESTAMPTZ,
574
+ created_at TIMESTAMPTZ
575
+ )
576
+ LANGUAGE sql
577
+ AS $$
578
+ SELECT id, system, external_id, external_url, metadata, last_synced_at, created_at
579
+ FROM mem_external_refs
580
+ WHERE record_id = p_record_id
581
+ ORDER BY created_at;
582
+ $$;
583
+
584
+ -- =============================================================================
585
+ -- KEY-BASED LOOKUP AND UPSERT
586
+ -- =============================================================================
587
+
588
+ CREATE OR REPLACE FUNCTION mem_enforce_key_uniqueness()
589
+ RETURNS TRIGGER
590
+ LANGUAGE plpgsql
591
+ AS $$
592
+ DECLARE
593
+ conflicting_id UUID;
594
+ BEGIN
595
+ IF NEW.keys IS NULL THEN
596
+ RETURN NEW;
597
+ END IF;
598
+
599
+ SELECT id INTO conflicting_id
600
+ FROM mem_records
601
+ WHERE keys && NEW.keys AND id != NEW.id
602
+ LIMIT 1;
603
+
604
+ IF conflicting_id IS NOT NULL THEN
605
+ RAISE EXCEPTION 'Key conflict: one or more keys in % already exist on record %',
606
+ NEW.keys, conflicting_id
607
+ USING ERRCODE = 'unique_violation';
608
+ END IF;
609
+
610
+ RETURN NEW;
611
+ END;
612
+ $$;
613
+
614
+ DROP TRIGGER IF EXISTS mem_enforce_key_uniqueness_trigger ON mem_records;
615
+ CREATE TRIGGER mem_enforce_key_uniqueness_trigger
616
+ BEFORE INSERT OR UPDATE ON mem_records
617
+ FOR EACH ROW
618
+ EXECUTE FUNCTION mem_enforce_key_uniqueness();
619
+
620
+ CREATE OR REPLACE FUNCTION mem_find_by_key(p_key TEXT)
621
+ RETURNS TABLE (
622
+ id UUID,
623
+ type TEXT,
624
+ data JSONB,
625
+ tags TEXT[],
626
+ keys TEXT[],
627
+ weight INTEGER,
628
+ access_count INTEGER,
629
+ status TEXT,
630
+ created_at TIMESTAMPTZ,
631
+ updated_at TIMESTAMPTZ
632
+ )
633
+ LANGUAGE sql
634
+ AS $$
635
+ SELECT r.id, r.type, r.data, r.tags, r.keys, r.weight, r.access_count,
636
+ r.status, r.created_at, r.updated_at
637
+ FROM mem_records r
638
+ WHERE r.keys @> ARRAY[p_key];
639
+ $$;
640
+
641
+ CREATE OR REPLACE FUNCTION mem_upsert_by_keys(
642
+ p_type TEXT,
643
+ p_data JSONB,
644
+ p_tags TEXT[],
645
+ p_keys TEXT[],
646
+ p_weight INTEGER DEFAULT NULL,
647
+ p_embedding vector(1536) DEFAULT NULL
648
+ )
649
+ RETURNS TABLE (id UUID, action TEXT)
650
+ LANGUAGE plpgsql
651
+ AS $$
652
+ DECLARE
653
+ existing_id UUID;
654
+ result_id UUID;
655
+ result_action TEXT;
656
+ BEGIN
657
+ -- Find existing record by key overlap
658
+ SELECT r.id INTO existing_id
659
+ FROM mem_records r
660
+ WHERE r.keys && p_keys
661
+ LIMIT 1;
662
+
663
+ IF existing_id IS NOT NULL THEN
664
+ -- Update: merge data, union tags and keys
665
+ UPDATE mem_records r
666
+ SET data = r.data || p_data,
667
+ tags = (SELECT ARRAY(SELECT DISTINCT unnest FROM unnest(COALESCE(r.tags, '{}') || COALESCE(p_tags, '{}')))),
668
+ keys = (SELECT ARRAY(SELECT DISTINCT unnest FROM unnest(COALESCE(r.keys, '{}') || COALESCE(p_keys, '{}')))),
669
+ weight = COALESCE(p_weight, r.weight),
670
+ embedding = COALESCE(p_embedding, r.embedding)
671
+ WHERE r.id = existing_id;
672
+
673
+ result_id := existing_id;
674
+ result_action := 'updated';
675
+ ELSE
676
+ -- Insert new record
677
+ INSERT INTO mem_records (type, data, tags, keys, weight, embedding)
678
+ VALUES (
679
+ p_type,
680
+ p_data,
681
+ p_tags,
682
+ p_keys,
683
+ COALESCE(p_weight, 5),
684
+ p_embedding
685
+ )
686
+ RETURNING mem_records.id INTO result_id;
687
+
688
+ result_action := 'inserted';
689
+ END IF;
690
+
691
+ RETURN QUERY SELECT result_id, result_action;
692
+ END;
693
+ $$;
694
+
477
695
  -- =============================================================================
478
696
  -- TRIGGERS
479
697
  -- =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;;;;cAIZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDA6E4B,cAAc;2CAC3B,cAAc;CACxD,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;CAO/B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsZ5B,CAAC;AAEF,kEAAkE;AAClE,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,UAAU,OAAO,gBAAgB,OAAO,aAAa,EAAE,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;;;;cAIZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAqG4B,cAAc;2CAC3B,cAAc;CACxD,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;CAO/B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwlB5B,CAAC;AAEF,kEAAkE;AAClE,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,UAAU,OAAO,gBAAgB,OAAO,aAAa,EAAE,CAAC;AACpE,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface MemRecord {
6
6
  type: string;
7
7
  data: Record<string, unknown>;
8
8
  tags?: string[];
9
+ keys?: string[];
9
10
  embedding?: number[];
10
11
  searchable_text?: string;
11
12
  weight: number;
@@ -60,17 +61,20 @@ export interface ContextResult {
60
61
  type: string;
61
62
  data: Record<string, unknown>;
62
63
  tags?: string[];
64
+ keys?: string[];
63
65
  weight: number;
64
66
  access_count: number;
65
67
  relevance_score: number;
66
68
  }
67
69
  export interface AddRecordOptions {
68
70
  tags?: string[];
71
+ keys?: string[];
69
72
  weight?: number;
70
73
  generateEmbedding?: boolean;
71
74
  }
72
75
  export interface UpdateRecordOptions {
73
76
  tags?: string[];
77
+ keys?: string[];
74
78
  regenerateEmbedding?: boolean;
75
79
  }
76
80
  export interface SearchOptions {
@@ -89,6 +93,20 @@ export interface LinkedOptions {
89
93
  relation?: string;
90
94
  direction?: "outgoing" | "incoming" | "both";
91
95
  }
96
+ export interface ExternalRef {
97
+ id: string;
98
+ record_id: string;
99
+ system: string;
100
+ external_id: string;
101
+ external_url?: string;
102
+ metadata?: Record<string, unknown>;
103
+ last_synced_at: string;
104
+ created_at: string;
105
+ }
106
+ export interface AddExternalRefOptions {
107
+ url?: string;
108
+ metadata?: Record<string, unknown>;
109
+ }
92
110
  export interface LinkedRecord {
93
111
  id: string;
94
112
  type: string;
@@ -97,4 +115,8 @@ export interface LinkedRecord {
97
115
  bidirectional: boolean;
98
116
  link_metadata?: Record<string, unknown>;
99
117
  }
118
+ export interface UpsertResult {
119
+ record: MemRecord;
120
+ action: "inserted" | "updated";
121
+ }
100
122
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@withone/mem",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Memory for AI agents. Simple, fast, works anywhere.",
5
5
  "keywords": [
6
6
  "ai",