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.
- package/dist/src/agents/agents.example.js +21 -22
- package/dist/src/agents/authentication.js +1 -2
- package/dist/src/agents/prompts.d.ts +5 -4
- package/dist/src/agents/prompts.js +44 -87
- package/dist/src/agents/reducer.core.d.ts +24 -2
- package/dist/src/agents/reducer.core.js +125 -35
- package/dist/src/agents/reducer.loaders.d.ts +55 -1
- package/dist/src/agents/reducer.loaders.js +114 -1
- package/dist/src/agents/reducer.types.d.ts +45 -2
- package/dist/src/agents/semantic.js +1 -2
- package/dist/src/agents/simulator.d.ts +11 -3
- package/dist/src/agents/simulator.executor.d.ts +14 -4
- package/dist/src/agents/simulator.executor.js +81 -23
- package/dist/src/agents/simulator.js +128 -42
- package/dist/src/agents/simulator.prompts.d.ts +9 -7
- package/dist/src/agents/simulator.prompts.js +66 -86
- package/dist/src/agents/simulator.types.d.ts +23 -5
- package/dist/src/agents/simulator.utils.d.ts +7 -2
- package/dist/src/agents/simulator.utils.js +31 -11
- package/dist/src/agents/system.js +1 -2
- package/dist/src/execute/helpers.d.ts +75 -0
- package/dist/src/execute/helpers.js +139 -0
- package/dist/src/execute/index.d.ts +11 -0
- package/dist/src/execute/index.js +44 -0
- package/dist/src/execute/legacy.d.ts +46 -0
- package/dist/src/execute/legacy.js +460 -0
- package/dist/src/execute/modelconfig.d.ts +19 -0
- package/dist/src/execute/modelconfig.js +56 -0
- package/dist/src/execute/responses.d.ts +55 -0
- package/dist/src/execute/responses.js +594 -0
- package/dist/src/execute/shared.d.ts +83 -0
- package/dist/src/execute/shared.js +188 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/{princing.openai.d.ts → pricing.llm.d.ts} +6 -0
- package/dist/src/pricing.llm.js +255 -0
- package/dist/src/prompts.d.ts +13 -4
- package/dist/src/prompts.js +221 -114
- package/dist/src/rag/embeddings.d.ts +36 -18
- package/dist/src/rag/embeddings.js +131 -128
- package/dist/src/rag/index.d.ts +5 -5
- package/dist/src/rag/index.js +14 -17
- package/dist/src/rag/parser.d.ts +2 -1
- package/dist/src/rag/parser.js +11 -14
- package/dist/src/rag/rag.examples.d.ts +27 -0
- package/dist/src/rag/rag.examples.js +151 -0
- package/dist/src/rag/rag.manager.d.ts +383 -0
- package/dist/src/rag/rag.manager.js +1390 -0
- package/dist/src/rag/types.d.ts +128 -12
- package/dist/src/rag/types.js +100 -1
- package/dist/src/rag/usecase.d.ts +37 -0
- package/dist/src/rag/usecase.js +96 -7
- package/dist/src/rules/git/git.e2e.helper.js +22 -2
- package/dist/src/rules/git/git.health.d.ts +61 -2
- package/dist/src/rules/git/git.health.js +333 -11
- package/dist/src/rules/git/index.d.ts +2 -2
- package/dist/src/rules/git/index.js +13 -1
- package/dist/src/rules/git/repo.d.ts +160 -0
- package/dist/src/rules/git/repo.js +777 -0
- package/dist/src/rules/git/repo.pr.js +117 -13
- package/dist/src/rules/git/repo.tools.d.ts +22 -1
- package/dist/src/rules/git/repo.tools.js +50 -1
- package/dist/src/rules/types.d.ts +27 -14
- package/dist/src/rules/utils.matter.d.ts +0 -4
- package/dist/src/rules/utils.matter.js +35 -7
- package/dist/src/scrapper.d.ts +15 -22
- package/dist/src/scrapper.js +58 -110
- package/dist/src/stategraph/index.d.ts +1 -1
- package/dist/src/stategraph/stategraph.d.ts +56 -2
- package/dist/src/stategraph/stategraph.js +134 -6
- package/dist/src/stategraph/stategraph.storage.js +8 -0
- package/dist/src/stategraph/types.d.ts +27 -0
- package/dist/src/types.d.ts +46 -9
- package/dist/src/types.js +8 -7
- package/dist/src/usecase.d.ts +11 -2
- package/dist/src/usecase.js +27 -35
- package/dist/src/utils.d.ts +32 -18
- package/dist/src/utils.js +87 -129
- package/package.json +10 -3
- package/dist/src/agents/digestor.test.d.ts +0 -1
- package/dist/src/agents/digestor.test.js +0 -45
- package/dist/src/agents/reducer.example.d.ts +0 -28
- package/dist/src/agents/reducer.example.js +0 -118
- package/dist/src/agents/reducer.process.d.ts +0 -16
- package/dist/src/agents/reducer.process.js +0 -143
- package/dist/src/agents/reducer.tools.d.ts +0 -29
- package/dist/src/agents/reducer.tools.js +0 -157
- package/dist/src/agents/simpleExample.d.ts +0 -3
- package/dist/src/agents/simpleExample.js +0 -38
- package/dist/src/agents/system-review.d.ts +0 -5
- package/dist/src/agents/system-review.js +0 -181
- package/dist/src/agents/systemReview.d.ts +0 -4
- package/dist/src/agents/systemReview.js +0 -22
- package/dist/src/execute.d.ts +0 -49
- package/dist/src/execute.js +0 -564
- package/dist/src/princing.openai.js +0 -54
- package/dist/src/rag/tools.d.ts +0 -76
- package/dist/src/rag/tools.js +0 -196
- package/dist/src/rules/user.mapper.d.ts +0 -61
- package/dist/src/rules/user.mapper.js +0 -160
- package/dist/src/rules/utils/slug.d.ts +0 -22
- 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
|
+
}
|