overmind-mcp 2.5.0 → 2.5.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 (217) hide show
  1. package/.mcp.json.example +21 -0
  2. package/README.md +107 -80
  3. package/assets/overmind.png +0 -0
  4. package/bin/.gitkeep +0 -0
  5. package/bin/README.md +34 -0
  6. package/bin/install-overmind-unix.sh +412 -0
  7. package/bin/install-overmind-windows.bat +407 -0
  8. package/dist/bin/cli.js +438 -7
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/InstallHelper.d.ts +14 -0
  15. package/dist/lib/InstallHelper.d.ts.map +1 -0
  16. package/dist/lib/InstallHelper.js +113 -0
  17. package/dist/lib/InstallHelper.js.map +1 -0
  18. package/dist/lib/config.d.ts +31 -1
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +19 -27
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/envUtils.d.ts +10 -0
  23. package/dist/lib/envUtils.d.ts.map +1 -0
  24. package/dist/lib/envUtils.js +24 -0
  25. package/dist/lib/envUtils.js.map +1 -0
  26. package/dist/lib/loadEnv.d.ts +2 -0
  27. package/dist/lib/loadEnv.d.ts.map +1 -0
  28. package/dist/lib/loadEnv.js +26 -0
  29. package/dist/lib/loadEnv.js.map +1 -0
  30. package/dist/lib/logger.d.ts +8 -0
  31. package/dist/lib/logger.d.ts.map +1 -0
  32. package/dist/lib/logger.js +81 -0
  33. package/dist/lib/logger.js.map +1 -0
  34. package/dist/lib/modelMapping.d.ts +18 -0
  35. package/dist/lib/modelMapping.d.ts.map +1 -0
  36. package/dist/lib/modelMapping.js +90 -0
  37. package/dist/lib/modelMapping.js.map +1 -0
  38. package/dist/lib/orchestration/dispatcher.d.ts +32 -0
  39. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -0
  40. package/dist/lib/orchestration/dispatcher.js +113 -0
  41. package/dist/lib/orchestration/dispatcher.js.map +1 -0
  42. package/dist/lib/orchestration/swarm.d.ts +75 -0
  43. package/dist/lib/orchestration/swarm.d.ts.map +1 -0
  44. package/dist/lib/orchestration/swarm.js +238 -0
  45. package/dist/lib/orchestration/swarm.js.map +1 -0
  46. package/dist/lib/sessions.d.ts +3 -2
  47. package/dist/lib/sessions.d.ts.map +1 -1
  48. package/dist/lib/sessions.js +94 -25
  49. package/dist/lib/sessions.js.map +1 -1
  50. package/dist/lib/telemetry.d.ts +21 -0
  51. package/dist/lib/telemetry.d.ts.map +1 -0
  52. package/dist/lib/telemetry.js +30 -0
  53. package/dist/lib/telemetry.js.map +1 -0
  54. package/dist/memory/MemoryFactory.d.ts +15 -1
  55. package/dist/memory/MemoryFactory.d.ts.map +1 -1
  56. package/dist/memory/MemoryFactory.js +53 -3
  57. package/dist/memory/MemoryFactory.js.map +1 -1
  58. package/dist/memory/PostgresMemoryProvider.d.ts +7 -0
  59. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  60. package/dist/memory/PostgresMemoryProvider.js +180 -105
  61. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  62. package/dist/server.d.ts +41 -0
  63. package/dist/server.d.ts.map +1 -1
  64. package/dist/server.js +145 -41
  65. package/dist/server.js.map +1 -1
  66. package/dist/services/AgentManager.d.ts.map +1 -1
  67. package/dist/services/AgentManager.js +67 -11
  68. package/dist/services/AgentManager.js.map +1 -1
  69. package/dist/services/ClaudeRunner.d.ts +8 -0
  70. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  71. package/dist/services/ClaudeRunner.js +510 -281
  72. package/dist/services/ClaudeRunner.js.map +1 -1
  73. package/dist/services/ClineRunner.d.ts +7 -0
  74. package/dist/services/ClineRunner.d.ts.map +1 -1
  75. package/dist/services/ClineRunner.js +76 -22
  76. package/dist/services/ClineRunner.js.map +1 -1
  77. package/dist/services/GeminiRunner.d.ts +6 -0
  78. package/dist/services/GeminiRunner.d.ts.map +1 -1
  79. package/dist/services/GeminiRunner.js +283 -69
  80. package/dist/services/GeminiRunner.js.map +1 -1
  81. package/dist/services/KiloRunner.d.ts +12 -0
  82. package/dist/services/KiloRunner.d.ts.map +1 -1
  83. package/dist/services/KiloRunner.js +439 -70
  84. package/dist/services/KiloRunner.js.map +1 -1
  85. package/dist/services/{QwenRunner.d.ts → NousHermesRunner.d.ts} +12 -3
  86. package/dist/services/NousHermesRunner.d.ts.map +1 -0
  87. package/dist/services/NousHermesRunner.js +460 -0
  88. package/dist/services/NousHermesRunner.js.map +1 -0
  89. package/dist/services/OpenClawRunner.d.ts +7 -0
  90. package/dist/services/OpenClawRunner.d.ts.map +1 -1
  91. package/dist/services/OpenClawRunner.js +75 -22
  92. package/dist/services/OpenClawRunner.js.map +1 -1
  93. package/dist/services/OpenCodeRunner.d.ts +7 -0
  94. package/dist/services/OpenCodeRunner.d.ts.map +1 -1
  95. package/dist/services/OpenCodeRunner.js +75 -22
  96. package/dist/services/OpenCodeRunner.js.map +1 -1
  97. package/dist/services/{TraeRunner.d.ts → QwenCliRunner.d.ts} +9 -2
  98. package/dist/services/QwenCliRunner.d.ts.map +1 -0
  99. package/dist/services/QwenCliRunner.js +155 -0
  100. package/dist/services/QwenCliRunner.js.map +1 -0
  101. package/dist/tools/agent_control.d.ts +2 -2
  102. package/dist/tools/config_example.d.ts +7 -4
  103. package/dist/tools/config_example.d.ts.map +1 -1
  104. package/dist/tools/config_example.js +191 -86
  105. package/dist/tools/config_example.js.map +1 -1
  106. package/dist/tools/create_agent.d.ts +13 -7
  107. package/dist/tools/create_agent.d.ts.map +1 -1
  108. package/dist/tools/create_agent.js +8 -9
  109. package/dist/tools/create_agent.js.map +1 -1
  110. package/dist/tools/get_agent_configs.d.ts +10 -4
  111. package/dist/tools/get_agent_configs.d.ts.map +1 -1
  112. package/dist/tools/get_agent_configs.js.map +1 -1
  113. package/dist/tools/initialization_check.d.ts +2 -0
  114. package/dist/tools/initialization_check.d.ts.map +1 -0
  115. package/dist/tools/initialization_check.js +23 -0
  116. package/dist/tools/initialization_check.js.map +1 -0
  117. package/dist/tools/manage_agents.d.ts +34 -16
  118. package/dist/tools/manage_agents.d.ts.map +1 -1
  119. package/dist/tools/manage_agents.js +2 -2
  120. package/dist/tools/manage_agents.js.map +1 -1
  121. package/dist/tools/manage_prompts.d.ts +13 -8
  122. package/dist/tools/manage_prompts.d.ts.map +1 -1
  123. package/dist/tools/manage_prompts.js.map +1 -1
  124. package/dist/tools/memory_runs.d.ts +3 -4
  125. package/dist/tools/memory_runs.d.ts.map +1 -1
  126. package/dist/tools/memory_runs.js.map +1 -1
  127. package/dist/tools/memory_search.d.ts +3 -4
  128. package/dist/tools/memory_search.d.ts.map +1 -1
  129. package/dist/tools/memory_search.js.map +1 -1
  130. package/dist/tools/memory_store.d.ts +11 -5
  131. package/dist/tools/memory_store.d.ts.map +1 -1
  132. package/dist/tools/memory_store.js.map +1 -1
  133. package/dist/tools/run_agent.d.ts +13 -14
  134. package/dist/tools/run_agent.d.ts.map +1 -1
  135. package/dist/tools/run_agent.js +128 -160
  136. package/dist/tools/run_agent.js.map +1 -1
  137. package/dist/tools/run_agent_cli.d.ts +21 -0
  138. package/dist/tools/run_agent_cli.d.ts.map +1 -0
  139. package/dist/tools/run_agent_cli.js +129 -0
  140. package/dist/tools/run_agent_cli.js.map +1 -0
  141. package/dist/tools/run_agents_parallel.d.ts +34 -0
  142. package/dist/tools/run_agents_parallel.d.ts.map +1 -0
  143. package/dist/tools/run_agents_parallel.js +28 -0
  144. package/dist/tools/run_agents_parallel.js.map +1 -0
  145. package/dist/tools/run_claude.d.ts +8 -3
  146. package/dist/tools/run_claude.d.ts.map +1 -1
  147. package/dist/tools/run_claude.js +59 -41
  148. package/dist/tools/run_claude.js.map +1 -1
  149. package/dist/tools/run_cline.d.ts +13 -4
  150. package/dist/tools/run_cline.d.ts.map +1 -1
  151. package/dist/tools/run_cline.js +55 -43
  152. package/dist/tools/run_cline.js.map +1 -1
  153. package/dist/tools/run_gemini.d.ts +13 -4
  154. package/dist/tools/run_gemini.d.ts.map +1 -1
  155. package/dist/tools/run_gemini.js +53 -33
  156. package/dist/tools/run_gemini.js.map +1 -1
  157. package/dist/tools/run_hermes.d.ts +25 -0
  158. package/dist/tools/run_hermes.d.ts.map +1 -0
  159. package/dist/tools/run_hermes.js +93 -0
  160. package/dist/tools/run_hermes.js.map +1 -0
  161. package/dist/tools/run_kilo.d.ts +17 -7
  162. package/dist/tools/run_kilo.d.ts.map +1 -1
  163. package/dist/tools/run_kilo.js +68 -41
  164. package/dist/tools/run_kilo.js.map +1 -1
  165. package/dist/tools/run_openclaw.d.ts +13 -4
  166. package/dist/tools/run_openclaw.d.ts.map +1 -1
  167. package/dist/tools/run_openclaw.js +52 -44
  168. package/dist/tools/run_openclaw.js.map +1 -1
  169. package/dist/tools/run_opencode.d.ts +13 -4
  170. package/dist/tools/run_opencode.d.ts.map +1 -1
  171. package/dist/tools/run_opencode.js +52 -39
  172. package/dist/tools/run_opencode.js.map +1 -1
  173. package/dist/tools/run_qwencli.d.ts +24 -0
  174. package/dist/tools/run_qwencli.d.ts.map +1 -0
  175. package/dist/tools/run_qwencli.js +59 -0
  176. package/dist/tools/run_qwencli.js.map +1 -0
  177. package/docs/README.md +128 -0
  178. package/docs/agent_control.md +656 -0
  179. package/docs/index.html +493 -0
  180. package/docs/library.html +239 -0
  181. package/docs/prompt.html +1212 -0
  182. package/docs/script.js +428 -0
  183. package/docs/styles.css +2816 -0
  184. package/package.json +114 -83
  185. package/scripts/auto-changelog.mjs +132 -0
  186. package/scripts/auto-install.mjs +322 -0
  187. package/scripts/install-dependencies.mjs +462 -0
  188. package/scripts/postgres-manager.mjs +219 -0
  189. package/scripts/postinstall.mjs +538 -0
  190. package/scripts/setup-overmind-db.mjs +199 -0
  191. package/scripts/setup-windows.js +266 -0
  192. package/scripts/setup.mjs +397 -0
  193. package/scripts/test-installation.mjs +158 -0
  194. package/scripts/uninstall.mjs +238 -0
  195. package/assets/overmind_mcp_pro_banner_v3.png +0 -0
  196. package/dist/services/QwenRunner.d.ts.map +0 -1
  197. package/dist/services/QwenRunner.js +0 -102
  198. package/dist/services/QwenRunner.js.map +0 -1
  199. package/dist/services/TraeRunner.d.ts.map +0 -1
  200. package/dist/services/TraeRunner.js +0 -103
  201. package/dist/services/TraeRunner.js.map +0 -1
  202. package/dist/tools/run_qwen.d.ts +0 -15
  203. package/dist/tools/run_qwen.d.ts.map +0 -1
  204. package/dist/tools/run_qwen.js +0 -61
  205. package/dist/tools/run_qwen.js.map +0 -1
  206. package/dist/tools/run_trae.d.ts +0 -15
  207. package/dist/tools/run_trae.d.ts.map +0 -1
  208. package/dist/tools/run_trae.js +0 -66
  209. package/dist/tools/run_trae.js.map +0 -1
  210. package/dist/tools/shell_execute.d.ts +0 -10
  211. package/dist/tools/shell_execute.d.ts.map +0 -1
  212. package/dist/tools/shell_execute.js +0 -24
  213. package/dist/tools/shell_execute.js.map +0 -1
  214. package/dist/tools/test_agent_control.d.ts +0 -2
  215. package/dist/tools/test_agent_control.d.ts.map +0 -1
  216. package/dist/tools/test_agent_control.js +0 -92
  217. package/dist/tools/test_agent_control.js.map +0 -1
@@ -0,0 +1,397 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ═══════════════════════════════════════════════════════════════════════════════
4
+ * SETUP SCRIPT - Installation Automatique OverMind
5
+ * ═══════════════════════════════════════════════════════════════════════════════
6
+ * Script principal qui installe TOUTES les dépendances nécessaires à OverMind:
7
+ * - Docker (si pas présent)
8
+ * - PostgreSQL + pgvector (si pas présent)
9
+ * - RabbitMQ
10
+ * - Temporal
11
+ * - Configuration automatique
12
+ *
13
+ * Usage:
14
+ * overmind-setup [--full]
15
+ * ═══════════════════════════════════════════════════════════════════════════════
16
+ */
17
+
18
+ import { execSync, spawn } from 'child_process';
19
+ import { copyFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
20
+ import { join } from 'path';
21
+ import { fileURLToPath } from 'url';
22
+ import { dirname } from 'path';
23
+ import { createInterface } from 'readline';
24
+
25
+ const __filename = fileURLToPath(import.meta.url);
26
+ const __dirname = dirname(__filename);
27
+ const projectRoot = join(__dirname, '..');
28
+ const INSTALL_DIR = join(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH, '.overmind');
29
+
30
+ // ═══════════════════════════════════════════════════════════════════════════════
31
+ // UTILS
32
+ // ═══════════════════════════════════════════════════════════════════════════════
33
+
34
+ function logSection(title) {
35
+ console.log('\n╔══════════════════════════════════════════════════════════════════╗');
36
+ console.log(`║ ${title.padEnd(64)} ║`);
37
+ console.log('╚══════════════════════════════════════════════════════════════════╝');
38
+ }
39
+
40
+ function runCommand(cmd, description) {
41
+ console.log(`\n🔧 ${description}`);
42
+ console.log(` $ ${cmd}`);
43
+ try {
44
+ execSync(cmd, { stdio: 'inherit' });
45
+ console.log(`✅ ${description} terminé`);
46
+ return true;
47
+ } catch (error) {
48
+ console.error(`❌ Erreur: ${error.message}`);
49
+ return false;
50
+ }
51
+ }
52
+
53
+ function runCommandAsync(cmd, description) {
54
+ return new Promise((resolve, reject) => {
55
+ console.log(`\n🔧 ${description}`);
56
+ console.log(` $ ${cmd}`);
57
+ const child = spawn(cmd, { shell: true, stdio: 'inherit' });
58
+
59
+ child.on('close', (code) => {
60
+ if (code === 0) {
61
+ console.log(`✅ ${description} terminé`);
62
+ resolve(true);
63
+ } else {
64
+ console.error(`❌ Erreur (code ${code})`);
65
+ reject(new Error(`Command failed with code ${code}`));
66
+ }
67
+ });
68
+
69
+ child.on('error', (err) => {
70
+ console.error('❌ Erreur:', err.message);
71
+ reject(err);
72
+ });
73
+ });
74
+ }
75
+
76
+ async function promptYesNo(question) {
77
+ const rl = createInterface({
78
+ input: process.stdin,
79
+ output: process.stdout,
80
+ });
81
+
82
+ const answer = await new Promise((resolve) => {
83
+ rl.question(`${question} (y/N): `, (answer) => {
84
+ rl.close();
85
+ resolve(answer.toLowerCase().startsWith('y'));
86
+ });
87
+ });
88
+
89
+ return answer;
90
+ }
91
+
92
+ // ═══════════════════════════════════════════════════════════════════════════════
93
+ // CHECKS
94
+ // ═══════════════════════════════════════════════════════════════════════════════
95
+
96
+ function checkDocker() {
97
+ try {
98
+ execSync('docker --version', { stdio: 'pipe' });
99
+ return true;
100
+ } catch {
101
+ return false;
102
+ }
103
+ }
104
+
105
+ function checkPostgreSQL() {
106
+ try {
107
+ execSync('docker ps --filter "name=postgres" --format "{{.Names}}"', { stdio: 'pipe' });
108
+ return true;
109
+ } catch {
110
+ try {
111
+ execSync('psql --version', { stdio: 'pipe' });
112
+ return true;
113
+ } catch {
114
+ return false;
115
+ }
116
+ }
117
+ }
118
+
119
+ // ═══════════════════════════════════════════════════════════════════════════════
120
+ // INSTALLATION STEPS
121
+ // ═══════════════════════════════════════════════════════════════════════════════
122
+
123
+ async function installDocker() {
124
+ logSection('INSTALLATION DOCKER');
125
+
126
+ if (checkDocker()) {
127
+ console.log('✅ Docker est déjà installé');
128
+ return true;
129
+ }
130
+
131
+ console.log('ℹ️ Docker non trouvé.');
132
+ console.log('');
133
+ console.log('📥 Docker Desktop est requis pour OverMind-MCP:');
134
+ console.log(' - Windows: https://www.docker.com/products/docker-desktop/');
135
+ console.log(' - Mac: https://www.docker.com/products/docker-desktop/');
136
+ console.log('');
137
+ console.log('📋 Instructions:');
138
+ console.log(' 1. Téléchargez et installez Docker Desktop');
139
+ console.log(' 2. Démarrez Docker Desktop');
140
+ console.log(' 3. Relancez: overmind-setup --full');
141
+ console.log('');
142
+
143
+ const answer = await promptYesNo('Voulez-vous ouvrir le site de téléchargement maintenant ?');
144
+ if (answer) {
145
+ const url = process.platform === 'win32'
146
+ ? 'https://www.docker.com/products/docker-desktop/'
147
+ : 'https://www.docker.com/products/docker-desktop/';
148
+
149
+ try {
150
+ execSync(`start ${url}`, { stdio: 'inherit' });
151
+ console.log('✅ Navigateur ouvert. Attendez l\'installation de Docker.');
152
+ } catch {
153
+ console.log('⚠️ Impossible d\'ouvrir le navigateur automatiquement.');
154
+ console.log(` Ouvrez manuellement: ${url}`);
155
+ }
156
+ }
157
+
158
+ return false;
159
+ }
160
+
161
+ async function installPostgreSQL() {
162
+ logSection('INSTALLATION POSTGRESQL + PGVECTOR');
163
+
164
+ if (checkPostgreSQL()) {
165
+ console.log('✅ PostgreSQL est déjà installé');
166
+ return true;
167
+ }
168
+
169
+ console.log('🐳 Installation PostgreSQL + pgvector en Docker...');
170
+ console.log('');
171
+
172
+ try {
173
+ // Pull and start PostgreSQL container
174
+ console.log('📥 Téléchargement image pgvector/pgvector:pg16...');
175
+ execSync('docker pull pgvector/pgvector:pg16', { stdio: 'inherit' });
176
+
177
+ console.log('🚀 Démarrage container PostgreSQL...');
178
+ const runCommand = `docker run -d --name overmind-postgres-pgvector \\
179
+ -p 5432:5432 \\
180
+ -e POSTGRES_PASSWORD=overmind_temp_password_change_me \\
181
+ -e POSTGRES_USER=postgres \\
182
+ -v overmind_postgres_data:/var/lib/postgresql/data \\
183
+ --restart unless-stopped \\
184
+ pgvector/pgvector:pg16`;
185
+
186
+ await runCommandAsync(runCommand, 'Démarrage PostgreSQL');
187
+
188
+ // Wait for PostgreSQL to be ready
189
+ console.log('⏳ Attente démarrage PostgreSQL (30s)...');
190
+ await new Promise((resolve) => setTimeout(resolve, 30000));
191
+
192
+ // Verify pgvector
193
+ console.log('🔍 Vérification pgvector...');
194
+ await runCommandAsync(
195
+ 'docker exec overmind-postgres-pgvector psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"',
196
+ 'Activation pgvector'
197
+ );
198
+
199
+ console.log('✅ PostgreSQL + pgvector installés avec succès !');
200
+ return true;
201
+
202
+ } catch (error) {
203
+ console.error('❌ Erreur installation PostgreSQL:', error.message);
204
+ return false;
205
+ }
206
+ }
207
+
208
+ function setupConfigurationFiles() {
209
+ logSection('CONFIGURATION OVERMIND');
210
+
211
+ // Create install directory
212
+ if (!existsSync(INSTALL_DIR)) {
213
+ mkdirSync(INSTALL_DIR, { recursive: true });
214
+ console.log('✅ Dossier créé:', INSTALL_DIR);
215
+ }
216
+
217
+ // Copy docker-compose file
218
+ const dockerComposePath = join(projectRoot, 'docker-compose.overmind.yml');
219
+ const destComposePath = join(INSTALL_DIR, 'docker-compose.overmind.yml');
220
+
221
+ if (existsSync(dockerComposePath)) {
222
+ copyFileSync(dockerComposePath, destComposePath);
223
+ console.log('✅ docker-compose.overmind.yml copié');
224
+ }
225
+
226
+ // Copy .env.example if .env doesn't exist
227
+ const envExamplePath = join(projectRoot, '.env.example');
228
+ const envPath = join(INSTALL_DIR, '.env');
229
+
230
+ if (!existsSync(envPath) && existsSync(envExamplePath)) {
231
+ copyFileSync(envExamplePath, envPath);
232
+ console.log('✅ .env créé (à éditer avec vos credentials)');
233
+ }
234
+
235
+ // Copy docker-manager script
236
+ const dockerManagerPath = join(__dirname, 'docker-manager.mjs');
237
+ const destManagerPath = join(INSTALL_DIR, 'docker-manager.mjs');
238
+
239
+ copyFileSync(dockerManagerPath, destManagerPath);
240
+ console.log('✅ Scripts Docker installés');
241
+
242
+ return true;
243
+ }
244
+
245
+ async function startDockerServices() {
246
+ logSection('DÉMARRAGE SERVICES DOCKER');
247
+
248
+ const composeFile = join(INSTALL_DIR, 'docker-compose.overmind.yml');
249
+
250
+ console.log('🚀 Démarrage RabbitMQ + Temporal...');
251
+ try {
252
+ await runCommandAsync(
253
+ `docker-compose -f "${composeFile}" up -d`,
254
+ 'Démarrage services'
255
+ );
256
+ console.log('✅ Services Docker démarrés');
257
+ console.log('');
258
+ console.log('🌐 Interfaces disponibles:');
259
+ console.log(' 📊 RabbitMQ: http://localhost:15672');
260
+ console.log(' 📈 Temporal: http://localhost:8088');
261
+ return true;
262
+ } catch (error) {
263
+ console.error('❌ Erreur démarrage Docker:', error.message);
264
+ return false;
265
+ }
266
+ }
267
+
268
+ async function createOvermindDatabase() {
269
+ logSection('CRÉATION BASE OVERMIND');
270
+
271
+ const setupDbPath = join(__dirname, 'setup-overmind-db.mjs');
272
+ const destDbDir = INSTALL_DIR;
273
+ const destDbPath = join(destDbDir, 'setup-overmind-db.mjs');
274
+
275
+ try {
276
+ if (!existsSync(destDbDir)) {
277
+ mkdirSync(destDbDir, { recursive: true });
278
+ }
279
+ copyFileSync(setupDbPath, destDbPath);
280
+
281
+ await runCommandAsync(
282
+ `node "${destDbPath}"`,
283
+ 'Initialisation DB OverMind'
284
+ );
285
+ return true;
286
+ } catch (error) {
287
+ console.error('❌ Erreur création DB:', error.message);
288
+ return false;
289
+ }
290
+ }
291
+
292
+ // ═══════════════════════════════════════════════════════════════════════════════
293
+ // MAIN
294
+ // ═══════════════════════════════════════════════════════════════════════════════
295
+
296
+ async function main() {
297
+ const args = process.argv.slice(2);
298
+ const isFull = args.includes('--full');
299
+
300
+ console.log('╔══════════════════════════════════════════════════════════════════╗');
301
+ console.log('║ ║');
302
+ console.log('║ 🧠 OVERMIND-MCP: SETUP AUTOMATISÉ COMPLET ║');
303
+ console.log('║ ║');
304
+ console.log('╚══════════════════════════════════════════════════════════════════╝');
305
+ console.log('');
306
+
307
+ if (!isFull) {
308
+ console.log('ℹ️ USAGE: overmind-setup [--full]');
309
+ console.log('');
310
+ console.log(' --full: Installe TOUTES les dépendances (Docker, PostgreSQL, etc.)');
311
+ console.log(' et configure OverMind automatiquement');
312
+ console.log('');
313
+ console.log(' Sans --full: Prépare juste les fichiers de configuration');
314
+ console.log('');
315
+
316
+ return;
317
+ }
318
+
319
+ // Step 1: Check Docker
320
+ const hasDocker = checkDocker();
321
+ if (!hasDocker) {
322
+ const installed = await installDocker();
323
+ if (!installed) {
324
+ console.log('\n❌ SETUP ANNULÉ - Docker est requis pour le mode complet');
325
+ console.log(' Installez Docker Desktop et relancez: overmind-setup --full');
326
+ process.exit(1);
327
+ }
328
+ }
329
+
330
+ // Step 2: Check PostgreSQL
331
+ const hasPostgreSQL = checkPostgreSQL();
332
+ if (!hasPostgreSQL) {
333
+ const installed = await installPostgreSQL();
334
+ if (!installed) {
335
+ console.log('\n❌ SETUP ANNULÉ - PostgreSQL est requis pour le mode complet');
336
+ process.exit(1);
337
+ }
338
+ }
339
+
340
+ // Step 3: Setup configuration files
341
+ setupConfigurationFiles();
342
+
343
+ // Step 4: Start Docker services
344
+ const servicesStarted = await startDockerServices();
345
+ if (!servicesStarted) {
346
+ console.log('\n❌ SETUP ANNULÉ - Impossible de démarrer les services');
347
+ process.exit(1);
348
+ }
349
+
350
+ // Step 5: Create OverMind database
351
+ const dbCreated = await createOvermindDatabase();
352
+ if (!dbCreated) {
353
+ console.log('\n❌ SETUP ANNULÉ - Impossible de créer la base OverMind');
354
+ process.exit(1);
355
+ }
356
+
357
+ // Success!
358
+ logSection('✅ SETUP COMPLET TERMINÉ AVEC SUCCÈS');
359
+
360
+ console.log(`
361
+ 🎉 OVERMIND-MCP EST PRÊT !
362
+
363
+ 📋 SERVICES ACTIFS:
364
+ ✅ PostgreSQL + pgvector (Vector DB 4096D)
365
+ ✅ RabbitMQ (Message Broker)
366
+ ✅ Temporal (Workflow Orchestrator)
367
+ ✅ OverMind Agents (prêt à l'emploi)
368
+
369
+ 🌐 INTERFACES:
370
+ 📊 RabbitMQ Management: http://localhost:15672
371
+ 📈 Temporal Web: http://localhost:8088
372
+ 🗄️ PostgreSQL: localhost:5432
373
+
374
+ 🚀 COMMANDES DISPONIBLES:
375
+ overmind create-agent --name expert --runner claude
376
+ overmind run-agent --runner claude --prompt "Analyse..."
377
+ overmind-infra up/down/status/logs
378
+
379
+ 📚 DOCUMENTATION:
380
+ - https://deamondev888.github.io/overmind-mcp/
381
+ - https://github.com/DeamonDev888/overmind-mcp
382
+ - Discord: https://discord.gg/4AR82phtBz
383
+
384
+ 💡 PREMIER TEST:
385
+ overmind create-agent --name test --runner claude --prompt "Test d'OverMind"
386
+
387
+ ═══════════════════════════════════════════════════════════════════════
388
+ `);
389
+ }
390
+
391
+ // Run main
392
+ if (import.meta.url === `file://${process.argv[1]}`) {
393
+ main().catch((error) => {
394
+ console.error('\n❌ ERREUR FATALE:', error.message);
395
+ process.exit(1);
396
+ });
397
+ }
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ═══════════════════════════════════════════════════════════════════════════════
4
+ * TEST INSTALLATION OVERMIND-MCP
5
+ * ═══════════════════════════════════════════════════════════════════════════════
6
+ * Script de vérification de l'installation complète d'OverMind-MCP
7
+ *
8
+ * Usage:
9
+ * node scripts/test-installation.mjs
10
+ * ═══════════════════════════════════════════════════════════════════════════════
11
+ */
12
+
13
+ import { execSync } from 'child_process';
14
+ import { existsSync } from 'fs';
15
+ import { join } from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ import { dirname } from 'path';
18
+
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const __dirname = dirname(__filename);
21
+
22
+ const INSTALL_DIR = join(
23
+ process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH,
24
+ '.overmind'
25
+ );
26
+
27
+ function logSection(title) {
28
+ console.log('\n╔══════════════════════════════════════════════════════════════════╗');
29
+ console.log(`║ ${title.padEnd(64)} ║`);
30
+ console.log('╚══════════════════════════════════════════════════════════════════╝');
31
+ }
32
+
33
+ function runCommand(cmd) {
34
+ try {
35
+ return execSync(cmd, { stdio: 'pipe', encoding: 'utf8' });
36
+ } catch {
37
+ return null;
38
+ }
39
+ }
40
+
41
+ async function testInstallation() {
42
+ console.log('╔══════════════════════════════════════════════════════════════════╗');
43
+ console.log('║ ║');
44
+ console.log('║ 🧪 TEST INSTALLATION OVERMIND-MCP ║');
45
+ console.log('║ ║');
46
+ console.log('╚══════════════════════════════════════════════════════════════════╝');
47
+ console.log('');
48
+
49
+ const results = {
50
+ docker: false,
51
+ postgres: false,
52
+ postgresMCP: false,
53
+ configFiles: false,
54
+ connection: false
55
+ };
56
+
57
+ // Test 1: Docker
58
+ logSection('TEST 1: DOCKER');
59
+ const dockerVersion = runCommand('docker --version');
60
+ if (dockerVersion) {
61
+ console.log('✅ Docker installé:', dockerVersion.trim());
62
+ results.docker = true;
63
+ } else {
64
+ console.log('❌ Docker NON installé');
65
+ }
66
+
67
+ // Test 2: PostgreSQL Container
68
+ logSection('TEST 2: POSTGRESQL CONTAINER');
69
+ const postgresContainer = runCommand('docker ps --filter "name=postgres" --format "{{.Names}}"');
70
+ if (postgresContainer) {
71
+ console.log('✅ PostgreSQL container actif:', postgresContainer.trim());
72
+ results.postgres = true;
73
+ } else {
74
+ console.log('❌ PostgreSQL container NON actif');
75
+ }
76
+
77
+ // Test 3: overmind-postgres-mcp
78
+ logSection('TEST 3: OVERMIND-POSTGRES-MCP');
79
+ const postgresMCP = runCommand('npm list -g overmind-postgres-mcp');
80
+ if (postgresMCP && postgresMCP.includes('overmind-postgres-mcp')) {
81
+ console.log('✅ overmind-postgres-mcp installé');
82
+ results.postgresMCP = true;
83
+ } else {
84
+ console.log('❌ overmind-postgres-mcp NON installé');
85
+ }
86
+
87
+ // Test 4: Fichiers de configuration
88
+ logSection('TEST 4: FICHIERS DE CONFIGURATION');
89
+ const envFile = join(INSTALL_DIR, '.env');
90
+ const postgresEnvFile = join(INSTALL_DIR, '.env.postgres');
91
+ const mcpFile = join(INSTALL_DIR, '.mcp.json');
92
+
93
+ const filesExist = existsSync(envFile) && existsSync(postgresEnvFile) && existsSync(mcpFile);
94
+ if (filesExist) {
95
+ console.log('✅ Fichiers de configuration créés:');
96
+ console.log(' • .env');
97
+ console.log(' • .env.postgres');
98
+ console.log(' • .mcp.json');
99
+ results.configFiles = true;
100
+ } else {
101
+ console.log('❌ Fichiers de configuration manquants');
102
+ }
103
+
104
+ // Test 5: Connexion PostgreSQL
105
+ logSection('TEST 5: CONNEXION POSTGRESQL');
106
+ if (results.postgres) {
107
+ try {
108
+ const pgVersion = execSync('docker exec overmind-postgres-pgvector psql -U postgres -t -c "SELECT version();"');
109
+ if (pgVersion) {
110
+ console.log('✅ Connexion PostgreSQL réussie');
111
+ results.connection = true;
112
+ }
113
+ } catch {
114
+ console.log('❌ Connexion PostgreSQL échouée');
115
+ }
116
+ } else {
117
+ console.log('⏭️ Test ignoré (PostgreSQL non actif)');
118
+ }
119
+
120
+ // Résultat final
121
+ logSection('RÉSULTAT FINAL');
122
+ const totalTests = Object.keys(results).length;
123
+ const passedTests = Object.values(results).filter(Boolean).length;
124
+
125
+ console.log(`Tests passés: ${passedTests}/${totalTests}`);
126
+ console.log('');
127
+
128
+ if (passedTests === totalTests) {
129
+ console.log('🎉 INSTALLATION PARFAITE ! OverMind-MCP est prêt à l\'emploi.');
130
+ console.log('');
131
+ console.log('📋 Prochaines étapes:');
132
+ console.log(' 1. Créez votre premier agent: overmind create-agent');
133
+ console.log(' 2. Listez les agents: overmind list-agents');
134
+ console.log(' 3. Testez la mémoire: overmind memory-store "Test"');
135
+ } else {
136
+ console.log('⚠️ CERTAINS TESTS ONT ÉCHOUÉ. Vérifiez les erreurs ci-dessus.');
137
+ console.log('');
138
+ console.log('💡 Solutions possibles:');
139
+ if (!results.docker) {
140
+ console.log(' • Installez Docker: https://www.docker.com/products/docker-desktop/');
141
+ }
142
+ if (!results.postgres) {
143
+ console.log(' • Démarrez PostgreSQL: overmind-postgres up');
144
+ }
145
+ if (!results.postgresMCP) {
146
+ console.log(' • Installez le MCP: npm install -g overmind-postgres-mcp');
147
+ }
148
+ if (!results.configFiles) {
149
+ console.log(' • Lancez: npm install -g overmind-mcp');
150
+ }
151
+ }
152
+ }
153
+
154
+ // Run tests
155
+ testInstallation().catch(error => {
156
+ console.error('❌ ERREUR:', error.message);
157
+ process.exit(1);
158
+ });