@higher.archi/boe 1.0.27 → 1.0.29

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 (56) hide show
  1. package/dist/engines/decay/compiler.d.ts +11 -0
  2. package/dist/engines/decay/compiler.d.ts.map +1 -0
  3. package/dist/engines/decay/compiler.js +216 -0
  4. package/dist/engines/decay/compiler.js.map +1 -0
  5. package/dist/engines/decay/engine.d.ts +79 -0
  6. package/dist/engines/decay/engine.d.ts.map +1 -0
  7. package/dist/engines/decay/engine.js +159 -0
  8. package/dist/engines/decay/engine.js.map +1 -0
  9. package/dist/engines/decay/index.d.ts +9 -0
  10. package/dist/engines/decay/index.d.ts.map +1 -0
  11. package/dist/engines/decay/index.js +21 -0
  12. package/dist/engines/decay/index.js.map +1 -0
  13. package/dist/engines/decay/strategy.d.ts +21 -0
  14. package/dist/engines/decay/strategy.d.ts.map +1 -0
  15. package/dist/engines/decay/strategy.js +308 -0
  16. package/dist/engines/decay/strategy.js.map +1 -0
  17. package/dist/engines/decay/types.d.ts +157 -0
  18. package/dist/engines/decay/types.d.ts.map +1 -0
  19. package/dist/engines/decay/types.js +39 -0
  20. package/dist/engines/decay/types.js.map +1 -0
  21. package/dist/engines/negotiation/compiler.d.ts +11 -0
  22. package/dist/engines/negotiation/compiler.d.ts.map +1 -0
  23. package/dist/engines/negotiation/compiler.js +177 -0
  24. package/dist/engines/negotiation/compiler.js.map +1 -0
  25. package/dist/engines/negotiation/engine.d.ts +46 -0
  26. package/dist/engines/negotiation/engine.d.ts.map +1 -0
  27. package/dist/engines/negotiation/engine.js +88 -0
  28. package/dist/engines/negotiation/engine.js.map +1 -0
  29. package/dist/engines/negotiation/index.d.ts +8 -0
  30. package/dist/engines/negotiation/index.d.ts.map +1 -0
  31. package/dist/engines/negotiation/index.js +17 -0
  32. package/dist/engines/negotiation/index.js.map +1 -0
  33. package/dist/engines/negotiation/strategy.d.ts +18 -0
  34. package/dist/engines/negotiation/strategy.d.ts.map +1 -0
  35. package/dist/engines/negotiation/strategy.js +439 -0
  36. package/dist/engines/negotiation/strategy.js.map +1 -0
  37. package/dist/engines/negotiation/types.d.ts +179 -0
  38. package/dist/engines/negotiation/types.d.ts.map +1 -0
  39. package/dist/engines/negotiation/types.js +10 -0
  40. package/dist/engines/negotiation/types.js.map +1 -0
  41. package/dist/index.d.ts +6 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +22 -6
  44. package/dist/index.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/engines/decay/compiler.ts +276 -0
  47. package/src/engines/decay/engine.ts +211 -0
  48. package/src/engines/decay/index.ts +43 -0
  49. package/src/engines/decay/strategy.ts +433 -0
  50. package/src/engines/decay/types.ts +231 -0
  51. package/src/engines/negotiation/compiler.ts +229 -0
  52. package/src/engines/negotiation/engine.ts +117 -0
  53. package/src/engines/negotiation/index.ts +42 -0
  54. package/src/engines/negotiation/strategy.ts +587 -0
  55. package/src/engines/negotiation/types.ts +244 -0
  56. package/src/index.ts +69 -0
@@ -0,0 +1,439 @@
1
+ "use strict";
2
+ /**
3
+ * Negotiation Engine Strategy
4
+ *
5
+ * Core execution logic for all negotiation strategies:
6
+ * - zopa-analysis: Compute zones of possible agreement per dimension
7
+ * - concession-planning: Simulate round-by-round concession trajectories
8
+ * - package-optimization: Find optimal deal packages within the ZOPA
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.negotiationStrategy = exports.NegotiationExecutor = void 0;
12
+ // ========================================
13
+ // Executor
14
+ // ========================================
15
+ class NegotiationExecutor {
16
+ run(ruleSet, options = {}) {
17
+ switch (ruleSet.strategy) {
18
+ case 'zopa-analysis':
19
+ return this.runZopaAnalysis(ruleSet);
20
+ case 'concession-planning':
21
+ return this.runConcessionPlanning(ruleSet, options);
22
+ case 'package-optimization':
23
+ return this.runPackageOptimization(ruleSet, options);
24
+ default:
25
+ throw new Error(`Unknown negotiation strategy: '${ruleSet.strategy}'`);
26
+ }
27
+ }
28
+ // ========================================
29
+ // ZOPA Analysis
30
+ // ========================================
31
+ runZopaAnalysis(ruleSet) {
32
+ const startTime = performance.now();
33
+ const [partyA, partyB] = ruleSet.parties;
34
+ const ranges = [];
35
+ let hasAgreement = true;
36
+ for (const dim of ruleSet.dimensions) {
37
+ const posA = findPosition(partyA, dim.id);
38
+ const posB = findPosition(partyB, dim.id);
39
+ if (!posA || !posB) {
40
+ hasAgreement = false;
41
+ continue;
42
+ }
43
+ const range = computeZopaRange(dim, posA, posB);
44
+ if (range === null) {
45
+ hasAgreement = false;
46
+ }
47
+ else {
48
+ ranges.push(range);
49
+ }
50
+ }
51
+ // zopaVolume = product of normalized range sizes
52
+ let zopaVolume = 0;
53
+ if (hasAgreement && ranges.length > 0) {
54
+ zopaVolume = 1;
55
+ for (const range of ranges) {
56
+ const dim = ruleSet.dimensions.find(d => d.id === range.dimensionId);
57
+ const posA = findPosition(partyA, dim.id);
58
+ const posB = findPosition(partyB, dim.id);
59
+ const fullSpan = Math.abs(Math.max(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway) -
60
+ Math.min(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway));
61
+ const normalizedSize = fullSpan > 0 ? range.size / fullSpan : 0;
62
+ zopaVolume *= normalizedSize;
63
+ }
64
+ }
65
+ const outcome = hasAgreement ? 'agreed' : 'no-zopa';
66
+ // BATNA comparison -- use midpoint of ZOPA as deal value
67
+ const batnaComparison = buildBatnaComparison(ruleSet.parties, ruleSet.valueWeights, ruleSet.dimensions, hasAgreement ? ranges : [], hasAgreement);
68
+ const executionTimeMs = round(performance.now() - startTime, 2);
69
+ return {
70
+ outcome,
71
+ zopa: {
72
+ ranges,
73
+ hasAgreement,
74
+ zopaVolume: round(zopaVolume, 6)
75
+ },
76
+ batnaComparison,
77
+ strategy: 'zopa-analysis',
78
+ executionTimeMs
79
+ };
80
+ }
81
+ // ========================================
82
+ // Concession Planning
83
+ // ========================================
84
+ runConcessionPlanning(ruleSet, options) {
85
+ const startTime = performance.now();
86
+ const { style, rounds, startingPosition } = ruleSet.config;
87
+ const [partyA, partyB] = ruleSet.parties;
88
+ const steps = [];
89
+ let convergenceRound;
90
+ let finalDeal;
91
+ // Initialize current offers per party per dimension
92
+ const currentOffers = {};
93
+ for (const party of ruleSet.parties) {
94
+ currentOffers[party.id] = {};
95
+ for (const pos of party.positions) {
96
+ if (startingPosition === 'midpoint') {
97
+ currentOffers[party.id][pos.dimensionId] = (pos.ideal + pos.acceptable) / 2;
98
+ }
99
+ else {
100
+ currentOffers[party.id][pos.dimensionId] = pos.ideal;
101
+ }
102
+ }
103
+ }
104
+ for (let r = 1; r <= rounds; r++) {
105
+ for (const party of ruleSet.parties) {
106
+ const otherParty = party === partyA ? partyB : partyA;
107
+ const weights = ruleSet.valueWeights[party.id] || [];
108
+ for (const pos of party.positions) {
109
+ const dimId = pos.dimensionId;
110
+ const current = currentOffers[party.id][dimId];
111
+ const otherCurrent = currentOffers[otherParty.id][dimId];
112
+ const gap = otherCurrent - current;
113
+ // Compute inverse weight for this dimension -- concede more on low-priority
114
+ const dimWeight = weights.find(w => w.dimensionId === dimId);
115
+ const inverseWeight = dimWeight ? (1 - dimWeight.weight) : 0.5;
116
+ let concession = 0;
117
+ switch (style) {
118
+ case 'aggressive':
119
+ concession = gap * 0.5 * Math.pow(0.7, r - 1) * inverseWeight;
120
+ break;
121
+ case 'moderate': {
122
+ const totalTravel = pos.ideal - pos.acceptable;
123
+ const equalStep = rounds > 0 ? totalTravel / rounds : 0;
124
+ // Direction-aware concession
125
+ concession = Math.sign(gap) * Math.abs(equalStep) * inverseWeight;
126
+ break;
127
+ }
128
+ case 'collaborative': {
129
+ const fraction = Math.pow(r / rounds, 2);
130
+ concession = gap * fraction * inverseWeight;
131
+ break;
132
+ }
133
+ }
134
+ currentOffers[party.id][dimId] = current + concession;
135
+ }
136
+ // Compute total value for this party's current offer
137
+ const totalValue = computePartyValue(party, currentOffers[party.id], ruleSet.dimensions, weights);
138
+ const step = {
139
+ round: r,
140
+ partyId: party.id,
141
+ offers: { ...currentOffers[party.id] },
142
+ totalValue: round(totalValue, 4)
143
+ };
144
+ steps.push(step);
145
+ if (options.onStep) {
146
+ options.onStep(step);
147
+ }
148
+ }
149
+ // Check convergence -- all dimensions within 1% tolerance
150
+ const converged = ruleSet.dimensions.every(dim => {
151
+ const offerA = currentOffers[partyA.id][dim.id];
152
+ const offerB = currentOffers[partyB.id][dim.id];
153
+ const posA = findPosition(partyA, dim.id);
154
+ const posB = findPosition(partyB, dim.id);
155
+ if (!posA || !posB)
156
+ return false;
157
+ const fullRange = Math.abs(Math.max(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway) -
158
+ Math.min(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway));
159
+ const tolerance = fullRange * 0.01;
160
+ return Math.abs(offerA - offerB) <= tolerance;
161
+ });
162
+ if (converged && convergenceRound === undefined) {
163
+ convergenceRound = r;
164
+ finalDeal = {};
165
+ for (const dim of ruleSet.dimensions) {
166
+ finalDeal[dim.id] = round((currentOffers[partyA.id][dim.id] + currentOffers[partyB.id][dim.id]) / 2, 4);
167
+ }
168
+ break;
169
+ }
170
+ }
171
+ const hasAgreement = convergenceRound !== undefined;
172
+ const outcome = hasAgreement ? 'agreed' : 'no-zopa';
173
+ // Compute ZOPA for BATNA comparison
174
+ const zopaRanges = [];
175
+ for (const dim of ruleSet.dimensions) {
176
+ const posA = findPosition(partyA, dim.id);
177
+ const posB = findPosition(partyB, dim.id);
178
+ if (posA && posB) {
179
+ const range = computeZopaRange(dim, posA, posB);
180
+ if (range)
181
+ zopaRanges.push(range);
182
+ }
183
+ }
184
+ const batnaComparison = buildBatnaComparison(ruleSet.parties, ruleSet.valueWeights, ruleSet.dimensions, hasAgreement && finalDeal
185
+ ? ruleSet.dimensions.map(d => ({
186
+ dimensionId: d.id,
187
+ lower: finalDeal[d.id],
188
+ upper: finalDeal[d.id],
189
+ size: 0
190
+ }))
191
+ : zopaRanges, hasAgreement);
192
+ const executionTimeMs = round(performance.now() - startTime, 2);
193
+ return {
194
+ outcome,
195
+ concessionPlan: {
196
+ steps,
197
+ convergenceRound,
198
+ finalDeal
199
+ },
200
+ batnaComparison,
201
+ strategy: 'concession-planning',
202
+ executionTimeMs
203
+ };
204
+ }
205
+ // ========================================
206
+ // Package Optimization
207
+ // ========================================
208
+ runPackageOptimization(ruleSet, options) {
209
+ const startTime = performance.now();
210
+ const [partyA, partyB] = ruleSet.parties;
211
+ const { sampleSize, objectiveWeights } = ruleSet.config;
212
+ // 1. Compute ZOPA ranges
213
+ const zopaRanges = [];
214
+ let hasAgreement = true;
215
+ for (const dim of ruleSet.dimensions) {
216
+ const posA = findPosition(partyA, dim.id);
217
+ const posB = findPosition(partyB, dim.id);
218
+ if (!posA || !posB) {
219
+ hasAgreement = false;
220
+ continue;
221
+ }
222
+ const range = computeZopaRange(dim, posA, posB);
223
+ if (range === null) {
224
+ hasAgreement = false;
225
+ }
226
+ else {
227
+ zopaRanges.push(range);
228
+ }
229
+ }
230
+ // 2. If no ZOPA, return no-zopa outcome
231
+ if (!hasAgreement || zopaRanges.length === 0) {
232
+ const batnaComparison = buildBatnaComparison(ruleSet.parties, ruleSet.valueWeights, ruleSet.dimensions, [], false);
233
+ const executionTimeMs = round(performance.now() - startTime, 2);
234
+ return {
235
+ outcome: 'no-zopa',
236
+ zopa: {
237
+ ranges: zopaRanges,
238
+ hasAgreement: false,
239
+ zopaVolume: 0
240
+ },
241
+ batnaComparison,
242
+ strategy: 'package-optimization',
243
+ executionTimeMs
244
+ };
245
+ }
246
+ // 3. Sample random points within ZOPA ranges
247
+ const weightsA = ruleSet.valueWeights[partyA.id] || [];
248
+ const weightsB = ruleSet.valueWeights[partyB.id] || [];
249
+ const candidates = [];
250
+ for (let i = 0; i < sampleSize; i++) {
251
+ const dims = {};
252
+ for (const range of zopaRanges) {
253
+ dims[range.dimensionId] = range.lower + Math.random() * range.size;
254
+ }
255
+ // Compute party values (0-1 normalized within their range, weighted)
256
+ const partyAValue = computePartyValue(partyA, dims, ruleSet.dimensions, weightsA);
257
+ const partyBValue = computePartyValue(partyB, dims, ruleSet.dimensions, weightsB);
258
+ const closeProbability = round(Math.sqrt(partyAValue * partyBValue), 4);
259
+ const marginScore = round(partyAValue, 4);
260
+ const compositeScore = round(objectiveWeights.closeProb * closeProbability +
261
+ objectiveWeights.margin * marginScore, 4);
262
+ const candidate = {
263
+ dimensions: roundDimensions(dims),
264
+ partyAValue: round(partyAValue, 4),
265
+ partyBValue: round(partyBValue, 4),
266
+ closeProbability,
267
+ marginScore,
268
+ compositeScore
269
+ };
270
+ candidates.push(candidate);
271
+ if (options.onPackage) {
272
+ options.onPackage(candidate);
273
+ }
274
+ }
275
+ // 4. Sort by compositeScore descending, take top 10
276
+ candidates.sort((a, b) => b.compositeScore - a.compositeScore);
277
+ const topPackages = candidates.slice(0, 10);
278
+ const recommended = topPackages[0];
279
+ // 5. Compare best against BATNA
280
+ const batnaComparison = buildBatnaComparison(ruleSet.parties, ruleSet.valueWeights, ruleSet.dimensions,
281
+ // Use recommended package dimensions as the deal point
282
+ ruleSet.dimensions.map(d => ({
283
+ dimensionId: d.id,
284
+ lower: recommended.dimensions[d.id] ?? 0,
285
+ upper: recommended.dimensions[d.id] ?? 0,
286
+ size: 0
287
+ })), true);
288
+ // Check if BATNA is preferred for either party
289
+ let outcome = 'agreed';
290
+ for (const partyId of Object.keys(batnaComparison)) {
291
+ if (batnaComparison[partyId].surplus < 0) {
292
+ outcome = 'batna-preferred';
293
+ break;
294
+ }
295
+ }
296
+ // Compute zopaVolume
297
+ let zopaVolume = 1;
298
+ for (const range of zopaRanges) {
299
+ const dim = ruleSet.dimensions.find(d => d.id === range.dimensionId);
300
+ const posA = findPosition(partyA, dim.id);
301
+ const posB = findPosition(partyB, dim.id);
302
+ const fullSpan = Math.abs(Math.max(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway) -
303
+ Math.min(posA.ideal, posA.walkaway, posB.ideal, posB.walkaway));
304
+ const normalizedSize = fullSpan > 0 ? range.size / fullSpan : 0;
305
+ zopaVolume *= normalizedSize;
306
+ }
307
+ const executionTimeMs = round(performance.now() - startTime, 2);
308
+ return {
309
+ outcome,
310
+ zopa: {
311
+ ranges: zopaRanges,
312
+ hasAgreement: true,
313
+ zopaVolume: round(zopaVolume, 6)
314
+ },
315
+ recommendedPackage: recommended,
316
+ allPackages: topPackages,
317
+ batnaComparison,
318
+ strategy: 'package-optimization',
319
+ executionTimeMs
320
+ };
321
+ }
322
+ }
323
+ exports.NegotiationExecutor = NegotiationExecutor;
324
+ // ========================================
325
+ // Module-Level Helpers
326
+ // ========================================
327
+ function findPosition(party, dimensionId) {
328
+ return party.positions.find(p => p.dimensionId === dimensionId);
329
+ }
330
+ /**
331
+ * Compute the ZOPA range for a single dimension.
332
+ *
333
+ * For 'higher-is-better': the party who wants higher values has range
334
+ * [walkaway, ideal], and the party who wants lower values has range
335
+ * [ideal, walkaway]. The ZOPA is the intersection.
336
+ *
337
+ * For 'lower-is-better': reversed logic applies.
338
+ *
339
+ * Returns null if there is no overlap.
340
+ */
341
+ function computeZopaRange(dim, posA, posB) {
342
+ let rangeALow, rangeAHigh;
343
+ let rangeBLow, rangeBHigh;
344
+ if (dim.direction === 'higher-is-better') {
345
+ // Party A: [walkaway, ideal], Party B: [walkaway, ideal]
346
+ rangeALow = Math.min(posA.walkaway, posA.ideal);
347
+ rangeAHigh = Math.max(posA.walkaway, posA.ideal);
348
+ rangeBLow = Math.min(posB.walkaway, posB.ideal);
349
+ rangeBHigh = Math.max(posB.walkaway, posB.ideal);
350
+ }
351
+ else {
352
+ // lower-is-better
353
+ rangeALow = Math.min(posA.ideal, posA.walkaway);
354
+ rangeAHigh = Math.max(posA.ideal, posA.walkaway);
355
+ rangeBLow = Math.min(posB.ideal, posB.walkaway);
356
+ rangeBHigh = Math.max(posB.ideal, posB.walkaway);
357
+ }
358
+ // Intersection
359
+ const lower = Math.max(rangeALow, rangeBLow);
360
+ const upper = Math.min(rangeAHigh, rangeBHigh);
361
+ const size = upper - lower;
362
+ if (size < 0) {
363
+ return null;
364
+ }
365
+ return {
366
+ dimensionId: dim.id,
367
+ lower: round(lower, 4),
368
+ upper: round(upper, 4),
369
+ size: round(size, 4)
370
+ };
371
+ }
372
+ /**
373
+ * Compute a party's normalized value (0-1) for a given set of dimension values.
374
+ * Value is computed as the weighted sum of per-dimension normalized scores.
375
+ */
376
+ function computePartyValue(party, dimensionValues, dimensions, weights) {
377
+ let totalValue = 0;
378
+ for (const dim of dimensions) {
379
+ const pos = findPosition(party, dim.id);
380
+ if (!pos)
381
+ continue;
382
+ const value = dimensionValues[dim.id];
383
+ if (value === undefined)
384
+ continue;
385
+ const dimWeight = weights.find(w => w.dimensionId === dim.id);
386
+ const weight = dimWeight ? dimWeight.weight : 0;
387
+ // Normalize within party's range [walkaway, ideal] to [0, 1]
388
+ const range = pos.ideal - pos.walkaway;
389
+ let normalized;
390
+ if (range === 0) {
391
+ normalized = value === pos.ideal ? 1 : 0;
392
+ }
393
+ else {
394
+ normalized = (value - pos.walkaway) / range;
395
+ normalized = Math.max(0, Math.min(1, normalized));
396
+ }
397
+ totalValue += normalized * weight;
398
+ }
399
+ return totalValue;
400
+ }
401
+ /**
402
+ * Build BATNA comparison for both parties.
403
+ * Uses the midpoint of ZOPA ranges (or deal point) as the deal value.
404
+ */
405
+ function buildBatnaComparison(parties, valueWeights, dimensions, ranges, hasAgreement) {
406
+ const result = {};
407
+ // Build deal point from ranges (midpoint)
408
+ const dealPoint = {};
409
+ for (const range of ranges) {
410
+ dealPoint[range.dimensionId] = (range.lower + range.upper) / 2;
411
+ }
412
+ for (const party of parties) {
413
+ const weights = valueWeights[party.id] || [];
414
+ const dealValue = hasAgreement
415
+ ? round(computePartyValue(party, dealPoint, dimensions, weights), 4)
416
+ : 0;
417
+ const batnaValue = party.batna ?? 0;
418
+ result[party.id] = {
419
+ dealValue,
420
+ batnaValue,
421
+ surplus: round(dealValue - batnaValue, 4)
422
+ };
423
+ }
424
+ return result;
425
+ }
426
+ function round(value, decimals) {
427
+ const factor = Math.pow(10, decimals);
428
+ return Math.round(value * factor) / factor;
429
+ }
430
+ function roundDimensions(dims) {
431
+ const result = {};
432
+ for (const [key, value] of Object.entries(dims)) {
433
+ result[key] = round(value, 4);
434
+ }
435
+ return result;
436
+ }
437
+ /** Singleton instance */
438
+ exports.negotiationStrategy = new NegotiationExecutor();
439
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/negotiation/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Negotiation Engine Types
3
+ *
4
+ * Two-party negotiation engine that analyzes zones of possible agreement,
5
+ * plans concession strategies, and optimizes deal packages across
6
+ * multiple dimensions.
7
+ */
8
+ import type { SemanticPriority } from '../utility/types';
9
+ /** Negotiation algorithm to use */
10
+ export type NegotiationStrategy = 'zopa-analysis' | 'concession-planning' | 'package-optimization';
11
+ /** Concession aggressiveness style */
12
+ export type ConcessionStyle = 'aggressive' | 'moderate' | 'collaborative';
13
+ /** Outcome of a negotiation analysis */
14
+ export type DealOutcome = 'agreed' | 'no-zopa' | 'batna-preferred';
15
+ /** Whether higher or lower values are preferred for a dimension */
16
+ export type DimensionDirection = 'higher-is-better' | 'lower-is-better';
17
+ /** A single negotiable dimension (e.g. price, delivery time) */
18
+ export type NegotiationDimension = {
19
+ id: string;
20
+ name?: string;
21
+ unit?: string;
22
+ direction: DimensionDirection;
23
+ };
24
+ /** A party's position on a single dimension */
25
+ export type PartyPosition = {
26
+ dimensionId: string;
27
+ ideal: number;
28
+ acceptable: number;
29
+ walkaway: number;
30
+ };
31
+ /** A negotiating party with positions across all dimensions */
32
+ export type PartyProfile = {
33
+ id: string;
34
+ name?: string;
35
+ positions: PartyPosition[];
36
+ batna?: number;
37
+ };
38
+ /** Weight function mapping a dimension to its importance for a party */
39
+ export type ValueFunction = {
40
+ dimensionId: string;
41
+ weight: number | SemanticPriority;
42
+ };
43
+ /** Compiled value function with resolved numeric weight */
44
+ export type CompiledValueFunction = {
45
+ dimensionId: string;
46
+ weight: number;
47
+ };
48
+ /** Compiled party profile with resolved weights */
49
+ export type CompiledPartyProfile = {
50
+ id: string;
51
+ name?: string;
52
+ positions: PartyPosition[];
53
+ batna?: number;
54
+ };
55
+ export type ZopaAnalysisConfig = {
56
+ resolution?: number;
57
+ };
58
+ export type ConcessionPlanningConfig = {
59
+ style?: ConcessionStyle;
60
+ rounds?: number;
61
+ startingPosition?: 'ideal' | 'midpoint';
62
+ };
63
+ export type PackageOptimizationConfig = {
64
+ sampleSize?: number;
65
+ objectiveWeights?: {
66
+ closeProb: number;
67
+ margin: number;
68
+ };
69
+ };
70
+ type NegotiationRuleSetBase = {
71
+ id: string;
72
+ name?: string;
73
+ mode: 'negotiation';
74
+ dimensions: NegotiationDimension[];
75
+ parties: [PartyProfile, PartyProfile];
76
+ valueWeights: Record<string, ValueFunction[]>;
77
+ };
78
+ /** ZOPA analysis: compute zones of possible agreement per dimension */
79
+ export type ZopaAnalysisRuleSet = NegotiationRuleSetBase & {
80
+ strategy: 'zopa-analysis';
81
+ config?: ZopaAnalysisConfig;
82
+ };
83
+ /** Concession planning: simulate round-by-round concession trajectories */
84
+ export type ConcessionPlanningRuleSet = NegotiationRuleSetBase & {
85
+ strategy: 'concession-planning';
86
+ config?: ConcessionPlanningConfig;
87
+ };
88
+ /** Package optimization: find optimal deal packages within the ZOPA */
89
+ export type PackageOptimizationRuleSet = NegotiationRuleSetBase & {
90
+ strategy: 'package-optimization';
91
+ config?: PackageOptimizationConfig;
92
+ };
93
+ export type NegotiationRuleSet = ZopaAnalysisRuleSet | ConcessionPlanningRuleSet | PackageOptimizationRuleSet;
94
+ type CompiledNegotiationRuleSetBase = {
95
+ id: string;
96
+ name?: string;
97
+ mode: 'negotiation';
98
+ dimensions: NegotiationDimension[];
99
+ parties: [CompiledPartyProfile, CompiledPartyProfile];
100
+ valueWeights: Record<string, CompiledValueFunction[]>;
101
+ };
102
+ export type CompiledZopaAnalysisRuleSet = CompiledNegotiationRuleSetBase & {
103
+ strategy: 'zopa-analysis';
104
+ config: {
105
+ resolution: number;
106
+ };
107
+ };
108
+ export type CompiledConcessionPlanningRuleSet = CompiledNegotiationRuleSetBase & {
109
+ strategy: 'concession-planning';
110
+ config: {
111
+ style: ConcessionStyle;
112
+ rounds: number;
113
+ startingPosition: 'ideal' | 'midpoint';
114
+ };
115
+ };
116
+ export type CompiledPackageOptimizationRuleSet = CompiledNegotiationRuleSetBase & {
117
+ strategy: 'package-optimization';
118
+ config: {
119
+ sampleSize: number;
120
+ objectiveWeights: {
121
+ closeProb: number;
122
+ margin: number;
123
+ };
124
+ };
125
+ };
126
+ export type CompiledNegotiationRuleSet = CompiledZopaAnalysisRuleSet | CompiledConcessionPlanningRuleSet | CompiledPackageOptimizationRuleSet;
127
+ /** Range of agreement for a single dimension */
128
+ export type ZopaRange = {
129
+ dimensionId: string;
130
+ lower: number;
131
+ upper: number;
132
+ size: number;
133
+ };
134
+ /** A single round's concession step for one party */
135
+ export type ConcessionStep = {
136
+ round: number;
137
+ partyId: string;
138
+ offers: Record<string, number>;
139
+ totalValue: number;
140
+ };
141
+ /** A candidate deal package */
142
+ export type PackageCandidate = {
143
+ dimensions: Record<string, number>;
144
+ partyAValue: number;
145
+ partyBValue: number;
146
+ closeProbability: number;
147
+ marginScore: number;
148
+ compositeScore: number;
149
+ };
150
+ /** Full negotiation result */
151
+ export type NegotiationResult = {
152
+ outcome: DealOutcome;
153
+ zopa?: {
154
+ ranges: ZopaRange[];
155
+ hasAgreement: boolean;
156
+ zopaVolume: number;
157
+ };
158
+ concessionPlan?: {
159
+ steps: ConcessionStep[];
160
+ convergenceRound?: number;
161
+ finalDeal?: Record<string, number>;
162
+ };
163
+ recommendedPackage?: PackageCandidate;
164
+ allPackages?: PackageCandidate[];
165
+ batnaComparison: Record<string, {
166
+ dealValue: number;
167
+ batnaValue: number;
168
+ surplus: number;
169
+ }>;
170
+ strategy: NegotiationStrategy;
171
+ executionTimeMs: number;
172
+ };
173
+ /** Runtime options for negotiation execution */
174
+ export type NegotiationOptions = {
175
+ onStep?: (step: ConcessionStep) => void;
176
+ onPackage?: (candidate: PackageCandidate) => void;
177
+ };
178
+ export {};
179
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/negotiation/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Negotiation Engine Types
4
+ *
5
+ * Two-party negotiation engine that analyzes zones of possible agreement,
6
+ * plans concession strategies, and optimizes deal packages across
7
+ * multiple dimensions.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/negotiation/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}