overmind-mcp 2.2.4 → 2.3.0
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 +59 -6
- package/bin/.gitkeep +0 -0
- package/bin/README.md +34 -0
- package/dist/lib/InstallHelper.js +1 -1
- package/dist/lib/processRegistry.d.ts +71 -0
- package/dist/lib/processRegistry.d.ts.map +1 -0
- package/dist/lib/processRegistry.js +275 -0
- package/dist/lib/processRegistry.js.map +1 -0
- package/dist/server.d.ts +14 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +58 -1
- package/dist/server.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js +59 -4
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/ClineRunner.d.ts.map +1 -1
- package/dist/services/ClineRunner.js +12 -1
- package/dist/services/ClineRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +18 -0
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js +28 -1
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/services/NousHermesRunner.d.ts.map +1 -1
- package/dist/services/NousHermesRunner.js +18 -5
- package/dist/services/NousHermesRunner.js.map +1 -1
- package/dist/services/OpenClawRunner.d.ts.map +1 -1
- package/dist/services/OpenClawRunner.js +12 -2
- package/dist/services/OpenClawRunner.js.map +1 -1
- package/dist/services/OpenCodeRunner.d.ts.map +1 -1
- package/dist/services/OpenCodeRunner.js +12 -1
- package/dist/services/OpenCodeRunner.js.map +1 -1
- package/dist/services/QwenCliRunner.d.ts.map +1 -1
- package/dist/services/QwenCliRunner.js +12 -1
- package/dist/services/QwenCliRunner.js.map +1 -1
- package/dist/tools/config_example.d.ts.map +1 -1
- package/dist/tools/config_example.js +23 -7
- package/dist/tools/config_example.js.map +1 -1
- package/dist/tools/get_agent_status.d.ts +29 -0
- package/dist/tools/get_agent_status.d.ts.map +1 -0
- package/dist/tools/get_agent_status.js +45 -0
- package/dist/tools/get_agent_status.js.map +1 -0
- package/dist/tools/kill_agent.d.ts +22 -0
- package/dist/tools/kill_agent.d.ts.map +1 -0
- package/dist/tools/kill_agent.js +33 -0
- package/dist/tools/kill_agent.js.map +1 -0
- package/dist/tools/stream_agent_output.d.ts +30 -0
- package/dist/tools/stream_agent_output.d.ts.map +1 -0
- package/dist/tools/stream_agent_output.js +44 -0
- package/dist/tools/stream_agent_output.js.map +1 -0
- package/dist/tools/wait_agent.d.ts +30 -0
- package/dist/tools/wait_agent.d.ts.map +1 -0
- package/dist/tools/wait_agent.js +68 -0
- package/dist/tools/wait_agent.js.map +1 -0
- package/docs/ASYNC_AGENT_INTEGRATION.md +311 -0
- package/docs/INDEX.md +144 -144
- package/docs/docs/OVERMIND_WORKFLOW_GUIDE.md +595 -0
- package/docs/docs/PROJECT_STRUCTURE.md +101 -0
- package/docs/docs/README_POSTGRES_INTEGRATION.md +229 -0
- package/package.json +5 -5
- package/scripts/auto-install.mjs +8 -8
- package/scripts/postgres-manager.mjs +1 -1
- package/scripts/postinstall.mjs +2 -2
- package/scripts/setup.mjs +8 -5
- package/docs/guides/DEPLOYMENT.md +0 -418
- package/docs/guides/SWARM_USAGE.md +0 -444
- /package/{install-overmind-unix.sh → bin/install-overmind-unix.sh} +0 -0
- /package/{install-overmind-windows.bat → bin/install-overmind-windows.bat} +0 -0
- /package/docs/{api/prompt → prompt}/Claude_code.md +0 -0
- /package/docs/{api/prompt → prompt}/Kilo.md +0 -0
- /package/docs/{api/prompt → prompt}/Kilo_Hermes.md +0 -0
- /package/docs/{api/prompt → prompt}/Minimax4.md +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"overmind": {
|
|
4
|
+
"command": "overmind",
|
|
5
|
+
"description": "OverMind-MCP principal - Orchestration d'agents IA"
|
|
6
|
+
},
|
|
7
|
+
"memory": {
|
|
8
|
+
"command": "overmind",
|
|
9
|
+
"args": ["--memory-only"],
|
|
10
|
+
"description": "OverMind-MCP mémoire - Gestion mémoire vectorielle"
|
|
11
|
+
},
|
|
12
|
+
"overmind-postgres": {
|
|
13
|
+
"command": "overmind-postgres-mcp",
|
|
14
|
+
"description": "OverMind-PostgreSQL-MCP - Serveur PostgreSQL vectoriel optimisé pour OverMind"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"description": "Configuration MCP OverMind-MCP optimisée pour installation globale npm",
|
|
18
|
+
"version": "2.2.6",
|
|
19
|
+
"installation": "npm install -g overmind-mcp",
|
|
20
|
+
"note": "Après installation globale, les commandes 'overmind' et 'overmind-postgres-mcp' sont disponibles directement dans le système. Cette configuration utilise les binaires globaux installés par npm."
|
|
21
|
+
}
|
package/README.md
CHANGED
|
@@ -118,12 +118,65 @@ if (!isError) {
|
|
|
118
118
|
|
|
119
119
|
## 📂 Structure du Projet
|
|
120
120
|
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
121
|
+
OverMind-MCP est organisé de manière modulaire pour faciliter la navigation et la maintenance.
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
Workflow/
|
|
125
|
+
├── 📦 bin/ # Scripts d'installation
|
|
126
|
+
├── 📋 changelog/ # Historique des versions
|
|
127
|
+
├── 🐳 docker/ # Configuration Docker
|
|
128
|
+
├── 🗄️ db/ # Scripts base de données
|
|
129
|
+
├── ⚙️ config/ # Configurations MCP
|
|
130
|
+
├── 📚 docs/ # Documentation complète
|
|
131
|
+
├── 💻 src/ # Code source
|
|
132
|
+
│ ├── bin/ # Points d'entrée CLI
|
|
133
|
+
│ ├── lib/ # Bibliothèques partagées
|
|
134
|
+
│ ├── services/ # Services métier
|
|
135
|
+
│ └── tools/ # Outils MCP
|
|
136
|
+
├── 🧪 tests/ # Tests unitaires
|
|
137
|
+
└── 🔧 scripts/ # Scripts de maintenance
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**📖 Documentation détaillée** : Voir [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) pour une explication complète de chaque dossier.
|
|
141
|
+
|
|
142
|
+
**Points clés :**
|
|
143
|
+
- `src/services/` : Le cœur du système (Logique métier isolée en services)
|
|
144
|
+
- `src/tools/` : Les outils MCP qui appellent les services
|
|
145
|
+
- `src/bin/cli.ts` : Le point d'entrée exécutable pour le terminal
|
|
146
|
+
- `src/server.ts` : La définition du serveur FastMCP
|
|
147
|
+
- `.claude/` : Stockage des agents (Prompts `.md` et Settings `.json`)
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## ⚙️ Configuration MCP (après installation globale)
|
|
152
|
+
|
|
153
|
+
Après `npm install -g overmind-mcp`, voici la configuration MCP recommandée pour votre client (Claude Code, Cline, etc.) :
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"mcpServers": {
|
|
158
|
+
"overmind": {
|
|
159
|
+
"command": "overmind",
|
|
160
|
+
"description": "OverMind-MCP principal - Orchestration d'agents IA"
|
|
161
|
+
},
|
|
162
|
+
"memory": {
|
|
163
|
+
"command": "overmind",
|
|
164
|
+
"args": ["--memory-only"],
|
|
165
|
+
"description": "OverMind-MCP mémoire - Gestion mémoire vectorielle"
|
|
166
|
+
},
|
|
167
|
+
"overmind-postgres": {
|
|
168
|
+
"command": "overmind-postgres-mcp",
|
|
169
|
+
"description": "OverMind-PostgreSQL-MCP - Serveur PostgreSQL vectoriel optimisé pour OverMind"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"description": "Configuration MCP OverMind-MCP optimisée pour installation globale npm",
|
|
173
|
+
"version": "2.2.6",
|
|
174
|
+
"installation": "npm install -g overmind-mcp",
|
|
175
|
+
"note": "Après installation globale, les commandes 'overmind' et 'overmind-postgres-mcp' sont disponibles directement dans le système. Cette configuration utilise les binaires globaux installés par npm."
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**📖 Exemples de configuration détaillée** : Voir `config/README.md` pour plus de scénarios d'utilisation.
|
|
127
180
|
|
|
128
181
|
---
|
|
129
182
|
|
package/bin/.gitkeep
ADDED
|
File without changes
|
package/bin/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 📦 Installation Scripts
|
|
2
|
+
|
|
3
|
+
Ce dossier contient les scripts d'installation d'OverMind MCP.
|
|
4
|
+
|
|
5
|
+
## 📜 Fichiers
|
|
6
|
+
|
|
7
|
+
- **install-overmind-unix.sh** - Script d'installation pour Linux/macOS
|
|
8
|
+
- **install-overmind-windows.bat** - Script d'installation pour Windows
|
|
9
|
+
|
|
10
|
+
## 🚀 Utilisation
|
|
11
|
+
|
|
12
|
+
### Windows
|
|
13
|
+
```batch
|
|
14
|
+
cd bin
|
|
15
|
+
install-overmind-windows.bat
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Linux/macOS
|
|
19
|
+
```bash
|
|
20
|
+
cd bin
|
|
21
|
+
chmod +x install-overmind-unix.sh
|
|
22
|
+
./install-overmind-unix.sh
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 📋 Ce qui est installé
|
|
26
|
+
|
|
27
|
+
- OverMind MCP (NPM package)
|
|
28
|
+
- PostgreSQL + pgvector (Docker)
|
|
29
|
+
- RabbitMQ (Docker)
|
|
30
|
+
- Temporal (Docker)
|
|
31
|
+
- Prometheus (Docker)
|
|
32
|
+
- Grafana (Docker)
|
|
33
|
+
- Jaeger (Docker)
|
|
34
|
+
- Redis (Docker)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export type ProcessStatus = 'running' | 'done' | 'failed' | 'orphaned';
|
|
2
|
+
export interface ProcessEntry {
|
|
3
|
+
id: string;
|
|
4
|
+
ts: number;
|
|
5
|
+
pid?: number;
|
|
6
|
+
runner?: string;
|
|
7
|
+
agentName: string;
|
|
8
|
+
status: ProcessStatus;
|
|
9
|
+
outputBuffer: string;
|
|
10
|
+
exitCode?: number | null;
|
|
11
|
+
lastOutputAt?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if a PID is still alive on the system.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isPidAlive(pid: number): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Kill a process tree (PID + all children) — Windows or Unix.
|
|
19
|
+
*/
|
|
20
|
+
export declare function killProcessTree(pid: number): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Register a new running process. Called immediately after spawn(),
|
|
23
|
+
* before sessionId is known.
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerProcess(pid: number, meta: {
|
|
26
|
+
agentName: string;
|
|
27
|
+
runner?: string;
|
|
28
|
+
configPath?: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Link a sessionId to an already-registered PID.
|
|
32
|
+
* Called when the runner emits a sessionId for the first time.
|
|
33
|
+
*/
|
|
34
|
+
export declare function linkSessionToPid(sessionId: string, pid: number, configPath?: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Update output buffer for a running process.
|
|
37
|
+
* Called in stdout 'data' handler to enable live streaming.
|
|
38
|
+
*/
|
|
39
|
+
export declare function appendOutput(pid: number, chunk: string, configPath?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Mark a process as done/failed/orphaned.
|
|
42
|
+
*/
|
|
43
|
+
export declare function updateProcessStatus(pid: number, status: ProcessStatus, exitCode?: number | null, configPath?: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Get current status + output for an agent.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getProcessStatus(agentName: string, runner?: string, configPath?: string): Promise<ProcessEntry | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Kill a running agent by PID.
|
|
50
|
+
*/
|
|
51
|
+
export declare function killAgent(agentName: string, runner?: string, configPath?: string): Promise<{
|
|
52
|
+
killed: boolean;
|
|
53
|
+
pid?: number;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Unregister (remove) a process entry. Call after TTL expires.
|
|
57
|
+
*/
|
|
58
|
+
export declare function unregisterProcess(pid: number, configPath?: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Scan all entries and clean up dead processes and old entries.
|
|
61
|
+
* Called on startup and periodically.
|
|
62
|
+
*/
|
|
63
|
+
export declare function cleanupRegistry(configPath?: string): Promise<{
|
|
64
|
+
orphaned: number;
|
|
65
|
+
expired: number;
|
|
66
|
+
}>;
|
|
67
|
+
/**
|
|
68
|
+
* Get all running processes.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getRunningProcesses(configPath?: string): Promise<ProcessEntry[]>;
|
|
71
|
+
//# sourceMappingURL=processRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processRegistry.d.ts","sourceRoot":"","sources":["../../src/lib/processRegistry.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmCD;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY9D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsB9B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAuCD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { exec } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { Mutex } from 'async-mutex';
|
|
6
|
+
import { getWorkspaceDir } from './config.js';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
const registryMutex = new Mutex();
|
|
9
|
+
const SESSIONS_FILE = '.claude/sessions.json';
|
|
10
|
+
const PROCESS_TTL_MS = 60 * 60 * 1000; // 1h after done/failed → cleanup
|
|
11
|
+
function getSessionsPath(workspaceDir) {
|
|
12
|
+
return path.resolve(workspaceDir || getWorkspaceDir(), SESSIONS_FILE);
|
|
13
|
+
}
|
|
14
|
+
function buildKey(runner, agentName) {
|
|
15
|
+
return runner ? `${runner}:${agentName}` : agentName;
|
|
16
|
+
}
|
|
17
|
+
async function readStore(workspaceDir) {
|
|
18
|
+
const filePath = getSessionsPath(workspaceDir);
|
|
19
|
+
try {
|
|
20
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
21
|
+
return { store: JSON.parse(content), path: filePath };
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return { store: {}, path: filePath };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function writeStore(store, filePath) {
|
|
28
|
+
const dir = path.dirname(filePath);
|
|
29
|
+
await fs.mkdir(dir, { recursive: true });
|
|
30
|
+
await fs.writeFile(filePath, JSON.stringify(store, null, 2), 'utf-8');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if a PID is still alive on the system.
|
|
34
|
+
*/
|
|
35
|
+
export async function isPidAlive(pid) {
|
|
36
|
+
try {
|
|
37
|
+
if (process.platform === 'win32') {
|
|
38
|
+
await execAsync(`tasklist /FI "PID eq ${pid}" /FO CSV /NH`);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
await execAsync(`kill -0 ${pid}`);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Kill a process tree (PID + all children) — Windows or Unix.
|
|
52
|
+
*/
|
|
53
|
+
export async function killProcessTree(pid) {
|
|
54
|
+
try {
|
|
55
|
+
if (process.platform === 'win32') {
|
|
56
|
+
await execAsync(`taskkill /F /T /PID ${pid}`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
await execAsync(`kill -9 ${pid}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Process may have already exited — that's fine
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Register a new running process. Called immediately after spawn(),
|
|
68
|
+
* before sessionId is known.
|
|
69
|
+
*/
|
|
70
|
+
export async function registerProcess(pid, meta) {
|
|
71
|
+
return registryMutex.runExclusive(async () => {
|
|
72
|
+
const { store, path: filePath } = await readStore(meta.configPath);
|
|
73
|
+
const key = buildKey(meta.runner, meta.agentName);
|
|
74
|
+
// Preserve existing id/ts if any (legacy entry), just update pid/status
|
|
75
|
+
const existing = store[key];
|
|
76
|
+
const entry = typeof existing === 'object' && existing !== null
|
|
77
|
+
? { ...existing, pid, status: 'running', outputBuffer: existing.outputBuffer || '' }
|
|
78
|
+
: {
|
|
79
|
+
id: '',
|
|
80
|
+
ts: Date.now(),
|
|
81
|
+
pid,
|
|
82
|
+
runner: meta.runner,
|
|
83
|
+
agentName: meta.agentName,
|
|
84
|
+
status: 'running',
|
|
85
|
+
outputBuffer: '',
|
|
86
|
+
};
|
|
87
|
+
store[key] = entry;
|
|
88
|
+
await writeStore(store, filePath);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Link a sessionId to an already-registered PID.
|
|
93
|
+
* Called when the runner emits a sessionId for the first time.
|
|
94
|
+
*/
|
|
95
|
+
export async function linkSessionToPid(sessionId, pid, configPath) {
|
|
96
|
+
return registryMutex.runExclusive(async () => {
|
|
97
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
98
|
+
for (const key of Object.keys(store)) {
|
|
99
|
+
const entry = store[key];
|
|
100
|
+
if (typeof entry === 'object' && entry !== null && entry.pid === pid && !entry.id) {
|
|
101
|
+
entry.id = sessionId;
|
|
102
|
+
entry.ts = Date.now();
|
|
103
|
+
entry.lastOutputAt = Date.now();
|
|
104
|
+
store[key] = entry;
|
|
105
|
+
await writeStore(store, filePath);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Update output buffer for a running process.
|
|
113
|
+
* Called in stdout 'data' handler to enable live streaming.
|
|
114
|
+
*/
|
|
115
|
+
export async function appendOutput(pid, chunk, configPath) {
|
|
116
|
+
return registryMutex.runExclusive(async () => {
|
|
117
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
118
|
+
for (const key of Object.keys(store)) {
|
|
119
|
+
const entry = store[key];
|
|
120
|
+
if (typeof entry === 'object' && entry !== null && entry.pid === pid) {
|
|
121
|
+
entry.outputBuffer += chunk;
|
|
122
|
+
entry.lastOutputAt = Date.now();
|
|
123
|
+
store[key] = entry;
|
|
124
|
+
await writeStore(store, filePath);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Mark a process as done/failed/orphaned.
|
|
132
|
+
*/
|
|
133
|
+
export async function updateProcessStatus(pid, status, exitCode, configPath) {
|
|
134
|
+
return registryMutex.runExclusive(async () => {
|
|
135
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
136
|
+
for (const key of Object.keys(store)) {
|
|
137
|
+
const entry = store[key];
|
|
138
|
+
if (typeof entry === 'object' && entry !== null && entry.pid === pid) {
|
|
139
|
+
entry.status = status;
|
|
140
|
+
entry.exitCode = exitCode ?? null;
|
|
141
|
+
entry.lastOutputAt = Date.now();
|
|
142
|
+
store[key] = entry;
|
|
143
|
+
await writeStore(store, filePath);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get current status + output for an agent.
|
|
151
|
+
*/
|
|
152
|
+
export async function getProcessStatus(agentName, runner, configPath) {
|
|
153
|
+
return registryMutex.runExclusive(async () => {
|
|
154
|
+
const { store } = await readStore(configPath);
|
|
155
|
+
const key = buildKey(runner, agentName);
|
|
156
|
+
const entry = store[key];
|
|
157
|
+
if (!entry)
|
|
158
|
+
return null;
|
|
159
|
+
if (typeof entry === 'string') {
|
|
160
|
+
return { id: entry, ts: Date.now(), agentName, status: 'done', outputBuffer: '' };
|
|
161
|
+
}
|
|
162
|
+
// Check if running process is actually dead
|
|
163
|
+
if (entry.status === 'running' && entry.pid) {
|
|
164
|
+
const alive = await isPidAlive(entry.pid);
|
|
165
|
+
if (!alive) {
|
|
166
|
+
entry.status = 'orphaned';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return entry;
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Kill a running agent by PID.
|
|
174
|
+
*/
|
|
175
|
+
export async function killAgent(agentName, runner, configPath) {
|
|
176
|
+
return registryMutex.runExclusive(async () => {
|
|
177
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
178
|
+
const key = buildKey(runner, agentName);
|
|
179
|
+
const entry = store[key];
|
|
180
|
+
if (!entry || typeof entry !== 'object' || entry.status !== 'running') {
|
|
181
|
+
return { killed: false };
|
|
182
|
+
}
|
|
183
|
+
const pid = entry.pid;
|
|
184
|
+
if (!pid)
|
|
185
|
+
return { killed: false };
|
|
186
|
+
await killProcessTree(pid);
|
|
187
|
+
entry.status = 'failed';
|
|
188
|
+
entry.exitCode = null;
|
|
189
|
+
entry.lastOutputAt = Date.now();
|
|
190
|
+
store[key] = entry;
|
|
191
|
+
await writeStore(store, filePath);
|
|
192
|
+
return { killed: true, pid };
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Unregister (remove) a process entry. Call after TTL expires.
|
|
197
|
+
*/
|
|
198
|
+
export async function unregisterProcess(pid, configPath) {
|
|
199
|
+
return registryMutex.runExclusive(async () => {
|
|
200
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
201
|
+
let changed = false;
|
|
202
|
+
for (const key of Object.keys(store)) {
|
|
203
|
+
const entry = store[key];
|
|
204
|
+
if (typeof entry === 'object' && entry !== null && entry.pid === pid) {
|
|
205
|
+
delete store[key];
|
|
206
|
+
changed = true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (changed) {
|
|
210
|
+
await writeStore(store, filePath);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Scan all entries and clean up dead processes and old entries.
|
|
216
|
+
* Called on startup and periodically.
|
|
217
|
+
*/
|
|
218
|
+
export async function cleanupRegistry(configPath) {
|
|
219
|
+
return registryMutex.runExclusive(async () => {
|
|
220
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
221
|
+
const now = Date.now();
|
|
222
|
+
let orphaned = 0;
|
|
223
|
+
let expired = 0;
|
|
224
|
+
let changed = false;
|
|
225
|
+
for (const key of Object.keys(store)) {
|
|
226
|
+
const entry = store[key];
|
|
227
|
+
if (typeof entry !== 'object' || entry === null)
|
|
228
|
+
continue;
|
|
229
|
+
// Check running processes
|
|
230
|
+
if (entry.status === 'running' && entry.pid) {
|
|
231
|
+
const alive = await isPidAlive(entry.pid);
|
|
232
|
+
if (!alive) {
|
|
233
|
+
entry.status = 'orphaned';
|
|
234
|
+
orphaned++;
|
|
235
|
+
changed = true;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// TTL cleanup for done/failed/orphaned
|
|
239
|
+
if (entry.status !== 'running') {
|
|
240
|
+
const age = now - (entry.lastOutputAt || entry.ts);
|
|
241
|
+
if (age > PROCESS_TTL_MS) {
|
|
242
|
+
delete store[key];
|
|
243
|
+
expired++;
|
|
244
|
+
changed = true;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (changed) {
|
|
249
|
+
await writeStore(store, filePath);
|
|
250
|
+
}
|
|
251
|
+
return { orphaned, expired };
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get all running processes.
|
|
256
|
+
*/
|
|
257
|
+
export async function getRunningProcesses(configPath) {
|
|
258
|
+
return registryMutex.runExclusive(async () => {
|
|
259
|
+
const { store } = await readStore(configPath);
|
|
260
|
+
const result = [];
|
|
261
|
+
for (const entry of Object.values(store)) {
|
|
262
|
+
if (typeof entry === 'object' && entry !== null && entry.status === 'running') {
|
|
263
|
+
if (entry.pid) {
|
|
264
|
+
const alive = await isPidAlive(entry.pid);
|
|
265
|
+
if (!alive) {
|
|
266
|
+
entry.status = 'orphaned';
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
result.push(entry);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return result;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=processRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processRegistry.js","sourceRoot":"","sources":["../../src/lib/processRegistry.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* 2. L'importer dans server.ts → import { <nom> } from './tools/<nom>.js'
|
|
23
23
|
* 3. Ajouter server.addTool() → name, description, parameters, execute
|
|
24
24
|
*
|
|
25
|
-
* ─── LISTE DES
|
|
25
|
+
* ─── LISTE DES 17 OUTILS ─────────────────────────────────────────────────
|
|
26
26
|
*
|
|
27
27
|
* 1. run_agent → src/tools/run_agent.ts
|
|
28
28
|
* 2. run_agents_parallel → src/tools/run_agents_parallel.ts
|
|
@@ -30,6 +30,19 @@
|
|
|
30
30
|
* 4. list_agents → src/tools/manage_agents.ts
|
|
31
31
|
* 5. delete_agent → src/tools/manage_agents.ts
|
|
32
32
|
* 6. update_agent_config → src/tools/manage_agents.ts
|
|
33
|
+
* 7. get_agent_configs → src/tools/get_agent_configs.ts
|
|
34
|
+
* 8. memory_search → src/tools/memory_search.ts
|
|
35
|
+
* 9. memory_store → src/tools/memory_store.ts
|
|
36
|
+
* 10. memory_runs → src/tools/memory_runs.ts
|
|
37
|
+
* 11. create_prompt → src/tools/manage_prompts.ts
|
|
38
|
+
* 12. edit_prompt → src/tools/manage_prompts.ts
|
|
39
|
+
* 13. config_example → src/tools/config_example.ts
|
|
40
|
+
* 14. get_agent_status → src/tools/get_agent_status.ts
|
|
41
|
+
* 15. stream_agent_output → src/tools/stream_agent_output.ts
|
|
42
|
+
* 16. kill_agent → src/tools/kill_agent.ts
|
|
43
|
+
* 17. wait_agent → src/tools/wait_agent.ts
|
|
44
|
+
* 5. delete_agent → src/tools/manage_agents.ts
|
|
45
|
+
* 6. update_agent_config → src/tools/manage_agents.ts
|
|
33
46
|
* 7. create_prompt → src/tools/manage_prompts.ts
|
|
34
47
|
* 8. edit_prompt → src/tools/manage_prompts.ts
|
|
35
48
|
* 9. memory_search → src/tools/memory_search.ts
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAmClC,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAuB,iDAoNzD"}
|
package/dist/server.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* 2. L'importer dans server.ts → import { <nom> } from './tools/<nom>.js'
|
|
23
23
|
* 3. Ajouter server.addTool() → name, description, parameters, execute
|
|
24
24
|
*
|
|
25
|
-
* ─── LISTE DES
|
|
25
|
+
* ─── LISTE DES 17 OUTILS ─────────────────────────────────────────────────
|
|
26
26
|
*
|
|
27
27
|
* 1. run_agent → src/tools/run_agent.ts
|
|
28
28
|
* 2. run_agents_parallel → src/tools/run_agents_parallel.ts
|
|
@@ -30,6 +30,19 @@
|
|
|
30
30
|
* 4. list_agents → src/tools/manage_agents.ts
|
|
31
31
|
* 5. delete_agent → src/tools/manage_agents.ts
|
|
32
32
|
* 6. update_agent_config → src/tools/manage_agents.ts
|
|
33
|
+
* 7. get_agent_configs → src/tools/get_agent_configs.ts
|
|
34
|
+
* 8. memory_search → src/tools/memory_search.ts
|
|
35
|
+
* 9. memory_store → src/tools/memory_store.ts
|
|
36
|
+
* 10. memory_runs → src/tools/memory_runs.ts
|
|
37
|
+
* 11. create_prompt → src/tools/manage_prompts.ts
|
|
38
|
+
* 12. edit_prompt → src/tools/manage_prompts.ts
|
|
39
|
+
* 13. config_example → src/tools/config_example.ts
|
|
40
|
+
* 14. get_agent_status → src/tools/get_agent_status.ts
|
|
41
|
+
* 15. stream_agent_output → src/tools/stream_agent_output.ts
|
|
42
|
+
* 16. kill_agent → src/tools/kill_agent.ts
|
|
43
|
+
* 17. wait_agent → src/tools/wait_agent.ts
|
|
44
|
+
* 5. delete_agent → src/tools/manage_agents.ts
|
|
45
|
+
* 6. update_agent_config → src/tools/manage_agents.ts
|
|
33
46
|
* 7. create_prompt → src/tools/manage_prompts.ts
|
|
34
47
|
* 8. edit_prompt → src/tools/manage_prompts.ts
|
|
35
48
|
* 9. memory_search → src/tools/memory_search.ts
|
|
@@ -50,6 +63,10 @@ import { createPrompt, createPromptSchema, editPrompt, editPromptSchema, } from
|
|
|
50
63
|
import { listAgents, listAgentsSchema, deleteAgent, deleteAgentSchema, updateAgentConfig, updateAgentConfigSchema, } from './tools/manage_agents.js';
|
|
51
64
|
import { getAgentConfigs, getAgentConfigsSchema } from './tools/get_agent_configs.js';
|
|
52
65
|
import { configExample, configExampleSchema } from './tools/config_example.js';
|
|
66
|
+
import { getAgentStatusTool, getAgentStatusSchema } from './tools/get_agent_status.js';
|
|
67
|
+
import { streamAgentOutputTool, streamAgentOutputSchema } from './tools/stream_agent_output.js';
|
|
68
|
+
import { killAgentTool, killAgentSchema } from './tools/kill_agent.js';
|
|
69
|
+
import { waitAgentTool, waitAgentSchema } from './tools/wait_agent.js';
|
|
53
70
|
function wrapExecute(toolName, fn) {
|
|
54
71
|
return (...args) => withSpan(`tool.${toolName}`, () => fn(...args));
|
|
55
72
|
}
|
|
@@ -200,6 +217,46 @@ create_agent(name: "planner", runner: "cline", mode: "plan", prompt: "Tu es un p
|
|
|
200
217
|
parameters: configExampleSchema,
|
|
201
218
|
execute: configExample,
|
|
202
219
|
});
|
|
220
|
+
// ─── 14. get_agent_status ───────────────────────────────────────────────────
|
|
221
|
+
server.addTool({
|
|
222
|
+
name: 'get_agent_status',
|
|
223
|
+
description: `Retourne le statut courant + output buffer d'un agent en exécution.
|
|
224
|
+
Utilise le Process Registry pour suivre les agents via leur PID.
|
|
225
|
+
|
|
226
|
+
**Retourne:**
|
|
227
|
+
- status: running | done | failed | orphaned
|
|
228
|
+
- pid: идентификатор процесса
|
|
229
|
+
- outputBuffer: sortie collectée en temps réel
|
|
230
|
+
- sessionId: ID de session si disponible`,
|
|
231
|
+
parameters: getAgentStatusSchema,
|
|
232
|
+
execute: wrapExecute('get_agent_status', getAgentStatusTool),
|
|
233
|
+
});
|
|
234
|
+
// ─── 15. stream_agent_output ────────────────────────────────────────────────
|
|
235
|
+
server.addTool({
|
|
236
|
+
name: 'stream_agent_output',
|
|
237
|
+
description: `Streaming de la sortie d'un agent en temps réel.
|
|
238
|
+
Retourne tout le output buffer accumulé depuis le début (ou depuis sinceTimestamp).`,
|
|
239
|
+
parameters: streamAgentOutputSchema,
|
|
240
|
+
execute: wrapExecute('stream_agent_output', streamAgentOutputTool),
|
|
241
|
+
});
|
|
242
|
+
// ─── 16. kill_agent ─────────────────────────────────────────────────────────
|
|
243
|
+
server.addTool({
|
|
244
|
+
name: 'kill_agent',
|
|
245
|
+
description: `Tue un agent en cours d'exécution par son PID.
|
|
246
|
+
Sur Windows: taskkill /F /T /PID. Sur Unix: kill -9.
|
|
247
|
+
Retourne { killed: true, pid } si succès.`,
|
|
248
|
+
parameters: killAgentSchema,
|
|
249
|
+
execute: wrapExecute('kill_agent', killAgentTool),
|
|
250
|
+
});
|
|
251
|
+
// ─── 17. wait_agent ─────────────────────────────────────────────────────────
|
|
252
|
+
server.addTool({
|
|
253
|
+
name: 'wait_agent',
|
|
254
|
+
description: `Attend qu'un agent termine son exécution.
|
|
255
|
+
Polling toutes les 1s jusqu'à status != 'running' ou timeout.
|
|
256
|
+
Retourne le résultat final ou l'erreur.`,
|
|
257
|
+
parameters: waitAgentSchema,
|
|
258
|
+
execute: wrapExecute('wait_agent', waitAgentTool),
|
|
259
|
+
});
|
|
203
260
|
return server;
|
|
204
261
|
}
|
|
205
262
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeRunner.d.ts","sourceRoot":"","sources":["../../src/services/ClaudeRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClaudeRunner.d.ts","sourceRoot":"","sources":["../../src/services/ClaudeRunner.ts"],"names":[],"mappings":"AAkEA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA+mBlE"}
|