@cogitator-ai/swarms 0.4.20 → 0.6.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 (140) hide show
  1. package/README.md +245 -897
  2. package/dist/agents.d.ts +13 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +70 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/assessor/assessor.d.ts +9 -2
  7. package/dist/assessor/assessor.d.ts.map +1 -1
  8. package/dist/assessor/assessor.js +72 -53
  9. package/dist/assessor/assessor.js.map +1 -1
  10. package/dist/assessor/model-discovery.d.ts.map +1 -1
  11. package/dist/assessor/model-discovery.js +40 -46
  12. package/dist/assessor/model-discovery.js.map +1 -1
  13. package/dist/assessor/role-matcher.d.ts +6 -24
  14. package/dist/assessor/role-matcher.d.ts.map +1 -1
  15. package/dist/assessor/role-matcher.js +9 -37
  16. package/dist/assessor/role-matcher.js.map +1 -1
  17. package/dist/assessor/scoring.d.ts.map +1 -1
  18. package/dist/assessor/scoring.js +23 -1
  19. package/dist/assessor/scoring.js.map +1 -1
  20. package/dist/base-coordinator.d.ts +117 -0
  21. package/dist/base-coordinator.d.ts.map +1 -0
  22. package/dist/base-coordinator.js +455 -0
  23. package/dist/base-coordinator.js.map +1 -0
  24. package/dist/communication/blackboard.d.ts +34 -4
  25. package/dist/communication/blackboard.d.ts.map +1 -1
  26. package/dist/communication/blackboard.js +81 -46
  27. package/dist/communication/blackboard.js.map +1 -1
  28. package/dist/communication/event-emitter.d.ts.map +1 -1
  29. package/dist/communication/event-emitter.js +6 -17
  30. package/dist/communication/event-emitter.js.map +1 -1
  31. package/dist/communication/index.d.ts +2 -2
  32. package/dist/communication/index.d.ts.map +1 -1
  33. package/dist/communication/index.js +2 -2
  34. package/dist/communication/index.js.map +1 -1
  35. package/dist/communication/message-bus.d.ts +48 -5
  36. package/dist/communication/message-bus.d.ts.map +1 -1
  37. package/dist/communication/message-bus.js +135 -50
  38. package/dist/communication/message-bus.js.map +1 -1
  39. package/dist/communication/redis-blackboard.d.ts +11 -5
  40. package/dist/communication/redis-blackboard.d.ts.map +1 -1
  41. package/dist/communication/redis-blackboard.js +159 -116
  42. package/dist/communication/redis-blackboard.js.map +1 -1
  43. package/dist/communication/redis-event-emitter.d.ts +12 -0
  44. package/dist/communication/redis-event-emitter.d.ts.map +1 -1
  45. package/dist/communication/redis-event-emitter.js +96 -54
  46. package/dist/communication/redis-event-emitter.js.map +1 -1
  47. package/dist/communication/redis-message-bus.d.ts +11 -6
  48. package/dist/communication/redis-message-bus.d.ts.map +1 -1
  49. package/dist/communication/redis-message-bus.js +88 -77
  50. package/dist/communication/redis-message-bus.js.map +1 -1
  51. package/dist/coordinator.d.ts +7 -41
  52. package/dist/coordinator.d.ts.map +1 -1
  53. package/dist/coordinator.js +17 -340
  54. package/dist/coordinator.js.map +1 -1
  55. package/dist/distributed/distributed-coordinator.d.ts +54 -51
  56. package/dist/distributed/distributed-coordinator.d.ts.map +1 -1
  57. package/dist/distributed/distributed-coordinator.js +166 -284
  58. package/dist/distributed/distributed-coordinator.js.map +1 -1
  59. package/dist/distributed/index.d.ts +1 -1
  60. package/dist/distributed/index.d.ts.map +1 -1
  61. package/dist/distributed/index.js +1 -1
  62. package/dist/distributed/index.js.map +1 -1
  63. package/dist/index.d.ts +4 -3
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +4 -3
  66. package/dist/index.js.map +1 -1
  67. package/dist/resources/circuit-breaker.d.ts.map +1 -1
  68. package/dist/resources/circuit-breaker.js +3 -4
  69. package/dist/resources/circuit-breaker.js.map +1 -1
  70. package/dist/shared/hierarchy.d.ts +21 -0
  71. package/dist/shared/hierarchy.d.ts.map +1 -0
  72. package/dist/shared/hierarchy.js +27 -0
  73. package/dist/shared/hierarchy.js.map +1 -0
  74. package/dist/shared/negotiation.d.ts +27 -0
  75. package/dist/shared/negotiation.d.ts.map +1 -0
  76. package/dist/shared/negotiation.js +55 -0
  77. package/dist/shared/negotiation.js.map +1 -0
  78. package/dist/shared/voting.d.ts +6 -0
  79. package/dist/shared/voting.d.ts.map +1 -0
  80. package/dist/shared/voting.js +13 -0
  81. package/dist/shared/voting.js.map +1 -0
  82. package/dist/strategies/consensus.d.ts +12 -0
  83. package/dist/strategies/consensus.d.ts.map +1 -1
  84. package/dist/strategies/consensus.js +75 -47
  85. package/dist/strategies/consensus.js.map +1 -1
  86. package/dist/strategies/debate.d.ts.map +1 -1
  87. package/dist/strategies/debate.js +18 -8
  88. package/dist/strategies/debate.js.map +1 -1
  89. package/dist/strategies/hierarchical.d.ts.map +1 -1
  90. package/dist/strategies/hierarchical.js +29 -14
  91. package/dist/strategies/hierarchical.js.map +1 -1
  92. package/dist/strategies/negotiation/approval.d.ts.map +1 -1
  93. package/dist/strategies/negotiation/approval.js +22 -19
  94. package/dist/strategies/negotiation/approval.js.map +1 -1
  95. package/dist/strategies/negotiation-strategy.d.ts +24 -2
  96. package/dist/strategies/negotiation-strategy.d.ts.map +1 -1
  97. package/dist/strategies/negotiation-strategy.js +276 -141
  98. package/dist/strategies/negotiation-strategy.js.map +1 -1
  99. package/dist/strategies/pipeline.js +6 -6
  100. package/dist/strategies/pipeline.js.map +1 -1
  101. package/dist/swarm.d.ts +25 -11
  102. package/dist/swarm.d.ts.map +1 -1
  103. package/dist/swarm.js +195 -121
  104. package/dist/swarm.js.map +1 -1
  105. package/dist/tools/blackboard.d.ts +1 -1
  106. package/dist/tools/blackboard.d.ts.map +1 -1
  107. package/dist/tools/blackboard.js +26 -12
  108. package/dist/tools/blackboard.js.map +1 -1
  109. package/dist/tools/delegation.d.ts +17 -4
  110. package/dist/tools/delegation.d.ts.map +1 -1
  111. package/dist/tools/delegation.js +95 -88
  112. package/dist/tools/delegation.js.map +1 -1
  113. package/dist/tools/index.d.ts +3 -1
  114. package/dist/tools/index.d.ts.map +1 -1
  115. package/dist/tools/index.js +9 -4
  116. package/dist/tools/index.js.map +1 -1
  117. package/dist/tools/messaging.d.ts +38 -6
  118. package/dist/tools/messaging.d.ts.map +1 -1
  119. package/dist/tools/messaging.js +118 -41
  120. package/dist/tools/messaging.js.map +1 -1
  121. package/dist/tools/negotiation.d.ts +8 -4
  122. package/dist/tools/negotiation.d.ts.map +1 -1
  123. package/dist/tools/negotiation.js +138 -115
  124. package/dist/tools/negotiation.js.map +1 -1
  125. package/dist/tools/voting.d.ts +3 -0
  126. package/dist/tools/voting.d.ts.map +1 -1
  127. package/dist/tools/voting.js +13 -12
  128. package/dist/tools/voting.js.map +1 -1
  129. package/dist/utils/concurrency.d.ts +10 -0
  130. package/dist/utils/concurrency.d.ts.map +1 -0
  131. package/dist/utils/concurrency.js +28 -0
  132. package/dist/utils/concurrency.js.map +1 -0
  133. package/dist/utils/invoke.d.ts +2 -0
  134. package/dist/utils/invoke.d.ts.map +1 -0
  135. package/dist/utils/invoke.js +19 -0
  136. package/dist/utils/invoke.js.map +1 -0
  137. package/dist/workflow/swarm-node.d.ts.map +1 -1
  138. package/dist/workflow/swarm-node.js +55 -98
  139. package/dist/workflow/swarm-node.js.map +1 -1
  140. package/package.json +16 -14
@@ -0,0 +1,455 @@
1
+ import { nanoid } from 'nanoid';
2
+ import { getLogger } from '@cogitator-ai/core';
3
+ import { ResourceTracker } from './resources/tracker.js';
4
+ import { CircuitBreaker } from './resources/circuit-breaker.js';
5
+ import { buildSwarmAgents } from './agents.js';
6
+ import { runWithConcurrency } from './utils/concurrency.js';
7
+ import { createDelegationTools } from './tools/delegation.js';
8
+ import { createNegotiationTools } from './tools/negotiation.js';
9
+ /**
10
+ * Shared coordination logic for local and distributed swarms: agent registry, budgets,
11
+ * circuit breaking, error recovery, pause/abort, parallel scheduling and observability.
12
+ * Subclasses only decide how a single agent turn is executed.
13
+ */
14
+ export class BaseSwarmCoordinator {
15
+ config;
16
+ swarmId;
17
+ agents;
18
+ communication;
19
+ resourceTracker;
20
+ saveHistory = true;
21
+ circuitBreaker;
22
+ limitedAgents = new Map();
23
+ injectedTools = new Map();
24
+ abortController = new AbortController();
25
+ runScope = {};
26
+ paused = false;
27
+ constructor(config, swarmId, communication) {
28
+ this.config = config;
29
+ this.swarmId = swarmId;
30
+ this.communication = communication;
31
+ this.agents = buildSwarmAgents(config);
32
+ this.resourceTracker = new ResourceTracker(config.resources ?? {});
33
+ if (config.errorHandling?.circuitBreaker?.enabled) {
34
+ this.circuitBreaker = new CircuitBreaker({
35
+ threshold: config.errorHandling.circuitBreaker.threshold,
36
+ resetTimeout: config.errorHandling.circuitBreaker.resetTimeout,
37
+ });
38
+ }
39
+ this.wireObservability();
40
+ }
41
+ /**
42
+ * Hook for engines that need asynchronous setup before the first agent run.
43
+ */
44
+ async prepare() { }
45
+ get messageBus() {
46
+ return this.communication.messageBus;
47
+ }
48
+ get blackboard() {
49
+ return this.communication.blackboard;
50
+ }
51
+ get events() {
52
+ return this.communication.events;
53
+ }
54
+ setSaveHistory(value) {
55
+ this.saveHistory = value;
56
+ }
57
+ getSwarmId() {
58
+ return this.swarmId;
59
+ }
60
+ getAgent(name) {
61
+ return this.agents.get(name);
62
+ }
63
+ getAgents() {
64
+ return Array.from(this.agents.values());
65
+ }
66
+ getAgentsByRole(role) {
67
+ return this.getAgents().filter((a) => a.metadata.role === role);
68
+ }
69
+ getResourceUsage() {
70
+ return this.resourceTracker.getUsage();
71
+ }
72
+ /**
73
+ * Start a new swarm run: resource budgets are per run, so usage counters restart here.
74
+ */
75
+ beginRun(scope = {}) {
76
+ this.runScope = scope;
77
+ this.resourceTracker.reset();
78
+ }
79
+ endRun() {
80
+ this.runScope = {};
81
+ }
82
+ pause() {
83
+ this.paused = true;
84
+ }
85
+ resume() {
86
+ this.paused = false;
87
+ }
88
+ /**
89
+ * Abort the swarm: pending agent runs are rejected and in-flight runs are cancelled.
90
+ */
91
+ abort() {
92
+ this.abortController.abort(new Error('Swarm execution aborted'));
93
+ }
94
+ isAborted() {
95
+ return this.abortController.signal.aborted;
96
+ }
97
+ isPaused() {
98
+ return this.paused;
99
+ }
100
+ reset() {
101
+ this.abortController = new AbortController();
102
+ this.paused = false;
103
+ this.runScope = {};
104
+ this.resourceTracker.reset();
105
+ this.circuitBreaker?.reset();
106
+ for (const agent of this.agents.values()) {
107
+ agent.state = 'idle';
108
+ agent.lastResult = undefined;
109
+ agent.messageCount = 0;
110
+ agent.tokenCount = 0;
111
+ }
112
+ this.messageBus.clear();
113
+ this.blackboard.clear();
114
+ }
115
+ async runAgent(agentName, input, context, options) {
116
+ return this.runAgentWithRecovery(agentName, input, context, options ?? {}, new Set());
117
+ }
118
+ async runAgentsParallel(agents, maxConcurrency) {
119
+ const concurrency = Math.max(1, maxConcurrency ?? this.config.resources?.maxConcurrency ?? 4);
120
+ const tolerateFailures = this.config.errorHandling?.onAgentFailure === 'skip' ||
121
+ this.config.errorHandling?.partialResults === true;
122
+ const outcomes = await runWithConcurrency(agents, concurrency, ({ name, input, context }) => this.runAgent(name, input, context), { stopOnFailure: !tolerateFailures });
123
+ const results = new Map();
124
+ let firstError;
125
+ let failures = 0;
126
+ outcomes.forEach((outcome, index) => {
127
+ if (!outcome)
128
+ return;
129
+ if (outcome.status === 'fulfilled') {
130
+ results.set(agents[index].name, outcome.value);
131
+ }
132
+ else {
133
+ failures++;
134
+ firstError ??= outcome.reason;
135
+ }
136
+ });
137
+ if (failures > 0 && (!tolerateFailures || results.size === 0)) {
138
+ throw firstError;
139
+ }
140
+ return results;
141
+ }
142
+ async runAgentWithRecovery(agentName, input, context, options, failoverChain) {
143
+ const swarmAgent = this.requireAgent(agentName);
144
+ await this.ensureRunnable();
145
+ try {
146
+ return await this.executeAgent(swarmAgent, input, context, options);
147
+ }
148
+ catch (error) {
149
+ if (!this.config.errorHandling || this.isCancelled()) {
150
+ throw error;
151
+ }
152
+ return this.handleAgentError(swarmAgent, input, context, options, toError(error), failoverChain);
153
+ }
154
+ }
155
+ requireAgent(agentName) {
156
+ const swarmAgent = this.agents.get(agentName);
157
+ if (!swarmAgent) {
158
+ throw new Error(`Agent '${agentName}' not found in swarm`);
159
+ }
160
+ return swarmAgent;
161
+ }
162
+ async ensureRunnable() {
163
+ await this.prepare();
164
+ if (this.circuitBreaker && !this.circuitBreaker.canExecute()) {
165
+ throw new Error(`Circuit breaker is open for swarm '${this.config.name}'`);
166
+ }
167
+ if (!this.resourceTracker.isWithinBudget()) {
168
+ throw new Error('Swarm resource budget exceeded');
169
+ }
170
+ while (this.paused && !this.isCancelled()) {
171
+ await new Promise((r) => setTimeout(r, 100));
172
+ }
173
+ if (this.isCancelled()) {
174
+ throw new Error('Swarm execution aborted');
175
+ }
176
+ }
177
+ isCancelled() {
178
+ return this.abortController.signal.aborted || this.runScope.signal?.aborted === true;
179
+ }
180
+ currentSignal() {
181
+ const runSignal = this.runScope.signal;
182
+ return runSignal
183
+ ? AbortSignal.any([this.abortController.signal, runSignal])
184
+ : this.abortController.signal;
185
+ }
186
+ async executeAgent(swarmAgent, input, context, options) {
187
+ const agentName = swarmAgent.agent.name;
188
+ this.setAgentState(agentName, 'running');
189
+ this.messageBus.resetTurnCounts(agentName);
190
+ this.events.emit('agent:start', { agentName, input }, agentName);
191
+ try {
192
+ const incomingMessages = this.collectIncomingMessages(agentName);
193
+ const negotiationContext = this.buildNegotiationContext(agentName);
194
+ const result = await this.executeRun({
195
+ swarmAgent,
196
+ agent: this.getRunnableAgent(swarmAgent, options.maxTokens),
197
+ input,
198
+ signal: this.currentSignal(),
199
+ saveHistory: this.saveHistory,
200
+ threadId: this.runScope.threadId ? `${this.runScope.threadId}:${agentName}` : undefined,
201
+ timeout: minDefined(this.config.resources?.perAgent?.timeout, options.timeout),
202
+ context: {
203
+ ...context,
204
+ swarmContext: {
205
+ swarmId: this.swarmId,
206
+ swarmName: this.config.name,
207
+ agentRole: swarmAgent.metadata.role,
208
+ availableAgents: Array.from(this.agents.keys()).filter((n) => n !== agentName),
209
+ },
210
+ ...(incomingMessages && { _incomingMessages: incomingMessages }),
211
+ ...(negotiationContext && { _negotiation: negotiationContext }),
212
+ },
213
+ });
214
+ this.setAgentState(agentName, 'completed');
215
+ swarmAgent.lastResult = result;
216
+ swarmAgent.tokenCount += result.usage.totalTokens;
217
+ this.resourceTracker.trackAgentRun(agentName, result);
218
+ this.circuitBreaker?.recordSuccess();
219
+ this.events.emit('agent:complete', { agentName, result }, agentName);
220
+ return result;
221
+ }
222
+ catch (error) {
223
+ this.setAgentState(agentName, 'failed');
224
+ this.circuitBreaker?.recordFailure();
225
+ this.events.emit('agent:error', { agentName, error }, agentName);
226
+ throw error;
227
+ }
228
+ }
229
+ /**
230
+ * Tools a strategy needs an agent to have: the supervisor of a hierarchical swarm gets the
231
+ * delegation tools, negotiating agents get the negotiation tools. Tools the agent already
232
+ * defines (by name) are left untouched. Engines that cannot ship tool implementations
233
+ * (e.g. remote workers) override this.
234
+ */
235
+ strategyTools(swarmAgent) {
236
+ const name = swarmAgent.agent.name;
237
+ const role = swarmAgent.metadata.role;
238
+ switch (this.config.strategy) {
239
+ case 'hierarchical':
240
+ return role === 'supervisor'
241
+ ? Object.values(createDelegationTools(this, this.blackboard, name))
242
+ : [];
243
+ case 'negotiation':
244
+ return role === 'supervisor' || role === 'moderator'
245
+ ? []
246
+ : Object.values(createNegotiationTools(this.blackboard, this.events, name, swarmAgent.metadata.weight ?? this.config.negotiation?.weights?.[name] ?? 1));
247
+ default:
248
+ return [];
249
+ }
250
+ }
251
+ missingStrategyTools(swarmAgent) {
252
+ let tools = this.injectedTools.get(swarmAgent.agent.name);
253
+ if (!tools) {
254
+ const existing = new Set(swarmAgent.agent.tools.map((t) => t.name));
255
+ tools = this.strategyTools(swarmAgent).filter((t) => !existing.has(t.name));
256
+ this.injectedTools.set(swarmAgent.agent.name, tools);
257
+ }
258
+ return tools;
259
+ }
260
+ /**
261
+ * The agent actually executed for a turn: a cached clone when strategy tools,
262
+ * `resources.perAgent` limits or per-turn token caps apply, otherwise the agent itself.
263
+ */
264
+ getRunnableAgent(swarmAgent, turnMaxTokens) {
265
+ const perAgent = this.config.resources?.perAgent;
266
+ const { maxIterations, maxTokens } = swarmAgent.agent.config;
267
+ const iterationLimit = minDefined(maxIterations, perAgent?.maxIterations);
268
+ const tokenLimit = minDefined(maxTokens, perAgent?.maxTokens, turnMaxTokens);
269
+ const extraTools = this.missingStrategyTools(swarmAgent);
270
+ const overrides = {};
271
+ if (iterationLimit !== maxIterations)
272
+ overrides.maxIterations = iterationLimit;
273
+ if (tokenLimit !== maxTokens)
274
+ overrides.maxTokens = tokenLimit;
275
+ if (extraTools.length > 0)
276
+ overrides.tools = [...swarmAgent.agent.tools, ...extraTools];
277
+ if (Object.keys(overrides).length === 0)
278
+ return swarmAgent.agent;
279
+ const cacheKey = `${swarmAgent.agent.name}|${iterationLimit ?? ''}|${tokenLimit ?? ''}`;
280
+ let runnable = this.limitedAgents.get(cacheKey);
281
+ if (!runnable) {
282
+ runnable = swarmAgent.agent.clone(overrides);
283
+ this.limitedAgents.set(cacheKey, runnable);
284
+ }
285
+ return runnable;
286
+ }
287
+ async handleAgentError(swarmAgent, input, context, options, error, failoverChain) {
288
+ const errorConfig = this.config.errorHandling;
289
+ const agentName = swarmAgent.agent.name;
290
+ switch (errorConfig.onAgentFailure) {
291
+ case 'retry':
292
+ if (errorConfig.retry && errorConfig.retry.maxRetries > 0) {
293
+ return this.retryAgentRun(swarmAgent, input, context, options, errorConfig.retry, error);
294
+ }
295
+ throw error;
296
+ case 'failover': {
297
+ failoverChain.add(agentName);
298
+ const backupAgentName = errorConfig.failover?.[agentName];
299
+ if (backupAgentName && !failoverChain.has(backupAgentName)) {
300
+ return this.runAgentWithRecovery(backupAgentName, input, context, options, failoverChain);
301
+ }
302
+ throw error;
303
+ }
304
+ case 'skip':
305
+ return {
306
+ output: '',
307
+ runId: `run_skipped_${nanoid(8)}`,
308
+ agentId: swarmAgent.agent.id,
309
+ threadId: '',
310
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0, cost: 0, duration: 0 },
311
+ toolCalls: [],
312
+ messages: [],
313
+ trace: { traceId: `trace_${nanoid(12)}`, spans: [] },
314
+ };
315
+ case 'abort':
316
+ default:
317
+ throw error;
318
+ }
319
+ }
320
+ async retryAgentRun(swarmAgent, input, context, options, retryConfig, initialError) {
321
+ const { maxRetries, backoff, initialDelay = 1000, maxDelay = 30000 } = retryConfig;
322
+ let lastError = initialError;
323
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
324
+ await sleep(computeBackoffDelay(backoff, attempt, initialDelay, maxDelay));
325
+ await this.ensureRunnable();
326
+ try {
327
+ return await this.executeAgent(swarmAgent, input, context, options);
328
+ }
329
+ catch (error) {
330
+ lastError = toError(error);
331
+ if (this.isCancelled())
332
+ throw lastError;
333
+ }
334
+ }
335
+ throw new Error(`Agent '${swarmAgent.agent.name}' failed after ${maxRetries} retries: ${lastError.message}`, { cause: lastError });
336
+ }
337
+ setAgentState(agentName, state) {
338
+ const agent = this.agents.get(agentName);
339
+ if (agent) {
340
+ agent.state = state;
341
+ }
342
+ }
343
+ wireObservability() {
344
+ const observability = this.config.observability;
345
+ const logger = getLogger();
346
+ this.messageBus.onMessage((message) => {
347
+ const sender = this.agents.get(message.from);
348
+ if (sender)
349
+ sender.messageCount++;
350
+ this.events.emit('message:sent', {
351
+ id: message.id,
352
+ from: message.from,
353
+ to: message.to,
354
+ type: message.type,
355
+ channel: message.channel,
356
+ content: message.content,
357
+ }, message.from);
358
+ if (observability?.messageLogging) {
359
+ logger.info('[Swarm] message', {
360
+ swarm: this.config.name,
361
+ from: message.from,
362
+ to: message.to,
363
+ type: message.type,
364
+ channel: message.channel,
365
+ content: message.content,
366
+ });
367
+ }
368
+ });
369
+ this.blackboard.onWrite((write) => {
370
+ this.events.emit('blackboard:write', {
371
+ section: write.section,
372
+ version: write.version,
373
+ writtenBy: write.agentName,
374
+ deleted: write.deleted ?? false,
375
+ }, write.agentName);
376
+ if (observability?.blackboardLogging) {
377
+ logger.info('[Swarm] blackboard write', {
378
+ swarm: this.config.name,
379
+ section: write.section,
380
+ version: write.version,
381
+ writtenBy: write.agentName,
382
+ deleted: write.deleted ?? false,
383
+ });
384
+ }
385
+ });
386
+ }
387
+ collectIncomingMessages(agentName) {
388
+ const unread = this.messageBus.getUnreadMessages(agentName);
389
+ if (unread.length === 0)
390
+ return null;
391
+ const ids = unread.map((m) => m.id);
392
+ this.messageBus.markAsRead(agentName, ids);
393
+ this.events.emit('message:received', { agentName, count: unread.length, messageIds: ids }, agentName);
394
+ const formatted = unread.map((m) => {
395
+ const timestamp = new Date(m.timestamp).toISOString();
396
+ return `[${timestamp}] ${m.from} → ${m.to}: ${m.content}`;
397
+ });
398
+ return `\n--- Incoming Messages ---\n${formatted.join('\n')}\n---`;
399
+ }
400
+ buildNegotiationContext(agentName) {
401
+ if (!this.blackboard.has('negotiation'))
402
+ return null;
403
+ const state = this.blackboard.read('negotiation');
404
+ const pendingOffers = state.offers.filter((o) => o.status === 'pending');
405
+ const offersToMe = pendingOffers.filter((o) => {
406
+ const recipients = Array.isArray(o.to) ? o.to : [o.to];
407
+ return recipients.includes(agentName);
408
+ });
409
+ const myOffers = pendingOffers.filter((o) => o.from === agentName);
410
+ return {
411
+ phase: state.phase,
412
+ round: state.round,
413
+ maxRounds: state.maxRounds,
414
+ isMyTurn: state.currentTurn === agentName || state.currentTurn === null,
415
+ currentTurn: state.currentTurn,
416
+ offersAwaitingMyResponse: offersToMe.map((o) => ({
417
+ id: o.id,
418
+ from: o.from,
419
+ reasoning: o.reasoning,
420
+ terms: o.terms,
421
+ })),
422
+ myPendingOffers: myOffers.map((o) => ({
423
+ id: o.id,
424
+ to: o.to,
425
+ status: o.status,
426
+ })),
427
+ myInterests: state.interests[agentName],
428
+ coalitions: state.coalitions.filter((c) => c.members.includes(agentName) || c.status === 'forming'),
429
+ hasAgreement: !!state.agreement,
430
+ };
431
+ }
432
+ }
433
+ export function computeBackoffDelay(backoff, attempt, initialDelay, maxDelay) {
434
+ switch (backoff) {
435
+ case 'exponential':
436
+ return Math.min(initialDelay * Math.pow(2, attempt - 1), maxDelay);
437
+ case 'linear':
438
+ return Math.min(initialDelay * attempt, maxDelay);
439
+ default:
440
+ return Math.min(initialDelay, maxDelay);
441
+ }
442
+ }
443
+ function minDefined(...values) {
444
+ const defined = values.filter((v) => v !== undefined);
445
+ return defined.length > 0 ? Math.min(...defined) : undefined;
446
+ }
447
+ function sleep(ms) {
448
+ if (ms <= 0)
449
+ return Promise.resolve();
450
+ return new Promise((resolve) => setTimeout(resolve, ms));
451
+ }
452
+ export function toError(error) {
453
+ return error instanceof Error ? error : new Error(String(error));
454
+ }
455
+ //# sourceMappingURL=base-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-coordinator.js","sourceRoot":"","sources":["../src/base-coordinator.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,35 @@
2
2
  * Blackboard for shared state between agents
3
3
  */
4
4
  import type { Blackboard, BlackboardConfig, BlackboardSection, BlackboardHistoryEntry } from '@cogitator-ai/types';
5
- export declare class InMemoryBlackboard implements Blackboard {
5
+ export type BlackboardSectionHandler = (data: unknown, agentName: string) => void;
6
+ export interface BlackboardWrite {
7
+ section: string;
8
+ data: unknown;
9
+ agentName: string;
10
+ version: number;
11
+ deleted?: boolean;
12
+ }
13
+ export type BlackboardWriteListener = (write: BlackboardWrite) => void;
14
+ /**
15
+ * Blackboard that exposes a bus-wide write listener (used for swarm observability).
16
+ */
17
+ export interface ObservableBlackboard extends Blackboard {
18
+ onWrite(listener: BlackboardWriteListener): () => void;
19
+ }
20
+ export declare function isObservableBlackboard(blackboard: Blackboard): blackboard is ObservableBlackboard;
21
+ export declare class BlackboardListeners {
22
+ private readonly label;
23
+ private sectionHandlers;
24
+ private writeListeners;
25
+ constructor(label: string);
26
+ subscribe(section: string, handler: BlackboardSectionHandler): () => void;
27
+ onWrite(listener: BlackboardWriteListener): () => void;
28
+ notify(write: BlackboardWrite): void;
29
+ }
30
+ export declare class InMemoryBlackboard implements ObservableBlackboard {
6
31
  private sections;
7
32
  private history;
8
- private subscriptions;
33
+ private listeners;
9
34
  private config;
10
35
  constructor(config: BlackboardConfig);
11
36
  read<T = unknown>(section: string): T;
@@ -13,12 +38,17 @@ export declare class InMemoryBlackboard implements Blackboard {
13
38
  append<T>(section: string, item: T, agentName: string): void;
14
39
  has(section: string): boolean;
15
40
  delete(section: string): void;
16
- subscribe(section: string, handler: (data: unknown, agentName: string) => void): () => void;
41
+ subscribe(section: string, handler: BlackboardSectionHandler): () => void;
42
+ onWrite(listener: BlackboardWriteListener): () => void;
17
43
  getSections(): string[];
18
44
  getSection<T = unknown>(section: string): BlackboardSection<T> | undefined;
19
45
  getHistory(section: string): BlackboardHistoryEntry[];
46
+ /**
47
+ * Remove all sections and history. Subscriptions are preserved so listeners
48
+ * keep working across swarm resets.
49
+ */
20
50
  clear(): void;
21
- private notifySubscribers;
51
+ private assertEnabled;
22
52
  }
23
53
  export declare function createBlackboard(config?: Partial<BlackboardConfig>): Blackboard;
24
54
  //# sourceMappingURL=blackboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blackboard.d.ts","sourceRoot":"","sources":["../../src/communication/blackboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,aAAa,CAAsE;IAC3F,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAyBpC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IAWrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAkC3D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB5D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAiB3F,WAAW,IAAI,MAAM,EAAE;IAIvB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS;IAI1E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIrD,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,iBAAiB;CAU1B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAO/E"}
1
+ {"version":3,"file":"blackboard.d.ts","sourceRoot":"","sources":["../../src/communication/blackboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,OAAO,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI,CAAC;CACxD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,IAAI,oBAAoB,CAEjG;AAED,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,eAAe,CAAoD;IAC3E,OAAO,CAAC,cAAc,CAAsC;gBAE/B,KAAK,EAAE,MAAM;IAE1C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAkBzE,OAAO,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAOtD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;CAUrC;AAED,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAyBpC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IASrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA2B3D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB5D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAe7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAIzE,OAAO,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAItD,WAAW,IAAI,MAAM,EAAE;IAIvB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS;IAI1E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIrD;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,aAAa;CAKtB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAO/E"}