overmind-mcp 2.3.1 → 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/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/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.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/tools/run_agents_parallel.d.ts +3 -3
- 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/docs/ASYNC_AGENT_INTEGRATION.md +0 -311
- package/docs/INDEX.md +0 -149
- package/docs/tools.md +0 -819
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overmind-mcp",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"preferGlobal": true,
|
|
5
5
|
"description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dépendances Docker (PostgreSQL, pgvector) inclus.",
|
|
6
6
|
"type": "module",
|
|
@@ -83,7 +83,6 @@
|
|
|
83
83
|
"devDependencies": {
|
|
84
84
|
"@changesets/cli": "^2.31.0",
|
|
85
85
|
"@eslint/js": "^9.39.4",
|
|
86
|
-
"@types/amqplib": "^0.10.8",
|
|
87
86
|
"@types/node": "^22.19.17",
|
|
88
87
|
"@types/pg": "^8.20.0",
|
|
89
88
|
"@types/pino": "^7.0.5",
|
|
@@ -97,16 +96,6 @@
|
|
|
97
96
|
"vitest": "^4.1.4"
|
|
98
97
|
},
|
|
99
98
|
"dependencies": {
|
|
100
|
-
"@opentelemetry/api": "^1.9.1",
|
|
101
|
-
"@opentelemetry/auto-instrumentations-node": "^0.75.0",
|
|
102
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.217.0",
|
|
103
|
-
"@opentelemetry/resources": "^2.7.1",
|
|
104
|
-
"@opentelemetry/sdk-node": "^0.217.0",
|
|
105
|
-
"@opentelemetry/semantic-conventions": "^1.40.0",
|
|
106
|
-
"@temporalio/activity": "^1.17.1",
|
|
107
|
-
"@temporalio/client": "^1.17.1",
|
|
108
|
-
"@temporalio/worker": "^1.17.1",
|
|
109
|
-
"@temporalio/workflow": "^1.17.1",
|
|
110
99
|
"async-mutex": "^0.5.0",
|
|
111
100
|
"dotenv": "^17.4.2",
|
|
112
101
|
"fastmcp": "^3.35.0",
|
package/scripts/auto-install.mjs
CHANGED
|
@@ -191,11 +191,6 @@ async function validateServices() {
|
|
|
191
191
|
|
|
192
192
|
const services = [
|
|
193
193
|
{ name: 'PostgreSQL', filter: 'overmind-postgres-pgvector', check: 'pg_isready' },
|
|
194
|
-
{ name: 'RabbitMQ', filter: 'overmind-rabbitmq', check: null },
|
|
195
|
-
{ name: 'Temporal', filter: 'overmind-temporal', check: null },
|
|
196
|
-
{ name: 'Prometheus', filter: 'overmind-prometheus', check: null },
|
|
197
|
-
{ name: 'Grafana', filter: 'overmind-grafana', check: null },
|
|
198
|
-
{ name: 'Jaeger', filter: 'overmind-jaeger', check: null },
|
|
199
194
|
];
|
|
200
195
|
|
|
201
196
|
let allRunning = true;
|
package/scripts/uninstall.mjs
CHANGED
|
@@ -73,14 +73,6 @@ function listContainers() {
|
|
|
73
73
|
// Les containers personnels comme "postgres-pgvector" ne doivent JAMAIS être supprimés
|
|
74
74
|
const overmindContainers = [
|
|
75
75
|
'overmind-postgres-pgvector', // Container créé par OverMind 2.2.0+
|
|
76
|
-
'overmind-rabbitmq', // Ancien container OverMind
|
|
77
|
-
'overmind-temporal', // Ancien container OverMind
|
|
78
|
-
'overmind-temporal-web', // Ancien container OverMind
|
|
79
|
-
'overmind-postgres', // Variant possible
|
|
80
|
-
'overmind-redis', // Variant possible
|
|
81
|
-
'overmind-prometheus', // Variant possible
|
|
82
|
-
'overmind-grafana', // Variant possible
|
|
83
|
-
'overmind-jaeger' // Variant possible
|
|
84
76
|
];
|
|
85
77
|
|
|
86
78
|
return overmindContainers.filter((containerName) => {
|
|
@@ -94,12 +86,7 @@ function listContainers() {
|
|
|
94
86
|
function listVolumes() {
|
|
95
87
|
// ⚠️ CORRECTION CRITIQUE: Ne cibler que les volumes OverMind, pas les volumes personnels
|
|
96
88
|
const overmindVolumes = [
|
|
97
|
-
'overmind_postgres_data',
|
|
98
|
-
'overmind-rabbitmq_data', // Ancien volume OverMind
|
|
99
|
-
'overmind-temporal_data', // Ancien volume OverMind
|
|
100
|
-
'overmind_prometheus_data', // Ancien volume OverMind
|
|
101
|
-
'overmind-grafana_data', // Ancien volume OverMind
|
|
102
|
-
'overmind-jaeger_data' // Ancien volume OverMind
|
|
89
|
+
'overmind_postgres_data',
|
|
103
90
|
];
|
|
104
91
|
|
|
105
92
|
return overmindVolumes.filter((volumeName) => {
|
|
@@ -111,7 +98,7 @@ function listVolumes() {
|
|
|
111
98
|
}
|
|
112
99
|
|
|
113
100
|
function listImages() {
|
|
114
|
-
const imgs = ['pgvector/pgvector:pg16'
|
|
101
|
+
const imgs = ['pgvector/pgvector:pg16'];
|
|
115
102
|
return imgs.filter((img) => {
|
|
116
103
|
try {
|
|
117
104
|
execSync(`docker image inspect ${img}`, { stdio: 'pipe' });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-worker.d.ts","sourceRoot":"","sources":["../../src/bin/rabbitmq-worker.ts"],"names":[],"mappings":""}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { getBroker } from '../lib/broker/rabbitmq.js';
|
|
2
|
-
import { runAgent } from '../tools/run_agent.js';
|
|
3
|
-
let shuttingDown = false;
|
|
4
|
-
async function main() {
|
|
5
|
-
const broker = getBroker();
|
|
6
|
-
if (!broker) {
|
|
7
|
-
console.error('RabbitMQ broker not available (set OVERMIND_BROKER=rabbitmq)');
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
await broker.connect();
|
|
11
|
-
console.log('[worker] Connected to RabbitMQ, consuming from overmind.tasks');
|
|
12
|
-
await broker.consumeTasks(async (taskMsg, ack, nack) => {
|
|
13
|
-
if (shuttingDown)
|
|
14
|
-
return nack();
|
|
15
|
-
console.log(`[worker] Received task ${taskMsg.taskId} (corr: ${taskMsg.correlationId})`);
|
|
16
|
-
try {
|
|
17
|
-
const result = await runAgent({
|
|
18
|
-
runner: taskMsg.runner,
|
|
19
|
-
prompt: taskMsg.prompt,
|
|
20
|
-
agentName: taskMsg.agentName,
|
|
21
|
-
model: taskMsg.model,
|
|
22
|
-
path: taskMsg.path,
|
|
23
|
-
autoResume: false,
|
|
24
|
-
silent: false,
|
|
25
|
-
});
|
|
26
|
-
const taskResult = {
|
|
27
|
-
taskId: taskMsg.taskId,
|
|
28
|
-
correlationId: taskMsg.correlationId,
|
|
29
|
-
success: !result.isError,
|
|
30
|
-
result: result.content,
|
|
31
|
-
error: result.isError ? String(result.content) : undefined,
|
|
32
|
-
};
|
|
33
|
-
await broker.publishResult(taskResult);
|
|
34
|
-
console.log(`[worker] Published result for ${taskMsg.taskId}`);
|
|
35
|
-
ack();
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
const taskResult = {
|
|
39
|
-
taskId: taskMsg.taskId,
|
|
40
|
-
correlationId: taskMsg.correlationId,
|
|
41
|
-
success: false,
|
|
42
|
-
error: err instanceof Error ? err.message : String(err),
|
|
43
|
-
};
|
|
44
|
-
await broker.publishResult(taskResult);
|
|
45
|
-
nack();
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
const shutdown = async (signal) => {
|
|
49
|
-
console.log(`\n[worker] Received ${signal}, shutting down gracefully...`);
|
|
50
|
-
shuttingDown = true;
|
|
51
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
52
|
-
await broker.close();
|
|
53
|
-
console.log('[worker] Connection closed, exiting');
|
|
54
|
-
process.exit(0);
|
|
55
|
-
};
|
|
56
|
-
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
57
|
-
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
58
|
-
}
|
|
59
|
-
main().catch((err) => {
|
|
60
|
-
console.error('[worker] Fatal error:', err);
|
|
61
|
-
process.exit(1);
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=rabbitmq-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-worker.js","sourceRoot":"","sources":["../../src/bin/rabbitmq-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-worker.d.ts","sourceRoot":"","sources":["../../src/bin/temporal-worker.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Worker } from '@temporalio/worker';
|
|
2
|
-
import * as activities from '../lib/workflow/temporal/activities.js';
|
|
3
|
-
async function run() {
|
|
4
|
-
const worker = await Worker.create({
|
|
5
|
-
workflowsPath: require.resolve('../lib/workflow/temporal/workflows.js'),
|
|
6
|
-
activities,
|
|
7
|
-
taskQueue: 'overmind-agents',
|
|
8
|
-
});
|
|
9
|
-
console.log('Temporal worker started on taskQueue: overmind-agents');
|
|
10
|
-
await worker.run();
|
|
11
|
-
}
|
|
12
|
-
run().catch((err) => {
|
|
13
|
-
console.error('Temporal worker failed:', err);
|
|
14
|
-
process.exit(1);
|
|
15
|
-
});
|
|
16
|
-
process.on('SIGINT', () => {
|
|
17
|
-
console.log('Shutting down Temporal worker...');
|
|
18
|
-
process.exit(0);
|
|
19
|
-
});
|
|
20
|
-
process.on('SIGTERM', () => {
|
|
21
|
-
console.log('Shutting down Temporal worker...');
|
|
22
|
-
process.exit(0);
|
|
23
|
-
});
|
|
24
|
-
//# sourceMappingURL=temporal-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-worker.js","sourceRoot":"","sources":["../../src/bin/temporal-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,wCAAwC,CAAC;AAErE,KAAK,UAAU,GAAG;IAChB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACjC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,uCAAuC,CAAC;QACvE,UAAU;QACV,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface TaskMessage {
|
|
2
|
-
taskId: string;
|
|
3
|
-
runner: string;
|
|
4
|
-
prompt: string;
|
|
5
|
-
agentName?: string;
|
|
6
|
-
model?: string;
|
|
7
|
-
path?: string;
|
|
8
|
-
correlationId: string;
|
|
9
|
-
}
|
|
10
|
-
export interface TaskResult {
|
|
11
|
-
taskId: string;
|
|
12
|
-
correlationId: string;
|
|
13
|
-
success: boolean;
|
|
14
|
-
result?: unknown;
|
|
15
|
-
error?: string;
|
|
16
|
-
}
|
|
17
|
-
export declare class RabbitMQBroker {
|
|
18
|
-
private connection;
|
|
19
|
-
private channel;
|
|
20
|
-
connect(): Promise<void>;
|
|
21
|
-
publishTask(msg: TaskMessage): Promise<void>;
|
|
22
|
-
consumeResults(handler: (r: TaskResult) => void): Promise<void>;
|
|
23
|
-
consumeTasks(handler: (msg: TaskMessage, ack: () => void, nack: () => void) => Promise<void>): Promise<void>;
|
|
24
|
-
publishResult(result: TaskResult): Promise<void>;
|
|
25
|
-
close(): Promise<void>;
|
|
26
|
-
}
|
|
27
|
-
export declare function getBroker(): RabbitMQBroker | null;
|
|
28
|
-
//# sourceMappingURL=rabbitmq.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../../src/lib/broker/rabbitmq.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,OAAO,CAAwB;IAEjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,YAAY,CAChB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC;IAiBV,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAID,wBAAgB,SAAS,IAAI,cAAc,GAAG,IAAI,CAQjD"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import amqp from 'amqplib';
|
|
2
|
-
const TASKS_QUEUE = 'overmind.tasks';
|
|
3
|
-
const RESULTS_QUEUE = 'overmind.results';
|
|
4
|
-
export class RabbitMQBroker {
|
|
5
|
-
connection = null;
|
|
6
|
-
channel = null;
|
|
7
|
-
async connect() {
|
|
8
|
-
const url = process.env.RABBITMQ_URL || 'amqp://localhost';
|
|
9
|
-
this.connection = await amqp.connect(url);
|
|
10
|
-
this.channel = await this.connection.createChannel();
|
|
11
|
-
await this.channel.assertQueue(TASKS_QUEUE, { durable: true });
|
|
12
|
-
await this.channel.assertQueue(RESULTS_QUEUE, { durable: true });
|
|
13
|
-
}
|
|
14
|
-
async publishTask(msg) {
|
|
15
|
-
if (!this.channel)
|
|
16
|
-
throw new Error('Not connected');
|
|
17
|
-
this.channel.sendToQueue(TASKS_QUEUE, Buffer.from(JSON.stringify(msg)), {
|
|
18
|
-
persistent: true,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
async consumeResults(handler) {
|
|
22
|
-
if (!this.channel)
|
|
23
|
-
throw new Error('Not connected');
|
|
24
|
-
const ch = this.channel;
|
|
25
|
-
await ch.consume(RESULTS_QUEUE, (msg) => {
|
|
26
|
-
if (msg) {
|
|
27
|
-
const result = JSON.parse(msg.content.toString());
|
|
28
|
-
handler(result);
|
|
29
|
-
ch.ack(msg);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async consumeTasks(handler) {
|
|
34
|
-
if (!this.channel)
|
|
35
|
-
throw new Error('Not connected');
|
|
36
|
-
await this.channel.consume(TASKS_QUEUE, async (msg) => {
|
|
37
|
-
if (!msg)
|
|
38
|
-
return;
|
|
39
|
-
const taskMsg = JSON.parse(msg.content.toString());
|
|
40
|
-
await handler(taskMsg, () => this.channel.ack(msg), () => this.channel.nack(msg));
|
|
41
|
-
}, { noAck: false });
|
|
42
|
-
}
|
|
43
|
-
async publishResult(result) {
|
|
44
|
-
if (!this.channel)
|
|
45
|
-
throw new Error('Not connected');
|
|
46
|
-
this.channel.sendToQueue(RESULTS_QUEUE, Buffer.from(JSON.stringify(result)), {
|
|
47
|
-
persistent: true,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
async close() {
|
|
51
|
-
await this.channel?.close();
|
|
52
|
-
await this.connection?.close();
|
|
53
|
-
this.channel = null;
|
|
54
|
-
this.connection = null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
let brokerInstance = null;
|
|
58
|
-
export function getBroker() {
|
|
59
|
-
if (process.env.OVERMIND_BROKER === 'rabbitmq') {
|
|
60
|
-
if (!brokerInstance) {
|
|
61
|
-
brokerInstance = new RabbitMQBroker();
|
|
62
|
-
}
|
|
63
|
-
return brokerInstance;
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=rabbitmq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../../src/lib/broker/rabbitmq.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface DispatchOptions {
|
|
2
|
-
waitAll?: boolean;
|
|
3
|
-
timeoutMs?: number;
|
|
4
|
-
}
|
|
5
|
-
interface AgentTask {
|
|
6
|
-
runner: string;
|
|
7
|
-
prompt: string;
|
|
8
|
-
agentName?: string;
|
|
9
|
-
model?: string;
|
|
10
|
-
path?: string;
|
|
11
|
-
taskId?: string;
|
|
12
|
-
[key: string]: unknown;
|
|
13
|
-
}
|
|
14
|
-
export interface TaskDispatchResult {
|
|
15
|
-
taskId: string;
|
|
16
|
-
success: boolean;
|
|
17
|
-
result?: unknown;
|
|
18
|
-
error?: string;
|
|
19
|
-
durationMs: number;
|
|
20
|
-
}
|
|
21
|
-
export declare function dispatchViaRabbitMQ(agents: AgentTask[], opts?: DispatchOptions): Promise<TaskDispatchResult[]>;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=rabbitmqDispatch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmqDispatch.d.ts","sourceRoot":"","sources":["../../../src/lib/broker/rabbitmqDispatch.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EAAE,EACnB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0F/B"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'crypto';
|
|
2
|
-
import { getBroker } from './rabbitmq.js';
|
|
3
|
-
export async function dispatchViaRabbitMQ(agents, opts = {}) {
|
|
4
|
-
const { waitAll = true, timeoutMs = 15 * 60 * 1000 } = opts;
|
|
5
|
-
const broker = getBroker();
|
|
6
|
-
if (!broker) {
|
|
7
|
-
throw new Error('RabbitMQ broker not available (set OVERMIND_BROKER=rabbitmq)');
|
|
8
|
-
}
|
|
9
|
-
await broker.connect();
|
|
10
|
-
const tasks = agents.map((agent) => ({
|
|
11
|
-
correlationId: randomUUID(),
|
|
12
|
-
agent,
|
|
13
|
-
label: agent.taskId || agent.agentName || agent.runner,
|
|
14
|
-
startTime: Date.now(),
|
|
15
|
-
}));
|
|
16
|
-
// Publish all task messages
|
|
17
|
-
await Promise.all(tasks.map((t) => broker.publishTask({
|
|
18
|
-
taskId: t.label,
|
|
19
|
-
runner: t.agent.runner,
|
|
20
|
-
prompt: t.agent.prompt,
|
|
21
|
-
agentName: t.agent.agentName,
|
|
22
|
-
model: t.agent.model,
|
|
23
|
-
path: t.agent.path,
|
|
24
|
-
correlationId: t.correlationId,
|
|
25
|
-
})));
|
|
26
|
-
const results = new Map();
|
|
27
|
-
let consumeDone = false;
|
|
28
|
-
const consumePromise = new Promise((resolve) => {
|
|
29
|
-
broker.consumeResults((result) => {
|
|
30
|
-
const entry = tasks.find((t) => t.correlationId === result.correlationId);
|
|
31
|
-
if (!entry)
|
|
32
|
-
return;
|
|
33
|
-
const durationMs = Date.now() - entry.startTime;
|
|
34
|
-
results.set(result.correlationId, {
|
|
35
|
-
taskId: result.taskId,
|
|
36
|
-
success: result.success,
|
|
37
|
-
result: result.result,
|
|
38
|
-
error: result.error,
|
|
39
|
-
durationMs,
|
|
40
|
-
});
|
|
41
|
-
if (!waitAll && results.size === 1) {
|
|
42
|
-
consumeDone = true;
|
|
43
|
-
resolve();
|
|
44
|
-
}
|
|
45
|
-
else if (results.size === tasks.length) {
|
|
46
|
-
resolve();
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
if (!consumeDone) {
|
|
53
|
-
reject(new Error(`RabbitMQ dispatch timed out after ${timeoutMs}ms`));
|
|
54
|
-
}
|
|
55
|
-
}, timeoutMs);
|
|
56
|
-
});
|
|
57
|
-
try {
|
|
58
|
-
await Promise.race([consumePromise, timeoutPromise]);
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
await broker.close();
|
|
62
|
-
}
|
|
63
|
-
// Return in original order
|
|
64
|
-
return tasks.map((t) => {
|
|
65
|
-
const r = results.get(t.correlationId);
|
|
66
|
-
if (!r) {
|
|
67
|
-
return {
|
|
68
|
-
taskId: t.label,
|
|
69
|
-
success: false,
|
|
70
|
-
error: 'No result received',
|
|
71
|
-
durationMs: Date.now() - t.startTime,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
return r;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=rabbitmqDispatch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmqDispatch.js","sourceRoot":"","sources":["../../../src/lib/broker/rabbitmqDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Context } from '@temporalio/activity';
|
|
2
|
-
export interface RunAgentActivityInput {
|
|
3
|
-
runner: string;
|
|
4
|
-
prompt: string;
|
|
5
|
-
agentName?: string;
|
|
6
|
-
model?: string;
|
|
7
|
-
path?: string;
|
|
8
|
-
}
|
|
9
|
-
export interface RunAgentActivityOutput {
|
|
10
|
-
success: boolean;
|
|
11
|
-
result?: string;
|
|
12
|
-
error?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function runAgentActivity(input: RunAgentActivityInput, _context: Context): Promise<RunAgentActivityOutput>;
|
|
15
|
-
//# sourceMappingURL=activities.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activities.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/activities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAgBjC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export async function runAgentActivity(input, _context) {
|
|
2
|
-
const { runAgent } = await import('../../../tools/run_agent.js');
|
|
3
|
-
const res = await runAgent({
|
|
4
|
-
runner: input.runner,
|
|
5
|
-
prompt: input.prompt,
|
|
6
|
-
agentName: input.agentName,
|
|
7
|
-
model: input.model,
|
|
8
|
-
path: input.path,
|
|
9
|
-
autoResume: false,
|
|
10
|
-
silent: false,
|
|
11
|
-
});
|
|
12
|
-
return {
|
|
13
|
-
success: !res.isError,
|
|
14
|
-
result: res.content?.[0]?.text,
|
|
15
|
-
error: res.isError ? res.content?.[0]?.text : undefined,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=activities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/activities.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA4B,EAC5B,QAAiB;IAEjB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC;QACzB,MAAM,EAAE,KAAK,CAAC,MAAkD;QAChE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO;QACrB,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;QAC9B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Client, WorkflowHandle } from '@temporalio/client';
|
|
2
|
-
import { orchestrateAgentsWorkflow, longRunningWorkflow } from './workflows.js';
|
|
3
|
-
import type { AgentConfig, LongRunningWorkflowInput } from './workflows.js';
|
|
4
|
-
export declare function getTemporalClient(): Client | null;
|
|
5
|
-
export declare function startAgentsWorkflow(agents: AgentConfig[]): Promise<WorkflowHandle<typeof orchestrateAgentsWorkflow>>;
|
|
6
|
-
export declare function startLongRunningWorkflow(input: LongRunningWorkflowInput): Promise<WorkflowHandle<typeof longRunningWorkflow>>;
|
|
7
|
-
export declare function getLongRunningWorkflowHandle(workflowId: string): Promise<WorkflowHandle<typeof longRunningWorkflow>>;
|
|
8
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAI5E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAajD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,cAAc,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAY3D;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAcrD;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAOrD"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Client, Connection } from '@temporalio/client';
|
|
2
|
-
import { orchestrateAgentsWorkflow, longRunningWorkflow } from './workflows.js';
|
|
3
|
-
let _client = null;
|
|
4
|
-
export function getTemporalClient() {
|
|
5
|
-
if (process.env.OVERMIND_WORKFLOW !== 'temporal') {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
if (_client) {
|
|
9
|
-
return _client;
|
|
10
|
-
}
|
|
11
|
-
const address = process.env.TEMPORAL_ADDRESS ?? 'localhost:7233';
|
|
12
|
-
const connection = Connection.lazy({ address });
|
|
13
|
-
_client = new Client({ connection });
|
|
14
|
-
return _client;
|
|
15
|
-
}
|
|
16
|
-
export async function startAgentsWorkflow(agents) {
|
|
17
|
-
const client = getTemporalClient();
|
|
18
|
-
if (!client) {
|
|
19
|
-
throw new Error('Temporal client not initialized. Set OVERMIND_WORKFLOW=temporal');
|
|
20
|
-
}
|
|
21
|
-
return client.workflow.start(orchestrateAgentsWorkflow, {
|
|
22
|
-
args: [agents],
|
|
23
|
-
taskQueue: 'overmind-agents',
|
|
24
|
-
workflowId: `agents-${Date.now()}`,
|
|
25
|
-
workflowRunTimeout: '30 minutes',
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
export async function startLongRunningWorkflow(input) {
|
|
29
|
-
const client = getTemporalClient();
|
|
30
|
-
if (!client) {
|
|
31
|
-
throw new Error('Temporal client not initialized. Set OVERMIND_WORKFLOW=temporal');
|
|
32
|
-
}
|
|
33
|
-
const workflowId = `long-running-${Date.now()}`;
|
|
34
|
-
return client.workflow.start(longRunningWorkflow, {
|
|
35
|
-
args: [input],
|
|
36
|
-
taskQueue: 'overmind-agents',
|
|
37
|
-
workflowId,
|
|
38
|
-
workflowRunTimeout: '7 days', // Workflows pouvant durer jusqu'à 7 jours
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
export async function getLongRunningWorkflowHandle(workflowId) {
|
|
42
|
-
const client = getTemporalClient();
|
|
43
|
-
if (!client) {
|
|
44
|
-
throw new Error('Temporal client not initialized. Set OVERMIND_WORKFLOW=temporal');
|
|
45
|
-
}
|
|
46
|
-
return client.workflow.getHandle(workflowId);
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGhF,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACjE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,OAAO,GAAG,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB;IAErB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,EAAE;QACtD,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,iBAAiB;QAC5B,UAAU,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE;QAClC,kBAAkB,EAAE,YAAY;KACjC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAA+B;IAE/B,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAEhD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE;QAChD,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,SAAS,EAAE,iBAAiB;QAC5B,UAAU;QACV,kBAAkB,EAAE,QAAQ,EAAE,0CAA0C;KACzE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAkB;IAElB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from './workflows.js';
|
|
2
|
-
export interface DispatchResult {
|
|
3
|
-
taskId: string;
|
|
4
|
-
success: boolean;
|
|
5
|
-
result?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
durationMs?: number;
|
|
8
|
-
}
|
|
9
|
-
export interface DispatchOptions {
|
|
10
|
-
timeout?: number;
|
|
11
|
-
}
|
|
12
|
-
export declare function dispatchViaTemporal(agents: AgentConfig[], _opts?: DispatchOptions): Promise<DispatchResult[]>;
|
|
13
|
-
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,cAAc,EAAE,CAAC,CAsB3B"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getTemporalClient, startAgentsWorkflow } from './client.js';
|
|
2
|
-
export async function dispatchViaTemporal(agents, _opts) {
|
|
3
|
-
const client = getTemporalClient();
|
|
4
|
-
if (!client) {
|
|
5
|
-
throw new Error('Temporal client not initialized. Set OVERMIND_WORKFLOW=temporal');
|
|
6
|
-
}
|
|
7
|
-
const startTime = Date.now();
|
|
8
|
-
const handle = await startAgentsWorkflow(agents);
|
|
9
|
-
const results = (await handle.result());
|
|
10
|
-
const durationMs = Date.now() - startTime;
|
|
11
|
-
return results.map((res, i) => ({
|
|
12
|
-
taskId: `agent-${i}`,
|
|
13
|
-
success: res.success,
|
|
14
|
-
result: res.result,
|
|
15
|
-
error: res.error,
|
|
16
|
-
durationMs,
|
|
17
|
-
}));
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=dispatch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAerE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,KAAuB;IAEvB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAInC,CAAC;IACJ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,SAAS,CAAC,EAAE;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU;KACX,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export interface AgentConfig {
|
|
2
|
-
runner: string;
|
|
3
|
-
prompt: string;
|
|
4
|
-
agentName?: string;
|
|
5
|
-
model?: string;
|
|
6
|
-
path?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function orchestrateAgentsWorkflow(agents: AgentConfig[]): Promise<unknown[]>;
|
|
9
|
-
export interface TaskBatch {
|
|
10
|
-
id: string;
|
|
11
|
-
tasks: AgentConfig[];
|
|
12
|
-
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
13
|
-
startedAt?: number;
|
|
14
|
-
completedAt?: number;
|
|
15
|
-
results?: unknown[];
|
|
16
|
-
errors?: string[];
|
|
17
|
-
}
|
|
18
|
-
export interface LongRunningWorkflowInput {
|
|
19
|
-
batches: TaskBatch[];
|
|
20
|
-
maxParallelBatches?: number;
|
|
21
|
-
batchTimeout?: string;
|
|
22
|
-
}
|
|
23
|
-
export interface LongRunningWorkflowState {
|
|
24
|
-
totalBatches: number;
|
|
25
|
-
completedBatches: number;
|
|
26
|
-
failedBatches: number;
|
|
27
|
-
currentBatch?: string;
|
|
28
|
-
errors: string[];
|
|
29
|
-
}
|
|
30
|
-
export declare function longRunningWorkflow(input: LongRunningWorkflowInput): Promise<void>;
|
|
31
|
-
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/workflows.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAYzF;AAID,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAUD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqExF"}
|