overmind-mcp 2.8.9 → 2.8.11

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.
@@ -1,219 +1,219 @@
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', '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
- }
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', '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
+ }
@@ -83,7 +83,41 @@ async function runCommandAsync(cmd, description) {
83
83
 
84
84
  // ═══════════════════════════════════════════════════════════════════════════════
85
85
  // INSTALLATION STEPS
86
- // ═════════════════════════════════════════════════════════════════════════════
86
+ // ═══════════════════════════════════════════════════════════════════════════════
87
+
88
+ /**
89
+ * Détecte si on doit proposer le mode natif (sans Docker).
90
+ * Critères : --native explicite, OU pas de Docker + Linux.
91
+ */
92
+ function shouldOfferNative() {
93
+ if (process.argv.includes('--native')) return { native: true, reason: 'flag --native' };
94
+
95
+ const isLinux = process.platform === 'linux';
96
+ const hasDocker = runCommand('docker --version');
97
+ if (isLinux && !hasDocker) {
98
+ return { native: true, reason: 'Linux détecté, Docker absent' };
99
+ }
100
+ return { native: false };
101
+ }
102
+
103
+ async function offerNativeInstall(reason) {
104
+ logSection('🐧 MODE NATIF SANS DOCKER DISPONIBLE');
105
+ log(COLORS.yellow, `Raison : ${reason}`);
106
+ log(COLORS.cyan, '');
107
+ log(COLORS.cyan, 'Ce package supporte aussi une installation 100% native (sans Docker) :');
108
+ log(COLORS.cyan, ' • PostgreSQL 18 + pgvector via apt');
109
+ log(COLORS.cyan, ' • Services systemd (overmind-mcp, overmind-postgres-mcp)');
110
+ log(COLORS.cyan, ' • Bind 127.0.0.1 (plus sûr)');
111
+ log(COLORS.cyan, '');
112
+ log(COLORS.green, 'Pour lancer l\'install native :');
113
+ log(COLORS.white, ' sudo overmind-install-native');
114
+ log(COLORS.cyan, '');
115
+ log(COLORS.cyan, 'Le script natif est embarqué dans le package à :');
116
+ log(COLORS.white, ' /usr/lib/node_modules/overmind-mcp/bin/install-overmind-native.sh');
117
+ log(COLORS.cyan, '');
118
+ log(COLORS.cyan, 'Si Docker est intentionnel, poursuivez ci-dessous.');
119
+ log(COLORS.cyan, '');
120
+ }
87
121
 
88
122
  async function checkDocker() {
89
123
  logSection('VÉRIFICATION DOCKER');
@@ -478,6 +512,16 @@ async function main() {
478
512
  console.log(' ✓ Valider PostgreSQL');
479
513
  console.log('');
480
514
 
515
+ // Step 0: Offre install native (non bloquant)
516
+ const nativeOffer = shouldOfferNative();
517
+ if (nativeOffer.native) {
518
+ await offerNativeInstall(nativeOffer.reason);
519
+ if (process.argv.includes('--native-only')) {
520
+ log(COLORS.green, '→ --native-only : on s\'arrête là. Lance sudo overmind-install-native quand prêt.');
521
+ return;
522
+ }
523
+ }
524
+
481
525
  // Step 1: Check Docker
482
526
  const dockerOk = await checkDocker();
483
527
  if (!dockerOk) {