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.
- package/.mcp.json.example +21 -0
- package/README.md +107 -80
- package/assets/overmind.png +0 -0
- package/bin/.gitkeep +0 -0
- package/bin/README.md +34 -0
- package/bin/install-overmind-unix.sh +412 -0
- package/bin/install-overmind-windows.bat +407 -0
- package/dist/bin/cli.js +438 -7
- package/dist/bin/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/InstallHelper.d.ts +14 -0
- package/dist/lib/InstallHelper.d.ts.map +1 -0
- package/dist/lib/InstallHelper.js +113 -0
- package/dist/lib/InstallHelper.js.map +1 -0
- package/dist/lib/config.d.ts +31 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +19 -27
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/envUtils.d.ts +10 -0
- package/dist/lib/envUtils.d.ts.map +1 -0
- package/dist/lib/envUtils.js +24 -0
- package/dist/lib/envUtils.js.map +1 -0
- package/dist/lib/loadEnv.d.ts +2 -0
- package/dist/lib/loadEnv.d.ts.map +1 -0
- package/dist/lib/loadEnv.js +26 -0
- package/dist/lib/loadEnv.js.map +1 -0
- package/dist/lib/logger.d.ts +8 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/modelMapping.d.ts +18 -0
- package/dist/lib/modelMapping.d.ts.map +1 -0
- package/dist/lib/modelMapping.js +90 -0
- package/dist/lib/modelMapping.js.map +1 -0
- package/dist/lib/orchestration/dispatcher.d.ts +32 -0
- package/dist/lib/orchestration/dispatcher.d.ts.map +1 -0
- package/dist/lib/orchestration/dispatcher.js +113 -0
- package/dist/lib/orchestration/dispatcher.js.map +1 -0
- package/dist/lib/orchestration/swarm.d.ts +75 -0
- package/dist/lib/orchestration/swarm.d.ts.map +1 -0
- package/dist/lib/orchestration/swarm.js +238 -0
- package/dist/lib/orchestration/swarm.js.map +1 -0
- package/dist/lib/sessions.d.ts +3 -2
- package/dist/lib/sessions.d.ts.map +1 -1
- package/dist/lib/sessions.js +94 -25
- package/dist/lib/sessions.js.map +1 -1
- package/dist/lib/telemetry.d.ts +21 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +30 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/memory/MemoryFactory.d.ts +15 -1
- package/dist/memory/MemoryFactory.d.ts.map +1 -1
- package/dist/memory/MemoryFactory.js +53 -3
- package/dist/memory/MemoryFactory.js.map +1 -1
- package/dist/memory/PostgresMemoryProvider.d.ts +7 -0
- package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
- package/dist/memory/PostgresMemoryProvider.js +180 -105
- package/dist/memory/PostgresMemoryProvider.js.map +1 -1
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +145 -41
- package/dist/server.js.map +1 -1
- package/dist/services/AgentManager.d.ts.map +1 -1
- package/dist/services/AgentManager.js +67 -11
- package/dist/services/AgentManager.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts +8 -0
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js +510 -281
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/ClineRunner.d.ts +7 -0
- package/dist/services/ClineRunner.d.ts.map +1 -1
- package/dist/services/ClineRunner.js +76 -22
- package/dist/services/ClineRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts +6 -0
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +283 -69
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts +12 -0
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js +439 -70
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/services/{QwenRunner.d.ts → NousHermesRunner.d.ts} +12 -3
- package/dist/services/NousHermesRunner.d.ts.map +1 -0
- package/dist/services/NousHermesRunner.js +460 -0
- package/dist/services/NousHermesRunner.js.map +1 -0
- package/dist/services/OpenClawRunner.d.ts +7 -0
- package/dist/services/OpenClawRunner.d.ts.map +1 -1
- package/dist/services/OpenClawRunner.js +75 -22
- package/dist/services/OpenClawRunner.js.map +1 -1
- package/dist/services/OpenCodeRunner.d.ts +7 -0
- package/dist/services/OpenCodeRunner.d.ts.map +1 -1
- package/dist/services/OpenCodeRunner.js +75 -22
- package/dist/services/OpenCodeRunner.js.map +1 -1
- package/dist/services/{TraeRunner.d.ts → QwenCliRunner.d.ts} +9 -2
- package/dist/services/QwenCliRunner.d.ts.map +1 -0
- package/dist/services/QwenCliRunner.js +155 -0
- package/dist/services/QwenCliRunner.js.map +1 -0
- package/dist/tools/agent_control.d.ts +2 -2
- package/dist/tools/config_example.d.ts +7 -4
- package/dist/tools/config_example.d.ts.map +1 -1
- package/dist/tools/config_example.js +191 -86
- package/dist/tools/config_example.js.map +1 -1
- package/dist/tools/create_agent.d.ts +13 -7
- package/dist/tools/create_agent.d.ts.map +1 -1
- package/dist/tools/create_agent.js +8 -9
- package/dist/tools/create_agent.js.map +1 -1
- package/dist/tools/get_agent_configs.d.ts +10 -4
- package/dist/tools/get_agent_configs.d.ts.map +1 -1
- package/dist/tools/get_agent_configs.js.map +1 -1
- package/dist/tools/initialization_check.d.ts +2 -0
- package/dist/tools/initialization_check.d.ts.map +1 -0
- package/dist/tools/initialization_check.js +23 -0
- package/dist/tools/initialization_check.js.map +1 -0
- package/dist/tools/manage_agents.d.ts +34 -16
- package/dist/tools/manage_agents.d.ts.map +1 -1
- package/dist/tools/manage_agents.js +2 -2
- package/dist/tools/manage_agents.js.map +1 -1
- package/dist/tools/manage_prompts.d.ts +13 -8
- package/dist/tools/manage_prompts.d.ts.map +1 -1
- package/dist/tools/manage_prompts.js.map +1 -1
- package/dist/tools/memory_runs.d.ts +3 -4
- package/dist/tools/memory_runs.d.ts.map +1 -1
- package/dist/tools/memory_runs.js.map +1 -1
- package/dist/tools/memory_search.d.ts +3 -4
- package/dist/tools/memory_search.d.ts.map +1 -1
- package/dist/tools/memory_search.js.map +1 -1
- package/dist/tools/memory_store.d.ts +11 -5
- package/dist/tools/memory_store.d.ts.map +1 -1
- package/dist/tools/memory_store.js.map +1 -1
- package/dist/tools/run_agent.d.ts +13 -14
- package/dist/tools/run_agent.d.ts.map +1 -1
- package/dist/tools/run_agent.js +128 -160
- package/dist/tools/run_agent.js.map +1 -1
- package/dist/tools/run_agent_cli.d.ts +21 -0
- package/dist/tools/run_agent_cli.d.ts.map +1 -0
- package/dist/tools/run_agent_cli.js +129 -0
- package/dist/tools/run_agent_cli.js.map +1 -0
- package/dist/tools/run_agents_parallel.d.ts +34 -0
- package/dist/tools/run_agents_parallel.d.ts.map +1 -0
- package/dist/tools/run_agents_parallel.js +28 -0
- package/dist/tools/run_agents_parallel.js.map +1 -0
- package/dist/tools/run_claude.d.ts +8 -3
- package/dist/tools/run_claude.d.ts.map +1 -1
- package/dist/tools/run_claude.js +59 -41
- package/dist/tools/run_claude.js.map +1 -1
- package/dist/tools/run_cline.d.ts +13 -4
- package/dist/tools/run_cline.d.ts.map +1 -1
- package/dist/tools/run_cline.js +55 -43
- package/dist/tools/run_cline.js.map +1 -1
- package/dist/tools/run_gemini.d.ts +13 -4
- package/dist/tools/run_gemini.d.ts.map +1 -1
- package/dist/tools/run_gemini.js +53 -33
- package/dist/tools/run_gemini.js.map +1 -1
- package/dist/tools/run_hermes.d.ts +25 -0
- package/dist/tools/run_hermes.d.ts.map +1 -0
- package/dist/tools/run_hermes.js +93 -0
- package/dist/tools/run_hermes.js.map +1 -0
- package/dist/tools/run_kilo.d.ts +17 -7
- package/dist/tools/run_kilo.d.ts.map +1 -1
- package/dist/tools/run_kilo.js +68 -41
- package/dist/tools/run_kilo.js.map +1 -1
- package/dist/tools/run_openclaw.d.ts +13 -4
- package/dist/tools/run_openclaw.d.ts.map +1 -1
- package/dist/tools/run_openclaw.js +52 -44
- package/dist/tools/run_openclaw.js.map +1 -1
- package/dist/tools/run_opencode.d.ts +13 -4
- package/dist/tools/run_opencode.d.ts.map +1 -1
- package/dist/tools/run_opencode.js +52 -39
- package/dist/tools/run_opencode.js.map +1 -1
- package/dist/tools/run_qwencli.d.ts +24 -0
- package/dist/tools/run_qwencli.d.ts.map +1 -0
- package/dist/tools/run_qwencli.js +59 -0
- package/dist/tools/run_qwencli.js.map +1 -0
- package/docs/README.md +128 -0
- package/docs/agent_control.md +656 -0
- package/docs/index.html +493 -0
- package/docs/library.html +239 -0
- package/docs/prompt.html +1212 -0
- package/docs/script.js +428 -0
- package/docs/styles.css +2816 -0
- package/package.json +114 -83
- package/scripts/auto-changelog.mjs +132 -0
- package/scripts/auto-install.mjs +322 -0
- package/scripts/install-dependencies.mjs +462 -0
- package/scripts/postgres-manager.mjs +219 -0
- package/scripts/postinstall.mjs +538 -0
- package/scripts/setup-overmind-db.mjs +199 -0
- package/scripts/setup-windows.js +266 -0
- package/scripts/setup.mjs +397 -0
- package/scripts/test-installation.mjs +158 -0
- package/scripts/uninstall.mjs +238 -0
- package/assets/overmind_mcp_pro_banner_v3.png +0 -0
- package/dist/services/QwenRunner.d.ts.map +0 -1
- package/dist/services/QwenRunner.js +0 -102
- package/dist/services/QwenRunner.js.map +0 -1
- package/dist/services/TraeRunner.d.ts.map +0 -1
- package/dist/services/TraeRunner.js +0 -103
- package/dist/services/TraeRunner.js.map +0 -1
- package/dist/tools/run_qwen.d.ts +0 -15
- package/dist/tools/run_qwen.d.ts.map +0 -1
- package/dist/tools/run_qwen.js +0 -61
- package/dist/tools/run_qwen.js.map +0 -1
- package/dist/tools/run_trae.d.ts +0 -15
- package/dist/tools/run_trae.d.ts.map +0 -1
- package/dist/tools/run_trae.js +0 -66
- package/dist/tools/run_trae.js.map +0 -1
- package/dist/tools/shell_execute.d.ts +0 -10
- package/dist/tools/shell_execute.d.ts.map +0 -1
- package/dist/tools/shell_execute.js +0 -24
- package/dist/tools/shell_execute.js.map +0 -1
- package/dist/tools/test_agent_control.d.ts +0 -2
- package/dist/tools/test_agent_control.d.ts.map +0 -1
- package/dist/tools/test_agent_control.js +0 -92
- package/dist/tools/test_agent_control.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,83 +1,114 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "overmind-mcp",
|
|
3
|
-
"version": "2.5.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "overmind-mcp",
|
|
3
|
+
"version": "2.5.1",
|
|
4
|
+
"preferGlobal": true,
|
|
5
|
+
"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.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"overmind": "./dist/bin/cli.js",
|
|
11
|
+
"overmind-setup": "./scripts/setup.mjs",
|
|
12
|
+
"overmind-postgres": "./scripts/postgres-manager.mjs",
|
|
13
|
+
"overmind-uninstall": "./scripts/uninstall.mjs"
|
|
14
|
+
},
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"assets",
|
|
25
|
+
"README.md",
|
|
26
|
+
"docs",
|
|
27
|
+
"scripts",
|
|
28
|
+
"bin",
|
|
29
|
+
".mcp.json.example"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc",
|
|
33
|
+
"rebuild": "rimraf dist && tsc",
|
|
34
|
+
"clean": "rimraf dist",
|
|
35
|
+
"start": "node --no-warnings --env-file=.env dist/bin/cli.js",
|
|
36
|
+
"dev": "node --no-warnings --watch --env-file=.env dist/bin/cli.js",
|
|
37
|
+
"build:fix": "pnpm run clean && pnpm install && pnpm run build",
|
|
38
|
+
"lint": "eslint .",
|
|
39
|
+
"lint:fix": "eslint . --fix",
|
|
40
|
+
"format": "prettier --write .",
|
|
41
|
+
"check-types": "tsc --noEmit",
|
|
42
|
+
"test": "vitest run",
|
|
43
|
+
"test:install": "node scripts/test-installation.mjs",
|
|
44
|
+
"changeset": "changeset",
|
|
45
|
+
"version": "changeset version && node scripts/auto-changelog.mjs",
|
|
46
|
+
"release": "pnpm run build && changeset publish",
|
|
47
|
+
"prepublishOnly": "pnpm run rebuild",
|
|
48
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
49
|
+
"setup": "overmind-setup",
|
|
50
|
+
"setup:deps": "node scripts/install-dependencies.mjs",
|
|
51
|
+
"postgres:up": "overmind-postgres up",
|
|
52
|
+
"postgres:down": "overmind-postgres down",
|
|
53
|
+
"postgres:status": "overmind-postgres status",
|
|
54
|
+
"postgres:logs": "overmind-postgres logs",
|
|
55
|
+
"postgres:reset": "overmind-postgres reset"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"mcp",
|
|
59
|
+
"model-context-protocol",
|
|
60
|
+
"claude-code",
|
|
61
|
+
"ai-agent",
|
|
62
|
+
"llm",
|
|
63
|
+
"orchestration",
|
|
64
|
+
"automation",
|
|
65
|
+
"pgvector",
|
|
66
|
+
"docker",
|
|
67
|
+
"auto-installation"
|
|
68
|
+
],
|
|
69
|
+
"author": "DeaMoN888",
|
|
70
|
+
"license": "MIT",
|
|
71
|
+
"repository": {
|
|
72
|
+
"type": "git",
|
|
73
|
+
"url": "git+https://github.com/DeamonDev888/overmind-mcp.git"
|
|
74
|
+
},
|
|
75
|
+
"bugs": {
|
|
76
|
+
"url": "https://discord.gg/4AR82phtBz"
|
|
77
|
+
},
|
|
78
|
+
"homepage": "https://deamondev888.github.io/overmind-mcp/",
|
|
79
|
+
"engines": {
|
|
80
|
+
"node": ">=20.0.0 <25"
|
|
81
|
+
},
|
|
82
|
+
"packageManager": "pnpm@10.18.0",
|
|
83
|
+
"devDependencies": {
|
|
84
|
+
"@changesets/cli": "^2.31.0",
|
|
85
|
+
"@eslint/js": "^10.0.1",
|
|
86
|
+
"@types/node": "^25.6.2",
|
|
87
|
+
"@types/pg": "^8.20.0",
|
|
88
|
+
"@types/pino": "^7.0.5",
|
|
89
|
+
"eslint": "^10.3.0",
|
|
90
|
+
"eslint-config-prettier": "^10.1.8",
|
|
91
|
+
"globals": "^17.6.0",
|
|
92
|
+
"prettier": "^3.8.3",
|
|
93
|
+
"rimraf": "^6.1.3",
|
|
94
|
+
"typescript": "^6.0.3",
|
|
95
|
+
"typescript-eslint": "^8.59.2",
|
|
96
|
+
"vitest": "^4.1.5"
|
|
97
|
+
},
|
|
98
|
+
"dependencies": {
|
|
99
|
+
"async-mutex": "^0.5.0",
|
|
100
|
+
"dotenv": "^17.4.2",
|
|
101
|
+
"fastmcp": "^4.0.1",
|
|
102
|
+
"overmind-postgres-mcp": "^1.2.0",
|
|
103
|
+
"pg": "^8.20.0",
|
|
104
|
+
"pino": "^10.3.1",
|
|
105
|
+
"pino-pretty": "^13.1.3",
|
|
106
|
+
"pino-roll": "^4.0.0",
|
|
107
|
+
"tinyglobby": "^0.2.16",
|
|
108
|
+
"tslib": "^2.8.1",
|
|
109
|
+
"zod": "^4.4.3"
|
|
110
|
+
},
|
|
111
|
+
"peerDependencies": {
|
|
112
|
+
"tslib": "^2.0.0"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Auto-update CHANGELOG.md when version bumps
|
|
4
|
+
* Runs after `pnpm run version`
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { dirname, join } from 'path';
|
|
11
|
+
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = dirname(__filename);
|
|
14
|
+
const rootDir = join(__dirname, '..');
|
|
15
|
+
|
|
16
|
+
function getCurrentVersion() {
|
|
17
|
+
const pkg = JSON.parse(readFileSync(join(rootDir, 'package.json'), 'utf8'));
|
|
18
|
+
return pkg.version;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getCommitsSinceLastTag() {
|
|
22
|
+
try {
|
|
23
|
+
const output = execSync('git describe --tags --abbrev=0 HEAD~1 2>/dev/null', {
|
|
24
|
+
encoding: 'utf8',
|
|
25
|
+
cwd: rootDir,
|
|
26
|
+
}).trim();
|
|
27
|
+
|
|
28
|
+
const commits = execSync(`git log ${output}..HEAD --oneline --no-merges`, {
|
|
29
|
+
encoding: 'utf8',
|
|
30
|
+
cwd: rootDir,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return commits.split('\n').filter(Boolean);
|
|
34
|
+
} catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function categorizeCommits(commits) {
|
|
40
|
+
const features = [];
|
|
41
|
+
const fixes = [];
|
|
42
|
+
const docs = [];
|
|
43
|
+
const infra = [];
|
|
44
|
+
const deps = [];
|
|
45
|
+
|
|
46
|
+
for (const commit of commits) {
|
|
47
|
+
const msg = commit.replace(/^[a-f0-9]+ /, '');
|
|
48
|
+
if (msg.startsWith('feat') || msg.startsWith('feat:')) {
|
|
49
|
+
features.push(msg);
|
|
50
|
+
} else if (msg.startsWith('fix') || msg.startsWith('fix:')) {
|
|
51
|
+
fixes.push(msg);
|
|
52
|
+
} else if (msg.startsWith('docs') || msg.startsWith('doc:')) {
|
|
53
|
+
docs.push(msg);
|
|
54
|
+
} else if (msg.startsWith('chore') || msg.startsWith('refactor') || msg.startsWith('infra')) {
|
|
55
|
+
infra.push(msg);
|
|
56
|
+
} else if (msg.startsWith('deps')) {
|
|
57
|
+
deps.push(msg);
|
|
58
|
+
} else {
|
|
59
|
+
infra.push(msg);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return { features, fixes, docs, infra, deps };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function formatChangelogSection(version, commits) {
|
|
67
|
+
const date = new Date().toISOString().split('T')[0];
|
|
68
|
+
const { features, fixes, docs, infra, deps } = categorizeCommits(commits);
|
|
69
|
+
|
|
70
|
+
let section = `## [${version}] - ${date}\n\n`;
|
|
71
|
+
|
|
72
|
+
if (features.length > 0) {
|
|
73
|
+
section += '### 🚀 Features\n\n';
|
|
74
|
+
for (const f of features) section += `- ${f}\n`;
|
|
75
|
+
section += '\n';
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (fixes.length > 0) {
|
|
79
|
+
section += '### 🐛 Fixes\n\n';
|
|
80
|
+
for (const f of fixes) section += `- ${f}\n`;
|
|
81
|
+
section += '\n';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (docs.length > 0) {
|
|
85
|
+
section += '### 📝 Documentation\n\n';
|
|
86
|
+
for (const d of docs) section += `- ${d}\n`;
|
|
87
|
+
section += '\n';
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (infra.length > 0) {
|
|
91
|
+
section += '### 🔧 Infrastructure\n\n';
|
|
92
|
+
for (const i of infra) section += `- ${i}\n`;
|
|
93
|
+
section += '\n';
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (deps.length > 0) {
|
|
97
|
+
section += '### 📦 Dependencies\n\n';
|
|
98
|
+
for (const d of deps) section += `- ${d}\n`;
|
|
99
|
+
section += '\n';
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return section;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function updateChangelog() {
|
|
106
|
+
const version = getCurrentVersion();
|
|
107
|
+
const commits = getCommitsSinceLastTag();
|
|
108
|
+
|
|
109
|
+
if (commits.length === 0) {
|
|
110
|
+
console.log('No commits to add to changelog');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const changelogPath = join(rootDir, 'CHANGELOG.md');
|
|
115
|
+
let changelog = readFileSync(changelogPath, 'utf8');
|
|
116
|
+
|
|
117
|
+
// Remove existing placeholder if present
|
|
118
|
+
changelog = changelog.replace(`## [${version}] - YYYY-MM-DD\n\n---\n\n`, '');
|
|
119
|
+
|
|
120
|
+
const newSection = formatChangelogSection(version, commits);
|
|
121
|
+
|
|
122
|
+
// Insert after the header comment block
|
|
123
|
+
const insertPoint = changelog.indexOf('---\n\n## ');
|
|
124
|
+
if (insertPoint !== -1) {
|
|
125
|
+
changelog = changelog.slice(0, insertPoint + 5) + newSection + changelog.slice(insertPoint + 5);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
writeFileSync(changelogPath, changelog);
|
|
129
|
+
console.log(`✅ CHANGELOG.md updated with v${version}`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
updateChangelog();
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
* OVERMIND-MCP - INSTALLATION AUTOMATIQUE (POST-INSTALL)
|
|
5
|
+
* ═══════════════════════════════════════════════════════════════════════════════
|
|
6
|
+
* Ce script est exécuté automatiquement après npm install -g
|
|
7
|
+
* Il installe et configure TOUT :
|
|
8
|
+
* - Docker Desktop (vérification)
|
|
9
|
+
* - PostgreSQL + pgvector (si absent)
|
|
10
|
+
* - Infrastructure complète
|
|
11
|
+
* - Invite l'utilisateur à voir les services dans Docker Desktop
|
|
12
|
+
* ═══════════════════════════════════════════════════════════════════════════════
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { execSync, spawn } from 'child_process';
|
|
16
|
+
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
17
|
+
import { join } from 'path';
|
|
18
|
+
import { fileURLToPath } from 'url';
|
|
19
|
+
import { dirname } from 'path';
|
|
20
|
+
import { createInterface } from 'readline';
|
|
21
|
+
|
|
22
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
23
|
+
const __dirname = dirname(__filename);
|
|
24
|
+
|
|
25
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
26
|
+
// CONFIG
|
|
27
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
28
|
+
|
|
29
|
+
const INSTALL_DIR = join(
|
|
30
|
+
process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH,
|
|
31
|
+
'.overmind'
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
35
|
+
// UTILS
|
|
36
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
37
|
+
|
|
38
|
+
function logSection(title) {
|
|
39
|
+
console.log('\n╔══════════════════════════════════════════════════════════════════╗');
|
|
40
|
+
console.log(`║ ${title.padEnd(64)} ║`);
|
|
41
|
+
console.log('╚══════════════════════════════════════════════════════════════════╝');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function runCommand(cmd, options = {}) {
|
|
45
|
+
try {
|
|
46
|
+
return execSync(cmd, { stdio: 'pipe', encoding: 'utf8', ...options });
|
|
47
|
+
} catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function promptYesNo(question) {
|
|
53
|
+
const rl = createInterface({
|
|
54
|
+
input: process.stdin,
|
|
55
|
+
output: process.stdout,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
rl.question(`${question} (y/N): `, (answer) => {
|
|
60
|
+
rl.close();
|
|
61
|
+
resolve(answer.toLowerCase().startsWith('y'));
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function runCommandAsync(cmd, description) {
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
console.log(`🔧 ${description}`);
|
|
69
|
+
console.log(` $ ${cmd}`);
|
|
70
|
+
|
|
71
|
+
const child = spawn(cmd, { shell: true, stdio: 'inherit' });
|
|
72
|
+
|
|
73
|
+
child.on('close', (code) => {
|
|
74
|
+
if (code === 0) {
|
|
75
|
+
console.log(`✅ ${description} terminé`);
|
|
76
|
+
resolve(true);
|
|
77
|
+
} else {
|
|
78
|
+
console.error(`❌ Erreur (code ${code})`);
|
|
79
|
+
reject(new Error(`Command failed with code ${code}`));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
child.on('error', (err) => {
|
|
84
|
+
console.error('❌ Erreur:', err.message);
|
|
85
|
+
reject(err);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
91
|
+
// INSTALLATION STEPS
|
|
92
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
93
|
+
|
|
94
|
+
async function checkDocker() {
|
|
95
|
+
logSection('VÉRIFICATION DOCKER');
|
|
96
|
+
|
|
97
|
+
const version = runCommand('docker --version');
|
|
98
|
+
if (!version) {
|
|
99
|
+
console.log('❌ Docker non trouvé');
|
|
100
|
+
console.log('');
|
|
101
|
+
console.log('📥 Installation Docker requise:');
|
|
102
|
+
|
|
103
|
+
const platform = process.platform;
|
|
104
|
+
if (platform === 'win32') {
|
|
105
|
+
console.log(' Windows: https://www.docker.com/products/docker-desktop/');
|
|
106
|
+
} else if (platform === 'darwin') {
|
|
107
|
+
console.log(' macOS: https://www.docker.com/products/docker-desktop/');
|
|
108
|
+
} else {
|
|
109
|
+
console.log(' Linux: https://docs.docker.com/engine/install/');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const answer = await promptYesNo('Voulez-vous ouvrir le site de téléchargement ?');
|
|
113
|
+
if (answer) {
|
|
114
|
+
const url = 'https://www.docker.com/products/docker-desktop/';
|
|
115
|
+
const openCmd = process.platform === 'win32' ? 'start' :
|
|
116
|
+
process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
117
|
+
runCommand(`${openCmd} ${url}`, { stdio: 'ignore' });
|
|
118
|
+
console.log('✅ Navigateur ouvert. Installez Docker, puis relancez: npm install -g overmind-mcp');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
console.log('✅ Docker détecté:', version.trim());
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async function setupInfrastructure() {
|
|
129
|
+
logSection('TÉLÉCHARGEMENT INFRASTRUCTURE');
|
|
130
|
+
|
|
131
|
+
mkdirSync(INSTALL_DIR, { recursive: true });
|
|
132
|
+
|
|
133
|
+
console.log('📥 Téléchargement docker-compose.yml...');
|
|
134
|
+
|
|
135
|
+
const composeUrl = 'https://raw.githubusercontent.com/DeamonDev888/overmind-mcp/main/docker-compose.yml';
|
|
136
|
+
const exportersUrl = 'https://raw.githubusercontent.com/DeamonDev888/overmind-mcp/main/docker-compose.exporters.yml';
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
const composeData = runCommand(`curl -sL --max-time 30 ${composeUrl}`);
|
|
140
|
+
if (composeData) {
|
|
141
|
+
writeFileSync(join(INSTALL_DIR, 'docker-compose.yml'), composeData);
|
|
142
|
+
console.log('✅ docker-compose.yml téléchargé');
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const exportersData = runCommand(`curl -sL --max-time 30 ${exportersUrl}`);
|
|
146
|
+
if (exportersData) {
|
|
147
|
+
writeFileSync(join(INSTALL_DIR, 'docker-compose.exporters.yml'), exportersData);
|
|
148
|
+
console.log('✅ docker-compose.exporters.yml téléchargé');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return true;
|
|
152
|
+
} catch (error) {
|
|
153
|
+
console.error('❌ Erreur téléchargement:', error.message);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async function startInfrastructure() {
|
|
159
|
+
logSection('DÉMARRAGE INFRASTRUCTURE DOCKER');
|
|
160
|
+
|
|
161
|
+
const composeFile = join(INSTALL_DIR, 'docker-compose.yml');
|
|
162
|
+
|
|
163
|
+
if (!existsSync(composeFile)) {
|
|
164
|
+
console.log('⚠️ docker-compose.yml non trouvé. Installation infrastructure skippée.');
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
try {
|
|
169
|
+
console.log('🚀 Démarrage des services...');
|
|
170
|
+
await runCommandAsync(
|
|
171
|
+
`cd "${INSTALL_DIR}" && docker-compose -f docker-compose.yml up -d`,
|
|
172
|
+
'Démarrage infrastructure'
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
console.log('');
|
|
176
|
+
console.log('⏳ Attente démarrage des services (15s)...');
|
|
177
|
+
await new Promise(resolve => setTimeout(resolve, 15000));
|
|
178
|
+
|
|
179
|
+
return true;
|
|
180
|
+
} catch (error) {
|
|
181
|
+
console.error('❌ Erreur démarrage:', error.message);
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async function validateServices() {
|
|
187
|
+
logSection('VALIDATION DES SERVICES');
|
|
188
|
+
|
|
189
|
+
console.log('🔍 Vérification des containers...');
|
|
190
|
+
console.log('');
|
|
191
|
+
|
|
192
|
+
const services = [
|
|
193
|
+
{ name: 'PostgreSQL', filter: 'overmind-postgres-pgvector', check: 'pg_isready' },
|
|
194
|
+
];
|
|
195
|
+
|
|
196
|
+
let allRunning = true;
|
|
197
|
+
|
|
198
|
+
for (const service of services) {
|
|
199
|
+
const containerName = runCommand(
|
|
200
|
+
`docker ps --filter "name=${service.filter}" --format "{{.Names}}"`,
|
|
201
|
+
{ stdio: 'pipe' }
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
if (containerName) {
|
|
205
|
+
const name = containerName.trim();
|
|
206
|
+
console.log(`✅ ${service.name}: ${name}`);
|
|
207
|
+
} else {
|
|
208
|
+
console.log(`❌ ${service.name}: Non trouvé`);
|
|
209
|
+
allRunning = false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return allRunning;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
async function createEnvConfig() {
|
|
217
|
+
const envFile = join(INSTALL_DIR, '.env');
|
|
218
|
+
|
|
219
|
+
if (!existsSync(envFile)) {
|
|
220
|
+
logSection('CRÉATION CONFIGURATION');
|
|
221
|
+
|
|
222
|
+
const envContent = `# OverMind-MCP Environment Configuration
|
|
223
|
+
# Généré automatiquement par npm install
|
|
224
|
+
|
|
225
|
+
# PostgreSQL
|
|
226
|
+
POSTGRES_HOST=localhost
|
|
227
|
+
POSTGRES_PORT=5432
|
|
228
|
+
POSTGRES_USER=postgres
|
|
229
|
+
POSTGRES_PASSWORD=overmind_temp_password_change_me
|
|
230
|
+
POSTGRES_DB=overmind
|
|
231
|
+
|
|
232
|
+
# OpenTelemetry (optionnel)
|
|
233
|
+
OTEL_ENABLED=false
|
|
234
|
+
|
|
235
|
+
# Workspace
|
|
236
|
+
OVERMIND_WORKSPACE=${INSTALL_DIR}
|
|
237
|
+
`;
|
|
238
|
+
|
|
239
|
+
writeFileSync(envFile, envContent);
|
|
240
|
+
console.log('✅ Configuration créée:', envFile);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function showSummary() {
|
|
245
|
+
console.log('\n╔══════════════════════════════════════════════════════════════════╗');
|
|
246
|
+
console.log('║ ✅ INSTALLATION TERMINÉE ! ║');
|
|
247
|
+
console.log('╚══════════════════════════════════════════════════════════════════╝');
|
|
248
|
+
console.log('');
|
|
249
|
+
console.log('📋 SERVICES DISPONIBLES:');
|
|
250
|
+
console.log('');
|
|
251
|
+
console.log('┌─────────────────────────────────────────────────────────────────┐');
|
|
252
|
+
console.log('│ Ouvrez Docker Desktop pour voir tous les containers │');
|
|
253
|
+
console.log('│ │');
|
|
254
|
+
console.log('│ URLs utiles: │');
|
|
255
|
+
console.log('│ • Prometheus: http://localhost:9090 │');
|
|
256
|
+
console.log('│ • Grafana: http://localhost:3000 (admin/admin) │');
|
|
257
|
+
console.log('│ • Jaeger: http://localhost:16686 │');
|
|
258
|
+
console.log('│ • RabbitMQ: http://localhost:15672 (guest/guest) │');
|
|
259
|
+
console.log('│ • Temporal: http://localhost:8233 │');
|
|
260
|
+
console.log('└─────────────────────────────────────────────────────────────────┘');
|
|
261
|
+
console.log('');
|
|
262
|
+
console.log('📚 DOCUMENTATION:');
|
|
263
|
+
console.log(' • https://github.com/DeamonDev888/overmind-mcp');
|
|
264
|
+
console.log(' • https://www.npmjs.com/package/overmind-mcp');
|
|
265
|
+
console.log('');
|
|
266
|
+
console.log('🎉 PROCHAINE ÉTAPE:');
|
|
267
|
+
console.log(' • Créez votre premier agent: overmind create-agent');
|
|
268
|
+
console.log(' • Ou utilisez: overmind-setup --full');
|
|
269
|
+
console.log('');
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
273
|
+
// MAIN
|
|
274
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
275
|
+
|
|
276
|
+
async function main() {
|
|
277
|
+
console.log('╔══════════════════════════════════════════════════════════════════╗');
|
|
278
|
+
console.log('║ ║');
|
|
279
|
+
console.log('║ 🚀 OVERMIND-MCP - INSTALLATION AUTOMATIQUE ║');
|
|
280
|
+
console.log('║ npm install -g overmind-mcp ║');
|
|
281
|
+
console.log('║ ║');
|
|
282
|
+
console.log('╚══════════════════════════════════════════════════════════════════╝');
|
|
283
|
+
console.log('');
|
|
284
|
+
|
|
285
|
+
// Step 1: Check Docker
|
|
286
|
+
const dockerOk = await checkDocker();
|
|
287
|
+
if (!dockerOk) {
|
|
288
|
+
console.log('\n⚠️ Relancez après installation de Docker: npm install -g overmind-mcp');
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Step 2: Setup .env
|
|
293
|
+
await createEnvConfig();
|
|
294
|
+
|
|
295
|
+
// Step 3: Download docker-compose files
|
|
296
|
+
const downloaded = await setupInfrastructure();
|
|
297
|
+
if (!downloaded) {
|
|
298
|
+
console.log('\n⚠️ Impossible de télécharger l\'infrastructure. Continue en mode minimal.');
|
|
299
|
+
showSummary();
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Step 4: Start infrastructure
|
|
304
|
+
const started = await startInfrastructure();
|
|
305
|
+
if (!started) {
|
|
306
|
+
console.log('\n⚠️ Infrastructure non démarrée. Continue en mode minimal.');
|
|
307
|
+
showSummary();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Step 5: Validate services
|
|
312
|
+
await validateServices();
|
|
313
|
+
|
|
314
|
+
// Show summary
|
|
315
|
+
showSummary();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Run main
|
|
319
|
+
main().catch((error) => {
|
|
320
|
+
console.error('\n❌ ERREUR FATALE:', error.message);
|
|
321
|
+
process.exit(1);
|
|
322
|
+
});
|