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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/orchestration/swarm.d.ts +75 -0
- package/dist/lib/orchestration/swarm.d.ts.map +1 -0
- package/dist/lib/orchestration/swarm.js +238 -0
- package/dist/lib/orchestration/swarm.js.map +1 -0
- package/dist/lib/workflow/temporal/client.d.ts +4 -2
- package/dist/lib/workflow/temporal/client.d.ts.map +1 -1
- package/dist/lib/workflow/temporal/client.js +22 -1
- package/dist/lib/workflow/temporal/client.js.map +1 -1
- package/dist/lib/workflow/temporal/workflows.d.ts +22 -0
- package/dist/lib/workflow/temporal/workflows.d.ts.map +1 -1
- package/dist/lib/workflow/temporal/workflows.js +63 -1
- package/dist/lib/workflow/temporal/workflows.js.map +1 -1
- package/package.json +8 -2
- package/assets/overmind_mcp_pro_banner_v3.png +0 -0
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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;
|
|
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": "
|
|
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",
|
|
Binary file
|