@higher.archi/boe 1.0.21 → 1.0.22
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.
- package/dist/core/types/rule.d.ts +1 -1
- package/dist/core/types/rule.d.ts.map +1 -1
- package/dist/engines/ranking/compiler.d.ts +12 -0
- package/dist/engines/ranking/compiler.d.ts.map +1 -0
- package/dist/engines/ranking/compiler.js +163 -0
- package/dist/engines/ranking/compiler.js.map +1 -0
- package/dist/engines/ranking/engine.d.ts +48 -0
- package/dist/engines/ranking/engine.d.ts.map +1 -0
- package/dist/engines/ranking/engine.js +89 -0
- package/dist/engines/ranking/engine.js.map +1 -0
- package/dist/engines/ranking/index.d.ts +9 -0
- package/dist/engines/ranking/index.d.ts.map +1 -0
- package/dist/engines/ranking/index.js +23 -0
- package/dist/engines/ranking/index.js.map +1 -0
- package/dist/engines/ranking/strategy.d.ts +21 -0
- package/dist/engines/ranking/strategy.d.ts.map +1 -0
- package/dist/engines/ranking/strategy.js +250 -0
- package/dist/engines/ranking/strategy.js.map +1 -0
- package/dist/engines/ranking/types.d.ts +142 -0
- package/dist/engines/ranking/types.d.ts.map +1 -0
- package/dist/engines/ranking/types.js +46 -0
- package/dist/engines/ranking/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/types/rule.ts +1 -1
- package/src/engines/ranking/compiler.ts +194 -0
- package/src/engines/ranking/engine.ts +120 -0
- package/src/engines/ranking/index.ts +46 -0
- package/src/engines/ranking/strategy.ts +333 -0
- package/src/engines/ranking/types.ts +231 -0
- package/src/index.ts +36 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ranking Engine Strategy
|
|
4
|
+
*
|
|
5
|
+
* Core execution logic for all ranking strategies:
|
|
6
|
+
* - score: Delegates to ScoringEngine, ranks by totalScore
|
|
7
|
+
* - elo: Processes match history, computes Elo ratings
|
|
8
|
+
* - head-to-head: Pairwise comparison on weighted criteria
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.rankingStrategy = exports.RankingExecutor = void 0;
|
|
12
|
+
const engine_1 = require("../scoring/engine");
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
class RankingExecutor {
|
|
15
|
+
run(ruleSet, wm, options = {}) {
|
|
16
|
+
const startTime = performance.now();
|
|
17
|
+
let rankings;
|
|
18
|
+
switch (ruleSet.strategy) {
|
|
19
|
+
case 'score':
|
|
20
|
+
rankings = this.runScore(ruleSet, wm, options);
|
|
21
|
+
break;
|
|
22
|
+
case 'elo':
|
|
23
|
+
rankings = this.runElo(ruleSet, wm, options);
|
|
24
|
+
break;
|
|
25
|
+
case 'head-to-head':
|
|
26
|
+
rankings = this.runHeadToHead(ruleSet, wm, options);
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
throw new Error(`Unknown ranking strategy: '${ruleSet.strategy}'`);
|
|
30
|
+
}
|
|
31
|
+
const executionTimeMs = Math.round((performance.now() - startTime) * 100) / 100;
|
|
32
|
+
return {
|
|
33
|
+
rankings,
|
|
34
|
+
totalEntities: rankings.length,
|
|
35
|
+
strategy: ruleSet.strategy,
|
|
36
|
+
executionTimeMs
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// ========================================
|
|
40
|
+
// Score Strategy
|
|
41
|
+
// ========================================
|
|
42
|
+
runScore(ruleSet, wm, options) {
|
|
43
|
+
const entityFacts = wm.getByType(ruleSet.entityType);
|
|
44
|
+
if (entityFacts.length === 0)
|
|
45
|
+
return [];
|
|
46
|
+
// Collect context facts (everything that isn't the entity type)
|
|
47
|
+
const allFacts = wm.getAll();
|
|
48
|
+
const contextFacts = allFacts.filter(f => f.type !== ruleSet.entityType);
|
|
49
|
+
// Score each entity independently
|
|
50
|
+
const scored = [];
|
|
51
|
+
for (const entity of entityFacts) {
|
|
52
|
+
const engine = new engine_1.ScoringEngine();
|
|
53
|
+
// Add context facts first
|
|
54
|
+
for (const ctx of contextFacts) {
|
|
55
|
+
engine.add({ type: ctx.type, data: ctx.data, id: ctx.id });
|
|
56
|
+
}
|
|
57
|
+
// Add this entity
|
|
58
|
+
engine.add({ type: entity.type, data: entity.data, id: entity.id });
|
|
59
|
+
const result = engine.execute(ruleSet.scoringRuleset, ruleSet.scoringOptions);
|
|
60
|
+
const entityId = resolveEntityId(entity);
|
|
61
|
+
scored.push({ entityId, score: result.totalScore });
|
|
62
|
+
}
|
|
63
|
+
// Sort by score
|
|
64
|
+
sortByScore(scored, ruleSet.config.direction);
|
|
65
|
+
// Build ranked entities
|
|
66
|
+
return this.buildRankedEntities(scored, entityFacts.length, options, ruleSet.config.tiers);
|
|
67
|
+
}
|
|
68
|
+
// ========================================
|
|
69
|
+
// Elo Strategy
|
|
70
|
+
// ========================================
|
|
71
|
+
runElo(ruleSet, wm, options) {
|
|
72
|
+
const entityFacts = wm.getByType(ruleSet.entityType);
|
|
73
|
+
if (entityFacts.length === 0)
|
|
74
|
+
return [];
|
|
75
|
+
const { initialRating, kFactor } = ruleSet.config;
|
|
76
|
+
// Initialize ratings
|
|
77
|
+
const ratings = new Map();
|
|
78
|
+
for (const entity of entityFacts) {
|
|
79
|
+
ratings.set(resolveEntityId(entity), initialRating);
|
|
80
|
+
}
|
|
81
|
+
// Process match results in insertion order
|
|
82
|
+
const matches = wm.getByType(ruleSet.matchType);
|
|
83
|
+
for (const match of matches) {
|
|
84
|
+
const { winnerId, loserId, draw } = match.data;
|
|
85
|
+
const ratingA = ratings.get(winnerId);
|
|
86
|
+
const ratingB = ratings.get(loserId);
|
|
87
|
+
// Skip matches with unknown entities
|
|
88
|
+
if (ratingA === undefined || ratingB === undefined)
|
|
89
|
+
continue;
|
|
90
|
+
// Expected scores
|
|
91
|
+
const expectedA = 1 / (1 + Math.pow(10, (ratingB - ratingA) / 400));
|
|
92
|
+
const expectedB = 1 - expectedA;
|
|
93
|
+
// Actual scores
|
|
94
|
+
const actualA = draw ? 0.5 : 1;
|
|
95
|
+
const actualB = draw ? 0.5 : 0;
|
|
96
|
+
// Update ratings
|
|
97
|
+
ratings.set(winnerId, ratingA + kFactor * (actualA - expectedA));
|
|
98
|
+
ratings.set(loserId, ratingB + kFactor * (actualB - expectedB));
|
|
99
|
+
}
|
|
100
|
+
// Convert to scored array
|
|
101
|
+
const scored = [];
|
|
102
|
+
for (const [entityId, rating] of ratings) {
|
|
103
|
+
scored.push({ entityId, score: Math.round(rating * 100) / 100 });
|
|
104
|
+
}
|
|
105
|
+
sortByScore(scored, ruleSet.config.direction);
|
|
106
|
+
return this.buildRankedEntities(scored, entityFacts.length, options);
|
|
107
|
+
}
|
|
108
|
+
// ========================================
|
|
109
|
+
// Head-to-Head Strategy
|
|
110
|
+
// ========================================
|
|
111
|
+
runHeadToHead(ruleSet, wm, options) {
|
|
112
|
+
const entityFacts = wm.getByType(ruleSet.entityType);
|
|
113
|
+
if (entityFacts.length === 0)
|
|
114
|
+
return [];
|
|
115
|
+
const { criteria } = ruleSet;
|
|
116
|
+
// Extract criterion values per entity
|
|
117
|
+
const entities = [];
|
|
118
|
+
for (const entity of entityFacts) {
|
|
119
|
+
const values = {};
|
|
120
|
+
for (const c of criteria) {
|
|
121
|
+
values[c.id] = typeof entity.data[c.id] === 'number' ? entity.data[c.id] : 0;
|
|
122
|
+
}
|
|
123
|
+
entities.push({ entityId: resolveEntityId(entity), values });
|
|
124
|
+
}
|
|
125
|
+
// Round-robin pairwise comparison
|
|
126
|
+
const scores = new Map();
|
|
127
|
+
for (const e of entities) {
|
|
128
|
+
scores.set(e.entityId, 0);
|
|
129
|
+
}
|
|
130
|
+
for (let i = 0; i < entities.length; i++) {
|
|
131
|
+
for (let j = i + 1; j < entities.length; j++) {
|
|
132
|
+
const a = entities[i];
|
|
133
|
+
const b = entities[j];
|
|
134
|
+
for (const c of criteria) {
|
|
135
|
+
const valA = a.values[c.id];
|
|
136
|
+
const valB = b.values[c.id];
|
|
137
|
+
const betterIsHigher = c.direction === 'highest-first';
|
|
138
|
+
if (valA === valB) {
|
|
139
|
+
// Tie: split the weight
|
|
140
|
+
scores.set(a.entityId, scores.get(a.entityId) + c.weight / 2);
|
|
141
|
+
scores.set(b.entityId, scores.get(b.entityId) + c.weight / 2);
|
|
142
|
+
}
|
|
143
|
+
else if ((betterIsHigher && valA > valB) || (!betterIsHigher && valA < valB)) {
|
|
144
|
+
scores.set(a.entityId, scores.get(a.entityId) + c.weight);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
scores.set(b.entityId, scores.get(b.entityId) + c.weight);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Convert to scored array
|
|
153
|
+
const scored = [];
|
|
154
|
+
for (const [entityId, score] of scores) {
|
|
155
|
+
scored.push({ entityId, score: Math.round(score * 1000) / 1000 });
|
|
156
|
+
}
|
|
157
|
+
sortByScore(scored, ruleSet.config.direction);
|
|
158
|
+
return this.buildRankedEntities(scored, entityFacts.length, options);
|
|
159
|
+
}
|
|
160
|
+
// ========================================
|
|
161
|
+
// Shared Helpers
|
|
162
|
+
// ========================================
|
|
163
|
+
buildRankedEntities(scored, totalEntities, options, tiers) {
|
|
164
|
+
// Build previous ranking lookup
|
|
165
|
+
const previousMap = new Map();
|
|
166
|
+
if (options.previousRankings) {
|
|
167
|
+
for (const prev of options.previousRankings) {
|
|
168
|
+
previousMap.set(prev.entityId, prev.rank);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Prepare sorted tiers for matching
|
|
172
|
+
const sortedTiers = tiers
|
|
173
|
+
? [...tiers].sort((a, b) => {
|
|
174
|
+
const ta = a.threshold === '-Infinity' ? Number.NEGATIVE_INFINITY : a.threshold;
|
|
175
|
+
const tb = b.threshold === '-Infinity' ? Number.NEGATIVE_INFINITY : b.threshold;
|
|
176
|
+
return tb - ta;
|
|
177
|
+
})
|
|
178
|
+
: undefined;
|
|
179
|
+
// Assign ranks (competition ranking: ties get same rank, next skips)
|
|
180
|
+
const rankings = [];
|
|
181
|
+
let currentRank = 1;
|
|
182
|
+
for (let i = 0; i < scored.length; i++) {
|
|
183
|
+
// If this entity has the same score as the previous, use the same rank
|
|
184
|
+
if (i > 0 && scored[i].score === scored[i - 1].score) {
|
|
185
|
+
// Same rank as previous
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
currentRank = i + 1;
|
|
189
|
+
}
|
|
190
|
+
const percentile = totalEntities <= 1
|
|
191
|
+
? 100
|
|
192
|
+
: ((totalEntities - currentRank) / (totalEntities - 1)) * 100;
|
|
193
|
+
const percentileLabel = (0, types_1.resolvePercentileLabel)(percentile);
|
|
194
|
+
// Match tier
|
|
195
|
+
let tier;
|
|
196
|
+
if (sortedTiers) {
|
|
197
|
+
for (const tierDef of sortedTiers) {
|
|
198
|
+
const threshold = tierDef.threshold === '-Infinity'
|
|
199
|
+
? Number.NEGATIVE_INFINITY
|
|
200
|
+
: tierDef.threshold;
|
|
201
|
+
if (scored[i].score >= threshold) {
|
|
202
|
+
tier = { ...tierDef, threshold };
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Movement
|
|
208
|
+
let movement;
|
|
209
|
+
let delta;
|
|
210
|
+
const previousRank = previousMap.get(scored[i].entityId);
|
|
211
|
+
if (previousRank !== undefined) {
|
|
212
|
+
movement = (0, types_1.resolveMovement)(previousRank, currentRank);
|
|
213
|
+
delta = previousRank - currentRank; // positive = climbed
|
|
214
|
+
}
|
|
215
|
+
const entity = {
|
|
216
|
+
entityId: scored[i].entityId,
|
|
217
|
+
rank: currentRank,
|
|
218
|
+
score: scored[i].score,
|
|
219
|
+
percentile: Math.round(percentile * 100) / 100,
|
|
220
|
+
percentileLabel,
|
|
221
|
+
...(tier !== undefined && { tier }),
|
|
222
|
+
...(movement !== undefined && { movement }),
|
|
223
|
+
...(delta !== undefined && { delta })
|
|
224
|
+
};
|
|
225
|
+
if (options.onRank) {
|
|
226
|
+
options.onRank(entity);
|
|
227
|
+
}
|
|
228
|
+
rankings.push(entity);
|
|
229
|
+
}
|
|
230
|
+
return rankings;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.RankingExecutor = RankingExecutor;
|
|
234
|
+
// ========================================
|
|
235
|
+
// Module-Level Helpers
|
|
236
|
+
// ========================================
|
|
237
|
+
function resolveEntityId(fact) {
|
|
238
|
+
return fact.data?.id ?? fact.id;
|
|
239
|
+
}
|
|
240
|
+
function sortByScore(scored, direction) {
|
|
241
|
+
if (direction === 'highest-first') {
|
|
242
|
+
scored.sort((a, b) => b.score - a.score);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
scored.sort((a, b) => a.score - b.score);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Singleton instance */
|
|
249
|
+
exports.rankingStrategy = new RankingExecutor();
|
|
250
|
+
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/ranking/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ranking Engine Types
|
|
3
|
+
*
|
|
4
|
+
* Comparative scoring engine that ranks N entities relative to each other.
|
|
5
|
+
* Supports score-based ranking, Elo ratings, and head-to-head pairwise comparison.
|
|
6
|
+
*/
|
|
7
|
+
import type { CompiledScoringRuleSet, ScoringOptions, ScoringTierMatch, TierDefinition } from '../scoring/types';
|
|
8
|
+
import type { SemanticPriority } from '../utility/types';
|
|
9
|
+
/** Ranking algorithm to use */
|
|
10
|
+
export type RankingStrategy = 'score' | 'elo' | 'head-to-head';
|
|
11
|
+
/** Sort direction for rankings */
|
|
12
|
+
export type RankingDirection = 'highest-first' | 'lowest-first';
|
|
13
|
+
/** Human-readable percentile bracket */
|
|
14
|
+
export type PercentileLabel = 'top-1%' | 'top-5%' | 'top-10%' | 'top-25%' | 'top-50%' | 'bottom-half';
|
|
15
|
+
/** Rank movement since previous ranking */
|
|
16
|
+
export type Movement = 'climbed' | 'steady' | 'dropped';
|
|
17
|
+
/** Elo K-factor presets controlling rating volatility */
|
|
18
|
+
export type KFactorPreset = 'volatile' | 'standard' | 'stable';
|
|
19
|
+
export declare const K_FACTOR_VALUES: Record<KFactorPreset, number>;
|
|
20
|
+
export declare function isKFactorPreset(value: unknown): value is KFactorPreset;
|
|
21
|
+
/** Map a percentile (0-100) to a semantic label */
|
|
22
|
+
export declare function resolvePercentileLabel(percentile: number): PercentileLabel;
|
|
23
|
+
/** Map rank change to a semantic movement label */
|
|
24
|
+
export declare function resolveMovement(previousRank: number, currentRank: number): Movement;
|
|
25
|
+
/** A dimension for pairwise comparison */
|
|
26
|
+
export type RankingCriterion = {
|
|
27
|
+
id: string;
|
|
28
|
+
name?: string;
|
|
29
|
+
weight: number | SemanticPriority;
|
|
30
|
+
direction: RankingDirection;
|
|
31
|
+
};
|
|
32
|
+
/** Compiled criterion with resolved numeric weight */
|
|
33
|
+
export type CompiledRankingCriterion = {
|
|
34
|
+
id: string;
|
|
35
|
+
name?: string;
|
|
36
|
+
weight: number;
|
|
37
|
+
direction: RankingDirection;
|
|
38
|
+
};
|
|
39
|
+
export type ScoreRankingConfig<T extends TierDefinition = TierDefinition> = {
|
|
40
|
+
direction?: RankingDirection;
|
|
41
|
+
tiers?: T[];
|
|
42
|
+
};
|
|
43
|
+
export type EloConfig = {
|
|
44
|
+
initialRating?: number;
|
|
45
|
+
kFactor?: KFactorPreset | number;
|
|
46
|
+
direction?: RankingDirection;
|
|
47
|
+
};
|
|
48
|
+
export type HeadToHeadConfig = {
|
|
49
|
+
direction?: RankingDirection;
|
|
50
|
+
};
|
|
51
|
+
type RankingRuleSetBase = {
|
|
52
|
+
id: string;
|
|
53
|
+
name?: string;
|
|
54
|
+
mode: 'ranking';
|
|
55
|
+
};
|
|
56
|
+
/** Score strategy: point at a scoring ruleset, rank entities by totalScore */
|
|
57
|
+
export type ScoreRankingRuleSet<T extends TierDefinition = TierDefinition> = RankingRuleSetBase & {
|
|
58
|
+
strategy: 'score';
|
|
59
|
+
scoringRuleset: CompiledScoringRuleSet<T>;
|
|
60
|
+
scoringOptions?: ScoringOptions;
|
|
61
|
+
entityType: string;
|
|
62
|
+
config?: ScoreRankingConfig<T>;
|
|
63
|
+
};
|
|
64
|
+
/** Elo strategy: process match history, compute ratings */
|
|
65
|
+
export type EloRankingRuleSet = RankingRuleSetBase & {
|
|
66
|
+
strategy: 'elo';
|
|
67
|
+
entityType: string;
|
|
68
|
+
matchType?: string;
|
|
69
|
+
config?: EloConfig;
|
|
70
|
+
};
|
|
71
|
+
/** Head-to-head strategy: pairwise comparison on weighted criteria */
|
|
72
|
+
export type HeadToHeadRankingRuleSet = RankingRuleSetBase & {
|
|
73
|
+
strategy: 'head-to-head';
|
|
74
|
+
entityType: string;
|
|
75
|
+
criteria: RankingCriterion[];
|
|
76
|
+
config?: HeadToHeadConfig;
|
|
77
|
+
};
|
|
78
|
+
export type RankingRuleSet<T extends TierDefinition = TierDefinition> = ScoreRankingRuleSet<T> | EloRankingRuleSet | HeadToHeadRankingRuleSet;
|
|
79
|
+
type CompiledRankingRuleSetBase = {
|
|
80
|
+
id: string;
|
|
81
|
+
name?: string;
|
|
82
|
+
mode: 'ranking';
|
|
83
|
+
};
|
|
84
|
+
export type CompiledScoreRankingRuleSet<T extends TierDefinition = TierDefinition> = CompiledRankingRuleSetBase & {
|
|
85
|
+
strategy: 'score';
|
|
86
|
+
scoringRuleset: CompiledScoringRuleSet<T>;
|
|
87
|
+
scoringOptions?: ScoringOptions;
|
|
88
|
+
entityType: string;
|
|
89
|
+
config: {
|
|
90
|
+
direction: RankingDirection;
|
|
91
|
+
tiers?: T[];
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export type CompiledEloRankingRuleSet = CompiledRankingRuleSetBase & {
|
|
95
|
+
strategy: 'elo';
|
|
96
|
+
entityType: string;
|
|
97
|
+
matchType: string;
|
|
98
|
+
config: {
|
|
99
|
+
initialRating: number;
|
|
100
|
+
kFactor: number;
|
|
101
|
+
direction: RankingDirection;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
export type CompiledHeadToHeadRankingRuleSet = CompiledRankingRuleSetBase & {
|
|
105
|
+
strategy: 'head-to-head';
|
|
106
|
+
entityType: string;
|
|
107
|
+
criteria: CompiledRankingCriterion[];
|
|
108
|
+
config: {
|
|
109
|
+
direction: RankingDirection;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export type CompiledRankingRuleSet<T extends TierDefinition = TierDefinition> = CompiledScoreRankingRuleSet<T> | CompiledEloRankingRuleSet | CompiledHeadToHeadRankingRuleSet;
|
|
113
|
+
/** Previous ranking for movement tracking */
|
|
114
|
+
export type PreviousRanking = {
|
|
115
|
+
entityId: string;
|
|
116
|
+
rank: number;
|
|
117
|
+
};
|
|
118
|
+
/** Runtime options */
|
|
119
|
+
export type RankingOptions = {
|
|
120
|
+
previousRankings?: PreviousRanking[];
|
|
121
|
+
onRank?: (entity: RankedEntity) => void;
|
|
122
|
+
};
|
|
123
|
+
/** Per-entity result */
|
|
124
|
+
export type RankedEntity<T extends TierDefinition = TierDefinition> = {
|
|
125
|
+
entityId: string;
|
|
126
|
+
rank: number;
|
|
127
|
+
score: number;
|
|
128
|
+
percentile: number;
|
|
129
|
+
percentileLabel: PercentileLabel;
|
|
130
|
+
tier?: ScoringTierMatch<T>;
|
|
131
|
+
movement?: Movement;
|
|
132
|
+
delta?: number;
|
|
133
|
+
};
|
|
134
|
+
/** Full ranking result */
|
|
135
|
+
export type RankingResult<T extends TierDefinition = TierDefinition> = {
|
|
136
|
+
rankings: RankedEntity<T>[];
|
|
137
|
+
totalEntities: number;
|
|
138
|
+
strategy: RankingStrategy;
|
|
139
|
+
executionTimeMs: number;
|
|
140
|
+
};
|
|
141
|
+
export {};
|
|
142
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/ranking/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ranking Engine Types
|
|
4
|
+
*
|
|
5
|
+
* Comparative scoring engine that ranks N entities relative to each other.
|
|
6
|
+
* Supports score-based ranking, Elo ratings, and head-to-head pairwise comparison.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.K_FACTOR_VALUES = void 0;
|
|
10
|
+
exports.isKFactorPreset = isKFactorPreset;
|
|
11
|
+
exports.resolvePercentileLabel = resolvePercentileLabel;
|
|
12
|
+
exports.resolveMovement = resolveMovement;
|
|
13
|
+
exports.K_FACTOR_VALUES = {
|
|
14
|
+
'volatile': 32, // New entities, fast adjustment
|
|
15
|
+
'standard': 16, // Default
|
|
16
|
+
'stable': 8 // Established entities, slow drift
|
|
17
|
+
};
|
|
18
|
+
function isKFactorPreset(value) {
|
|
19
|
+
return typeof value === 'string' && value in exports.K_FACTOR_VALUES;
|
|
20
|
+
}
|
|
21
|
+
// ========================================
|
|
22
|
+
// Resolver Functions
|
|
23
|
+
// ========================================
|
|
24
|
+
/** Map a percentile (0-100) to a semantic label */
|
|
25
|
+
function resolvePercentileLabel(percentile) {
|
|
26
|
+
if (percentile >= 99)
|
|
27
|
+
return 'top-1%';
|
|
28
|
+
if (percentile >= 95)
|
|
29
|
+
return 'top-5%';
|
|
30
|
+
if (percentile >= 90)
|
|
31
|
+
return 'top-10%';
|
|
32
|
+
if (percentile >= 75)
|
|
33
|
+
return 'top-25%';
|
|
34
|
+
if (percentile >= 50)
|
|
35
|
+
return 'top-50%';
|
|
36
|
+
return 'bottom-half';
|
|
37
|
+
}
|
|
38
|
+
/** Map rank change to a semantic movement label */
|
|
39
|
+
function resolveMovement(previousRank, currentRank) {
|
|
40
|
+
if (currentRank < previousRank)
|
|
41
|
+
return 'climbed'; // lower rank number = better
|
|
42
|
+
if (currentRank > previousRank)
|
|
43
|
+
return 'dropped';
|
|
44
|
+
return 'steady';
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/ranking/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAyCH,0CAEC;AAOD,wDAOC;AAGD,0CAIC;AA7BY,QAAA,eAAe,GAAkC;IAC5D,UAAU,EAAE,EAAE,EAAK,gCAAgC;IACnD,UAAU,EAAE,EAAE,EAAK,UAAU;IAC7B,QAAQ,EAAE,CAAC,CAAQ,mCAAmC;CACvD,CAAC;AAEF,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,uBAAe,CAAC;AAC/D,CAAC;AAED,2CAA2C;AAC3C,qBAAqB;AACrB,2CAA2C;AAE3C,mDAAmD;AACnD,SAAgB,sBAAsB,CAAC,UAAkB;IACvD,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,mDAAmD;AACnD,SAAgB,eAAe,CAAC,YAAoB,EAAE,WAAmB;IACvE,IAAI,WAAW,GAAG,YAAY;QAAE,OAAO,SAAS,CAAC,CAAG,6BAA6B;IACjF,IAAI,WAAW,GAAG,YAAY;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,8 @@ export { PricingStrategy, compilePricingRuleSet, compilePricingRule, pricingStra
|
|
|
55
55
|
export type { CurrencyCode, CurrencyInfo, PricingRule, PricingRuleSet, PricingConfig, PricingComponent, PricingMode, PricingInput, PricingPackage, FlatPricing, GraduatedTier, GraduatedPricing, VolumeBracket, VolumePricing, Meter, MultiMeterPricing, FormulaPricing, Adjustment, DiscountAdjustment, MinimumAdjustment, MaximumAdjustment, Metric, ScenarioDefinition, ScenarioDefinitions, AttributeSchema, ProductType, ResolvedPricingConfig, CompiledPricingRuleSet, CompiledPricingRule, CompiledPricingComponent, CompiledPricingMode, CompiledAdjustment, CompiledMetric, PricingOptions, PricingResult, ScenarioComparisonResult, ScenarioResult, ComponentResult, AdjustmentResult, TierBreakdown, MeterResult, PricingSummary, CalculatorContext, TierCalculationResult } from './engines/pricing';
|
|
56
56
|
export { EnsembleStrategy, compileEnsembleRuleSet, ensembleStrategy, summarizeEnsemble, bayesianMember, fuzzyMember, monteCarloMember, expertMember, scoringMember } from './engines/ensemble';
|
|
57
57
|
export type { FusionStrategy, AgreementLevel, ScoreExtractor, ConfidenceExtractor, ScoringMemberDef, CustomMemberDef, EnsembleMemberDef, StackingConfig, EnsembleConfig, EnsembleRuleSet, CompiledEnsembleMember, CompiledEnsembleRuleSet, EnsembleOptions, MemberResult, EnsembleResult, EnsembleSummaryOptions, BayesianMemberConfig, FuzzyMemberConfig, MonteCarloMemberConfig, ExpertMemberConfig, ScoringMemberConfig } from './engines/ensemble';
|
|
58
|
+
export { RankingEngine, RankingExecutor, compileRankingRuleSet, rankingStrategy, K_FACTOR_VALUES, isKFactorPreset, resolvePercentileLabel, resolveMovement } from './engines/ranking';
|
|
59
|
+
export type { RankingStrategy, RankingDirection, PercentileLabel, Movement, KFactorPreset, RankingCriterion, CompiledRankingCriterion, ScoreRankingConfig, EloConfig, HeadToHeadConfig, ScoreRankingRuleSet, EloRankingRuleSet, HeadToHeadRankingRuleSet, RankingRuleSet, CompiledScoreRankingRuleSet, CompiledEloRankingRuleSet, CompiledHeadToHeadRankingRuleSet, CompiledRankingRuleSet, PreviousRanking, RankingOptions, RankedEntity, RankingResult } from './engines/ranking';
|
|
58
60
|
export { soundex, nysiis, caverphone2, cosineSimilarity } from './functions';
|
|
59
61
|
export { BOEError, CompilationError, RuntimeError } from './core/errors';
|
|
60
62
|
export type { ErrorContext } from './core/errors';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,cAAc,QAAQ,CAAC;AAOvB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,SAAS,EACT,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,WAAW,EAEX,UAAU,EACV,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAEV,YAAY,EACZ,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,WAAW,EAEX,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAC3E,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EAAE,iBAAiB,EAAE,sBAAsB,EAC/D,kBAAkB,EAAE,mBAAmB,EACxC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
30
30
|
};
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.UtilityStrategy = exports.SEMANTIC_WEIGHTS = exports.constraintStrategy = exports.compileConstraintRuleSet = exports.ConstraintStrategy = exports.stateMachineStrategy = exports.compileStateMachineDefinition = exports.compileStateMachine = exports.StateMachineStrategy = exports.monteCarloStrategy = exports.compileMonteCarloRuleSet = exports.MonteCarloStrategy = exports.SEMANTIC_LIKELIHOODS = exports.parseLikelihood = exports.bayesianStrategy = exports.compileBayesianRule = exports.compileBayesianRuleSet = exports.BayesianStrategy = exports.autoAdjustCoverage = exports.analyzeCoverage = exports.compileFuzzyVariable = exports.fuzzyStrategy = exports.compileFuzzyRuleSet = exports.FuzzyStrategy = exports.sequentialStrategy = exports.compileSequentialRuleSet = exports.SequentialStrategy = exports.createScoreFunction = exports.scoringStrategy = exports.compileScoringRuleSet = exports.ScoringStrategy = exports.backwardStrategy = exports.compileBackwardRuleSet = exports.BackwardChainingStrategy = exports.forwardStrategy = exports.compileForwardRule = exports.compileForwardRuleSet = exports.ForwardChainingStrategy = exports.EnsembleEngine = exports.PricingEngine = exports.UtilityEngine = exports.ConstraintEngine = exports.StateMachineEngine = exports.MonteCarloEngine = exports.BayesianEngine = exports.FuzzyEngine = exports.SequentialEngine = exports.ScoringEngine = exports.BackwardEngine = exports.ForwardEngine = void 0;
|
|
33
|
-
exports.
|
|
33
|
+
exports.cosineSimilarity = exports.caverphone2 = exports.nysiis = exports.soundex = exports.resolveMovement = exports.resolvePercentileLabel = exports.isKFactorPreset = exports.K_FACTOR_VALUES = exports.rankingStrategy = exports.compileRankingRuleSet = exports.RankingExecutor = exports.RankingEngine = exports.scoringMember = exports.expertMember = exports.monteCarloMember = exports.fuzzyMember = exports.bayesianMember = exports.summarizeEnsemble = exports.ensembleStrategy = exports.compileEnsembleRuleSet = exports.EnsembleStrategy = exports.getCurrencyInfo = exports.CURRENCIES = exports.applyMinMax = exports.calculateDiscount = exports.round = exports.formatPercent = exports.formatNumber = exports.formatCurrency = exports.calculateVolume = exports.calculateGraduated = exports.calculateFlat = exports.pricingEngine = exports.pricingStrategy = exports.compilePricingRule = exports.compilePricingRuleSet = exports.PricingStrategy = exports.buildAvailableRefs = exports.hasInterpolation = exports.interpolate = exports.compileTemplate = exports.expertStrategy = exports.compileExpertRuleSet = exports.ExpertStrategy = exports.ExpertEngine = exports.compileDefeasibleRuleSet = exports.DefeasibleEngine = exports.utilityStrategy = exports.compileUtilityRule = exports.compileUtilityRuleSet = void 0;
|
|
34
|
+
exports.resolveDecayTimestamp = exports.calculateDecayMultiplier = exports.RuntimeError = exports.CompilationError = exports.BOEError = void 0;
|
|
34
35
|
// ========================================
|
|
35
36
|
// Engines
|
|
36
37
|
// ========================================
|
|
@@ -175,6 +176,16 @@ Object.defineProperty(exports, "fuzzyMember", { enumerable: true, get: function
|
|
|
175
176
|
Object.defineProperty(exports, "monteCarloMember", { enumerable: true, get: function () { return ensemble_2.monteCarloMember; } });
|
|
176
177
|
Object.defineProperty(exports, "expertMember", { enumerable: true, get: function () { return ensemble_2.expertMember; } });
|
|
177
178
|
Object.defineProperty(exports, "scoringMember", { enumerable: true, get: function () { return ensemble_2.scoringMember; } });
|
|
179
|
+
// Ranking
|
|
180
|
+
var ranking_1 = require("./engines/ranking");
|
|
181
|
+
Object.defineProperty(exports, "RankingEngine", { enumerable: true, get: function () { return ranking_1.RankingEngine; } });
|
|
182
|
+
Object.defineProperty(exports, "RankingExecutor", { enumerable: true, get: function () { return ranking_1.RankingExecutor; } });
|
|
183
|
+
Object.defineProperty(exports, "compileRankingRuleSet", { enumerable: true, get: function () { return ranking_1.compileRankingRuleSet; } });
|
|
184
|
+
Object.defineProperty(exports, "rankingStrategy", { enumerable: true, get: function () { return ranking_1.rankingStrategy; } });
|
|
185
|
+
Object.defineProperty(exports, "K_FACTOR_VALUES", { enumerable: true, get: function () { return ranking_1.K_FACTOR_VALUES; } });
|
|
186
|
+
Object.defineProperty(exports, "isKFactorPreset", { enumerable: true, get: function () { return ranking_1.isKFactorPreset; } });
|
|
187
|
+
Object.defineProperty(exports, "resolvePercentileLabel", { enumerable: true, get: function () { return ranking_1.resolvePercentileLabel; } });
|
|
188
|
+
Object.defineProperty(exports, "resolveMovement", { enumerable: true, get: function () { return ranking_1.resolveMovement; } });
|
|
178
189
|
// ========================================
|
|
179
190
|
// Utility Functions (from old modules, re-exported for convenience)
|
|
180
191
|
// ========================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@higher.archi/boe",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"description": "A multi-strategy rule engine supporting forward chaining, backward chaining, scoring, sequential, fuzzy logic, and Bayesian inference",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/core/types/rule.ts
CHANGED
|
@@ -37,7 +37,7 @@ export type ValidityDuration = {
|
|
|
37
37
|
// Base Rule Types
|
|
38
38
|
// ========================================
|
|
39
39
|
|
|
40
|
-
export type RuleSetMode = "forward" | "scoring" | "backward" | "sequential" | "fuzzy" | "bayesian" | "monte-carlo" | "state-machine" | "constraint" | "utility" | "defeasible" | "expert" | "pricing" | "ensemble";
|
|
40
|
+
export type RuleSetMode = "forward" | "scoring" | "backward" | "sequential" | "fuzzy" | "bayesian" | "monte-carlo" | "state-machine" | "constraint" | "utility" | "defeasible" | "expert" | "pricing" | "ensemble" | "ranking";
|
|
41
41
|
|
|
42
42
|
export type BaseRule = {
|
|
43
43
|
id: string; // Unique identifier (system-generated or explicit)
|