overmind-mcp 3.0.2 → 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/README.md CHANGED
@@ -50,8 +50,8 @@ Le postinstall crée `~/.overmind/` automatiquement :
50
50
  │ ├── agents.json ← registre sessions unifié
51
51
  │ └── process-registry.json ← runtime live
52
52
  └── hermes/
53
- ├── profiles/ ← SOURCE homes
54
- └── <name>/
53
+ └── profiles/ ← SOURCE homes (unique)
54
+ └── <name>/
55
55
  │ ├── profile.yaml ← description kanban (OBLIGATOIRE)
56
56
  │ ├── config.yaml ← Hermes config (model, provider)
57
57
  │ ├── SOUL.md ← system prompt
@@ -60,8 +60,6 @@ Le postinstall crée `~/.overmind/` automatiquement :
60
60
  │ ├── state.db ← state local (SQLite)
61
61
  │ ├── workspace.yaml ← kind: scratch|persistent|shared
62
62
  │ └── README.md ← rôle + owner
63
- ├── runs/ ← SYMLINK → profiles/
64
- └── agents/ ← SYMLINK → profiles/
65
63
  ```
66
64
 
67
65
  ### Configuration MCP Client
@@ -200,7 +198,7 @@ Agent 3 ──┘
200
198
 
201
199
  ## 🔄 Migration v3.1
202
200
 
203
- Si vous upgradez depuis v2.8.x, voir [docs/MIGRATION_V3.1.md](docs/MIGRATION_V3.1.md).
201
+ Si vous upgradez depuis v2.8.x, voir [docs/MIGRATION_V3.md](docs/MIGRATION_V3.md).
204
202
 
205
203
  Les profils existants dans `~/.hermes/profiles/` continuent de fonctionner.
206
204
  La migration est recommandée mais pas obligatoire immédiatement.
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
  });
@@ -74,18 +74,7 @@ cp .claude/sessions.json ~/.overmind/bridge/agents.json 2>/dev/null
74
74
 
75
75
  ---
76
76
 
77
- ## Étape 4 — Symlinks rétrocompat (optionnel)
78
-
79
- ```bash
80
- # Ancien layout → nouveau (pour les scripts existants)
81
- ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/agents
82
- ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/runs
83
- ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/sessions
84
- ```
85
-
86
- ---
87
-
88
- ## Étape 5 — Redémarrer les services
77
+ ## Étape 4 — Redémarrer les services
89
78
 
90
79
  ```bash
91
80
  # Ubuntu (systemd)
@@ -99,7 +88,7 @@ systemctl is-active overmind-mcp discord-llm tradingview-analyst
99
88
 
100
89
  ---
101
90
 
102
- ## Étape 6 — Valider
91
+ ## Étape 5 — Valider
103
92
 
104
93
  ```bash
105
94
  # Lister les agents
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "3.0.2",
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": ">=20.0.0"
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": "^25.6.2",
92
+ "@types/node": "^26.0.1",
93
93
  "@types/pg": "^8.20.0",
94
- "eslint": "^10.3.0",
94
+ "eslint": "^10.6.0",
95
95
  "eslint-config-prettier": "^10.1.8",
96
- "globals": "^17.6.0",
96
+ "globals": "^17.7.0",
97
97
  "pino-pretty": "^13.1.3",
98
- "prettier": "^3.8.3",
98
+ "prettier": "^3.9.4",
99
99
  "rimraf": "^6.1.3",
100
100
  "typescript": "^6.0.3",
101
- "typescript-eslint": "^8.59.2",
102
- "vitest": "^4.1.5"
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.0.1",
108
- "overmind-postgres-mcp": "^1.4.1",
109
- "pg": "^8.20.0",
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.16",
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** |