overmind-mcp 2.6.1 → 2.8.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.
Files changed (121) hide show
  1. package/.mcp.json.example +41 -21
  2. package/README.md +179 -187
  3. package/bin/README.md +44 -34
  4. package/bin/install-overmind-windows.bat +56 -12
  5. package/dist/bin/cli.js +115 -24
  6. package/dist/bin/cli.js.map +1 -1
  7. package/dist/bin/overmind-client.d.ts +77 -0
  8. package/dist/bin/overmind-client.d.ts.map +1 -0
  9. package/dist/bin/overmind-client.js +221 -0
  10. package/dist/bin/overmind-client.js.map +1 -0
  11. package/dist/lib/agent_lifecycle.d.ts +91 -0
  12. package/dist/lib/agent_lifecycle.d.ts.map +1 -0
  13. package/dist/lib/agent_lifecycle.js +155 -0
  14. package/dist/lib/agent_lifecycle.js.map +1 -0
  15. package/dist/lib/config.d.ts +5 -26
  16. package/dist/lib/config.d.ts.map +1 -1
  17. package/dist/lib/config.js +33 -12
  18. package/dist/lib/config.js.map +1 -1
  19. package/dist/lib/envUtils.d.ts +1 -1
  20. package/dist/lib/envUtils.d.ts.map +1 -1
  21. package/dist/lib/envUtils.js +11 -4
  22. package/dist/lib/envUtils.js.map +1 -1
  23. package/dist/lib/loadEnv.d.ts.map +1 -1
  24. package/dist/lib/loadEnv.js +9 -4
  25. package/dist/lib/loadEnv.js.map +1 -1
  26. package/dist/lib/logger.d.ts.map +1 -1
  27. package/dist/lib/logger.js +20 -4
  28. package/dist/lib/logger.js.map +1 -1
  29. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
  30. package/dist/lib/orchestration/dispatcher.js +10 -1
  31. package/dist/lib/orchestration/dispatcher.js.map +1 -1
  32. package/dist/lib/orchestration/swarm.d.ts +1 -0
  33. package/dist/lib/orchestration/swarm.d.ts.map +1 -1
  34. package/dist/lib/orchestration/swarm.js +11 -9
  35. package/dist/lib/orchestration/swarm.js.map +1 -1
  36. package/dist/lib/processRegistry.d.ts +2 -50
  37. package/dist/lib/processRegistry.d.ts.map +1 -1
  38. package/dist/lib/processRegistry.js +191 -286
  39. package/dist/lib/processRegistry.js.map +1 -1
  40. package/dist/memory/MemoryFactory.d.ts.map +1 -1
  41. package/dist/memory/MemoryFactory.js +2 -1
  42. package/dist/memory/MemoryFactory.js.map +1 -1
  43. package/dist/memory/PostgresMemoryProvider.d.ts +1 -0
  44. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  45. package/dist/memory/PostgresMemoryProvider.js +22 -3
  46. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  47. package/dist/server.d.ts +1 -1
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +84 -80
  50. package/dist/server.js.map +1 -1
  51. package/dist/services/AgentManager.d.ts +1 -0
  52. package/dist/services/AgentManager.d.ts.map +1 -1
  53. package/dist/services/AgentManager.js +27 -1
  54. package/dist/services/AgentManager.js.map +1 -1
  55. package/dist/services/ClaudeRunner.d.ts +0 -12
  56. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  57. package/dist/services/ClaudeRunner.js +26 -132
  58. package/dist/services/ClaudeRunner.js.map +1 -1
  59. package/dist/services/ClineRunner.d.ts.map +1 -1
  60. package/dist/services/ClineRunner.js +16 -7
  61. package/dist/services/ClineRunner.js.map +1 -1
  62. package/dist/services/GeminiRunner.d.ts.map +1 -1
  63. package/dist/services/GeminiRunner.js +13 -6
  64. package/dist/services/GeminiRunner.js.map +1 -1
  65. package/dist/services/KiloRunner.d.ts.map +1 -1
  66. package/dist/services/KiloRunner.js +7 -4
  67. package/dist/services/KiloRunner.js.map +1 -1
  68. package/dist/services/NousHermesRunner.d.ts +4 -0
  69. package/dist/services/NousHermesRunner.d.ts.map +1 -1
  70. package/dist/services/NousHermesRunner.js +131 -34
  71. package/dist/services/NousHermesRunner.js.map +1 -1
  72. package/dist/services/OpenClawRunner.d.ts.map +1 -1
  73. package/dist/services/OpenClawRunner.js +16 -7
  74. package/dist/services/OpenClawRunner.js.map +1 -1
  75. package/dist/services/OpenCodeRunner.d.ts.map +1 -1
  76. package/dist/services/OpenCodeRunner.js +16 -7
  77. package/dist/services/OpenCodeRunner.js.map +1 -1
  78. package/dist/services/PromptManager.d.ts.map +1 -1
  79. package/dist/services/PromptManager.js +4 -0
  80. package/dist/services/PromptManager.js.map +1 -1
  81. package/dist/services/QwenCliRunner.d.ts.map +1 -1
  82. package/dist/services/QwenCliRunner.js +16 -7
  83. package/dist/services/QwenCliRunner.js.map +1 -1
  84. package/dist/tools/agent_control.d.ts +2 -69
  85. package/dist/tools/agent_control.d.ts.map +1 -1
  86. package/dist/tools/agent_control.js +191 -275
  87. package/dist/tools/agent_control.js.map +1 -1
  88. package/dist/tools/config_example.d.ts +2 -2
  89. package/dist/tools/config_example.d.ts.map +1 -1
  90. package/dist/tools/config_example.js +2 -4
  91. package/dist/tools/config_example.js.map +1 -1
  92. package/dist/tools/create_agent.d.ts.map +1 -1
  93. package/dist/tools/create_agent.js +11 -0
  94. package/dist/tools/create_agent.js.map +1 -1
  95. package/dist/tools/manage_agents.d.ts.map +1 -1
  96. package/dist/tools/manage_agents.js +3 -2
  97. package/dist/tools/manage_agents.js.map +1 -1
  98. package/dist/tools/memory_store.d.ts +1 -1
  99. package/dist/tools/run_agent.d.ts +1 -2
  100. package/dist/tools/run_agent.d.ts.map +1 -1
  101. package/dist/tools/run_agent.js +1 -13
  102. package/dist/tools/run_agent.js.map +1 -1
  103. package/dist/tools/run_agent_cli.d.ts +4 -10
  104. package/dist/tools/run_agent_cli.d.ts.map +1 -1
  105. package/dist/tools/run_agent_cli.js +11 -91
  106. package/dist/tools/run_agent_cli.js.map +1 -1
  107. package/dist/tools/run_agents_parallel.d.ts +1 -2
  108. package/dist/tools/run_agents_parallel.d.ts.map +1 -1
  109. package/dist/tools/run_claude.d.ts +0 -1
  110. package/dist/tools/run_claude.d.ts.map +1 -1
  111. package/dist/tools/run_claude.js +1 -9
  112. package/dist/tools/run_claude.js.map +1 -1
  113. package/dist/tools/run_hermes.d.ts +1 -0
  114. package/dist/tools/run_hermes.d.ts.map +1 -1
  115. package/dist/tools/run_hermes.js +4 -3
  116. package/dist/tools/run_hermes.js.map +1 -1
  117. package/docs/agent-http-tutorial.md +527 -0
  118. package/package.json +114 -112
  119. package/scripts/postgres-manager.mjs +0 -0
  120. package/scripts/setup.mjs +0 -0
  121. package/scripts/uninstall.mjs +0 -0
@@ -1,349 +1,265 @@
1
1
  import { z } from 'zod';
2
- import fs from 'fs/promises';
3
- import { getProcessStatus, killAgent, } from '../lib/processRegistry.js';
4
- const LOG_TAIL_BYTES = 64 * 1024; // 64 KiB enough for most agent outputs, bounded for MCP payloads.
5
- /**
6
- * Read the last N bytes of a log file. Returns empty string on any error
7
- * (file missing, permission denied, etc.) — callers gracefully fall back to
8
- * `entry.outputBuffer`.
9
- */
10
- async function readLogTail(logFile, maxBytes = LOG_TAIL_BYTES) {
11
- try {
12
- const handle = await fs.open(logFile, 'r');
13
- try {
14
- const stat = await handle.stat();
15
- const size = stat.size;
16
- const readLen = Math.min(size, maxBytes);
17
- const offset = size - readLen;
18
- const buf = Buffer.alloc(readLen);
19
- await handle.read(buf, 0, readLen, offset);
20
- return buf.toString('utf-8');
21
- }
22
- finally {
23
- await handle.close();
24
- }
25
- }
26
- catch {
27
- return '';
28
- }
29
- }
30
- /**
31
- * Returns the effective output for an entry: log file tail for detached agents,
32
- * `outputBuffer` for attached agents. Detached agents have empty buffers because
33
- * their stdout/stderr go directly to disk (parent has no pipe to drain).
34
- */
35
- async function getEffectiveOutput(entry) {
36
- if (entry.logFile) {
37
- const tail = await readLogTail(entry.logFile);
38
- if (tail)
39
- return tail;
40
- }
41
- return entry.outputBuffer || '';
42
- }
43
- /**
44
- * agent_control — Outil MCP unifié pour contrôler le cycle de vie des agents OverMind
45
- * ================================================================================
46
- *
47
- * Cet outil remplace les 4 outils individuels précédents :
48
- * - get_agent_status → action: "status"
49
- * - stream_agent_output → action: "stream"
50
- * - kill_agent → action: "kill"
51
- * - wait_agent → action: "wait"
52
- *
53
- * L'UNIFICATION est intentionnelle :
54
- * - Un seul appel MCP pour la toolbox du client (pas 4 imports)
55
- * - Cohérence des paramètres (agentName, runner, config communs)
56
- * - Comportement déterministe : chaque action a une sémantique claire
57
- * - Debugging simplifié : une seule source de vérité
58
- *
59
- * ─── SÉMANTIQUE DES ACTIONS ──────────────────────────────────────────────────
60
- *
61
- * status ─── Lecture pure, zero side-effect
62
- * → Retourne l'état courant du process (pid, status, sessionId, outputBuffer)
63
- * → NE MODIFIE PAS le registry (pas de mise à jour de timestamps artificiels)
64
- * → Use-case : dashboard, polling léger, diagnostic
65
- *
66
- * stream ─── Lecture + indicateur de complétude
67
- * → Retourne outputBuffer ET un flag isComplete
68
- * → Use-case : récupérer la sortie en temps réel sans savoir si c'est fini
69
- * → Option sinceTimestamp pour ne récupérer que le增量 (si implémenté)
70
- *
71
- * kill ─── Action destructive, irréversible
72
- * → Tue le process tree via taskkill /F /T (Windows) ou kill -9 (Unix)
73
- * → Met à jour le status → 'failed' dans le registry
74
- * → Use-case : abort d'urgence, kill-switch
75
- *
76
- * wait ─── Blocage async avec polling
77
- * → Poll toutes les 1s jusqu'à status !== 'running' ou timeout
78
- * → Retourne le résultat final (outputBuffer ou erreur)
79
- * → Use-case : synchronisation dans un workflow d'orchestration
80
- *
81
- * ─── ÉTATS DU PROCESS ─────────────────────────────────────────────────────────
82
- *
83
- * running → Process actif, PID valide, output en cours d'accumulation
84
- * done → Process terminé avec code 0, outputBuffer gelé
85
- * failed → Process terminé avec erreur (exit code != 0 ou crash)
86
- * orphaned → Parent mort mais child tourne encore (detecté via isPidAlive)
87
- *
88
- * ─── ERREURS COMMUNES ─────────────────────────────────────────────────────────
89
- *
90
- * AGENT_NOT_FOUND → Agent absent du registry (jamais lancé ou déjà nettoyé)
91
- * AGENT_NOT_RUNNING → Action "kill" sur un agent déjà terminé
92
- * KILL_FAILED → taskkill/kill a échoué (pas assez de permissions, etc.)
93
- * WAIT_TIMEOUT → Action "wait" a atteint le timeout sans terminaison
94
- * ORPHANED_PROCESS → Status 'orphaned' détecté (process zombie)
95
- *
96
- * ─── EXEMPLES ─────────────────────────────────────────────────────────────────
97
- *
98
- * // Vérifier si un agent tourne encore
99
- * agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "status" })
100
- *
101
- * // Récupérer la sortie sans bloquer
102
- * agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "stream" })
103
- *
104
- * // Forcer l'arrêt d'un agent
105
- * agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "kill" })
106
- *
107
- * // Attendre la fin d'un agent (max 5 min)
108
- * agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "wait", timeoutMs: 300000 })
109
- */
110
- // ─── SCHÉMA ZOD ────────────────────────────────────────────────────────────────
2
+ import { getProcessStatus, killAgent } from '../lib/processRegistry.js';
3
+ import { getLiveAgent, getLiveAgentByPid, } from '../lib/agent_lifecycle.js';
4
+ // ─── Schema + Types ──────────────────────────────────────────────────────────
111
5
  export const agentControlSchema = z
112
6
  .object({
113
- agentName: z.string().describe('Nom unique de l agent à contrôler'),
7
+ agentName: z.string().describe("Nom unique de l'agent à contrôler"),
114
8
  runner: z
115
9
  .enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
116
10
  .optional()
117
- .describe("Type de runner de l'agent (optionnel — déduit du registry si omis)"),
118
- config: z
119
- .string()
120
- .optional()
121
- .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'),
122
13
  action: z
123
14
  .enum(['status', 'stream', 'kill', 'wait'])
124
- .describe('Action à effectuer.\n' +
125
- ' status Lire l\'état courant (pid, status, sessionId, outputBuffer)\n' +
126
- ' stream Lire l\'output en temps réel + flag isComplete\n' +
127
- ' kill Forcer l\'arrêt du process tree (irréversible)\n' +
128
- ' 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)'),
129
19
  timeoutMs: z
130
20
  .number()
21
+ .int()
22
+ .min(1000)
23
+ .max(3600000)
131
24
  .optional()
132
25
  .default(900000)
133
- .describe('Timeout pour action="wait" en ms (défaut: 900000 = 15 min)'),
134
- sinceTimestamp: z
135
- .number()
136
- .optional()
137
- .describe('Pour action="stream" : ne retourner que l\'output après ce timestamp (ms epoch)'),
138
- })
139
- .passthrough();
140
- /** Construit un rapport d'état formaté depuis une ProcessEntry */
141
- function formatStatus(entry, output) {
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) {
142
39
  const lines = [];
143
- lines.push(`**Agent:** ${entry.agentName}`);
144
- lines.push(`**Runner:** ${entry.runner || 'inconnu'}`);
145
- lines.push(`**Status:** ${entry.status}`);
146
- if (entry.detached)
147
- lines.push(`**Mode:** detached`);
148
- lines.push(`**Started:** ${new Date(entry.ts).toISOString()}`);
149
- if (entry.pid)
150
- lines.push(`**PID:** ${entry.pid}`);
151
- if (entry.id)
152
- lines.push(`**Session ID:** ${entry.id}`);
153
- if (entry.exitCode !== null && entry.exitCode !== undefined) {
154
- lines.push(`**Exit Code:** ${entry.exitCode}`);
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()}`);
155
53
  }
156
- if (entry.lastOutputAt) {
157
- lines.push(`**Last Output:** ${new Date(entry.lastOutputAt).toISOString()}`);
158
- }
159
- if (entry.logFile)
160
- lines.push(`**Log File:** ${entry.logFile}`);
161
- if (output.length > 0) {
162
- lines.push(`\n**Output (${output.length} chars):**`);
163
- // On limite l'output dans le rapport à 2000 derniers caractères
164
- const preview = output.slice(-2000);
54
+ const bufLen = view.outputBuffer.length;
55
+ if (bufLen > 0) {
56
+ lines.push(`\n**Output (${bufLen} chars):**`);
165
57
  lines.push('```');
166
- lines.push(preview);
58
+ lines.push(view.outputBuffer.slice(-2000));
167
59
  lines.push('```');
168
60
  }
169
61
  else {
170
- lines.push('\n_(output vide ou pas encore de sortie)_');
62
+ lines.push('\n_(output vide)_');
171
63
  }
172
64
  return lines.join('\n');
173
65
  }
174
- /** Récupère l'entrée depuis le registry ou retourne une erreur structurée */
175
- async function resolveEntry(agentName, runner, configPath) {
176
- const entry = await getProcessStatus(agentName, runner, configPath);
177
- if (!entry) {
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) {
178
71
  return {
179
- error: `Agent "${agentName}" (runner: ${runner || 'any'}) non trouvé dans le registry. ` +
180
- `Il n'est pas en cours d'exécution ou a été nettoyé (TTL 1h après terminaison).`,
181
- code: 'AGENT_NOT_FOUND',
72
+ content: [{ type: 'text', text: `Agent "${agentName}" non trouvé.` }],
73
+ isError: true,
182
74
  };
183
75
  }
184
- return entry;
185
- }
186
- /** Action STATUS — lecture pure */
187
- async function doStatus(agentName, runner, configPath) {
188
- const resolved = await resolveEntry(agentName, runner, configPath);
189
- if ('error' in resolved) {
190
- return { content: [{ type: 'text', text: resolved.error }], isError: true };
191
- }
192
- const isError = resolved.status === 'failed' || resolved.status === 'orphaned';
193
- const output = await getEffectiveOutput(resolved);
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);
194
100
  return {
195
- content: [{ type: 'text', text: formatStatus(resolved, output) }],
196
- isError,
101
+ content: [{ type: 'text', text: formatAgent(view, 'status') }],
102
+ isError: !!isZombie,
197
103
  };
198
104
  }
199
- /** Action STREAM — lecture + complétude */
200
- async function doStream(agentName, runner, configPath, sinceTimestamp) {
201
- const resolved = await resolveEntry(agentName, runner, configPath);
202
- if ('error' in resolved) {
203
- return { content: [{ type: 'text', text: resolved.error }], isError: true };
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
+ };
204
113
  }
205
- const isComplete = resolved.status === 'done' ||
206
- resolved.status === 'failed' ||
207
- resolved.status === 'orphaned';
208
- const output = await getEffectiveOutput(resolved);
209
- // Filtering by sinceTimestamp is best-effort if lastOutputAt is available
210
- if (sinceTimestamp && resolved.lastOutputAt && resolved.lastOutputAt > sinceTimestamp) {
211
- // NOTE: per-chunk timestamps ne sont pas encore implémentés dans processRegistry.
212
- // Pour l'instant on retourne tout l'outputBuffer. La filtering precise
213
- // 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;
214
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
+ };
215
145
  const lines = [];
216
- lines.push(`**Agent:** ${resolved.agentName}`);
217
- lines.push(`**Status:** ${resolved.status}`);
218
- if (resolved.detached)
219
- lines.push(`**Mode:** detached`);
146
+ lines.push(`**Agent:** ${view.agentName}`);
147
+ lines.push(`**Status:** ${view.status}`);
220
148
  lines.push(`**isComplete:** ${isComplete}`);
221
- if (resolved.pid)
222
- lines.push(`**PID:** ${resolved.pid}`);
223
- if (resolved.lastOutputAt) {
224
- lines.push(`**Last Output At:** ${new Date(resolved.lastOutputAt).toISOString()}`);
225
- }
226
- if (resolved.logFile)
227
- lines.push(`**Log File:** ${resolved.logFile}`);
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()}`);
228
153
  lines.push(`\n**Output (${output.length} chars):**`);
229
154
  lines.push('```');
230
- lines.push(output || '(no output yet)');
155
+ lines.push(output.slice(-2000) || '(no output yet)');
231
156
  lines.push('```');
232
157
  return {
233
158
  content: [{ type: 'text', text: lines.join('\n') }],
234
- isError: resolved.status === 'failed' || resolved.status === 'orphaned',
159
+ isError: isComplete && view.status === 'failed',
235
160
  };
236
161
  }
237
- /** Action KILL — destruction */
238
- async function doKill(agentName, runner, configPath) {
239
- const resolved = await resolveEntry(agentName, runner, configPath);
240
- if ('error' in resolved) {
241
- return { content: [{ type: 'text', text: resolved.error }], isError: true };
242
- }
243
- if (resolved.status !== 'running') {
244
- return {
245
- content: [
246
- {
247
- type: 'text',
248
- text: `Agent "${agentName}" n'est pas en cours d'exécution (status: ${resolved.status}). ` +
249
- `Impossible de tuer un agent déjà terminé.`,
250
- },
251
- ],
252
- isError: true,
253
- };
254
- }
255
- const killResult = await killAgent(agentName, runner, configPath);
256
- 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);
257
167
  return {
258
168
  content: [
259
169
  {
260
170
  type: 'text',
261
- text: `Échec du kill pour "${agentName}". ` +
262
- `Le process n'a pas pu être terminé (possible: permissions insuffisantes, ` +
263
- `process déjà terminé entre-temps).`,
171
+ text: disk
172
+ ? `Agent "${agentName}" nest plus en cours (status: ${disk.status}).`
173
+ : `Agent "${agentName}" non trouvé.`,
264
174
  },
265
175
  ],
266
176
  isError: true,
267
177
  };
268
178
  }
179
+ const pid = live.pid;
180
+ const result = await killAgent(agentName, runner);
269
181
  return {
270
182
  content: [
271
183
  {
272
184
  type: 'text',
273
- text: `Agent "${agentName}" tué avec succès (PID: ${killResult.pid}). ` +
274
- `Status mis à jour → 'failed' dans le registry.`,
185
+ text: result.killed
186
+ ? `Agent "${agentName}" tué (PID: ${pid}).`
187
+ : `Échec du kill pour "${agentName}".`,
275
188
  },
276
189
  ],
190
+ isError: !result.killed,
277
191
  };
278
192
  }
279
- /** Action WAIT — blocage async */
280
- async function doWait(agentName, runner, configPath, timeoutMs) {
281
- const start = Date.now();
282
- const pollInterval = 1000; // 1 seconde entre chaque poll
283
- const buildTerminalResult = async (resolved) => {
284
- const output = await getEffectiveOutput(resolved);
285
- 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') {
286
199
  return {
287
- content: [{ type: 'text', text: output || 'Agent terminé avec succès.' }],
200
+ content: [{ type: 'text', text: live.outputBuffer || `Agent terminé (${live.status}).` }],
201
+ isError: live.status === 'failed' || live.status === 'orphaned',
288
202
  };
289
203
  }
290
- return {
291
- content: [
292
- {
293
- type: 'text',
294
- text: `Agent terminé avec erreur (${resolved.status}):\n\n${output || 'N/A'}`,
295
- },
296
- ],
297
- isError: true,
298
- };
299
- };
300
- // Premier check immédiat
301
- {
302
- const resolved = await resolveEntry(agentName, runner, configPath);
303
- if ('error' in resolved) {
304
- return { content: [{ type: 'text', text: resolved.error }], isError: true };
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
+ }
305
225
  }
306
- if (resolved.status !== 'running') {
307
- return buildTerminalResult(resolved);
226
+ }
227
+ else {
228
+ // Fallback: disk polling
229
+ const disk = await getProcessStatus(agentName, runner);
230
+ if (!disk || disk.status !== 'running') {
231
+ return {
232
+ content: [{ type: 'text', text: disk ? `Agent terminé (${disk.status}).` : `Agent non trouvé.` }],
233
+ isError: true,
234
+ };
308
235
  }
309
236
  }
310
- // Boucle de polling
237
+ // Polling fallback (disk or no AbortController)
238
+ const start = Date.now();
239
+ const pollInterval = 1000;
311
240
  while (Date.now() - start < timeoutMs) {
312
241
  await new Promise((r) => setTimeout(r, pollInterval));
313
- const resolved = await resolveEntry(agentName, runner, configPath);
314
- if ('error' in resolved) {
315
- return { content: [{ type: 'text', text: resolved.error }], isError: true };
316
- }
317
- if (resolved.status !== 'running') {
318
- return buildTerminalResult(resolved);
242
+ const current = getLiveAgent(agentName, runner);
243
+ if (!current || current.status !== 'running') {
244
+ return {
245
+ content: [{ type: 'text', text: current?.outputBuffer || 'Agent terminé.' }],
246
+ isError: current?.status === 'failed' || current?.status === 'orphaned' || !current,
247
+ };
319
248
  }
320
- // Status still 'running' — continue polling
321
249
  }
322
- // Timeout atteint
323
250
  return {
324
- content: [
325
- {
326
- type: 'text',
327
- text: `Timeout de ${timeoutMs}ms atteint. ` +
328
- `L'agent "${agentName}" est toujours en cours d'exécution (status: running). ` +
329
- `Utilisez action="kill" pour forcer l'arrêt ou augmentez timeoutMs.`,
330
- },
331
- ],
251
+ content: [{ type: 'text', text: `Timeout ${timeoutMs}ms atteint. Agent toujours en cours.` }],
332
252
  isError: true,
333
253
  };
334
254
  }
335
- // ─── FONCTION PRINCIPALE ───────────────────────────────────────────────────────
255
+ // ─── Main entry point ─────────────────────────────────────────────────────────
336
256
  export async function agentControl(args) {
337
- const { agentName, runner, config: configPath, action, timeoutMs, sinceTimestamp } = args;
257
+ const { agentName, runner, action, timeoutMs, sinceTimestamp } = args;
338
258
  switch (action) {
339
- case 'status':
340
- return doStatus(agentName, runner, configPath);
341
- case 'stream':
342
- return doStream(agentName, runner, configPath, sinceTimestamp);
343
- case 'kill':
344
- return doKill(agentName, runner, configPath);
345
- case 'wait':
346
- 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);
347
263
  }
348
264
  }
349
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,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,SAAS,GAEV,MAAM,2BAA2B,CAAC;AAEnC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,oEAAoE;AAEtG;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,WAAmB,cAAc;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,KAAmB;IACnD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,kFAAkF;AAElF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACnE,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACxF,QAAQ,EAAE;SACV,QAAQ,CAAC,oEAAoE,CAAC;IACjF,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC1C,QAAQ,CACP,uBAAuB;QACrB,2EAA2E;QAC3E,8DAA8D;QAC9D,8DAA8D;QAC9D,oEAAoE,CACvE;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,4DAA4D,CAAC;IACzE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;CAC/F,CAAC;KACD,WAAW,EAAE,CAAC;AAWjB,kEAAkE;AAClE,SAAS,YAAY,CAAC,KAAmB,EAAE,MAAc;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE/D,IAAI,KAAK,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QACrD,gEAAgE;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,YAAY,CACzB,SAAiB,EACjB,MAA0B,EAC1B,UAA8B;IAE9B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,UAAU,SAAS,cAAc,MAAM,IAAI,KAAK,iCAAiC;gBACtF,gFAAgF;YAClF,IAAI,EAAE,iBAAiB;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mCAAmC;AACnC,KAAK,UAAU,QAAQ,CACrB,SAAiB,EACjB,MAA0B,EAC1B,UAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnE,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAElD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO;KACR,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,KAAK,UAAU,QAAQ,CACrB,SAAiB,EACjB,MAA0B,EAC1B,UAA8B,EAC9B,cAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnE,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,KAAK,MAAM;QAC1B,QAAQ,CAAC,MAAM,KAAK,QAAQ;QAC5B,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAElD,0EAA0E;IAC1E,IAAI,cAAc,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;QACtF,kFAAkF;QAClF,uEAAuE;QACvE,8EAA8E;IAChF,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtE,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU;KACxE,CAAC;AACJ,CAAC;AAED,gCAAgC;AAChC,KAAK,UAAU,MAAM,CACnB,SAAiB,EACjB,MAA0B,EAC1B,UAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnE,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,SAAS,6CAA6C,QAAQ,CAAC,MAAM,KAAK;wBACxF,2CAA2C;iBAC9C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,SAAS,KAAK;wBACzC,2EAA2E;wBAC3E,oCAAoC;iBACvC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU,SAAS,2BAA2B,UAAU,CAAC,GAAG,KAAK;oBACrE,gDAAgD;aACnD;SACF;KACF,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,KAAK,UAAU,MAAM,CACnB,SAAiB,EACjB,MAA0B,EAC1B,UAA8B,EAC9B,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,8BAA8B;IAEzD,MAAM,mBAAmB,GAAG,KAAK,EAAE,QAAsB,EAA0B,EAAE;QACnF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,4BAA4B,EAAE,CAAC;aAC1E,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8BAA8B,QAAQ,CAAC,MAAM,SAAS,MAAM,IAAI,KAAK,EAAE;iBAC9E;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC;IAEF,yBAAyB;IACzB,CAAC;QACC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACnE,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9E,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEnE,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9E,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,4CAA4C;IAC9C,CAAC;IAED,kBAAkB;IAClB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,cAAc,SAAS,cAAc;oBACzC,YAAY,SAAS,yDAAyD;oBAC9E,oEAAoE;aACvE;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,kFAAkF;AAElF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAE1F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACjE,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC/C,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
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.$loose>;
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;;;;;;;;;iBAMhB,CAAC;AAEjB,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;GA4Q5E"}
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"}