overmind-mcp 2.7.0 → 2.8.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 -21
- package/README.md +179 -187
- package/bin/README.md +44 -34
- package/bin/install-overmind-windows.bat +51 -7
- package/bin/overmind-pool.mjs +248 -0
- package/dist/bin/cli.js +115 -24
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/overmind-client.d.ts +77 -0
- package/dist/bin/overmind-client.d.ts.map +1 -0
- package/dist/bin/overmind-client.js +221 -0
- package/dist/bin/overmind-client.js.map +1 -0
- package/dist/lib/agent_lifecycle.d.ts +91 -0
- package/dist/lib/agent_lifecycle.d.ts.map +1 -0
- package/dist/lib/agent_lifecycle.js +155 -0
- package/dist/lib/agent_lifecycle.js.map +1 -0
- package/dist/lib/config.d.ts +5 -26
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +33 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/envUtils.d.ts +1 -1
- package/dist/lib/envUtils.d.ts.map +1 -1
- package/dist/lib/envUtils.js +11 -4
- package/dist/lib/envUtils.js.map +1 -1
- package/dist/lib/loadEnv.d.ts.map +1 -1
- package/dist/lib/loadEnv.js +9 -4
- package/dist/lib/loadEnv.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +20 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
- package/dist/lib/orchestration/dispatcher.js +10 -1
- package/dist/lib/orchestration/dispatcher.js.map +1 -1
- package/dist/lib/orchestration/swarm.d.ts +1 -0
- package/dist/lib/orchestration/swarm.d.ts.map +1 -1
- package/dist/lib/orchestration/swarm.js +11 -8
- package/dist/lib/orchestration/swarm.js.map +1 -1
- package/dist/lib/processRegistry.d.ts +2 -40
- package/dist/lib/processRegistry.d.ts.map +1 -1
- package/dist/lib/processRegistry.js +191 -230
- package/dist/lib/processRegistry.js.map +1 -1
- package/dist/memory/MemoryFactory.d.ts.map +1 -1
- package/dist/memory/MemoryFactory.js +2 -1
- package/dist/memory/MemoryFactory.js.map +1 -1
- package/dist/memory/PostgresMemoryProvider.d.ts +1 -0
- package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
- package/dist/memory/PostgresMemoryProvider.js +11 -4
- package/dist/memory/PostgresMemoryProvider.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +84 -80
- package/dist/server.js.map +1 -1
- package/dist/services/AgentManager.d.ts +1 -0
- package/dist/services/AgentManager.d.ts.map +1 -1
- package/dist/services/AgentManager.js +17 -0
- package/dist/services/AgentManager.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js +25 -6
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/ClineRunner.d.ts.map +1 -1
- package/dist/services/ClineRunner.js +16 -7
- package/dist/services/ClineRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +13 -6
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js +7 -4
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/services/OpenClawRunner.d.ts.map +1 -1
- package/dist/services/OpenClawRunner.js +16 -7
- package/dist/services/OpenClawRunner.js.map +1 -1
- package/dist/services/OpenCodeRunner.d.ts.map +1 -1
- package/dist/services/OpenCodeRunner.js +16 -7
- package/dist/services/OpenCodeRunner.js.map +1 -1
- package/dist/services/PromptManager.d.ts.map +1 -1
- package/dist/services/PromptManager.js +4 -0
- package/dist/services/PromptManager.js.map +1 -1
- package/dist/services/QwenCliRunner.d.ts.map +1 -1
- package/dist/services/QwenCliRunner.js +16 -7
- package/dist/services/QwenCliRunner.js.map +1 -1
- package/dist/tools/agent_control.d.ts +2 -69
- package/dist/tools/agent_control.d.ts.map +1 -1
- package/dist/tools/agent_control.js +186 -241
- package/dist/tools/agent_control.js.map +1 -1
- package/dist/tools/config_example.d.ts +2 -2
- package/dist/tools/config_example.d.ts.map +1 -1
- package/dist/tools/config_example.js +2 -4
- package/dist/tools/config_example.js.map +1 -1
- package/dist/tools/create_agent.d.ts.map +1 -1
- package/dist/tools/create_agent.js +11 -0
- package/dist/tools/create_agent.js.map +1 -1
- package/dist/tools/manage_agents.d.ts.map +1 -1
- package/dist/tools/manage_agents.js +3 -2
- package/dist/tools/manage_agents.js.map +1 -1
- package/dist/tools/run_agent.d.ts +1 -1
- package/dist/tools/run_agent.d.ts.map +1 -1
- package/dist/tools/run_agent.js +1 -2
- package/dist/tools/run_agent.js.map +1 -1
- package/dist/tools/run_agent_cli.d.ts +4 -10
- package/dist/tools/run_agent_cli.d.ts.map +1 -1
- package/dist/tools/run_agent_cli.js +10 -82
- package/dist/tools/run_agent_cli.js.map +1 -1
- package/dist/tools/run_agents_parallel.d.ts +1 -1
- package/docs/agent-http-tutorial.md +524 -0
- package/package.json +3 -3
|
@@ -1,320 +1,265 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { getProcessStatus, killAgent
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* ================================================================================
|
|
6
|
-
*
|
|
7
|
-
* Cet outil remplace les 4 outils individuels précédents :
|
|
8
|
-
* - get_agent_status → action: "status"
|
|
9
|
-
* - stream_agent_output → action: "stream"
|
|
10
|
-
* - kill_agent → action: "kill"
|
|
11
|
-
* - wait_agent → action: "wait"
|
|
12
|
-
*
|
|
13
|
-
* L'UNIFICATION est intentionnelle :
|
|
14
|
-
* - Un seul appel MCP pour la toolbox du client (pas 4 imports)
|
|
15
|
-
* - Cohérence des paramètres (agentName, runner, config communs)
|
|
16
|
-
* - Comportement déterministe : chaque action a une sémantique claire
|
|
17
|
-
* - Debugging simplifié : une seule source de vérité
|
|
18
|
-
*
|
|
19
|
-
* ─── SÉMANTIQUE DES ACTIONS ──────────────────────────────────────────────────
|
|
20
|
-
*
|
|
21
|
-
* status ─── Lecture pure, zero side-effect
|
|
22
|
-
* → Retourne l'état courant du process (pid, status, sessionId, outputBuffer)
|
|
23
|
-
* → NE MODIFIE PAS le registry (pas de mise à jour de timestamps artificiels)
|
|
24
|
-
* → Use-case : dashboard, polling léger, diagnostic
|
|
25
|
-
*
|
|
26
|
-
* stream ─── Lecture + indicateur de complétude
|
|
27
|
-
* → Retourne outputBuffer ET un flag isComplete
|
|
28
|
-
* → Use-case : récupérer la sortie en temps réel sans savoir si c'est fini
|
|
29
|
-
* → Option sinceTimestamp pour ne récupérer que le增量 (si implémenté)
|
|
30
|
-
*
|
|
31
|
-
* kill ─── Action destructive, irréversible
|
|
32
|
-
* → Tue le process tree via taskkill /F /T (Windows) ou kill -9 (Unix)
|
|
33
|
-
* → Met à jour le status → 'failed' dans le registry
|
|
34
|
-
* → Use-case : abort d'urgence, kill-switch
|
|
35
|
-
*
|
|
36
|
-
* wait ─── Blocage async avec polling
|
|
37
|
-
* → Poll toutes les 1s jusqu'à status !== 'running' ou timeout
|
|
38
|
-
* → Retourne le résultat final (outputBuffer ou erreur)
|
|
39
|
-
* → Use-case : synchronisation dans un workflow d'orchestration
|
|
40
|
-
*
|
|
41
|
-
* ─── ÉTATS DU PROCESS ─────────────────────────────────────────────────────────
|
|
42
|
-
*
|
|
43
|
-
* running → Process actif, PID valide, output en cours d'accumulation
|
|
44
|
-
* done → Process terminé avec code 0, outputBuffer gelé
|
|
45
|
-
* failed → Process terminé avec erreur (exit code != 0 ou crash)
|
|
46
|
-
* orphaned → Parent mort mais child tourne encore (detecté via isPidAlive)
|
|
47
|
-
*
|
|
48
|
-
* ─── ERREURS COMMUNES ─────────────────────────────────────────────────────────
|
|
49
|
-
*
|
|
50
|
-
* AGENT_NOT_FOUND → Agent absent du registry (jamais lancé ou déjà nettoyé)
|
|
51
|
-
* AGENT_NOT_RUNNING → Action "kill" sur un agent déjà terminé
|
|
52
|
-
* KILL_FAILED → taskkill/kill a échoué (pas assez de permissions, etc.)
|
|
53
|
-
* WAIT_TIMEOUT → Action "wait" a atteint le timeout sans terminaison
|
|
54
|
-
* ORPHANED_PROCESS → Status 'orphaned' détecté (process zombie)
|
|
55
|
-
*
|
|
56
|
-
* ─── EXEMPLES ─────────────────────────────────────────────────────────────────
|
|
57
|
-
*
|
|
58
|
-
* // Vérifier si un agent tourne encore
|
|
59
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "status" })
|
|
60
|
-
*
|
|
61
|
-
* // Récupérer la sortie sans bloquer
|
|
62
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "stream" })
|
|
63
|
-
*
|
|
64
|
-
* // Forcer l'arrêt d'un agent
|
|
65
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "kill" })
|
|
66
|
-
*
|
|
67
|
-
* // Attendre la fin d'un agent (max 5 min)
|
|
68
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "wait", timeoutMs: 300000 })
|
|
69
|
-
*/
|
|
70
|
-
// ─── SCHÉMA ZOD ────────────────────────────────────────────────────────────────
|
|
2
|
+
import { getProcessStatus, killAgent } from '../lib/processRegistry.js';
|
|
3
|
+
import { getLiveAgent, getLiveAgentByPid, } from '../lib/agent_lifecycle.js';
|
|
4
|
+
// ─── Schema + Types ──────────────────────────────────────────────────────────
|
|
71
5
|
export const agentControlSchema = z
|
|
72
6
|
.object({
|
|
73
|
-
agentName: z.string().describe(
|
|
7
|
+
agentName: z.string().describe("Nom unique de l'agent à contrôler"),
|
|
74
8
|
runner: z
|
|
75
9
|
.enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
|
|
76
10
|
.optional()
|
|
77
|
-
.describe("Type de runner
|
|
78
|
-
config: z
|
|
79
|
-
.string()
|
|
80
|
-
.optional()
|
|
81
|
-
.describe('Chemin racine Overmind (dossier contenant .claude/)'),
|
|
11
|
+
.describe("Type de runner (optionnel — déduit si omis)"),
|
|
12
|
+
config: z.string().optional().describe('Chemin racine Overmind'),
|
|
82
13
|
action: z
|
|
83
14
|
.enum(['status', 'stream', 'kill', 'wait'])
|
|
84
|
-
.describe('
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
' wait — Bloquer jusqu\'à terminaison naturelle (max timeoutMs)'),
|
|
15
|
+
.describe('status — état courant (pid, status, sessionId, output)\n' +
|
|
16
|
+
'stream — output en temps réel + isComplete\n' +
|
|
17
|
+
'kill — arrêt forcé du process tree\n' +
|
|
18
|
+
'wait — bloque jusquà terminaison (max timeoutMs)'),
|
|
89
19
|
timeoutMs: z
|
|
90
20
|
.number()
|
|
21
|
+
.int()
|
|
22
|
+
.min(1000)
|
|
23
|
+
.max(3600000)
|
|
91
24
|
.optional()
|
|
92
25
|
.default(900000)
|
|
93
|
-
.describe('Timeout
|
|
94
|
-
sinceTimestamp: z
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
26
|
+
.describe('Timeout wait en ms (défaut: 900s, max: 1h)'),
|
|
27
|
+
sinceTimestamp: z.number().optional().describe('Pour stream: output après ce timestamp'),
|
|
28
|
+
});
|
|
29
|
+
/** Try in-memory first (fast), fall back to disk registry */
|
|
30
|
+
async function resolveAgent(agentName, runner) {
|
|
31
|
+
const live = getLiveAgent(agentName, runner);
|
|
32
|
+
if (live)
|
|
33
|
+
return { live, disk: null };
|
|
34
|
+
const disk = await getProcessStatus(agentName, runner);
|
|
35
|
+
return { live: null, disk };
|
|
36
|
+
}
|
|
37
|
+
// ─── Formatting ───────────────────────────────────────────────────────────────
|
|
38
|
+
function formatAgent(view, action) {
|
|
102
39
|
const lines = [];
|
|
103
|
-
|
|
104
|
-
lines.push(`**
|
|
105
|
-
lines.push(`**
|
|
106
|
-
lines.push(`**
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
lines.push(`**Last Output:** ${new Date(
|
|
40
|
+
const runningFor = view.startedAt ? `${Date.now() - view.startedAt}ms` : '?';
|
|
41
|
+
lines.push(`**Agent:** ${view.agentName}`);
|
|
42
|
+
lines.push(`**Runner:** ${view.runner || 'inconnu'}`);
|
|
43
|
+
lines.push(`**Status:** ${view.status}`);
|
|
44
|
+
lines.push(`**Running:** ${runningFor}`);
|
|
45
|
+
if (view.pid)
|
|
46
|
+
lines.push(`**PID:** ${view.pid}`);
|
|
47
|
+
if (view.sessionId)
|
|
48
|
+
lines.push(`**Session:** ${view.sessionId}`);
|
|
49
|
+
if (view.exitCode !== null)
|
|
50
|
+
lines.push(`**Exit Code:** ${view.exitCode}`);
|
|
51
|
+
if (view.lastOutputAt) {
|
|
52
|
+
lines.push(`**Last Output:** ${new Date(view.lastOutputAt).toISOString()}`);
|
|
116
53
|
}
|
|
117
|
-
const bufLen =
|
|
54
|
+
const bufLen = view.outputBuffer.length;
|
|
118
55
|
if (bufLen > 0) {
|
|
119
|
-
lines.push(`\n**Output
|
|
120
|
-
// On limite l'output dans le rapport à 2000 derniers caractères
|
|
121
|
-
const preview = entry.outputBuffer.slice(-2000);
|
|
56
|
+
lines.push(`\n**Output (${bufLen} chars):**`);
|
|
122
57
|
lines.push('```');
|
|
123
|
-
lines.push(
|
|
58
|
+
lines.push(view.outputBuffer.slice(-2000));
|
|
124
59
|
lines.push('```');
|
|
125
60
|
}
|
|
126
61
|
else {
|
|
127
|
-
lines.push('\n_(output vide
|
|
62
|
+
lines.push('\n_(output vide)_');
|
|
128
63
|
}
|
|
129
64
|
return lines.join('\n');
|
|
130
65
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
66
|
+
// ─── Actions ───────────────────────────────────────────────────────────────────
|
|
67
|
+
/** STATUS — zero side-effect read */
|
|
68
|
+
async function doStatus(agentName, runner) {
|
|
69
|
+
const { live, disk } = await resolveAgent(agentName, runner);
|
|
70
|
+
if (!live && !disk) {
|
|
135
71
|
return {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
code: 'AGENT_NOT_FOUND',
|
|
72
|
+
content: [{ type: 'text', text: `Agent "${agentName}" non trouvé.` }],
|
|
73
|
+
isError: true,
|
|
139
74
|
};
|
|
140
75
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
76
|
+
const view = live
|
|
77
|
+
? {
|
|
78
|
+
agentName: live.agentName,
|
|
79
|
+
runner: live.runner,
|
|
80
|
+
status: live.status,
|
|
81
|
+
pid: live.pid,
|
|
82
|
+
sessionId: live.sessionId,
|
|
83
|
+
exitCode: live.exitCode,
|
|
84
|
+
outputBuffer: live.outputBuffer,
|
|
85
|
+
startedAt: live.startedAt,
|
|
86
|
+
lastOutputAt: live.lastOutputAt,
|
|
87
|
+
}
|
|
88
|
+
: {
|
|
89
|
+
agentName: disk.agentName,
|
|
90
|
+
runner: disk.runner,
|
|
91
|
+
status: disk.status,
|
|
92
|
+
pid: disk.pid,
|
|
93
|
+
sessionId: disk.id,
|
|
94
|
+
exitCode: disk.exitCode ?? null,
|
|
95
|
+
outputBuffer: '', // disk entry has no outputBuffer
|
|
96
|
+
startedAt: disk.ts,
|
|
97
|
+
lastOutputAt: disk.lastOutputAt ?? disk.ts,
|
|
98
|
+
};
|
|
99
|
+
const isZombie = view.status === 'running' && view.pid && !getLiveAgentByPid(view.pid);
|
|
150
100
|
return {
|
|
151
|
-
content: [{ type: 'text', text:
|
|
152
|
-
isError: isZombie,
|
|
101
|
+
content: [{ type: 'text', text: formatAgent(view, 'status') }],
|
|
102
|
+
isError: !!isZombie,
|
|
153
103
|
};
|
|
154
104
|
}
|
|
155
|
-
/**
|
|
156
|
-
async function doStream(agentName, runner,
|
|
157
|
-
const
|
|
158
|
-
if (
|
|
159
|
-
return {
|
|
105
|
+
/** STREAM — read + completeness flag */
|
|
106
|
+
async function doStream(agentName, runner, sinceTimestamp) {
|
|
107
|
+
const { live, disk } = await resolveAgent(agentName, runner);
|
|
108
|
+
if (!live && !disk) {
|
|
109
|
+
return {
|
|
110
|
+
content: [{ type: 'text', text: `Agent "${agentName}" non trouvé.` }],
|
|
111
|
+
isError: true,
|
|
112
|
+
};
|
|
160
113
|
}
|
|
161
|
-
const isComplete =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const output =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
// Pour l'instant on retourne tout l'outputBuffer. La filtering precise
|
|
169
|
-
// nécéssite d'ajouter un tableau de chunks avec timestamps dans ProcessEntry.
|
|
114
|
+
const isComplete = live
|
|
115
|
+
? live.status !== 'running'
|
|
116
|
+
: disk.status !== 'running';
|
|
117
|
+
const output = live ? live.outputBuffer : '';
|
|
118
|
+
if (sinceTimestamp && live) {
|
|
119
|
+
// Ring buffer doesn't support per-chunk timestamps — best-effort: return last 2000
|
|
120
|
+
void sinceTimestamp;
|
|
170
121
|
}
|
|
122
|
+
const view = live
|
|
123
|
+
? {
|
|
124
|
+
agentName: live.agentName,
|
|
125
|
+
runner: live.runner,
|
|
126
|
+
status: live.status,
|
|
127
|
+
pid: live.pid,
|
|
128
|
+
sessionId: live.sessionId,
|
|
129
|
+
exitCode: live.exitCode,
|
|
130
|
+
outputBuffer: output,
|
|
131
|
+
startedAt: live.startedAt,
|
|
132
|
+
lastOutputAt: live.lastOutputAt,
|
|
133
|
+
}
|
|
134
|
+
: {
|
|
135
|
+
agentName: disk.agentName,
|
|
136
|
+
runner: disk.runner,
|
|
137
|
+
status: disk.status,
|
|
138
|
+
pid: disk.pid,
|
|
139
|
+
sessionId: disk.id,
|
|
140
|
+
exitCode: disk.exitCode ?? null,
|
|
141
|
+
outputBuffer: '',
|
|
142
|
+
startedAt: disk.ts,
|
|
143
|
+
lastOutputAt: disk.lastOutputAt ?? disk.ts,
|
|
144
|
+
};
|
|
171
145
|
const lines = [];
|
|
172
|
-
lines.push(`**Agent:** ${
|
|
173
|
-
lines.push(`**Status:** ${
|
|
146
|
+
lines.push(`**Agent:** ${view.agentName}`);
|
|
147
|
+
lines.push(`**Status:** ${view.status}`);
|
|
174
148
|
lines.push(`**isComplete:** ${isComplete}`);
|
|
175
|
-
if (
|
|
176
|
-
lines.push(`**PID:** ${
|
|
177
|
-
if (
|
|
178
|
-
lines.push(`**Last Output At:** ${new Date(
|
|
179
|
-
}
|
|
149
|
+
if (view.pid)
|
|
150
|
+
lines.push(`**PID:** ${view.pid}`);
|
|
151
|
+
if (view.lastOutputAt)
|
|
152
|
+
lines.push(`**Last Output At:** ${new Date(view.lastOutputAt).toISOString()}`);
|
|
180
153
|
lines.push(`\n**Output (${output.length} chars):**`);
|
|
181
154
|
lines.push('```');
|
|
182
|
-
lines.push(output || '(no output yet)');
|
|
155
|
+
lines.push(output.slice(-2000) || '(no output yet)');
|
|
183
156
|
lines.push('```');
|
|
184
157
|
return {
|
|
185
158
|
content: [{ type: 'text', text: lines.join('\n') }],
|
|
186
|
-
isError: isComplete &&
|
|
159
|
+
isError: isComplete && view.status === 'failed',
|
|
187
160
|
};
|
|
188
161
|
}
|
|
189
|
-
/**
|
|
190
|
-
async function doKill(agentName, runner
|
|
191
|
-
const
|
|
192
|
-
if ('
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
if (resolved.status !== 'running') {
|
|
196
|
-
return {
|
|
197
|
-
content: [
|
|
198
|
-
{
|
|
199
|
-
type: 'text',
|
|
200
|
-
text: `Agent "${agentName}" n'est pas en cours d'exécution (status: ${resolved.status}). ` +
|
|
201
|
-
`Impossible de tuer un agent déjà terminé.`,
|
|
202
|
-
},
|
|
203
|
-
],
|
|
204
|
-
isError: true,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
const killResult = await killAgent(agentName, runner, configPath);
|
|
208
|
-
if (!killResult.killed) {
|
|
162
|
+
/** KILL — force termination */
|
|
163
|
+
async function doKill(agentName, runner) {
|
|
164
|
+
const { live } = await resolveAgent(agentName, runner);
|
|
165
|
+
if (!live || live.status !== 'running') {
|
|
166
|
+
const disk = await getProcessStatus(agentName, runner);
|
|
209
167
|
return {
|
|
210
168
|
content: [
|
|
211
169
|
{
|
|
212
170
|
type: 'text',
|
|
213
|
-
text:
|
|
214
|
-
`
|
|
215
|
-
`
|
|
171
|
+
text: disk
|
|
172
|
+
? `Agent "${agentName}" nest plus en cours (status: ${disk.status}).`
|
|
173
|
+
: `Agent "${agentName}" non trouvé.`,
|
|
216
174
|
},
|
|
217
175
|
],
|
|
218
176
|
isError: true,
|
|
219
177
|
};
|
|
220
178
|
}
|
|
179
|
+
const pid = live.pid;
|
|
180
|
+
const result = await killAgent(agentName, runner);
|
|
221
181
|
return {
|
|
222
182
|
content: [
|
|
223
183
|
{
|
|
224
184
|
type: 'text',
|
|
225
|
-
text:
|
|
226
|
-
`
|
|
185
|
+
text: result.killed
|
|
186
|
+
? `Agent "${agentName}" tué (PID: ${pid}).`
|
|
187
|
+
: `Échec du kill pour "${agentName}".`,
|
|
227
188
|
},
|
|
228
189
|
],
|
|
190
|
+
isError: !result.killed,
|
|
229
191
|
};
|
|
230
192
|
}
|
|
231
|
-
/**
|
|
232
|
-
async function doWait(agentName, runner,
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
const resolved = await resolveEntry(agentName, runner, configPath);
|
|
238
|
-
if ('error' in resolved) {
|
|
239
|
-
return { content: [{ type: 'text', text: resolved.error }], isError: true };
|
|
240
|
-
}
|
|
241
|
-
if (resolved.status === 'done') {
|
|
193
|
+
/** WAIT — block until completion, using AbortController when available */
|
|
194
|
+
async function doWait(agentName, runner, timeoutMs) {
|
|
195
|
+
const live = getLiveAgent(agentName, runner);
|
|
196
|
+
// Fast path: agent already done
|
|
197
|
+
if (live) {
|
|
198
|
+
if (live.status !== 'running') {
|
|
242
199
|
return {
|
|
243
|
-
content: [
|
|
244
|
-
|
|
245
|
-
type: 'text',
|
|
246
|
-
text: resolved.outputBuffer || 'Agent terminé avec succès.',
|
|
247
|
-
},
|
|
248
|
-
],
|
|
200
|
+
content: [{ type: 'text', text: live.outputBuffer || `Agent terminé (${live.status}).` }],
|
|
201
|
+
isError: live.status === 'failed' || live.status === 'orphaned',
|
|
249
202
|
};
|
|
250
203
|
}
|
|
251
|
-
if (
|
|
204
|
+
// Use AbortController if available (instant wake on kill/status change)
|
|
205
|
+
if (live.abortController) {
|
|
206
|
+
try {
|
|
207
|
+
await Promise.race([
|
|
208
|
+
new Promise((_, reject) => {
|
|
209
|
+
live.abortController.signal.addEventListener('abort', () => reject(new Error('done')));
|
|
210
|
+
}),
|
|
211
|
+
new Promise((r) => setTimeout(r, timeoutMs)),
|
|
212
|
+
]);
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Aborted — agent finished
|
|
216
|
+
}
|
|
217
|
+
// Re-read state after wake
|
|
218
|
+
const updated = getLiveAgent(agentName, runner);
|
|
219
|
+
if (updated) {
|
|
220
|
+
return {
|
|
221
|
+
content: [{ type: 'text', text: updated.outputBuffer || `Agent terminé (${updated.status}).` }],
|
|
222
|
+
isError: updated.status === 'failed' || updated.status === 'orphaned',
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
// Fallback: disk polling
|
|
229
|
+
const disk = await getProcessStatus(agentName, runner);
|
|
230
|
+
if (!disk || disk.status !== 'running') {
|
|
252
231
|
return {
|
|
253
|
-
content: [
|
|
254
|
-
{
|
|
255
|
-
type: 'text',
|
|
256
|
-
text: `Agent terminé avec erreur (${resolved.status}):\n\n${resolved.outputBuffer || 'N/A'}`,
|
|
257
|
-
},
|
|
258
|
-
],
|
|
232
|
+
content: [{ type: 'text', text: disk ? `Agent terminé (${disk.status}).` : `Agent non trouvé.` }],
|
|
259
233
|
isError: true,
|
|
260
234
|
};
|
|
261
235
|
}
|
|
262
236
|
}
|
|
263
|
-
//
|
|
237
|
+
// Polling fallback (disk or no AbortController)
|
|
238
|
+
const start = Date.now();
|
|
239
|
+
const pollInterval = 1000;
|
|
264
240
|
while (Date.now() - start < timeoutMs) {
|
|
265
241
|
await new Promise((r) => setTimeout(r, pollInterval));
|
|
266
|
-
const
|
|
267
|
-
if ('
|
|
268
|
-
return { content: [{ type: 'text', text: resolved.error }], isError: true };
|
|
269
|
-
}
|
|
270
|
-
if (resolved.status === 'done') {
|
|
242
|
+
const current = getLiveAgent(agentName, runner);
|
|
243
|
+
if (!current || current.status !== 'running') {
|
|
271
244
|
return {
|
|
272
|
-
content: [
|
|
273
|
-
|
|
274
|
-
type: 'text',
|
|
275
|
-
text: resolved.outputBuffer || 'Agent terminé avec succès.',
|
|
276
|
-
},
|
|
277
|
-
],
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
if (resolved.status === 'failed' || resolved.status === 'orphaned') {
|
|
281
|
-
return {
|
|
282
|
-
content: [
|
|
283
|
-
{
|
|
284
|
-
type: 'text',
|
|
285
|
-
text: `Agent terminé avec erreur (${resolved.status}):\n\n${resolved.outputBuffer || 'N/A'}`,
|
|
286
|
-
},
|
|
287
|
-
],
|
|
288
|
-
isError: true,
|
|
245
|
+
content: [{ type: 'text', text: current?.outputBuffer || 'Agent terminé.' }],
|
|
246
|
+
isError: current?.status === 'failed' || current?.status === 'orphaned' || !current,
|
|
289
247
|
};
|
|
290
248
|
}
|
|
291
|
-
// Status still 'running' — continue polling
|
|
292
249
|
}
|
|
293
|
-
// Timeout atteint
|
|
294
250
|
return {
|
|
295
|
-
content: [
|
|
296
|
-
{
|
|
297
|
-
type: 'text',
|
|
298
|
-
text: `Timeout de ${timeoutMs}ms atteint. ` +
|
|
299
|
-
`L'agent "${agentName}" est toujours en cours d'exécution (status: running). ` +
|
|
300
|
-
`Utilisez action="kill" pour forcer l'arrêt ou augmentez timeoutMs.`,
|
|
301
|
-
},
|
|
302
|
-
],
|
|
251
|
+
content: [{ type: 'text', text: `Timeout ${timeoutMs}ms atteint. Agent toujours en cours.` }],
|
|
303
252
|
isError: true,
|
|
304
253
|
};
|
|
305
254
|
}
|
|
306
|
-
// ───
|
|
255
|
+
// ─── Main entry point ─────────────────────────────────────────────────────────
|
|
307
256
|
export async function agentControl(args) {
|
|
308
|
-
const { agentName, runner,
|
|
257
|
+
const { agentName, runner, action, timeoutMs, sinceTimestamp } = args;
|
|
309
258
|
switch (action) {
|
|
310
|
-
case 'status':
|
|
311
|
-
|
|
312
|
-
case '
|
|
313
|
-
|
|
314
|
-
case 'kill':
|
|
315
|
-
return doKill(agentName, runner, configPath);
|
|
316
|
-
case 'wait':
|
|
317
|
-
return doWait(agentName, runner, configPath, timeoutMs ?? 900000);
|
|
259
|
+
case 'status': return doStatus(agentName, runner);
|
|
260
|
+
case 'stream': return doStream(agentName, runner, sinceTimestamp);
|
|
261
|
+
case 'kill': return doKill(agentName, runner);
|
|
262
|
+
case 'wait': return doWait(agentName, runner, timeoutMs ?? 900000);
|
|
318
263
|
}
|
|
319
264
|
}
|
|
320
265
|
//# sourceMappingURL=agent_control.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_control.js","sourceRoot":"","sources":["../../src/tools/agent_control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"agent_control.js","sourceRoot":"","sources":["../../src/tools/agent_control.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,11 @@ export declare const configExampleSchema: z.ZodObject<{
|
|
|
4
4
|
ilmu: "ilmu";
|
|
5
5
|
glm: "glm";
|
|
6
6
|
minimax: "minimax";
|
|
7
|
-
openrouter: "openrouter";
|
|
8
7
|
overmind: "overmind";
|
|
8
|
+
openrouter: "openrouter";
|
|
9
9
|
minimaxi: "minimaxi";
|
|
10
10
|
}>;
|
|
11
|
-
}, z.core.$
|
|
11
|
+
}, z.core.$strip>;
|
|
12
12
|
export declare function configExample(args: z.infer<typeof configExampleSchema>): Promise<{
|
|
13
13
|
content: {
|
|
14
14
|
type: "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config_example.d.ts","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config_example.d.ts","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;iBAI9B,CAAC;AAEH,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;GA4Q5E"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export const configExampleSchema = z
|
|
3
|
-
.object({
|
|
2
|
+
export const configExampleSchema = z.object({
|
|
4
3
|
provider: z
|
|
5
4
|
.enum(['glm', 'minimax', 'openrouter', 'ilmu', 'minimaxi', 'overmind'])
|
|
6
5
|
.describe('Le fournisseur pour lequel vous voulez un exemple de configuration.'),
|
|
7
|
-
})
|
|
8
|
-
.passthrough();
|
|
6
|
+
});
|
|
9
7
|
export async function configExample(args) {
|
|
10
8
|
const { provider } = args;
|
|
11
9
|
let text = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config_example.js","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"config_example.js","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;SACtE,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAyC;IAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,MAAM,mBAAmB,GAAG;;;;GAI3B,CAAC;IAEF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;EAoBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,YAAY;YACf,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;EAoBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,yDAAyD;QACzD,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uGA+G0F,CAAC;YAClG,MAAM;IACV,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_agent.d.ts","sourceRoot":"","sources":["../../src/tools/create_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create_agent.d.ts","sourceRoot":"","sources":["../../src/tools/create_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;iBAgD5B,CAAC;AAEH,wBAAsB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;;;;;;;;;;GAuDxE"}
|