sigma-memory 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,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OntologyManager = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const crypto_1 = require("crypto");
7
+ class OntologyManager {
8
+ config;
9
+ graphPath;
10
+ entities = new Map();
11
+ relations = new Map();
12
+ loaded = false;
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.graphPath = config.ontologyPath;
16
+ this.ensureDirectories();
17
+ }
18
+ ensureDirectories() {
19
+ const dir = (0, path_1.dirname)(this.graphPath);
20
+ if (!(0, fs_1.existsSync)(dir)) {
21
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
22
+ }
23
+ }
24
+ generateId() {
25
+ return (0, crypto_1.randomBytes)(16).toString('hex');
26
+ }
27
+ loadGraph() {
28
+ if (this.loaded)
29
+ return;
30
+ this.entities.clear();
31
+ this.relations.clear();
32
+ if (!(0, fs_1.existsSync)(this.graphPath)) {
33
+ this.loaded = true;
34
+ return;
35
+ }
36
+ const content = (0, fs_1.readFileSync)(this.graphPath, 'utf8');
37
+ const lines = content.trim().split('\n').filter(line => line.trim());
38
+ for (const line of lines) {
39
+ try {
40
+ const entry = JSON.parse(line);
41
+ switch (entry.kind) {
42
+ case 'entity':
43
+ this.entities.set(entry.id, {
44
+ id: entry.id,
45
+ type: entry.type,
46
+ name: entry.name,
47
+ properties: entry.properties,
48
+ createdAt: entry.createdAt,
49
+ updatedAt: entry.updatedAt
50
+ });
51
+ break;
52
+ case 'relation':
53
+ this.relations.set(entry.id, {
54
+ id: entry.id,
55
+ from: entry.from,
56
+ to: entry.to,
57
+ type: entry.type,
58
+ properties: entry.properties,
59
+ createdAt: entry.createdAt
60
+ });
61
+ break;
62
+ case 'delete':
63
+ // Supprime l'entité ou la relation
64
+ this.entities.delete(entry.targetId);
65
+ this.relations.delete(entry.targetId);
66
+ // Supprime aussi toutes les relations liées à cette entité
67
+ for (const [relationId, relation] of this.relations) {
68
+ if (relation.from === entry.targetId || relation.to === entry.targetId) {
69
+ this.relations.delete(relationId);
70
+ }
71
+ }
72
+ break;
73
+ }
74
+ }
75
+ catch (error) {
76
+ console.error(`Error parsing JSONL line: ${line}`, error);
77
+ }
78
+ }
79
+ this.loaded = true;
80
+ }
81
+ appendToFile(entry) {
82
+ this.ensureDirectories();
83
+ const line = JSON.stringify(entry) + '\n';
84
+ (0, fs_1.appendFileSync)(this.graphPath, line, 'utf8');
85
+ }
86
+ /**
87
+ * Ajoute une entité
88
+ */
89
+ addEntity(entity) {
90
+ this.loadGraph();
91
+ const id = this.generateId();
92
+ const now = new Date().toISOString();
93
+ const newEntity = {
94
+ ...entity,
95
+ id,
96
+ createdAt: now,
97
+ updatedAt: now
98
+ };
99
+ this.entities.set(id, newEntity);
100
+ const entry = {
101
+ kind: 'entity',
102
+ ...newEntity
103
+ };
104
+ this.appendToFile(entry);
105
+ return id;
106
+ }
107
+ /**
108
+ * Ajoute une relation
109
+ */
110
+ addRelation(relation) {
111
+ this.loadGraph();
112
+ // Vérifie que les entités source et destination existent
113
+ if (!this.entities.has(relation.from)) {
114
+ throw new Error(`Source entity not found: ${relation.from}`);
115
+ }
116
+ if (!this.entities.has(relation.to)) {
117
+ throw new Error(`Target entity not found: ${relation.to}`);
118
+ }
119
+ const id = this.generateId();
120
+ const now = new Date().toISOString();
121
+ const newRelation = {
122
+ ...relation,
123
+ id,
124
+ createdAt: now
125
+ };
126
+ this.relations.set(id, newRelation);
127
+ const entry = {
128
+ kind: 'relation',
129
+ ...newRelation
130
+ };
131
+ this.appendToFile(entry);
132
+ return id;
133
+ }
134
+ /**
135
+ * Recherche par type/nom
136
+ */
137
+ findEntity(query) {
138
+ this.loadGraph();
139
+ const results = [];
140
+ for (const entity of this.entities.values()) {
141
+ let matches = true;
142
+ if (query.type && entity.type !== query.type) {
143
+ matches = false;
144
+ }
145
+ if (query.name && !entity.name.toLowerCase().includes(query.name.toLowerCase())) {
146
+ matches = false;
147
+ }
148
+ if (matches) {
149
+ results.push(entity);
150
+ }
151
+ }
152
+ return results;
153
+ }
154
+ /**
155
+ * Toutes les relations d'une entité
156
+ */
157
+ findRelations(entityId) {
158
+ this.loadGraph();
159
+ const results = [];
160
+ for (const relation of this.relations.values()) {
161
+ if (relation.from === entityId || relation.to === entityId) {
162
+ results.push(relation);
163
+ }
164
+ }
165
+ return results;
166
+ }
167
+ /**
168
+ * Retourne le graphe complet
169
+ */
170
+ getGraph() {
171
+ this.loadGraph();
172
+ return {
173
+ entities: Array.from(this.entities.values()),
174
+ relations: Array.from(this.relations.values())
175
+ };
176
+ }
177
+ /**
178
+ * Supprime entité + ses relations
179
+ */
180
+ removeEntity(id) {
181
+ this.loadGraph();
182
+ if (!this.entities.has(id)) {
183
+ throw new Error(`Entity not found: ${id}`);
184
+ }
185
+ // Marque comme supprimé dans le fichier
186
+ const deleteEntry = {
187
+ kind: 'delete',
188
+ targetId: id,
189
+ deletedAt: new Date().toISOString()
190
+ };
191
+ this.appendToFile(deleteEntry);
192
+ // Supprime de la mémoire
193
+ this.entities.delete(id);
194
+ // Supprime toutes les relations liées
195
+ for (const [relationId, relation] of this.relations) {
196
+ if (relation.from === id || relation.to === id) {
197
+ this.relations.delete(relationId);
198
+ }
199
+ }
200
+ }
201
+ /**
202
+ * Trouve le chemin entre deux entités (BFS)
203
+ */
204
+ queryPath(fromId, toId, maxDepth = 5) {
205
+ this.loadGraph();
206
+ if (!this.entities.has(fromId) || !this.entities.has(toId)) {
207
+ return null;
208
+ }
209
+ if (fromId === toId) {
210
+ return [{ entity: this.entities.get(fromId) }];
211
+ }
212
+ // BFS pour trouver le chemin le plus court
213
+ const queue = [
214
+ { entityId: fromId, path: [{ entity: this.entities.get(fromId) }] }
215
+ ];
216
+ const visited = new Set([fromId]);
217
+ while (queue.length > 0) {
218
+ const { entityId, path } = queue.shift();
219
+ if (path.length > maxDepth) {
220
+ continue;
221
+ }
222
+ // Trouve toutes les relations sortantes
223
+ for (const relation of this.relations.values()) {
224
+ if (relation.from === entityId) {
225
+ const targetId = relation.to;
226
+ if (targetId === toId) {
227
+ // Trouvé !
228
+ return [...path, { entity: this.entities.get(targetId), relation }];
229
+ }
230
+ if (!visited.has(targetId)) {
231
+ visited.add(targetId);
232
+ queue.push({
233
+ entityId: targetId,
234
+ path: [...path, { entity: this.entities.get(targetId), relation }]
235
+ });
236
+ }
237
+ }
238
+ // Relations bidirectionnelles (from <-> to)
239
+ if (relation.to === entityId) {
240
+ const targetId = relation.from;
241
+ if (targetId === toId) {
242
+ // Trouvé !
243
+ return [...path, { entity: this.entities.get(targetId), relation }];
244
+ }
245
+ if (!visited.has(targetId)) {
246
+ visited.add(targetId);
247
+ queue.push({
248
+ entityId: targetId,
249
+ path: [...path, { entity: this.entities.get(targetId), relation }]
250
+ });
251
+ }
252
+ }
253
+ }
254
+ }
255
+ return null; // Aucun chemin trouvé
256
+ }
257
+ /**
258
+ * Exporte tout le graphe en JSON lisible
259
+ */
260
+ export() {
261
+ return this.getGraph();
262
+ }
263
+ /**
264
+ * Statistiques : nombre d'entités par type, nombre de relations par type
265
+ */
266
+ stats() {
267
+ this.loadGraph();
268
+ const entitiesByType = {};
269
+ const relationsByType = {};
270
+ for (const entity of this.entities.values()) {
271
+ entitiesByType[entity.type] = (entitiesByType[entity.type] || 0) + 1;
272
+ }
273
+ for (const relation of this.relations.values()) {
274
+ relationsByType[relation.type] = (relationsByType[relation.type] || 0) + 1;
275
+ }
276
+ return { entitiesByType, relationsByType };
277
+ }
278
+ }
279
+ exports.OntologyManager = OntologyManager;
280
+ //# sourceMappingURL=ontology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.js","sourceRoot":"","sources":["../src/ontology.ts"],"names":[],"mappings":";;;AAAA,2BAAwF;AACxF,+BAAqC;AACrC,mCAAqC;AAWrC,MAAa,eAAe;IAClB,MAAM,CAAe;IACrB,SAAS,CAAS;IAClB,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;IAClD,SAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;IACrD,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,OAAO,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEnD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,QAAQ;wBACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;4BAC1B,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;4BAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;yBAC3B,CAAC,CAAC;wBACH,MAAM;oBAER,KAAK,UAAU;wBACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;4BAC3B,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;yBAC3B,CAAC,CAAC;wBACH,MAAM;oBAER,KAAK,QAAQ;wBACX,mCAAmC;wBACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACtC,2DAA2D;wBAC3D,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gCACvE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;4BACpC,CAAC;wBACH,CAAC;wBACD,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,YAAY,CAAC,KAAyB;QAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC1C,IAAA,mBAAc,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAA8D;QACtE,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,SAAS,GAAmB;YAChC,GAAG,MAAM;YACT,EAAE;YACF,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAwB;YACjC,IAAI,EAAE,QAAQ;YACd,GAAG,SAAS;SACb,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAoD;QAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,yDAAyD;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,WAAW,GAAqB;YACpC,GAAG,QAAQ;YACX,EAAE;YACF,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAEpC,MAAM,KAAK,GAA0B;YACnC,IAAI,EAAE,UAAU;YAChB,GAAG,WAAW;SACf,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAuC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAChF,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAgB;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5C,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,wCAAwC;QACxC,MAAM,WAAW,GAAwB;YACvC,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE/B,yBAAyB;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEzB,sCAAsC;QACtC,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc,EAAE,IAAY,EAAE,QAAQ,GAAG,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,GAAsG;YAC/G,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,CAAC,EAAE;SACrE,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAE1C,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,wCAAwC;YACxC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;oBAE7B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBACtB,WAAW;wBACX,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,CAAC;oBAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACtB,KAAK,CAAC,IAAI,CAAC;4BACT,QAAQ,EAAE,QAAQ;4BAClB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,CAAC;yBACpE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,4CAA4C;gBAC5C,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAE/B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBACtB,WAAW;wBACX,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,CAAC;oBAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACtB,KAAK,CAAC,IAAI,CAAC;4BACT,QAAQ,EAAE,QAAQ;4BAClB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,CAAC;yBACpE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,sBAAsB;IACrC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,MAAM,eAAe,GAA2B,EAAE,CAAC;QAEnD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;IAC7C,CAAC;CACF;AA9UD,0CA8UC"}
package/dist/qmd.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { MemoryConfig, SearchResult } from './types.js';
2
+ export declare class QMDManager {
3
+ private config;
4
+ private qmdCommand;
5
+ constructor(config: MemoryConfig);
6
+ /**
7
+ * Retourne true si QMD est installé et fonctionnel
8
+ */
9
+ isAvailable(): boolean;
10
+ /**
11
+ * Lance `qmd query` et parse les résultats
12
+ */
13
+ search(query: string, maxResults?: number): Promise<SearchResult[]>;
14
+ /**
15
+ * Lance `qmd update` pour reindexer
16
+ */
17
+ update(): Promise<boolean>;
18
+ /**
19
+ * Lance `qmd embed` pour recalculer les embeddings
20
+ */
21
+ embed(): Promise<boolean>;
22
+ /**
23
+ * Liste les collections QMD
24
+ */
25
+ collections(): Promise<string[]>;
26
+ /**
27
+ * Retourne le statut (nb fichiers, nb chunks, dernière mise à jour)
28
+ */
29
+ status(): Promise<{
30
+ files: number;
31
+ chunks: number;
32
+ lastUpdate: string | null;
33
+ } | null>;
34
+ }
35
+ //# sourceMappingURL=qmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qmd.d.ts","sourceRoot":"","sources":["../src/qmd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,YAAY;IAKhC;;OAEG;IACH,WAAW,IAAI,OAAO;IAiBtB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsCrE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BtC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CA4B7F"}
package/dist/qmd.js ADDED
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QMDManager = void 0;
4
+ const child_process_1 = require("child_process");
5
+ class QMDManager {
6
+ config;
7
+ qmdCommand;
8
+ constructor(config) {
9
+ this.config = config;
10
+ this.qmdCommand = config.qmdCommand || 'qmd';
11
+ }
12
+ /**
13
+ * Retourne true si QMD est installé et fonctionnel
14
+ */
15
+ isAvailable() {
16
+ if (!this.config.qmdEnabled) {
17
+ return false;
18
+ }
19
+ try {
20
+ // Teste si le binaire QMD est accessible
21
+ (0, child_process_1.execSync)(`${this.qmdCommand} --version`, {
22
+ stdio: 'ignore',
23
+ timeout: 5000
24
+ });
25
+ return true;
26
+ }
27
+ catch (error) {
28
+ return false;
29
+ }
30
+ }
31
+ /**
32
+ * Lance `qmd query` et parse les résultats
33
+ */
34
+ async search(query, maxResults = 10) {
35
+ if (!this.isAvailable()) {
36
+ return [];
37
+ }
38
+ try {
39
+ const output = (0, child_process_1.execSync)(`${this.qmdCommand} query "${query.replace(/"/g, '\\"')}" --limit ${maxResults} --format json`, {
40
+ encoding: 'utf8',
41
+ timeout: 30000,
42
+ cwd: this.config.memoryDir
43
+ });
44
+ if (!output.trim()) {
45
+ return [];
46
+ }
47
+ const result = JSON.parse(output);
48
+ // Le format attendu est { results: [{file, line, content, score}] }
49
+ if (result.results && Array.isArray(result.results)) {
50
+ return result.results.map((item) => ({
51
+ file: item.file || '',
52
+ line: item.line || 0,
53
+ content: item.content || '',
54
+ score: item.score || 0
55
+ }));
56
+ }
57
+ return [];
58
+ }
59
+ catch (error) {
60
+ console.error('QMD search error:', error);
61
+ return [];
62
+ }
63
+ }
64
+ /**
65
+ * Lance `qmd update` pour reindexer
66
+ */
67
+ async update() {
68
+ if (!this.isAvailable()) {
69
+ return false;
70
+ }
71
+ try {
72
+ (0, child_process_1.execSync)(`${this.qmdCommand} update`, {
73
+ stdio: 'ignore',
74
+ timeout: 60000,
75
+ cwd: this.config.memoryDir
76
+ });
77
+ return true;
78
+ }
79
+ catch (error) {
80
+ console.error('QMD update error:', error);
81
+ return false;
82
+ }
83
+ }
84
+ /**
85
+ * Lance `qmd embed` pour recalculer les embeddings
86
+ */
87
+ async embed() {
88
+ if (!this.isAvailable()) {
89
+ return false;
90
+ }
91
+ try {
92
+ (0, child_process_1.execSync)(`${this.qmdCommand} embed`, {
93
+ stdio: 'ignore',
94
+ timeout: 300000, // 5 minutes pour les embeddings
95
+ cwd: this.config.memoryDir
96
+ });
97
+ return true;
98
+ }
99
+ catch (error) {
100
+ console.error('QMD embed error:', error);
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Liste les collections QMD
106
+ */
107
+ async collections() {
108
+ if (!this.isAvailable()) {
109
+ return [];
110
+ }
111
+ try {
112
+ const output = (0, child_process_1.execSync)(`${this.qmdCommand} collections --format json`, {
113
+ encoding: 'utf8',
114
+ timeout: 10000,
115
+ cwd: this.config.memoryDir
116
+ });
117
+ if (!output.trim()) {
118
+ return [];
119
+ }
120
+ const result = JSON.parse(output);
121
+ // Retourne la liste des noms de collections
122
+ if (result.collections && Array.isArray(result.collections)) {
123
+ return result.collections.map((col) => col.name || col);
124
+ }
125
+ return [];
126
+ }
127
+ catch (error) {
128
+ console.error('QMD collections error:', error);
129
+ return [];
130
+ }
131
+ }
132
+ /**
133
+ * Retourne le statut (nb fichiers, nb chunks, dernière mise à jour)
134
+ */
135
+ async status() {
136
+ if (!this.isAvailable()) {
137
+ return null;
138
+ }
139
+ try {
140
+ const output = (0, child_process_1.execSync)(`${this.qmdCommand} status --format json`, {
141
+ encoding: 'utf8',
142
+ timeout: 10000,
143
+ cwd: this.config.memoryDir
144
+ });
145
+ if (!output.trim()) {
146
+ return { files: 0, chunks: 0, lastUpdate: null };
147
+ }
148
+ const result = JSON.parse(output);
149
+ return {
150
+ files: result.files || 0,
151
+ chunks: result.chunks || 0,
152
+ lastUpdate: result.lastUpdate || null
153
+ };
154
+ }
155
+ catch (error) {
156
+ console.error('QMD status error:', error);
157
+ return { files: 0, chunks: 0, lastUpdate: null };
158
+ }
159
+ }
160
+ }
161
+ exports.QMDManager = QMDManager;
162
+ //# sourceMappingURL=qmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qmd.js","sourceRoot":"","sources":["../src/qmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ export interface MemoryConfig {
2
+ memoryDir: string;
3
+ projectMemoryDir: string;
4
+ ontologyPath: string;
5
+ qmdEnabled: boolean;
6
+ qmdCommand?: string;
7
+ }
8
+ export interface SearchResult {
9
+ file: string;
10
+ line: number;
11
+ content: string;
12
+ score: number;
13
+ }
14
+ export interface OntologyEntity {
15
+ id: string;
16
+ type: 'Person' | 'Project' | 'Device' | 'Account' | 'Document' | 'Service' | 'Concept';
17
+ name: string;
18
+ properties: Record<string, string>;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ export interface OntologyRelation {
23
+ id: string;
24
+ from: string;
25
+ to: string;
26
+ type: string;
27
+ properties: Record<string, string>;
28
+ createdAt: string;
29
+ }
30
+ export interface Note {
31
+ file: string;
32
+ date: string;
33
+ content: string;
34
+ }
35
+ export interface UnifiedSearchResult {
36
+ source: 'notes' | 'ontology' | 'qmd';
37
+ type?: 'entity' | 'relation' | 'note' | 'file';
38
+ score: number;
39
+ data: any;
40
+ }
41
+ export interface MemoryStatus {
42
+ notes: {
43
+ count: number;
44
+ totalSize: number;
45
+ lastModified: string | null;
46
+ };
47
+ ontology: {
48
+ entities: number;
49
+ relations: number;
50
+ entitiesByType: Record<string, number>;
51
+ relationsByType: Record<string, number>;
52
+ };
53
+ qmd: {
54
+ available: boolean;
55
+ status?: {
56
+ files: number;
57
+ chunks: number;
58
+ lastUpdate: string | null;
59
+ };
60
+ };
61
+ }
62
+ export interface OntologyEntityEntry {
63
+ kind: 'entity';
64
+ id: string;
65
+ type: 'Person' | 'Project' | 'Device' | 'Account' | 'Document' | 'Service' | 'Concept';
66
+ name: string;
67
+ properties: Record<string, string>;
68
+ createdAt: string;
69
+ updatedAt: string;
70
+ }
71
+ export interface OntologyRelationEntry {
72
+ kind: 'relation';
73
+ id: string;
74
+ from: string;
75
+ to: string;
76
+ type: string;
77
+ properties: Record<string, string>;
78
+ createdAt: string;
79
+ }
80
+ export interface OntologyDeleteEntry {
81
+ kind: 'delete';
82
+ targetId: string;
83
+ deletedAt: string;
84
+ }
85
+ export type OntologyJSONLEntry = OntologyEntityEntry | OntologyRelationEntry | OntologyDeleteEntry;
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "sigma-memory",
3
+ "version": "0.1.0",
4
+ "description": "Persistent memory for Phi Code — QMD vector search + Ontology graph + Markdown notes",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "clean": "rm -rf dist"
10
+ },
11
+ "dependencies": {},
12
+ "devDependencies": {
13
+ "typescript": "^5.4.0",
14
+ "@types/node": "^20.0.0"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/uglyswap/phi-code.git"
19
+ },
20
+ "homepage": "https://github.com/uglyswap/phi-code",
21
+ "keywords": ["memory", "vector-search", "ontology", "phi-code"],
22
+ "license": "MIT",
23
+ "files": ["dist", "src", "README.md"]
24
+ }