@cogitator-ai/swarms 0.4.19 → 0.5.1

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 (154) 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 +89 -61
  9. package/dist/assessor/assessor.js.map +1 -1
  10. package/dist/assessor/role-matcher.d.ts +6 -24
  11. package/dist/assessor/role-matcher.d.ts.map +1 -1
  12. package/dist/assessor/role-matcher.js +9 -37
  13. package/dist/assessor/role-matcher.js.map +1 -1
  14. package/dist/assessor/scoring.js +1 -1
  15. package/dist/assessor/scoring.js.map +1 -1
  16. package/dist/assessor/task-analyzer.d.ts.map +1 -1
  17. package/dist/assessor/task-analyzer.js +4 -19
  18. package/dist/assessor/task-analyzer.js.map +1 -1
  19. package/dist/base-coordinator.d.ts +117 -0
  20. package/dist/base-coordinator.d.ts.map +1 -0
  21. package/dist/base-coordinator.js +455 -0
  22. package/dist/base-coordinator.js.map +1 -0
  23. package/dist/communication/blackboard.d.ts +34 -4
  24. package/dist/communication/blackboard.d.ts.map +1 -1
  25. package/dist/communication/blackboard.js +80 -41
  26. package/dist/communication/blackboard.js.map +1 -1
  27. package/dist/communication/event-emitter.d.ts +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 +12 -5
  40. package/dist/communication/redis-blackboard.d.ts.map +1 -1
  41. package/dist/communication/redis-blackboard.js +214 -94
  42. package/dist/communication/redis-blackboard.js.map +1 -1
  43. package/dist/communication/redis-event-emitter.d.ts +14 -1
  44. package/dist/communication/redis-event-emitter.d.ts.map +1 -1
  45. package/dist/communication/redis-event-emitter.js +107 -47
  46. package/dist/communication/redis-event-emitter.js.map +1 -1
  47. package/dist/communication/redis-message-bus.d.ts +13 -6
  48. package/dist/communication/redis-message-bus.d.ts.map +1 -1
  49. package/dist/communication/redis-message-bus.js +93 -66
  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 -336
  54. package/dist/coordinator.js.map +1 -1
  55. package/dist/distributed/distributed-coordinator.d.ts +55 -49
  56. package/dist/distributed/distributed-coordinator.d.ts.map +1 -1
  57. package/dist/distributed/distributed-coordinator.js +166 -253
  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 +1 -6
  68. package/dist/resources/circuit-breaker.d.ts.map +1 -1
  69. package/dist/resources/circuit-breaker.js +14 -17
  70. package/dist/resources/circuit-breaker.js.map +1 -1
  71. package/dist/resources/index.d.ts.map +1 -1
  72. package/dist/resources/index.js.map +1 -1
  73. package/dist/resources/tracker.d.ts.map +1 -1
  74. package/dist/resources/tracker.js +8 -5
  75. package/dist/resources/tracker.js.map +1 -1
  76. package/dist/shared/hierarchy.d.ts +21 -0
  77. package/dist/shared/hierarchy.d.ts.map +1 -0
  78. package/dist/shared/hierarchy.js +27 -0
  79. package/dist/shared/hierarchy.js.map +1 -0
  80. package/dist/shared/negotiation.d.ts +27 -0
  81. package/dist/shared/negotiation.d.ts.map +1 -0
  82. package/dist/shared/negotiation.js +55 -0
  83. package/dist/shared/negotiation.js.map +1 -0
  84. package/dist/shared/voting.d.ts +6 -0
  85. package/dist/shared/voting.d.ts.map +1 -0
  86. package/dist/shared/voting.js +13 -0
  87. package/dist/shared/voting.js.map +1 -0
  88. package/dist/strategies/auction.js +2 -3
  89. package/dist/strategies/auction.js.map +1 -1
  90. package/dist/strategies/consensus.d.ts +12 -0
  91. package/dist/strategies/consensus.d.ts.map +1 -1
  92. package/dist/strategies/consensus.js +81 -40
  93. package/dist/strategies/consensus.js.map +1 -1
  94. package/dist/strategies/debate.d.ts.map +1 -1
  95. package/dist/strategies/debate.js +19 -9
  96. package/dist/strategies/debate.js.map +1 -1
  97. package/dist/strategies/hierarchical.d.ts.map +1 -1
  98. package/dist/strategies/hierarchical.js +29 -12
  99. package/dist/strategies/hierarchical.js.map +1 -1
  100. package/dist/strategies/index.d.ts +8 -7
  101. package/dist/strategies/index.d.ts.map +1 -1
  102. package/dist/strategies/index.js +1 -7
  103. package/dist/strategies/index.js.map +1 -1
  104. package/dist/strategies/negotiation/approval.d.ts.map +1 -1
  105. package/dist/strategies/negotiation/approval.js +47 -21
  106. package/dist/strategies/negotiation/approval.js.map +1 -1
  107. package/dist/strategies/negotiation/convergence.js +1 -1
  108. package/dist/strategies/negotiation-strategy.d.ts +24 -2
  109. package/dist/strategies/negotiation-strategy.d.ts.map +1 -1
  110. package/dist/strategies/negotiation-strategy.js +281 -158
  111. package/dist/strategies/negotiation-strategy.js.map +1 -1
  112. package/dist/strategies/pipeline.d.ts.map +1 -1
  113. package/dist/strategies/pipeline.js +19 -11
  114. package/dist/strategies/pipeline.js.map +1 -1
  115. package/dist/swarm.d.ts +24 -15
  116. package/dist/swarm.d.ts.map +1 -1
  117. package/dist/swarm.js +193 -116
  118. package/dist/swarm.js.map +1 -1
  119. package/dist/tools/blackboard.d.ts +1 -1
  120. package/dist/tools/blackboard.d.ts.map +1 -1
  121. package/dist/tools/blackboard.js +26 -6
  122. package/dist/tools/blackboard.js.map +1 -1
  123. package/dist/tools/delegation.d.ts +23 -4
  124. package/dist/tools/delegation.d.ts.map +1 -1
  125. package/dist/tools/delegation.js +116 -85
  126. package/dist/tools/delegation.js.map +1 -1
  127. package/dist/tools/index.d.ts +3 -1
  128. package/dist/tools/index.d.ts.map +1 -1
  129. package/dist/tools/index.js +19 -4
  130. package/dist/tools/index.js.map +1 -1
  131. package/dist/tools/messaging.d.ts +36 -7
  132. package/dist/tools/messaging.d.ts.map +1 -1
  133. package/dist/tools/messaging.js +122 -46
  134. package/dist/tools/messaging.js.map +1 -1
  135. package/dist/tools/negotiation.d.ts +8 -4
  136. package/dist/tools/negotiation.d.ts.map +1 -1
  137. package/dist/tools/negotiation.js +135 -85
  138. package/dist/tools/negotiation.js.map +1 -1
  139. package/dist/tools/voting.d.ts +3 -0
  140. package/dist/tools/voting.d.ts.map +1 -1
  141. package/dist/tools/voting.js +13 -12
  142. package/dist/tools/voting.js.map +1 -1
  143. package/dist/utils/concurrency.d.ts +10 -0
  144. package/dist/utils/concurrency.d.ts.map +1 -0
  145. package/dist/utils/concurrency.js +28 -0
  146. package/dist/utils/concurrency.js.map +1 -0
  147. package/dist/utils/invoke.d.ts +2 -0
  148. package/dist/utils/invoke.d.ts.map +1 -0
  149. package/dist/utils/invoke.js +19 -0
  150. package/dist/utils/invoke.js.map +1 -0
  151. package/dist/workflow/swarm-node.d.ts.map +1 -1
  152. package/dist/workflow/swarm-node.js +56 -71
  153. package/dist/workflow/swarm-node.js.map +1 -1
  154. package/package.json +6 -6
@@ -1,6 +1,4 @@
1
- /**
2
- * Circuit breaker for preventing cascading failures
3
- */
1
+ import { invokeSafely } from '../utils/invoke.js';
4
2
  export class CircuitBreaker {
5
3
  config;
6
4
  state = 'closed';
@@ -10,24 +8,20 @@ export class CircuitBreaker {
10
8
  stateChangeListeners = [];
11
9
  constructor(config) {
12
10
  this.config = {
13
- successThreshold: 1,
14
- ...config,
11
+ threshold: config.threshold,
12
+ resetTimeout: config.resetTimeout,
13
+ successThreshold: config.successThreshold ?? 1,
15
14
  };
16
15
  }
17
16
  getState() {
18
- if (this.state === 'open') {
19
- const now = Date.now();
20
- if (now - this.lastFailureTime >= this.config.resetTimeout) {
21
- this.setState('half-open');
22
- }
23
- }
24
17
  return this.state;
25
18
  }
26
19
  canExecute() {
27
- const state = this.getState();
28
- return state === 'closed' || state === 'half-open';
20
+ this.checkOpenTimeout();
21
+ return this.state === 'closed' || this.state === 'half-open';
29
22
  }
30
23
  recordSuccess() {
24
+ this.checkOpenTimeout();
31
25
  if (this.state === 'half-open') {
32
26
  this.successCount++;
33
27
  if (this.successCount >= this.config.successThreshold) {
@@ -66,13 +60,16 @@ export class CircuitBreaker {
66
60
  }
67
61
  };
68
62
  }
63
+ checkOpenTimeout() {
64
+ if (this.state === 'open' && Date.now() - this.lastFailureTime >= this.config.resetTimeout) {
65
+ this.setState('half-open');
66
+ }
67
+ }
69
68
  setState(newState) {
70
69
  if (this.state !== newState) {
71
70
  this.state = newState;
72
- for (const listener of this.stateChangeListeners) {
73
- void Promise.resolve(listener(newState)).catch((error) => {
74
- console.warn('[CircuitBreaker] State change listener error:', error);
75
- });
71
+ for (const listener of [...this.stateChangeListeners]) {
72
+ invokeSafely(listener, [newState], '[CircuitBreaker] State change listener error');
76
73
  }
77
74
  }
78
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/resources/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/resources/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/resources/tracker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9F,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAGd;gBAEQ,MAAM,GAAE,mBAAwB;IAK5C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAmBzD,cAAc,IAAI,OAAO;IAIzB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAmBrD,cAAc,IAAI,MAAM;IAIxB,kBAAkB,IAAI;QACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1B;IAYD,QAAQ,IAAI,kBAAkB;IAS9B,aAAa,CACX,SAAS,EAAE,MAAM,GAChB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAI/E,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/resources/tracker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9F,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAGd;gBAEQ,MAAM,GAAE,mBAAwB;IAK5C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAmBzD,cAAc,IAAI,OAAO;IAIzB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAmBrD,cAAc,IAAI,MAAM;IAIxB,kBAAkB,IAAI;QACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1B;IAiBD,QAAQ,IAAI,kBAAkB;IAW9B,aAAa,CACX,SAAS,EAAE,MAAM,GAChB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAK/E,KAAK,IAAI,IAAI;CAMd"}
@@ -52,11 +52,13 @@ export class ResourceTracker {
52
52
  }
53
53
  getRemainingBudget() {
54
54
  return {
55
- tokens: this.config.tokenBudget
55
+ tokens: this.config.tokenBudget !== undefined
56
56
  ? Math.max(0, this.config.tokenBudget - this.totalTokens)
57
57
  : undefined,
58
- cost: this.config.costLimit ? Math.max(0, this.config.costLimit - this.totalCost) : undefined,
59
- time: this.config.timeout
58
+ cost: this.config.costLimit !== undefined
59
+ ? Math.max(0, this.config.costLimit - this.totalCost)
60
+ : undefined,
61
+ time: this.config.timeout !== undefined
60
62
  ? Math.max(0, this.config.timeout - this.getElapsedTime())
61
63
  : undefined,
62
64
  };
@@ -66,11 +68,12 @@ export class ResourceTracker {
66
68
  totalTokens: this.totalTokens,
67
69
  totalCost: this.totalCost,
68
70
  elapsedTime: this.getElapsedTime(),
69
- agentUsage: new Map(this.agentUsage),
71
+ agentUsage: new Map(Array.from(this.agentUsage.entries()).map(([k, v]) => [k, { ...v }])),
70
72
  };
71
73
  }
72
74
  getAgentUsage(agentName) {
73
- return this.agentUsage.get(agentName);
75
+ const usage = this.agentUsage.get(agentName);
76
+ return usage ? { ...usage } : undefined;
74
77
  }
75
78
  reset() {
76
79
  this.startTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/resources/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/resources/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Blackboard, HierarchicalConfig } from '@cogitator-ai/types';
2
+ export declare const HIERARCHY_SECTION = "hierarchy";
3
+ /**
4
+ * Delegation policy published on the blackboard by the hierarchical strategy and enforced
5
+ * by delegation and messaging tools.
6
+ */
7
+ export interface HierarchyPolicy {
8
+ supervisor: string;
9
+ maxDelegationDepth: number;
10
+ workerCommunication: boolean;
11
+ routeThrough: NonNullable<HierarchicalConfig['routeThrough']>;
12
+ visibility: NonNullable<HierarchicalConfig['visibility']>;
13
+ /** Delegation depth of every agent that received a task (supervisor = 0) */
14
+ depths: Record<string, number>;
15
+ }
16
+ export declare function readHierarchyPolicy(blackboard: Blackboard): HierarchyPolicy | null;
17
+ /**
18
+ * Shape a worker output according to the configured supervisor visibility.
19
+ */
20
+ export declare function applyVisibility(output: string, visibility: HierarchyPolicy['visibility']): string | undefined;
21
+ //# sourceMappingURL=hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/shared/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,WAAW,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9D,UAAU,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAOlF;AAID;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,GACxC,MAAM,GAAG,SAAS,CAUpB"}
@@ -0,0 +1,27 @@
1
+ export const HIERARCHY_SECTION = 'hierarchy';
2
+ export function readHierarchyPolicy(blackboard) {
3
+ if (!blackboard.has(HIERARCHY_SECTION))
4
+ return null;
5
+ try {
6
+ return blackboard.read(HIERARCHY_SECTION);
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ const SUMMARY_LENGTH = 500;
13
+ /**
14
+ * Shape a worker output according to the configured supervisor visibility.
15
+ */
16
+ export function applyVisibility(output, visibility) {
17
+ switch (visibility) {
18
+ case 'none':
19
+ return undefined;
20
+ case 'summary':
21
+ return output.length > SUMMARY_LENGTH ? `${output.slice(0, SUMMARY_LENGTH)}…` : output;
22
+ case 'full':
23
+ default:
24
+ return output;
25
+ }
26
+ }
27
+ //# sourceMappingURL=hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/shared/hierarchy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAgB7C,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAkB,iBAAiB,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,UAAyC;IAEzC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACzF,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Blackboard, NegotiationOffer, NegotiationState } from '@cogitator-ai/types';
2
+ export declare const NEGOTIATION_SECTION = "negotiation";
3
+ export declare const NEGOTIATION_RULES_SECTION = "negotiation-rules";
4
+ /** Sender id used for compromise offers proposed by the strategy's mediator */
5
+ export declare const MEDIATOR_ID = "mediator";
6
+ /**
7
+ * Negotiation rules published by the strategy and enforced by the negotiation tools.
8
+ */
9
+ export interface NegotiationRules {
10
+ maxOffersPerRound?: number;
11
+ offerTimeout?: number;
12
+ allowCoalitions: boolean;
13
+ minCoalitionSize: number;
14
+ }
15
+ export declare function readNegotiationState(blackboard: Blackboard): NegotiationState | null;
16
+ export declare function readNegotiationRules(blackboard: Blackboard): NegotiationRules | null;
17
+ export declare function offerRecipients(offer: NegotiationOffer): string[];
18
+ export declare function offerParties(offer: NegotiationOffer): string[];
19
+ export declare function acceptanceAction(offerId: string): string;
20
+ /**
21
+ * Agents that accepted the offer, recorded in the turn history by `accept_offer`.
22
+ */
23
+ export declare function getOfferAcceptances(state: NegotiationState, offerId: string): string[];
24
+ export declare function isFullyAccepted(state: NegotiationState, offer: NegotiationOffer): boolean;
25
+ export declare function isOfferExpired(offer: NegotiationOffer, now?: number): boolean;
26
+ export declare function replaceOffer(state: NegotiationState, offerId: string, update: Partial<NegotiationOffer>): NegotiationState;
27
+ //# sourceMappingURL=negotiation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiation.d.ts","sourceRoot":"","sources":["../../src/shared/negotiation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,+EAA+E;AAC/E,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAOpF;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAOpF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAEjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAG9D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAGzF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,SAAa,GAAG,OAAO,CAEjF;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAChC,gBAAgB,CAKlB"}
@@ -0,0 +1,55 @@
1
+ export const NEGOTIATION_SECTION = 'negotiation';
2
+ export const NEGOTIATION_RULES_SECTION = 'negotiation-rules';
3
+ /** Sender id used for compromise offers proposed by the strategy's mediator */
4
+ export const MEDIATOR_ID = 'mediator';
5
+ export function readNegotiationState(blackboard) {
6
+ if (!blackboard.has(NEGOTIATION_SECTION))
7
+ return null;
8
+ try {
9
+ return blackboard.read(NEGOTIATION_SECTION);
10
+ }
11
+ catch {
12
+ return null;
13
+ }
14
+ }
15
+ export function readNegotiationRules(blackboard) {
16
+ if (!blackboard.has(NEGOTIATION_RULES_SECTION))
17
+ return null;
18
+ try {
19
+ return blackboard.read(NEGOTIATION_RULES_SECTION);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ export function offerRecipients(offer) {
26
+ return Array.isArray(offer.to) ? offer.to : [offer.to];
27
+ }
28
+ export function offerParties(offer) {
29
+ const recipients = offerRecipients(offer);
30
+ return offer.from === MEDIATOR_ID ? recipients : [offer.from, ...recipients];
31
+ }
32
+ export function acceptanceAction(offerId) {
33
+ return `accepted:${offerId}`;
34
+ }
35
+ /**
36
+ * Agents that accepted the offer, recorded in the turn history by `accept_offer`.
37
+ */
38
+ export function getOfferAcceptances(state, offerId) {
39
+ const action = acceptanceAction(offerId);
40
+ return Array.from(new Set(state.turnHistory.filter((t) => t.action === action).map((t) => t.agent)));
41
+ }
42
+ export function isFullyAccepted(state, offer) {
43
+ const accepted = new Set(getOfferAcceptances(state, offer.id));
44
+ return offerRecipients(offer).every((recipient) => accepted.has(recipient));
45
+ }
46
+ export function isOfferExpired(offer, now = Date.now()) {
47
+ return offer.expiresAt !== undefined && now > offer.expiresAt;
48
+ }
49
+ export function replaceOffer(state, offerId, update) {
50
+ return {
51
+ ...state,
52
+ offers: state.offers.map((o) => (o.id === offerId ? { ...o, ...update } : o)),
53
+ };
54
+ }
55
+ //# sourceMappingURL=negotiation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiation.js","sourceRoot":"","sources":["../../src/shared/negotiation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Canonical form of a decision used to compare votes: case-, markup- and
3
+ * punctuation-insensitive ("**Option A.**" and "option a" are the same decision).
4
+ */
5
+ export declare function normalizeDecision(decision: string): string;
6
+ //# sourceMappingURL=voting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/shared/voting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1D"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Canonical form of a decision used to compare votes: case-, markup- and
3
+ * punctuation-insensitive ("**Option A.**" and "option a" are the same decision).
4
+ */
5
+ export function normalizeDecision(decision) {
6
+ return decision
7
+ .toLowerCase()
8
+ .replace(/[*_`"'“”‘’[\]()]/g, '')
9
+ .replace(/[.!?,;:]+$/g, '')
10
+ .replace(/\s+/g, ' ')
11
+ .trim();
12
+ }
13
+ //# sourceMappingURL=voting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/shared/voting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,QAAQ;SACZ,WAAW,EAAE;SACb,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC"}
@@ -158,9 +158,8 @@ Be honest in your assessment. Only bid high if you're truly well-suited for the
158
158
  const scoreMatch = /SCORE:\s*([\d.]+)/i.exec(output);
159
159
  let score = 0.5;
160
160
  if (scoreMatch) {
161
- score = Math.min(1, Math.max(0, parseFloat(scoreMatch[1])));
162
- if (isNaN(score))
163
- score = 0.5;
161
+ const parsed = parseFloat(scoreMatch[1]);
162
+ score = isNaN(parsed) ? 0.5 : Math.min(1, Math.max(0, parsed));
164
163
  }
165
164
  const capMatch = /CAPABILITIES:\s*([^\n]+)/i.exec(output);
166
165
  let capabilities = agent.metadata.expertise ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"auction.js","sourceRoot":"","sources":["../../src/strategies/auction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auction.js","sourceRoot":"","sources":["../../src/strategies/auction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACvC,MAAM,CAAgB;IAE9B,YAAY,WAAsC,EAAE,MAAqB;QACvE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,CAAC;YACT,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5C,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YACjC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAC/B,SAAS,EACT;YACE,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,SAAS;SAClB,EACD,QAAQ,CACT,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAkB,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAC/B,SAAS,EACT;YACE,GAAG,YAAY;YACf,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,WAAW;SACpB,EACD,QAAQ,CACT,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,SAAS,CAAC,MAAM;SAC5B,CAAC,CAAC;QAEH,MAAM,mBAAmB,GACvB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAA0B,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAC/B,SAAS,EACT;YACE,GAAG,mBAAmB;YACtB,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,UAAU,EAAE,MAAM,CAAC,KAAK;YACxB,MAAM,EAAE,WAAW;SACpB,EACD,QAAQ,CACT,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAE,CAAC;QAE5E,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO,CAAC,OAAO;YAClB,cAAc,EAAE;gBACd,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,MAAM,CAAC,KAAK;gBACtB,iBAAiB,EAAE,MAAM,CAAC,MAAM;gBAChC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM;aAChF;YACD,mBAAmB,EAAE,iDAAiD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mDAAmD;SACjJ,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC5C,YAAY,CAAC,KAAK,CAAC,IAAI,EACvB,OAAO,CAAC,KAAK,EACb,aAAa,CACd,CAAC;QACF,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAElD,MAAM,iBAAiB,GACrB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAA0B,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAC/B,SAAS,EACT;YACE,GAAG,iBAAiB;YACpB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SAC5C,EACD,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY;YACZ,IAAI,EAAE,OAAO;YACb,aAAa,EAAE,MAAM,CAAC,SAAS;SAChC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAoB,EAAE,OAAwB;QACtE,MAAM,IAAI,GAAU,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAChE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;oBACnF,IAAI,CAAC,IAAI,CAAC;wBACR,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;wBAC3B,KAAK;wBACL,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE;qBAC7C,CAAC,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;wBAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;wBACvB,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,IAAI,CAAC;wBACR,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;wBAC3B,KAAK,EAAE,CAAC;wBACR,YAAY,EAAE,EAAE;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CACzD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;gBACzC,OAAO,EAAE;oBACP,GAAG,OAAO,CAAC,OAAO;oBAClB,cAAc,EAAE;wBACd,UAAU,EAAE,IAAI;wBAChB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE;qBAC1C;iBACF;aACF,CAAC,CAAC,CACJ,CAAC;YAEF,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAC/B,SAAS,EACT,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAE,CAChD,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;oBAC1C,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,OAAO;;;;EAIT,IAAI;;;;;;;;;;;;;CAaL,CAAC,IAAI,EAAE,CAAC;IACP,CAAC;IAEO,gBAAgB,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAiB;QAC3E,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,KAAK,GAAG,GAAG,CAAC;QAEhB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QAElD,IAAI,QAAQ,EAAE,CAAC;YACb,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;iBACvB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,OAAO;YACL,SAAS;YACT,KAAK;YACL,YAAY;YACZ,SAAS;SACV,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,IAAW;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,oBAAoB,CAAC,IAAW;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE9D,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC;QAC3C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;gBACzB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -8,8 +8,20 @@ export declare class ConsensusStrategy extends BaseStrategy {
8
8
  constructor(coordinator: SwarmCoordinatorInterface, config: ConsensusConfig);
9
9
  execute(options: SwarmRunOptions): Promise<StrategyResult>;
10
10
  private extractVote;
11
+ /**
12
+ * Votes cast through the `cast_vote` / `change_vote` tools take precedence over votes
13
+ * parsed from the agent's text output.
14
+ */
15
+ private findToolVote;
16
+ private readBoard;
17
+ private writeBoard;
11
18
  private getAgentWeight;
12
19
  private checkConsensus;
20
+ /**
21
+ * The leading decision wins when its share of all eligible voters (abstentions count
22
+ * against it) reaches the threshold and it is not tied with another decision.
23
+ */
24
+ private resolveByScore;
13
25
  private summarizeVotes;
14
26
  private getPreviousDiscussion;
15
27
  private buildConsensusInstructions;
@@ -1 +1 @@
1
- {"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../../src/strategies/consensus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,eAAe,EAIf,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAiBzC,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAkB;gBAEpB,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,eAAe;IAKrE,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAuKhE,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IAiEtB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,0BAA0B;YA0BpB,qBAAqB;IAoCnC,OAAO,CAAC,oBAAoB;CAwC7B"}
1
+ {"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../../src/strategies/consensus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,eAAe,EAIf,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA4BzC,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAkB;gBAEpB,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,eAAe;IAQrE,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA2JhE,OAAO,CAAC,WAAW;IA0BnB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IA4DtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,0BAA0B;YA0BpB,qBAAqB;IAoCnC,OAAO,CAAC,oBAAoB;CAwC7B"}
@@ -2,11 +2,15 @@
2
2
  * Consensus strategy - Agents vote and reach agreement
3
3
  */
4
4
  import { BaseStrategy } from './base.js';
5
+ import { normalizeDecision } from '../shared/voting.js';
5
6
  export class ConsensusStrategy extends BaseStrategy {
6
7
  config;
7
8
  constructor(coordinator, config) {
8
9
  super(coordinator);
9
- this.config = config;
10
+ this.config = {
11
+ ...config,
12
+ threshold: Math.min(1, Math.max(0.01, config.threshold)),
13
+ };
10
14
  }
11
15
  async execute(options) {
12
16
  const agentResults = new Map();
@@ -18,30 +22,28 @@ export class ConsensusStrategy extends BaseStrategy {
18
22
  }
19
23
  const supervisors = this.coordinator.getAgentsByRole('supervisor');
20
24
  const supervisor = supervisors.length > 0 ? supervisors[0] : null;
21
- this.coordinator.blackboard.write('consensus', {
25
+ const voters = agents.filter((a) => a.metadata.role !== 'supervisor');
26
+ if (voters.length < 2) {
27
+ throw new Error('Consensus strategy requires at least 2 voting agents');
28
+ }
29
+ this.writeBoard({
22
30
  topic: options.input,
23
31
  maxRounds: this.config.maxRounds,
24
32
  currentRound: 0,
25
33
  votes: [],
26
34
  resolution: this.config.resolution,
27
35
  threshold: this.config.threshold,
28
- }, 'system');
36
+ });
29
37
  let consensusReached = false;
30
38
  let winningDecision = null;
31
39
  let finalRound = 0;
32
40
  for (let round = 1; round <= this.config.maxRounds && !consensusReached; round++) {
33
41
  finalRound = round;
34
42
  this.coordinator.events.emit('consensus:round', { round, total: this.config.maxRounds });
35
- const consensusState = this.coordinator.blackboard.read('consensus');
36
- this.coordinator.blackboard.write('consensus', {
37
- ...consensusState,
38
- currentRound: round,
39
- }, 'system');
43
+ this.writeBoard({ ...this.readBoard(), currentRound: round });
40
44
  const roundVotes = [];
41
45
  const previousDiscussion = this.getPreviousDiscussion(discussionTranscript, round);
42
- for (const swarmAgent of agents) {
43
- if (swarmAgent.metadata.role === 'supervisor')
44
- continue;
46
+ for (const swarmAgent of voters) {
45
47
  const agentContext = {
46
48
  ...options.context,
47
49
  consensusContext: {
@@ -63,7 +65,8 @@ export class ConsensusStrategy extends BaseStrategy {
63
65
  }, swarmAgent.agent.name);
64
66
  const result = await this.coordinator.runAgent(swarmAgent.agent.name, input, agentContext);
65
67
  agentResults.set(`${swarmAgent.agent.name}_round${round}`, result);
66
- const vote = this.extractVote(result.output, swarmAgent, round);
68
+ const vote = this.findToolVote(swarmAgent, round) ??
69
+ this.extractVote(result.output, swarmAgent, round);
67
70
  if (vote) {
68
71
  roundVotes.push(vote);
69
72
  allVotes.push(vote);
@@ -81,10 +84,8 @@ export class ConsensusStrategy extends BaseStrategy {
81
84
  };
82
85
  discussionTranscript.push(message);
83
86
  }
84
- const updatedState = this.coordinator.blackboard.read('consensus');
85
- updatedState.votes = allVotes;
86
- this.coordinator.blackboard.write('consensus', updatedState, 'system');
87
- const consensusResult = this.checkConsensus(roundVotes, agents.filter((a) => a.metadata.role !== 'supervisor'));
87
+ this.writeBoard({ ...this.readBoard(), votes: [...allVotes] });
88
+ const consensusResult = this.checkConsensus(roundVotes, voters);
88
89
  if (consensusResult.reached) {
89
90
  consensusReached = true;
90
91
  winningDecision = consensusResult.decision;
@@ -145,6 +146,7 @@ export class ConsensusStrategy extends BaseStrategy {
145
146
  reasoning: output,
146
147
  weight: this.getAgentWeight(agent),
147
148
  round,
149
+ timestamp: Date.now(),
148
150
  };
149
151
  }
150
152
  return {
@@ -153,8 +155,35 @@ export class ConsensusStrategy extends BaseStrategy {
153
155
  reasoning: output.replace(voteMatch[0], '').trim(),
154
156
  weight: this.getAgentWeight(agent),
155
157
  round,
158
+ timestamp: Date.now(),
156
159
  };
157
160
  }
161
+ /**
162
+ * Votes cast through the `cast_vote` / `change_vote` tools take precedence over votes
163
+ * parsed from the agent's text output.
164
+ */
165
+ findToolVote(agent, round) {
166
+ const board = this.readBoard();
167
+ const toolVotes = board.votes.filter((v) => v.agentName === agent.agent.name && v.round === round);
168
+ const latest = toolVotes[toolVotes.length - 1];
169
+ if (!latest || typeof latest.decision !== 'string' || latest.decision.trim() === '') {
170
+ return null;
171
+ }
172
+ return {
173
+ agentName: latest.agentName,
174
+ decision: latest.decision.trim(),
175
+ reasoning: latest.reasoning,
176
+ weight: this.getAgentWeight(agent),
177
+ round,
178
+ timestamp: latest.timestamp ?? Date.now(),
179
+ };
180
+ }
181
+ readBoard() {
182
+ return this.coordinator.blackboard.read('consensus');
183
+ }
184
+ writeBoard(state) {
185
+ this.coordinator.blackboard.write('consensus', state, 'system');
186
+ }
158
187
  getAgentWeight(agent) {
159
188
  if (this.config.weights?.[agent.agent.name] !== undefined) {
160
189
  return this.config.weights[agent.agent.name];
@@ -164,13 +193,13 @@ export class ConsensusStrategy extends BaseStrategy {
164
193
  }
165
194
  return 1;
166
195
  }
167
- checkConsensus(votes, agents) {
196
+ checkConsensus(votes, voters) {
168
197
  if (votes.length === 0) {
169
198
  return { reached: false, decision: null, voteCounts: [] };
170
199
  }
171
200
  const voteCounts = new Map();
172
201
  for (const vote of votes) {
173
- const normalized = vote.decision.toLowerCase().trim();
202
+ const normalized = normalizeDecision(vote.decision);
174
203
  const existing = voteCounts.get(normalized);
175
204
  if (existing) {
176
205
  existing.count++;
@@ -187,35 +216,47 @@ export class ConsensusStrategy extends BaseStrategy {
187
216
  }
188
217
  }
189
218
  const countsArray = Array.from(voteCounts.values());
190
- const totalVotes = votes.length;
191
- const totalWeight = votes.reduce((sum, v) => sum + v.weight, 0);
219
+ if (votes.length < voters.length) {
220
+ this.coordinator.events.emit('consensus:vote', {
221
+ warning: 'missing-votes',
222
+ expected: voters.length,
223
+ received: votes.length,
224
+ missing: voters
225
+ .filter((a) => !votes.some((v) => v.agentName === a.agent.name))
226
+ .map((a) => a.agent.name),
227
+ });
228
+ }
192
229
  switch (this.config.resolution) {
193
230
  case 'unanimous': {
194
- if (countsArray.length === 1 && countsArray[0].count === agents.length) {
231
+ if (countsArray.length === 1 && countsArray[0].count === voters.length) {
195
232
  return { reached: true, decision: countsArray[0].decision, voteCounts: countsArray };
196
233
  }
197
234
  return { reached: false, decision: null, voteCounts: countsArray };
198
235
  }
199
236
  case 'weighted': {
200
- const sorted = countsArray.sort((a, b) => b.weightedCount - a.weightedCount);
201
- const topOption = sorted[0];
202
- const weightRatio = topOption.weightedCount / totalWeight;
203
- if (weightRatio >= this.config.threshold) {
204
- return { reached: true, decision: topOption.decision, voteCounts: countsArray };
205
- }
206
- return { reached: false, decision: null, voteCounts: countsArray };
237
+ const totalWeight = voters.reduce((sum, a) => sum + this.getAgentWeight(a), 0);
238
+ return this.resolveByScore(countsArray, (c) => c.weightedCount, totalWeight);
207
239
  }
208
240
  case 'majority':
209
- default: {
210
- const sorted = countsArray.sort((a, b) => b.count - a.count);
211
- const topOption = sorted[0];
212
- const voteRatio = topOption.count / totalVotes;
213
- if (voteRatio >= this.config.threshold) {
214
- return { reached: true, decision: topOption.decision, voteCounts: countsArray };
215
- }
216
- return { reached: false, decision: null, voteCounts: countsArray };
217
- }
241
+ default:
242
+ return this.resolveByScore(countsArray, (c) => c.count, voters.length);
243
+ }
244
+ }
245
+ /**
246
+ * The leading decision wins when its share of all eligible voters (abstentions count
247
+ * against it) reaches the threshold and it is not tied with another decision.
248
+ */
249
+ resolveByScore(counts, score, total) {
250
+ const sorted = [...counts].sort((a, b) => score(b) - score(a));
251
+ const [top, runnerUp] = sorted;
252
+ if (!top || total <= 0) {
253
+ return { reached: false, decision: null, voteCounts: counts };
254
+ }
255
+ const tied = runnerUp !== undefined && score(runnerUp) === score(top);
256
+ if (!tied && score(top) / total >= this.config.threshold) {
257
+ return { reached: true, decision: top.decision, voteCounts: counts };
218
258
  }
259
+ return { reached: false, decision: null, voteCounts: counts };
219
260
  }
220
261
  summarizeVotes(votes) {
221
262
  if (votes.length === 0)
@@ -311,12 +352,12 @@ Provide your decision as: FINAL DECISION: [your decision]
311
352
  const finalVotes = votes.filter((v) => v.round === rounds);
312
353
  const voteCounts = new Map();
313
354
  for (const vote of finalVotes) {
314
- const key = vote.decision.toLowerCase().trim();
355
+ const key = normalizeDecision(vote.decision);
315
356
  voteCounts.set(key, (voteCounts.get(key) ?? 0) + 1);
316
357
  }
317
358
  output += '=== Final Vote Tally ===\n';
318
- for (const [decision, count] of voteCounts) {
319
- output += ` ${decision}: ${count} votes\n`;
359
+ for (const [decisionKey, count] of voteCounts) {
360
+ output += ` ${decisionKey}: ${count} votes\n`;
320
361
  }
321
362
  return output;
322
363
  }