@engram-mem/supabase 0.3.7 → 0.4.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.
- package/README.md +22 -279
- package/dist/index.d.ts +34 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -6
- package/dist/index.js.map +1 -1
- package/package.json +6 -12
- package/dist/adapter.d.ts +0 -51
- package/dist/adapter.d.ts.map +0 -1
- package/dist/adapter.js +0 -419
- package/dist/adapter.js.map +0 -1
- package/dist/associations.d.ts +0 -23
- package/dist/associations.d.ts.map +0 -1
- package/dist/associations.js +0 -115
- package/dist/associations.js.map +0 -1
- package/dist/digests.d.ts +0 -13
- package/dist/digests.d.ts.map +0 -1
- package/dist/digests.js +0 -156
- package/dist/digests.js.map +0 -1
- package/dist/episodes.d.ts +0 -28
- package/dist/episodes.d.ts.map +0 -1
- package/dist/episodes.js +0 -290
- package/dist/episodes.js.map +0 -1
- package/dist/migrations.d.ts +0 -27
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js +0 -650
- package/dist/migrations.js.map +0 -1
- package/dist/procedural.d.ts +0 -17
- package/dist/procedural.d.ts.map +0 -1
- package/dist/procedural.js +0 -197
- package/dist/procedural.js.map +0 -1
- package/dist/search.d.ts +0 -10
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js +0 -16
- package/dist/search.js.map +0 -1
- package/dist/semantic.d.ts +0 -30
- package/dist/semantic.d.ts.map +0 -1
- package/dist/semantic.js +0 -244
- package/dist/semantic.js.map +0 -1
package/dist/procedural.js
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { generateId } from '@engram-mem/core';
|
|
2
|
-
import { sanitizeIlike } from './search.js';
|
|
3
|
-
export class SupabaseProceduralStorage {
|
|
4
|
-
client;
|
|
5
|
-
constructor(client) {
|
|
6
|
-
this.client = client;
|
|
7
|
-
}
|
|
8
|
-
async insert(memory) {
|
|
9
|
-
const id = generateId();
|
|
10
|
-
// Insert into memories table first (FK requirement)
|
|
11
|
-
const { error: memErr } = await this.client
|
|
12
|
-
.from('memories')
|
|
13
|
-
.insert({ id, type: 'procedural' });
|
|
14
|
-
if (memErr)
|
|
15
|
-
throw new Error(`Procedural memory insert failed: ${memErr.message}`);
|
|
16
|
-
const { data, error } = await this.client
|
|
17
|
-
.from('memory_procedural')
|
|
18
|
-
.insert({
|
|
19
|
-
id,
|
|
20
|
-
category: memory.category,
|
|
21
|
-
trigger_text: memory.trigger,
|
|
22
|
-
procedure: memory.procedure,
|
|
23
|
-
confidence: memory.confidence,
|
|
24
|
-
observation_count: memory.observationCount,
|
|
25
|
-
last_observed: memory.lastObserved.toISOString(),
|
|
26
|
-
first_observed: memory.firstObserved.toISOString(),
|
|
27
|
-
decay_rate: memory.decayRate,
|
|
28
|
-
source_episode_ids: memory.sourceEpisodeIds,
|
|
29
|
-
embedding: memory.embedding ?? null,
|
|
30
|
-
metadata: memory.metadata,
|
|
31
|
-
})
|
|
32
|
-
.select()
|
|
33
|
-
.single();
|
|
34
|
-
if (error)
|
|
35
|
-
throw new Error(`Procedural insert failed: ${error.message}`);
|
|
36
|
-
return rowToProcedural(data);
|
|
37
|
-
}
|
|
38
|
-
async search(query, opts) {
|
|
39
|
-
const limit = opts?.limit ?? 10;
|
|
40
|
-
const embedding = opts?.embedding;
|
|
41
|
-
if (embedding) {
|
|
42
|
-
// Prefer hybrid RRF search when query text is also available
|
|
43
|
-
if (query) {
|
|
44
|
-
const { data, error } = await this.client.rpc('engram_hybrid_recall', {
|
|
45
|
-
p_query_text: query,
|
|
46
|
-
p_query_embedding: JSON.stringify(embedding),
|
|
47
|
-
p_match_count: limit,
|
|
48
|
-
p_include_episodes: false,
|
|
49
|
-
p_include_digests: false,
|
|
50
|
-
p_include_semantic: false,
|
|
51
|
-
p_include_procedural: true,
|
|
52
|
-
});
|
|
53
|
-
if (error)
|
|
54
|
-
throw new Error(`Procedural search (hybrid) failed: ${error.message}`);
|
|
55
|
-
const rows = (data ?? []);
|
|
56
|
-
const RRF_MAX = 2.0 / 61.0;
|
|
57
|
-
return rows.map((r) => ({
|
|
58
|
-
item: recallRowToProcedural(r),
|
|
59
|
-
similarity: Math.min(1.0, (r.similarity || 0) / RRF_MAX),
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
// Embedding only — fall back to pure vector search
|
|
63
|
-
const { data, error } = await this.client.rpc('engram_recall', {
|
|
64
|
-
p_query_embedding: embedding,
|
|
65
|
-
p_session_id: null,
|
|
66
|
-
p_match_count: limit,
|
|
67
|
-
p_min_similarity: opts?.minScore ?? 0.15,
|
|
68
|
-
p_include_episodes: false,
|
|
69
|
-
p_include_digests: false,
|
|
70
|
-
p_include_semantic: false,
|
|
71
|
-
p_include_procedural: true,
|
|
72
|
-
});
|
|
73
|
-
if (error)
|
|
74
|
-
throw new Error(`Procedural search (vector) failed: ${error.message}`);
|
|
75
|
-
const rows = (data ?? []);
|
|
76
|
-
return rows.map((r) => ({
|
|
77
|
-
item: recallRowToProcedural(r),
|
|
78
|
-
similarity: r.similarity,
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
// Text fallback
|
|
82
|
-
const { data, error } = await this.client
|
|
83
|
-
.from('memory_procedural')
|
|
84
|
-
.select('*')
|
|
85
|
-
.or(`trigger_text.ilike.%${sanitizeIlike(query)}%,procedure.ilike.%${sanitizeIlike(query)}%`)
|
|
86
|
-
.limit(limit);
|
|
87
|
-
if (error)
|
|
88
|
-
throw new Error(`Procedural search (text) failed: ${error.message}`);
|
|
89
|
-
return (data ?? []).map((r) => ({
|
|
90
|
-
item: rowToProcedural(r),
|
|
91
|
-
similarity: 0.5,
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
async searchByTrigger(activity, opts) {
|
|
95
|
-
const limit = opts?.limit ?? 10;
|
|
96
|
-
const embedding = opts?.embedding;
|
|
97
|
-
if (embedding) {
|
|
98
|
-
// Reuse vector search — procedural table indexed on trigger+procedure combined
|
|
99
|
-
return this.search(activity, opts);
|
|
100
|
-
}
|
|
101
|
-
const { data, error } = await this.client
|
|
102
|
-
.from('memory_procedural')
|
|
103
|
-
.select('*')
|
|
104
|
-
.ilike('trigger_text', `%${sanitizeIlike(activity)}%`)
|
|
105
|
-
.limit(limit);
|
|
106
|
-
if (error)
|
|
107
|
-
throw new Error(`Procedural searchByTrigger failed: ${error.message}`);
|
|
108
|
-
return (data ?? []).map((r) => ({
|
|
109
|
-
item: rowToProcedural(r),
|
|
110
|
-
similarity: 0.5,
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
113
|
-
async recordAccess(id) {
|
|
114
|
-
const { error } = await this.client.rpc('engram_record_access', {
|
|
115
|
-
p_id: id,
|
|
116
|
-
p_memory_type: 'procedural',
|
|
117
|
-
});
|
|
118
|
-
if (error)
|
|
119
|
-
throw new Error(`Procedural recordAccess failed: ${error.message}`);
|
|
120
|
-
}
|
|
121
|
-
async incrementObservation(id) {
|
|
122
|
-
const { data: current, error: fetchErr } = await this.client
|
|
123
|
-
.from('memory_procedural')
|
|
124
|
-
.select('observation_count')
|
|
125
|
-
.eq('id', id)
|
|
126
|
-
.single();
|
|
127
|
-
if (fetchErr)
|
|
128
|
-
throw new Error(`Procedural incrementObservation fetch failed: ${fetchErr.message}`);
|
|
129
|
-
const row = current;
|
|
130
|
-
const { error } = await this.client
|
|
131
|
-
.from('memory_procedural')
|
|
132
|
-
.update({
|
|
133
|
-
observation_count: row.observation_count + 1,
|
|
134
|
-
last_observed: new Date().toISOString(),
|
|
135
|
-
})
|
|
136
|
-
.eq('id', id);
|
|
137
|
-
if (error)
|
|
138
|
-
throw new Error(`Procedural incrementObservation update failed: ${error.message}`);
|
|
139
|
-
}
|
|
140
|
-
async batchDecay(opts) {
|
|
141
|
-
const { data, error } = await this.client.rpc('engram_decay_pass', {
|
|
142
|
-
p_semantic_decay_rate: 0,
|
|
143
|
-
p_procedural_decay_rate: opts.decayRate,
|
|
144
|
-
p_semantic_days: 999999,
|
|
145
|
-
p_procedural_days: opts.daysThreshold,
|
|
146
|
-
p_edge_prune_strength: 0,
|
|
147
|
-
p_edge_prune_days: 999999,
|
|
148
|
-
});
|
|
149
|
-
if (error)
|
|
150
|
-
throw new Error(`Procedural batchDecay failed: ${error.message}`);
|
|
151
|
-
const rows = data;
|
|
152
|
-
return rows?.[0]?.procedural_decayed ?? 0;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
function rowToProcedural(row) {
|
|
156
|
-
return {
|
|
157
|
-
id: row.id,
|
|
158
|
-
category: row.category,
|
|
159
|
-
trigger: row.trigger_text,
|
|
160
|
-
procedure: row.procedure,
|
|
161
|
-
confidence: row.confidence,
|
|
162
|
-
observationCount: row.observation_count,
|
|
163
|
-
lastObserved: new Date(row.last_observed),
|
|
164
|
-
firstObserved: new Date(row.first_observed),
|
|
165
|
-
accessCount: row.access_count,
|
|
166
|
-
lastAccessed: row.last_accessed ? new Date(row.last_accessed) : null,
|
|
167
|
-
decayRate: row.decay_rate,
|
|
168
|
-
sourceEpisodeIds: row.source_episode_ids ?? [],
|
|
169
|
-
embedding: row.embedding ?? null,
|
|
170
|
-
metadata: row.metadata ?? {},
|
|
171
|
-
createdAt: new Date(row.created_at),
|
|
172
|
-
updatedAt: new Date(row.updated_at),
|
|
173
|
-
projectId: null,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
function recallRowToProcedural(row) {
|
|
177
|
-
return {
|
|
178
|
-
id: row.id,
|
|
179
|
-
category: 'workflow',
|
|
180
|
-
trigger: '',
|
|
181
|
-
procedure: row.content,
|
|
182
|
-
confidence: row.salience,
|
|
183
|
-
observationCount: 1,
|
|
184
|
-
lastObserved: new Date(row.created_at),
|
|
185
|
-
firstObserved: new Date(row.created_at),
|
|
186
|
-
accessCount: row.access_count,
|
|
187
|
-
lastAccessed: null,
|
|
188
|
-
decayRate: 0.01,
|
|
189
|
-
sourceEpisodeIds: [],
|
|
190
|
-
embedding: null,
|
|
191
|
-
metadata: {},
|
|
192
|
-
createdAt: new Date(row.created_at),
|
|
193
|
-
updatedAt: new Date(row.created_at),
|
|
194
|
-
projectId: null,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=procedural.js.map
|
package/dist/procedural.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"procedural.js","sourceRoot":"","sources":["../src/procedural.ts"],"names":[],"mappings":"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"}
|
package/dist/search.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sanitize a query string for use inside a PostgREST ilike pattern.
|
|
3
|
-
*
|
|
4
|
-
* ilike uses SQL LIKE semantics where `%` matches any sequence of characters,
|
|
5
|
-
* `_` matches any single character. PostgREST's `.or()` filter also treats
|
|
6
|
-
* `.` and `,` as field/value separators in the filter DSL. Escape all four
|
|
7
|
-
* to prevent filter injection.
|
|
8
|
-
*/
|
|
9
|
-
export declare function sanitizeIlike(query: string): string;
|
|
10
|
-
//# sourceMappingURL=search.d.ts.map
|
package/dist/search.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnD"}
|
package/dist/search.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sanitize a query string for use inside a PostgREST ilike pattern.
|
|
3
|
-
*
|
|
4
|
-
* ilike uses SQL LIKE semantics where `%` matches any sequence of characters,
|
|
5
|
-
* `_` matches any single character. PostgREST's `.or()` filter also treats
|
|
6
|
-
* `.` and `,` as field/value separators in the filter DSL. Escape all four
|
|
7
|
-
* to prevent filter injection.
|
|
8
|
-
*/
|
|
9
|
-
export function sanitizeIlike(query) {
|
|
10
|
-
return query
|
|
11
|
-
.replace(/%/g, '\\%')
|
|
12
|
-
.replace(/_/g, '\\_')
|
|
13
|
-
.replace(/\./g, '\\.')
|
|
14
|
-
.replace(/,/g, '\\,');
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=search.js.map
|
package/dist/search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"}
|
package/dist/semantic.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
-
import type { SemanticMemory, SearchOptions, SearchResult } from '@engram-mem/core';
|
|
3
|
-
import type { SemanticStorage } from '@engram-mem/core';
|
|
4
|
-
export declare class SupabaseSemanticStorage implements SemanticStorage {
|
|
5
|
-
private readonly client;
|
|
6
|
-
constructor(client: SupabaseClient);
|
|
7
|
-
insert(memory: Omit<SemanticMemory, 'id' | 'createdAt' | 'updatedAt' | 'accessCount' | 'lastAccessed'>): Promise<SemanticMemory>;
|
|
8
|
-
search(query: string, opts?: SearchOptions): Promise<SearchResult<SemanticMemory>[]>;
|
|
9
|
-
getUnaccessed(days: number): Promise<SemanticMemory[]>;
|
|
10
|
-
recordAccessAndBoost(id: string, confidenceBoost: number): Promise<void>;
|
|
11
|
-
markSuperseded(id: string, supersededBy: string): Promise<void>;
|
|
12
|
-
batchDecay(opts: {
|
|
13
|
-
daysThreshold: number;
|
|
14
|
-
decayRate: number;
|
|
15
|
-
}): Promise<number>;
|
|
16
|
-
batchDecayGradient(updates: Array<{
|
|
17
|
-
id: string;
|
|
18
|
-
effectiveDecayRate: number;
|
|
19
|
-
daysThreshold: number;
|
|
20
|
-
}>): Promise<number>;
|
|
21
|
-
searchAtTime(query: string, asOf: Date, opts?: {
|
|
22
|
-
limit?: number;
|
|
23
|
-
embedding?: number[];
|
|
24
|
-
}): Promise<SearchResult<SemanticMemory>[]>;
|
|
25
|
-
getTopicTimeline(topic: string, opts?: {
|
|
26
|
-
fromDate?: Date;
|
|
27
|
-
toDate?: Date;
|
|
28
|
-
}): Promise<SemanticMemory[]>;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=semantic.d.ts.map
|
package/dist/semantic.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../src/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,qBAAa,uBAAwB,YAAW,eAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE7C,MAAM,CACV,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC,GAC9F,OAAO,CAAC,cAAc,CAAC;IA+BpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;IA+DpF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAWtD,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/D,UAAU,CAAC,IAAI,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAe/E,kBAAkB,CACtB,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF,OAAO,CAAC,MAAM,CAAC;IAwBZ,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC9C,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;IAepC,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,IAAI,CAAA;KAAE,GACxC,OAAO,CAAC,cAAc,EAAE,CAAC;CAkB7B"}
|
package/dist/semantic.js
DELETED
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
import { generateId } from '@engram-mem/core';
|
|
2
|
-
import { sanitizeIlike } from './search.js';
|
|
3
|
-
export class SupabaseSemanticStorage {
|
|
4
|
-
client;
|
|
5
|
-
constructor(client) {
|
|
6
|
-
this.client = client;
|
|
7
|
-
}
|
|
8
|
-
async insert(memory) {
|
|
9
|
-
const id = generateId();
|
|
10
|
-
// Insert into memories table first (FK requirement)
|
|
11
|
-
const { error: memErr } = await this.client
|
|
12
|
-
.from('memories')
|
|
13
|
-
.insert({ id, type: 'semantic' });
|
|
14
|
-
if (memErr)
|
|
15
|
-
throw new Error(`Semantic memory insert failed: ${memErr.message}`);
|
|
16
|
-
const { data, error } = await this.client
|
|
17
|
-
.from('memory_semantic')
|
|
18
|
-
.insert({
|
|
19
|
-
id,
|
|
20
|
-
topic: memory.topic,
|
|
21
|
-
content: memory.content,
|
|
22
|
-
confidence: memory.confidence,
|
|
23
|
-
source_digest_ids: memory.sourceDigestIds,
|
|
24
|
-
source_episode_ids: memory.sourceEpisodeIds,
|
|
25
|
-
decay_rate: memory.decayRate,
|
|
26
|
-
supersedes: memory.supersedes ?? null,
|
|
27
|
-
superseded_by: memory.supersededBy ?? null,
|
|
28
|
-
embedding: memory.embedding ?? null,
|
|
29
|
-
metadata: memory.metadata,
|
|
30
|
-
})
|
|
31
|
-
.select()
|
|
32
|
-
.single();
|
|
33
|
-
if (error)
|
|
34
|
-
throw new Error(`Semantic insert failed: ${error.message}`);
|
|
35
|
-
return rowToSemantic(data);
|
|
36
|
-
}
|
|
37
|
-
async search(query, opts) {
|
|
38
|
-
const limit = opts?.limit ?? 10;
|
|
39
|
-
const embedding = opts?.embedding;
|
|
40
|
-
if (embedding) {
|
|
41
|
-
// Prefer hybrid RRF search when query text is also available
|
|
42
|
-
if (query) {
|
|
43
|
-
const { data, error } = await this.client.rpc('engram_hybrid_recall', {
|
|
44
|
-
p_query_text: query,
|
|
45
|
-
p_query_embedding: JSON.stringify(embedding),
|
|
46
|
-
p_match_count: limit,
|
|
47
|
-
p_include_episodes: false,
|
|
48
|
-
p_include_digests: false,
|
|
49
|
-
p_include_semantic: true,
|
|
50
|
-
p_include_procedural: false,
|
|
51
|
-
});
|
|
52
|
-
if (error)
|
|
53
|
-
throw new Error(`Semantic search (hybrid) failed: ${error.message}`);
|
|
54
|
-
const rows = (data ?? []);
|
|
55
|
-
const RRF_MAX = 2.0 / 61.0;
|
|
56
|
-
return rows.map((r) => ({
|
|
57
|
-
item: recallRowToSemantic(r),
|
|
58
|
-
similarity: Math.min(1.0, (r.similarity || 0) / RRF_MAX),
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
// Embedding only — fall back to pure vector search
|
|
62
|
-
const { data, error } = await this.client.rpc('engram_recall', {
|
|
63
|
-
p_query_embedding: embedding,
|
|
64
|
-
p_session_id: null,
|
|
65
|
-
p_match_count: limit,
|
|
66
|
-
p_min_similarity: opts?.minScore ?? 0.15,
|
|
67
|
-
p_include_episodes: false,
|
|
68
|
-
p_include_digests: false,
|
|
69
|
-
p_include_semantic: true,
|
|
70
|
-
p_include_procedural: false,
|
|
71
|
-
});
|
|
72
|
-
if (error)
|
|
73
|
-
throw new Error(`Semantic search (vector) failed: ${error.message}`);
|
|
74
|
-
const rows = (data ?? []);
|
|
75
|
-
return rows.map((r) => ({
|
|
76
|
-
item: recallRowToSemantic(r),
|
|
77
|
-
similarity: r.similarity,
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
// Text fallback — strip all non-alphanumeric chars to avoid PostgREST .or()
|
|
81
|
-
// parser failures (commas, parens, periods are structural in PostgREST filters)
|
|
82
|
-
const safe = query.replace(/[^a-zA-Z0-9\s]/g, '').split(/\s+/).slice(0, 5).join(' ');
|
|
83
|
-
const { data, error } = await this.client
|
|
84
|
-
.from('memory_semantic')
|
|
85
|
-
.select('*')
|
|
86
|
-
.or(`topic.ilike.%${safe}%,content.ilike.%${safe}%`)
|
|
87
|
-
.is('superseded_by', null)
|
|
88
|
-
.limit(limit);
|
|
89
|
-
if (error)
|
|
90
|
-
throw new Error(`Semantic search (text) failed: ${error.message}`);
|
|
91
|
-
return (data ?? []).map((r) => ({
|
|
92
|
-
item: rowToSemantic(r),
|
|
93
|
-
similarity: 0.5,
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
async getUnaccessed(days) {
|
|
97
|
-
const cutoff = new Date(Date.now() - days * 86400000).toISOString();
|
|
98
|
-
const { data, error } = await this.client
|
|
99
|
-
.from('memory_semantic')
|
|
100
|
-
.select('*')
|
|
101
|
-
.gt('confidence', 0.05)
|
|
102
|
-
.or(`last_accessed.is.null,last_accessed.lt.${cutoff}`);
|
|
103
|
-
if (error)
|
|
104
|
-
throw new Error(`Semantic getUnaccessed failed: ${error.message}`);
|
|
105
|
-
return (data ?? []).map(rowToSemantic);
|
|
106
|
-
}
|
|
107
|
-
async recordAccessAndBoost(id, confidenceBoost) {
|
|
108
|
-
const { error } = await this.client.rpc('engram_record_access', {
|
|
109
|
-
p_id: id,
|
|
110
|
-
p_memory_type: 'semantic',
|
|
111
|
-
p_conf_boost: confidenceBoost,
|
|
112
|
-
});
|
|
113
|
-
if (error)
|
|
114
|
-
throw new Error(`Semantic recordAccessAndBoost failed: ${error.message}`);
|
|
115
|
-
}
|
|
116
|
-
async markSuperseded(id, supersededBy) {
|
|
117
|
-
// Update the old memory to point to its replacement
|
|
118
|
-
const { error: err1 } = await this.client
|
|
119
|
-
.from('memory_semantic')
|
|
120
|
-
.update({ superseded_by: supersededBy })
|
|
121
|
-
.eq('id', id);
|
|
122
|
-
if (err1)
|
|
123
|
-
throw new Error(`Semantic markSuperseded (old) failed: ${err1.message}`);
|
|
124
|
-
// Update the new memory to record what it supersedes
|
|
125
|
-
const { error: err2 } = await this.client
|
|
126
|
-
.from('memory_semantic')
|
|
127
|
-
.update({ supersedes: id })
|
|
128
|
-
.eq('id', supersededBy);
|
|
129
|
-
if (err2)
|
|
130
|
-
throw new Error(`Semantic markSuperseded (new) failed: ${err2.message}`);
|
|
131
|
-
}
|
|
132
|
-
async batchDecay(opts) {
|
|
133
|
-
// Call engram_decay_pass and extract semantic_decayed count
|
|
134
|
-
const { data, error } = await this.client.rpc('engram_decay_pass', {
|
|
135
|
-
p_semantic_decay_rate: opts.decayRate,
|
|
136
|
-
p_procedural_decay_rate: 0,
|
|
137
|
-
p_semantic_days: opts.daysThreshold,
|
|
138
|
-
p_procedural_days: 999999,
|
|
139
|
-
p_edge_prune_strength: 0,
|
|
140
|
-
p_edge_prune_days: 999999,
|
|
141
|
-
});
|
|
142
|
-
if (error)
|
|
143
|
-
throw new Error(`Semantic batchDecay failed: ${error.message}`);
|
|
144
|
-
const rows = data;
|
|
145
|
-
return rows?.[0]?.semantic_decayed ?? 0;
|
|
146
|
-
}
|
|
147
|
-
async batchDecayGradient(updates) {
|
|
148
|
-
let total = 0;
|
|
149
|
-
for (const u of updates) {
|
|
150
|
-
const { error } = await this.client.rpc('engram_decay_semantic_single', {
|
|
151
|
-
p_id: u.id,
|
|
152
|
-
p_decay_rate: u.effectiveDecayRate,
|
|
153
|
-
p_days_threshold: u.daysThreshold,
|
|
154
|
-
});
|
|
155
|
-
// RPC may not exist yet — fall back silently
|
|
156
|
-
if (error) {
|
|
157
|
-
// If the RPC doesn't exist, do a direct update
|
|
158
|
-
const { count } = await this.client
|
|
159
|
-
.from('memory_semantic')
|
|
160
|
-
.update({ confidence: 0.05 }) // floor — can't do math in Supabase client
|
|
161
|
-
.eq('id', u.id)
|
|
162
|
-
.is('superseded_by', null);
|
|
163
|
-
total += count ?? 0;
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
total++;
|
|
167
|
-
}
|
|
168
|
-
return total;
|
|
169
|
-
}
|
|
170
|
-
async searchAtTime(query, asOf, opts) {
|
|
171
|
-
// Get broader results then filter by temporal validity
|
|
172
|
-
const results = await this.search(query, { limit: (opts?.limit ?? 10) * 3, embedding: opts?.embedding });
|
|
173
|
-
const asOfIso = asOf.toISOString();
|
|
174
|
-
return results.filter(r => {
|
|
175
|
-
const meta = r.item.metadata;
|
|
176
|
-
// Use valid_from/valid_until from the item if available, else fall back
|
|
177
|
-
const validFrom = meta?.valid_from ?? r.item.createdAt.toISOString();
|
|
178
|
-
const validUntil = meta?.valid_until;
|
|
179
|
-
if (validFrom > asOfIso)
|
|
180
|
-
return false;
|
|
181
|
-
if (validUntil && validUntil <= asOfIso)
|
|
182
|
-
return false;
|
|
183
|
-
return true;
|
|
184
|
-
}).slice(0, opts?.limit ?? 10);
|
|
185
|
-
}
|
|
186
|
-
async getTopicTimeline(topic, opts) {
|
|
187
|
-
let query = this.client
|
|
188
|
-
.from('memory_semantic')
|
|
189
|
-
.select('*')
|
|
190
|
-
.or(`topic.eq.${sanitizeIlike(topic)},topic.ilike.%${sanitizeIlike(topic)}%`)
|
|
191
|
-
.order('created_at', { ascending: true });
|
|
192
|
-
if (opts?.fromDate) {
|
|
193
|
-
query = query.gte('created_at', opts.fromDate.toISOString());
|
|
194
|
-
}
|
|
195
|
-
if (opts?.toDate) {
|
|
196
|
-
query = query.lte('created_at', opts.toDate.toISOString());
|
|
197
|
-
}
|
|
198
|
-
const { data, error } = await query;
|
|
199
|
-
if (error)
|
|
200
|
-
throw new Error(`Semantic getTopicTimeline failed: ${error.message}`);
|
|
201
|
-
return (data ?? []).map(rowToSemantic);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
function rowToSemantic(row) {
|
|
205
|
-
return {
|
|
206
|
-
id: row.id,
|
|
207
|
-
topic: row.topic,
|
|
208
|
-
content: row.content,
|
|
209
|
-
confidence: row.confidence,
|
|
210
|
-
sourceDigestIds: row.source_digest_ids ?? [],
|
|
211
|
-
sourceEpisodeIds: row.source_episode_ids ?? [],
|
|
212
|
-
accessCount: row.access_count,
|
|
213
|
-
lastAccessed: row.last_accessed ? new Date(row.last_accessed) : null,
|
|
214
|
-
decayRate: row.decay_rate,
|
|
215
|
-
supersedes: row.supersedes ?? null,
|
|
216
|
-
supersededBy: row.superseded_by ?? null,
|
|
217
|
-
embedding: row.embedding ?? null,
|
|
218
|
-
metadata: row.metadata ?? {},
|
|
219
|
-
createdAt: new Date(row.created_at),
|
|
220
|
-
updatedAt: new Date(row.updated_at),
|
|
221
|
-
projectId: null,
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
function recallRowToSemantic(row) {
|
|
225
|
-
return {
|
|
226
|
-
id: row.id,
|
|
227
|
-
topic: '',
|
|
228
|
-
content: row.content,
|
|
229
|
-
confidence: row.salience,
|
|
230
|
-
sourceDigestIds: [],
|
|
231
|
-
sourceEpisodeIds: [],
|
|
232
|
-
accessCount: row.access_count,
|
|
233
|
-
lastAccessed: null,
|
|
234
|
-
decayRate: 0.02,
|
|
235
|
-
supersedes: null,
|
|
236
|
-
supersededBy: null,
|
|
237
|
-
embedding: null,
|
|
238
|
-
metadata: {},
|
|
239
|
-
createdAt: new Date(row.created_at),
|
|
240
|
-
updatedAt: new Date(row.created_at),
|
|
241
|
-
projectId: null,
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
//# sourceMappingURL=semantic.js.map
|
package/dist/semantic.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../src/semantic.ts"],"names":[],"mappings":"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"}
|