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.
Files changed (57) hide show
  1. package/dist/index.d.ts +0 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +0 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/orchestration/dispatcher.d.ts +3 -3
  6. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
  7. package/dist/lib/orchestration/dispatcher.js +1 -56
  8. package/dist/lib/orchestration/dispatcher.js.map +1 -1
  9. package/dist/lib/telemetry.d.ts +17 -5
  10. package/dist/lib/telemetry.d.ts.map +1 -1
  11. package/dist/lib/telemetry.js +20 -65
  12. package/dist/lib/telemetry.js.map +1 -1
  13. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  14. package/dist/services/ClaudeRunner.js.map +1 -1
  15. package/dist/services/GeminiRunner.d.ts.map +1 -1
  16. package/dist/services/GeminiRunner.js.map +1 -1
  17. package/dist/services/KiloRunner.d.ts.map +1 -1
  18. package/dist/services/KiloRunner.js.map +1 -1
  19. package/dist/tools/run_agents_parallel.d.ts +3 -3
  20. package/package.json +1 -12
  21. package/scripts/auto-install.mjs +0 -5
  22. package/scripts/uninstall.mjs +2 -15
  23. package/dist/bin/rabbitmq-worker.d.ts +0 -2
  24. package/dist/bin/rabbitmq-worker.d.ts.map +0 -1
  25. package/dist/bin/rabbitmq-worker.js +0 -63
  26. package/dist/bin/rabbitmq-worker.js.map +0 -1
  27. package/dist/bin/temporal-worker.d.ts +0 -2
  28. package/dist/bin/temporal-worker.d.ts.map +0 -1
  29. package/dist/bin/temporal-worker.js +0 -24
  30. package/dist/bin/temporal-worker.js.map +0 -1
  31. package/dist/lib/broker/rabbitmq.d.ts +0 -28
  32. package/dist/lib/broker/rabbitmq.d.ts.map +0 -1
  33. package/dist/lib/broker/rabbitmq.js +0 -67
  34. package/dist/lib/broker/rabbitmq.js.map +0 -1
  35. package/dist/lib/broker/rabbitmqDispatch.d.ts +0 -23
  36. package/dist/lib/broker/rabbitmqDispatch.d.ts.map +0 -1
  37. package/dist/lib/broker/rabbitmqDispatch.js +0 -77
  38. package/dist/lib/broker/rabbitmqDispatch.js.map +0 -1
  39. package/dist/lib/workflow/temporal/activities.d.ts +0 -15
  40. package/dist/lib/workflow/temporal/activities.d.ts.map +0 -1
  41. package/dist/lib/workflow/temporal/activities.js +0 -18
  42. package/dist/lib/workflow/temporal/activities.js.map +0 -1
  43. package/dist/lib/workflow/temporal/client.d.ts +0 -8
  44. package/dist/lib/workflow/temporal/client.d.ts.map +0 -1
  45. package/dist/lib/workflow/temporal/client.js +0 -48
  46. package/dist/lib/workflow/temporal/client.js.map +0 -1
  47. package/dist/lib/workflow/temporal/dispatch.d.ts +0 -13
  48. package/dist/lib/workflow/temporal/dispatch.d.ts.map +0 -1
  49. package/dist/lib/workflow/temporal/dispatch.js +0 -19
  50. package/dist/lib/workflow/temporal/dispatch.js.map +0 -1
  51. package/dist/lib/workflow/temporal/workflows.d.ts +0 -31
  52. package/dist/lib/workflow/temporal/workflows.d.ts.map +0 -1
  53. package/dist/lib/workflow/temporal/workflows.js +0 -79
  54. package/dist/lib/workflow/temporal/workflows.js.map +0 -1
  55. package/docs/ASYNC_AGENT_INTEGRATION.md +0 -311
  56. package/docs/INDEX.md +0 -149
  57. 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.1",
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",
@@ -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;
@@ -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', // Volume créé par OverMind 2.2.0+
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', 'rabbitmq:3.13-management', 'temporalio/auto-setup:1.24.0', 'temporalio/web:1.24.0'];
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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=rabbitmq-worker.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=temporal-worker.d.ts.map
@@ -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"}