overmind-mcp 2.4.0 → 2.4.1

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 (154) hide show
  1. package/README.md +80 -107
  2. package/assets/overmind_mcp_pro_banner_v3.png +0 -0
  3. package/dist/bin/cli.js +7 -438
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/config.d.ts +1 -31
  10. package/dist/lib/config.d.ts.map +1 -1
  11. package/dist/lib/config.js +27 -19
  12. package/dist/lib/config.js.map +1 -1
  13. package/dist/lib/sessions.d.ts +2 -3
  14. package/dist/lib/sessions.d.ts.map +1 -1
  15. package/dist/lib/sessions.js +25 -94
  16. package/dist/lib/sessions.js.map +1 -1
  17. package/dist/memory/MemoryFactory.d.ts +1 -15
  18. package/dist/memory/MemoryFactory.d.ts.map +1 -1
  19. package/dist/memory/MemoryFactory.js +3 -53
  20. package/dist/memory/MemoryFactory.js.map +1 -1
  21. package/dist/memory/PostgresMemoryProvider.d.ts +0 -7
  22. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  23. package/dist/memory/PostgresMemoryProvider.js +105 -180
  24. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  25. package/dist/server.d.ts +0 -41
  26. package/dist/server.d.ts.map +1 -1
  27. package/dist/server.js +26 -152
  28. package/dist/server.js.map +1 -1
  29. package/dist/services/AgentManager.d.ts.map +1 -1
  30. package/dist/services/AgentManager.js +11 -67
  31. package/dist/services/AgentManager.js.map +1 -1
  32. package/dist/services/ClaudeRunner.d.ts +0 -8
  33. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  34. package/dist/services/ClaudeRunner.js +213 -514
  35. package/dist/services/ClaudeRunner.js.map +1 -1
  36. package/dist/services/ClineRunner.d.ts +0 -7
  37. package/dist/services/ClineRunner.d.ts.map +1 -1
  38. package/dist/services/ClineRunner.js +11 -80
  39. package/dist/services/ClineRunner.js.map +1 -1
  40. package/dist/services/GeminiRunner.d.ts +0 -6
  41. package/dist/services/GeminiRunner.d.ts.map +1 -1
  42. package/dist/services/GeminiRunner.js +58 -285
  43. package/dist/services/GeminiRunner.js.map +1 -1
  44. package/dist/services/KiloRunner.d.ts +0 -12
  45. package/dist/services/KiloRunner.d.ts.map +1 -1
  46. package/dist/services/KiloRunner.js +57 -441
  47. package/dist/services/KiloRunner.js.map +1 -1
  48. package/dist/services/OpenClawRunner.d.ts +0 -7
  49. package/dist/services/OpenClawRunner.d.ts.map +1 -1
  50. package/dist/services/OpenClawRunner.js +11 -79
  51. package/dist/services/OpenClawRunner.js.map +1 -1
  52. package/dist/services/OpenCodeRunner.d.ts +0 -7
  53. package/dist/services/OpenCodeRunner.d.ts.map +1 -1
  54. package/dist/services/OpenCodeRunner.js +11 -79
  55. package/dist/services/OpenCodeRunner.js.map +1 -1
  56. package/dist/services/QwenRunner.d.ts +19 -0
  57. package/dist/services/QwenRunner.d.ts.map +1 -0
  58. package/dist/services/QwenRunner.js +87 -0
  59. package/dist/services/QwenRunner.js.map +1 -0
  60. package/dist/services/TraeRunner.d.ts +19 -0
  61. package/dist/services/TraeRunner.d.ts.map +1 -0
  62. package/dist/services/TraeRunner.js +88 -0
  63. package/dist/services/TraeRunner.js.map +1 -0
  64. package/dist/tools/config_example.d.ts +4 -7
  65. package/dist/tools/config_example.d.ts.map +1 -1
  66. package/dist/tools/config_example.js +86 -191
  67. package/dist/tools/config_example.js.map +1 -1
  68. package/dist/tools/create_agent.d.ts +9 -15
  69. package/dist/tools/create_agent.d.ts.map +1 -1
  70. package/dist/tools/create_agent.js +9 -8
  71. package/dist/tools/create_agent.js.map +1 -1
  72. package/dist/tools/get_agent_configs.d.ts +4 -10
  73. package/dist/tools/get_agent_configs.d.ts.map +1 -1
  74. package/dist/tools/get_agent_configs.js.map +1 -1
  75. package/dist/tools/manage_agents.d.ts +18 -36
  76. package/dist/tools/manage_agents.d.ts.map +1 -1
  77. package/dist/tools/manage_agents.js +2 -2
  78. package/dist/tools/manage_agents.js.map +1 -1
  79. package/dist/tools/manage_prompts.d.ts +8 -13
  80. package/dist/tools/manage_prompts.d.ts.map +1 -1
  81. package/dist/tools/manage_prompts.js.map +1 -1
  82. package/dist/tools/memory_runs.d.ts +4 -3
  83. package/dist/tools/memory_runs.d.ts.map +1 -1
  84. package/dist/tools/memory_runs.js.map +1 -1
  85. package/dist/tools/memory_search.d.ts +4 -3
  86. package/dist/tools/memory_search.d.ts.map +1 -1
  87. package/dist/tools/memory_search.js.map +1 -1
  88. package/dist/tools/memory_store.d.ts +5 -11
  89. package/dist/tools/memory_store.d.ts.map +1 -1
  90. package/dist/tools/memory_store.js.map +1 -1
  91. package/dist/tools/run_agent.d.ts +16 -15
  92. package/dist/tools/run_agent.d.ts.map +1 -1
  93. package/dist/tools/run_agent.js +160 -128
  94. package/dist/tools/run_agent.js.map +1 -1
  95. package/dist/tools/run_claude.d.ts +3 -8
  96. package/dist/tools/run_claude.d.ts.map +1 -1
  97. package/dist/tools/run_claude.js +41 -59
  98. package/dist/tools/run_claude.js.map +1 -1
  99. package/dist/tools/run_cline.d.ts +4 -13
  100. package/dist/tools/run_cline.d.ts.map +1 -1
  101. package/dist/tools/run_cline.js +43 -55
  102. package/dist/tools/run_cline.js.map +1 -1
  103. package/dist/tools/run_gemini.d.ts +4 -13
  104. package/dist/tools/run_gemini.d.ts.map +1 -1
  105. package/dist/tools/run_gemini.js +33 -53
  106. package/dist/tools/run_gemini.js.map +1 -1
  107. package/dist/tools/run_kilo.d.ts +7 -17
  108. package/dist/tools/run_kilo.d.ts.map +1 -1
  109. package/dist/tools/run_kilo.js +41 -68
  110. package/dist/tools/run_kilo.js.map +1 -1
  111. package/dist/tools/run_openclaw.d.ts +4 -13
  112. package/dist/tools/run_openclaw.d.ts.map +1 -1
  113. package/dist/tools/run_openclaw.js +44 -52
  114. package/dist/tools/run_openclaw.js.map +1 -1
  115. package/dist/tools/run_opencode.d.ts +4 -13
  116. package/dist/tools/run_opencode.d.ts.map +1 -1
  117. package/dist/tools/run_opencode.js +39 -52
  118. package/dist/tools/run_opencode.js.map +1 -1
  119. package/dist/tools/run_qwen.d.ts +15 -0
  120. package/dist/tools/run_qwen.d.ts.map +1 -0
  121. package/dist/tools/run_qwen.js +61 -0
  122. package/dist/tools/run_qwen.js.map +1 -0
  123. package/dist/tools/run_trae.d.ts +15 -0
  124. package/dist/tools/run_trae.d.ts.map +1 -0
  125. package/dist/tools/run_trae.js +66 -0
  126. package/dist/tools/run_trae.js.map +1 -0
  127. package/dist/tools/shell_execute.d.ts +10 -0
  128. package/dist/tools/shell_execute.d.ts.map +1 -0
  129. package/dist/tools/shell_execute.js +24 -0
  130. package/dist/tools/shell_execute.js.map +1 -0
  131. package/package.json +25 -55
  132. package/.mcp.json.example +0 -21
  133. package/assets/overmind.png +0 -0
  134. package/bin/.gitkeep +0 -0
  135. package/bin/README.md +0 -34
  136. package/bin/install-overmind-unix.sh +0 -412
  137. package/bin/install-overmind-windows.bat +0 -407
  138. package/docs/README.md +0 -128
  139. package/docs/agent_control.md +0 -656
  140. package/docs/index.html +0 -493
  141. package/docs/library.html +0 -239
  142. package/docs/prompt.html +0 -1212
  143. package/docs/script.js +0 -428
  144. package/docs/styles.css +0 -2816
  145. package/scripts/auto-changelog.mjs +0 -132
  146. package/scripts/auto-install.mjs +0 -322
  147. package/scripts/install-dependencies.mjs +0 -462
  148. package/scripts/postgres-manager.mjs +0 -219
  149. package/scripts/postinstall.mjs +0 -538
  150. package/scripts/setup-overmind-db.mjs +0 -199
  151. package/scripts/setup-windows.js +0 -266
  152. package/scripts/setup.mjs +0 -397
  153. package/scripts/test-installation.mjs +0 -158
  154. package/scripts/uninstall.mjs +0 -238
@@ -1,462 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * ═══════════════════════════════════════════════════════════════════════════════
4
- * INSTALL-DEPENDENCIES SCRIPT (SIMPLIFIÉ)
5
- * ═══════════════════════════════════════════════════════════════════════════════
6
- * Script cross-platform qui détecte et installe uniquement ce qui manque :
7
- * - Docker Desktop / Docker Engine
8
- * - PostgreSQL + pgvector (uniquement)
9
- *
10
- * Supporte: Windows (Docker Desktop), Linux (Docker Engine), macOS (Docker Desktop)
11
- * ═══════════════════════════════════════════════════════════════════════════════
12
- */
13
-
14
- import { execSync, spawn } from 'child_process';
15
- import { existsSync } from 'fs';
16
- import { join } from 'path';
17
- import { fileURLToPath } from 'url';
18
- import { dirname } from 'path';
19
- import { createInterface } from 'readline';
20
-
21
- const __filename = fileURLToPath(import.meta.url);
22
- const __dirname = dirname(__filename);
23
-
24
- // ═══════════════════════════════════════════════════════════════════════════════
25
- // UTILS
26
- // ═══════════════════════════════════════════════════════════════════════════════
27
-
28
- function logSection(title) {
29
- console.log('\n╔══════════════════════════════════════════════════════════════════╗');
30
- console.log(`║ ${title.padEnd(64)} ║`);
31
- console.log('╚══════════════════════════════════════════════════════════════════╝');
32
- }
33
-
34
- function runCommand(cmd, options = {}) {
35
- try {
36
- return execSync(cmd, { stdio: 'pipe', encoding: 'utf8', ...options });
37
- } catch {
38
- return null;
39
- }
40
- }
41
-
42
- function runCommandAsync(cmd, description) {
43
- return new Promise((resolve, reject) => {
44
- console.log(`🔧 ${description}`);
45
- console.log(` $ ${cmd}`);
46
-
47
- const child = spawn(cmd, { shell: true, stdio: 'inherit' });
48
-
49
- child.on('close', (code) => {
50
- if (code === 0) {
51
- console.log(`✅ ${description} terminé`);
52
- resolve(true);
53
- } else {
54
- console.error(`❌ Erreur (code ${code})`);
55
- reject(new Error(`Command failed with code ${code}`));
56
- }
57
- });
58
-
59
- child.on('error', (err) => {
60
- console.error('❌ Erreur:', err.message);
61
- reject(err);
62
- });
63
- });
64
- }
65
-
66
- function promptYesNo(question) {
67
- const rl = createInterface({
68
- input: process.stdin,
69
- output: process.stdout,
70
- });
71
-
72
- return new Promise((resolve) => {
73
- rl.question(`${question} (y/N): `, (answer) => {
74
- rl.close();
75
- resolve(answer.toLowerCase().startsWith('y'));
76
- });
77
- });
78
- }
79
-
80
- function openUrl(url) {
81
- const platform = process.platform;
82
-
83
- if (platform === 'win32') {
84
- runCommand(`start ${url}`, { stdio: 'ignore' });
85
- } else if (platform === 'darwin') {
86
- runCommand(`open ${url}`, { stdio: 'ignore' });
87
- } else {
88
- runCommand(`xdg-open ${url}`, { stdio: 'ignore' });
89
- }
90
- }
91
-
92
- // ═══════════════════════════════════════════════════════════════════════════════
93
- // DOCKER DETECTION
94
- // ═══════════════════════════════════════════════════════════════════════════════
95
-
96
- async function checkDocker() {
97
- logSection('VÉRIFICATION DOCKER');
98
-
99
- // Check if Docker is installed
100
- const version = runCommand('docker --version');
101
- if (!version) {
102
- console.log('❌ Docker non trouvé');
103
- return null;
104
- }
105
-
106
- console.log('✅ Docker détecté:', version.trim());
107
-
108
- // Detect Docker Desktop vs Docker Engine
109
- const platform = process.platform;
110
-
111
- if (platform === 'win32' || platform === 'darwin') {
112
- // Windows/macOS: Check Docker Desktop
113
- const desktopStatus = runCommand('docker info --format "{{.OperatingSystem}}"');
114
- if (desktopStatus?.includes('Docker Desktop')) {
115
- console.log('✅ Docker Desktop détecté');
116
- return { type: 'desktop', platform };
117
- }
118
- } else if (platform === 'linux') {
119
- // Linux: Docker Engine
120
- console.log('✅ Docker Engine (Linux) détecté');
121
- return { type: 'engine', platform };
122
- }
123
-
124
- return { type: 'unknown', platform };
125
- }
126
-
127
- async function installDockerIfNeeded() {
128
- const dockerInfo = await checkDocker();
129
-
130
- if (dockerInfo) {
131
- return dockerInfo;
132
- }
133
-
134
- console.log('');
135
- console.log('📥 Installation Docker requise:');
136
- console.log(' • Windows: Docker Desktop for Windows');
137
- console.log(' • macOS: Docker Desktop for Mac');
138
- console.log(' • Linux: Docker Engine (apt/yum/dnf)');
139
- console.log('');
140
-
141
- const answer = await promptYesNo('Voulez-vous ouvrir le site de téléchargement ?');
142
- if (answer) {
143
- const url = 'https://www.docker.com/products/docker-desktop/';
144
- openUrl(url);
145
- console.log('✅ Navigateur ouvert. Installez Docker, puis relancez ce script.');
146
- }
147
-
148
- return null;
149
- }
150
-
151
- // ═══════════════════════════════════════════════════════════════════════════════
152
- // POSTGRESQL + PGVECTOR DETECTION & INSTALLATION
153
- // ═══════════════════════════════════════════════════════════════════════════════
154
-
155
- async function detectExistingPostgreSQL() {
156
- logSection('DÉTECTION POSTGRESQL EXISTANT');
157
-
158
- // 1. Check native PostgreSQL (psql command)
159
- const nativePg = runCommand('psql --version');
160
- if (nativePg) {
161
- console.log('✅ PostgreSQL natif détecté:', nativePg.trim());
162
-
163
- // Check if pgvector is installed
164
- const pgvectorCheck = runCommand('psql -U postgres -t -c "SELECT extname FROM pg_extension WHERE extname = \'vector\';"');
165
- if (pgvectorCheck?.includes('vector')) {
166
- console.log('✅ pgvector est installé');
167
- return { type: 'native', hasPgvector: true };
168
- } else {
169
- console.log('⚠️ pgvector NON installé (installation manuelle requise)');
170
- return { type: 'native', hasPgvector: false };
171
- }
172
- }
173
-
174
- // 2. Check Docker containers with pgvector (multiple detection methods)
175
- console.log('🔍 Recherche containers PostgreSQL avec pgvector...');
176
-
177
- // Method A: Check by image name (pgvector/pgvector)
178
- let containers = runCommand('docker ps --filter "ancestor=pgvector/pgvector" --format "{{.Names}}"', {
179
- stdio: 'pipe'
180
- });
181
-
182
- // Method B: Check all containers with "pgvector" or "postgres" in name
183
- if (!containers) {
184
- containers = runCommand('docker ps --format "{{.Names}}" | grep -E "(pgvector|postgres)"', {
185
- stdio: 'pipe',
186
- shell: true
187
- });
188
- }
189
-
190
- if (containers) {
191
- const containerList = containers.trim().split('\n').filter(Boolean);
192
- console.log(`✅ ${containerList.length} container(s) PostgreSQL détecté(s):`);
193
- containerList.forEach(name => console.log(` • ${name}`));
194
-
195
- // Check each container for pgvector
196
- for (const container of containerList) {
197
- try {
198
- const pgvectorCheck = runCommand(
199
- `docker exec ${container} psql -U postgres -t -c "SELECT extname FROM pg_extension WHERE extname = 'vector';" 2>&1`,
200
- { stdio: 'pipe' }
201
- );
202
-
203
- if (pgvectorCheck?.includes('vector')) {
204
- console.log(`✅ pgvector actif dans ${container}`);
205
- return { type: 'docker', container, hasPgvector: true };
206
- }
207
- } catch {
208
- // Container might not be accessible, try next
209
- }
210
- }
211
-
212
- console.log('⚠️ Containers trouvés mais SANS pgvector installé');
213
- }
214
-
215
- // 3. Check for any PostgreSQL container (might not have pgvector)
216
- const allContainers = runCommand('docker ps --format "{{.Names}}"', {
217
- stdio: 'pipe'
218
- });
219
-
220
- if (allContainers) {
221
- const pgContainers = allContainers
222
- .trim()
223
- .split('\n')
224
- .filter(name => name.toLowerCase().includes('postgres') || name.toLowerCase().includes('pgvector'));
225
-
226
- if (pgContainers.length > 0) {
227
- console.log(`⚠️ ${pgContainers.length} container(s) PostgreSQL détecté(s) SANS pgvector:`);
228
- pgContainers.forEach(name => console.log(` • ${name}`));
229
- console.log('');
230
- console.log('💡 Le script va créer un nouveau container dédié.');
231
- }
232
- }
233
-
234
- if (genericContainers) {
235
- const containerList = genericContainers.trim().split('\n').filter(Boolean);
236
- console.log(`⚠️ ${containerList.length} container(s) PostgreSQL détecté(s) SANS pgvector:`);
237
- containerList.forEach(name => console.log(` • ${name}`));
238
- console.log('');
239
- console.log('💡 Ces containers n\'ont PAS pgvector. Le script va créer un nouveau container dédié.');
240
- }
241
-
242
- return null;
243
- }
244
-
245
- async function waitForPostgreSQL(containerName, maxWait = 60) {
246
- console.log(`⏳ Attente démarrage PostgreSQL (max ${maxWait}s)...`);
247
-
248
- for (let i = 0; i < maxWait; i++) {
249
- try {
250
- execSync(
251
- `docker exec ${containerName} pg_isready -U postgres`,
252
- { stdio: 'pipe', encoding: 'utf8' }
253
- );
254
- console.log('✅ PostgreSQL prêt !');
255
- return true;
256
- } catch {
257
- process.stdout.write('.');
258
- await new Promise(resolve => setTimeout(resolve, 1000));
259
- }
260
- }
261
-
262
- console.log('');
263
- console.log('❌ Timeout: PostgreSQL n\'a pas démarré à temps');
264
- return false;
265
- }
266
-
267
- async function installPostgreSQLDocker() {
268
- logSection('INSTALLATION POSTGRESQL + PGVECTOR (DOCKER)');
269
-
270
- const containerName = 'overmind-postgres-pgvector';
271
-
272
- try {
273
- // Pull image
274
- console.log('📥 Téléchargement image pgvector/pgvector:pg16...');
275
- await runCommandAsync(
276
- 'docker pull pgvector/pgvector:pg16',
277
- 'Téléchargement image'
278
- );
279
-
280
- // Remove existing container if present
281
- try {
282
- execSync(`docker inspect ${containerName}`, { stdio: 'pipe' });
283
- console.log(`⚠️ Container ${containerName} existe déjà. Suppression...`);
284
- execSync(`docker rm -f ${containerName}`, { stdio: 'pipe' });
285
- } catch {
286
- // Container doesn't exist, that's fine
287
- }
288
-
289
- // Create volume if doesn't exist
290
- try {
291
- execSync('docker volume create overmind_postgres_data', { stdio: 'pipe' });
292
- } catch {
293
- // Volume might already exist
294
- }
295
-
296
- // Run container
297
- console.log('🚀 Démarrage container PostgreSQL...');
298
- const runCommand = [
299
- 'docker', 'run', '-d',
300
- '--name', containerName,
301
- '-p', '5432:5432',
302
- '-e', 'POSTGRES_PASSWORD=overmind_temp_password_change_me',
303
- '-e', 'POSTGRES_USER=postgres',
304
- '-v', 'overmind_postgres_data:/var/lib/postgresql/data',
305
- '--restart', 'unless-stopped',
306
- 'pgvector/pgvector:pg16'
307
- ].join(' ');
308
-
309
- await runCommandAsync(runCommand, 'Démarrage PostgreSQL');
310
-
311
- // Wait for PostgreSQL to be ready
312
- const ready = await waitForPostgreSQL(containerName);
313
- if (!ready) {
314
- throw new Error('PostgreSQL n\'a pas démarré');
315
- }
316
-
317
- // Test connection
318
- console.log('🔍 Test connexion PostgreSQL...');
319
- await runCommandAsync(
320
- `docker exec ${containerName} psql -U postgres -c "SELECT version();"`,
321
- 'Test connexion'
322
- );
323
-
324
- // Enable pgvector
325
- console.log('🔧 Activation extension pgvector...');
326
- await runCommandAsync(
327
- `docker exec ${containerName} psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"`,
328
- 'Activation pgvector'
329
- );
330
-
331
- // Verify pgvector
332
- console.log('✅ Vérification pgvector...');
333
- const result = runCommand(
334
- `docker exec ${containerName} psql -U postgres -t -c "SELECT extname FROM pg_extension WHERE extname = 'vector';"`,
335
- { encoding: 'utf8', stdio: 'pipe' }
336
- ).trim();
337
-
338
- if (result.includes('vector')) {
339
- console.log('✅ pgvector installé avec succès !');
340
- } else {
341
- throw new Error('pgvector non trouvé');
342
- }
343
-
344
- console.log('');
345
- console.log('🎉 PostgreSQL + pgvector installés !');
346
- console.log('');
347
- console.log('📋 Détails:');
348
- console.log(` Container: ${containerName}`);
349
- console.log(' Port: 5432');
350
- console.log(' User: postgres');
351
- console.log(' Password: overmind_temp_password_change_me (À CHANGER !)');
352
- console.log(' Extension: vector (pgvector)');
353
-
354
- return { type: 'docker', container: containerName, hasPgvector: true };
355
-
356
- } catch (error) {
357
- console.error('❌ Erreur installation PostgreSQL:', error.message);
358
- console.error('');
359
- console.log('💡 Solution manuelle:');
360
- console.log(` docker run -d --name ${containerName} \\`);
361
- console.log(' -p 5432:5432 \\');
362
- console.log(' -e POSTGRES_PASSWORD=votre_pass \\');
363
- console.log(' -e POSTGRES_USER=postgres \\');
364
- console.log(' -v overmind_postgres_data:/var/lib/postgresql/data \\');
365
- console.log(' --restart unless-stopped \\');
366
- console.log(' pgvector/pgvector:pg16');
367
- console.log('');
368
- console.log('Ou en une ligne (Windows):');
369
- console.log(` docker run -d --name ${containerName} -p 5432:5432 -e POSTGRES_PASSWORD=votre_pass -e POSTGRES_USER=postgres -v overmind_postgres_data:/var/lib/postgresql/data --restart unless-stopped pgvector/pgvector:pg16`);
370
- return null;
371
- }
372
- }
373
-
374
- // ═══════════════════════════════════════════════════════════════════════════════
375
- // MAIN
376
- // ═══════════════════════════════════════════════════════════════════════════════
377
-
378
- async function main() {
379
- console.log('╔══════════════════════════════════════════════════════════════════╗');
380
- console.log('║ ║');
381
- console.log('║ 🗄️️ INSTALLATION POSTGRESQL + PGVECTOR ║');
382
- console.log('║ Détection & Installation Automatique ║');
383
- console.log('║ ║');
384
- console.log('╚══════════════════════════════════════════════════════════════════╝');
385
- console.log('');
386
-
387
- // Step 1: Check/Install Docker
388
- const dockerInfo = await installDockerIfNeeded();
389
- if (!dockerInfo) {
390
- console.log('\n⚠️ Relancez ce script après avoir installé Docker.');
391
- process.exit(1);
392
- }
393
-
394
- console.log('');
395
- console.log(`📊 Plateforme: ${dockerInfo.type} (${dockerInfo.platform})`);
396
- console.log('');
397
-
398
- // Step 2: Detect existing PostgreSQL
399
- const existingPg = await detectExistingPostgreSQL();
400
-
401
- if (existingPg && existingPg.hasPgvector) {
402
- console.log('');
403
- console.log('✅ PostgreSQL + pgvector sont déjà installés !');
404
-
405
- if (existingPg.type === 'docker') {
406
- console.log(` Container: ${existingPg.container}`);
407
- console.log(' Port: 5432');
408
- console.log(' User: postgres');
409
- console.log(' Extension: vector (pgvector)');
410
- } else if (existingPg.type === 'native') {
411
- console.log(' Installation native détectée');
412
- console.log(' Extension: vector (pgvector)');
413
- }
414
-
415
- console.log('');
416
- console.log('🎉 Rien à installer !');
417
-
418
- return;
419
- }
420
-
421
- // Step 3: Install PostgreSQL + pgvector
422
- console.log('');
423
- console.log('📦 Installation de PostgreSQL + pgvector requise...');
424
-
425
- const installResult = await installPostgreSQLDocker();
426
- if (!installResult) {
427
- console.log('\n⚠️ Installation échouée. Vérifiez les erreurs ci-dessus.');
428
- process.exit(1);
429
- }
430
-
431
- // Success
432
- logSection('✅ INSTALLATION TERMINÉE');
433
-
434
- console.log(`
435
- 🎉 PostgreSQL + pgvector sont prêts !
436
-
437
- 📋 PROCHAINE ÉTAPE:
438
- → Relancez: overmind-setup
439
- Ou manuellement: npm install -g overmind-mcp
440
-
441
- 💡 RAPPEL:
442
- • Container: ${installResult.container}
443
- • Port: 5432
444
- • User: postgres
445
- • Password: overmind_temp_password_change_me (CHANGEZ-LE !)
446
- • Extension: vector (pgvector)
447
-
448
- ═════════════════════════════════════════════════════════════════════
449
- `);
450
- }
451
-
452
- // Run main
453
- // Check if this file is being run directly (not imported)
454
- const modulePath = fileURLToPath(import.meta.url);
455
- const isMainModule = process.argv[1] === modulePath;
456
-
457
- if (isMainModule) {
458
- main().catch((error) => {
459
- console.error('\n❌ ERREUR FATALE:', error.message);
460
- process.exit(1);
461
- });
462
- }
@@ -1,219 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * ═══════════════════════════════════════════════════════════════════════════════
4
- * POSTGRES-MANAGER - Gestion PostgreSQL OverMind
5
- * ═══════════════════════════════════════════════════════════════════════════════
6
- * Script simplifié pour gérer PostgreSQL + pgvector OverMind
7
- *
8
- * Usage:
9
- * overmind-postgres up Démarrer PostgreSQL
10
- * overmind-postgres down Arrêter PostgreSQL
11
- * overmind-postgres status Vérifier l'état
12
- * overmind-postgres logs Voir les logs
13
- * overmind-postgres reset Réinitialiser (⚠️ supprime les données)
14
- * ═══════════════════════════════════════════════════════════════════════════════
15
- */
16
-
17
- import { execSync } from 'child_process';
18
- import { existsSync } from 'fs';
19
- import { join } from 'path';
20
- import { fileURLToPath } from 'url';
21
- import { dirname } from 'path';
22
-
23
- const __filename = fileURLToPath(import.meta.url);
24
- const __dirname = dirname(__filename);
25
-
26
- const PROJECT_ROOT = join(__dirname, '..');
27
- const COMPOSE_FILE = join(PROJECT_ROOT, 'docker-compose.yml');
28
-
29
- // ═══════════════════════════════════════════════════════════════════════════════
30
- // UTILS
31
- // ═══════════════════════════════════════════════════════════════════════════════
32
-
33
- function logSection(title) {
34
- console.log('\n╔══════════════════════════════════════════════════════════════════╗');
35
- console.log(`║ ${title.padEnd(64)} ║`);
36
- console.log('╚══════════════════════════════════════════════════════════════════╝');
37
- }
38
-
39
- function runCommand(cmd, options = {}) {
40
- try {
41
- return execSync(cmd, { stdio: 'inherit', ...options });
42
- } catch (error) {
43
- return null;
44
- }
45
- }
46
-
47
- // ═══════════════════════════════════════════════════════════════════════════════
48
- // COMMANDS
49
- // ═══════════════════════════════════════════════════════════════════════════════
50
-
51
- function commandUp() {
52
- logSection('DÉMARRAGE POSTGRESQL OVERMIND');
53
-
54
- if (!existsSync(COMPOSE_FILE)) {
55
- console.error('❌ Fichier docker-compose.yml non trouvé');
56
- process.exit(1);
57
- }
58
-
59
- try {
60
- runCommand(`docker-compose -f "${COMPOSE_FILE}" up -d`);
61
- console.log('');
62
- console.log('✅ PostgreSQL + pgvector démarré avec succès !');
63
- console.log('');
64
- console.log('📊 Connexion:');
65
- console.log(' Host: localhost:5432');
66
- console.log(' Database: overmind_memory');
67
- console.log(' User: postgres');
68
- console.log(' Password: overmind_temp_password_change_me');
69
- console.log('');
70
- console.log('💪 Extensions: pgvector (4096D) activé');
71
- console.log('');
72
- } catch (error) {
73
- console.error('❌ Erreur démarrage PostgreSQL:', error.message);
74
- process.exit(1);
75
- }
76
- }
77
-
78
- function commandDown() {
79
- logSection('ARRÊT POSTGRESQL OVERMIND');
80
-
81
- if (!existsSync(COMPOSE_FILE)) {
82
- console.error('❌ Fichier docker-compose.yml non trouvé');
83
- process.exit(1);
84
- }
85
-
86
- try {
87
- runCommand(`docker-compose -f "${COMPOSE_FILE}" down`);
88
- console.log('');
89
- console.log('✅ PostgreSQL arrêté avec succès !');
90
- console.log('');
91
- console.log('💡 Les données sont conservées dans le volume Docker.');
92
- console.log('');
93
- } catch (error) {
94
- console.error('❌ Erreur arrêt PostgreSQL:', error.message);
95
- process.exit(1);
96
- }
97
- }
98
-
99
- function commandStatus() {
100
- logSection('ÉTAT POSTGRESQL OVERMIND');
101
-
102
- if (!existsSync(COMPOSE_FILE)) {
103
- console.error('❌ Fichier docker-compose.yml non trouvé');
104
- process.exit(1);
105
- }
106
-
107
- try {
108
- runCommand(`docker-compose -f "${COMPOSE_FILE}" ps`);
109
- } catch (error) {
110
- console.error('❌ Erreur vérification état:', error.message);
111
- process.exit(1);
112
- }
113
- }
114
-
115
- function commandLogs() {
116
- logSection('LOGS POSTGRESQL OVERMIND');
117
- console.log(' (Ctrl+C pour sortir)');
118
- console.log('');
119
-
120
- if (!existsSync(COMPOSE_FILE)) {
121
- console.error('❌ Fichier docker-compose.yml non trouvé');
122
- process.exit(1);
123
- }
124
-
125
- try {
126
- runCommand(`docker-compose -f "${COMPOSE_FILE}" logs -f`);
127
- } catch (error) {
128
- // Ignore Ctrl+C
129
- }
130
- }
131
-
132
- function commandReset() {
133
- logSection('RÉINITIALISATION POSTGRESQL OVERMIND');
134
- console.log('');
135
- console.log('⚠️ ATTENTION: Cette commande va SUPPRIMER TOUTES LES DONNÉES !');
136
- console.log('');
137
-
138
- const { confirm } = require('minimist')(process.argv.slice(2));
139
- if (!confirm) {
140
- console.log('❌ Annulé. Pour confirmer, utilisez: --confirm');
141
- console.log(' overmind-postgres reset --confirm');
142
- process.exit(0);
143
- }
144
-
145
- if (!existsSync(COMPOSE_FILE)) {
146
- console.error('❌ Fichier docker-compose.yml non trouvé');
147
- process.exit(1);
148
- }
149
-
150
- try {
151
- console.log('🛑 Arrêt PostgreSQL...');
152
- runCommand(`docker-compose -f "${COMPOSE_FILE}" down -v`);
153
-
154
- console.log('🗑️ Suppression du volume Docker...');
155
- runCommand('docker volume rm overmind-postgres-data', { stdio: 'inherit' });
156
-
157
- console.log('');
158
- console.log('✅ PostgreSQL réinitialisé avec succès !');
159
- console.log('');
160
- console.log('📊 Prochaine étape:');
161
- console.log(' overmind-postgres up');
162
- console.log('');
163
- } catch (error) {
164
- console.error('❌ Erreur réinitialisation:', error.message);
165
- process.exit(1);
166
- }
167
- }
168
-
169
- function showHelp() {
170
- console.log('╔══════════════════════════════════════════════════════════════════╗');
171
- console.log('║ POSTGRES-MANAGER: Gestion PostgreSQL OverMind ║');
172
- console.log('╠════════════════════════════════════════════════════════════════╣');
173
- console.log('║ Usage: ║');
174
- console.log('║ overmind-postgres up Démarrer PostgreSQL ║');
175
- console.log('║ overmind-postgres down Arrêter PostgreSQL ║');
176
- console.log('║ overmind-postgres status Verifier l\'etat ║');
177
- console.log('║ overmind-postgres logs Voir les logs en temps réel ║');
178
- console.log('║ overmind-postgres reset Réinitialiser (⚠️ données) ║');
179
- console.log('║ ║');
180
- console.log('║ Configuration: ║');
181
- console.log('║ Host: localhost:5432 ║');
182
- console.log('║ Database: overmind_memory ║');
183
- console.log('║ User: postgres ║');
184
- console.log('║ Extension: pgvector (4096D) ║');
185
- console.log('║ ║');
186
- console.log('║ Intégration OverMind: ║');
187
- console.log('║ • Agents stockés dans overmind_agents ║');
188
- console.log('║ • Mémoires vectorielles dans overmind_memories ║');
189
- console.log('║ • Sessions dans overmind_sessions ║');
190
- console.log('╚══════════════════════════════════════════════════════════════════╝');
191
- }
192
-
193
- // ═══════════════════════════════════════════════════════════════════════════════
194
- // MAIN
195
- // ═══════════════════════════════════════════════════════════════════════════════
196
-
197
- const command = process.argv[2] || 'help';
198
-
199
- switch (command) {
200
- case 'up':
201
- commandUp();
202
- break;
203
- case 'down':
204
- commandDown();
205
- break;
206
- case 'status':
207
- commandStatus();
208
- break;
209
- case 'logs':
210
- commandLogs();
211
- break;
212
- case 'reset':
213
- commandReset();
214
- break;
215
- case 'help':
216
- default:
217
- showHelp();
218
- break;
219
- }