overmind-mcp 3.0.3 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/launch.cjs +5 -3
- package/package.json +12 -12
- package/docs/PLAN_MIGRATION_V3.md +0 -339
package/bin/launch.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
process.title = "MCP-OVERMIND"; // [V16] Window identification
|
|
1
2
|
// launch.js — compiled launcher for Workflow
|
|
2
3
|
// Prebuild copies this to dist/bin/launch.js
|
|
3
4
|
|
|
@@ -22,12 +23,12 @@ function ensureDir(dir) {
|
|
|
22
23
|
function killPort(port) {
|
|
23
24
|
return new Promise((resolve) => {
|
|
24
25
|
const cmd = `powershell -c "Get-NetTCPConnection -LocalPort ${port} -State Listen -ErrorAction SilentlyContinue | Format-Table -HideTableHeaders -Property OwningProcess | ForEach-Object {$_.Trim()} | Where-Object {$_}"`;
|
|
25
|
-
exec(cmd, { cwd: SCRIPT_DIR }, (err, stdout) => {
|
|
26
|
+
exec(cmd, { cwd: SCRIPT_DIR, windowsHide: true }, (err, stdout) => {
|
|
26
27
|
const pids = (stdout || "").trim().split("\n").map((p) => p.trim()).filter(Boolean);
|
|
27
28
|
if (pids.length === 0) { log(`Port ${port} — no process`); resolve(); return; }
|
|
28
29
|
for (const pid of pids) {
|
|
29
30
|
log(`Port ${port} PID ${pid} killed`);
|
|
30
|
-
exec(`taskkill /F /PID ${pid}`, () => {});
|
|
31
|
+
exec(`taskkill /F /PID ${pid}`, { windowsHide: true }, () => {});
|
|
31
32
|
}
|
|
32
33
|
setTimeout(resolve, 500);
|
|
33
34
|
});
|
|
@@ -37,7 +38,7 @@ function killPort(port) {
|
|
|
37
38
|
function build() {
|
|
38
39
|
return new Promise((resolve) => {
|
|
39
40
|
log("[BUILD] Starting...");
|
|
40
|
-
exec(BUILD_CMD, { cwd: SCRIPT_DIR }, (err) => {
|
|
41
|
+
exec(BUILD_CMD, { cwd: SCRIPT_DIR, windowsHide: true }, (err) => {
|
|
41
42
|
if (err && !fs.existsSync(path.join(SCRIPT_DIR, "dist"))) {
|
|
42
43
|
log("[FAIL] Build failed — no dist");
|
|
43
44
|
resolve(false);
|
|
@@ -58,6 +59,7 @@ function launch() {
|
|
|
58
59
|
const child = spawn("node", ['--max-old-space-size=256', '--no-warnings', '--env-file=.env', 'dist/bin/cli.js', '--transport', 'httpStream', '--port', '3099'], {
|
|
59
60
|
cwd: SCRIPT_DIR,
|
|
60
61
|
detached: true,
|
|
62
|
+
windowsHide: true,
|
|
61
63
|
stdio: ["ignore", out, err],
|
|
62
64
|
env,
|
|
63
65
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overmind-mcp",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dépendances Docker (PostgreSQL, pgvector) inclus.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -83,33 +83,33 @@
|
|
|
83
83
|
},
|
|
84
84
|
"homepage": "https://deamondev888.github.io/overmind-mcp/",
|
|
85
85
|
"engines": {
|
|
86
|
-
"node": ">=
|
|
86
|
+
"node": ">=24.18.0"
|
|
87
87
|
},
|
|
88
88
|
"packageManager": "pnpm@10.18.0",
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@changesets/cli": "^2.31.0",
|
|
91
91
|
"@eslint/js": "^10.0.1",
|
|
92
|
-
"@types/node": "^
|
|
92
|
+
"@types/node": "^26.0.1",
|
|
93
93
|
"@types/pg": "^8.20.0",
|
|
94
|
-
"eslint": "^10.
|
|
94
|
+
"eslint": "^10.6.0",
|
|
95
95
|
"eslint-config-prettier": "^10.1.8",
|
|
96
|
-
"globals": "^17.
|
|
96
|
+
"globals": "^17.7.0",
|
|
97
97
|
"pino-pretty": "^13.1.3",
|
|
98
|
-
"prettier": "^3.
|
|
98
|
+
"prettier": "^3.9.4",
|
|
99
99
|
"rimraf": "^6.1.3",
|
|
100
100
|
"typescript": "^6.0.3",
|
|
101
|
-
"typescript-eslint": "^8.
|
|
102
|
-
"vitest": "^4.1.
|
|
101
|
+
"typescript-eslint": "^8.62.1",
|
|
102
|
+
"vitest": "^4.1.9"
|
|
103
103
|
},
|
|
104
104
|
"dependencies": {
|
|
105
105
|
"async-mutex": "^0.5.0",
|
|
106
106
|
"dotenv": "^17.4.2",
|
|
107
|
-
"fastmcp": "^4.
|
|
108
|
-
"overmind-postgres-mcp": "^1.4.
|
|
109
|
-
"pg": "^8.
|
|
107
|
+
"fastmcp": "^4.3.2",
|
|
108
|
+
"overmind-postgres-mcp": "^1.4.2",
|
|
109
|
+
"pg": "^8.22.0",
|
|
110
110
|
"pino": "^10.3.1",
|
|
111
111
|
"pino-roll": "^4.0.0",
|
|
112
|
-
"tinyglobby": "^0.2.
|
|
112
|
+
"tinyglobby": "^0.2.17",
|
|
113
113
|
"zod": "^4.4.3"
|
|
114
114
|
},
|
|
115
115
|
"peerDependencies": {
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
# Plan de Migration — Overmind Hermes v2 → v3.0 (Native Profiles)
|
|
2
|
-
|
|
3
|
-
> **Objectif** : Migrer les 6 anciens agents Hermes du layout Overmind custom vers les profils Hermes natifs (`~/.hermes/profiles/<name>/`), puis appliquer le modèle kanban (PostgreSQL 18 registry + SQLite state local + homes standardisés).
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Inventaire des agents à migrer
|
|
8
|
-
|
|
9
|
-
### Agents Hermes (layout Overmind custom → profils natifs)
|
|
10
|
-
|
|
11
|
-
| # | Agent | Modèle | Provider | MCP | SOUL.md | Statut |
|
|
12
|
-
|---|-------|--------|----------|-----|---------|--------|
|
|
13
|
-
| 1 | `sniperbot_analyst` | MiniMax-M3 | minimax-cn | 3 | 4278b | ✅ **DÉJÀ MIGRÉ** |
|
|
14
|
-
| 2 | `tradingview_analyst` | MiniMax-M3 | minimax-cn | 9 | 5170b | ⬜ À migrer |
|
|
15
|
-
| 3 | `pdf_bon_travail` | MiniMax-M3 | minimax-cn | 3 | 0b* | ⬜ À migrer |
|
|
16
|
-
| 4 | `test_hermes_runner` | MiniMax-M3 | minimax-cn | 2 | 2699b | ⬜ À migrer (test) |
|
|
17
|
-
| 5 | `hermes_test_validation` | MiniMax-M3 | minimax-cn | 3 | 2528b | ⬜ À migrer (test) |
|
|
18
|
-
| 6 | `hermes_test_validation_agent` | claude-sonnet-4-6 | minimax-cn* | 8 | 2545b | ⬜ À migrer (test) |
|
|
19
|
-
|
|
20
|
-
*pdf_bon_travail n'a pas de SOUL.md dans le layout Overmind, mais en a un (4283b) dans `~/.hermes/agents/`.
|
|
21
|
-
*hermes_test_validation_agent a model=claude-sonnet-4-6 mais provider=minimax-cn → mismatch à corriger.
|
|
22
|
-
|
|
23
|
-
### Agents Claude/Kilo (NON affectés)
|
|
24
|
-
|
|
25
|
-
91 agents dans `.claude/agents/*.md` — **aucune migration nécessaire**. Ils restent dans le layout Overmind existant.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Phase 0 — Sauvegarde (préalable)
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
# Backup complet du dossier .overmind/hermes (ancien layout)
|
|
33
|
-
cp -r ".overmind/hermes" ".overmind/hermes.backup.$(date +%Y%m%d)"
|
|
34
|
-
|
|
35
|
-
# Backup des profils Hermes actuels
|
|
36
|
-
cp -r "$LOCALAPPDATA/hermes/profiles" "$LOCALAPPDATA/hermes/profiles.backup.$(date +%Y%m%d)"
|
|
37
|
-
|
|
38
|
-
# Backup du registry PostgreSQL
|
|
39
|
-
pg_dump -h localhost -p 5432 overmind_registry > "overmind_registry_backup_$(date +%Y%m%d).sql"
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Phase 1 — Migration des agents (4 étapes par agent)
|
|
45
|
-
|
|
46
|
-
Pour chaque agent de la liste ci-dessus (sauf sniperbot_analyst déjà fait):
|
|
47
|
-
|
|
48
|
-
### Étape 1: Créer le profil natif
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
hermes profile create <name> --no-alias --description "<description from SOUL.md>"
|
|
52
|
-
hermes -p <name> config set model.provider <provider>
|
|
53
|
-
hermes -p <name> config set model.model <model>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Étape 2: Copier les fichiers
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
# SOUL.md (system prompt)
|
|
60
|
-
cp ".overmind/hermes/agents/<name>/SOUL.md" \
|
|
61
|
-
"$LOCALAPPDATA/hermes/profiles/<name>/SOUL.md"
|
|
62
|
-
|
|
63
|
-
# .env (credentials — extraits de settings.json)
|
|
64
|
-
# Les clés sont mappées selon le provider:
|
|
65
|
-
# sk-cp-* → MINIMAX_CN_API_KEY
|
|
66
|
-
# 32hex → GLM_API_KEY
|
|
67
|
-
# sk-ant-* → ANTHROPIC_API_KEY
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Étape 3: Configurer les MCP servers
|
|
71
|
-
|
|
72
|
-
Le `HermesProfileManager.setMcpServers()` lit automatiquement le `.mcp.json` du workspace et écrit les vraies URLs dans le `config.yaml` du profil.
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
# Vérifier
|
|
76
|
-
hermes -p <name> mcp list
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Étape 4: Valider
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# Test basique
|
|
83
|
-
hermes -p <name> chat -q "Reply with: <NAME> OK" -Q --yolo
|
|
84
|
-
|
|
85
|
-
# Test MCP tools
|
|
86
|
-
hermes -p <name> chat -q "List all mcp_ tools available" -Q --yolo
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Phase 2 — Ordre de migration (par priorité)
|
|
92
|
-
|
|
93
|
-
### Priorité 1: Production agents
|
|
94
|
-
|
|
95
|
-
1. **tradingview_analyst** — 9 MCP servers, SOUL.md complet
|
|
96
|
-
- Provider: minimax-cn
|
|
97
|
-
- MCPs: memory, discord, postgres, + 6 autres
|
|
98
|
-
- Action: migration complète + test MCP
|
|
99
|
-
|
|
100
|
-
2. **pdf_bon_travail** — 3 MCP servers
|
|
101
|
-
- Provider: minimax-cn
|
|
102
|
-
- SOUL.md: récupérer depuis `~/.hermes/agents/pdf_bon_travail/SOUL.md` (4283b)
|
|
103
|
-
- Action: fusionner les deux sources (Overmind + ~/.hermes)
|
|
104
|
-
|
|
105
|
-
### Priorité 2: Test agents (optionnel)
|
|
106
|
-
|
|
107
|
-
3. **test_hermes_runner** — agent de test
|
|
108
|
-
4. **hermes_test_validation** — agent de test
|
|
109
|
-
5. **hermes_test_validation_agent** — agent de test (corriger provider mismatch)
|
|
110
|
-
|
|
111
|
-
### Priorité 3: Cleanup
|
|
112
|
-
|
|
113
|
-
6. Supprimer les profils de test après validation
|
|
114
|
-
7. Archiver le dossier `.overmind/hermes/` (ne pas supprimer immédiatement)
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Phase 3 — Script de migration automatique
|
|
119
|
-
|
|
120
|
-
Le script `scripts/migrate-to-profiles.mjs` automatise toute la Phase 1:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
# Dry-run (voir ce qui serait fait)
|
|
124
|
-
node scripts/migrate-to-profiles.mjs --dry-run
|
|
125
|
-
|
|
126
|
-
# Migration réelle
|
|
127
|
-
node scripts/migrate-to-profiles.mjs
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Le script:
|
|
131
|
-
1. Scanne `.overmind/hermes/agents/*/settings.json`
|
|
132
|
-
2. Pour chaque agent:
|
|
133
|
-
- Détecte le provider depuis le token prefix
|
|
134
|
-
- Crée le profil via `hermes profile create`
|
|
135
|
-
- Configure model + provider via `hermes config set`
|
|
136
|
-
- Copie SOUL.md
|
|
137
|
-
- Écrit .env avec les bonnes clés provider
|
|
138
|
-
- Configure les MCP servers depuis .mcp.json
|
|
139
|
-
3. Affiche le résumé
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Phase 4 — Registry PostgreSQL (model kanban)
|
|
144
|
-
|
|
145
|
-
Après la migration des agents, créer le registry central dans PostgreSQL 18:
|
|
146
|
-
|
|
147
|
-
### Schema `overmind_registry`
|
|
148
|
-
|
|
149
|
-
```sql
|
|
150
|
-
CREATE SCHEMA IF NOT EXISTS overmind_registry;
|
|
151
|
-
|
|
152
|
-
-- Table: agents (registre canonique)
|
|
153
|
-
CREATE TABLE overmind_registry.agents (
|
|
154
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
155
|
-
name TEXT UNIQUE NOT NULL,
|
|
156
|
-
runner TEXT NOT NULL DEFAULT 'hermes',
|
|
157
|
-
profile_path TEXT,
|
|
158
|
-
model TEXT,
|
|
159
|
-
provider TEXT,
|
|
160
|
-
description TEXT,
|
|
161
|
-
mcp_servers TEXT[],
|
|
162
|
-
status TEXT DEFAULT 'active', -- active | archived | deprecated
|
|
163
|
-
created_at TIMESTAMPTZ DEFAULT now(),
|
|
164
|
-
updated_at TIMESTAMPTZ DEFAULT now()
|
|
165
|
-
);
|
|
166
|
-
|
|
167
|
-
-- Table: profiles (mapping profil Hermes → agent Overmind)
|
|
168
|
-
CREATE TABLE overmind_registry.profiles (
|
|
169
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
170
|
-
agent_id UUID REFERENCES overmind_registry.agents(id) ON DELETE CASCADE,
|
|
171
|
-
profile_name TEXT UNIQUE NOT NULL,
|
|
172
|
-
home_path TEXT NOT NULL,
|
|
173
|
-
soUL_hash TEXT,
|
|
174
|
-
config_hash TEXT,
|
|
175
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
176
|
-
);
|
|
177
|
-
|
|
178
|
-
-- Table: workspaces (workspace typés)
|
|
179
|
-
CREATE TABLE overmind_registry.workspaces (
|
|
180
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
181
|
-
agent_id UUID REFERENCES overmind_registry.agents(id),
|
|
182
|
-
kind TEXT NOT NULL, -- scratch | dir | worktree
|
|
183
|
-
path TEXT NOT NULL,
|
|
184
|
-
tenant TEXT,
|
|
185
|
-
created_at TIMESTAMPTZ DEFAULT now(),
|
|
186
|
-
archived_at TIMESTAMPTZ
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
-- Table: gc_log (garbage collection déterministe)
|
|
190
|
-
CREATE TABLE overmind_registry.gc_log (
|
|
191
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
192
|
-
action TEXT NOT NULL, -- prune | archive | delete
|
|
193
|
-
target TEXT NOT NULL,
|
|
194
|
-
reason TEXT,
|
|
195
|
-
ts TIMESTAMPTZ DEFAULT now()
|
|
196
|
-
);
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Migration des données
|
|
200
|
-
|
|
201
|
-
```sql
|
|
202
|
-
-- Insérer les agents migrés
|
|
203
|
-
INSERT INTO overmind_registry.agents (name, runner, profile_path, model, provider, description)
|
|
204
|
-
VALUES
|
|
205
|
-
('sniperbot_analyst', 'hermes', '~/.hermes/profiles/sniperbot_analyst', 'MiniMax-M3', 'minimax-cn', 'Discord assistant + Overmind orchestrator'),
|
|
206
|
-
('tradingview_analyst', 'hermes', '~/.hermes/profiles/tradingview_analyst', 'MiniMax-M3', 'minimax-cn', 'TradingView analysis agent'),
|
|
207
|
-
('pdf_bon_travail', 'hermes', '~/.hermes/profiles/pdf_bon_travail', 'MiniMax-M3', 'minimax-cn', 'PDF work order management');
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Phase 5 — Standardisation des homes
|
|
213
|
-
|
|
214
|
-
Chaque profil doit avoir une structure standardisée:
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
~/.hermes/profiles/<name>/
|
|
218
|
-
├── config.yaml ← provider + model + mcp_servers
|
|
219
|
-
├── .env ← credentials (1 set par profil)
|
|
220
|
-
├── SOUL.md ← system prompt
|
|
221
|
-
├── profile.yaml ← description (pour kanban routing)
|
|
222
|
-
├── memories/ ← state.db (SQLite runtime)
|
|
223
|
-
├── sessions/ ← historique conversations
|
|
224
|
-
├── skills/ ← skills du profil
|
|
225
|
-
├── cron/ ← jobs programmés
|
|
226
|
-
├── workspace.yaml ← NEW: workspace config (kind, path, tenant)
|
|
227
|
-
└── README.md ← NEW: doc du profil
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### workspace.yaml (nouveau)
|
|
231
|
-
|
|
232
|
-
```yaml
|
|
233
|
-
# Workspace configuration for <name>
|
|
234
|
-
kind: dir # scratch | dir | worktree
|
|
235
|
-
path: ~/.hermes/profiles/<name>/workspace
|
|
236
|
-
tenant: default # tenant namespace
|
|
237
|
-
auto_clean: false # GC auto pour scratch only
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### README.md (nouveau)
|
|
241
|
-
|
|
242
|
-
```markdown
|
|
243
|
-
# <name>
|
|
244
|
-
|
|
245
|
-
**Runner:** hermes
|
|
246
|
-
**Model:** MiniMax-M3 (minimax-cn)
|
|
247
|
-
**MCP servers:** memory, discord, postgres, tradingview
|
|
248
|
-
|
|
249
|
-
## Description
|
|
250
|
-
<from SOUL.md first paragraph>
|
|
251
|
-
|
|
252
|
-
## MCP Tools
|
|
253
|
-
- mcp_postgres_* — PostgreSQL queries
|
|
254
|
-
- mcp_discord_* — Discord messaging
|
|
255
|
-
- mcp_tradingview_* — TradingView analysis
|
|
256
|
-
|
|
257
|
-
## Credentials
|
|
258
|
-
Credentials are in `.env` (not committed).
|
|
259
|
-
|
|
260
|
-
## Migration
|
|
261
|
-
Migrated from Overmind v2 custom layout on 2026-06-28.
|
|
262
|
-
Original: .overmind/hermes/agents/<name>/
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## Phase 6 — Symlinks rétrocompat
|
|
268
|
-
|
|
269
|
-
Pour ne pas casser les scripts existants qui référencent l'ancien layout:
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
# Pour chaque agent migré, créer un symlink:
|
|
273
|
-
ln -s "$LOCALAPPDATA/hermes/profiles/<name>" \
|
|
274
|
-
".overmind/hermes/agents/<name>"
|
|
275
|
-
|
|
276
|
-
# Les anciens chemins pointent maintenant vers le profil natif.
|
|
277
|
-
# Au prochain cycle de dev, on supprimera progressivement les symlinks.
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Checklist de validation
|
|
283
|
-
|
|
284
|
-
### Par agent
|
|
285
|
-
|
|
286
|
-
- [ ] Profil créé: `hermes profile list` le montre
|
|
287
|
-
- [ ] config.yaml: provider + model corrects
|
|
288
|
-
- [ ] .env: credentials présents et valides
|
|
289
|
-
- [ ] SOUL.md: copié intégralement
|
|
290
|
-
- [ ] MCP servers: `hermes -p <name> mcp list` les montre
|
|
291
|
-
- [ ] Test basic: `hermes -p <name> chat -q "test" -Q --yolo` répond
|
|
292
|
-
- [ ] Test MCP: agent peut utiliser mcp_postgres_explore
|
|
293
|
-
- [ ] Test Overmind: `run_agent(runner: "hermes", agentName: "<name>")` répond
|
|
294
|
-
|
|
295
|
-
### Global
|
|
296
|
-
|
|
297
|
-
- [ ] Tous les agents Hermes migrés vers profils natifs
|
|
298
|
-
- [ ] `hermes profile list` montre tous les agents
|
|
299
|
-
- [ ] `list_agents` MCP tool les montre tous
|
|
300
|
-
- [ ] Registry PostgreSQL créé avec le bon schema
|
|
301
|
-
- [ ] Agents enregistrés dans overmind_registry.agents
|
|
302
|
-
- [ ] Symlinks rétrocompat en place
|
|
303
|
-
- [ ] Ancien layout archivé (pas supprimé)
|
|
304
|
-
- [ ] Bot Discord (sniperbot_analyst) fonctionne toujours
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
## Rollback
|
|
309
|
-
|
|
310
|
-
Si la migration échoue:
|
|
311
|
-
|
|
312
|
-
```bash
|
|
313
|
-
# 1. Restaurer les profils backup
|
|
314
|
-
cp -r "$LOCALAPPDATA/hermes/profiles.backup.YYYYMMDD/*" "$LOCALAPPDATA/hermes/profiles/"
|
|
315
|
-
|
|
316
|
-
# 2. Restaurer l'ancien layout
|
|
317
|
-
cp -r ".overmind/hermes.backup.YYYYMMDD" ".overmind/hermes"
|
|
318
|
-
|
|
319
|
-
# 3. Restaurer le registry PostgreSQL
|
|
320
|
-
psql -h localhost -p 5432 overmind_registry < "overmind_registry_backup_YYYYMMDD.sql"
|
|
321
|
-
|
|
322
|
-
# 4. Redémarrer le MCP server
|
|
323
|
-
kill $(netstat -ano | grep ":3099.*LISTENING" | awk '{print $5}')
|
|
324
|
-
cd Workflow && node dist/bin/cli.js --transport httpStream --port 3099
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
## Timeline estimée
|
|
330
|
-
|
|
331
|
-
| Phase | Durée | Downtime |
|
|
332
|
-
|-------|-------|----------|
|
|
333
|
-
| Phase 0: Sauvegarde | 15min | 0 |
|
|
334
|
-
| Phase 1: Migration agents (3 prod) | 1h | ~5min/agent |
|
|
335
|
-
| Phase 2: Script auto + tests | 30min | 0 |
|
|
336
|
-
| Phase 3: Registry PostgreSQL | 1h | 0 |
|
|
337
|
-
| Phase 4: Standardisation homes | 2h | 0 |
|
|
338
|
-
| Phase 5: Symlinks rétrocompat | 30min | 0 |
|
|
339
|
-
| **Total** | **~5h** | **~15min** |
|