overmind-mcp 1.13.15 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,4 +5,7 @@ export { PromptManager } from './services/PromptManager.js';
5
5
  export { ClaudeRunner } from './services/ClaudeRunner.js';
6
6
  export { getMemoryProvider } from './memory/MemoryFactory.js';
7
7
  export { updateConfig } from './lib/config.js';
8
+ export { createSwarmOrchestrator, type SwarmOrchestrator, type SwarmConfig, type SwarmTask, type SwarmResult, type AgentCapability, } from './lib/orchestration/swarm.js';
9
+ export { orchestrateAgentsWorkflow, longRunningWorkflow, type AgentConfig, type LongRunningWorkflowInput, type LongRunningWorkflowState, } from './lib/workflow/temporal/workflows.js';
10
+ export { getTemporalClient, startAgentsWorkflow, startLongRunningWorkflow, getLongRunningWorkflowHandle, } from './lib/workflow/temporal/client.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -5,4 +5,9 @@ export { PromptManager } from './services/PromptManager.js';
5
5
  export { ClaudeRunner } from './services/ClaudeRunner.js';
6
6
  export { getMemoryProvider } from './memory/MemoryFactory.js';
7
7
  export { updateConfig } from './lib/config.js';
8
+ // Swarm Orchestration
9
+ export { createSwarmOrchestrator, } from './lib/orchestration/swarm.js';
10
+ // Temporal Workflows
11
+ export { orchestrateAgentsWorkflow, longRunningWorkflow, } from './lib/workflow/temporal/workflows.js';
12
+ export { getTemporalClient, startAgentsWorkflow, startLongRunningWorkflow, getLongRunningWorkflowHandle, } from './lib/workflow/temporal/client.js';
8
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,sBAAsB;AACtB,OAAO,EACL,uBAAuB,GAMxB,MAAM,8BAA8B,CAAC;AAEtC,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAIpB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,75 @@
1
+ export interface AgentCapability {
2
+ agentName: string;
3
+ runner: string;
4
+ capabilities: string[];
5
+ maxConcurrentTasks: number;
6
+ currentLoad: number;
7
+ estimatedCompletionTime?: number;
8
+ }
9
+ export interface SwarmTask {
10
+ id: string;
11
+ type: string;
12
+ prompt: string;
13
+ priority: number;
14
+ estimatedDuration?: number;
15
+ requiresCapabilities: string[];
16
+ agentName?: string;
17
+ model?: string;
18
+ path?: string;
19
+ }
20
+ export interface SwarmConfig {
21
+ agents: AgentCapability[];
22
+ tasks: SwarmTask[];
23
+ maxParallelTasks: number;
24
+ enableLoadBalancing: boolean;
25
+ enableTaskPriority: boolean;
26
+ }
27
+ export interface SwarmAllocation {
28
+ taskId: string;
29
+ agentName: string;
30
+ runner: string;
31
+ estimatedStart: number;
32
+ estimatedCompletion: number;
33
+ }
34
+ export interface SwarmResult {
35
+ taskId: string;
36
+ status: 'pending' | 'assigned' | 'running' | 'completed' | 'failed';
37
+ agentName?: string;
38
+ result?: unknown;
39
+ error?: string;
40
+ startedAt?: number;
41
+ completedAt?: number;
42
+ }
43
+ export declare class SwarmOrchestrator {
44
+ private agents;
45
+ private taskQueue;
46
+ private allocations;
47
+ private results;
48
+ private maxParallelTasks;
49
+ private enableLoadBalancing;
50
+ private enableTaskPriority;
51
+ constructor(config: SwarmConfig);
52
+ private findBestAgent;
53
+ private canAgentHandleTask;
54
+ private selectByLoadBalancing;
55
+ private selectByRoundRobin;
56
+ private calculateAgentScore;
57
+ allocateTasks(): Promise<SwarmAllocation[]>;
58
+ executeTask(task: SwarmTask, allocation: SwarmAllocation): Promise<SwarmResult>;
59
+ getTaskStatus(taskId: string): SwarmResult | undefined;
60
+ getAllResults(): SwarmResult[];
61
+ getPendingTasks(): SwarmTask[];
62
+ getAgentStatus(agentName: string): AgentCapability | undefined;
63
+ getAllAgents(): AgentCapability[];
64
+ getStatistics(): {
65
+ totalTasks: number;
66
+ completed: number;
67
+ failed: number;
68
+ running: number;
69
+ pending: number;
70
+ totalAgents: number;
71
+ averageLoad: number;
72
+ };
73
+ }
74
+ export declare function createSwarmOrchestrator(config: SwarmConfig): SwarmOrchestrator;
75
+ //# sourceMappingURL=swarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/lib/orchestration/swarm.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;gBAExB,MAAM,EAAE,WAAW;IAuB/B,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,mBAAmB;IAWrB,aAAa,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAiE3C,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAsFrF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAItD,aAAa,IAAI,WAAW,EAAE;IAI9B,eAAe,IAAI,SAAS,EAAE;IAI9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9D,YAAY,IAAI,eAAe,EAAE;IAIjC,aAAa,IAAI;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB;CAoBF;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAE9E"}
@@ -0,0 +1,238 @@
1
+ import pino from 'pino';
2
+ const logger = pino({ name: 'SwarmOrchestrator' });
3
+ // ─── Swarm Orchestrator ────────────────────────────────────────────────────────
4
+ export class SwarmOrchestrator {
5
+ agents;
6
+ taskQueue = [];
7
+ allocations = new Map();
8
+ results = new Map();
9
+ maxParallelTasks;
10
+ enableLoadBalancing;
11
+ enableTaskPriority;
12
+ constructor(config) {
13
+ this.agents = new Map();
14
+ config.agents.forEach((agent) => {
15
+ this.agents.set(agent.agentName, agent);
16
+ });
17
+ this.taskQueue = config.tasks.sort((a, b) => b.priority - a.priority);
18
+ this.maxParallelTasks = config.maxParallelTasks;
19
+ this.enableLoadBalancing = config.enableLoadBalancing;
20
+ this.enableTaskPriority = config.enableTaskPriority;
21
+ logger.info({
22
+ agentsCount: this.agents.size,
23
+ tasksCount: this.taskQueue.length,
24
+ maxParallel: this.maxParallelTasks,
25
+ }, 'Swarm Orchestrator initialized');
26
+ }
27
+ // ─── Core Allocation Logic ────────────────────────────────────────────────────
28
+ findBestAgent(task) {
29
+ // Si la tâche force un agent spécifique
30
+ if (task.agentName) {
31
+ const agent = this.agents.get(task.agentName);
32
+ if (agent && this.canAgentHandleTask(agent, task)) {
33
+ return agent;
34
+ }
35
+ logger.warn({ task: task.id, forcedAgent: task.agentName }, 'Forced agent unavailable or incapable');
36
+ return null;
37
+ }
38
+ // Filtrer les agents capables
39
+ const capableAgents = Array.from(this.agents.values()).filter((agent) => this.canAgentHandleTask(agent, task));
40
+ if (capableAgents.length === 0) {
41
+ logger.warn({ task: task.id, requiredCaps: task.requiresCapabilities }, 'No capable agent found');
42
+ return null;
43
+ }
44
+ // Stratégie d'allocation
45
+ if (this.enableLoadBalancing) {
46
+ return this.selectByLoadBalancing(capableAgents, task);
47
+ }
48
+ else {
49
+ return this.selectByRoundRobin(capableAgents);
50
+ }
51
+ }
52
+ canAgentHandleTask(agent, task) {
53
+ // Vérifier les capacités requises
54
+ const hasCapabilities = task.requiresCapabilities.every((cap) => agent.capabilities.includes(cap));
55
+ if (!hasCapabilities) {
56
+ return false;
57
+ }
58
+ // Vérifier la charge actuelle
59
+ if (agent.currentLoad >= agent.maxConcurrentTasks) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ selectByLoadBalancing(agents, task) {
65
+ // Stratégie: moindre charge + temps d'achèvement estimé
66
+ return agents.reduce((best, current) => {
67
+ const bestScore = this.calculateAgentScore(best, task);
68
+ const currentScore = this.calculateAgentScore(current, task);
69
+ return currentScore > bestScore ? current : best;
70
+ });
71
+ }
72
+ selectByRoundRobin(agents) {
73
+ // Stratégie simple: premier agent disponible
74
+ return agents[0];
75
+ }
76
+ calculateAgentScore(agent, _task) {
77
+ const loadFactor = 1 - agent.currentLoad / agent.maxConcurrentTasks; // 0-1
78
+ const timeFactor = agent.estimatedCompletionTime
79
+ ? 1 / (agent.estimatedCompletionTime + 1)
80
+ : 1;
81
+ return loadFactor * 0.7 + timeFactor * 0.3; // Pondération: 70% charge, 30% temps
82
+ }
83
+ // ─── Task Allocation ───────────────────────────────────────────────────────────
84
+ async allocateTasks() {
85
+ const allocations = [];
86
+ const runningCount = Array.from(this.allocations.values()).filter((a) => !this.results.has(a.taskId) || this.results.get(a.taskId)?.status === 'running').length;
87
+ if (runningCount >= this.maxParallelTasks) {
88
+ logger.debug({ running: runningCount, max: this.maxParallelTasks }, 'Max parallel tasks reached');
89
+ return allocations;
90
+ }
91
+ const availableSlots = this.maxParallelTasks - runningCount;
92
+ const tasksToAllocate = this.taskQueue
93
+ .filter((t) => !this.allocations.has(t.id))
94
+ .slice(0, availableSlots);
95
+ for (const task of tasksToAllocate) {
96
+ const agent = this.findBestAgent(task);
97
+ if (agent) {
98
+ const allocation = {
99
+ taskId: task.id,
100
+ agentName: agent.agentName,
101
+ runner: agent.runner,
102
+ estimatedStart: Date.now(),
103
+ estimatedCompletion: Date.now() + (task.estimatedDuration || 60000),
104
+ };
105
+ this.allocations.set(task.id, allocation);
106
+ agent.currentLoad++;
107
+ this.results.set(task.id, {
108
+ taskId: task.id,
109
+ status: 'assigned',
110
+ agentName: agent.agentName,
111
+ startedAt: allocation.estimatedStart,
112
+ });
113
+ allocations.push(allocation);
114
+ logger.info({
115
+ task: task.id,
116
+ agent: agent.agentName,
117
+ runner: agent.runner,
118
+ agentLoad: agent.currentLoad,
119
+ }, 'Task allocated to agent');
120
+ }
121
+ else {
122
+ this.results.set(task.id, {
123
+ taskId: task.id,
124
+ status: 'pending',
125
+ error: 'No capable agent available',
126
+ });
127
+ logger.warn({ task: task.id }, 'Task could not be allocated');
128
+ }
129
+ }
130
+ return allocations;
131
+ }
132
+ // ─── Execution Interface ───────────────────────────────────────────────────────
133
+ async executeTask(task, allocation) {
134
+ const result = {
135
+ taskId: task.id,
136
+ status: 'running',
137
+ agentName: allocation.agentName,
138
+ startedAt: Date.now(),
139
+ };
140
+ this.results.set(task.id, result);
141
+ try {
142
+ // Dynamically import runAgent to avoid circular dependencies
143
+ const { runAgent } = await import('../../tools/run_agent.js');
144
+ const response = await runAgent({
145
+ runner: allocation.runner,
146
+ prompt: task.prompt,
147
+ agentName: allocation.agentName,
148
+ model: task.model,
149
+ path: task.path,
150
+ autoResume: false,
151
+ silent: false,
152
+ });
153
+ const completedResult = {
154
+ taskId: task.id,
155
+ status: response.isError ? 'failed' : 'completed',
156
+ agentName: allocation.agentName,
157
+ result: response.content,
158
+ error: response.isError ? response.content?.[0]?.text : undefined,
159
+ startedAt: result.startedAt,
160
+ completedAt: Date.now(),
161
+ };
162
+ this.results.set(task.id, completedResult);
163
+ // Release agent load
164
+ const agent = this.agents.get(allocation.agentName);
165
+ if (agent) {
166
+ agent.currentLoad--;
167
+ }
168
+ logger.info({
169
+ task: task.id,
170
+ agent: allocation.agentName,
171
+ status: completedResult.status,
172
+ duration: (completedResult.completedAt || 0) - (completedResult.startedAt || 0),
173
+ }, 'Task execution completed');
174
+ return completedResult;
175
+ }
176
+ catch (error) {
177
+ const failedResult = {
178
+ taskId: task.id,
179
+ status: 'failed',
180
+ agentName: allocation.agentName,
181
+ error: error instanceof Error ? error.message : String(error),
182
+ startedAt: result.startedAt,
183
+ completedAt: Date.now(),
184
+ };
185
+ this.results.set(task.id, failedResult);
186
+ // Release agent load
187
+ const agent = this.agents.get(allocation.agentName);
188
+ if (agent) {
189
+ agent.currentLoad--;
190
+ }
191
+ logger.error({
192
+ task: task.id,
193
+ agent: allocation.agentName,
194
+ error: failedResult.error,
195
+ }, 'Task execution failed');
196
+ return failedResult;
197
+ }
198
+ }
199
+ // ─── Query Methods ─────────────────────────────────────────────────────────────
200
+ getTaskStatus(taskId) {
201
+ return this.results.get(taskId);
202
+ }
203
+ getAllResults() {
204
+ return Array.from(this.results.values());
205
+ }
206
+ getPendingTasks() {
207
+ return this.taskQueue.filter((t) => !this.allocations.has(t.id));
208
+ }
209
+ getAgentStatus(agentName) {
210
+ return this.agents.get(agentName);
211
+ }
212
+ getAllAgents() {
213
+ return Array.from(this.agents.values());
214
+ }
215
+ getStatistics() {
216
+ const results = Array.from(this.results.values());
217
+ const completed = results.filter((r) => r.status === 'completed').length;
218
+ const failed = results.filter((r) => r.status === 'failed').length;
219
+ const running = results.filter((r) => r.status === 'running' || r.status === 'assigned').length;
220
+ const pending = this.getPendingTasks().length;
221
+ const totalLoad = Array.from(this.agents.values()).reduce((sum, a) => sum + a.currentLoad, 0);
222
+ const averageLoad = totalLoad / this.agents.size;
223
+ return {
224
+ totalTasks: this.taskQueue.length,
225
+ completed,
226
+ failed,
227
+ running,
228
+ pending,
229
+ totalAgents: this.agents.size,
230
+ averageLoad,
231
+ };
232
+ }
233
+ }
234
+ // ─── Factory ─────────────────────────────────────────────────────────────────────
235
+ export function createSwarmOrchestrator(config) {
236
+ return new SwarmOrchestrator(config);
237
+ }
238
+ //# sourceMappingURL=swarm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../../src/lib/orchestration/swarm.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { Client, WorkflowHandle } from '@temporalio/client';
2
- import { orchestrateAgentsWorkflow } from './workflows.js';
3
- import type { AgentConfig } from './workflows.js';
2
+ import { orchestrateAgentsWorkflow, longRunningWorkflow } from './workflows.js';
3
+ import type { AgentConfig, LongRunningWorkflowInput } from './workflows.js';
4
4
  export declare function getTemporalClient(): Client | null;
5
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>>;
6
8
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
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,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAajD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,cAAc,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAW3D"}
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,5 +1,5 @@
1
1
  import { Client, Connection } from '@temporalio/client';
2
- import { orchestrateAgentsWorkflow } from './workflows.js';
2
+ import { orchestrateAgentsWorkflow, longRunningWorkflow } from './workflows.js';
3
3
  let _client = null;
4
4
  export function getTemporalClient() {
5
5
  if (process.env.OVERMIND_WORKFLOW !== 'temporal') {
@@ -22,6 +22,27 @@ export async function startAgentsWorkflow(agents) {
22
22
  args: [agents],
23
23
  taskQueue: 'overmind-agents',
24
24
  workflowId: `agents-${Date.now()}`,
25
+ workflowRunTimeout: '30 minutes',
25
26
  });
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
+ }
27
48
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
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,MAAM,gBAAgB,CAAC;AAG3D,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;KACnC,CAAC,CAAC;AACL,CAAC"}
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"}
@@ -6,4 +6,26 @@ export interface AgentConfig {
6
6
  path?: string;
7
7
  }
8
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>;
9
31
  //# sourceMappingURL=workflows.d.ts.map
@@ -1 +1 @@
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"}
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"}
@@ -1,4 +1,4 @@
1
- import { proxyActivities } from '@temporalio/workflow';
1
+ import { proxyActivities, defineSignal, defineQuery, setHandler, condition } from '@temporalio/workflow';
2
2
  const activities = proxyActivities({
3
3
  startToCloseTimeout: '15 minutes',
4
4
  retry: {
@@ -14,4 +14,66 @@ export async function orchestrateAgentsWorkflow(agents) {
14
14
  path: agent.path,
15
15
  })));
16
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
+ }
17
79
  //# sourceMappingURL=workflows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,UAAU,GAAG,eAAe,CAI/B;IACD,mBAAmB,EAAE,YAAY;IACjC,KAAK,EAAE;QACL,eAAe,EAAE,CAAC;KACnB;CACF,CAAC,CAAC;AAUH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAqB;IACnE,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,UAAU,CAAC,gBAAgB,CAAC;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CACH,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/lib/workflow/temporal/workflows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "1.13.15",
3
+ "version": "2.0.0",
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.",
6
6
  "type": "module",
@@ -38,7 +38,13 @@
38
38
  "changeset": "changeset",
39
39
  "version": "changeset version",
40
40
  "release": "pnpm run build && changeset publish",
41
- "prepublishOnly": "pnpm run rebuild"
41
+ "prepublishOnly": "pnpm run rebuild",
42
+ "deploy:infra": "docker-compose up -d",
43
+ "deploy:exporters": "docker-compose -f docker-compose.exporters.yml up -d",
44
+ "deploy:all": "docker-compose up -d && docker-compose -f docker-compose.exporters.yml up -d",
45
+ "deploy:down": "docker-compose down",
46
+ "deploy:logs": "docker-compose logs -f",
47
+ "deploy:status": "docker-compose ps"
42
48
  },
43
49
  "keywords": [
44
50
  "mcp",