overmind-mcp 2.3.0 → 2.3.2
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/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/orchestration/dispatcher.d.ts +3 -3
- package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
- package/dist/lib/orchestration/dispatcher.js +1 -56
- package/dist/lib/orchestration/dispatcher.js.map +1 -1
- package/dist/lib/processRegistry.d.ts +2 -0
- package/dist/lib/processRegistry.d.ts.map +1 -1
- package/dist/lib/processRegistry.js +21 -2
- package/dist/lib/processRegistry.js.map +1 -1
- package/dist/lib/telemetry.d.ts +17 -5
- package/dist/lib/telemetry.d.ts.map +1 -1
- package/dist/lib/telemetry.js +20 -65
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/server.d.ts +16 -28
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +62 -69
- package/dist/server.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +4 -1
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/tools/agent_control.d.ts +101 -0
- package/dist/tools/agent_control.d.ts.map +1 -0
- package/dist/tools/agent_control.js +320 -0
- package/dist/tools/agent_control.js.map +1 -0
- package/dist/tools/run_agents_parallel.d.ts +3 -3
- package/docs/agent_control.md +656 -0
- package/package.json +1 -12
- package/scripts/auto-install.mjs +0 -5
- package/scripts/uninstall.mjs +2 -15
- package/dist/bin/rabbitmq-worker.d.ts +0 -2
- package/dist/bin/rabbitmq-worker.d.ts.map +0 -1
- package/dist/bin/rabbitmq-worker.js +0 -63
- package/dist/bin/rabbitmq-worker.js.map +0 -1
- package/dist/bin/temporal-worker.d.ts +0 -2
- package/dist/bin/temporal-worker.d.ts.map +0 -1
- package/dist/bin/temporal-worker.js +0 -24
- package/dist/bin/temporal-worker.js.map +0 -1
- package/dist/lib/broker/rabbitmq.d.ts +0 -28
- package/dist/lib/broker/rabbitmq.d.ts.map +0 -1
- package/dist/lib/broker/rabbitmq.js +0 -67
- package/dist/lib/broker/rabbitmq.js.map +0 -1
- package/dist/lib/broker/rabbitmqDispatch.d.ts +0 -23
- package/dist/lib/broker/rabbitmqDispatch.d.ts.map +0 -1
- package/dist/lib/broker/rabbitmqDispatch.js +0 -77
- package/dist/lib/broker/rabbitmqDispatch.js.map +0 -1
- package/dist/lib/workflow/temporal/activities.d.ts +0 -15
- package/dist/lib/workflow/temporal/activities.d.ts.map +0 -1
- package/dist/lib/workflow/temporal/activities.js +0 -18
- package/dist/lib/workflow/temporal/activities.js.map +0 -1
- package/dist/lib/workflow/temporal/client.d.ts +0 -8
- package/dist/lib/workflow/temporal/client.d.ts.map +0 -1
- package/dist/lib/workflow/temporal/client.js +0 -48
- package/dist/lib/workflow/temporal/client.js.map +0 -1
- package/dist/lib/workflow/temporal/dispatch.d.ts +0 -13
- package/dist/lib/workflow/temporal/dispatch.d.ts.map +0 -1
- package/dist/lib/workflow/temporal/dispatch.js +0 -19
- package/dist/lib/workflow/temporal/dispatch.js.map +0 -1
- package/dist/lib/workflow/temporal/workflows.d.ts +0 -31
- package/dist/lib/workflow/temporal/workflows.d.ts.map +0 -1
- package/dist/lib/workflow/temporal/workflows.js +0 -79
- package/dist/lib/workflow/temporal/workflows.js.map +0 -1
- package/dist/tools/get_agent_status.d.ts +0 -29
- package/dist/tools/get_agent_status.d.ts.map +0 -1
- package/dist/tools/get_agent_status.js +0 -45
- package/dist/tools/get_agent_status.js.map +0 -1
- package/dist/tools/kill_agent.d.ts +0 -22
- package/dist/tools/kill_agent.d.ts.map +0 -1
- package/dist/tools/kill_agent.js +0 -33
- package/dist/tools/kill_agent.js.map +0 -1
- package/dist/tools/stream_agent_output.d.ts +0 -30
- package/dist/tools/stream_agent_output.d.ts.map +0 -1
- package/dist/tools/stream_agent_output.js +0 -44
- package/dist/tools/stream_agent_output.js.map +0 -1
- package/dist/tools/wait_agent.d.ts +0 -30
- package/dist/tools/wait_agent.d.ts.map +0 -1
- package/dist/tools/wait_agent.js +0 -68
- package/dist/tools/wait_agent.js.map +0 -1
- package/docs/ASYNC_AGENT_INTEGRATION.md +0 -311
- package/docs/INDEX.md +0 -144
- package/docs/changelog/CHANGELOG.add.md +0 -106
- package/docs/changelog/CHANGELOG.md +0 -339
- package/docs/docs/OVERMIND_WORKFLOW_GUIDE.md +0 -595
- package/docs/docs/PROJECT_STRUCTURE.md +0 -101
- package/docs/docs/README_POSTGRES_INTEGRATION.md +0 -229
- package/docs/prompt/Claude_code.md +0 -74
- package/docs/prompt/Kilo.md +0 -74
- package/docs/prompt/Kilo_Hermes.md +0 -170
- package/docs/prompt/Minimax4.md +0 -96
- package/docs/tools.md +0 -794
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { proxyActivities, defineSignal, defineQuery, setHandler, condition } from '@temporalio/workflow';
|
|
2
|
-
const activities = proxyActivities({
|
|
3
|
-
startToCloseTimeout: '15 minutes',
|
|
4
|
-
retry: {
|
|
5
|
-
maximumAttempts: 2,
|
|
6
|
-
},
|
|
7
|
-
});
|
|
8
|
-
export async function orchestrateAgentsWorkflow(agents) {
|
|
9
|
-
return Promise.all(agents.map((agent) => activities.runAgentActivity({
|
|
10
|
-
runner: agent.runner,
|
|
11
|
-
prompt: agent.prompt,
|
|
12
|
-
agentName: agent.agentName,
|
|
13
|
-
model: agent.model,
|
|
14
|
-
path: agent.path,
|
|
15
|
-
})));
|
|
16
|
-
}
|
|
17
|
-
// Signals pour contrôle externe
|
|
18
|
-
const cancelSignal = defineSignal('cancel');
|
|
19
|
-
const pauseSignal = defineSignal('pause');
|
|
20
|
-
const resumeSignal = defineSignal('resume');
|
|
21
|
-
// Query pour état en temps réel
|
|
22
|
-
const stateQuery = defineQuery('state');
|
|
23
|
-
export async function longRunningWorkflow(input) {
|
|
24
|
-
const { batches } = input;
|
|
25
|
-
const state = {
|
|
26
|
-
totalBatches: batches.length,
|
|
27
|
-
completedBatches: 0,
|
|
28
|
-
failedBatches: 0,
|
|
29
|
-
errors: [],
|
|
30
|
-
};
|
|
31
|
-
let cancelled = false;
|
|
32
|
-
let paused = false;
|
|
33
|
-
// Gestionnaires de signaux
|
|
34
|
-
setHandler(cancelSignal, () => {
|
|
35
|
-
cancelled = true;
|
|
36
|
-
});
|
|
37
|
-
setHandler(pauseSignal, () => {
|
|
38
|
-
paused = true;
|
|
39
|
-
});
|
|
40
|
-
setHandler(resumeSignal, () => {
|
|
41
|
-
paused = false;
|
|
42
|
-
});
|
|
43
|
-
setHandler(stateQuery, () => state);
|
|
44
|
-
// Exécuter les batches avec parallélisme limitée
|
|
45
|
-
for (let i = 0; i < batches.length; i++) {
|
|
46
|
-
if (cancelled) {
|
|
47
|
-
state.errors.push('Workflow annulé par signal externe');
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
// Attendre si paused
|
|
51
|
-
await condition(() => !paused);
|
|
52
|
-
const batch = batches[i];
|
|
53
|
-
state.currentBatch = batch.id;
|
|
54
|
-
batch.status = 'running';
|
|
55
|
-
batch.startedAt = Date.now();
|
|
56
|
-
try {
|
|
57
|
-
const results = await Promise.all(batch.tasks.map((task) => activities.runAgentActivity({
|
|
58
|
-
runner: task.runner,
|
|
59
|
-
prompt: task.prompt,
|
|
60
|
-
agentName: task.agentName,
|
|
61
|
-
model: task.model,
|
|
62
|
-
path: task.path,
|
|
63
|
-
})));
|
|
64
|
-
batch.status = 'completed';
|
|
65
|
-
batch.completedAt = Date.now();
|
|
66
|
-
batch.results = results;
|
|
67
|
-
state.completedBatches++;
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
batch.status = 'failed';
|
|
71
|
-
batch.completedAt = Date.now();
|
|
72
|
-
batch.errors = [error instanceof Error ? error.message : String(error)];
|
|
73
|
-
state.failedBatches++;
|
|
74
|
-
state.errors.push(batch.errors[0]);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
state.currentBatch = undefined;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=workflows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const getAgentStatusSchema: z.ZodObject<{
|
|
3
|
-
agentName: z.ZodString;
|
|
4
|
-
runner: z.ZodOptional<z.ZodEnum<{
|
|
5
|
-
claude: "claude";
|
|
6
|
-
gemini: "gemini";
|
|
7
|
-
kilo: "kilo";
|
|
8
|
-
qwencli: "qwencli";
|
|
9
|
-
hermes: "hermes";
|
|
10
|
-
openclaw: "openclaw";
|
|
11
|
-
cline: "cline";
|
|
12
|
-
opencode: "opencode";
|
|
13
|
-
}>>;
|
|
14
|
-
config: z.ZodOptional<z.ZodString>;
|
|
15
|
-
}, z.core.$strip>;
|
|
16
|
-
export declare function getAgentStatusTool(args: z.infer<typeof getAgentStatusSchema>): Promise<{
|
|
17
|
-
content: {
|
|
18
|
-
type: "text";
|
|
19
|
-
text: string;
|
|
20
|
-
}[];
|
|
21
|
-
isError?: undefined;
|
|
22
|
-
} | {
|
|
23
|
-
content: {
|
|
24
|
-
type: "text";
|
|
25
|
-
text: string;
|
|
26
|
-
}[];
|
|
27
|
-
isError: boolean;
|
|
28
|
-
}>;
|
|
29
|
-
//# sourceMappingURL=get_agent_status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get_agent_status.d.ts","sourceRoot":"","sources":["../../src/tools/get_agent_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;iBAO/B,CAAC;AAEH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;;;;;;GAqClF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { getProcessStatus } from '../lib/processRegistry.js';
|
|
3
|
-
export const getAgentStatusSchema = z.object({
|
|
4
|
-
agentName: z.string().describe('Nom de l agent'),
|
|
5
|
-
runner: z
|
|
6
|
-
.enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
|
|
7
|
-
.optional()
|
|
8
|
-
.describe('Type de runner (optionnel, défaut: any)'),
|
|
9
|
-
config: z.string().optional().describe('Chemin du fichier de configuration'),
|
|
10
|
-
});
|
|
11
|
-
export async function getAgentStatusTool(args) {
|
|
12
|
-
const { agentName, runner, config: configPath } = args;
|
|
13
|
-
const entry = await getProcessStatus(agentName, runner, configPath);
|
|
14
|
-
if (!entry) {
|
|
15
|
-
return {
|
|
16
|
-
content: [
|
|
17
|
-
{
|
|
18
|
-
type: 'text',
|
|
19
|
-
text: `Agent "${agentName}" (runner: ${runner || 'any'}) n est pas trouvé dans le registre. Il n est pas en cours d exécution ou a été nettoyé.`,
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const lines = [
|
|
25
|
-
`**Agent:** ${entry.agentName}`,
|
|
26
|
-
`**Runner:** ${entry.runner || 'unknown'}`,
|
|
27
|
-
`**Status:** ${entry.status}`,
|
|
28
|
-
`**Started:** ${new Date(entry.ts).toISOString()}`,
|
|
29
|
-
entry.pid ? `**PID:** ${entry.pid}` : null,
|
|
30
|
-
entry.id ? `**Session ID:** ${entry.id}` : null,
|
|
31
|
-
entry.exitCode !== null && entry.exitCode !== undefined ? `**Exit Code:** ${entry.exitCode}` : null,
|
|
32
|
-
`**Last Output At:** ${entry.lastOutputAt ? new Date(entry.lastOutputAt).toISOString() : 'N/A'}`,
|
|
33
|
-
entry.outputBuffer ? `\n**Output Buffer (${entry.outputBuffer.length} chars):**\n\`\`\`\n${entry.outputBuffer.slice(-2000)}\n\`\`\`` : null,
|
|
34
|
-
].filter(Boolean);
|
|
35
|
-
return {
|
|
36
|
-
content: [
|
|
37
|
-
{
|
|
38
|
-
type: 'text',
|
|
39
|
-
text: lines.join('\n'),
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
isError: entry.status === 'failed' || entry.status === 'orphaned',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=get_agent_status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get_agent_status.js","sourceRoot":"","sources":["../../src/tools/get_agent_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAChD,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,yCAAyC,CAAC;IACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA0C;IACjF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEvD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,UAAU,SAAS,cAAc,MAAM,IAAI,KAAK,0FAA0F;iBACjJ;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,cAAc,KAAK,CAAC,SAAS,EAAE;QAC/B,eAAe,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE;QAC1C,eAAe,KAAK,CAAC,MAAM,EAAE;QAC7B,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;QAClD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;QAC1C,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;QAC/C,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QACnG,uBAAuB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE;QAChG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,YAAY,CAAC,MAAM,uBAAuB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;KAC5I,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB;SACF;QACD,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const killAgentSchema: z.ZodObject<{
|
|
3
|
-
agentName: z.ZodString;
|
|
4
|
-
runner: z.ZodOptional<z.ZodEnum<{
|
|
5
|
-
claude: "claude";
|
|
6
|
-
gemini: "gemini";
|
|
7
|
-
kilo: "kilo";
|
|
8
|
-
qwencli: "qwencli";
|
|
9
|
-
hermes: "hermes";
|
|
10
|
-
openclaw: "openclaw";
|
|
11
|
-
cline: "cline";
|
|
12
|
-
opencode: "opencode";
|
|
13
|
-
}>>;
|
|
14
|
-
config: z.ZodOptional<z.ZodString>;
|
|
15
|
-
}, z.core.$strip>;
|
|
16
|
-
export declare function killAgentTool(args: z.infer<typeof killAgentSchema>): Promise<{
|
|
17
|
-
content: {
|
|
18
|
-
type: "text";
|
|
19
|
-
text: string;
|
|
20
|
-
}[];
|
|
21
|
-
}>;
|
|
22
|
-
//# sourceMappingURL=kill_agent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kill_agent.d.ts","sourceRoot":"","sources":["../../src/tools/kill_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;GAwBxE"}
|
package/dist/tools/kill_agent.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { killAgent } from '../lib/processRegistry.js';
|
|
3
|
-
export const killAgentSchema = z.object({
|
|
4
|
-
agentName: z.string().describe('Nom de l agent à tuer'),
|
|
5
|
-
runner: z
|
|
6
|
-
.enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
|
|
7
|
-
.optional()
|
|
8
|
-
.describe('Type de runner (optionnel, défaut: any)'),
|
|
9
|
-
config: z.string().optional().describe('Chemin du fichier de configuration'),
|
|
10
|
-
});
|
|
11
|
-
export async function killAgentTool(args) {
|
|
12
|
-
const { agentName, runner, config: configPath } = args;
|
|
13
|
-
const result = await killAgent(agentName, runner, configPath);
|
|
14
|
-
if (!result.killed) {
|
|
15
|
-
return {
|
|
16
|
-
content: [
|
|
17
|
-
{
|
|
18
|
-
type: 'text',
|
|
19
|
-
text: `Agent "${agentName}" (runner: ${runner || 'any'}) n est pas en cours d exécution ou déjà terminé.`,
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: 'text',
|
|
28
|
-
text: `Agent "${agentName}" tué avec succès (PID: ${result.pid}).`,
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=kill_agent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kill_agent.js","sourceRoot":"","sources":["../../src/tools/kill_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACvD,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,yCAAyC,CAAC;IACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAqC;IACvE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,UAAU,SAAS,cAAc,MAAM,IAAI,KAAK,mDAAmD;iBAC1G;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,UAAU,SAAS,2BAA2B,MAAM,CAAC,GAAG,IAAI;aACnE;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const streamAgentOutputSchema: z.ZodObject<{
|
|
3
|
-
agentName: z.ZodString;
|
|
4
|
-
runner: z.ZodOptional<z.ZodEnum<{
|
|
5
|
-
claude: "claude";
|
|
6
|
-
gemini: "gemini";
|
|
7
|
-
kilo: "kilo";
|
|
8
|
-
qwencli: "qwencli";
|
|
9
|
-
hermes: "hermes";
|
|
10
|
-
openclaw: "openclaw";
|
|
11
|
-
cline: "cline";
|
|
12
|
-
opencode: "opencode";
|
|
13
|
-
}>>;
|
|
14
|
-
sinceTimestamp: z.ZodOptional<z.ZodNumber>;
|
|
15
|
-
config: z.ZodOptional<z.ZodString>;
|
|
16
|
-
}, z.core.$strip>;
|
|
17
|
-
export declare function streamAgentOutputTool(args: z.infer<typeof streamAgentOutputSchema>): Promise<{
|
|
18
|
-
content: {
|
|
19
|
-
type: "text";
|
|
20
|
-
text: string;
|
|
21
|
-
}[];
|
|
22
|
-
isError?: undefined;
|
|
23
|
-
} | {
|
|
24
|
-
content: {
|
|
25
|
-
type: "text";
|
|
26
|
-
text: string;
|
|
27
|
-
}[];
|
|
28
|
-
isError: boolean;
|
|
29
|
-
}>;
|
|
30
|
-
//# sourceMappingURL=stream_agent_output.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream_agent_output.d.ts","sourceRoot":"","sources":["../../src/tools/stream_agent_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAWlC,CAAC;AAEH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC;;;;;;;;;;;;GAiCxF"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { getProcessStatus } from '../lib/processRegistry.js';
|
|
3
|
-
export const streamAgentOutputSchema = z.object({
|
|
4
|
-
agentName: z.string().describe('Nom de l agent'),
|
|
5
|
-
runner: z
|
|
6
|
-
.enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
|
|
7
|
-
.optional()
|
|
8
|
-
.describe('Type de runner (optionnel, défaut: any)'),
|
|
9
|
-
sinceTimestamp: z
|
|
10
|
-
.number()
|
|
11
|
-
.optional()
|
|
12
|
-
.describe('Ne retourner que la sortie après ce timestamp (ms)'),
|
|
13
|
-
config: z.string().optional().describe('Chemin du fichier de configuration'),
|
|
14
|
-
});
|
|
15
|
-
export async function streamAgentOutputTool(args) {
|
|
16
|
-
const { agentName, runner, sinceTimestamp, config: configPath } = args;
|
|
17
|
-
const entry = await getProcessStatus(agentName, runner, configPath);
|
|
18
|
-
if (!entry) {
|
|
19
|
-
return {
|
|
20
|
-
content: [
|
|
21
|
-
{
|
|
22
|
-
type: 'text',
|
|
23
|
-
text: `Agent "${agentName}" non trouvé dans le registre.`,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const isComplete = entry.status === 'done' || entry.status === 'failed' || entry.status === 'orphaned';
|
|
29
|
-
const output = entry.outputBuffer || '';
|
|
30
|
-
if (sinceTimestamp && entry.lastOutputAt && entry.lastOutputAt > sinceTimestamp) {
|
|
31
|
-
// For now, return all output if there was output after the timestamp
|
|
32
|
-
// (per-chunk timestamps not yet implemented)
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
content: [
|
|
36
|
-
{
|
|
37
|
-
type: 'text',
|
|
38
|
-
text: output || '(no output yet)',
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
isError: isComplete && entry.status === 'failed',
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=stream_agent_output.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream_agent_output.js","sourceRoot":"","sources":["../../src/tools/stream_agent_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAChD,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,yCAAyC,CAAC;IACtD,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAA6C;IACvF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEvE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,UAAU,SAAS,gCAAgC;iBAC1D;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;IACvG,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;IAExC,IAAI,cAAc,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;QAChF,qEAAqE;QACrE,6CAA6C;IAC/C,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,MAAM,IAAI,iBAAiB;aAClC;SACF;QACD,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const waitAgentSchema: z.ZodObject<{
|
|
3
|
-
agentName: z.ZodString;
|
|
4
|
-
runner: z.ZodOptional<z.ZodEnum<{
|
|
5
|
-
claude: "claude";
|
|
6
|
-
gemini: "gemini";
|
|
7
|
-
kilo: "kilo";
|
|
8
|
-
qwencli: "qwencli";
|
|
9
|
-
hermes: "hermes";
|
|
10
|
-
openclaw: "openclaw";
|
|
11
|
-
cline: "cline";
|
|
12
|
-
opencode: "opencode";
|
|
13
|
-
}>>;
|
|
14
|
-
timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
15
|
-
config: z.ZodOptional<z.ZodString>;
|
|
16
|
-
}, z.core.$strip>;
|
|
17
|
-
export declare function waitAgentTool(args: z.infer<typeof waitAgentSchema>): Promise<{
|
|
18
|
-
content: {
|
|
19
|
-
type: "text";
|
|
20
|
-
text: string;
|
|
21
|
-
}[];
|
|
22
|
-
isError: boolean;
|
|
23
|
-
} | {
|
|
24
|
-
content: {
|
|
25
|
-
type: "text";
|
|
26
|
-
text: string;
|
|
27
|
-
}[];
|
|
28
|
-
isError?: undefined;
|
|
29
|
-
}>;
|
|
30
|
-
//# sourceMappingURL=wait_agent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wait_agent.d.ts","sourceRoot":"","sources":["../../src/tools/wait_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;iBAY1B,CAAC;AAEH,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;GA0DxE"}
|
package/dist/tools/wait_agent.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { getProcessStatus } from '../lib/processRegistry.js';
|
|
3
|
-
export const waitAgentSchema = z.object({
|
|
4
|
-
agentName: z.string().describe('Nom de l agent'),
|
|
5
|
-
runner: z
|
|
6
|
-
.enum(['claude', 'gemini', 'kilo', 'qwencli', 'openclaw', 'cline', 'opencode', 'hermes'])
|
|
7
|
-
.optional()
|
|
8
|
-
.describe('Type de runner (optionnel, défaut: any)'),
|
|
9
|
-
timeoutMs: z
|
|
10
|
-
.number()
|
|
11
|
-
.optional()
|
|
12
|
-
.default(900000)
|
|
13
|
-
.describe('Timeout en ms (défaut: 900000 = 15 min)'),
|
|
14
|
-
config: z.string().optional().describe('Chemin du fichier de configuration'),
|
|
15
|
-
});
|
|
16
|
-
export async function waitAgentTool(args) {
|
|
17
|
-
const { agentName, runner, timeoutMs, config: configPath } = args;
|
|
18
|
-
const start = Date.now();
|
|
19
|
-
const pollInterval = 1000; // 1 second
|
|
20
|
-
while (Date.now() - start < timeoutMs) {
|
|
21
|
-
const entry = await getProcessStatus(agentName, runner, configPath);
|
|
22
|
-
if (!entry) {
|
|
23
|
-
return {
|
|
24
|
-
content: [
|
|
25
|
-
{
|
|
26
|
-
type: 'text',
|
|
27
|
-
text: `Agent "${agentName}" n existe plus dans le registre.`,
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
isError: true,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
if (entry.status === 'done') {
|
|
34
|
-
return {
|
|
35
|
-
content: [
|
|
36
|
-
{
|
|
37
|
-
type: 'text',
|
|
38
|
-
text: entry.outputBuffer || 'Agent terminé avec succès.',
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (entry.status === 'failed' || entry.status === 'orphaned') {
|
|
44
|
-
return {
|
|
45
|
-
content: [
|
|
46
|
-
{
|
|
47
|
-
type: 'text',
|
|
48
|
-
text: `Agent terminé avec erreur: ${entry.status}\n\nSortie:\n${entry.outputBuffer || 'N/A'}`,
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
isError: true,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
// Still running — wait before next poll
|
|
55
|
-
await new Promise((r) => setTimeout(r, pollInterval));
|
|
56
|
-
}
|
|
57
|
-
// Timeout reached
|
|
58
|
-
return {
|
|
59
|
-
content: [
|
|
60
|
-
{
|
|
61
|
-
type: 'text',
|
|
62
|
-
text: `Timeout de ${timeoutMs}ms atteint. L'agent est toujours en cours d exécution.`,
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
isError: true,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=wait_agent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wait_agent.js","sourceRoot":"","sources":["../../src/tools/wait_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAChD,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,yCAAyC,CAAC;IACtD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,yCAAyC,CAAC;IACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAqC;IACvE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAElE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,WAAW;IAEtC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,UAAU,SAAS,mCAAmC;qBAC7D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,KAAK,CAAC,YAAY,IAAI,4BAA4B;qBACzD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8BAA8B,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC,YAAY,IAAI,KAAK,EAAE;qBAC9F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,kBAAkB;IAClB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,cAAc,SAAS,wDAAwD;aACtF;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|