@cogitator-ai/swarms 0.3.20 → 0.4.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.
Files changed (65) hide show
  1. package/README.md +192 -0
  2. package/dist/communication/index.d.ts +6 -3
  3. package/dist/communication/index.d.ts.map +1 -1
  4. package/dist/communication/index.js +6 -3
  5. package/dist/communication/index.js.map +1 -1
  6. package/dist/communication/redis-blackboard.d.ts +36 -0
  7. package/dist/communication/redis-blackboard.d.ts.map +1 -0
  8. package/dist/communication/redis-blackboard.js +203 -0
  9. package/dist/communication/redis-blackboard.js.map +1 -0
  10. package/dist/communication/redis-event-emitter.d.ts +36 -0
  11. package/dist/communication/redis-event-emitter.d.ts.map +1 -0
  12. package/dist/communication/redis-event-emitter.js +130 -0
  13. package/dist/communication/redis-event-emitter.js.map +1 -0
  14. package/dist/communication/redis-message-bus.d.ts +34 -0
  15. package/dist/communication/redis-message-bus.d.ts.map +1 -0
  16. package/dist/communication/redis-message-bus.js +151 -0
  17. package/dist/communication/redis-message-bus.js.map +1 -0
  18. package/dist/distributed/distributed-coordinator.d.ts +92 -0
  19. package/dist/distributed/distributed-coordinator.d.ts.map +1 -0
  20. package/dist/distributed/distributed-coordinator.js +329 -0
  21. package/dist/distributed/distributed-coordinator.js.map +1 -0
  22. package/dist/distributed/index.d.ts +2 -0
  23. package/dist/distributed/index.d.ts.map +1 -0
  24. package/dist/distributed/index.js +2 -0
  25. package/dist/distributed/index.js.map +1 -0
  26. package/dist/strategies/auction.d.ts +3 -4
  27. package/dist/strategies/auction.d.ts.map +1 -1
  28. package/dist/strategies/auction.js +1 -1
  29. package/dist/strategies/auction.js.map +1 -1
  30. package/dist/strategies/consensus.d.ts +3 -4
  31. package/dist/strategies/consensus.d.ts.map +1 -1
  32. package/dist/strategies/consensus.js +1 -1
  33. package/dist/strategies/consensus.js.map +1 -1
  34. package/dist/strategies/debate.d.ts +3 -4
  35. package/dist/strategies/debate.d.ts.map +1 -1
  36. package/dist/strategies/debate.js +1 -1
  37. package/dist/strategies/debate.js.map +1 -1
  38. package/dist/strategies/hierarchical.d.ts +3 -4
  39. package/dist/strategies/hierarchical.d.ts.map +1 -1
  40. package/dist/strategies/hierarchical.js +1 -1
  41. package/dist/strategies/hierarchical.js.map +1 -1
  42. package/dist/strategies/index.d.ts +2 -3
  43. package/dist/strategies/index.d.ts.map +1 -1
  44. package/dist/strategies/index.js.map +1 -1
  45. package/dist/strategies/negotiation-strategy.d.ts +3 -4
  46. package/dist/strategies/negotiation-strategy.d.ts.map +1 -1
  47. package/dist/strategies/negotiation-strategy.js +4 -4
  48. package/dist/strategies/negotiation-strategy.js.map +1 -1
  49. package/dist/strategies/pipeline.d.ts +3 -4
  50. package/dist/strategies/pipeline.d.ts.map +1 -1
  51. package/dist/strategies/pipeline.js +1 -1
  52. package/dist/strategies/pipeline.js.map +1 -1
  53. package/dist/strategies/round-robin.d.ts +3 -4
  54. package/dist/strategies/round-robin.d.ts.map +1 -1
  55. package/dist/strategies/round-robin.js +1 -1
  56. package/dist/strategies/round-robin.js.map +1 -1
  57. package/dist/swarm.d.ts +14 -1
  58. package/dist/swarm.d.ts.map +1 -1
  59. package/dist/swarm.js +101 -15
  60. package/dist/swarm.js.map +1 -1
  61. package/package.json +2 -1
  62. package/dist/strategies/negotiation.d.ts +0 -39
  63. package/dist/strategies/negotiation.d.ts.map +0 -1
  64. package/dist/strategies/negotiation.js +0 -607
  65. package/dist/strategies/negotiation.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-event-emitter.js","sourceRoot":"","sources":["../../src/communication/redis-event-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { MessageBus, MessageBusConfig, SwarmMessage } from '@cogitator-ai/types';
2
+ import type { Redis } from 'ioredis';
3
+ export interface RedisMessageBusOptions {
4
+ redis: Redis;
5
+ swarmId: string;
6
+ keyPrefix?: string;
7
+ }
8
+ export declare class RedisMessageBus implements MessageBus {
9
+ private redis;
10
+ private subscriber;
11
+ private swarmId;
12
+ private keyPrefix;
13
+ private config;
14
+ private subscriptions;
15
+ private agentMessageCounts;
16
+ private localCache;
17
+ constructor(config: MessageBusConfig, options: RedisMessageBusOptions);
18
+ private messagesKey;
19
+ private channelKey;
20
+ initialize(): Promise<void>;
21
+ send(message: Omit<SwarmMessage, 'id' | 'timestamp'>): Promise<SwarmMessage>;
22
+ broadcast(from: string, content: string, channel?: string): Promise<void>;
23
+ subscribe(agentName: string, handler: (msg: SwarmMessage) => void): () => void;
24
+ getMessages(agentName: string, limit?: number): SwarmMessage[];
25
+ getConversation(agent1: string, agent2: string): SwarmMessage[];
26
+ getAllMessages(): SwarmMessage[];
27
+ getUnreadMessages(agentName: string): SwarmMessage[];
28
+ clear(): void;
29
+ resetTurnCounts(): void;
30
+ close(): Promise<void>;
31
+ syncFromRedis(): Promise<void>;
32
+ private notifySubscribers;
33
+ }
34
+ //# sourceMappingURL=redis-message-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-message-bus.d.ts","sourceRoot":"","sources":["../../src/communication/redis-message-bus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAuD;IAC5E,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,UAAU,CAAsB;gBAE5B,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB;IAQrE,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA8C5E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/E,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAiB9E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAW9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAM/D,cAAc,IAAI,YAAY,EAAE;IAIhC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAMpD,KAAK,IAAI,IAAI;IAMb,eAAe,IAAI,IAAI;IAIjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,OAAO,CAAC,iBAAiB;CAsB1B"}
@@ -0,0 +1,151 @@
1
+ import { nanoid } from 'nanoid';
2
+ export class RedisMessageBus {
3
+ redis;
4
+ subscriber;
5
+ swarmId;
6
+ keyPrefix;
7
+ config;
8
+ subscriptions = new Map();
9
+ agentMessageCounts = new Map();
10
+ localCache = [];
11
+ constructor(config, options) {
12
+ this.config = config;
13
+ this.redis = options.redis;
14
+ this.subscriber = options.redis.duplicate();
15
+ this.swarmId = options.swarmId;
16
+ this.keyPrefix = options.keyPrefix ?? 'swarm';
17
+ }
18
+ messagesKey() {
19
+ return `${this.keyPrefix}:${this.swarmId}:messages`;
20
+ }
21
+ channelKey(target) {
22
+ return `${this.keyPrefix}:${this.swarmId}:channel:${target}`;
23
+ }
24
+ async initialize() {
25
+ await this.subscriber.psubscribe(`${this.keyPrefix}:${this.swarmId}:channel:*`);
26
+ this.subscriber.on('pmessage', (_pattern, _channel, messageJson) => {
27
+ try {
28
+ const message = JSON.parse(messageJson);
29
+ this.localCache.push(message);
30
+ this.notifySubscribers(message);
31
+ }
32
+ catch { }
33
+ });
34
+ }
35
+ async send(message) {
36
+ if (!this.config.enabled) {
37
+ throw new Error('Message bus is not enabled');
38
+ }
39
+ if (this.config.maxMessageLength && message.content.length > this.config.maxMessageLength) {
40
+ throw new Error(`Message exceeds max length of ${this.config.maxMessageLength} characters`);
41
+ }
42
+ if (this.config.maxMessagesPerTurn) {
43
+ const count = this.agentMessageCounts.get(message.from) ?? 0;
44
+ if (count >= this.config.maxMessagesPerTurn) {
45
+ throw new Error(`Agent ${message.from} exceeded max messages per turn (${this.config.maxMessagesPerTurn})`);
46
+ }
47
+ this.agentMessageCounts.set(message.from, count + 1);
48
+ }
49
+ if (this.config.maxTotalMessages && this.localCache.length >= this.config.maxTotalMessages) {
50
+ throw new Error(`Max total messages (${this.config.maxTotalMessages}) reached`);
51
+ }
52
+ const fullMessage = {
53
+ ...message,
54
+ swarmId: this.swarmId,
55
+ id: `msg_${nanoid(12)}`,
56
+ timestamp: Date.now(),
57
+ };
58
+ const messageJson = JSON.stringify(fullMessage);
59
+ this.localCache.push(fullMessage);
60
+ this.notifySubscribers(fullMessage);
61
+ void this.redis.rpush(this.messagesKey(), messageJson);
62
+ if (fullMessage.to === 'broadcast') {
63
+ void this.redis.publish(this.channelKey('broadcast'), messageJson);
64
+ }
65
+ else {
66
+ void this.redis.publish(this.channelKey(fullMessage.to), messageJson);
67
+ }
68
+ return fullMessage;
69
+ }
70
+ async broadcast(from, content, channel) {
71
+ await this.send({
72
+ swarmId: this.swarmId,
73
+ from,
74
+ to: 'broadcast',
75
+ type: 'notification',
76
+ content,
77
+ channel,
78
+ });
79
+ }
80
+ subscribe(agentName, handler) {
81
+ if (!this.subscriptions.has(agentName)) {
82
+ this.subscriptions.set(agentName, new Set());
83
+ }
84
+ this.subscriptions.get(agentName).add(handler);
85
+ return () => {
86
+ const handlers = this.subscriptions.get(agentName);
87
+ if (handlers) {
88
+ handlers.delete(handler);
89
+ if (handlers.size === 0) {
90
+ this.subscriptions.delete(agentName);
91
+ }
92
+ }
93
+ };
94
+ }
95
+ getMessages(agentName, limit) {
96
+ const relevant = this.localCache.filter((m) => m.to === agentName || m.to === 'broadcast' || m.from === agentName);
97
+ if (limit) {
98
+ return relevant.slice(-limit);
99
+ }
100
+ return relevant;
101
+ }
102
+ getConversation(agent1, agent2) {
103
+ return this.localCache.filter((m) => (m.from === agent1 && m.to === agent2) || (m.from === agent2 && m.to === agent1));
104
+ }
105
+ getAllMessages() {
106
+ return [...this.localCache];
107
+ }
108
+ getUnreadMessages(agentName) {
109
+ return this.localCache.filter((m) => (m.to === agentName || m.to === 'broadcast') && m.from !== agentName);
110
+ }
111
+ clear() {
112
+ this.localCache = [];
113
+ this.agentMessageCounts.clear();
114
+ void this.redis.del(this.messagesKey());
115
+ }
116
+ resetTurnCounts() {
117
+ this.agentMessageCounts.clear();
118
+ }
119
+ async close() {
120
+ await this.subscriber.punsubscribe();
121
+ await this.subscriber.quit();
122
+ }
123
+ async syncFromRedis() {
124
+ const rawMessages = await this.redis.lrange(this.messagesKey(), 0, -1);
125
+ this.localCache = rawMessages.map((raw) => JSON.parse(raw));
126
+ }
127
+ notifySubscribers(message) {
128
+ if (message.to !== 'broadcast') {
129
+ const handlers = this.subscriptions.get(message.to);
130
+ if (handlers) {
131
+ for (const handler of handlers) {
132
+ void Promise.resolve(handler(message)).catch((error) => {
133
+ console.warn('[RedisMessageBus] Handler error:', error);
134
+ });
135
+ }
136
+ }
137
+ }
138
+ else {
139
+ for (const [agentName, handlers] of this.subscriptions) {
140
+ if (agentName !== message.from) {
141
+ for (const handler of handlers) {
142
+ void Promise.resolve(handler(message)).catch((error) => {
143
+ console.warn('[RedisMessageBus] Broadcast handler error:', error);
144
+ });
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ //# sourceMappingURL=redis-message-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-message-bus.js","sourceRoot":"","sources":["../../src/communication/redis-message-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { SwarmConfig, SwarmAgent, SwarmAgentMetadata, RunResult, MessageBus, Blackboard, SwarmEventEmitter, SwarmCoordinatorInterface, DistributedSwarmConfig } from '@cogitator-ai/types';
2
+ export interface DistributedCoordinatorOptions {
3
+ config: SwarmConfig;
4
+ distributed: DistributedSwarmConfig;
5
+ }
6
+ export interface SwarmAgentJobPayload {
7
+ type: 'swarm-agent';
8
+ jobId: string;
9
+ swarmId: string;
10
+ agentName: string;
11
+ agentConfig: SerializedAgentConfig;
12
+ input: string;
13
+ context?: Record<string, unknown>;
14
+ stateKeys: {
15
+ blackboard: string;
16
+ messages: string;
17
+ results: string;
18
+ };
19
+ }
20
+ export interface SwarmAgentJobResult {
21
+ swarmId: string;
22
+ agentName: string;
23
+ output: string;
24
+ structured?: unknown;
25
+ toolCalls: {
26
+ name: string;
27
+ input: unknown;
28
+ output: unknown;
29
+ }[];
30
+ tokenUsage: {
31
+ prompt: number;
32
+ completion: number;
33
+ total: number;
34
+ };
35
+ error?: string;
36
+ }
37
+ interface SerializedAgentConfig {
38
+ name: string;
39
+ instructions: string;
40
+ model: string;
41
+ provider: string;
42
+ temperature?: number;
43
+ maxTokens?: number;
44
+ tools: unknown[];
45
+ }
46
+ export declare class DistributedSwarmCoordinator implements SwarmCoordinatorInterface {
47
+ private config;
48
+ private distributed;
49
+ private redis;
50
+ private subscriber;
51
+ private agents;
52
+ private _messageBus;
53
+ private _blackboard;
54
+ private _events;
55
+ private swarmId;
56
+ private keyPrefix;
57
+ private resultHandlers;
58
+ private initialized;
59
+ private aborted;
60
+ private paused;
61
+ constructor(options: DistributedCoordinatorOptions);
62
+ private initializeAgents;
63
+ initialize(): Promise<void>;
64
+ private subscribeToResults;
65
+ get messageBus(): MessageBus;
66
+ get blackboard(): Blackboard;
67
+ get events(): SwarmEventEmitter;
68
+ getSwarmId(): string;
69
+ getAgent(name: string): SwarmAgent | undefined;
70
+ getAgents(): SwarmAgent[];
71
+ getAgentsByRole(role: SwarmAgentMetadata['role']): SwarmAgent[];
72
+ runAgent(agentName: string, input: string, context?: Record<string, unknown>): Promise<RunResult>;
73
+ runAgentsParallel(agents: {
74
+ name: string;
75
+ input: string;
76
+ context?: Record<string, unknown>;
77
+ }[], maxConcurrency?: number): Promise<Map<string, RunResult>>;
78
+ private createJobPayload;
79
+ private extractProvider;
80
+ private dispatchJobAndWait;
81
+ private toRunResult;
82
+ private setAgentState;
83
+ pause(): void;
84
+ resume(): void;
85
+ abort(): void;
86
+ isAborted(): boolean;
87
+ isPaused(): boolean;
88
+ reset(): Promise<void>;
89
+ close(): Promise<void>;
90
+ }
91
+ export {};
92
+ //# sourceMappingURL=distributed-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-coordinator.d.ts","sourceRoot":"","sources":["../../src/distributed/distributed-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,329 @@
1
+ import { nanoid } from 'nanoid';
2
+ import Redis from 'ioredis';
3
+ import { RedisMessageBus } from '../communication/redis-message-bus.js';
4
+ import { RedisBlackboard } from '../communication/redis-blackboard.js';
5
+ import { RedisSwarmEventEmitter } from '../communication/redis-event-emitter.js';
6
+ export class DistributedSwarmCoordinator {
7
+ config;
8
+ distributed;
9
+ redis;
10
+ subscriber;
11
+ agents = new Map();
12
+ _messageBus;
13
+ _blackboard;
14
+ _events;
15
+ swarmId;
16
+ keyPrefix;
17
+ resultHandlers = new Map();
18
+ initialized = false;
19
+ aborted = false;
20
+ paused = false;
21
+ constructor(options) {
22
+ this.config = options.config;
23
+ this.distributed = options.distributed;
24
+ this.swarmId = `swarm_${nanoid(12)}`;
25
+ this.keyPrefix = options.distributed.redis?.keyPrefix ?? 'swarm';
26
+ const redisConfig = {
27
+ host: options.distributed.redis?.host ?? 'localhost',
28
+ port: options.distributed.redis?.port ?? 6379,
29
+ password: options.distributed.redis?.password,
30
+ db: options.distributed.redis?.db ?? 0,
31
+ };
32
+ this.redis = new Redis(redisConfig);
33
+ this.subscriber = new Redis(redisConfig);
34
+ this.initializeAgents();
35
+ }
36
+ initializeAgents() {
37
+ const agentEntries = [];
38
+ if (this.config.supervisor) {
39
+ agentEntries.push({
40
+ agent: this.config.supervisor,
41
+ metadata: { role: 'supervisor', priority: 100 },
42
+ });
43
+ }
44
+ if (this.config.workers) {
45
+ for (const worker of this.config.workers) {
46
+ agentEntries.push({
47
+ agent: worker,
48
+ metadata: { role: 'worker', priority: 50 },
49
+ });
50
+ }
51
+ }
52
+ if (this.config.agents) {
53
+ for (const agent of this.config.agents) {
54
+ agentEntries.push({ agent, metadata: {} });
55
+ }
56
+ }
57
+ if (this.config.moderator) {
58
+ agentEntries.push({
59
+ agent: this.config.moderator,
60
+ metadata: { role: 'moderator', priority: 90 },
61
+ });
62
+ }
63
+ if (this.config.router) {
64
+ agentEntries.push({
65
+ agent: this.config.router,
66
+ metadata: { role: 'router', priority: 95 },
67
+ });
68
+ }
69
+ if (this.config.stages) {
70
+ for (const stage of this.config.stages) {
71
+ agentEntries.push({
72
+ agent: stage.agent,
73
+ metadata: { custom: { stageName: stage.name, isGate: stage.gate } },
74
+ });
75
+ }
76
+ }
77
+ if (this.config.pipeline?.stages) {
78
+ for (const stage of this.config.pipeline.stages) {
79
+ agentEntries.push({
80
+ agent: stage.agent,
81
+ metadata: { custom: { stageName: stage.name, isGate: stage.gate } },
82
+ });
83
+ }
84
+ }
85
+ for (const { agent, metadata } of agentEntries) {
86
+ this.agents.set(agent.name, {
87
+ agent,
88
+ metadata,
89
+ state: 'idle',
90
+ messageCount: 0,
91
+ tokenCount: 0,
92
+ });
93
+ }
94
+ }
95
+ async initialize() {
96
+ if (this.initialized)
97
+ return;
98
+ this._messageBus = new RedisMessageBus(this.config.messaging ?? { enabled: true, protocol: 'direct' }, { redis: this.redis, swarmId: this.swarmId, keyPrefix: this.keyPrefix });
99
+ this._blackboard = new RedisBlackboard(this.config.blackboard ?? { enabled: true, sections: {}, trackHistory: true }, { redis: this.redis, swarmId: this.swarmId, keyPrefix: this.keyPrefix });
100
+ this._events = new RedisSwarmEventEmitter({
101
+ redis: this.redis,
102
+ swarmId: this.swarmId,
103
+ keyPrefix: this.keyPrefix,
104
+ });
105
+ await this._messageBus.initialize();
106
+ await this._blackboard.initialize();
107
+ await this._events.initialize();
108
+ await this.subscribeToResults();
109
+ this.initialized = true;
110
+ }
111
+ async subscribeToResults() {
112
+ const resultsChannel = `${this.keyPrefix}:${this.swarmId}:results`;
113
+ await this.subscriber.subscribe(resultsChannel);
114
+ this.subscriber.on('message', (_channel, messageJson) => {
115
+ try {
116
+ const result = JSON.parse(messageJson);
117
+ const handler = this.resultHandlers.get(result.agentName);
118
+ if (handler) {
119
+ handler(result);
120
+ this.resultHandlers.delete(result.agentName);
121
+ }
122
+ }
123
+ catch { }
124
+ });
125
+ }
126
+ get messageBus() {
127
+ return this._messageBus;
128
+ }
129
+ get blackboard() {
130
+ return this._blackboard;
131
+ }
132
+ get events() {
133
+ return this._events;
134
+ }
135
+ getSwarmId() {
136
+ return this.swarmId;
137
+ }
138
+ getAgent(name) {
139
+ return this.agents.get(name);
140
+ }
141
+ getAgents() {
142
+ return Array.from(this.agents.values());
143
+ }
144
+ getAgentsByRole(role) {
145
+ return this.getAgents().filter((a) => a.metadata.role === role);
146
+ }
147
+ async runAgent(agentName, input, context) {
148
+ if (!this.initialized) {
149
+ await this.initialize();
150
+ }
151
+ const swarmAgent = this.agents.get(agentName);
152
+ if (!swarmAgent) {
153
+ throw new Error(`Agent '${agentName}' not found in swarm`);
154
+ }
155
+ while (this.paused) {
156
+ await new Promise((r) => setTimeout(r, 100));
157
+ }
158
+ if (this.aborted) {
159
+ throw new Error('Swarm execution aborted');
160
+ }
161
+ this.setAgentState(agentName, 'running');
162
+ await this._events.emitAsync('agent:start', { agentName, input }, agentName);
163
+ const jobPayload = this.createJobPayload(swarmAgent, input, context);
164
+ try {
165
+ const result = await this.dispatchJobAndWait(jobPayload);
166
+ this.setAgentState(agentName, 'completed');
167
+ swarmAgent.tokenCount += result.tokenUsage.total;
168
+ const runResult = this.toRunResult(swarmAgent, result);
169
+ swarmAgent.lastResult = runResult;
170
+ await this._events.emitAsync('agent:complete', { agentName, result: runResult }, agentName);
171
+ return runResult;
172
+ }
173
+ catch (error) {
174
+ this.setAgentState(agentName, 'failed');
175
+ await this._events.emitAsync('agent:error', { agentName, error }, agentName);
176
+ throw error;
177
+ }
178
+ }
179
+ async runAgentsParallel(agents, maxConcurrency) {
180
+ const concurrency = maxConcurrency ?? this.config.resources?.maxConcurrency ?? 4;
181
+ const results = new Map();
182
+ for (let i = 0; i < agents.length; i += concurrency) {
183
+ const chunk = agents.slice(i, i + concurrency);
184
+ const chunkResults = await Promise.allSettled(chunk.map(async ({ name, input, context }) => {
185
+ const result = await this.runAgent(name, input, context);
186
+ return { name, result };
187
+ }));
188
+ for (const settled of chunkResults) {
189
+ if (settled.status === 'fulfilled') {
190
+ results.set(settled.value.name, settled.value.result);
191
+ }
192
+ }
193
+ }
194
+ return results;
195
+ }
196
+ createJobPayload(swarmAgent, input, context) {
197
+ const agent = swarmAgent.agent;
198
+ const agentConfig = {
199
+ name: agent.name,
200
+ instructions: agent.instructions,
201
+ model: agent.model,
202
+ provider: this.extractProvider(agent.model),
203
+ temperature: agent.config.temperature,
204
+ maxTokens: agent.config.maxTokens,
205
+ tools: agent.tools.map((t) => t.toJSON()),
206
+ };
207
+ return {
208
+ type: 'swarm-agent',
209
+ jobId: `job_${nanoid(12)}`,
210
+ swarmId: this.swarmId,
211
+ agentName: agent.name,
212
+ agentConfig,
213
+ input,
214
+ context: {
215
+ ...context,
216
+ swarmContext: {
217
+ swarmId: this.swarmId,
218
+ swarmName: this.config.name,
219
+ agentRole: swarmAgent.metadata.role,
220
+ availableAgents: Array.from(this.agents.keys()).filter((n) => n !== agent.name),
221
+ },
222
+ },
223
+ stateKeys: {
224
+ blackboard: `${this.keyPrefix}:${this.swarmId}:blackboard`,
225
+ messages: `${this.keyPrefix}:${this.swarmId}:messages`,
226
+ results: `${this.keyPrefix}:${this.swarmId}:results`,
227
+ },
228
+ };
229
+ }
230
+ extractProvider(model) {
231
+ if (model.includes('/')) {
232
+ return model.split('/')[0];
233
+ }
234
+ return 'openai';
235
+ }
236
+ async dispatchJobAndWait(payload) {
237
+ const timeout = this.distributed.timeout ?? 300000;
238
+ const queueName = this.distributed.queue ?? 'swarm-agent-jobs';
239
+ const jobKey = `${this.keyPrefix}:jobs:${queueName}`;
240
+ await this.redis.rpush(jobKey, JSON.stringify(payload));
241
+ return new Promise((resolve, reject) => {
242
+ const timeoutId = setTimeout(() => {
243
+ this.resultHandlers.delete(payload.agentName);
244
+ reject(new Error(`Job timeout for agent '${payload.agentName}' after ${timeout}ms`));
245
+ }, timeout);
246
+ this.resultHandlers.set(payload.agentName, (result) => {
247
+ clearTimeout(timeoutId);
248
+ if (result.error) {
249
+ reject(new Error(result.error));
250
+ }
251
+ else {
252
+ resolve(result);
253
+ }
254
+ });
255
+ });
256
+ }
257
+ toRunResult(swarmAgent, jobResult) {
258
+ return {
259
+ output: jobResult.output,
260
+ structured: jobResult.structured,
261
+ runId: `run_${nanoid(8)}`,
262
+ agentId: swarmAgent.agent.id,
263
+ threadId: '',
264
+ usage: {
265
+ inputTokens: jobResult.tokenUsage.prompt,
266
+ outputTokens: jobResult.tokenUsage.completion,
267
+ totalTokens: jobResult.tokenUsage.total,
268
+ cost: 0,
269
+ duration: 0,
270
+ },
271
+ toolCalls: jobResult.toolCalls.map((tc) => ({
272
+ id: nanoid(8),
273
+ name: tc.name,
274
+ arguments: (tc.input ?? {}),
275
+ result: tc.output,
276
+ })),
277
+ messages: [],
278
+ trace: { traceId: `trace_${nanoid(12)}`, spans: [] },
279
+ };
280
+ }
281
+ setAgentState(agentName, state) {
282
+ const agent = this.agents.get(agentName);
283
+ if (agent) {
284
+ agent.state = state;
285
+ }
286
+ }
287
+ pause() {
288
+ this.paused = true;
289
+ }
290
+ resume() {
291
+ this.paused = false;
292
+ }
293
+ abort() {
294
+ this.aborted = true;
295
+ }
296
+ isAborted() {
297
+ return this.aborted;
298
+ }
299
+ isPaused() {
300
+ return this.paused;
301
+ }
302
+ async reset() {
303
+ this.aborted = false;
304
+ this.paused = false;
305
+ for (const agent of this.agents.values()) {
306
+ agent.state = 'idle';
307
+ agent.lastResult = undefined;
308
+ agent.messageCount = 0;
309
+ agent.tokenCount = 0;
310
+ }
311
+ this._messageBus.clear();
312
+ this._blackboard.clear();
313
+ }
314
+ async close() {
315
+ if (this._messageBus) {
316
+ await this._messageBus.close();
317
+ }
318
+ if (this._blackboard) {
319
+ await this._blackboard.close();
320
+ }
321
+ if (this._events) {
322
+ await this._events.close();
323
+ }
324
+ await this.subscriber.unsubscribe();
325
+ await this.subscriber.quit();
326
+ await this.redis.quit();
327
+ }
328
+ }
329
+ //# sourceMappingURL=distributed-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-coordinator.js","sourceRoot":"","sources":["../../src/distributed/distributed-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DistributedSwarmCoordinator, type DistributedCoordinatorOptions, } from './distributed-coordinator.js';
2
+ //# sourceMappingURL=index.d.ts.map