@withone/mem 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Mem Supabase Client
3
+ * https://mem.now
4
+ */
5
+ import { SupabaseClient } from "@supabase/supabase-js";
6
+ import OpenAI from "openai";
7
+ import type { MemRecord, MemRecordWithLinks, SearchResult, ContextResult, LinkedRecord, AddRecordOptions, UpdateRecordOptions, SearchOptions, ContextOptions, LinkedOptions } from "./types.js";
8
+ export declare function getSupabase(): SupabaseClient;
9
+ export declare function getOpenAI(): OpenAI;
10
+ /**
11
+ * Check if OpenAI is available for embeddings
12
+ */
13
+ export declare function hasOpenAI(): boolean;
14
+ export declare function getEmbedding(text: string): Promise<number[] | null>;
15
+ export declare function extractSearchableText(data: Record<string, unknown>): string;
16
+ /**
17
+ * Add a new memory record
18
+ */
19
+ export declare function add(type: string, data: Record<string, unknown>, options?: AddRecordOptions): Promise<MemRecord | null>;
20
+ /**
21
+ * Get a record by ID
22
+ */
23
+ export declare function get(id: string, withLinks?: boolean): Promise<MemRecord | MemRecordWithLinks | null>;
24
+ /**
25
+ * List records by type
26
+ */
27
+ export declare function list(type: string, options?: {
28
+ filterField?: string;
29
+ filterValue?: string;
30
+ limit?: number;
31
+ }): Promise<MemRecord[]>;
32
+ /**
33
+ * Update a record
34
+ */
35
+ export declare function update(id: string, data?: Record<string, unknown>, options?: UpdateRecordOptions): Promise<MemRecord | null>;
36
+ /**
37
+ * Delete a record
38
+ */
39
+ export declare function remove(id: string): Promise<boolean>;
40
+ /**
41
+ * Create a link between two records
42
+ */
43
+ export declare function link(fromId: string, toId: string, relation: string, options?: {
44
+ bidirectional?: boolean;
45
+ metadata?: Record<string, unknown>;
46
+ }): Promise<string | null>;
47
+ /**
48
+ * Remove a link between two records
49
+ */
50
+ export declare function unlink(fromId: string, toId: string, relation: string): Promise<boolean>;
51
+ /**
52
+ * Get linked records
53
+ */
54
+ export declare function linked(id: string, options?: LinkedOptions): Promise<LinkedRecord[]>;
55
+ /**
56
+ * Hybrid search combining semantic similarity and full-text search
57
+ */
58
+ export declare function search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
59
+ /**
60
+ * Full-text search only (no embeddings)
61
+ */
62
+ export declare function ftsSearch(query: string, options?: {
63
+ limit?: number;
64
+ type?: string;
65
+ }): Promise<SearchResult[]>;
66
+ /**
67
+ * Get startup context: most relevant active records
68
+ */
69
+ export declare function context(options?: ContextOptions): Promise<ContextResult[]>;
70
+ /**
71
+ * Increment access count for records
72
+ */
73
+ export declare function incrementAccess(recordIds: string[]): Promise<void>;
74
+ /**
75
+ * Archive records (exclude from context but keep searchable)
76
+ */
77
+ export declare function archive(recordIds: string[]): Promise<number>;
78
+ /**
79
+ * Unarchive records (restore to active status)
80
+ */
81
+ export declare function unarchive(recordIds: string[]): Promise<number>;
82
+ /**
83
+ * Flush records (reset access count)
84
+ */
85
+ export declare function flush(recordIds: string[]): Promise<number>;
86
+ /**
87
+ * Set weight for a record (1-10)
88
+ */
89
+ export declare function weight(recordId: string, value: number): Promise<boolean>;
90
+ /**
91
+ * Apply the database schema
92
+ */
93
+ export declare function migrate(): Promise<boolean>;
94
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,461 @@
1
+ /**
2
+ * Mem Supabase Client
3
+ * https://mem.now
4
+ */
5
+ import { createClient } from "@supabase/supabase-js";
6
+ import OpenAI from "openai";
7
+ // =============================================================================
8
+ // Client Singleton
9
+ // =============================================================================
10
+ let supabase = null;
11
+ let openai = null;
12
+ export function getSupabase() {
13
+ if (!supabase) {
14
+ const url = process.env.SUPABASE_URL;
15
+ const key = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;
16
+ if (!url || !key) {
17
+ throw new Error("SUPABASE_URL and SUPABASE_SERVICE_KEY (or SUPABASE_ANON_KEY) must be set");
18
+ }
19
+ supabase = createClient(url, key);
20
+ }
21
+ return supabase;
22
+ }
23
+ export function getOpenAI() {
24
+ if (!openai) {
25
+ const apiKey = process.env.OPENAI_API_KEY;
26
+ if (!apiKey) {
27
+ throw new Error("OPENAI_API_KEY must be set for embeddings");
28
+ }
29
+ openai = new OpenAI({ apiKey });
30
+ }
31
+ return openai;
32
+ }
33
+ /**
34
+ * Check if OpenAI is available for embeddings
35
+ */
36
+ export function hasOpenAI() {
37
+ return !!process.env.OPENAI_API_KEY;
38
+ }
39
+ // =============================================================================
40
+ // Embeddings
41
+ // =============================================================================
42
+ export async function getEmbedding(text) {
43
+ if (!text?.trim())
44
+ return null;
45
+ if (!hasOpenAI())
46
+ return null;
47
+ try {
48
+ const client = getOpenAI();
49
+ const response = await client.embeddings.create({
50
+ model: "text-embedding-3-small",
51
+ input: text.slice(0, 8000),
52
+ });
53
+ return response.data[0].embedding;
54
+ }
55
+ catch (error) {
56
+ console.error("Warning: Failed to generate embedding:", error);
57
+ return null;
58
+ }
59
+ }
60
+ export function extractSearchableText(data) {
61
+ // Generic extraction: concatenate all string values
62
+ const values = [];
63
+ for (const [, value] of Object.entries(data)) {
64
+ if (typeof value === "string" && value.trim()) {
65
+ values.push(value);
66
+ }
67
+ else if (Array.isArray(value)) {
68
+ for (const item of value) {
69
+ if (typeof item === "string" && item.trim()) {
70
+ values.push(item);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ return values.join(" ");
76
+ }
77
+ // =============================================================================
78
+ // CRUD Operations
79
+ // =============================================================================
80
+ /**
81
+ * Add a new memory record
82
+ */
83
+ export async function add(type, data, options = {}) {
84
+ const { tags, weight, generateEmbedding = true } = options;
85
+ const db = getSupabase();
86
+ const insertData = {
87
+ type,
88
+ data,
89
+ tags: tags || extractTags(data),
90
+ };
91
+ if (weight !== undefined && weight >= 1 && weight <= 10) {
92
+ insertData.weight = weight;
93
+ }
94
+ if (generateEmbedding && hasOpenAI()) {
95
+ const searchableText = extractSearchableText(data);
96
+ if (searchableText) {
97
+ const embedding = await getEmbedding(searchableText);
98
+ if (embedding) {
99
+ insertData.embedding = embedding;
100
+ }
101
+ }
102
+ }
103
+ const { data: result, error } = await db
104
+ .from("mem_records")
105
+ .insert(insertData)
106
+ .select()
107
+ .single();
108
+ if (error) {
109
+ console.error("Error adding record:", error);
110
+ return null;
111
+ }
112
+ return result;
113
+ }
114
+ /**
115
+ * Get a record by ID
116
+ */
117
+ export async function get(id, withLinks = false) {
118
+ const db = getSupabase();
119
+ if (withLinks) {
120
+ const { data, error } = await db.rpc("mem_get_record_with_links", {
121
+ record_id: id,
122
+ });
123
+ if (error) {
124
+ console.error("Error getting record with links:", error);
125
+ return null;
126
+ }
127
+ return data;
128
+ }
129
+ const { data, error } = await db
130
+ .from("mem_records")
131
+ .select("*")
132
+ .eq("id", id)
133
+ .single();
134
+ if (error) {
135
+ console.error("Error getting record:", error);
136
+ return null;
137
+ }
138
+ return data;
139
+ }
140
+ /**
141
+ * List records by type
142
+ */
143
+ export async function list(type, options = {}) {
144
+ const { filterField, filterValue, limit = 100 } = options;
145
+ const db = getSupabase();
146
+ let query = db.from("mem_records").select("*").eq("type", type);
147
+ if (filterField && filterValue) {
148
+ query = query.eq(`data->>${filterField}`, filterValue);
149
+ }
150
+ query = query.order("updated_at", { ascending: false }).limit(limit);
151
+ const { data, error } = await query;
152
+ if (error) {
153
+ console.error("Error listing records:", error);
154
+ return [];
155
+ }
156
+ return data || [];
157
+ }
158
+ /**
159
+ * Update a record
160
+ */
161
+ export async function update(id, data, options = {}) {
162
+ const { tags, regenerateEmbedding = true } = options;
163
+ const db = getSupabase();
164
+ const existing = await get(id);
165
+ if (!existing)
166
+ return null;
167
+ const updateData = {};
168
+ if (data) {
169
+ const mergedData = { ...existing.data, ...data };
170
+ updateData.data = mergedData;
171
+ if (regenerateEmbedding && hasOpenAI()) {
172
+ const searchableText = extractSearchableText(mergedData);
173
+ if (searchableText) {
174
+ const embedding = await getEmbedding(searchableText);
175
+ if (embedding) {
176
+ updateData.embedding = embedding;
177
+ }
178
+ }
179
+ }
180
+ }
181
+ if (tags !== undefined) {
182
+ updateData.tags = tags;
183
+ }
184
+ if (Object.keys(updateData).length === 0) {
185
+ return existing;
186
+ }
187
+ const { data: result, error } = await db
188
+ .from("mem_records")
189
+ .update(updateData)
190
+ .eq("id", id)
191
+ .select()
192
+ .single();
193
+ if (error) {
194
+ console.error("Error updating record:", error);
195
+ return null;
196
+ }
197
+ return result;
198
+ }
199
+ /**
200
+ * Delete a record
201
+ */
202
+ export async function remove(id) {
203
+ const db = getSupabase();
204
+ const { error } = await db.from("mem_records").delete().eq("id", id);
205
+ return !error;
206
+ }
207
+ // =============================================================================
208
+ // Link Operations
209
+ // =============================================================================
210
+ /**
211
+ * Create a link between two records
212
+ */
213
+ export async function link(fromId, toId, relation, options = {}) {
214
+ const { bidirectional = false, metadata } = options;
215
+ const db = getSupabase();
216
+ const { data, error } = await db.rpc("mem_create_link", {
217
+ from_record_id: fromId,
218
+ to_record_id: toId,
219
+ relation_type: relation,
220
+ is_bidirectional: bidirectional,
221
+ link_metadata: metadata,
222
+ });
223
+ if (error) {
224
+ console.error("Error creating link:", error);
225
+ return null;
226
+ }
227
+ return data;
228
+ }
229
+ /**
230
+ * Remove a link between two records
231
+ */
232
+ export async function unlink(fromId, toId, relation) {
233
+ const db = getSupabase();
234
+ const { data, error } = await db.rpc("mem_remove_link", {
235
+ from_record_id: fromId,
236
+ to_record_id: toId,
237
+ relation_type: relation,
238
+ });
239
+ if (error) {
240
+ console.error("Error removing link:", error);
241
+ return false;
242
+ }
243
+ return data;
244
+ }
245
+ /**
246
+ * Get linked records
247
+ */
248
+ export async function linked(id, options = {}) {
249
+ const { relation, direction = "outgoing" } = options;
250
+ const db = getSupabase();
251
+ const { data, error } = await db.rpc("mem_get_linked", {
252
+ record_id: id,
253
+ relation_type: relation || null,
254
+ direction,
255
+ });
256
+ if (error) {
257
+ console.error("Error getting linked records:", error);
258
+ return [];
259
+ }
260
+ return data || [];
261
+ }
262
+ // =============================================================================
263
+ // Search
264
+ // =============================================================================
265
+ /**
266
+ * Hybrid search combining semantic similarity and full-text search
267
+ */
268
+ export async function search(query, options = {}) {
269
+ const { limit = 10, type, ftsWeight = 0.3, semanticWeight = 0.7, includeArchived = false, trackAccess = true, } = options;
270
+ const db = getSupabase();
271
+ const queryEmbedding = await getEmbedding(query);
272
+ if (!queryEmbedding) {
273
+ // Fall back to FTS only
274
+ return ftsSearch(query, { limit, type });
275
+ }
276
+ const { data, error } = await db.rpc("mem_hybrid_search", {
277
+ query_text: query,
278
+ query_embedding: queryEmbedding,
279
+ match_count: limit,
280
+ filter_type: type || null,
281
+ full_text_weight: ftsWeight,
282
+ semantic_weight: semanticWeight,
283
+ include_archived: includeArchived,
284
+ });
285
+ if (error) {
286
+ console.error("Error in hybrid search:", error);
287
+ return [];
288
+ }
289
+ const results = data || [];
290
+ // Track access for returned results
291
+ if (trackAccess && results.length > 0) {
292
+ const ids = results.map((r) => r.id);
293
+ await incrementAccess(ids);
294
+ }
295
+ return results;
296
+ }
297
+ /**
298
+ * Full-text search only (no embeddings)
299
+ */
300
+ export async function ftsSearch(query, options = {}) {
301
+ const { limit = 10, type } = options;
302
+ const db = getSupabase();
303
+ let queryBuilder = db
304
+ .from("mem_records")
305
+ .select("id, type, data, tags")
306
+ .textSearch("searchable", query);
307
+ if (type) {
308
+ queryBuilder = queryBuilder.eq("type", type);
309
+ }
310
+ const { data, error } = await queryBuilder.limit(limit);
311
+ if (error) {
312
+ console.error("Error in FTS search:", error);
313
+ return [];
314
+ }
315
+ return (data || []).map((r, i) => ({
316
+ ...r,
317
+ fts_rank: 1 / (1 + i),
318
+ semantic_rank: 0,
319
+ combined_score: 1 / (1 + i),
320
+ }));
321
+ }
322
+ // =============================================================================
323
+ // Relevance & Context
324
+ // =============================================================================
325
+ /**
326
+ * Get startup context: most relevant active records
327
+ */
328
+ export async function context(options = {}) {
329
+ const { limit = 20, types } = options;
330
+ const db = getSupabase();
331
+ const { data, error } = await db.rpc("mem_get_context", {
332
+ match_count: limit,
333
+ filter_types: types || null,
334
+ });
335
+ if (error) {
336
+ console.error("Error getting context:", error);
337
+ return [];
338
+ }
339
+ return data || [];
340
+ }
341
+ /**
342
+ * Increment access count for records
343
+ */
344
+ export async function incrementAccess(recordIds) {
345
+ if (recordIds.length === 0)
346
+ return;
347
+ const db = getSupabase();
348
+ const { error } = await db.rpc("mem_increment_access", {
349
+ record_ids: recordIds,
350
+ });
351
+ if (error) {
352
+ console.error("Error incrementing access:", error);
353
+ }
354
+ }
355
+ /**
356
+ * Archive records (exclude from context but keep searchable)
357
+ */
358
+ export async function archive(recordIds) {
359
+ if (recordIds.length === 0)
360
+ return 0;
361
+ const db = getSupabase();
362
+ const { data, error } = await db.rpc("mem_archive", {
363
+ record_ids: recordIds,
364
+ });
365
+ if (error) {
366
+ console.error("Error archiving records:", error);
367
+ return 0;
368
+ }
369
+ return data || 0;
370
+ }
371
+ /**
372
+ * Unarchive records (restore to active status)
373
+ */
374
+ export async function unarchive(recordIds) {
375
+ if (recordIds.length === 0)
376
+ return 0;
377
+ const db = getSupabase();
378
+ const { data, error } = await db.rpc("mem_unarchive", {
379
+ record_ids: recordIds,
380
+ });
381
+ if (error) {
382
+ console.error("Error unarchiving records:", error);
383
+ return 0;
384
+ }
385
+ return data || 0;
386
+ }
387
+ /**
388
+ * Flush records (reset access count)
389
+ */
390
+ export async function flush(recordIds) {
391
+ if (recordIds.length === 0)
392
+ return 0;
393
+ const db = getSupabase();
394
+ const { data, error } = await db.rpc("mem_flush", {
395
+ record_ids: recordIds,
396
+ });
397
+ if (error) {
398
+ console.error("Error flushing records:", error);
399
+ return 0;
400
+ }
401
+ return data || 0;
402
+ }
403
+ /**
404
+ * Set weight for a record (1-10)
405
+ */
406
+ export async function weight(recordId, value) {
407
+ if (value < 1 || value > 10) {
408
+ console.error("Weight must be between 1 and 10");
409
+ return false;
410
+ }
411
+ const db = getSupabase();
412
+ const { error } = await db
413
+ .from("mem_records")
414
+ .update({ weight: value })
415
+ .eq("id", recordId);
416
+ if (error) {
417
+ console.error("Error setting weight:", error);
418
+ return false;
419
+ }
420
+ return true;
421
+ }
422
+ // =============================================================================
423
+ // Migration
424
+ // =============================================================================
425
+ import { getMigrationSQL } from "./schema.js";
426
+ /**
427
+ * Apply the database schema
428
+ */
429
+ export async function migrate() {
430
+ const db = getSupabase();
431
+ const sql = getMigrationSQL();
432
+ const { error } = await db.rpc("exec_sql", { sql_query: sql });
433
+ if (error) {
434
+ // Try direct execution if exec_sql doesn't exist
435
+ // This happens on fresh Supabase instances
436
+ console.log("Note: exec_sql function not found. Please run the migration SQL directly in the Supabase SQL editor.");
437
+ console.log("\nMigration SQL has been saved to: recall-migration.sql");
438
+ // Write the SQL to a file for manual execution
439
+ const fs = await import("fs/promises");
440
+ await fs.writeFile("recall-migration.sql", sql);
441
+ return false;
442
+ }
443
+ return true;
444
+ }
445
+ // =============================================================================
446
+ // Helpers
447
+ // =============================================================================
448
+ function extractTags(data) {
449
+ const tags = [];
450
+ if (Array.isArray(data.tags)) {
451
+ tags.push(...data.tags);
452
+ }
453
+ if (typeof data.category === "string") {
454
+ tags.push(data.category);
455
+ }
456
+ if (typeof data.status === "string") {
457
+ tags.push(data.status);
458
+ }
459
+ return [...new Set(tags)];
460
+ }
461
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Recall - Memory System for AI Agents
3
+ *
4
+ * A simple, graph-based memory system backed by Supabase
5
+ * with hybrid search and relevance scoring.
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";
9
+ export { SCHEMA_VERSION, SCHEMA_SQL, VECTOR_INDEX_SQL, FUNCTIONS_SQL, getMigrationSQL, } from "./schema.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Recall - Memory System for AI Agents
3
+ *
4
+ * A simple, graph-based memory system backed by Supabase
5
+ * with hybrid search and relevance scoring.
6
+ */
7
+ // Core client functions
8
+ export {
9
+ // Client setup
10
+ getSupabase, getOpenAI, hasOpenAI,
11
+ // CRUD operations
12
+ add, get, list, update, remove,
13
+ // Link operations
14
+ link, unlink, linked,
15
+ // Search
16
+ search, ftsSearch,
17
+ // Context & Relevance
18
+ context, incrementAccess, archive, unarchive, flush, weight,
19
+ // Migration
20
+ migrate,
21
+ // Utilities
22
+ getEmbedding, extractSearchableText, } from "./client.js";
23
+ // Schema (for advanced users)
24
+ export { SCHEMA_VERSION, SCHEMA_SQL, VECTOR_INDEX_SQL, FUNCTIONS_SQL, getMigrationSQL, } from "./schema.js";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}