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,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
+
import { validateAgentName } from './AgentManager.js';
|
|
4
5
|
export class PromptManager {
|
|
5
6
|
baseDir;
|
|
6
7
|
agentsDir;
|
|
@@ -17,6 +18,7 @@ export class PromptManager {
|
|
|
17
18
|
this.agentsDir = path.join(this.baseDir, 'agents');
|
|
18
19
|
}
|
|
19
20
|
async createPrompt(name, content) {
|
|
21
|
+
validateAgentName(name);
|
|
20
22
|
await fs.mkdir(this.agentsDir, { recursive: true });
|
|
21
23
|
const filePath = path.join(this.agentsDir, `${name}.md`);
|
|
22
24
|
const existed = await fs
|
|
@@ -27,6 +29,7 @@ export class PromptManager {
|
|
|
27
29
|
return { filePath, existed };
|
|
28
30
|
}
|
|
29
31
|
async editPrompt(name, search, replace) {
|
|
32
|
+
validateAgentName(name);
|
|
30
33
|
const filePath = path.join(this.agentsDir, `${name}.md`);
|
|
31
34
|
try {
|
|
32
35
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
@@ -42,6 +45,7 @@ export class PromptManager {
|
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
async getPromptContent(name) {
|
|
48
|
+
validateAgentName(name);
|
|
45
49
|
const filePath = path.join(this.agentsDir, `${name}.md`);
|
|
46
50
|
try {
|
|
47
51
|
return await fs.readFile(filePath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptManager.js","sourceRoot":"","sources":["../../src/services/PromptManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"PromptManager.js","sourceRoot":"","sources":["../../src/services/PromptManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,OAAO,aAAa;IAChB,OAAO,CAAS;IAChB,SAAS,CAAS;IAE1B,YAAY,aAAsB;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACvC,MAAM,eAAe,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,IAAY,EACZ,OAAe;QAEf,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,EAAE;aACrB,IAAI,CAAC,QAAQ,CAAC;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAY,EACZ,MAAc,EACd,OAAe;QAEf,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;YACjE,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAElD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QwenCliRunner.d.ts","sourceRoot":"","sources":["../../src/services/QwenCliRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QwenCliRunner.d.ts","sourceRoot":"","sources":["../../src/services/QwenCliRunner.ts"],"names":[],"mappings":"AAiBA,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,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;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;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAoB;;IAOnC,OAAO,CAAC,gBAAgB;IAclB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAgBnD,gBAAgB;CA6H/B"}
|
|
@@ -6,7 +6,7 @@ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
|
|
|
6
6
|
import { interpolateEnvVars } from '../lib/envUtils.js';
|
|
7
7
|
import { withSpan } from '../lib/telemetry.js';
|
|
8
8
|
import pino from 'pino';
|
|
9
|
-
import { registerProcess, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
|
|
9
|
+
import { registerProcess, appendOutput, updateProcessStatus, killProcessTree, } from '../lib/processRegistry.js';
|
|
10
10
|
const logger = pino({ name: 'QwenCliRunner' });
|
|
11
11
|
export class QwenCLIRunner {
|
|
12
12
|
config;
|
|
@@ -117,19 +117,28 @@ export class QwenCLIRunner {
|
|
|
117
117
|
else
|
|
118
118
|
stderr += d.toString();
|
|
119
119
|
});
|
|
120
|
-
const timeout = setTimeout(() => {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
const timeout = setTimeout(async () => {
|
|
121
|
+
// Use killProcessTree to prevent zombie processes on Windows
|
|
122
|
+
if (child.pid)
|
|
123
|
+
await killProcessTree(child.pid);
|
|
124
|
+
else
|
|
125
|
+
child.kill('SIGTERM');
|
|
126
|
+
hardTimeoutTimer = setTimeout(async () => {
|
|
127
|
+
if (!child.killed) {
|
|
128
|
+
if (child.pid)
|
|
129
|
+
await killProcessTree(child.pid);
|
|
130
|
+
else
|
|
131
|
+
child.kill('SIGKILL');
|
|
132
|
+
}
|
|
125
133
|
}, 5000);
|
|
126
|
-
cleanup()
|
|
134
|
+
// Don't call cleanup() here — let the 'close' handler do it
|
|
127
135
|
if (child.pid)
|
|
128
136
|
void updateProcessStatus(child.pid, 'failed', null, options.configPath);
|
|
129
137
|
resolve({ result: '', error: 'TIMEOUT', rawOutput: stdout });
|
|
130
138
|
}, customTimeoutMs);
|
|
131
139
|
child.on('close', async (code) => {
|
|
132
140
|
clearTimeout(timeout);
|
|
141
|
+
cleanup(); // Moved here: cleanup after process actually exits
|
|
133
142
|
if (child.pid)
|
|
134
143
|
void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, options.configPath);
|
|
135
144
|
if (code !== 0 && !stdout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QwenCliRunner.js","sourceRoot":"","sources":["../../src/services/QwenCliRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"QwenCliRunner.js","sourceRoot":"","sources":["../../src/services/QwenCliRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* agent_control — Outil MCP unifié pour contrôler le cycle de vie des agents OverMind
|
|
4
|
-
* ================================================================================
|
|
5
|
-
*
|
|
6
|
-
* Cet outil remplace les 4 outils individuels précédents :
|
|
7
|
-
* - get_agent_status → action: "status"
|
|
8
|
-
* - stream_agent_output → action: "stream"
|
|
9
|
-
* - kill_agent → action: "kill"
|
|
10
|
-
* - wait_agent → action: "wait"
|
|
11
|
-
*
|
|
12
|
-
* L'UNIFICATION est intentionnelle :
|
|
13
|
-
* - Un seul appel MCP pour la toolbox du client (pas 4 imports)
|
|
14
|
-
* - Cohérence des paramètres (agentName, runner, config communs)
|
|
15
|
-
* - Comportement déterministe : chaque action a une sémantique claire
|
|
16
|
-
* - Debugging simplifié : une seule source de vérité
|
|
17
|
-
*
|
|
18
|
-
* ─── SÉMANTIQUE DES ACTIONS ──────────────────────────────────────────────────
|
|
19
|
-
*
|
|
20
|
-
* status ─── Lecture pure, zero side-effect
|
|
21
|
-
* → Retourne l'état courant du process (pid, status, sessionId, outputBuffer)
|
|
22
|
-
* → NE MODIFIE PAS le registry (pas de mise à jour de timestamps artificiels)
|
|
23
|
-
* → Use-case : dashboard, polling léger, diagnostic
|
|
24
|
-
*
|
|
25
|
-
* stream ─── Lecture + indicateur de complétude
|
|
26
|
-
* → Retourne outputBuffer ET un flag isComplete
|
|
27
|
-
* → Use-case : récupérer la sortie en temps réel sans savoir si c'est fini
|
|
28
|
-
* → Option sinceTimestamp pour ne récupérer que le增量 (si implémenté)
|
|
29
|
-
*
|
|
30
|
-
* kill ─── Action destructive, irréversible
|
|
31
|
-
* → Tue le process tree via taskkill /F /T (Windows) ou kill -9 (Unix)
|
|
32
|
-
* → Met à jour le status → 'failed' dans le registry
|
|
33
|
-
* → Use-case : abort d'urgence, kill-switch
|
|
34
|
-
*
|
|
35
|
-
* wait ─── Blocage async avec polling
|
|
36
|
-
* → Poll toutes les 1s jusqu'à status !== 'running' ou timeout
|
|
37
|
-
* → Retourne le résultat final (outputBuffer ou erreur)
|
|
38
|
-
* → Use-case : synchronisation dans un workflow d'orchestration
|
|
39
|
-
*
|
|
40
|
-
* ─── ÉTATS DU PROCESS ─────────────────────────────────────────────────────────
|
|
41
|
-
*
|
|
42
|
-
* running → Process actif, PID valide, output en cours d'accumulation
|
|
43
|
-
* done → Process terminé avec code 0, outputBuffer gelé
|
|
44
|
-
* failed → Process terminé avec erreur (exit code != 0 ou crash)
|
|
45
|
-
* orphaned → Parent mort mais child tourne encore (detecté via isPidAlive)
|
|
46
|
-
*
|
|
47
|
-
* ─── ERREURS COMMUNES ─────────────────────────────────────────────────────────
|
|
48
|
-
*
|
|
49
|
-
* AGENT_NOT_FOUND → Agent absent du registry (jamais lancé ou déjà nettoyé)
|
|
50
|
-
* AGENT_NOT_RUNNING → Action "kill" sur un agent déjà terminé
|
|
51
|
-
* KILL_FAILED → taskkill/kill a échoué (pas assez de permissions, etc.)
|
|
52
|
-
* WAIT_TIMEOUT → Action "wait" a atteint le timeout sans terminaison
|
|
53
|
-
* ORPHANED_PROCESS → Status 'orphaned' détecté (process zombie)
|
|
54
|
-
*
|
|
55
|
-
* ─── EXEMPLES ─────────────────────────────────────────────────────────────────
|
|
56
|
-
*
|
|
57
|
-
* // Vérifier si un agent tourne encore
|
|
58
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "status" })
|
|
59
|
-
*
|
|
60
|
-
* // Récupérer la sortie sans bloquer
|
|
61
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "stream" })
|
|
62
|
-
*
|
|
63
|
-
* // Forcer l'arrêt d'un agent
|
|
64
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "kill" })
|
|
65
|
-
*
|
|
66
|
-
* // Attendre la fin d'un agent (max 5 min)
|
|
67
|
-
* agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "wait", timeoutMs: 300000 })
|
|
68
|
-
*/
|
|
69
2
|
export declare const agentControlSchema: z.ZodObject<{
|
|
70
3
|
agentName: z.ZodString;
|
|
71
4
|
runner: z.ZodOptional<z.ZodEnum<{
|
|
@@ -80,14 +13,14 @@ export declare const agentControlSchema: z.ZodObject<{
|
|
|
80
13
|
}>>;
|
|
81
14
|
config: z.ZodOptional<z.ZodString>;
|
|
82
15
|
action: z.ZodEnum<{
|
|
83
|
-
status: "status";
|
|
84
16
|
kill: "kill";
|
|
17
|
+
status: "status";
|
|
85
18
|
stream: "stream";
|
|
86
19
|
wait: "wait";
|
|
87
20
|
}>;
|
|
88
21
|
timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
89
22
|
sinceTimestamp: z.ZodOptional<z.ZodNumber>;
|
|
90
|
-
}, z.core.$
|
|
23
|
+
}, z.core.$strip>;
|
|
91
24
|
export type AgentControlArgs = z.infer<typeof agentControlSchema>;
|
|
92
25
|
interface ControlResult {
|
|
93
26
|
content: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_control.d.ts","sourceRoot":"","sources":["../../src/tools/agent_control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"agent_control.d.ts","sourceRoot":"","sources":["../../src/tools/agent_control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;iBAyB3B,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAElE,UAAU,aAAa;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAuRD,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CASjF"}
|