@cogitator-ai/swarms 0.3.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 (42) hide show
  1. package/README.md +844 -36
  2. package/dist/coordinator.d.ts +2 -0
  3. package/dist/coordinator.d.ts.map +1 -1
  4. package/dist/coordinator.js +46 -0
  5. package/dist/coordinator.js.map +1 -1
  6. package/dist/index.d.ts +4 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/strategies/index.d.ts +3 -1
  11. package/dist/strategies/index.d.ts.map +1 -1
  12. package/dist/strategies/index.js +9 -0
  13. package/dist/strategies/index.js.map +1 -1
  14. package/dist/strategies/negotiation/approval.d.ts +28 -0
  15. package/dist/strategies/negotiation/approval.d.ts.map +1 -0
  16. package/dist/strategies/negotiation/approval.js +198 -0
  17. package/dist/strategies/negotiation/approval.js.map +1 -0
  18. package/dist/strategies/negotiation/convergence.d.ts +22 -0
  19. package/dist/strategies/negotiation/convergence.d.ts.map +1 -0
  20. package/dist/strategies/negotiation/convergence.js +240 -0
  21. package/dist/strategies/negotiation/convergence.js.map +1 -0
  22. package/dist/strategies/negotiation/index.d.ts +4 -0
  23. package/dist/strategies/negotiation/index.d.ts.map +1 -0
  24. package/dist/strategies/negotiation/index.js +4 -0
  25. package/dist/strategies/negotiation/index.js.map +1 -0
  26. package/dist/strategies/negotiation/turn-manager.d.ts +31 -0
  27. package/dist/strategies/negotiation/turn-manager.d.ts.map +1 -0
  28. package/dist/strategies/negotiation/turn-manager.js +117 -0
  29. package/dist/strategies/negotiation/turn-manager.js.map +1 -0
  30. package/dist/strategies/negotiation.d.ts +39 -0
  31. package/dist/strategies/negotiation.d.ts.map +1 -0
  32. package/dist/strategies/negotiation.js +607 -0
  33. package/dist/strategies/negotiation.js.map +1 -0
  34. package/dist/tools/index.d.ts +2 -1
  35. package/dist/tools/index.d.ts.map +1 -1
  36. package/dist/tools/index.js +6 -0
  37. package/dist/tools/index.js.map +1 -1
  38. package/dist/tools/negotiation.d.ts +233 -0
  39. package/dist/tools/negotiation.d.ts.map +1 -0
  40. package/dist/tools/negotiation.js +445 -0
  41. package/dist/tools/negotiation.js.map +1 -0
  42. package/package.json +4 -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"}