agentic-api 2.0.31 → 2.0.491

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.
Files changed (102) hide show
  1. package/dist/src/agents/agents.example.js +21 -22
  2. package/dist/src/agents/authentication.js +1 -2
  3. package/dist/src/agents/prompts.d.ts +5 -4
  4. package/dist/src/agents/prompts.js +44 -87
  5. package/dist/src/agents/reducer.core.d.ts +24 -2
  6. package/dist/src/agents/reducer.core.js +125 -35
  7. package/dist/src/agents/reducer.loaders.d.ts +55 -1
  8. package/dist/src/agents/reducer.loaders.js +114 -1
  9. package/dist/src/agents/reducer.types.d.ts +45 -2
  10. package/dist/src/agents/semantic.js +1 -2
  11. package/dist/src/agents/simulator.d.ts +11 -3
  12. package/dist/src/agents/simulator.executor.d.ts +14 -4
  13. package/dist/src/agents/simulator.executor.js +81 -23
  14. package/dist/src/agents/simulator.js +128 -42
  15. package/dist/src/agents/simulator.prompts.d.ts +9 -7
  16. package/dist/src/agents/simulator.prompts.js +66 -86
  17. package/dist/src/agents/simulator.types.d.ts +23 -5
  18. package/dist/src/agents/simulator.utils.d.ts +7 -2
  19. package/dist/src/agents/simulator.utils.js +31 -11
  20. package/dist/src/agents/system.js +1 -2
  21. package/dist/src/execute/helpers.d.ts +75 -0
  22. package/dist/src/execute/helpers.js +139 -0
  23. package/dist/src/execute/index.d.ts +11 -0
  24. package/dist/src/execute/index.js +44 -0
  25. package/dist/src/execute/legacy.d.ts +46 -0
  26. package/dist/src/execute/legacy.js +460 -0
  27. package/dist/src/execute/modelconfig.d.ts +19 -0
  28. package/dist/src/execute/modelconfig.js +56 -0
  29. package/dist/src/execute/responses.d.ts +55 -0
  30. package/dist/src/execute/responses.js +594 -0
  31. package/dist/src/execute/shared.d.ts +83 -0
  32. package/dist/src/execute/shared.js +188 -0
  33. package/dist/src/index.d.ts +1 -1
  34. package/dist/src/index.js +2 -2
  35. package/dist/src/{princing.openai.d.ts → pricing.llm.d.ts} +6 -0
  36. package/dist/src/pricing.llm.js +255 -0
  37. package/dist/src/prompts.d.ts +13 -4
  38. package/dist/src/prompts.js +221 -114
  39. package/dist/src/rag/embeddings.d.ts +36 -18
  40. package/dist/src/rag/embeddings.js +131 -128
  41. package/dist/src/rag/index.d.ts +5 -5
  42. package/dist/src/rag/index.js +14 -17
  43. package/dist/src/rag/parser.d.ts +2 -1
  44. package/dist/src/rag/parser.js +11 -14
  45. package/dist/src/rag/rag.examples.d.ts +27 -0
  46. package/dist/src/rag/rag.examples.js +151 -0
  47. package/dist/src/rag/rag.manager.d.ts +383 -0
  48. package/dist/src/rag/rag.manager.js +1390 -0
  49. package/dist/src/rag/types.d.ts +128 -12
  50. package/dist/src/rag/types.js +100 -1
  51. package/dist/src/rag/usecase.d.ts +37 -0
  52. package/dist/src/rag/usecase.js +96 -7
  53. package/dist/src/rules/git/git.e2e.helper.js +22 -2
  54. package/dist/src/rules/git/git.health.d.ts +61 -2
  55. package/dist/src/rules/git/git.health.js +333 -11
  56. package/dist/src/rules/git/index.d.ts +2 -2
  57. package/dist/src/rules/git/index.js +13 -1
  58. package/dist/src/rules/git/repo.d.ts +160 -0
  59. package/dist/src/rules/git/repo.js +777 -0
  60. package/dist/src/rules/git/repo.pr.js +117 -13
  61. package/dist/src/rules/git/repo.tools.d.ts +22 -1
  62. package/dist/src/rules/git/repo.tools.js +50 -1
  63. package/dist/src/rules/types.d.ts +27 -14
  64. package/dist/src/rules/utils.matter.d.ts +0 -4
  65. package/dist/src/rules/utils.matter.js +35 -7
  66. package/dist/src/scrapper.d.ts +15 -22
  67. package/dist/src/scrapper.js +58 -110
  68. package/dist/src/stategraph/index.d.ts +1 -1
  69. package/dist/src/stategraph/stategraph.d.ts +56 -2
  70. package/dist/src/stategraph/stategraph.js +134 -6
  71. package/dist/src/stategraph/stategraph.storage.js +8 -0
  72. package/dist/src/stategraph/types.d.ts +27 -0
  73. package/dist/src/types.d.ts +46 -9
  74. package/dist/src/types.js +8 -7
  75. package/dist/src/usecase.d.ts +11 -2
  76. package/dist/src/usecase.js +27 -35
  77. package/dist/src/utils.d.ts +32 -18
  78. package/dist/src/utils.js +87 -129
  79. package/package.json +10 -3
  80. package/dist/src/agents/digestor.test.d.ts +0 -1
  81. package/dist/src/agents/digestor.test.js +0 -45
  82. package/dist/src/agents/reducer.example.d.ts +0 -28
  83. package/dist/src/agents/reducer.example.js +0 -118
  84. package/dist/src/agents/reducer.process.d.ts +0 -16
  85. package/dist/src/agents/reducer.process.js +0 -143
  86. package/dist/src/agents/reducer.tools.d.ts +0 -29
  87. package/dist/src/agents/reducer.tools.js +0 -157
  88. package/dist/src/agents/simpleExample.d.ts +0 -3
  89. package/dist/src/agents/simpleExample.js +0 -38
  90. package/dist/src/agents/system-review.d.ts +0 -5
  91. package/dist/src/agents/system-review.js +0 -181
  92. package/dist/src/agents/systemReview.d.ts +0 -4
  93. package/dist/src/agents/systemReview.js +0 -22
  94. package/dist/src/execute.d.ts +0 -49
  95. package/dist/src/execute.js +0 -564
  96. package/dist/src/princing.openai.js +0 -54
  97. package/dist/src/rag/tools.d.ts +0 -76
  98. package/dist/src/rag/tools.js +0 -196
  99. package/dist/src/rules/user.mapper.d.ts +0 -61
  100. package/dist/src/rules/user.mapper.js +0 -160
  101. package/dist/src/rules/utils/slug.d.ts +0 -22
  102. package/dist/src/rules/utils/slug.js +0 -35
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSpecificRAG = buildSpecificRAG;
4
+ exports.searchInRAG = searchInRAG;
5
+ exports.searchInDefaultRAG = searchInDefaultRAG;
6
+ exports.exampleUsage = exampleUsage;
7
+ const rag_manager_1 = require("./rag.manager");
8
+ /**
9
+ * Exemples d'utilisation du gestionnaire multi-RAG
10
+ */
11
+ /**
12
+ * Construit un RAG spécifique avec des documents
13
+ */
14
+ async function buildSpecificRAG(ragManager, ragName, documents, ragConfig) {
15
+ console.log(`🔄 Construction du RAG: ${ragName}`);
16
+ try {
17
+ await ragManager.build(ragName, documents, ragConfig);
18
+ console.log(`✅ RAG '${ragName}' construit avec succès`);
19
+ }
20
+ catch (error) {
21
+ console.error(`❌ Erreur lors de la construction de '${ragName}':`, error);
22
+ throw error;
23
+ }
24
+ }
25
+ /**
26
+ * Recherche dans un RAG spécifique
27
+ */
28
+ async function searchInRAG(ragManager, ragName, query, options = {}) {
29
+ try {
30
+ const embeddings = ragManager.load(ragName);
31
+ const results = await embeddings.semanticSearch(query, {
32
+ neighbors: options.neighbors || 5,
33
+ debug: options.debug || false
34
+ });
35
+ if (options.debug) {
36
+ console.log(`🔍 Recherche dans '${ragName}': ${results.results.length} résultats`);
37
+ }
38
+ return results;
39
+ }
40
+ catch (error) {
41
+ console.error(`❌ Erreur lors de la recherche dans '${ragName}':`, error);
42
+ throw error;
43
+ }
44
+ }
45
+ /**
46
+ * Recherche dans le RAG par défaut
47
+ */
48
+ async function searchInDefaultRAG(ragManager, query, options = {}) {
49
+ const defaultRAG = ragManager.getDefault();
50
+ if (!defaultRAG) {
51
+ throw new Error('Aucun RAG par défaut défini');
52
+ }
53
+ return searchInRAG(ragManager, defaultRAG, query, options);
54
+ }
55
+ /**
56
+ * Exemple d'utilisation complète
57
+ */
58
+ async function exampleUsage(baseDir) {
59
+ console.log('🚀 Exemple d\'utilisation du gestionnaire multi-RAG');
60
+ console.log(`📁 Répertoire de base: ${baseDir}`);
61
+ // Initialiser le gestionnaire
62
+ const ragManagerConfig = {
63
+ baseDir,
64
+ maxArchives: 5
65
+ };
66
+ const ragManager = rag_manager_1.RAGManager.get(ragManagerConfig);
67
+ // Créer quelques RAG par défaut
68
+ const defaultRAGs = [
69
+ {
70
+ name: 'procedures-stable',
71
+ config: {
72
+ baseDir: '',
73
+ dimensions: 1536,
74
+ distance: 'cosine',
75
+ version: '1.0',
76
+ hnswConfig: { ef: 200, m: 64 }
77
+ }
78
+ },
79
+ {
80
+ name: 'procedures-draft',
81
+ config: {
82
+ baseDir: '',
83
+ dimensions: 1536,
84
+ distance: 'cosine',
85
+ version: '1.0',
86
+ hnswConfig: { ef: 200, m: 32 }
87
+ }
88
+ }
89
+ ];
90
+ for (const rag of defaultRAGs) {
91
+ try {
92
+ ragManager.getStatus(rag.name);
93
+ console.log(`✅ RAG déjà existant: ${rag.name}`);
94
+ }
95
+ catch (error) {
96
+ // RAG n'existe pas, le créer
97
+ const tempPath = await ragManager.create(rag.name);
98
+ console.log(`✅ RAG créé: ${rag.name} (temp: ${tempPath})`);
99
+ }
100
+ }
101
+ // Définir 'procedures-stable' comme RAG par défaut
102
+ await ragManager.setDefault('procedures-stable');
103
+ // Lister les RAG disponibles
104
+ const rags = ragManager.list();
105
+ console.log(`📋 RAG disponibles: ${rags.map((r) => r.name).join(', ')}`);
106
+ // Obtenir les statistiques
107
+ const stats = ragManager.getStats();
108
+ console.log('📊 Statistiques des RAG:');
109
+ stats.forEach(stat => {
110
+ console.log(` • ${stat.name}: ${stat.status} (${stat.isValid ? 'valide' : 'invalide'})`);
111
+ if (stat.metadata) {
112
+ console.log(` - Sections: ${stat.metadata.totalSections}`);
113
+ console.log(` - Dimensions: ${stat.metadata.vectorDimensions}`);
114
+ console.log(` - Taille: ${stat.metadata.indexSize}`);
115
+ }
116
+ if (stat.error) {
117
+ console.log(` - Erreur: ${stat.error}`);
118
+ }
119
+ });
120
+ // Exemple de recherche (nécessite des RAG construits)
121
+ try {
122
+ const results = await searchInDefaultRAG(ragManager, 'procédure de réparation', {
123
+ neighbors: 3,
124
+ debug: true
125
+ });
126
+ console.log(`🔍 Résultats de recherche: ${results.results.length} trouvés`);
127
+ }
128
+ catch (error) {
129
+ console.log('⚠️ Recherche impossible (RAG non construit):', error instanceof Error ? error.message : error);
130
+ }
131
+ // Exemple de recherche dans un RAG spécifique
132
+ const availableRAGs = rags.filter((r) => r.status === 'active');
133
+ if (availableRAGs.length > 0) {
134
+ const targetRAG = availableRAGs[0].name;
135
+ console.log(`🎯 Recherche dans '${targetRAG}': "maintenance"`);
136
+ try {
137
+ const results = await searchInRAG(ragManager, targetRAG, 'maintenance', {
138
+ neighbors: 2,
139
+ debug: true
140
+ });
141
+ console.log(`✅ ${results.results.length} résultats dans '${targetRAG}'`);
142
+ }
143
+ catch (error) {
144
+ console.log(`⚠️ Erreur: ${error instanceof Error ? error.message : error}`);
145
+ }
146
+ }
147
+ else {
148
+ console.log('⚠️ Aucun RAG actif disponible pour la recherche');
149
+ }
150
+ console.log('\n🎉 Exemple terminé !');
151
+ }
@@ -0,0 +1,383 @@
1
+ import { RAGManagerConfig, RAGRegistryEntry, RAGConfig, ParsedDocument, DocumentQueries } from './types';
2
+ import { Embeddings } from './embeddings';
3
+ /**
4
+ * Gestionnaire multi-RAG stateless pour gérer plusieurs index RAG
5
+ */
6
+ export declare class RAGManager {
7
+ private config;
8
+ private registryFile;
9
+ private cachedRegistry;
10
+ private lastLoadTime;
11
+ /**
12
+ * Map des embeddings chargés pour permettre les updates réactifs
13
+ * Note: Pour une meilleure gestion mémoire, appeler cleanDeadReferences() périodiquement
14
+ */
15
+ private loadedEmbeddings;
16
+ private constructor();
17
+ static get(config: RAGManagerConfig): RAGManager;
18
+ /**
19
+ * Nettoie le cache des instances (utile pour les tests)
20
+ */
21
+ static clearCache(): void;
22
+ /**
23
+ * Crée les dossiers nécessaires s'ils n'existent pas
24
+ */
25
+ private ensureDirectories;
26
+ /**
27
+ * Charge le registre depuis le fichier JSON et scan les dossiers
28
+ */
29
+ private loadRegistry;
30
+ /**
31
+ * Scanne les dossiers pour découvrir les RAG existants
32
+ */
33
+ private scanDirectoriesForRAGs;
34
+ /**
35
+ * Vérifie si un RAG existe dans le registre (peu importe son statut)
36
+ * Recherche par clé du dictionnaire OU par entry.name
37
+ */
38
+ exists(name: string): boolean;
39
+ /**
40
+ * Obtient le registre en cache ou le recharge si nécessaire
41
+ */
42
+ private getRegistry;
43
+ /**
44
+ * Sauvegarde le registre dans le fichier JSON
45
+ */
46
+ private saveRegistry;
47
+ /**
48
+ * Notifie les embeddings chargés de se mettre à jour
49
+ *
50
+ * @param name Nom du RAG à mettre à jour
51
+ * @param opts Options de mise à jour (action: 'rename' pour renommer un document)
52
+ *
53
+ * FIXME: Gérer le cas où l'embedding est en cours d'exécution (recherche/indexation)
54
+ * Actuellement, l'update est appelé immédiatement sans vérifier si l'embedding est busy.
55
+ * Solutions possibles:
56
+ * - Ajouter un flag `isBusy` dans Embeddings
57
+ * - Implémenter une queue d'updates
58
+ * - Utiliser un système de locks
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * // Après un build
63
+ * this.notifyUpdate('procedures-stable');
64
+ *
65
+ * // Après un rename de document
66
+ * this.notifyUpdate('procedures-stable', {
67
+ * action: 'rename',
68
+ * oldFile: 'old.md',
69
+ * newFile: 'new.md'
70
+ * });
71
+ * ```
72
+ */
73
+ private notifyUpdate;
74
+ /**
75
+ * Génère un nom d'archive avec timestamp YYYMMDD
76
+ */
77
+ private generateArchiveName;
78
+ /**
79
+ * Archive un RAG existant
80
+ */
81
+ private archive;
82
+ /**
83
+ * Charge la configuration depuis le fichier metadata
84
+ */
85
+ private loadConfig;
86
+ /**
87
+ * Sauvegarde les métadonnées RAG dans un dossier
88
+ *
89
+ * @param dirPath Chemin du dossier où sauvegarder les métadonnées
90
+ * @param metadata Métadonnées complètes du RAG
91
+ * @private
92
+ */
93
+ private saveMetadata;
94
+ /**
95
+ * Sauvegarde le mapping RAG dans un dossier
96
+ *
97
+ * @param dirPath Chemin du dossier où sauvegarder le mapping
98
+ * @param mapping Mapping ID → ref des sections
99
+ * @param buildResult Résultat de la construction pour les métadonnées du mapping
100
+ * @private
101
+ */
102
+ private saveMapping;
103
+ /**
104
+ * Nettoie les anciennes archives d'un RAG
105
+ */
106
+ private cleanOldArchives;
107
+ /**
108
+ * Récupère l'entrée d'un RAG dans le registre
109
+ *
110
+ * @param name Nom du RAG
111
+ * @returns L'entrée du registre ou undefined si non trouvé
112
+ */
113
+ getEntry(name: string): RAGRegistryEntry | undefined;
114
+ /**
115
+ * Crée un nouveau RAG dans le registre et retourne le chemin temporaire
116
+ *
117
+ * Le registre stocke:
118
+ * - configPath: le tempPath (source de construction)
119
+ * - destDir: le chemin de destination finale
120
+ * - status: 'building'
121
+ * - description: label descriptif court (optionnel)
122
+ *
123
+ * Après build(), configPath sera remplacé par destDir et status = 'active'
124
+ *
125
+ * @param name Nom du RAG
126
+ * @param options Options de création
127
+ * @returns Chemin du dossier temporaire créé
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * // Création simple
132
+ * await ragManager.create('my-rag', { description: 'Mon RAG' });
133
+ *
134
+ * // Création avec fork
135
+ * await ragManager.create('child-rag', {
136
+ * description: 'PR validation',
137
+ * fork: 'parent-rag',
138
+ * exclude: ['modif-1.md', 'modif-2.md']
139
+ * });
140
+ * ```
141
+ */
142
+ create(name: string, options?: string | {
143
+ description?: string;
144
+ fork?: string;
145
+ exclude?: string[];
146
+ checkpoint?: string;
147
+ }): Promise<string>;
148
+ /**
149
+ * Sauvegarde un document dans le dossier de construction d'un RAG
150
+ *
151
+ * Le registre est consulté pour trouver le dossier (configPath en mode building)
152
+ *
153
+ * @param name Nom du RAG
154
+ * @param filename Nom du fichier (ex: 'my-document.md')
155
+ * @param content Contenu markdown avec front-matter
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * await ragManager.create('my-rag');
160
+ * ragManager.addDocument('my-rag', 'procedure.md', markdownContent);
161
+ * ```
162
+ */
163
+ addDocument(name: string, filename: string, content: string): void;
164
+ /**
165
+ * Prépare un RAG enfant en copiant les documents d'un RAG parent
166
+ *
167
+ * Cette méthode fork un RAG existant en copiant tous ses documents:
168
+ * - `filename.md` - Fichier markdown original
169
+ * - `filename.md.sha` - Empreinte SHA du fichier original
170
+ * - `filename.enhanced.md` - Version enrichie (si disponible)
171
+ * - `filename.query.json` - Métadonnées et use cases (si disponible)
172
+ *
173
+ * Les fichiers d'index (vectors.dat, mapping.json, metadata.json) ne sont PAS copiés
174
+ * car ils seront reconstruits par build()
175
+ *
176
+ * @param fromRagName Nom du RAG parent
177
+ * @param toRagName Nom du RAG enfant (doit déjà exister via create())
178
+ * @param options Options de fork
179
+ * @returns Objet avec le nombre de documents et fichiers copiés
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // Créer le RAG enfant
184
+ * await ragManager.create('rule-validation-1', 'PR validation');
185
+ *
186
+ * // Fork depuis le parent en excluant les fichiers modifiés
187
+ * const result = await ragManager.fork('rule-editor', 'rule-validation-1', {
188
+ * exclude: ['modif-1.md', 'modif-2.md']
189
+ * });
190
+ * console.log(`✅ ${result.documents} documents copiés (${result.files} fichiers)`);
191
+ *
192
+ * // Ajouter les documents modifiés
193
+ * ragManager.addDocument('rule-validation-1', 'modif-1.md', newContent1);
194
+ * ragManager.addDocument('rule-validation-1', 'modif-2.md', newContent2);
195
+ *
196
+ * // Builder l'index
197
+ * await ragManager.build('rule-validation-1', allDocs);
198
+ * ```
199
+ */
200
+ fork(fromRagName: string, toRagName: string, options?: {
201
+ exclude?: string[];
202
+ }): {
203
+ documents: number;
204
+ files: number;
205
+ };
206
+ /**
207
+ * [USAGE INTERNE] Copie tous les documents d'un RAG parent vers un RAG destination
208
+ *
209
+ * Cette méthode copie tous les fichiers associés aux documents indexés:
210
+ * - `filename.md` - Fichier markdown original
211
+ * - `filename.md.sha` - Empreinte SHA du fichier original
212
+ * - `filename.enhanced.md` - Version enrichie (si disponible)
213
+ * - `filename.query.json` - Métadonnées et use cases (si disponible)
214
+ *
215
+ * @private
216
+ * @param fromRagName Nom du RAG source
217
+ * @param toRagName Nom du RAG destination
218
+ * @param excludes Liste des fichiers à ne PAS copier (ex: ['procedure-1.md', 'procedure-2.md'])
219
+ * @returns Objet avec le nombre de documents copiés et le nombre de fichiers copiés
220
+ */
221
+ private addDocumentFrom;
222
+ /**
223
+ * Compare le contenu d'un document avec celui stocké dans le RAG
224
+ *
225
+ * @param name Nom du RAG
226
+ * @param file Nom du fichier (ex: 'ppe-budget.md')
227
+ * @param content Contenu à comparer
228
+ * @returns true si identique, false sinon
229
+ */
230
+ documentEqual(name: string, file: string, content: string): boolean;
231
+ /**
232
+ * Charge les use cases d'un document depuis un RAG
233
+ *
234
+ * @param name Nom du RAG
235
+ * @param filename Nom du fichier de base (ex: 'procedure.md')
236
+ * @returns Les use cases du document
237
+ *
238
+ * @example
239
+ * ```typescript
240
+ * const queries = ragManager.loadUseCases('my-rag', 'procedure.md');
241
+ * console.log(`${queries.queries.length} use cases trouvés`);
242
+ * ```
243
+ */
244
+ loadUseCases(name: string, filename: string): DocumentQueries;
245
+ /**
246
+ * Construit un RAG de manière atomique
247
+ *
248
+ * Utilise le registre pour trouver le dossier de construction (configPath)
249
+ * et la destination finale (destDir)
250
+ *
251
+ * @param name Nom du RAG
252
+ * @param documents Documents parsés (optionnel, sinon charge depuis configPath)
253
+ * @param ragConfig Configuration optionnelle du RAG
254
+ */
255
+ build(name: string, documents?: ParsedDocument[], ragConfig?: Partial<RAGConfig>): Promise<void>;
256
+ /**
257
+ * Charge tous les documents depuis un dossier
258
+ * Version interne qui prend un chemin direct
259
+ *
260
+ * @param baseDir Chemin du dossier
261
+ * @param endsWith Extension des fichiers à charger
262
+ * @returns Liste des documents parsés et validés
263
+ */
264
+ private _loadDocumentsFromPath;
265
+ /**
266
+ * Charge tous les documents depuis un dossier du RAG
267
+ * Version publique qui utilise le nom du RAG
268
+ *
269
+ * @param name Nom du RAG
270
+ * @param endsWith Extension des fichiers à charger (par défaut '.enhanced.md')
271
+ * @returns Liste des documents parsés et validés
272
+ */
273
+ private loadDocumentsFromDir;
274
+ /**
275
+ * Supprime un RAG du registre
276
+ */
277
+ delete(name: string, archiveFlag?: boolean): Promise<void>;
278
+ /**
279
+ * Renomme un document dans un RAG existant
280
+ *
281
+ * Cette méthode renomme tous les fichiers associés à un document:
282
+ * - `oldFile.md` → `newFile.md`
283
+ * - `oldFile.md.sha` → `newFile.md.sha`
284
+ * - `oldFile.enhanced.md` → `newFile.enhanced.md`
285
+ * - `oldFile.query.json` → `newFile.query.json`
286
+ *
287
+ * Et met à jour les références dans les fichiers JSON (mapping, metadata, queries)
288
+ *
289
+ * @param ragName Nom du RAG concerné
290
+ * @param oldFile Ancien nom du fichier (ex: 'old-name.md')
291
+ * @param newFile Nouveau nom du fichier (ex: 'new-name.md')
292
+ *
293
+ * @example
294
+ * ```typescript
295
+ * ragManager.renameDocument('rule-validation-1', 'old-procedure.md', 'new-procedure.md');
296
+ * ```
297
+ */
298
+ renameDocument(ragName: string, oldFile: string, newFile: string): void;
299
+ /**
300
+ * Met à jour les références d'un fichier dans les JSON du RAG
301
+ *
302
+ * @param configPath Chemin du RAG
303
+ * @param oldFile Ancien nom du fichier
304
+ * @param newFile Nouveau nom du fichier
305
+ * @private
306
+ */
307
+ private updateJSONReferences;
308
+ /**
309
+ * Renomme un RAG existant
310
+ *
311
+ * @param from Nom actuel du RAG
312
+ * @param to Nouveau nom du RAG
313
+ * @param description Description optionnelle du RAG
314
+ * @throws Error si le nom est trop court, si une collision existe, ou si le RAG source n'existe pas
315
+ *
316
+ * @example
317
+ * ```typescript
318
+ * await ragManager.rename('old-name', 'new-name', 'Description mise à jour');
319
+ * ```
320
+ */
321
+ rename(from: string, to: string, description?: string): Promise<void>;
322
+ /**
323
+ * Met à jour le statut d'un RAG
324
+ *
325
+ * @param name Nom du RAG
326
+ * @param status Nouveau statut ('active' ou 'paused')
327
+ * @throws Error si le RAG n'existe pas ou si le statut est invalide
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * ragManager.updateStatus('knowledge', 'paused');
332
+ * ```
333
+ */
334
+ pause(name: string): void;
335
+ unpause(name: string): void;
336
+ /**
337
+ * Nettoie les embeddings chargés obsolètes (plus vieux que maxAge)
338
+ * Utile pour libérer de la mémoire
339
+ *
340
+ * @param maxAge Âge maximum en millisecondes (défaut: 1 heure)
341
+ */
342
+ cleanDeadReferences(maxAge?: number): void;
343
+ /**
344
+ * Obtient le nombre d'embeddings actuellement chargés
345
+ */
346
+ getLoadedCount(): number;
347
+ /**
348
+ * Charge un RAG par son nom et l'enregistre pour les updates réactifs
349
+ *
350
+ * Permet le chargement si:
351
+ * - Statut = 'active' : RAG complètement prêt
352
+ * - Statut = 'building' : RAG en construction mais déjà utilisable (recherche partielle)
353
+ */
354
+ load(name: string): Embeddings;
355
+ /**
356
+ * Vérifie l'état d'un RAG
357
+ */
358
+ verify(name: string): boolean;
359
+ /**
360
+ * Liste tous les RAG disponibles
361
+ */
362
+ list(): RAGRegistryEntry[];
363
+ /**
364
+ * Obtient le statut d'un RAG
365
+ */
366
+ getStatus(name: string): RAGRegistryEntry;
367
+ /**
368
+ * Obtient la configuration d'un RAG depuis son metadata
369
+ */
370
+ getConfig(name: string): RAGConfig;
371
+ /**
372
+ * Définit le RAG par défaut
373
+ */
374
+ setDefault(name: string): Promise<void>;
375
+ /**
376
+ * Obtient le RAG par défaut
377
+ */
378
+ getDefault(): string;
379
+ /**
380
+ * Obtient les statistiques de tous les RAG
381
+ */
382
+ getStats(): any[];
383
+ }