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.
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/notes.d.ts +40 -0
- package/dist/notes.d.ts.map +1 -0
- package/dist/notes.js +147 -0
- package/dist/notes.js.map +1 -0
- package/dist/ontology.d.ts +65 -0
- package/dist/ontology.d.ts.map +1 -0
- package/dist/ontology.js +280 -0
- package/dist/ontology.js.map +1 -0
- package/dist/qmd.d.ts +35 -0
- package/dist/qmd.d.ts.map +1 -0
- package/dist/qmd.js +162 -0
- package/dist/qmd.js.map +1 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +24 -0
- package/src/index.ts +178 -0
- package/src/notes.ts +163 -0
- package/src/ontology.ts +348 -0
- package/src/qmd.ts +180 -0
- package/src/types.ts +96 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { NotesManager } from './notes.js';
|
|
2
|
+
import { OntologyManager } from './ontology.js';
|
|
3
|
+
import { QMDManager } from './qmd.js';
|
|
4
|
+
import type { MemoryConfig, UnifiedSearchResult, MemoryStatus } from './types.js';
|
|
5
|
+
export declare class SigmaMemory {
|
|
6
|
+
readonly notes: NotesManager;
|
|
7
|
+
readonly ontology: OntologyManager;
|
|
8
|
+
readonly qmd: QMDManager;
|
|
9
|
+
private readonly config;
|
|
10
|
+
constructor(config?: Partial<MemoryConfig>);
|
|
11
|
+
/**
|
|
12
|
+
* Recherche unifiée : cherche dans notes + ontology + QMD, combine les résultats
|
|
13
|
+
*/
|
|
14
|
+
search(query: string): Promise<UnifiedSearchResult[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Initialise tous les dossiers nécessaires
|
|
17
|
+
*/
|
|
18
|
+
init(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Status de tous les sous-systèmes
|
|
21
|
+
*/
|
|
22
|
+
status(): Promise<MemoryStatus>;
|
|
23
|
+
/**
|
|
24
|
+
* Configuration actuelle
|
|
25
|
+
*/
|
|
26
|
+
getConfig(): MemoryConfig;
|
|
27
|
+
}
|
|
28
|
+
export { NotesManager } from './notes.js';
|
|
29
|
+
export { OntologyManager } from './ontology.js';
|
|
30
|
+
export { QMDManager } from './qmd.js';
|
|
31
|
+
export * from './types.js';
|
|
32
|
+
export default SigmaMemory;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElF,qBAAa,WAAW;IACtB,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,SAAgB,GAAG,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAkB1C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiE3D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAoCrC;;OAEG;IACH,SAAS,IAAI,YAAY;CAG1B;AAGD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,cAAc,YAAY,CAAC;AAG3B,eAAe,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.QMDManager = exports.OntologyManager = exports.NotesManager = exports.SigmaMemory = void 0;
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const os_1 = require("os");
|
|
20
|
+
const fs_1 = require("fs");
|
|
21
|
+
const notes_js_1 = require("./notes.js");
|
|
22
|
+
const ontology_js_1 = require("./ontology.js");
|
|
23
|
+
const qmd_js_1 = require("./qmd.js");
|
|
24
|
+
class SigmaMemory {
|
|
25
|
+
notes;
|
|
26
|
+
ontology;
|
|
27
|
+
qmd;
|
|
28
|
+
config;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
// Configuration par défaut
|
|
31
|
+
const defaultConfig = {
|
|
32
|
+
memoryDir: (0, path_1.join)((0, os_1.homedir)(), '.phi', 'memory'),
|
|
33
|
+
projectMemoryDir: (0, path_1.join)(process.cwd(), '.phi', 'memory'),
|
|
34
|
+
ontologyPath: (0, path_1.join)((0, os_1.homedir)(), '.phi', 'memory', 'ontology', 'graph.jsonl'),
|
|
35
|
+
qmdEnabled: true,
|
|
36
|
+
qmdCommand: 'qmd'
|
|
37
|
+
};
|
|
38
|
+
this.config = { ...defaultConfig, ...config };
|
|
39
|
+
// Initialise les managers
|
|
40
|
+
this.notes = new notes_js_1.NotesManager(this.config);
|
|
41
|
+
this.ontology = new ontology_js_1.OntologyManager(this.config);
|
|
42
|
+
this.qmd = new qmd_js_1.QMDManager(this.config);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Recherche unifiée : cherche dans notes + ontology + QMD, combine les résultats
|
|
46
|
+
*/
|
|
47
|
+
async search(query) {
|
|
48
|
+
const results = [];
|
|
49
|
+
// Recherche dans les notes
|
|
50
|
+
try {
|
|
51
|
+
const notesResults = this.notes.search(query);
|
|
52
|
+
for (const result of notesResults) {
|
|
53
|
+
results.push({
|
|
54
|
+
source: 'notes',
|
|
55
|
+
type: 'note',
|
|
56
|
+
score: 0.8, // Score par défaut pour les notes
|
|
57
|
+
data: result
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.error('Notes search error:', error);
|
|
63
|
+
}
|
|
64
|
+
// Recherche dans l'ontologie
|
|
65
|
+
try {
|
|
66
|
+
const entityResults = this.ontology.findEntity({ name: query });
|
|
67
|
+
for (const entity of entityResults) {
|
|
68
|
+
results.push({
|
|
69
|
+
source: 'ontology',
|
|
70
|
+
type: 'entity',
|
|
71
|
+
score: 0.9, // Score élevé pour les entités
|
|
72
|
+
data: entity
|
|
73
|
+
});
|
|
74
|
+
// Inclut aussi les relations de cette entité
|
|
75
|
+
const relations = this.ontology.findRelations(entity.id);
|
|
76
|
+
for (const relation of relations) {
|
|
77
|
+
results.push({
|
|
78
|
+
source: 'ontology',
|
|
79
|
+
type: 'relation',
|
|
80
|
+
score: 0.7,
|
|
81
|
+
data: relation
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error('Ontology search error:', error);
|
|
88
|
+
}
|
|
89
|
+
// Recherche QMD (vectorielle)
|
|
90
|
+
try {
|
|
91
|
+
const qmdResults = await this.qmd.search(query, 5);
|
|
92
|
+
for (const result of qmdResults) {
|
|
93
|
+
results.push({
|
|
94
|
+
source: 'qmd',
|
|
95
|
+
type: 'file',
|
|
96
|
+
score: result.score,
|
|
97
|
+
data: result
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error('QMD search error:', error);
|
|
103
|
+
}
|
|
104
|
+
// Trie par score décroissant
|
|
105
|
+
results.sort((a, b) => b.score - a.score);
|
|
106
|
+
return results;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Initialise tous les dossiers nécessaires
|
|
110
|
+
*/
|
|
111
|
+
async init() {
|
|
112
|
+
// Crée les dossiers de base
|
|
113
|
+
if (!(0, fs_1.existsSync)(this.config.memoryDir)) {
|
|
114
|
+
(0, fs_1.mkdirSync)(this.config.memoryDir, { recursive: true });
|
|
115
|
+
}
|
|
116
|
+
if (!(0, fs_1.existsSync)(this.config.projectMemoryDir)) {
|
|
117
|
+
(0, fs_1.mkdirSync)(this.config.projectMemoryDir, { recursive: true });
|
|
118
|
+
}
|
|
119
|
+
// Initialise QMD si activé
|
|
120
|
+
if (this.config.qmdEnabled && this.qmd.isAvailable()) {
|
|
121
|
+
try {
|
|
122
|
+
await this.qmd.update();
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
console.error('QMD initialization error:', error);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Status de tous les sous-systèmes
|
|
131
|
+
*/
|
|
132
|
+
async status() {
|
|
133
|
+
// Status des notes
|
|
134
|
+
const notesList = this.notes.list();
|
|
135
|
+
const notesStatus = {
|
|
136
|
+
count: notesList.length,
|
|
137
|
+
totalSize: notesList.reduce((sum, note) => sum + note.size, 0),
|
|
138
|
+
lastModified: notesList.length > 0 ? notesList[0].date : null
|
|
139
|
+
};
|
|
140
|
+
// Status de l'ontologie
|
|
141
|
+
const ontologyStats = this.ontology.stats();
|
|
142
|
+
const ontologyGraph = this.ontology.getGraph();
|
|
143
|
+
const ontologyStatus = {
|
|
144
|
+
entities: ontologyGraph.entities.length,
|
|
145
|
+
relations: ontologyGraph.relations.length,
|
|
146
|
+
entitiesByType: ontologyStats.entitiesByType,
|
|
147
|
+
relationsByType: ontologyStats.relationsByType
|
|
148
|
+
};
|
|
149
|
+
// Status QMD
|
|
150
|
+
let qmdStatus = { available: false };
|
|
151
|
+
if (this.config.qmdEnabled && this.qmd.isAvailable()) {
|
|
152
|
+
const status = await this.qmd.status();
|
|
153
|
+
qmdStatus = {
|
|
154
|
+
available: true,
|
|
155
|
+
status: status || { files: 0, chunks: 0, lastUpdate: null }
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
notes: notesStatus,
|
|
160
|
+
ontology: ontologyStatus,
|
|
161
|
+
qmd: qmdStatus
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Configuration actuelle
|
|
166
|
+
*/
|
|
167
|
+
getConfig() {
|
|
168
|
+
return { ...this.config };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.SigmaMemory = SigmaMemory;
|
|
172
|
+
// Exports pour une utilisation facile
|
|
173
|
+
var notes_js_2 = require("./notes.js");
|
|
174
|
+
Object.defineProperty(exports, "NotesManager", { enumerable: true, get: function () { return notes_js_2.NotesManager; } });
|
|
175
|
+
var ontology_js_2 = require("./ontology.js");
|
|
176
|
+
Object.defineProperty(exports, "OntologyManager", { enumerable: true, get: function () { return ontology_js_2.OntologyManager; } });
|
|
177
|
+
var qmd_js_2 = require("./qmd.js");
|
|
178
|
+
Object.defineProperty(exports, "QMDManager", { enumerable: true, get: function () { return qmd_js_2.QMDManager; } });
|
|
179
|
+
__exportStar(require("./types.js"), exports);
|
|
180
|
+
// Export par défaut
|
|
181
|
+
exports.default = SigmaMemory;
|
|
182
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAC5B,2BAA6B;AAC7B,2BAA2C;AAC3C,yCAA0C;AAC1C,+CAAgD;AAChD,qCAAsC;AAGtC,MAAa,WAAW;IACN,KAAK,CAAe;IACpB,QAAQ,CAAkB;IAC1B,GAAG,CAAa;IACf,MAAM,CAAe;IAEtC,YAAY,MAA8B;QACxC,2BAA2B;QAC3B,MAAM,aAAa,GAAiB;YAClC,SAAS,EAAE,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;YAC5C,gBAAgB,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;YACvD,YAAY,EAAE,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;YAC1E,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;SAClB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAE9C,0BAA0B;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,GAAG,EAAE,kCAAkC;oBAC9C,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,GAAG,EAAE,+BAA+B;oBAC3C,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBAEH,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC;wBACX,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,GAAG;wBACV,IAAI,EAAE,QAAQ;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,6BAA6B;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,4BAA4B;QAC5B,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,IAAA,cAAS,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,IAAA,cAAS,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,mBAAmB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG;YAClB,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,YAAY,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAC9D,CAAC;QAEF,wBAAwB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG;YACrB,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM;YACvC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;YACzC,cAAc,EAAE,aAAa,CAAC,cAAc;YAC5C,eAAe,EAAE,aAAa,CAAC,eAAe;SAC/C,CAAC;QAEF,aAAa;QACb,IAAI,SAAS,GAAwB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,SAAS,GAAG;gBACV,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;aAC5D,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,cAAc;YACxB,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAhKD,kCAgKC;AAED,sCAAsC;AACtC,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,6CAAgD;AAAvC,8GAAA,eAAe,OAAA;AACxB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,6CAA2B;AAE3B,oBAAoB;AACpB,kBAAe,WAAW,CAAC"}
|
package/dist/notes.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { MemoryConfig, Note } from './types.js';
|
|
2
|
+
export declare class NotesManager {
|
|
3
|
+
private config;
|
|
4
|
+
private notesDir;
|
|
5
|
+
constructor(config: MemoryConfig);
|
|
6
|
+
private ensureDirectories;
|
|
7
|
+
/**
|
|
8
|
+
* Écrit dans un fichier .md (date du jour si pas de nom)
|
|
9
|
+
*/
|
|
10
|
+
write(content: string, filename?: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Lit un fichier
|
|
13
|
+
*/
|
|
14
|
+
read(filename: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Liste tous les fichiers .md avec leur taille et date
|
|
17
|
+
*/
|
|
18
|
+
list(): Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
size: number;
|
|
21
|
+
date: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Recherche full-text (grep-like) dans tous les .md
|
|
25
|
+
*/
|
|
26
|
+
search(query: string): Array<{
|
|
27
|
+
file: string;
|
|
28
|
+
line: number;
|
|
29
|
+
content: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Retourne les notes des N derniers jours
|
|
33
|
+
*/
|
|
34
|
+
getRecent(days: number): Note[];
|
|
35
|
+
/**
|
|
36
|
+
* Ajoute à un fichier existant
|
|
37
|
+
*/
|
|
38
|
+
append(content: string, filename?: string): void;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=notes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../src/notes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY;IAMhC,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/C;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9B;;OAEG;IACH,IAAI,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB3D;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoD7E;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;IAmB/B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAcjD"}
|
package/dist/notes.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotesManager = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
class NotesManager {
|
|
8
|
+
config;
|
|
9
|
+
notesDir;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.notesDir = (0, path_1.join)(config.memoryDir, 'notes');
|
|
13
|
+
this.ensureDirectories();
|
|
14
|
+
}
|
|
15
|
+
ensureDirectories() {
|
|
16
|
+
if (!(0, fs_1.existsSync)(this.config.memoryDir)) {
|
|
17
|
+
(0, fs_1.mkdirSync)(this.config.memoryDir, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
if (!(0, fs_1.existsSync)(this.notesDir)) {
|
|
20
|
+
(0, fs_1.mkdirSync)(this.notesDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Écrit dans un fichier .md (date du jour si pas de nom)
|
|
25
|
+
*/
|
|
26
|
+
write(content, filename) {
|
|
27
|
+
const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
28
|
+
const file = filename || `${today}.md`;
|
|
29
|
+
const filePath = (0, path_1.join)(this.notesDir, file);
|
|
30
|
+
(0, fs_1.writeFileSync)(filePath, content, 'utf8');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Lit un fichier
|
|
34
|
+
*/
|
|
35
|
+
read(filename) {
|
|
36
|
+
const filePath = (0, path_1.join)(this.notesDir, filename);
|
|
37
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
38
|
+
throw new Error(`File not found: ${filename}`);
|
|
39
|
+
}
|
|
40
|
+
return (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Liste tous les fichiers .md avec leur taille et date
|
|
44
|
+
*/
|
|
45
|
+
list() {
|
|
46
|
+
if (!(0, fs_1.existsSync)(this.notesDir)) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
return (0, fs_1.readdirSync)(this.notesDir)
|
|
50
|
+
.filter(file => file.endsWith('.md'))
|
|
51
|
+
.map(file => {
|
|
52
|
+
const filePath = (0, path_1.join)(this.notesDir, file);
|
|
53
|
+
const stats = (0, fs_1.statSync)(filePath);
|
|
54
|
+
return {
|
|
55
|
+
name: file,
|
|
56
|
+
size: stats.size,
|
|
57
|
+
date: stats.mtime.toISOString()
|
|
58
|
+
};
|
|
59
|
+
})
|
|
60
|
+
.sort((a, b) => b.date.localeCompare(a.date));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Recherche full-text (grep-like) dans tous les .md
|
|
64
|
+
*/
|
|
65
|
+
search(query) {
|
|
66
|
+
if (!(0, fs_1.existsSync)(this.notesDir)) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
const results = [];
|
|
70
|
+
try {
|
|
71
|
+
// Utilise grep pour une recherche efficace
|
|
72
|
+
const grepResult = (0, child_process_1.execSync)(`grep -n "${query.replace(/"/g, '\\"')}" "${this.notesDir}"/*.md 2>/dev/null || true`, { encoding: 'utf8' });
|
|
73
|
+
if (grepResult.trim()) {
|
|
74
|
+
const lines = grepResult.trim().split('\n');
|
|
75
|
+
for (const line of lines) {
|
|
76
|
+
const match = line.match(/^(.+?):(\d+):(.+)$/);
|
|
77
|
+
if (match) {
|
|
78
|
+
const [, fullPath, lineNumber, content] = match;
|
|
79
|
+
const filename = fullPath.replace(this.notesDir + '/', '');
|
|
80
|
+
results.push({
|
|
81
|
+
file: filename,
|
|
82
|
+
line: parseInt(lineNumber),
|
|
83
|
+
content: content.trim()
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
// Fallback à une recherche en JavaScript si grep échoue
|
|
91
|
+
const files = (0, fs_1.readdirSync)(this.notesDir).filter(f => f.endsWith('.md'));
|
|
92
|
+
for (const file of files) {
|
|
93
|
+
const filePath = (0, path_1.join)(this.notesDir, file);
|
|
94
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
95
|
+
const lines = content.split('\n');
|
|
96
|
+
lines.forEach((line, index) => {
|
|
97
|
+
if (line.toLowerCase().includes(query.toLowerCase())) {
|
|
98
|
+
results.push({
|
|
99
|
+
file,
|
|
100
|
+
line: index + 1,
|
|
101
|
+
content: line.trim()
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Retourne les notes des N derniers jours
|
|
111
|
+
*/
|
|
112
|
+
getRecent(days) {
|
|
113
|
+
const cutoffDate = new Date();
|
|
114
|
+
cutoffDate.setDate(cutoffDate.getDate() - days);
|
|
115
|
+
const files = this.list().filter(file => {
|
|
116
|
+
const fileDate = new Date(file.date);
|
|
117
|
+
return fileDate >= cutoffDate;
|
|
118
|
+
});
|
|
119
|
+
return files.map(file => {
|
|
120
|
+
const content = this.read(file.name);
|
|
121
|
+
return {
|
|
122
|
+
file: file.name,
|
|
123
|
+
date: file.date,
|
|
124
|
+
content
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Ajoute à un fichier existant
|
|
130
|
+
*/
|
|
131
|
+
append(content, filename) {
|
|
132
|
+
const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
133
|
+
const file = filename || `${today}.md`;
|
|
134
|
+
const filePath = (0, path_1.join)(this.notesDir, file);
|
|
135
|
+
// Ajoute une ligne vide si le fichier existe déjà et ne se termine pas par une ligne vide
|
|
136
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
137
|
+
const existingContent = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
138
|
+
const separator = existingContent.endsWith('\n') ? '' : '\n';
|
|
139
|
+
(0, fs_1.appendFileSync)(filePath, separator + content, 'utf8');
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
(0, fs_1.writeFileSync)(filePath, content, 'utf8');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.NotesManager = NotesManager;
|
|
147
|
+
//# sourceMappingURL=notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../src/notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { MemoryConfig, OntologyEntity, OntologyRelation } from './types.js';
|
|
2
|
+
export declare class OntologyManager {
|
|
3
|
+
private config;
|
|
4
|
+
private graphPath;
|
|
5
|
+
private entities;
|
|
6
|
+
private relations;
|
|
7
|
+
private loaded;
|
|
8
|
+
constructor(config: MemoryConfig);
|
|
9
|
+
private ensureDirectories;
|
|
10
|
+
private generateId;
|
|
11
|
+
private loadGraph;
|
|
12
|
+
private appendToFile;
|
|
13
|
+
/**
|
|
14
|
+
* Ajoute une entité
|
|
15
|
+
*/
|
|
16
|
+
addEntity(entity: Omit<OntologyEntity, 'id' | 'createdAt' | 'updatedAt'>): string;
|
|
17
|
+
/**
|
|
18
|
+
* Ajoute une relation
|
|
19
|
+
*/
|
|
20
|
+
addRelation(relation: Omit<OntologyRelation, 'id' | 'createdAt'>): string;
|
|
21
|
+
/**
|
|
22
|
+
* Recherche par type/nom
|
|
23
|
+
*/
|
|
24
|
+
findEntity(query: {
|
|
25
|
+
type?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
}): OntologyEntity[];
|
|
28
|
+
/**
|
|
29
|
+
* Toutes les relations d'une entité
|
|
30
|
+
*/
|
|
31
|
+
findRelations(entityId: string): OntologyRelation[];
|
|
32
|
+
/**
|
|
33
|
+
* Retourne le graphe complet
|
|
34
|
+
*/
|
|
35
|
+
getGraph(): {
|
|
36
|
+
entities: OntologyEntity[];
|
|
37
|
+
relations: OntologyRelation[];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Supprime entité + ses relations
|
|
41
|
+
*/
|
|
42
|
+
removeEntity(id: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Trouve le chemin entre deux entités (BFS)
|
|
45
|
+
*/
|
|
46
|
+
queryPath(fromId: string, toId: string, maxDepth?: number): Array<{
|
|
47
|
+
entity: OntologyEntity;
|
|
48
|
+
relation?: OntologyRelation;
|
|
49
|
+
}> | null;
|
|
50
|
+
/**
|
|
51
|
+
* Exporte tout le graphe en JSON lisible
|
|
52
|
+
*/
|
|
53
|
+
export(): {
|
|
54
|
+
entities: OntologyEntity[];
|
|
55
|
+
relations: OntologyRelation[];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Statistiques : nombre d'entités par type, nombre de relations par type
|
|
59
|
+
*/
|
|
60
|
+
stats(): {
|
|
61
|
+
entitiesByType: Record<string, number>;
|
|
62
|
+
relationsByType: Record<string, number>;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ontology.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../src/ontology.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY;IAMhC,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IA6DjB,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,MAAM;IAwBjF;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,MAAM;IA+BzE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,EAAE;IAwBrE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAcnD;;OAEG;IACH,QAAQ,IAAI;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAE;IASzE;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA2B9B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,KAAK,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC,GAAG,IAAI;IAmE5H;;OAEG;IACH,MAAM,IAAI;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAE;IAIvE;;OAEG;IACH,KAAK,IAAI;QAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAgB7F"}
|