overmind-mcp 2.0.1 → 2.0.3

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 (38) hide show
  1. package/README.md +145 -232
  2. package/dist/server.d.ts +40 -0
  3. package/dist/server.d.ts.map +1 -1
  4. package/dist/server.js +104 -61
  5. package/dist/server.js.map +1 -1
  6. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  7. package/dist/services/ClaudeRunner.js +68 -47
  8. package/dist/services/ClaudeRunner.js.map +1 -1
  9. package/docs/INDEX.md +144 -0
  10. package/docs/README.md +128 -0
  11. package/docs/api/prompt/Claude_code.md +74 -0
  12. package/docs/api/prompt/Kilo.md +74 -0
  13. package/docs/api/prompt/Kilo_Hermes.md +170 -0
  14. package/docs/api/prompt/Minimax4.md +96 -0
  15. package/docs/changelog/CHANGELOG.add.md +106 -0
  16. package/docs/index.html +569 -0
  17. package/docs/library.html +239 -0
  18. package/docs/prompt.html +1212 -0
  19. package/docs/script.js +428 -0
  20. package/docs/styles.css +2816 -0
  21. package/docs/tools.md +794 -0
  22. package/install-overmind-unix.sh +250 -0
  23. package/install-overmind-windows.bat +257 -0
  24. package/package.json +6 -12
  25. package/scripts/docker-manager.mjs +2 -2
  26. package/scripts/install-dependencies.mjs +266 -87
  27. package/scripts/postinstall.mjs +98 -129
  28. package/scripts/setup.mjs +4 -6
  29. package/scripts/uninstall.mjs +224 -0
  30. package/SETUP_WINDOWS.md +0 -362
  31. package/dist/tools/metadata.d.ts +0 -20
  32. package/dist/tools/metadata.d.ts.map +0 -1
  33. package/dist/tools/metadata.js +0 -246
  34. package/dist/tools/metadata.js.map +0 -1
  35. package/docker-compose.overmind.yml +0 -172
  36. /package/{CHANGELOG.md → docs/changelog/CHANGELOG.md} +0 -0
  37. /package/{DEPLOYMENT.md → docs/guides/DEPLOYMENT.md} +0 -0
  38. /package/{SWARM_USAGE.md → docs/guides/SWARM_USAGE.md} +0 -0
package/SETUP_WINDOWS.md DELETED
@@ -1,362 +0,0 @@
1
- # ═══════════════════════════════════════════════════════════════════════════════
2
- # OVERMIND-MCP: SETUP WINDOWS (PostgreSQL Existant)
3
- # ═══════════════════════════════════════════════════════════════════════════════
4
- # Guide de configuration pour OverMind-MCP avec PostgreSQL + pgvector existant
5
- #
6
- # Prérequis:
7
- # - Docker Desktop démarré
8
- # - PostgreSQL + pgvector en Docker (container: postgres-pgvector)
9
- # - Node.js 20+ installé
10
- # - pnpm installé
11
- # ═══════════════════════════════════════════════════════════════════════════════
12
-
13
- ## 📋 ÉTAPE 1: Configuration de l'environnement
14
-
15
- ### 1.1 Créer le fichier .env
16
-
17
- ```bash
18
- # Copier l'exemple
19
- cp .env.example .env
20
- ```
21
-
22
- ### 1.2 Éditer .env avec votre configuration PostgreSQL existante
23
-
24
- ```bash
25
- # ─── WORKSPACE ───────────────────────────────────────────────────────────────────
26
- OVERMIND_WORKSPACE=C:/Users/Deamon/Desktop/Backup/Serveur MCP
27
-
28
- # ─── DATABASE (VOTRE POSTGRESQL EXISTANT) ──────────────────────────────────────
29
- POSTGRES_HOST=host.docker.internal # ← IMPORTANT pour Docker
30
- POSTGRES_PORT=5432
31
- POSTGRES_DATABASE=overmind_memory # Sera créé automatiquement
32
- POSTGRES_USER=postgres
33
- POSTGRES_PASSWORD=votre_mot_de_passe_ici # ← CHANGEZ CECI
34
- POSTGRES_SSL=false
35
-
36
- # ─── MEMORY ───────────────────────────────────────────────────────────────────────
37
- OVERMIND_MEMORY_TYPE=postgres
38
-
39
- # ─── EMBEDDINGS (Qwen 8B - 4096D) ────────────────────────────────────────────────
40
- OVERMIND_EMBEDDING_URL=https://openrouter.ai/api/v1
41
- OVERMIND_EMBEDDING_KEY=sk-or-v1-votre_cle_api_ici # ← CHANGEZ CECI
42
- OVERMIND_EMBEDDING_MODEL=qwen/qwen3-embedding-8b
43
- OVERMIND_EMBEDDING_DIMENSIONS=4096
44
-
45
- # ─── MESSAGE BROKER (Docker RabbitMQ) ────────────────────────────────────────────
46
- OVERMIND_BROKER=rabbitmq
47
- RABBITMQ_URL=amqp://overmind:overmind_secret_password_change_me@localhost:5672
48
-
49
- # ─── WORKFLOW (Docker Temporal) ───────────────────────────────────────────────────
50
- OVERMIND_WORKFLOW=temporal
51
- TEMPORAL_ADDRESS=localhost:7233
52
-
53
- # ─── TELEMETRY (Désactivé par défaut) ────────────────────────────────────────────
54
- OTEL_ENABLED=false
55
- ```
56
-
57
- ---
58
-
59
- ## 🗄️ ÉTAPE 2: Initialiser la base OverMind
60
-
61
- ### Option A: Script automatique (RECOMMANDÉ)
62
-
63
- ```bash
64
- # Lancer le script de setup
65
- node scripts/setup-overmind-db.js
66
- ```
67
-
68
- **Le script va:**
69
- 1. Se connecter à votre PostgreSQL existant
70
- 2. Vérifier que pgvector est installé
71
- 3. Créer la base `overmind_memory`
72
- 4. Activer l'extension pgvector
73
- 5. Initialiser les tables
74
-
75
- ### Option B: Manuel
76
-
77
- ```bash
78
- # Se connecter à votre PostgreSQL Docker
79
- docker exec -it postgres-pgvector psql -U postgres
80
-
81
- # Créer la base de données
82
- CREATE DATABASE overmind_memory;
83
-
84
- # Se connecter à la nouvelle base
85
- \c overmind_memory
86
-
87
- # Activer pgvector
88
- CREATE EXTENSION IF NOT EXISTS vector;
89
-
90
- # Quitter
91
- \q
92
-
93
- # Exécuter le script d'initialisation
94
- docker exec -i postgres-pgvector psql -U postgres -d overmind_memory < init-db.sql
95
- ```
96
-
97
- ---
98
-
99
- ## 🐳 ÉTAPE 3: Lancer les services Docker OverMind
100
-
101
- ### 3.1 Lancer RabbitMQ + Temporal
102
-
103
- ```bash
104
- # Lancer les services minimal
105
- docker-compose -f docker-compose.overmind.yml up -d
106
- ```
107
-
108
- **Services démarrés:**
109
- - ✅ RabbitMQ (ports 5672, 15672)
110
- - ✅ Temporal (ports 7233, 8088)
111
- - ✅ Temporal Web UI
112
-
113
- ### 3.2 Vérifier que tout tourne
114
-
115
- ```bash
116
- # Vérifier les containers
117
- docker ps
118
- ```
119
-
120
- **Vous devriez voir:**
121
- ```
122
- postgres-pgvector (déjà existant)
123
- overmind-rabbitmq (nouveau)
124
- overmind-temporal (nouveau)
125
- overmind-temporal-web (nouveau)
126
- ```
127
-
128
- ### 3.3 Tester les interfaces
129
-
130
- - **RabbitMQ Management UI**: http://localhost:15672
131
- - User: `overmind`
132
- - Pass: `overmind_secret_password_change_me`
133
-
134
- - **Temporal Web UI**: http://localhost:8088
135
-
136
- ---
137
-
138
- ## 🔨 ÉTAPE 4: Builder et démarrer OverMind
139
-
140
- ### 4.1 Builder le projet
141
-
142
- ```bash
143
- cd "C:/Users/Deamon/Desktop/Backup/Serveur MCP/Workflow"
144
- pnpm run build
145
- ```
146
-
147
- ### 4.2 Démarrer OverMind
148
-
149
- ```bash
150
- # Mode développement (avec watch)
151
- pnpm run dev
152
-
153
- # Ou mode production
154
- pnpm run start
155
- ```
156
-
157
- ---
158
-
159
- ## ✅ ÉTAPE 5: Vérifier l'installation
160
-
161
- ### 5.1 Tester la connexion PostgreSQL
162
-
163
- ```bash
164
- # Lancer un test simple
165
- node -e "
166
- const { Client } = require('pg');
167
- const client = new Client({
168
- host: 'localhost',
169
- port: 5432,
170
- user: 'postgres',
171
- password: 'votre_mot_de_passe',
172
- database: 'overmind_memory'
173
- });
174
- client.connect().then(() => {
175
- console.log('✅ Connexion PostgreSQL réussie !');
176
- return client.query('SELECT version()');
177
- }).then(res => {
178
- console.log('PostgreSQL version:', res.rows[0].version);
179
- return client.end();
180
- }).catch(err => {
181
- console.error('❌ Erreur:', err.message);
182
- process.exit(1);
183
- });
184
- "
185
- ```
186
-
187
- ### 5.2 Vérifier les services Docker
188
-
189
- ```bash
190
- # Vérifier RabbitMQ
191
- curl http://localhost:15672/api/overview
192
- # User: overmind
193
- # Pass: overmind_secret_password_change_me
194
-
195
- # Vérifier Temporal
196
- curl http://localhost:7233
197
- ```
198
-
199
- ---
200
-
201
- ## 🧪 ÉTAPE 6: Premier test
202
-
203
- ### 6.1 Créer un agent de test
204
-
205
- ```bash
206
- # Via l'interface MCP (Cursor, Claude Code, etc.)
207
-
208
- create_agent({
209
- name: 'test-agent',
210
- prompt: 'Tu es un agent de test pour vérifier l\'installation',
211
- runner: 'claude'
212
- })
213
- ```
214
-
215
- ### 6.2 Tester la mémoire
216
-
217
- ```bash
218
- # Stocker une connaissance
219
- memory_store({
220
- text: 'OverMind-MCP est installé sur Windows avec PostgreSQL existant',
221
- source: 'setup',
222
- agentName: 'system'
223
- })
224
-
225
- # Rechercher
226
- memory_search({
227
- query: 'installation Windows',
228
- limit: 5
229
- })
230
- ```
231
-
232
- ---
233
-
234
- ## 📊 ÉTAPE 7: Monitoring (Optionnel)
235
-
236
- Si vous voulez activer l'observabilité, décommentez les services Prometheus et Grafana dans `docker-compose.overmind.yml`:
237
-
238
- ```bash
239
- # Arrêter les services
240
- docker-compose -f docker-compose.overmind.yml down
241
-
242
- # Éditer docker-compose.overmind.yml
243
- # Décommentez les sections prometheus et grafana
244
-
245
- # Relancer
246
- docker-compose -f docker-compose.overmind.yml up -d
247
- ```
248
-
249
- **Interfaces disponibles:**
250
- - Prometheus: http://localhost:9090
251
- - Grafana: http://localhost:3000 (admin/grafana_password_change_me)
252
-
253
- ---
254
-
255
- ## 🛠️ COMMANDES UTILES
256
-
257
- ### Docker
258
-
259
- ```bash
260
- # Voir les logs
261
- docker-compose -f docker-compose.overmind.yml logs -f
262
-
263
- # Arrêter les services
264
- docker-compose -f docker-compose.overmind.yml down
265
-
266
- # Redémarrer un service
267
- docker-compose -f docker-compose.overmind.yml restart rabbitmq
268
-
269
- # Voir l'état
270
- docker-compose -f docker-compose.overmind.yml ps
271
- ```
272
-
273
- ### OverMind
274
-
275
- ```bash
276
- # Builder
277
- pnpm run build
278
-
279
- # Linter
280
- pnpm run lint
281
-
282
- # Tests
283
- pnpm run test
284
-
285
- # Démarrer
286
- pnpm run dev # Développement
287
- pnpm run start # Production
288
- ```
289
-
290
- ---
291
-
292
- ## 🐛 DÉPANNAGE
293
-
294
- ### Problème: "ECONNREFUSED" PostgreSQL
295
-
296
- **Solution:**
297
- ```bash
298
- # Vérifier que PostgreSQL tourne
299
- docker ps | grep postgres-pgvector
300
-
301
- # Vérifier le port
302
- docker port postgres-pgvector
303
- ```
304
-
305
- ### Problème: "pgvector not installed"
306
-
307
- **Solution:**
308
- ```bash
309
- # Se connecter au container
310
- docker exec -it postgres-pgvector psql -U postgres
311
-
312
- # Installer pgvector
313
- CREATE EXTENSION IF NOT EXISTS vector;
314
- ```
315
-
316
- ### Problème: "RabbitMQ connection refused"
317
-
318
- **Solution:**
319
- ```bash
320
- # Vérifier que RabbitMQ tourne
321
- docker ps | grep overmind-rabbitmq
322
-
323
- # Voir les logs
324
- docker logs overmind-rabbitmq
325
- ```
326
-
327
- ### Problème: "Temporal can't connect to PostgreSQL"
328
-
329
- **Solution:**
330
- ```bash
331
- # Vérifier .env
332
- # POSTGRES_HOST doit être "host.docker.internal"
333
- # POSTGRES_PASSWORD doit être correct
334
-
335
- # Redémarrer Temporal
336
- docker-compose -f docker-compose.overmind.yml restart temporal
337
- ```
338
-
339
- ---
340
-
341
- ## 🎯 RÉSUMÉ
342
-
343
- **Setup minimal:**
344
- - ✅ PostgreSQL existant réutilisé
345
- - ✅ RabbitMQ (message broker)
346
- - ✅ Temporal (workflow orchestrator)
347
- - ✅ OverMind agents (Node.js natif)
348
-
349
- **Services disponibles:**
350
- - 📊 RabbitMQ Management UI: http://localhost:15672
351
- - 📈 Temporal Web UI: http://localhost:8088
352
- - 🗄️ PostgreSQL: localhost:5432
353
- - 🤖 OverMind Agents: Processus Node.js
354
-
355
- **Prochaine étape:**
356
- Créer vos agents et workflows personnalisés ! 🚀
357
-
358
- ---
359
-
360
- **Pour plus d'informations:**
361
- - Documentation: https://deamondev888.github.io/overmind-mcp/
362
- - Support: https://discord.gg/4AR82phtBz
@@ -1,20 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const metadataSchema: z.ZodObject<{
3
- path: z.ZodDefault<z.ZodString>;
4
- depth: z.ZodDefault<z.ZodNumber>;
5
- includeStats: z.ZodDefault<z.ZodBoolean>;
6
- }, z.core.$strip>;
7
- export declare function metadataTool(args: z.infer<typeof metadataSchema>): Promise<{
8
- isError: boolean;
9
- content: {
10
- type: "text";
11
- text: string;
12
- }[];
13
- } | {
14
- content: {
15
- type: "text";
16
- text: string;
17
- }[];
18
- isError?: undefined;
19
- }>;
20
- //# sourceMappingURL=metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAuNH,wBAAsB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC;;;;;;;;;;;;GAoDtE"}
@@ -1,246 +0,0 @@
1
- import { z } from 'zod';
2
- import { readdir, readFile, stat, realpath } from 'fs/promises';
3
- import { join, extname, basename, resolve, sep } from 'path';
4
- export const metadataSchema = z.object({
5
- path: z.string().default('.').describe('Chemin du projet (défaut: répertoire courant)'),
6
- depth: z.number().min(1).max(8).default(3).describe("Profondeur de l'arborescence (défaut: 3)"),
7
- includeStats: z.boolean().default(true).describe('Inclure les statistiques (défaut: true)'),
8
- });
9
- const IGNORED = new Set([
10
- 'node_modules',
11
- '.git',
12
- '.github',
13
- 'dist',
14
- '.next',
15
- 'build',
16
- 'coverage',
17
- '__pycache__',
18
- '.cache',
19
- '.turbo',
20
- '.pnpm-store',
21
- ]);
22
- const CONFIG_FILES = [
23
- 'package.json',
24
- 'tsconfig.json',
25
- 'tsconfig.base.json',
26
- '.env.example',
27
- 'vite.config.ts',
28
- 'vite.config.js',
29
- 'vitest.config.ts',
30
- 'eslint.config.js',
31
- '.eslintrc.json',
32
- 'prettier.config.js',
33
- '.prettierrc',
34
- 'Dockerfile',
35
- 'docker-compose.yml',
36
- ];
37
- const LANG_MAP = {
38
- '.ts': 'TypeScript',
39
- '.tsx': 'TypeScript (JSX)',
40
- '.js': 'JavaScript',
41
- '.jsx': 'JavaScript (JSX)',
42
- '.py': 'Python',
43
- '.go': 'Go',
44
- '.rs': 'Rust',
45
- '.java': 'Java',
46
- '.cs': 'C#',
47
- '.cpp': 'C++',
48
- '.c': 'C',
49
- '.md': 'Markdown',
50
- '.json': 'JSON',
51
- '.yaml': 'YAML',
52
- '.yml': 'YAML',
53
- '.toml': 'TOML',
54
- '.sh': 'Shell',
55
- '.bat': 'Batch',
56
- '.sql': 'SQL',
57
- '.html': 'HTML',
58
- '.css': 'CSS',
59
- '.scss': 'SCSS',
60
- };
61
- async function buildTree(dir, depth, currentDepth = 0) {
62
- if (currentDepth >= depth)
63
- return [];
64
- let entries;
65
- try {
66
- entries = await readdir(dir, { withFileTypes: true });
67
- }
68
- catch {
69
- return [];
70
- }
71
- const nodes = [];
72
- for (const entry of entries) {
73
- if (IGNORED.has(entry.name) || (entry.name.startsWith('.') && entry.name !== '.env.example'))
74
- continue;
75
- if (entry.isDirectory()) {
76
- const children = await buildTree(join(dir, entry.name), depth, currentDepth + 1);
77
- nodes.push({ name: entry.name, type: 'dir', children });
78
- }
79
- else {
80
- nodes.push({ name: entry.name, type: 'file' });
81
- }
82
- }
83
- return nodes.sort((a, b) => {
84
- if (a.type !== b.type)
85
- return a.type === 'dir' ? -1 : 1;
86
- return a.name.localeCompare(b.name);
87
- });
88
- }
89
- function renderTree(nodes, prefix = '') {
90
- let out = '';
91
- for (let i = 0; i < nodes.length; i++) {
92
- const node = nodes[i];
93
- const isLast = i === nodes.length - 1;
94
- const connector = isLast ? '└── ' : '├── ';
95
- const icon = node.type === 'dir' ? '📁 ' : '📄 ';
96
- out += `${prefix}${connector}${icon}${node.name}\n`;
97
- if (node.children?.length) {
98
- out += renderTree(node.children, prefix + (isLast ? ' ' : '│ '));
99
- }
100
- }
101
- return out;
102
- }
103
- async function collectStats(dir) {
104
- const stats = { totalFiles: 0, totalLines: 0, languages: {}, filePaths: [] };
105
- async function walk(d) {
106
- let entries;
107
- try {
108
- entries = await readdir(d, { withFileTypes: true });
109
- }
110
- catch {
111
- return;
112
- }
113
- for (const entry of entries) {
114
- if (IGNORED.has(entry.name))
115
- continue;
116
- const fullPath = join(d, entry.name);
117
- if (entry.isDirectory()) {
118
- await walk(fullPath);
119
- }
120
- else {
121
- const ext = extname(entry.name).toLowerCase();
122
- const lang = LANG_MAP[ext];
123
- if (lang) {
124
- stats.totalFiles++;
125
- stats.languages[lang] = (stats.languages[lang] ?? 0) + 1;
126
- // Store relative path from project root
127
- stats.filePaths.push(fullPath.slice(dir.length + 1).replace(/\\/g, '/'));
128
- try {
129
- const content = await readFile(fullPath, 'utf8');
130
- stats.totalLines += content.split('\n').length;
131
- }
132
- catch {
133
- // skip unreadable files
134
- }
135
- }
136
- }
137
- }
138
- }
139
- await walk(dir);
140
- stats.filePaths.sort();
141
- return stats;
142
- }
143
- async function getConfigs(dir) {
144
- const result = {};
145
- for (const file of CONFIG_FILES) {
146
- try {
147
- const filePath = join(dir, file);
148
- const s = await stat(filePath);
149
- if (s.size > 1024 * 1024) {
150
- result[file] = '[FILE TOO LARGE >1MB — skipped]';
151
- continue;
152
- }
153
- const content = await readFile(filePath, 'utf8');
154
- result[file] = content.length > 2000 ? content.slice(0, 2000) + '\n…(tronqué)' : content;
155
- }
156
- catch {
157
- // file absent
158
- }
159
- }
160
- return result;
161
- }
162
- function withinRoot(candidate, root) {
163
- // Normalize: add trailing sep so /foo doesn't match /foobar
164
- const norm = (s) => {
165
- const withSep = s.endsWith(sep) ? s : s + sep;
166
- // Case-insensitive on Windows
167
- return process.platform === 'win32' ? withSep.toLowerCase() : withSep;
168
- };
169
- return norm(candidate).startsWith(norm(root));
170
- }
171
- async function resolveAbsPath(p) {
172
- const cwd = await realpath(process.cwd());
173
- if (!p || p === '.')
174
- return cwd;
175
- // Pre-check before stat (catches obvious traversal early)
176
- const candidate = resolve(cwd, p);
177
- if (!withinRoot(candidate, cwd)) {
178
- throw new Error(`Chemin refusé : "${p}" est en dehors du répertoire de travail. Utilisez un chemin relatif.`);
179
- }
180
- let real;
181
- try {
182
- const s = await stat(candidate);
183
- if (!s.isDirectory())
184
- throw new Error(`"${p}" n'est pas un répertoire.`);
185
- // Resolve symlinks and re-check — prevents symlink escape on Linux/Mac
186
- real = await realpath(candidate);
187
- }
188
- catch (e) {
189
- if (e instanceof Error && (e.message.startsWith('Chemin refusé') || e.message.startsWith('"')))
190
- throw e;
191
- throw new Error(`Répertoire introuvable : "${p}"`);
192
- }
193
- if (!withinRoot(real, cwd)) {
194
- throw new Error(`Chemin refusé : "${p}" pointe (via symlink) en dehors du répertoire de travail.`);
195
- }
196
- return real;
197
- }
198
- export async function metadataTool(args) {
199
- const { path: rawPath, depth, includeStats } = args;
200
- let absPath;
201
- try {
202
- absPath = await resolveAbsPath(rawPath);
203
- }
204
- catch (e) {
205
- return {
206
- isError: true,
207
- content: [
208
- { type: 'text', text: `❌ ${e instanceof Error ? e.message : String(e)}` },
209
- ],
210
- };
211
- }
212
- const projectName = basename(absPath);
213
- let output = `# 🗂️ Metadata — \`${projectName}\`\n\n`;
214
- output += `> **Chemin :** \`${absPath}\`\n\n`;
215
- // Arborescence
216
- const tree = await buildTree(absPath, depth);
217
- output += `## 📁 Arborescence (profondeur ${depth})\n\`\`\`\n${projectName}/\n${renderTree(tree)}\`\`\`\n\n`;
218
- // Configs
219
- const configs = await getConfigs(absPath);
220
- if (Object.keys(configs).length > 0) {
221
- output += `## ⚙️ Fichiers de configuration\n`;
222
- for (const [file, content] of Object.entries(configs)) {
223
- const ext = file.endsWith('.json') ? 'json' : file.endsWith('.md') ? 'markdown' : 'yaml';
224
- output += `### \`${file}\`\n\`\`\`${ext}\n${content}\n\`\`\`\n\n`;
225
- }
226
- }
227
- // Stats
228
- if (includeStats) {
229
- const stats = await collectStats(absPath);
230
- output += `## 📊 Statistiques\n`;
231
- output += `- **Fichiers sources :** ${stats.totalFiles}\n`;
232
- output += `- **Lignes totales :** ${stats.totalLines.toLocaleString()}\n`;
233
- output += `- **Langages :**\n`;
234
- const sorted = Object.entries(stats.languages).sort((a, b) => b[1] - a[1]);
235
- for (const [lang, count] of sorted) {
236
- output += ` - ${lang}: ${count} fichier${count > 1 ? 's' : ''}\n`;
237
- }
238
- output += `\n## 📋 Fichiers sources (${stats.totalFiles})\n\`\`\`\n`;
239
- output += stats.filePaths.join('\n');
240
- output += `\n\`\`\`\n`;
241
- }
242
- return {
243
- content: [{ type: 'text', text: output }],
244
- };
245
- }
246
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"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"}