overmind-mcp 2.8.45 → 2.8.47

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 (33) hide show
  1. package/README.md +6 -0
  2. package/dist/lib/processRegistry.d.ts.map +1 -1
  3. package/dist/lib/processRegistry.js +3 -1
  4. package/dist/lib/processRegistry.js.map +1 -1
  5. package/dist/lib/sessions.d.ts.map +1 -1
  6. package/dist/lib/sessions.js +3 -1
  7. package/dist/lib/sessions.js.map +1 -1
  8. package/dist/memory/PostgresMemoryProvider.js +15 -15
  9. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  10. package/dist/services/NousHermesRunner.d.ts +50 -0
  11. package/dist/services/NousHermesRunner.d.ts.map +1 -1
  12. package/dist/services/NousHermesRunner.js +7 -247
  13. package/dist/services/NousHermesRunner.js.map +1 -1
  14. package/dist/services/hermes/binaryFinder.d.ts +8 -0
  15. package/dist/services/hermes/binaryFinder.d.ts.map +1 -0
  16. package/dist/services/hermes/binaryFinder.js +92 -0
  17. package/dist/services/hermes/binaryFinder.js.map +1 -0
  18. package/dist/services/hermes/configYamlFilter.d.ts +12 -0
  19. package/dist/services/hermes/configYamlFilter.d.ts.map +1 -0
  20. package/dist/services/hermes/configYamlFilter.js +70 -0
  21. package/dist/services/hermes/configYamlFilter.js.map +1 -0
  22. package/dist/services/hermes/processUtils.d.ts +10 -0
  23. package/dist/services/hermes/processUtils.d.ts.map +1 -0
  24. package/dist/services/hermes/processUtils.js +68 -0
  25. package/dist/services/hermes/processUtils.js.map +1 -0
  26. package/dist/services/hermes/providerConfig.d.ts +19 -0
  27. package/dist/services/hermes/providerConfig.d.ts.map +1 -0
  28. package/dist/services/hermes/providerConfig.js +53 -0
  29. package/dist/services/hermes/providerConfig.js.map +1 -0
  30. package/docs/SETUP_HERMES_AGENT_FROM_SCRATCH.md +6 -0
  31. package/package.json +1 -1
  32. package/scripts/postgres-manager.mjs +1 -1
  33. package/scripts/setup.mjs +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configYamlFilter.d.ts","sourceRoot":"","sources":["../../../src/services/hermes/configYamlFilter.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAwDzF"}
@@ -0,0 +1,70 @@
1
+ import fs from 'fs';
2
+ import pino from 'pino';
3
+ const logger = pino({ name: 'NousHermesRunner' });
4
+ /**
5
+ * Filter a Hermes config.yaml to only include the allowed MCP servers.
6
+ *
7
+ * Reads the `mcp_servers:` block from the source YAML, extracts each server
8
+ * sub-block (by indentation), and keeps only those whose name is in
9
+ * `allowedServers`. Non-mcp_servers content (header, comments) is preserved.
10
+ *
11
+ * Returns a valid YAML string. If the source file doesn't exist, returns
12
+ * an empty `mcp_servers: {}` block.
13
+ */
14
+ export function filterConfigYaml(sourceYamlPath, allowedServers) {
15
+ try {
16
+ if (!fs.existsSync(sourceYamlPath))
17
+ return 'mcp_servers: {}\n';
18
+ const yamlText = fs.readFileSync(sourceYamlPath, 'utf8');
19
+ const lines = yamlText.split(/\r?\n/);
20
+ let inMcpServers = false;
21
+ let currentServerName = '';
22
+ const serverBlocks = {};
23
+ const headerLines = [];
24
+ for (const line of lines) {
25
+ const trimmed = line.trim();
26
+ if (line.match(/^mcp_servers:\s*$/) || line.match(/^mcp_servers:\s*#.*$/)) {
27
+ inMcpServers = true;
28
+ headerLines.push(line);
29
+ continue;
30
+ }
31
+ if (inMcpServers) {
32
+ const indentMatch = line.match(/^(\s+)/);
33
+ if (!indentMatch) {
34
+ inMcpServers = false;
35
+ headerLines.push(line);
36
+ continue;
37
+ }
38
+ const indent = indentMatch[1].length;
39
+ const keyMatch = trimmed.match(/^([a-zA-Z0-9_-]+)\s*:/);
40
+ if (keyMatch && indent === 2) {
41
+ currentServerName = keyMatch[1];
42
+ serverBlocks[currentServerName] = [line];
43
+ }
44
+ else if (currentServerName) {
45
+ serverBlocks[currentServerName].push(line);
46
+ }
47
+ }
48
+ else {
49
+ headerLines.push(line);
50
+ }
51
+ }
52
+ let result = '';
53
+ for (const line of headerLines) {
54
+ result += line + '\n';
55
+ if (line.match(/^mcp_servers:\s*$/) || line.match(/^mcp_servers:\s*#.*$/)) {
56
+ for (const srv of allowedServers) {
57
+ if (serverBlocks[srv]) {
58
+ result += serverBlocks[srv].join('\n') + '\n';
59
+ }
60
+ }
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ catch (err) {
66
+ logger.error({ sourceYamlPath, error: err }, '[YAML_FILTER] Unexpected failure while filtering config.yaml.');
67
+ return 'mcp_servers: {}\n';
68
+ }
69
+ }
70
+ //# sourceMappingURL=configYamlFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configYamlFilter.js","sourceRoot":"","sources":["../../../src/services/hermes/configYamlFilter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ChildProcess } from 'child_process';
2
+ /**
3
+ * Kill a process tree reliably across platforms.
4
+ *
5
+ * On Windows, child.kill() only terminates the cmd.exe wrapper — the actual
6
+ * child becomes orphaned. We use taskkill /F /T to propagate the kill to the
7
+ * entire subtree. On Unix we escalate SIGTERM → SIGKILL after a 2s grace.
8
+ */
9
+ export declare function killProcessTree(child: ChildProcess): Promise<void>;
10
+ //# sourceMappingURL=processUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processUtils.d.ts","sourceRoot":"","sources":["../../../src/services/hermes/processUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDlE"}
@@ -0,0 +1,68 @@
1
+ import { exec } from 'child_process';
2
+ import pino from 'pino';
3
+ const logger = pino({ name: 'NousHermesRunner' });
4
+ /**
5
+ * Kill a process tree reliably across platforms.
6
+ *
7
+ * On Windows, child.kill() only terminates the cmd.exe wrapper — the actual
8
+ * child becomes orphaned. We use taskkill /F /T to propagate the kill to the
9
+ * entire subtree. On Unix we escalate SIGTERM → SIGKILL after a 2s grace.
10
+ */
11
+ export function killProcessTree(child) {
12
+ return new Promise((resolve) => {
13
+ if (!child) {
14
+ logger.debug('[KILL] No child process reference provided.');
15
+ resolve();
16
+ return;
17
+ }
18
+ if (child.exitCode !== null || child.killed) {
19
+ logger.debug({ pid: child.pid, exitCode: child.exitCode, killed: child.killed }, '[KILL] Process is already dead or marked killed.');
20
+ resolve();
21
+ return;
22
+ }
23
+ logger.info({ pid: child.pid }, '[KILL] Initiating process tree termination...');
24
+ let settled = false;
25
+ const finish = () => {
26
+ if (settled)
27
+ return;
28
+ settled = true;
29
+ logger.debug({ pid: child.pid }, '[KILL] Process tree termination sequence completed.');
30
+ resolve();
31
+ };
32
+ child.once('exit', finish);
33
+ if (process.platform === 'win32' && child.pid && typeof child.pid === 'number' && child.pid > 0) {
34
+ const cmd = `taskkill /F /T /PID ${child.pid}`;
35
+ logger.debug({ cmd }, '[KILL] Executing Windows taskkill...');
36
+ exec(cmd, (err, stdout, stderr) => {
37
+ if (err) {
38
+ logger.debug({ err, stderr }, '[KILL] taskkill failed or process was already dead.');
39
+ }
40
+ else {
41
+ logger.debug({ stdout }, '[KILL] taskkill completed successfully.');
42
+ }
43
+ });
44
+ }
45
+ else {
46
+ try {
47
+ logger.debug({ pid: child.pid }, '[KILL] Dispatched SIGTERM signal.');
48
+ child.kill('SIGTERM');
49
+ }
50
+ catch (e) {
51
+ logger.debug({ pid: child.pid, error: e }, '[KILL] SIGTERM dispatch failed.');
52
+ }
53
+ setTimeout(() => {
54
+ if (child.exitCode === null && !child.killed) {
55
+ try {
56
+ logger.warn({ pid: child.pid }, '[KILL] SIGTERM ignored. Escalating to SIGKILL...');
57
+ child.kill('SIGKILL');
58
+ }
59
+ catch (e) {
60
+ logger.debug({ pid: child.pid, error: e }, '[KILL] SIGKILL dispatch failed.');
61
+ }
62
+ }
63
+ }, 2000);
64
+ }
65
+ setTimeout(finish, 5000);
66
+ });
67
+ }
68
+ //# sourceMappingURL=processUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processUtils.js","sourceRoot":"","sources":["../../../src/services/hermes/processUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Provider configuration constants for the Hermes runner.
3
+ *
4
+ * Extracted from NousHermesRunner.ts to reduce file size and improve
5
+ * discoverability. These are static lookups — no runtime side-effects.
6
+ */
7
+ /**
8
+ * Default base URL for a given provider. Used when settings.json
9
+ * doesn't specify ANTHROPIC_BASE_URL. Each provider has its canonical
10
+ * endpoint baked in here so the runner doesn't need an external config.
11
+ */
12
+ export declare function defaultBaseUrlFor(provider: string): string;
13
+ /**
14
+ * Every env-var name the runner knows about for credential resolution.
15
+ * Declared at module scope so it's available for the RAW pre-interpolation
16
+ * capture. 100% exhaustive — every token key the runner checks.
17
+ */
18
+ export declare const TOKEN_KEYS: string[];
19
+ //# sourceMappingURL=providerConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerConfig.d.ts","sourceRoot":"","sources":["../../../src/services/hermes/providerConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,UAwBtB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Provider configuration constants for the Hermes runner.
3
+ *
4
+ * Extracted from NousHermesRunner.ts to reduce file size and improve
5
+ * discoverability. These are static lookups — no runtime side-effects.
6
+ */
7
+ /**
8
+ * Default base URL for a given provider. Used when settings.json
9
+ * doesn't specify ANTHROPIC_BASE_URL. Each provider has its canonical
10
+ * endpoint baked in here so the runner doesn't need an external config.
11
+ */
12
+ export function defaultBaseUrlFor(provider) {
13
+ switch (provider) {
14
+ case 'minimax-cn': return 'https://api.minimaxi.com/anthropic';
15
+ case 'minimax': return 'https://api.minimax.com/anthropic';
16
+ case 'zai':
17
+ case 'z-ai': return 'https://api.z.ai/api/coding/paas/v4';
18
+ case 'anthropic': return 'https://api.anthropic.com';
19
+ case 'openai': return 'https://api.openai.com/v1';
20
+ default: return 'https://api.z.ai/api/coding/paas/v4';
21
+ }
22
+ }
23
+ /**
24
+ * Every env-var name the runner knows about for credential resolution.
25
+ * Declared at module scope so it's available for the RAW pre-interpolation
26
+ * capture. 100% exhaustive — every token key the runner checks.
27
+ */
28
+ export const TOKEN_KEYS = [
29
+ // Generic Anthropic-compatible (Hermes v0.16.0)
30
+ 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_AUTH_TOKEN_E', 'ANTHROPIC_AUTH_TOKEN_F', 'ANTHROPIC_AUTH_TOKEN_Y',
31
+ // Suffixes numériques 1..9 (convention observée dans les .env prod)
32
+ 'ANTHROPIC_AUTH_TOKEN_1', 'ANTHROPIC_AUTH_TOKEN_2', 'ANTHROPIC_AUTH_TOKEN_3', 'ANTHROPIC_AUTH_TOKEN_4', 'ANTHROPIC_AUTH_TOKEN_5',
33
+ 'ANTHROPIC_AUTH_TOKEN_6', 'ANTHROPIC_AUTH_TOKEN_7', 'ANTHROPIC_AUTH_TOKEN_8', 'ANTHROPIC_AUTH_TOKEN_9',
34
+ 'ANTHROPIC_AUTH_TOKEN_0',
35
+ // Z.AI / GLM
36
+ 'GLM_API_KEY', 'GLM_API_KEY_E', 'GLM_API_KEY_Y',
37
+ 'Z_AI_API_KEY', 'ZAI_ANTHROPIC_FALLBACK_KEY',
38
+ 'ZAI_API_KEY_E', 'ZAI_API_KEY_Y',
39
+ 'ZAI_API_KEY_1', 'ZAI_API_KEY_2', 'ZAI_API_KEY_3', 'ZAI_API_KEY_4', 'ZAI_API_KEY_5',
40
+ 'ZAI_API_KEY_6', 'ZAI_API_KEY_7', 'ZAI_API_KEY_8', 'ZAI_API_KEY_9', 'ZAI_API_KEY_0',
41
+ // MiniMax
42
+ 'MINIMAX_API_KEY', 'MINIMAX_CN_API_KEY',
43
+ 'MINIMAX_API_KEY_E', 'MINIMAX_API_KEY_Y',
44
+ 'MINIMAX_API_KEY_1', 'MINIMAX_API_KEY_2', 'MINIMAX_API_KEY_3', 'MINIMAX_API_KEY_4', 'MINIMAX_API_KEY_5',
45
+ 'MINIMAX_CN_API_KEY_E', 'MINIMAX_CN_API_KEY_Y',
46
+ 'MINIMAX_CN_API_KEY_1', 'MINIMAX_CN_API_KEY_2', 'MINIMAX_CN_API_KEY_3', 'MINIMAX_CN_API_KEY_4', 'MINIMAX_CN_API_KEY_5',
47
+ // OpenAI fallback
48
+ 'OPENAI_API_KEY', 'OPENAI_AUTH_TOKEN',
49
+ // Mistral
50
+ 'MISTRAL_API_KEY', 'MISTRAL_API_KEY_1', 'MISTRAL_API_KEY_2', 'MISTRAL_API_KEY_3', 'MISTRAL_API_KEY_4', 'MISTRAL_API_KEY_5',
51
+ 'MISTRAL_API_KEY_6', 'MISTRAL_API_KEY_7', 'MISTRAL_API_KEY_E', 'MISTRAL_API_KEY_Y',
52
+ ];
53
+ //# sourceMappingURL=providerConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerConfig.js","sourceRoot":"","sources":["../../../src/services/hermes/providerConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,OAAO,oCAAoC,CAAC;QAC/D,KAAK,SAAS,CAAC,CAAI,OAAO,mCAAmC,CAAC;QAC9D,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC,CAAO,OAAO,qCAAqC,CAAC;QAChE,KAAK,WAAW,CAAC,CAAE,OAAO,2BAA2B,CAAC;QACtD,KAAK,QAAQ,CAAC,CAAK,OAAO,2BAA2B,CAAC;QACtD,OAAO,CAAC,CAAW,OAAO,qCAAqC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gDAAgD;IAChD,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB;IACpG,oEAAoE;IACpE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB;IAChI,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB;IACtG,wBAAwB;IACxB,aAAa;IACb,aAAa,EAAE,eAAe,EAAE,eAAe;IAC/C,cAAc,EAAE,4BAA4B;IAC5C,eAAe,EAAE,eAAe;IAChC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IACnF,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IACnF,UAAU;IACV,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB;IACvG,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB;IACtH,kBAAkB;IAClB,gBAAgB,EAAE,mBAAmB;IACrC,UAAU;IACV,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB;IAC1H,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB;CACnF,CAAC"}
@@ -97,6 +97,12 @@ EOF
97
97
  chmod 600 .env
98
98
  ```
99
99
 
100
+ > [!IMPORTANT]
101
+ > **Déclaration du Workspace (`OVERMIND_WORKSPACE`)**
102
+ > Pour éviter les erreurs de résolution (notamment le problème de la poule et de l'œuf où le `.env` de projet n'est pas lu car le chemin du workspace n'est pas encore identifié), il est fortement conseillé de déclarer le chemin du workspace au niveau du système ou de la configuration de service, et non dans le `.env` du projet :
103
+ > * **Via Systemd** : Ajoutez `WorkingDirectory=/chemin/du/projet` ou `Environment=OVERMIND_WORKSPACE=/chemin/du/projet` dans la section `[Service]` de votre fichier d'unité.
104
+ > * **Via le Shell** : Exécutez `export OVERMIND_WORKSPACE="/chemin/du/projet"` (et ajoutez-le dans `.bashrc` ou `.profile` pour persister).
105
+
100
106
  ---
101
107
 
102
108
  ## 4. Configuration des agents Hermes — La subtilisation expliquée
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "2.8.45",
3
+ "version": "2.8.47",
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",
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * ═══════════════════════════════════════════════════════════════════════════════
4
4
  * POSTGRES-MANAGER - Gestion PostgreSQL OverMind
package/scripts/setup.mjs CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * ═══════════════════════════════════════════════════════════════════════════════
4
4
  * SETUP SCRIPT - Installation Automatique OverMind