@onenomad/engram-mcp 1.0.0-beta.11 → 1.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/storage-cloud.d.ts +38 -29
- package/dist/storage-cloud.js +220 -54
- package/dist/storage-cloud.js.map +1 -1
- package/package.json +1 -1
package/dist/storage-cloud.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CloudStorageAdapter — Pyre Cloud HTTP-backed storage.
|
|
2
|
+
* CloudStorageAdapter — Pyre Cloud HTTP-backed storage.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Speaks the wire contract pyre-web exposes at /api/engram/*. Each
|
|
5
|
+
* StorageAdapter method maps to a single HTTP request — pyre-web is
|
|
6
|
+
* a thin multi-tenant Postgres-over-HTTP shim that mirrors what
|
|
7
|
+
* PostgresStorageAdapter does locally.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Auth: Bearer token from credentials.json. The server derives the
|
|
10
|
+
* tenant_id from the api-key; the adapter never plumbs it.
|
|
11
|
+
*
|
|
12
|
+
* Error envelope: pyre-web emits `{ "error": { "code", "message" } }`
|
|
13
|
+
* on non-2xx. errorBody() unpacks it; failures bubble up as Error
|
|
14
|
+
* with that text so the rest of the engram pipeline reports cleanly.
|
|
13
15
|
*/
|
|
14
16
|
import type { StorageAdapter, StoredChunk, ListChunksOpts, HandoffNote, HandoffSummary, QueryTriplesOpts, TripleStats, VectorHit, ReadDiaryOpts } from './storage-adapter.js';
|
|
15
17
|
import type { DailyLogEntry, ProceduralRule, KnowledgeTriple, DiaryEntry } from './types.js';
|
|
@@ -18,44 +20,51 @@ export interface CloudStorageOptions {
|
|
|
18
20
|
apiKey: string;
|
|
19
21
|
label?: string;
|
|
20
22
|
scopes?: string[];
|
|
23
|
+
fetch?: typeof fetch;
|
|
21
24
|
}
|
|
22
25
|
export declare class CloudStorageAdapter implements StorageAdapter {
|
|
23
26
|
readonly apiUrl: string;
|
|
24
27
|
readonly apiKey: string;
|
|
25
28
|
readonly label: string | undefined;
|
|
26
29
|
readonly scopes: readonly string[];
|
|
30
|
+
private readonly fetchImpl;
|
|
27
31
|
constructor(opts: CloudStorageOptions);
|
|
32
|
+
private url;
|
|
33
|
+
private headers;
|
|
34
|
+
private request;
|
|
35
|
+
private send;
|
|
36
|
+
private sendJson;
|
|
28
37
|
ensureReady(): Promise<void>;
|
|
29
38
|
close(): Promise<void>;
|
|
30
|
-
saveChunk(
|
|
31
|
-
saveChunks(
|
|
32
|
-
getChunk(
|
|
33
|
-
deleteChunk(
|
|
34
|
-
listChunks(
|
|
35
|
-
updateChunk(
|
|
39
|
+
saveChunk(chunk: StoredChunk): Promise<void>;
|
|
40
|
+
saveChunks(chunks: StoredChunk[]): Promise<void>;
|
|
41
|
+
getChunk(id: string): Promise<StoredChunk | null>;
|
|
42
|
+
deleteChunk(id: string): Promise<void>;
|
|
43
|
+
listChunks(opts?: ListChunksOpts): Promise<StoredChunk[]>;
|
|
44
|
+
updateChunk(id: string, updates: Partial<StoredChunk>): Promise<void>;
|
|
36
45
|
chunkCount(): Promise<number>;
|
|
37
|
-
vectorSearch(
|
|
46
|
+
vectorSearch(queryEmbedding: number[], limit: number, filter?: string): Promise<VectorHit[]>;
|
|
38
47
|
getTaxonomy(): Promise<Record<string, Record<string, number>>>;
|
|
39
|
-
appendDailyEntry(
|
|
40
|
-
getDailyLogs(
|
|
48
|
+
appendDailyEntry(date: string, entry: DailyLogEntry): Promise<void>;
|
|
49
|
+
getDailyLogs(daysBack: number): Promise<Array<{
|
|
41
50
|
date: string;
|
|
42
51
|
entries: DailyLogEntry[];
|
|
43
52
|
}>>;
|
|
44
|
-
saveRule(
|
|
53
|
+
saveRule(rule: ProceduralRule): Promise<void>;
|
|
45
54
|
getRules(): Promise<ProceduralRule[]>;
|
|
46
|
-
deleteRule(
|
|
47
|
-
saveTriple(
|
|
48
|
-
queryTriples(
|
|
49
|
-
invalidateTriple(
|
|
50
|
-
getTripleTimeline(
|
|
55
|
+
deleteRule(id: string): Promise<void>;
|
|
56
|
+
saveTriple(triple: KnowledgeTriple): Promise<void>;
|
|
57
|
+
queryTriples(opts?: QueryTriplesOpts): Promise<KnowledgeTriple[]>;
|
|
58
|
+
invalidateTriple(id: string): Promise<void>;
|
|
59
|
+
getTripleTimeline(entity: string): Promise<KnowledgeTriple[]>;
|
|
51
60
|
getTripleStats(): Promise<TripleStats>;
|
|
52
|
-
writeDiaryEntry(
|
|
53
|
-
readDiary(
|
|
61
|
+
writeDiaryEntry(content: string, agent?: string): Promise<DiaryEntry>;
|
|
62
|
+
readDiary(opts?: ReadDiaryOpts): Promise<Array<{
|
|
54
63
|
date: string;
|
|
55
64
|
entries: DiaryEntry[];
|
|
56
65
|
}>>;
|
|
57
66
|
listDiaryDates(): Promise<string[]>;
|
|
58
|
-
writeHandoff(
|
|
59
|
-
readHandoff(
|
|
60
|
-
listHandoffs(
|
|
67
|
+
writeHandoff(note: Omit<HandoffNote, 'timestamp'>): Promise<HandoffNote>;
|
|
68
|
+
readHandoff(stamp?: string): Promise<HandoffNote | null>;
|
|
69
|
+
listHandoffs(limit?: number): Promise<HandoffSummary[]>;
|
|
61
70
|
}
|
package/dist/storage-cloud.js
CHANGED
|
@@ -1,67 +1,233 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
`Until then, unset STORAGE_BACKEND and remove ~/.pyre/credentials.json (or run \`engram-mcp logout\`) ` +
|
|
18
|
-
`to use the local file backend.`);
|
|
1
|
+
async function errorBody(res) {
|
|
2
|
+
const text = await res.text().catch(() => '');
|
|
3
|
+
if (!text)
|
|
4
|
+
return `${res.status} ${res.statusText}`;
|
|
5
|
+
try {
|
|
6
|
+
const parsed = JSON.parse(text);
|
|
7
|
+
if (parsed.error?.message) {
|
|
8
|
+
return parsed.error.code
|
|
9
|
+
? `${parsed.error.code}: ${parsed.error.message}`
|
|
10
|
+
: parsed.error.message;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
/* raw text fallback */
|
|
15
|
+
}
|
|
16
|
+
return text.slice(0, 200);
|
|
19
17
|
}
|
|
20
18
|
export class CloudStorageAdapter {
|
|
21
19
|
apiUrl;
|
|
22
20
|
apiKey;
|
|
23
21
|
label;
|
|
24
22
|
scopes;
|
|
23
|
+
fetchImpl;
|
|
25
24
|
constructor(opts) {
|
|
26
|
-
this.apiUrl = opts.apiUrl;
|
|
25
|
+
this.apiUrl = opts.apiUrl.replace(/\/+$/, '');
|
|
27
26
|
this.apiKey = opts.apiKey;
|
|
28
27
|
this.label = opts.label;
|
|
29
28
|
this.scopes = Object.freeze([...(opts.scopes ?? [])]);
|
|
29
|
+
this.fetchImpl = opts.fetch ?? fetch;
|
|
30
|
+
}
|
|
31
|
+
// ── HTTP helpers ───────────────────────────────────────────────────
|
|
32
|
+
url(path) {
|
|
33
|
+
return `${this.apiUrl}${path.startsWith('/') ? path : `/${path}`}`;
|
|
34
|
+
}
|
|
35
|
+
headers() {
|
|
36
|
+
return {
|
|
37
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
Accept: 'application/json',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async request(method, path, body) {
|
|
43
|
+
const init = { method, headers: this.headers() };
|
|
44
|
+
if (body !== undefined)
|
|
45
|
+
init.body = JSON.stringify(body);
|
|
46
|
+
return await this.fetchImpl(this.url(path), init);
|
|
47
|
+
}
|
|
48
|
+
async send(method, path, body) {
|
|
49
|
+
const res = await this.request(method, path, body);
|
|
50
|
+
if (!res.ok) {
|
|
51
|
+
const msg = await errorBody(res);
|
|
52
|
+
throw new Error(`Engram cloud ${method} ${path} ${res.status}: ${msg}`);
|
|
53
|
+
}
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
async sendJson(method, path, body) {
|
|
57
|
+
const res = await this.send(method, path, body);
|
|
58
|
+
return (await res.json());
|
|
59
|
+
}
|
|
60
|
+
// ── Lifecycle ──────────────────────────────────────────────────────
|
|
61
|
+
async ensureReady() {
|
|
62
|
+
// Lightweight identity probe. Verifies credentials are live and the
|
|
63
|
+
// server is reachable before any pipeline work spins up. 401 here is
|
|
64
|
+
// a clean signal to re-run `engram-mcp login`.
|
|
65
|
+
const res = await this.request('GET', '/api/auth/whoami');
|
|
66
|
+
if (!res.ok) {
|
|
67
|
+
const msg = await errorBody(res);
|
|
68
|
+
if (res.status === 401) {
|
|
69
|
+
throw new Error(`Engram cloud: credentials invalid or expired (${msg}). Run \`engram-mcp login <url>\` again.`);
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Engram cloud: server check failed (${res.status}): ${msg}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async close() {
|
|
75
|
+
/* stateless HTTP client; nothing to close. */
|
|
76
|
+
}
|
|
77
|
+
// ── Chunks ─────────────────────────────────────────────────────────
|
|
78
|
+
async saveChunk(chunk) {
|
|
79
|
+
await this.send('POST', '/api/engram/chunks', chunk);
|
|
80
|
+
}
|
|
81
|
+
async saveChunks(chunks) {
|
|
82
|
+
if (chunks.length === 0)
|
|
83
|
+
return;
|
|
84
|
+
await this.send('POST', '/api/engram/chunks/batch', { chunks });
|
|
85
|
+
}
|
|
86
|
+
async getChunk(id) {
|
|
87
|
+
const res = await this.request('GET', `/api/engram/chunks/${encodeURIComponent(id)}`);
|
|
88
|
+
if (res.status === 404)
|
|
89
|
+
return null;
|
|
90
|
+
if (!res.ok) {
|
|
91
|
+
const msg = await errorBody(res);
|
|
92
|
+
throw new Error(`Engram cloud GET /chunks/${id} ${res.status}: ${msg}`);
|
|
93
|
+
}
|
|
94
|
+
return (await res.json());
|
|
95
|
+
}
|
|
96
|
+
async deleteChunk(id) {
|
|
97
|
+
await this.send('DELETE', `/api/engram/chunks/${encodeURIComponent(id)}`);
|
|
98
|
+
}
|
|
99
|
+
async listChunks(opts) {
|
|
100
|
+
const qs = new URLSearchParams();
|
|
101
|
+
if (opts?.excludeTiers && opts.excludeTiers.length > 0) {
|
|
102
|
+
qs.set('excludeTiers', opts.excludeTiers.join(','));
|
|
103
|
+
}
|
|
104
|
+
if (opts?.tier)
|
|
105
|
+
qs.set('tier', opts.tier);
|
|
106
|
+
if (opts?.cognitiveLayer)
|
|
107
|
+
qs.set('cognitiveLayer', opts.cognitiveLayer);
|
|
108
|
+
if (opts?.domain)
|
|
109
|
+
qs.set('domain', opts.domain);
|
|
110
|
+
if (opts?.topic)
|
|
111
|
+
qs.set('topic', opts.topic);
|
|
112
|
+
if (opts?.tag)
|
|
113
|
+
qs.set('tag', opts.tag);
|
|
114
|
+
const path = `/api/engram/chunks${qs.toString() ? `?${qs.toString()}` : ''}`;
|
|
115
|
+
const { chunks } = await this.sendJson('GET', path);
|
|
116
|
+
return chunks;
|
|
117
|
+
}
|
|
118
|
+
async updateChunk(id, updates) {
|
|
119
|
+
await this.send('PATCH', `/api/engram/chunks/${encodeURIComponent(id)}`, updates);
|
|
120
|
+
}
|
|
121
|
+
async chunkCount() {
|
|
122
|
+
const { count } = await this.sendJson('GET', '/api/engram/chunks/count');
|
|
123
|
+
return count;
|
|
124
|
+
}
|
|
125
|
+
async vectorSearch(queryEmbedding, limit, filter) {
|
|
126
|
+
const body = {
|
|
127
|
+
embedding: queryEmbedding,
|
|
128
|
+
limit,
|
|
129
|
+
};
|
|
130
|
+
if (filter)
|
|
131
|
+
body.filter = filter;
|
|
132
|
+
const { hits } = await this.sendJson('POST', '/api/engram/chunks/search', body);
|
|
133
|
+
return hits;
|
|
134
|
+
}
|
|
135
|
+
// ── Taxonomy ───────────────────────────────────────────────────────
|
|
136
|
+
async getTaxonomy() {
|
|
137
|
+
const { taxonomy } = await this.sendJson('GET', '/api/engram/taxonomy');
|
|
138
|
+
return taxonomy;
|
|
139
|
+
}
|
|
140
|
+
// ── Daily logs ─────────────────────────────────────────────────────
|
|
141
|
+
async appendDailyEntry(date, entry) {
|
|
142
|
+
await this.send('POST', '/api/engram/daily-logs', { date, entry });
|
|
143
|
+
}
|
|
144
|
+
async getDailyLogs(daysBack) {
|
|
145
|
+
const { days } = await this.sendJson('GET', `/api/engram/daily-logs?days_back=${daysBack}`);
|
|
146
|
+
return days;
|
|
147
|
+
}
|
|
148
|
+
// ── Procedural rules ───────────────────────────────────────────────
|
|
149
|
+
async saveRule(rule) {
|
|
150
|
+
await this.send('POST', '/api/engram/rules', rule);
|
|
151
|
+
}
|
|
152
|
+
async getRules() {
|
|
153
|
+
const { rules } = await this.sendJson('GET', '/api/engram/rules');
|
|
154
|
+
return rules;
|
|
155
|
+
}
|
|
156
|
+
async deleteRule(id) {
|
|
157
|
+
await this.send('DELETE', `/api/engram/rules/${encodeURIComponent(id)}`);
|
|
158
|
+
}
|
|
159
|
+
// ── Knowledge triples ──────────────────────────────────────────────
|
|
160
|
+
async saveTriple(triple) {
|
|
161
|
+
await this.send('POST', '/api/engram/triples', triple);
|
|
162
|
+
}
|
|
163
|
+
async queryTriples(opts) {
|
|
164
|
+
const qs = new URLSearchParams();
|
|
165
|
+
if (opts?.subject)
|
|
166
|
+
qs.set('subject', opts.subject);
|
|
167
|
+
if (opts?.predicate)
|
|
168
|
+
qs.set('predicate', opts.predicate);
|
|
169
|
+
if (opts?.object)
|
|
170
|
+
qs.set('object', opts.object);
|
|
171
|
+
if (opts?.activeOnly)
|
|
172
|
+
qs.set('active_only', 'true');
|
|
173
|
+
const path = `/api/engram/triples${qs.toString() ? `?${qs.toString()}` : ''}`;
|
|
174
|
+
const { triples } = await this.sendJson('GET', path);
|
|
175
|
+
return triples;
|
|
176
|
+
}
|
|
177
|
+
async invalidateTriple(id) {
|
|
178
|
+
await this.send('POST', `/api/engram/triples/${encodeURIComponent(id)}/invalidate`);
|
|
179
|
+
}
|
|
180
|
+
async getTripleTimeline(entity) {
|
|
181
|
+
const { triples } = await this.sendJson('GET', `/api/engram/triples/timeline/${encodeURIComponent(entity)}`);
|
|
182
|
+
return triples;
|
|
183
|
+
}
|
|
184
|
+
async getTripleStats() {
|
|
185
|
+
return await this.sendJson('GET', '/api/engram/triples/stats');
|
|
186
|
+
}
|
|
187
|
+
// ── Diary ──────────────────────────────────────────────────────────
|
|
188
|
+
async writeDiaryEntry(content, agent) {
|
|
189
|
+
return await this.sendJson('POST', '/api/engram/diary', { content, agent });
|
|
190
|
+
}
|
|
191
|
+
async readDiary(opts) {
|
|
192
|
+
const qs = new URLSearchParams();
|
|
193
|
+
if (opts?.date)
|
|
194
|
+
qs.set('date', opts.date);
|
|
195
|
+
else if (opts?.daysBack !== undefined)
|
|
196
|
+
qs.set('days_back', String(opts.daysBack));
|
|
197
|
+
if (opts?.agent)
|
|
198
|
+
qs.set('agent', opts.agent);
|
|
199
|
+
const path = `/api/engram/diary${qs.toString() ? `?${qs.toString()}` : ''}`;
|
|
200
|
+
const { days } = await this.sendJson('GET', path);
|
|
201
|
+
return days;
|
|
202
|
+
}
|
|
203
|
+
async listDiaryDates() {
|
|
204
|
+
const { dates } = await this.sendJson('GET', '/api/engram/diary/dates');
|
|
205
|
+
return dates;
|
|
206
|
+
}
|
|
207
|
+
// ── Handoffs ───────────────────────────────────────────────────────
|
|
208
|
+
async writeHandoff(note) {
|
|
209
|
+
// pyre-web returns { stamp, ...HandoffNote }. The local file adapter
|
|
210
|
+
// returns just HandoffNote, and downstream consumers don't depend on
|
|
211
|
+
// `stamp` from this method's return — strip it so the contract matches.
|
|
212
|
+
const full = await this.sendJson('POST', '/api/engram/handoffs', note);
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
214
|
+
const { stamp: _stamp, ...rest } = full;
|
|
215
|
+
return rest;
|
|
216
|
+
}
|
|
217
|
+
async readHandoff(stamp) {
|
|
218
|
+
const target = stamp ?? 'latest';
|
|
219
|
+
const res = await this.request('GET', `/api/engram/handoffs/${encodeURIComponent(target)}`);
|
|
220
|
+
if (res.status === 404)
|
|
221
|
+
return null;
|
|
222
|
+
if (!res.ok) {
|
|
223
|
+
const msg = await errorBody(res);
|
|
224
|
+
throw new Error(`Engram cloud GET /handoffs/${target} ${res.status}: ${msg}`);
|
|
225
|
+
}
|
|
226
|
+
return (await res.json());
|
|
227
|
+
}
|
|
228
|
+
async listHandoffs(limit = 10) {
|
|
229
|
+
const { handoffs } = await this.sendJson('GET', `/api/engram/handoffs?limit=${limit}`);
|
|
230
|
+
return handoffs;
|
|
30
231
|
}
|
|
31
|
-
// Lifecycle ─────────────────────────────────────────────────────────
|
|
32
|
-
async ensureReady() { notImplemented('ensureReady'); }
|
|
33
|
-
async close() { }
|
|
34
|
-
// Chunks ────────────────────────────────────────────────────────────
|
|
35
|
-
async saveChunk(_chunk) { notImplemented('saveChunk'); }
|
|
36
|
-
async saveChunks(_chunks) { notImplemented('saveChunks'); }
|
|
37
|
-
async getChunk(_id) { notImplemented('getChunk'); }
|
|
38
|
-
async deleteChunk(_id) { notImplemented('deleteChunk'); }
|
|
39
|
-
async listChunks(_opts) { notImplemented('listChunks'); }
|
|
40
|
-
async updateChunk(_id, _updates) { notImplemented('updateChunk'); }
|
|
41
|
-
async chunkCount() { notImplemented('chunkCount'); }
|
|
42
|
-
async vectorSearch(_q, _limit, _filter) { notImplemented('vectorSearch'); }
|
|
43
|
-
// Taxonomy ──────────────────────────────────────────────────────────
|
|
44
|
-
async getTaxonomy() { notImplemented('getTaxonomy'); }
|
|
45
|
-
// Daily logs ────────────────────────────────────────────────────────
|
|
46
|
-
async appendDailyEntry(_date, _entry) { notImplemented('appendDailyEntry'); }
|
|
47
|
-
async getDailyLogs(_daysBack) { notImplemented('getDailyLogs'); }
|
|
48
|
-
// Procedural rules ──────────────────────────────────────────────────
|
|
49
|
-
async saveRule(_rule) { notImplemented('saveRule'); }
|
|
50
|
-
async getRules() { notImplemented('getRules'); }
|
|
51
|
-
async deleteRule(_id) { notImplemented('deleteRule'); }
|
|
52
|
-
// Knowledge triples ─────────────────────────────────────────────────
|
|
53
|
-
async saveTriple(_triple) { notImplemented('saveTriple'); }
|
|
54
|
-
async queryTriples(_opts) { notImplemented('queryTriples'); }
|
|
55
|
-
async invalidateTriple(_id) { notImplemented('invalidateTriple'); }
|
|
56
|
-
async getTripleTimeline(_entity) { notImplemented('getTripleTimeline'); }
|
|
57
|
-
async getTripleStats() { notImplemented('getTripleStats'); }
|
|
58
|
-
// Diary ─────────────────────────────────────────────────────────────
|
|
59
|
-
async writeDiaryEntry(_content, _agent) { notImplemented('writeDiaryEntry'); }
|
|
60
|
-
async readDiary(_opts) { notImplemented('readDiary'); }
|
|
61
|
-
async listDiaryDates() { notImplemented('listDiaryDates'); }
|
|
62
|
-
// Handoffs ──────────────────────────────────────────────────────────
|
|
63
|
-
async writeHandoff(_note) { notImplemented('writeHandoff'); }
|
|
64
|
-
async readHandoff(_stamp) { notImplemented('readHandoff'); }
|
|
65
|
-
async listHandoffs(_limit) { notImplemented('listHandoffs'); }
|
|
66
232
|
}
|
|
67
233
|
//# sourceMappingURL=storage-cloud.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-cloud.js","sourceRoot":"","sources":["../src/storage-cloud.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage-cloud.js","sourceRoot":"","sources":["../src/storage-cloud.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onenomad/engram-mcp",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.12",
|
|
4
4
|
"mcpName": "io.github.onenomad-llc/engram-mcp",
|
|
5
5
|
"description": "Engram — memory MCP server for Claude Code, plus a library API for direct in-process use. LLM-powered extraction, hybrid ANN search, tier lifecycle, spreading activation, procedural rules, real-time ingest, Mem0, and session-state.",
|
|
6
6
|
"type": "module",
|