@cogitator-ai/swarms 0.1.0 → 0.3.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 (120) hide show
  1. package/README.md +844 -36
  2. package/dist/assessor/assessor.d.ts +22 -0
  3. package/dist/assessor/assessor.d.ts.map +1 -0
  4. package/dist/assessor/assessor.js +267 -0
  5. package/dist/assessor/assessor.js.map +1 -0
  6. package/dist/assessor/index.d.ts +6 -0
  7. package/dist/assessor/index.d.ts.map +1 -0
  8. package/dist/assessor/index.js +6 -0
  9. package/dist/assessor/index.js.map +1 -0
  10. package/dist/assessor/model-discovery.d.ts +17 -0
  11. package/dist/assessor/model-discovery.d.ts.map +1 -0
  12. package/dist/assessor/model-discovery.js +286 -0
  13. package/dist/assessor/model-discovery.js.map +1 -0
  14. package/dist/assessor/role-matcher.d.ts +31 -0
  15. package/dist/assessor/role-matcher.d.ts.map +1 -0
  16. package/dist/assessor/role-matcher.js +122 -0
  17. package/dist/assessor/role-matcher.js.map +1 -0
  18. package/dist/assessor/scoring.d.ts +14 -0
  19. package/dist/assessor/scoring.d.ts.map +1 -0
  20. package/dist/assessor/scoring.js +151 -0
  21. package/dist/assessor/scoring.js.map +1 -0
  22. package/dist/assessor/task-analyzer.d.ts +13 -0
  23. package/dist/assessor/task-analyzer.d.ts.map +1 -0
  24. package/dist/assessor/task-analyzer.js +185 -0
  25. package/dist/assessor/task-analyzer.js.map +1 -0
  26. package/dist/communication/blackboard.d.ts.map +1 -1
  27. package/dist/communication/blackboard.js +3 -5
  28. package/dist/communication/blackboard.js.map +1 -1
  29. package/dist/communication/event-emitter.d.ts.map +1 -1
  30. package/dist/communication/event-emitter.js +9 -11
  31. package/dist/communication/event-emitter.js.map +1 -1
  32. package/dist/communication/message-bus.d.ts.map +1 -1
  33. package/dist/communication/message-bus.js +11 -21
  34. package/dist/communication/message-bus.js.map +1 -1
  35. package/dist/coordinator.d.ts +2 -0
  36. package/dist/coordinator.d.ts.map +1 -1
  37. package/dist/coordinator.js +46 -0
  38. package/dist/coordinator.js.map +1 -1
  39. package/dist/index.d.ts +6 -4
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +5 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/resources/circuit-breaker.d.ts.map +1 -1
  44. package/dist/resources/circuit-breaker.js +3 -5
  45. package/dist/resources/circuit-breaker.js.map +1 -1
  46. package/dist/resources/tracker.d.ts.map +1 -1
  47. package/dist/resources/tracker.js +1 -3
  48. package/dist/resources/tracker.js.map +1 -1
  49. package/dist/strategies/auction.d.ts.map +1 -1
  50. package/dist/strategies/auction.js +12 -9
  51. package/dist/strategies/auction.js.map +1 -1
  52. package/dist/strategies/base.d.ts.map +1 -1
  53. package/dist/strategies/base.js.map +1 -1
  54. package/dist/strategies/consensus.d.ts.map +1 -1
  55. package/dist/strategies/consensus.js +5 -9
  56. package/dist/strategies/consensus.js.map +1 -1
  57. package/dist/strategies/debate.d.ts.map +1 -1
  58. package/dist/strategies/debate.js.map +1 -1
  59. package/dist/strategies/hierarchical.d.ts.map +1 -1
  60. package/dist/strategies/hierarchical.js +3 -1
  61. package/dist/strategies/hierarchical.js.map +1 -1
  62. package/dist/strategies/index.d.ts +3 -1
  63. package/dist/strategies/index.d.ts.map +1 -1
  64. package/dist/strategies/index.js +9 -0
  65. package/dist/strategies/index.js.map +1 -1
  66. package/dist/strategies/negotiation/approval.d.ts +28 -0
  67. package/dist/strategies/negotiation/approval.d.ts.map +1 -0
  68. package/dist/strategies/negotiation/approval.js +198 -0
  69. package/dist/strategies/negotiation/approval.js.map +1 -0
  70. package/dist/strategies/negotiation/convergence.d.ts +22 -0
  71. package/dist/strategies/negotiation/convergence.d.ts.map +1 -0
  72. package/dist/strategies/negotiation/convergence.js +240 -0
  73. package/dist/strategies/negotiation/convergence.js.map +1 -0
  74. package/dist/strategies/negotiation/index.d.ts +4 -0
  75. package/dist/strategies/negotiation/index.d.ts.map +1 -0
  76. package/dist/strategies/negotiation/index.js +4 -0
  77. package/dist/strategies/negotiation/index.js.map +1 -0
  78. package/dist/strategies/negotiation/turn-manager.d.ts +31 -0
  79. package/dist/strategies/negotiation/turn-manager.d.ts.map +1 -0
  80. package/dist/strategies/negotiation/turn-manager.js +117 -0
  81. package/dist/strategies/negotiation/turn-manager.js.map +1 -0
  82. package/dist/strategies/negotiation.d.ts +39 -0
  83. package/dist/strategies/negotiation.d.ts.map +1 -0
  84. package/dist/strategies/negotiation.js +607 -0
  85. package/dist/strategies/negotiation.js.map +1 -0
  86. package/dist/strategies/pipeline.d.ts.map +1 -1
  87. package/dist/strategies/pipeline.js +8 -5
  88. package/dist/strategies/pipeline.js.map +1 -1
  89. package/dist/strategies/round-robin.d.ts.map +1 -1
  90. package/dist/strategies/round-robin.js +1 -1
  91. package/dist/strategies/round-robin.js.map +1 -1
  92. package/dist/swarm.d.ts +19 -2
  93. package/dist/swarm.d.ts.map +1 -1
  94. package/dist/swarm.js +50 -2
  95. package/dist/swarm.js.map +1 -1
  96. package/dist/tools/blackboard.d.ts.map +1 -1
  97. package/dist/tools/blackboard.js +10 -4
  98. package/dist/tools/blackboard.js.map +1 -1
  99. package/dist/tools/delegation.d.ts +1 -1
  100. package/dist/tools/delegation.d.ts.map +1 -1
  101. package/dist/tools/delegation.js +41 -28
  102. package/dist/tools/delegation.js.map +1 -1
  103. package/dist/tools/index.d.ts +2 -1
  104. package/dist/tools/index.d.ts.map +1 -1
  105. package/dist/tools/index.js +6 -0
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/messaging.d.ts.map +1 -1
  108. package/dist/tools/messaging.js +10 -9
  109. package/dist/tools/messaging.js.map +1 -1
  110. package/dist/tools/negotiation.d.ts +233 -0
  111. package/dist/tools/negotiation.d.ts.map +1 -0
  112. package/dist/tools/negotiation.js +445 -0
  113. package/dist/tools/negotiation.js.map +1 -0
  114. package/dist/tools/voting.d.ts.map +1 -1
  115. package/dist/tools/voting.js +14 -10
  116. package/dist/tools/voting.js.map +1 -1
  117. package/dist/workflow/swarm-node.d.ts.map +1 -1
  118. package/dist/workflow/swarm-node.js +6 -8
  119. package/dist/workflow/swarm-node.js.map +1 -1
  120. package/package.json +5 -4
@@ -0,0 +1,240 @@
1
+ export class ConvergenceCalculator {
2
+ config;
3
+ history = [];
4
+ constructor(config) {
5
+ this.config = config;
6
+ }
7
+ calculateTermConvergence(offers, termId) {
8
+ const termValues = [];
9
+ for (const offer of offers) {
10
+ if (offer.status !== 'pending' && offer.status !== 'accepted')
11
+ continue;
12
+ const term = offer.terms.find((t) => t.termId === termId);
13
+ if (term)
14
+ termValues.push(term.value);
15
+ }
16
+ if (termValues.length < 2)
17
+ return 1;
18
+ const numericValues = termValues.filter((v) => typeof v === 'number');
19
+ if (numericValues.length >= 2) {
20
+ const min = Math.min(...numericValues);
21
+ const max = Math.max(...numericValues);
22
+ if (max === min)
23
+ return 1;
24
+ const range = max - min;
25
+ const mean = numericValues.reduce((a, b) => a + b, 0) / numericValues.length;
26
+ const variance = numericValues.reduce((sum, v) => sum + Math.pow(v - mean, 2), 0) / numericValues.length;
27
+ const normalizedStdDev = Math.sqrt(variance) / range;
28
+ return Math.max(0, 1 - normalizedStdDev * 2);
29
+ }
30
+ const uniqueValues = new Set(termValues.map((v) => JSON.stringify(v)));
31
+ return 1 / uniqueValues.size;
32
+ }
33
+ calculateOverallConvergence(offers, round) {
34
+ const recentOffers = offers.filter((o) => o.round >= round - 1 && (o.status === 'pending' || o.status === 'accepted'));
35
+ const allTermIds = new Set();
36
+ for (const offer of recentOffers) {
37
+ for (const term of offer.terms) {
38
+ allTermIds.add(term.termId);
39
+ }
40
+ }
41
+ const termConvergence = {};
42
+ let totalConvergence = 0;
43
+ let termCount = 0;
44
+ for (const termId of allTermIds) {
45
+ const conv = this.calculateTermConvergence(recentOffers, termId);
46
+ termConvergence[termId] = conv;
47
+ totalConvergence += conv;
48
+ termCount++;
49
+ }
50
+ const overallConvergence = termCount > 0 ? totalConvergence / termCount : 0;
51
+ const positionDrift = this.calculatePositionDrift(offers, round);
52
+ const acceptanceRate = this.calculateAcceptanceRate(offers, round);
53
+ const roundsWithoutProgress = this.calculateRoundsWithoutProgress(overallConvergence);
54
+ let convergenceTrend = 'stable';
55
+ if (this.history.length >= 2) {
56
+ const recent = this.history.slice(-3);
57
+ const avgRecent = recent.reduce((s, m) => s + m.overallConvergence, 0) / recent.length;
58
+ const diff = overallConvergence - avgRecent;
59
+ if (diff > this.config.stagnationThreshold) {
60
+ convergenceTrend = 'improving';
61
+ }
62
+ else if (diff < -this.config.stagnationThreshold) {
63
+ convergenceTrend = 'declining';
64
+ }
65
+ }
66
+ const estimatedRoundsToConvergence = this.estimateRoundsToConvergence(overallConvergence, convergenceTrend);
67
+ const metrics = {
68
+ round,
69
+ overallConvergence,
70
+ termConvergence,
71
+ positionDrift,
72
+ acceptanceRate,
73
+ roundsWithoutProgress,
74
+ convergenceTrend,
75
+ estimatedRoundsToConvergence,
76
+ timestamp: Date.now(),
77
+ };
78
+ this.history.push(metrics);
79
+ return metrics;
80
+ }
81
+ calculatePositionDrift(offers, round) {
82
+ const prevRoundOffers = offers.filter((o) => o.round === round - 1);
83
+ const currentRoundOffers = offers.filter((o) => o.round === round);
84
+ if (prevRoundOffers.length === 0 || currentRoundOffers.length === 0)
85
+ return 0;
86
+ let totalDrift = 0;
87
+ let comparisons = 0;
88
+ for (const agent of new Set([
89
+ ...prevRoundOffers.map((o) => o.from),
90
+ ...currentRoundOffers.map((o) => o.from),
91
+ ])) {
92
+ const prevOffer = prevRoundOffers.find((o) => o.from === agent);
93
+ const currOffer = currentRoundOffers.find((o) => o.from === agent);
94
+ if (prevOffer && currOffer) {
95
+ totalDrift += this.calculateOfferDifference(prevOffer, currOffer);
96
+ comparisons++;
97
+ }
98
+ }
99
+ return comparisons > 0 ? totalDrift / comparisons : 0;
100
+ }
101
+ calculateOfferDifference(offer1, offer2) {
102
+ const terms1 = new Map(offer1.terms.map((t) => [t.termId, t]));
103
+ const terms2 = new Map(offer2.terms.map((t) => [t.termId, t]));
104
+ const allTermIds = new Set([...terms1.keys(), ...terms2.keys()]);
105
+ let totalDiff = 0;
106
+ let termCount = 0;
107
+ for (const termId of allTermIds) {
108
+ const t1 = terms1.get(termId);
109
+ const t2 = terms2.get(termId);
110
+ if (!t1 || !t2) {
111
+ totalDiff += 1;
112
+ }
113
+ else if (typeof t1.value === 'number' && typeof t2.value === 'number') {
114
+ const range = t1.range ?? { min: 0, max: 100 };
115
+ const normalizedDiff = Math.abs(t1.value - t2.value) / (range.max - range.min || 1);
116
+ totalDiff += Math.min(1, normalizedDiff);
117
+ }
118
+ else if (JSON.stringify(t1.value) !== JSON.stringify(t2.value)) {
119
+ totalDiff += 1;
120
+ }
121
+ termCount++;
122
+ }
123
+ return termCount > 0 ? totalDiff / termCount : 0;
124
+ }
125
+ calculateAcceptanceRate(offers, round) {
126
+ const roundOffers = offers.filter((o) => o.round === round);
127
+ if (roundOffers.length === 0)
128
+ return 0;
129
+ const accepted = roundOffers.filter((o) => o.status === 'accepted').length;
130
+ return accepted / roundOffers.length;
131
+ }
132
+ calculateRoundsWithoutProgress(currentConvergence) {
133
+ let count = 0;
134
+ for (let i = this.history.length - 1; i >= 0; i--) {
135
+ const diff = currentConvergence - this.history[i].overallConvergence;
136
+ if (Math.abs(diff) <= this.config.stagnationThreshold) {
137
+ count++;
138
+ }
139
+ else {
140
+ break;
141
+ }
142
+ }
143
+ return count;
144
+ }
145
+ estimateRoundsToConvergence(currentConvergence, trend) {
146
+ if (currentConvergence >= 0.95)
147
+ return 0;
148
+ if (trend !== 'improving')
149
+ return undefined;
150
+ if (this.history.length < 2)
151
+ return undefined;
152
+ const recentHistory = this.history.slice(-5);
153
+ let totalImprovement = 0;
154
+ for (let i = 1; i < recentHistory.length; i++) {
155
+ totalImprovement +=
156
+ recentHistory[i].overallConvergence - recentHistory[i - 1].overallConvergence;
157
+ }
158
+ const avgImprovementPerRound = totalImprovement / (recentHistory.length - 1);
159
+ if (avgImprovementPerRound <= 0)
160
+ return undefined;
161
+ const remaining = 0.95 - currentConvergence;
162
+ return Math.ceil(remaining / avgImprovementPerRound);
163
+ }
164
+ isStagnant() {
165
+ if (this.history.length === 0)
166
+ return false;
167
+ const latest = this.history[this.history.length - 1];
168
+ return latest.roundsWithoutProgress >= this.config.maxRoundsWithoutProgress;
169
+ }
170
+ suggestCompromise(offers) {
171
+ const pendingOffers = offers.filter((o) => o.status === 'pending');
172
+ if (pendingOffers.length < 2)
173
+ return null;
174
+ const termPositions = new Map();
175
+ for (const offer of pendingOffers) {
176
+ for (const term of offer.terms) {
177
+ if (!term.negotiable)
178
+ continue;
179
+ if (!termPositions.has(term.termId)) {
180
+ termPositions.set(term.termId, { values: [], term });
181
+ }
182
+ termPositions.get(term.termId).values.push({
183
+ agent: offer.from,
184
+ value: term.value,
185
+ priority: term.priority,
186
+ });
187
+ }
188
+ }
189
+ const suggestedTerms = [];
190
+ const expectedImpact = [];
191
+ for (const [termId, data] of termPositions) {
192
+ const numericValues = data.values.filter((v) => typeof v.value === 'number');
193
+ if (numericValues.length >= 2) {
194
+ const totalWeight = numericValues.reduce((s, v) => s + v.priority, 0);
195
+ const weightedAvg = numericValues.reduce((s, v) => s + (v.value * v.priority) / totalWeight, 0);
196
+ suggestedTerms.push({
197
+ termId,
198
+ label: data.term.label,
199
+ value: Math.round(weightedAvg * 100) / 100,
200
+ negotiable: false,
201
+ priority: data.term.priority,
202
+ range: data.term.range,
203
+ });
204
+ for (const v of numericValues) {
205
+ const diff = Math.abs(v.value - weightedAvg);
206
+ const range = data.term.range ?? { min: 0, max: 100 };
207
+ const normalizedDiff = diff / (range.max - range.min || 1);
208
+ let existing = expectedImpact.find((i) => i.agent === v.agent);
209
+ if (!existing) {
210
+ existing = { agent: v.agent, gain: 0, sacrifice: 0 };
211
+ expectedImpact.push(existing);
212
+ }
213
+ if (v.value > weightedAvg) {
214
+ existing.sacrifice += normalizedDiff * v.priority;
215
+ }
216
+ else {
217
+ existing.gain += normalizedDiff * v.priority;
218
+ }
219
+ }
220
+ }
221
+ }
222
+ if (suggestedTerms.length === 0)
223
+ return null;
224
+ return {
225
+ type: 'split_difference',
226
+ description: 'Weighted average compromise based on term priorities',
227
+ suggestedTerms,
228
+ rationale: "This proposal balances positions based on each party's stated priorities, " +
229
+ 'offering a fair middle ground that respects what matters most to each side.',
230
+ expectedImpact,
231
+ };
232
+ }
233
+ getHistory() {
234
+ return [...this.history];
235
+ }
236
+ reset() {
237
+ this.history = [];
238
+ }
239
+ }
240
+ //# sourceMappingURL=convergence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../../src/strategies/negotiation/convergence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { TurnManager, type TurnManagerConfig } from './turn-manager';
2
+ export { ConvergenceCalculator, type ConvergenceCalculatorConfig } from './convergence';
3
+ export { ApprovalIntegration, type ApprovalIntegrationConfig } from './approval';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/strategies/negotiation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { TurnManager } from './turn-manager';
2
+ export { ConvergenceCalculator } from './convergence';
3
+ export { ApprovalIntegration } from './approval';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/strategies/negotiation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAoC,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAkC,MAAM,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { NegotiationTurnOrder, NegotiationOffer, TurnRecord } from '@cogitator-ai/types';
2
+ export interface TurnManagerConfig {
3
+ agents: string[];
4
+ turnOrder: NegotiationTurnOrder;
5
+ weights?: Record<string, number>;
6
+ turnTimeout?: number;
7
+ }
8
+ export declare class TurnManager {
9
+ private agents;
10
+ private turnOrder;
11
+ private weights;
12
+ private turnTimeout;
13
+ private currentIndex;
14
+ private round;
15
+ private turnHistory;
16
+ private turnStartTime?;
17
+ constructor(config: TurnManagerConfig);
18
+ getCurrentAgent(): string | null;
19
+ getCurrentRound(): number;
20
+ advance(): string | null;
21
+ reorderDynamic(pendingOffers: NegotiationOffer[]): void;
22
+ isTurnExpired(): boolean;
23
+ skipCurrentAgent(): string | null;
24
+ getTurnHistory(): TurnRecord[];
25
+ getAgentTurnCount(agentName: string): number;
26
+ reset(): void;
27
+ setRound(round: number): void;
28
+ startTurn(): void;
29
+ getRemainingTurnTime(): number;
30
+ }
31
+ //# sourceMappingURL=turn-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-manager.d.ts","sourceRoot":"","sources":["../../../src/strategies/negotiation/turn-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9F,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,MAAM,EAAE,iBAAiB;IAWrC,eAAe,IAAI,MAAM,GAAG,IAAI;IAKhC,eAAe,IAAI,MAAM;IAIzB,OAAO,IAAI,MAAM,GAAG,IAAI;IAwBxB,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,GAAG,IAAI;IA+BvD,aAAa,IAAI,OAAO;IAKxB,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAajC,cAAc,IAAI,UAAU,EAAE;IAI9B,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAK5C,KAAK,IAAI,IAAI;IAOb,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,IAAI,IAAI;IAIjB,oBAAoB,IAAI,MAAM;CAK/B"}
@@ -0,0 +1,117 @@
1
+ export class TurnManager {
2
+ agents;
3
+ turnOrder;
4
+ weights;
5
+ turnTimeout;
6
+ currentIndex = 0;
7
+ round = 1;
8
+ turnHistory = [];
9
+ turnStartTime;
10
+ constructor(config) {
11
+ this.agents = [...config.agents];
12
+ this.turnOrder = config.turnOrder;
13
+ this.weights = config.weights ?? {};
14
+ this.turnTimeout = config.turnTimeout ?? 30000;
15
+ if (this.turnOrder === 'priority') {
16
+ this.agents.sort((a, b) => (this.weights[b] ?? 1) - (this.weights[a] ?? 1));
17
+ }
18
+ }
19
+ getCurrentAgent() {
20
+ if (this.agents.length === 0)
21
+ return null;
22
+ return this.agents[this.currentIndex];
23
+ }
24
+ getCurrentRound() {
25
+ return this.round;
26
+ }
27
+ advance() {
28
+ if (this.agents.length === 0)
29
+ return null;
30
+ const currentAgent = this.getCurrentAgent();
31
+ if (currentAgent) {
32
+ this.turnHistory.push({
33
+ agent: currentAgent,
34
+ round: this.round,
35
+ action: 'turn_complete',
36
+ timestamp: Date.now(),
37
+ });
38
+ }
39
+ this.currentIndex++;
40
+ if (this.currentIndex >= this.agents.length) {
41
+ this.currentIndex = 0;
42
+ this.round++;
43
+ }
44
+ this.turnStartTime = Date.now();
45
+ return this.getCurrentAgent();
46
+ }
47
+ reorderDynamic(pendingOffers) {
48
+ if (this.turnOrder !== 'dynamic')
49
+ return;
50
+ const agentPendingCounts = new Map();
51
+ for (const agent of this.agents) {
52
+ agentPendingCounts.set(agent, 0);
53
+ }
54
+ for (const offer of pendingOffers) {
55
+ const recipients = Array.isArray(offer.to) ? offer.to : [offer.to];
56
+ for (const recipient of recipients) {
57
+ if (agentPendingCounts.has(recipient)) {
58
+ agentPendingCounts.set(recipient, (agentPendingCounts.get(recipient) ?? 0) + 1);
59
+ }
60
+ }
61
+ }
62
+ const currentAgent = this.getCurrentAgent();
63
+ this.agents.sort((a, b) => {
64
+ const aCount = agentPendingCounts.get(a) ?? 0;
65
+ const bCount = agentPendingCounts.get(b) ?? 0;
66
+ return bCount - aCount;
67
+ });
68
+ if (currentAgent) {
69
+ this.currentIndex = this.agents.indexOf(currentAgent);
70
+ if (this.currentIndex === -1)
71
+ this.currentIndex = 0;
72
+ }
73
+ }
74
+ isTurnExpired() {
75
+ if (!this.turnStartTime)
76
+ return false;
77
+ return Date.now() - this.turnStartTime > this.turnTimeout;
78
+ }
79
+ skipCurrentAgent() {
80
+ const skipped = this.getCurrentAgent();
81
+ if (skipped) {
82
+ this.turnHistory.push({
83
+ agent: skipped,
84
+ round: this.round,
85
+ action: 'turn_skipped',
86
+ timestamp: Date.now(),
87
+ });
88
+ }
89
+ return this.advance();
90
+ }
91
+ getTurnHistory() {
92
+ return [...this.turnHistory];
93
+ }
94
+ getAgentTurnCount(agentName) {
95
+ return this.turnHistory.filter((t) => t.agent === agentName && t.action === 'turn_complete')
96
+ .length;
97
+ }
98
+ reset() {
99
+ this.currentIndex = 0;
100
+ this.round = 1;
101
+ this.turnHistory = [];
102
+ this.turnStartTime = undefined;
103
+ }
104
+ setRound(round) {
105
+ this.round = round;
106
+ }
107
+ startTurn() {
108
+ this.turnStartTime = Date.now();
109
+ }
110
+ getRemainingTurnTime() {
111
+ if (!this.turnStartTime)
112
+ return this.turnTimeout;
113
+ const elapsed = Date.now() - this.turnStartTime;
114
+ return Math.max(0, this.turnTimeout - elapsed);
115
+ }
116
+ }
117
+ //# sourceMappingURL=turn-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-manager.js","sourceRoot":"","sources":["../../../src/strategies/negotiation/turn-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { SwarmRunOptions, StrategyResult, NegotiationConfig } from '@cogitator-ai/types';
2
+ import { BaseStrategy } from './base';
3
+ import type { SwarmCoordinator } from '../coordinator';
4
+ export declare class NegotiationStrategy extends BaseStrategy {
5
+ private config;
6
+ private state;
7
+ private turnManager;
8
+ private convergenceCalculator;
9
+ private approvalIntegration?;
10
+ constructor(coordinator: SwarmCoordinator, config?: Partial<NegotiationConfig>);
11
+ execute(options: SwarmRunOptions): Promise<StrategyResult>;
12
+ private initializeState;
13
+ private initializeHelpers;
14
+ private runInitializationPhase;
15
+ private runProposalPhase;
16
+ private runCounterPhase;
17
+ private runRefinementPhase;
18
+ private checkForAgreement;
19
+ private checkAllPartiesAccepted;
20
+ private buildAgreement;
21
+ private isDeadlocked;
22
+ private handleDeadlock;
23
+ private escalate;
24
+ private supervisorDecides;
25
+ private majorityRules;
26
+ private arbitrate;
27
+ private performArbitration;
28
+ private finalizeResult;
29
+ private getFinalPositions;
30
+ private buildFinalOutput;
31
+ private updateBlackboard;
32
+ private buildAgentContext;
33
+ private buildInitializationPrompt;
34
+ private buildProposalPrompt;
35
+ private buildCounterPrompt;
36
+ private buildRefinementPrompt;
37
+ private buildSupervisorDecisionPrompt;
38
+ }
39
+ //# sourceMappingURL=negotiation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiation.d.ts","sourceRoot":"","sources":["../../src/strategies/negotiation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EASlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,mBAAmB,CAAC,CAAsB;gBAEtC,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAK5E,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA4FhE,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,iBAAiB;YAqBX,sBAAsB;YAgCtB,gBAAgB;YA0ChB,eAAe;YAwDf,kBAAkB;YAkClB,iBAAiB;IAwD/B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,YAAY;YAeN,cAAc;YAsCd,QAAQ;YA8CR,iBAAiB;IAgB/B,OAAO,CAAC,aAAa;IA4DrB,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,kBAAkB;IAyD1B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,6BAA6B;CAoBtC"}