@higher.archi/boe 1.0.1 → 1.0.2
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/engines/scoring/compiler.d.ts.map +1 -1
- package/dist/engines/scoring/compiler.js +32 -2
- package/dist/engines/scoring/compiler.js.map +1 -1
- package/dist/engines/scoring/index.d.ts +1 -1
- package/dist/engines/scoring/index.d.ts.map +1 -1
- package/dist/engines/scoring/index.js.map +1 -1
- package/dist/engines/scoring/strategy.d.ts.map +1 -1
- package/dist/engines/scoring/strategy.js +125 -1
- package/dist/engines/scoring/strategy.js.map +1 -1
- package/dist/engines/scoring/types.d.ts +111 -1
- package/dist/engines/scoring/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/engines/scoring/compiler.ts +45 -3
- package/src/engines/scoring/index.ts +12 -0
- package/src/engines/scoring/strategy.ts +135 -2
- package/src/engines/scoring/types.ts +133 -0
- package/src/index.ts +12 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/compiler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EACL,WAAW,EACX,cAAc,EAEd,mBAAmB,EACnB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/compiler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EACL,WAAW,EACX,cAAc,EAEd,mBAAmB,EACnB,sBAAsB,EAIvB,MAAM,SAAS,CAAC;AAmFjB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAE,MAAU,GAAG,mBAAmB,CAe5F;AAkBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,sBAAsB,CA4ErF"}
|
|
@@ -91,6 +91,16 @@ function compileScoringRule(rule, index = 0) {
|
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
// ========================================
|
|
94
|
+
// Override Compilation
|
|
95
|
+
// ========================================
|
|
96
|
+
function compileOverride(override) {
|
|
97
|
+
const { condition, ...rest } = override;
|
|
98
|
+
return {
|
|
99
|
+
...rest,
|
|
100
|
+
condition: (0, core_1.compileCondition)(condition)
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// ========================================
|
|
94
104
|
// RuleSet Compilation
|
|
95
105
|
// ========================================
|
|
96
106
|
function compileScoringRuleSet(ruleSet) {
|
|
@@ -115,6 +125,24 @@ function compileScoringRuleSet(ruleSet) {
|
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
127
|
}
|
|
128
|
+
// Validate and compile overrides if defined
|
|
129
|
+
const overrides = ruleSet.config?.overrides;
|
|
130
|
+
let compiledOverrides;
|
|
131
|
+
if (overrides?.length) {
|
|
132
|
+
const tierIds = new Set((ruleSet.config?.tiers ?? []).map(t => t.id));
|
|
133
|
+
for (const override of overrides) {
|
|
134
|
+
// Validate tier effects reference valid tiers
|
|
135
|
+
if (override.effect === 'force_tier' || override.effect === 'floor_tier' || override.effect === 'cap_tier') {
|
|
136
|
+
if (!tierIds.size) {
|
|
137
|
+
throw new Error(`Override "${override.id}" uses effect "${override.effect}" but no tiers are defined.`);
|
|
138
|
+
}
|
|
139
|
+
if (!tierIds.has(override.targetTier)) {
|
|
140
|
+
throw new Error(`Override "${override.id}" references unknown tier "${override.targetTier}". Valid tiers: ${[...tierIds].join(', ')}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
compiledOverrides = overrides.map(compileOverride);
|
|
145
|
+
}
|
|
118
146
|
const config = {
|
|
119
147
|
mode: 'scoring',
|
|
120
148
|
strategies: ruleSet.config?.strategies ?? ['raw'],
|
|
@@ -122,7 +150,8 @@ function compileScoringRuleSet(ruleSet) {
|
|
|
122
150
|
outputBounds: ruleSet.config?.outputBounds,
|
|
123
151
|
baseScore: ruleSet.config?.baseScore,
|
|
124
152
|
tiers: ruleSet.config?.tiers,
|
|
125
|
-
categories
|
|
153
|
+
categories,
|
|
154
|
+
overrides
|
|
126
155
|
};
|
|
127
156
|
return {
|
|
128
157
|
id: ruleSet.id,
|
|
@@ -130,7 +159,8 @@ function compileScoringRuleSet(ruleSet) {
|
|
|
130
159
|
mode: 'scoring',
|
|
131
160
|
schema: ruleSet.shape ? (0, core_1.normalizeShape)(ruleSet.shape) : { type: 'object' },
|
|
132
161
|
rules: ruleSet.rules.map((rule, index) => compileScoringRule(rule, index)),
|
|
133
|
-
config
|
|
162
|
+
config,
|
|
163
|
+
overrides: compiledOverrides
|
|
134
164
|
};
|
|
135
165
|
}
|
|
136
166
|
//# sourceMappingURL=compiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/engines/scoring/compiler.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/engines/scoring/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides scoring-based rule execution where rules contribute
|
|
5
5
|
* scores that are accumulated into a total score.
|
|
6
6
|
*/
|
|
7
|
-
export { ScoringMethod, ScoringCaps, OutputBounds, TierDefinition, ScoringTierMatch, ScoringCategory, CategoryResult, ScoringAction, ScoringRule, ScoringRuleSet, ScoringConfig, CompiledScoringAction, CompiledScoringRule, CompiledScoringRuleSet, ScoreFunction, ScoreFunctionRegistry, ScoringOptions, ScoringResult } from './types';
|
|
7
|
+
export { ScoringMethod, ScoringCaps, OutputBounds, TierDefinition, ScoringTierMatch, ScoringCategory, CategoryResult, OverrideEffect, OverrideDefinition, ForceTierOverride, FloorTierOverride, CapTierOverride, ExcludeOverride, AdjustScoreOverride, ClampScoreOverride, ForceScoreOverride, OverrideResult, CompiledOverrideDefinition, ScoringAction, ScoringRule, ScoringRuleSet, ScoringConfig, CompiledScoringAction, CompiledScoringRule, CompiledScoringRuleSet, ScoreFunction, ScoreFunctionRegistry, ScoringOptions, ScoringResult } from './types';
|
|
8
8
|
export { compileScoringRule, compileScoringRuleSet } from './compiler';
|
|
9
9
|
export { ScoringStrategy, scoringStrategy } from './strategy';
|
|
10
10
|
export { ScoringEngine } from './engine';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,aAAa,EACb,WAAW,EACX,YAAY,EAEZ,cAAc,EACd,gBAAgB,EAEhB,eAAe,EACf,cAAc,EAEd,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EAEb,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EAEtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,aAAa,EACb,WAAW,EACX,YAAY,EAEZ,cAAc,EACd,gBAAgB,EAEhB,eAAe,EACf,cAAc,EAEd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAE1B,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EAEb,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EAEtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/scoring/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/scoring/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA0CH,WAAW;AACX,uCAGoB;AAFlB,8GAAA,kBAAkB,OAAA;AAClB,iHAAA,qBAAqB,OAAA;AAGvB,WAAW;AACX,uCAGoB;AAFlB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAGjB,SAAS;AACT,mCAAyC;AAAhC,uGAAA,aAAa,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,sBAAsB,EAEtB,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,sBAAsB,EAEtB,cAAc,EACd,aAAa,EAKd,MAAM,SAAS,CAAC;AAEjB,qBAAa,eAAe;IAC1B,GAAG,CACD,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,cAAmB,GAC3B,aAAa;CAiYjB;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -208,7 +208,7 @@ class ScoringStrategy {
|
|
|
208
208
|
}
|
|
209
209
|
// Calculate total score (base score + contributions)
|
|
210
210
|
const baseScore = config.baseScore ?? 0;
|
|
211
|
-
|
|
211
|
+
let totalScore = baseScore + Object.values(contributions).reduce((sum, score) => sum + score, 0);
|
|
212
212
|
// Match tier if tiers are configured
|
|
213
213
|
let tier;
|
|
214
214
|
if (config.tiers && config.tiers.length > 0) {
|
|
@@ -229,6 +229,129 @@ class ScoringStrategy {
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
|
+
// Phase 4: Override evaluation
|
|
233
|
+
let overrideResult;
|
|
234
|
+
if (ruleSet.overrides?.length && ruleSet.overrides.length > 0) {
|
|
235
|
+
// Build a BindingContext from all facts in working memory (type name -> fact)
|
|
236
|
+
const allFacts = wm.getAll();
|
|
237
|
+
const context = {};
|
|
238
|
+
for (const fact of allFacts) {
|
|
239
|
+
// Use lowercase type name as the binding key (e.g., Deal -> deal)
|
|
240
|
+
const key = fact.type.charAt(0).toLowerCase() + fact.type.slice(1);
|
|
241
|
+
context[key] = fact;
|
|
242
|
+
}
|
|
243
|
+
// Helper to resolve tier threshold for ranking
|
|
244
|
+
const resolveThreshold = (t) => t === '-Infinity' ? Number.NEGATIVE_INFINITY : t;
|
|
245
|
+
// Build tier lookup and ranking
|
|
246
|
+
const tierMap = new Map();
|
|
247
|
+
const sortedTierIds = [];
|
|
248
|
+
if (config.tiers?.length) {
|
|
249
|
+
const sorted = [...config.tiers].sort((a, b) => resolveThreshold(b.threshold) - resolveThreshold(a.threshold));
|
|
250
|
+
for (const t of sorted) {
|
|
251
|
+
tierMap.set(t.id, t);
|
|
252
|
+
sortedTierIds.push(t.id);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const tierRank = (tierId) => {
|
|
256
|
+
if (!tierId)
|
|
257
|
+
return -1;
|
|
258
|
+
const idx = sortedTierIds.indexOf(tierId);
|
|
259
|
+
return idx === -1 ? -1 : sortedTierIds.length - idx; // higher rank = higher tier
|
|
260
|
+
};
|
|
261
|
+
const findTier = (tierId) => {
|
|
262
|
+
const def = tierMap.get(tierId);
|
|
263
|
+
if (!def)
|
|
264
|
+
return undefined;
|
|
265
|
+
return {
|
|
266
|
+
id: def.id,
|
|
267
|
+
name: def.name,
|
|
268
|
+
description: def.description,
|
|
269
|
+
threshold: resolveThreshold(def.threshold)
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
// Evaluate overrides in order — first match wins
|
|
273
|
+
for (const override of ruleSet.overrides) {
|
|
274
|
+
let matched;
|
|
275
|
+
try {
|
|
276
|
+
matched = (0, core_1.evaluateCondition)(override.condition, context);
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
matched = false;
|
|
280
|
+
}
|
|
281
|
+
if (!matched)
|
|
282
|
+
continue;
|
|
283
|
+
const originalScore = totalScore;
|
|
284
|
+
const originalTier = tier ? { ...tier } : undefined;
|
|
285
|
+
switch (override.effect) {
|
|
286
|
+
case 'force_tier': {
|
|
287
|
+
tier = findTier(override.targetTier);
|
|
288
|
+
if (override.score !== undefined) {
|
|
289
|
+
totalScore = override.score;
|
|
290
|
+
}
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
case 'floor_tier': {
|
|
294
|
+
if (tierRank(tier?.id) < tierRank(override.targetTier)) {
|
|
295
|
+
tier = findTier(override.targetTier);
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
case 'cap_tier': {
|
|
300
|
+
if (tierRank(tier?.id) > tierRank(override.targetTier)) {
|
|
301
|
+
tier = findTier(override.targetTier);
|
|
302
|
+
}
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
case 'exclude': {
|
|
306
|
+
const executionTimeMs = Math.round((performance.now() - startTime) * 100) / 100;
|
|
307
|
+
return {
|
|
308
|
+
totalScore: 0,
|
|
309
|
+
contributions: {},
|
|
310
|
+
fired: [],
|
|
311
|
+
iterations: 1,
|
|
312
|
+
override: {
|
|
313
|
+
id: override.id,
|
|
314
|
+
effect: 'exclude',
|
|
315
|
+
originalScore,
|
|
316
|
+
originalTier,
|
|
317
|
+
applied: true
|
|
318
|
+
},
|
|
319
|
+
categoryBreakdown,
|
|
320
|
+
executionTimeMs
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
case 'adjust_score': {
|
|
324
|
+
totalScore += override.value;
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case 'clamp_score': {
|
|
328
|
+
if (override.min !== undefined)
|
|
329
|
+
totalScore = Math.max(override.min, totalScore);
|
|
330
|
+
if (override.max !== undefined)
|
|
331
|
+
totalScore = Math.min(override.max, totalScore);
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
case 'force_score': {
|
|
335
|
+
if (typeof override.score === 'number') {
|
|
336
|
+
totalScore = override.score;
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
const result = (0, core_1.evaluateCondition)(override.score, context);
|
|
340
|
+
totalScore = typeof result === 'number' ? result : 0;
|
|
341
|
+
}
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
overrideResult = {
|
|
346
|
+
id: override.id,
|
|
347
|
+
effect: override.effect,
|
|
348
|
+
originalScore,
|
|
349
|
+
originalTier,
|
|
350
|
+
applied: true
|
|
351
|
+
};
|
|
352
|
+
break; // first match wins
|
|
353
|
+
}
|
|
354
|
+
}
|
|
232
355
|
const executionTimeMs = Math.round((performance.now() - startTime) * 100) / 100;
|
|
233
356
|
return {
|
|
234
357
|
totalScore,
|
|
@@ -237,6 +360,7 @@ class ScoringStrategy {
|
|
|
237
360
|
iterations: 1,
|
|
238
361
|
tier,
|
|
239
362
|
categoryBreakdown,
|
|
363
|
+
override: overrideResult,
|
|
240
364
|
executionTimeMs
|
|
241
365
|
};
|
|
242
366
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/scoring/strategy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/scoring/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scoring Engine Types
|
|
3
3
|
*/
|
|
4
|
-
import { BaseRule, BaseRuleSet, CompiledBaseRule, CompiledBaseRuleSet, CompiledCondition, Expression, BindingContext } from '../../core';
|
|
4
|
+
import { BaseRule, BaseRuleSet, CompiledBaseRule, CompiledBaseRuleSet, CompiledCondition, Condition, Expression, BindingContext } from '../../core';
|
|
5
5
|
/**
|
|
6
6
|
* Scoring methods control how scores are normalized and combined
|
|
7
7
|
*
|
|
@@ -93,6 +93,93 @@ export type CategoryResult = {
|
|
|
93
93
|
signalsMissing: string[];
|
|
94
94
|
excluded: boolean;
|
|
95
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* Override effect types
|
|
98
|
+
*/
|
|
99
|
+
export type OverrideEffect = 'force_tier' | 'floor_tier' | 'cap_tier' | 'exclude' | 'adjust_score' | 'clamp_score' | 'force_score';
|
|
100
|
+
/**
|
|
101
|
+
* Base override fields shared by all effects
|
|
102
|
+
*/
|
|
103
|
+
type BaseOverride = {
|
|
104
|
+
id: string;
|
|
105
|
+
condition: Condition;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Force tier — override to exact tier, optionally replace score
|
|
109
|
+
*/
|
|
110
|
+
export type ForceTierOverride = BaseOverride & {
|
|
111
|
+
effect: 'force_tier';
|
|
112
|
+
targetTier: string;
|
|
113
|
+
score?: number;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Floor tier — set minimum tier (bump up if below)
|
|
117
|
+
*/
|
|
118
|
+
export type FloorTierOverride = BaseOverride & {
|
|
119
|
+
effect: 'floor_tier';
|
|
120
|
+
targetTier: string;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Cap tier — set maximum tier (cap down if above)
|
|
124
|
+
*/
|
|
125
|
+
export type CapTierOverride = BaseOverride & {
|
|
126
|
+
effect: 'cap_tier';
|
|
127
|
+
targetTier: string;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Exclude — nullify the entire scoring result
|
|
131
|
+
*/
|
|
132
|
+
export type ExcludeOverride = BaseOverride & {
|
|
133
|
+
effect: 'exclude';
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Adjust score — add/subtract from total score
|
|
137
|
+
*/
|
|
138
|
+
export type AdjustScoreOverride = BaseOverride & {
|
|
139
|
+
effect: 'adjust_score';
|
|
140
|
+
value: number;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Clamp score — enforce floor/ceiling on the score
|
|
144
|
+
*/
|
|
145
|
+
export type ClampScoreOverride = BaseOverride & {
|
|
146
|
+
effect: 'clamp_score';
|
|
147
|
+
min?: number;
|
|
148
|
+
max?: number;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Force score — replace the total score entirely
|
|
152
|
+
*/
|
|
153
|
+
export type ForceScoreOverride = BaseOverride & {
|
|
154
|
+
effect: 'force_score';
|
|
155
|
+
score: number | Expression;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Discriminated union of all override definitions
|
|
159
|
+
*
|
|
160
|
+
* Overrides are evaluated post-scoring in order — first match wins.
|
|
161
|
+
* Each effect type has its own required fields enforced by TypeScript.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* const overrides: OverrideDefinition[] = [
|
|
166
|
+
* { id: 'closed-won', condition: ['equals', '$deal.stage', 'Closed Won'], effect: 'force_tier', targetTier: 'strong', score: 1000 },
|
|
167
|
+
* { id: 'fraud-flag', condition: ['equals', '$app.fraud', true], effect: 'exclude' },
|
|
168
|
+
* { id: 'vip-bonus', condition: ['equals', '$customer.vip', true], effect: 'adjust_score', value: 50 }
|
|
169
|
+
* ];
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export type OverrideDefinition = ForceTierOverride | FloorTierOverride | CapTierOverride | ExcludeOverride | AdjustScoreOverride | ClampScoreOverride | ForceScoreOverride;
|
|
173
|
+
/**
|
|
174
|
+
* Override result — attached to ScoringResult when an override fires
|
|
175
|
+
*/
|
|
176
|
+
export type OverrideResult = {
|
|
177
|
+
id: string;
|
|
178
|
+
effect: OverrideEffect;
|
|
179
|
+
originalScore: number;
|
|
180
|
+
originalTier?: ScoringTierMatch;
|
|
181
|
+
applied: true;
|
|
182
|
+
};
|
|
96
183
|
/**
|
|
97
184
|
* Scoring action - contributes a score when rule matches
|
|
98
185
|
*/
|
|
@@ -131,6 +218,7 @@ export type ScoringConfig = {
|
|
|
131
218
|
baseScore?: number;
|
|
132
219
|
tiers?: TierDefinition[];
|
|
133
220
|
categories?: ScoringCategory[];
|
|
221
|
+
overrides?: OverrideDefinition[];
|
|
134
222
|
};
|
|
135
223
|
/**
|
|
136
224
|
* Compiled scoring action
|
|
@@ -152,6 +240,25 @@ export type CompiledScoringRule = CompiledBaseRule & {
|
|
|
152
240
|
category?: string;
|
|
153
241
|
action: CompiledScoringAction;
|
|
154
242
|
};
|
|
243
|
+
/**
|
|
244
|
+
* Compiled override — replaces source Condition with CompiledCondition
|
|
245
|
+
* Each variant preserves its effect-specific fields
|
|
246
|
+
*/
|
|
247
|
+
export type CompiledOverrideDefinition = (Omit<ForceTierOverride, 'condition'> & {
|
|
248
|
+
condition: CompiledCondition;
|
|
249
|
+
}) | (Omit<FloorTierOverride, 'condition'> & {
|
|
250
|
+
condition: CompiledCondition;
|
|
251
|
+
}) | (Omit<CapTierOverride, 'condition'> & {
|
|
252
|
+
condition: CompiledCondition;
|
|
253
|
+
}) | (Omit<ExcludeOverride, 'condition'> & {
|
|
254
|
+
condition: CompiledCondition;
|
|
255
|
+
}) | (Omit<AdjustScoreOverride, 'condition'> & {
|
|
256
|
+
condition: CompiledCondition;
|
|
257
|
+
}) | (Omit<ClampScoreOverride, 'condition'> & {
|
|
258
|
+
condition: CompiledCondition;
|
|
259
|
+
}) | (Omit<ForceScoreOverride, 'condition'> & {
|
|
260
|
+
condition: CompiledCondition;
|
|
261
|
+
});
|
|
155
262
|
/**
|
|
156
263
|
* Compiled scoring ruleset
|
|
157
264
|
*/
|
|
@@ -159,6 +266,7 @@ export type CompiledScoringRuleSet = CompiledBaseRuleSet & {
|
|
|
159
266
|
mode: 'scoring';
|
|
160
267
|
rules: CompiledScoringRule[];
|
|
161
268
|
config: ScoringConfig;
|
|
269
|
+
overrides?: CompiledOverrideDefinition[];
|
|
162
270
|
};
|
|
163
271
|
/**
|
|
164
272
|
* Score function for dynamic scoring
|
|
@@ -185,6 +293,8 @@ export type ScoringResult = {
|
|
|
185
293
|
iterations: 1;
|
|
186
294
|
tier?: ScoringTierMatch;
|
|
187
295
|
categoryBreakdown?: CategoryResult[];
|
|
296
|
+
override?: OverrideResult;
|
|
188
297
|
executionTimeMs: number;
|
|
189
298
|
};
|
|
299
|
+
export {};
|
|
190
300
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/scoring/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export type { ForwardRule, ForwardRuleSet, ForwardConfig, CompiledForwardRuleSet
|
|
|
30
30
|
export { BackwardChainingStrategy, compileBackwardRuleSet, backwardStrategy } from './engines/backward';
|
|
31
31
|
export type { BackwardRule, BackwardRuleSet, BackwardConfig, CompiledBackwardRuleSet, BackwardOptions, BackwardResult, ProofStep, ProofResult } from './engines/backward';
|
|
32
32
|
export { ScoringStrategy, compileScoringRuleSet, scoringStrategy } from './engines/scoring';
|
|
33
|
-
export type { ScoringRule, ScoringRuleSet, ScoringConfig, CompiledScoringRuleSet, ScoringOptions, ScoringResult, ScoreFunctionRegistry, ScoringMethod, OutputBounds, ScoringCategory, CategoryResult } from './engines/scoring';
|
|
33
|
+
export type { ScoringRule, ScoringRuleSet, ScoringConfig, CompiledScoringRuleSet, ScoringOptions, ScoringResult, ScoreFunctionRegistry, ScoringMethod, OutputBounds, ScoringCategory, CategoryResult, OverrideEffect, OverrideDefinition, ForceTierOverride, FloorTierOverride, CapTierOverride, ExcludeOverride, AdjustScoreOverride, ClampScoreOverride, ForceScoreOverride, OverrideResult, CompiledOverrideDefinition } from './engines/scoring';
|
|
34
34
|
export { SequentialStrategy, compileSequentialRuleSet, sequentialStrategy } from './engines/sequential';
|
|
35
35
|
export type { SequentialRule, SequentialRuleSet, SequentialConfig, CompiledSequentialRuleSet, SequentialOptions, SequentialResult } from './engines/sequential';
|
|
36
36
|
export { FuzzyStrategy, compileFuzzyRuleSet, fuzzyStrategy, compileFuzzyVariable, analyzeCoverage, autoAdjustCoverage } from './engines/fuzzy';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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;AAMlD,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,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAC3B,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,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;AAM3B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;AAEH,2CAA2C;AAC3C,UAAU;AACV,2CAA2C;AAE3C,iEAAiE;AACjE,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,+CAAoD;AAA3C,0GAAA,cAAc,OAAA;AACvB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AACzB,yCAA8C;AAArC,oGAAA,WAAW,OAAA;AACpB,+CAAoD;AAA3C,0GAAA,cAAc,OAAA;AACvB,qDAAyD;AAAhD,+GAAA,gBAAgB,OAAA;AACzB,yDAA6D;AAApD,mHAAA,kBAAkB,OAAA;AAC3B,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AACzB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AAEtB,2CAA2C;AAC3C,yBAAyB;AACzB,2CAA2C;AAE3C,yCAAuB;AAEvB,2CAA2C;AAC3C,UAAU;AACV,2CAA2C;AAE3C,mBAAmB;AACnB,6CAK2B;AAJzB,kHAAA,uBAAuB,OAAA;AACvB,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AAcjB,oBAAoB;AACpB,+CAI4B;AAH1B,oHAAA,wBAAwB,OAAA;AACxB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAalB,UAAU;AACV,6CAI2B;AAHzB,0GAAA,eAAe,OAAA;AACf,gHAAA,qBAAqB,OAAA;AACrB,0GAAA,eAAe,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;AAEH,2CAA2C;AAC3C,UAAU;AACV,2CAA2C;AAE3C,iEAAiE;AACjE,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,+CAAoD;AAA3C,0GAAA,cAAc,OAAA;AACvB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AACzB,yCAA8C;AAArC,oGAAA,WAAW,OAAA;AACpB,+CAAoD;AAA3C,0GAAA,cAAc,OAAA;AACvB,qDAAyD;AAAhD,+GAAA,gBAAgB,OAAA;AACzB,yDAA6D;AAApD,mHAAA,kBAAkB,OAAA;AAC3B,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AACzB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AAEtB,2CAA2C;AAC3C,yBAAyB;AACzB,2CAA2C;AAE3C,yCAAuB;AAEvB,2CAA2C;AAC3C,UAAU;AACV,2CAA2C;AAE3C,mBAAmB;AACnB,6CAK2B;AAJzB,kHAAA,uBAAuB,OAAA;AACvB,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AAcjB,oBAAoB;AACpB,+CAI4B;AAH1B,oHAAA,wBAAwB,OAAA;AACxB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAalB,UAAU;AACV,6CAI2B;AAHzB,0GAAA,eAAe,OAAA;AACf,gHAAA,qBAAqB,OAAA;AACrB,0GAAA,eAAe,OAAA;AA2BjB,aAAa;AACb,mDAI8B;AAH5B,gHAAA,kBAAkB,OAAA;AAClB,sHAAA,wBAAwB,OAAA;AACxB,gHAAA,kBAAkB,OAAA;AAWpB,QAAQ;AACR,yCAOyB;AANvB,sGAAA,aAAa,OAAA;AACb,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,6GAAA,oBAAoB,OAAA;AACpB,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAepB,WAAW;AACX,+CAO4B;AAN1B,4GAAA,gBAAgB,OAAA;AAChB,kHAAA,sBAAsB,OAAA;AACtB,+GAAA,mBAAmB,OAAA;AACnB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,gHAAA,oBAAoB,OAAA;AAmBtB,cAAc;AACd,qDAI+B;AAH7B,iHAAA,kBAAkB,OAAA;AAClB,uHAAA,wBAAwB,OAAA;AACxB,iHAAA,kBAAkB,OAAA;AAapB,gBAAgB;AAChB,yDAKiC;AAJ/B,qHAAA,oBAAoB,OAAA;AACpB,oHAAA,mBAAmB,OAAA;AACnB,8HAAA,6BAA6B,OAAA;AAC7B,qHAAA,oBAAoB,OAAA;AAatB,0BAA0B;AAC1B,mDAI8B;AAH5B,gHAAA,kBAAkB,OAAA;AAClB,sHAAA,wBAAwB,OAAA;AACxB,gHAAA,kBAAkB,OAAA;AAiBpB,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AAEzB,eAAe;AACf,6CAK2B;AAJzB,0GAAA,eAAe,OAAA;AACf,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AAkBjB,aAAa;AACb,mDAG8B;AAF5B,8GAAA,gBAAgB,OAAA;AAChB,sHAAA,wBAAwB,OAAA;AAW1B,gBAAgB;AAChB,2CAS0B;AARxB,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,8GAAA,oBAAoB,OAAA;AACpB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AACf,qGAAA,WAAW,OAAA;AACX,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAkBpB,2CAA2C;AAC3C,oEAAoE;AACpE,2CAA2C;AAE3C,iBAAiB;AACjB,6CAkB2B;AAjBzB,0GAAA,eAAe,OAAA;AACf,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AACf,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AACf,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,gGAAA,KAAK,OAAA;AACL,4GAAA,iBAAiB,OAAA;AACjB,sGAAA,WAAW,OAAA;AACX,qBAAqB;AACrB,qGAAA,UAAU,OAAA;AACV,0GAAA,eAAe,OAAA;AAqDjB,2CAA2C;AAC3C,oEAAoE;AACpE,2CAA2C;AAE3C,yCAA6E;AAApE,oGAAA,OAAO,OAAA;AAAE,mGAAA,MAAM,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,6GAAA,gBAAgB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@higher.archi/boe",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
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",
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
ScoringConfig,
|
|
15
15
|
CompiledScoringRule,
|
|
16
16
|
CompiledScoringRuleSet,
|
|
17
|
-
CompiledScoringAction
|
|
17
|
+
CompiledScoringAction,
|
|
18
|
+
CompiledOverrideDefinition,
|
|
19
|
+
OverrideDefinition
|
|
18
20
|
} from './types';
|
|
19
21
|
|
|
20
22
|
// ========================================
|
|
@@ -115,6 +117,18 @@ export function compileScoringRule(rule: ScoringRule, index: number = 0): Compil
|
|
|
115
117
|
};
|
|
116
118
|
}
|
|
117
119
|
|
|
120
|
+
// ========================================
|
|
121
|
+
// Override Compilation
|
|
122
|
+
// ========================================
|
|
123
|
+
|
|
124
|
+
function compileOverride(override: OverrideDefinition): CompiledOverrideDefinition {
|
|
125
|
+
const { condition, ...rest } = override;
|
|
126
|
+
return {
|
|
127
|
+
...rest,
|
|
128
|
+
condition: compileCondition(condition as Condition)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
118
132
|
// ========================================
|
|
119
133
|
// RuleSet Compilation
|
|
120
134
|
// ========================================
|
|
@@ -149,6 +163,32 @@ export function compileScoringRuleSet(ruleSet: ScoringRuleSet): CompiledScoringR
|
|
|
149
163
|
}
|
|
150
164
|
}
|
|
151
165
|
|
|
166
|
+
// Validate and compile overrides if defined
|
|
167
|
+
const overrides = ruleSet.config?.overrides;
|
|
168
|
+
let compiledOverrides: CompiledOverrideDefinition[] | undefined;
|
|
169
|
+
|
|
170
|
+
if (overrides?.length) {
|
|
171
|
+
const tierIds = new Set((ruleSet.config?.tiers ?? []).map(t => t.id));
|
|
172
|
+
|
|
173
|
+
for (const override of overrides) {
|
|
174
|
+
// Validate tier effects reference valid tiers
|
|
175
|
+
if (override.effect === 'force_tier' || override.effect === 'floor_tier' || override.effect === 'cap_tier') {
|
|
176
|
+
if (!tierIds.size) {
|
|
177
|
+
throw new Error(
|
|
178
|
+
`Override "${override.id}" uses effect "${override.effect}" but no tiers are defined.`
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
if (!tierIds.has(override.targetTier)) {
|
|
182
|
+
throw new Error(
|
|
183
|
+
`Override "${override.id}" references unknown tier "${override.targetTier}". Valid tiers: ${[...tierIds].join(', ')}`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
compiledOverrides = overrides.map(compileOverride);
|
|
190
|
+
}
|
|
191
|
+
|
|
152
192
|
const config: ScoringConfig = {
|
|
153
193
|
mode: 'scoring',
|
|
154
194
|
strategies: ruleSet.config?.strategies ?? ['raw'],
|
|
@@ -156,7 +196,8 @@ export function compileScoringRuleSet(ruleSet: ScoringRuleSet): CompiledScoringR
|
|
|
156
196
|
outputBounds: ruleSet.config?.outputBounds,
|
|
157
197
|
baseScore: ruleSet.config?.baseScore,
|
|
158
198
|
tiers: ruleSet.config?.tiers,
|
|
159
|
-
categories
|
|
199
|
+
categories,
|
|
200
|
+
overrides
|
|
160
201
|
};
|
|
161
202
|
|
|
162
203
|
return {
|
|
@@ -165,6 +206,7 @@ export function compileScoringRuleSet(ruleSet: ScoringRuleSet): CompiledScoringR
|
|
|
165
206
|
mode: 'scoring',
|
|
166
207
|
schema: ruleSet.shape ? normalizeShape(ruleSet.shape) : { type: 'object' },
|
|
167
208
|
rules: ruleSet.rules.map((rule, index) => compileScoringRule(rule, index)),
|
|
168
|
-
config
|
|
209
|
+
config,
|
|
210
|
+
overrides: compiledOverrides
|
|
169
211
|
};
|
|
170
212
|
}
|
|
@@ -17,6 +17,18 @@ export {
|
|
|
17
17
|
// Category types
|
|
18
18
|
ScoringCategory,
|
|
19
19
|
CategoryResult,
|
|
20
|
+
// Override types
|
|
21
|
+
OverrideEffect,
|
|
22
|
+
OverrideDefinition,
|
|
23
|
+
ForceTierOverride,
|
|
24
|
+
FloorTierOverride,
|
|
25
|
+
CapTierOverride,
|
|
26
|
+
ExcludeOverride,
|
|
27
|
+
AdjustScoreOverride,
|
|
28
|
+
ClampScoreOverride,
|
|
29
|
+
ForceScoreOverride,
|
|
30
|
+
OverrideResult,
|
|
31
|
+
CompiledOverrideDefinition,
|
|
20
32
|
// Source types
|
|
21
33
|
ScoringAction,
|
|
22
34
|
ScoringRule,
|
|
@@ -17,7 +17,9 @@ import {
|
|
|
17
17
|
ScoringOptions,
|
|
18
18
|
ScoringResult,
|
|
19
19
|
ScoringTierMatch,
|
|
20
|
-
|
|
20
|
+
OverrideResult,
|
|
21
|
+
CategoryResult,
|
|
22
|
+
TierDefinition
|
|
21
23
|
} from './types';
|
|
22
24
|
|
|
23
25
|
export class ScoringStrategy {
|
|
@@ -239,7 +241,7 @@ export class ScoringStrategy {
|
|
|
239
241
|
|
|
240
242
|
// Calculate total score (base score + contributions)
|
|
241
243
|
const baseScore = config.baseScore ?? 0;
|
|
242
|
-
|
|
244
|
+
let totalScore = baseScore + Object.values(contributions).reduce((sum, score) => sum + score, 0);
|
|
243
245
|
|
|
244
246
|
// Match tier if tiers are configured
|
|
245
247
|
let tier: ScoringTierMatch | undefined;
|
|
@@ -267,6 +269,136 @@ export class ScoringStrategy {
|
|
|
267
269
|
}
|
|
268
270
|
}
|
|
269
271
|
|
|
272
|
+
// Phase 4: Override evaluation
|
|
273
|
+
let overrideResult: OverrideResult | undefined;
|
|
274
|
+
|
|
275
|
+
if (ruleSet.overrides?.length && ruleSet.overrides.length > 0) {
|
|
276
|
+
// Build a BindingContext from all facts in working memory (type name -> fact)
|
|
277
|
+
const allFacts = wm.getAll();
|
|
278
|
+
const context: Record<string, any> = {};
|
|
279
|
+
for (const fact of allFacts) {
|
|
280
|
+
// Use lowercase type name as the binding key (e.g., Deal -> deal)
|
|
281
|
+
const key = fact.type.charAt(0).toLowerCase() + fact.type.slice(1);
|
|
282
|
+
context[key] = fact;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Helper to resolve tier threshold for ranking
|
|
286
|
+
const resolveThreshold = (t: number | '-Infinity'): number =>
|
|
287
|
+
t === '-Infinity' ? Number.NEGATIVE_INFINITY : t;
|
|
288
|
+
|
|
289
|
+
// Build tier lookup and ranking
|
|
290
|
+
const tierMap = new Map<string, TierDefinition>();
|
|
291
|
+
const sortedTierIds: string[] = [];
|
|
292
|
+
if (config.tiers?.length) {
|
|
293
|
+
const sorted = [...config.tiers].sort(
|
|
294
|
+
(a, b) => resolveThreshold(b.threshold) - resolveThreshold(a.threshold)
|
|
295
|
+
);
|
|
296
|
+
for (const t of sorted) {
|
|
297
|
+
tierMap.set(t.id, t);
|
|
298
|
+
sortedTierIds.push(t.id);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const tierRank = (tierId: string | undefined): number => {
|
|
303
|
+
if (!tierId) return -1;
|
|
304
|
+
const idx = sortedTierIds.indexOf(tierId);
|
|
305
|
+
return idx === -1 ? -1 : sortedTierIds.length - idx; // higher rank = higher tier
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
const findTier = (tierId: string): ScoringTierMatch | undefined => {
|
|
309
|
+
const def = tierMap.get(tierId);
|
|
310
|
+
if (!def) return undefined;
|
|
311
|
+
return {
|
|
312
|
+
id: def.id,
|
|
313
|
+
name: def.name,
|
|
314
|
+
description: def.description,
|
|
315
|
+
threshold: resolveThreshold(def.threshold)
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
// Evaluate overrides in order — first match wins
|
|
320
|
+
for (const override of ruleSet.overrides) {
|
|
321
|
+
let matched: boolean;
|
|
322
|
+
try {
|
|
323
|
+
matched = evaluateCondition(override.condition as any, context) as unknown as boolean;
|
|
324
|
+
} catch {
|
|
325
|
+
matched = false;
|
|
326
|
+
}
|
|
327
|
+
if (!matched) continue;
|
|
328
|
+
|
|
329
|
+
const originalScore = totalScore;
|
|
330
|
+
const originalTier = tier ? { ...tier } : undefined;
|
|
331
|
+
|
|
332
|
+
switch (override.effect) {
|
|
333
|
+
case 'force_tier': {
|
|
334
|
+
tier = findTier(override.targetTier);
|
|
335
|
+
if (override.score !== undefined) {
|
|
336
|
+
totalScore = override.score;
|
|
337
|
+
}
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
case 'floor_tier': {
|
|
341
|
+
if (tierRank(tier?.id) < tierRank(override.targetTier)) {
|
|
342
|
+
tier = findTier(override.targetTier);
|
|
343
|
+
}
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
case 'cap_tier': {
|
|
347
|
+
if (tierRank(tier?.id) > tierRank(override.targetTier)) {
|
|
348
|
+
tier = findTier(override.targetTier);
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
case 'exclude': {
|
|
353
|
+
const executionTimeMs = Math.round((performance.now() - startTime) * 100) / 100;
|
|
354
|
+
return {
|
|
355
|
+
totalScore: 0,
|
|
356
|
+
contributions: {},
|
|
357
|
+
fired: [],
|
|
358
|
+
iterations: 1,
|
|
359
|
+
override: {
|
|
360
|
+
id: override.id,
|
|
361
|
+
effect: 'exclude',
|
|
362
|
+
originalScore,
|
|
363
|
+
originalTier,
|
|
364
|
+
applied: true
|
|
365
|
+
},
|
|
366
|
+
categoryBreakdown,
|
|
367
|
+
executionTimeMs
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
case 'adjust_score': {
|
|
371
|
+
totalScore += override.value;
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
case 'clamp_score': {
|
|
375
|
+
if (override.min !== undefined) totalScore = Math.max(override.min, totalScore);
|
|
376
|
+
if (override.max !== undefined) totalScore = Math.min(override.max, totalScore);
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
case 'force_score': {
|
|
380
|
+
if (typeof override.score === 'number') {
|
|
381
|
+
totalScore = override.score;
|
|
382
|
+
} else {
|
|
383
|
+
const result = evaluateCondition(override.score as any, context);
|
|
384
|
+
totalScore = typeof result === 'number' ? result : 0;
|
|
385
|
+
}
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
overrideResult = {
|
|
391
|
+
id: override.id,
|
|
392
|
+
effect: override.effect,
|
|
393
|
+
originalScore,
|
|
394
|
+
originalTier,
|
|
395
|
+
applied: true
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
break; // first match wins
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
270
402
|
const executionTimeMs = Math.round((performance.now() - startTime) * 100) / 100;
|
|
271
403
|
|
|
272
404
|
return {
|
|
@@ -276,6 +408,7 @@ export class ScoringStrategy {
|
|
|
276
408
|
iterations: 1,
|
|
277
409
|
tier,
|
|
278
410
|
categoryBreakdown,
|
|
411
|
+
override: overrideResult,
|
|
279
412
|
executionTimeMs
|
|
280
413
|
};
|
|
281
414
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
CompiledBaseRule,
|
|
9
9
|
CompiledBaseRuleSet,
|
|
10
10
|
CompiledCondition,
|
|
11
|
+
Condition,
|
|
11
12
|
Expression,
|
|
12
13
|
BindingContext
|
|
13
14
|
} from '../../core';
|
|
@@ -126,6 +127,122 @@ export type CategoryResult = {
|
|
|
126
127
|
excluded: boolean;
|
|
127
128
|
};
|
|
128
129
|
|
|
130
|
+
// ========================================
|
|
131
|
+
// Override Types
|
|
132
|
+
// ========================================
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Override effect types
|
|
136
|
+
*/
|
|
137
|
+
export type OverrideEffect =
|
|
138
|
+
| 'force_tier'
|
|
139
|
+
| 'floor_tier'
|
|
140
|
+
| 'cap_tier'
|
|
141
|
+
| 'exclude'
|
|
142
|
+
| 'adjust_score'
|
|
143
|
+
| 'clamp_score'
|
|
144
|
+
| 'force_score';
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Base override fields shared by all effects
|
|
148
|
+
*/
|
|
149
|
+
type BaseOverride = {
|
|
150
|
+
id: string;
|
|
151
|
+
condition: Condition;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Force tier — override to exact tier, optionally replace score
|
|
156
|
+
*/
|
|
157
|
+
export type ForceTierOverride = BaseOverride & {
|
|
158
|
+
effect: 'force_tier';
|
|
159
|
+
targetTier: string;
|
|
160
|
+
score?: number;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Floor tier — set minimum tier (bump up if below)
|
|
165
|
+
*/
|
|
166
|
+
export type FloorTierOverride = BaseOverride & {
|
|
167
|
+
effect: 'floor_tier';
|
|
168
|
+
targetTier: string;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Cap tier — set maximum tier (cap down if above)
|
|
173
|
+
*/
|
|
174
|
+
export type CapTierOverride = BaseOverride & {
|
|
175
|
+
effect: 'cap_tier';
|
|
176
|
+
targetTier: string;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Exclude — nullify the entire scoring result
|
|
181
|
+
*/
|
|
182
|
+
export type ExcludeOverride = BaseOverride & {
|
|
183
|
+
effect: 'exclude';
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Adjust score — add/subtract from total score
|
|
188
|
+
*/
|
|
189
|
+
export type AdjustScoreOverride = BaseOverride & {
|
|
190
|
+
effect: 'adjust_score';
|
|
191
|
+
value: number;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Clamp score — enforce floor/ceiling on the score
|
|
196
|
+
*/
|
|
197
|
+
export type ClampScoreOverride = BaseOverride & {
|
|
198
|
+
effect: 'clamp_score';
|
|
199
|
+
min?: number;
|
|
200
|
+
max?: number;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Force score — replace the total score entirely
|
|
205
|
+
*/
|
|
206
|
+
export type ForceScoreOverride = BaseOverride & {
|
|
207
|
+
effect: 'force_score';
|
|
208
|
+
score: number | Expression;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Discriminated union of all override definitions
|
|
213
|
+
*
|
|
214
|
+
* Overrides are evaluated post-scoring in order — first match wins.
|
|
215
|
+
* Each effect type has its own required fields enforced by TypeScript.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const overrides: OverrideDefinition[] = [
|
|
220
|
+
* { id: 'closed-won', condition: ['equals', '$deal.stage', 'Closed Won'], effect: 'force_tier', targetTier: 'strong', score: 1000 },
|
|
221
|
+
* { id: 'fraud-flag', condition: ['equals', '$app.fraud', true], effect: 'exclude' },
|
|
222
|
+
* { id: 'vip-bonus', condition: ['equals', '$customer.vip', true], effect: 'adjust_score', value: 50 }
|
|
223
|
+
* ];
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
export type OverrideDefinition =
|
|
227
|
+
| ForceTierOverride
|
|
228
|
+
| FloorTierOverride
|
|
229
|
+
| CapTierOverride
|
|
230
|
+
| ExcludeOverride
|
|
231
|
+
| AdjustScoreOverride
|
|
232
|
+
| ClampScoreOverride
|
|
233
|
+
| ForceScoreOverride;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Override result — attached to ScoringResult when an override fires
|
|
237
|
+
*/
|
|
238
|
+
export type OverrideResult = {
|
|
239
|
+
id: string;
|
|
240
|
+
effect: OverrideEffect;
|
|
241
|
+
originalScore: number;
|
|
242
|
+
originalTier?: ScoringTierMatch;
|
|
243
|
+
applied: true;
|
|
244
|
+
};
|
|
245
|
+
|
|
129
246
|
// ========================================
|
|
130
247
|
// Source Types (User-Defined)
|
|
131
248
|
// ========================================
|
|
@@ -168,6 +285,7 @@ export type ScoringConfig = {
|
|
|
168
285
|
baseScore?: number; // Starting score before rule contributions (default: 0)
|
|
169
286
|
tiers?: TierDefinition[]; // Optional tier definitions for score classification
|
|
170
287
|
categories?: ScoringCategory[]; // Optional category grouping for two-level weight hierarchy
|
|
288
|
+
overrides?: OverrideDefinition[]; // Optional post-scoring overrides evaluated in order (first match wins)
|
|
171
289
|
};
|
|
172
290
|
|
|
173
291
|
// ========================================
|
|
@@ -193,6 +311,19 @@ export type CompiledScoringRule = CompiledBaseRule & {
|
|
|
193
311
|
action: CompiledScoringAction;
|
|
194
312
|
};
|
|
195
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Compiled override — replaces source Condition with CompiledCondition
|
|
316
|
+
* Each variant preserves its effect-specific fields
|
|
317
|
+
*/
|
|
318
|
+
export type CompiledOverrideDefinition =
|
|
319
|
+
| (Omit<ForceTierOverride, 'condition'> & { condition: CompiledCondition })
|
|
320
|
+
| (Omit<FloorTierOverride, 'condition'> & { condition: CompiledCondition })
|
|
321
|
+
| (Omit<CapTierOverride, 'condition'> & { condition: CompiledCondition })
|
|
322
|
+
| (Omit<ExcludeOverride, 'condition'> & { condition: CompiledCondition })
|
|
323
|
+
| (Omit<AdjustScoreOverride, 'condition'> & { condition: CompiledCondition })
|
|
324
|
+
| (Omit<ClampScoreOverride, 'condition'> & { condition: CompiledCondition })
|
|
325
|
+
| (Omit<ForceScoreOverride, 'condition'> & { condition: CompiledCondition });
|
|
326
|
+
|
|
196
327
|
/**
|
|
197
328
|
* Compiled scoring ruleset
|
|
198
329
|
*/
|
|
@@ -200,6 +331,7 @@ export type CompiledScoringRuleSet = CompiledBaseRuleSet & {
|
|
|
200
331
|
mode: 'scoring';
|
|
201
332
|
rules: CompiledScoringRule[];
|
|
202
333
|
config: ScoringConfig;
|
|
334
|
+
overrides?: CompiledOverrideDefinition[];
|
|
203
335
|
};
|
|
204
336
|
|
|
205
337
|
// ========================================
|
|
@@ -234,5 +366,6 @@ export type ScoringResult = {
|
|
|
234
366
|
iterations: 1; // Scoring is always one-pass
|
|
235
367
|
tier?: ScoringTierMatch; // Matched tier (if tiers configured)
|
|
236
368
|
categoryBreakdown?: CategoryResult[]; // Per-category breakdown (if categories configured)
|
|
369
|
+
override?: OverrideResult; // Override that fired (if any)
|
|
237
370
|
executionTimeMs: number; // Processing time in milliseconds
|
|
238
371
|
};
|
package/src/index.ts
CHANGED
|
@@ -94,7 +94,18 @@ export type {
|
|
|
94
94
|
ScoringMethod,
|
|
95
95
|
OutputBounds,
|
|
96
96
|
ScoringCategory,
|
|
97
|
-
CategoryResult
|
|
97
|
+
CategoryResult,
|
|
98
|
+
OverrideEffect,
|
|
99
|
+
OverrideDefinition,
|
|
100
|
+
ForceTierOverride,
|
|
101
|
+
FloorTierOverride,
|
|
102
|
+
CapTierOverride,
|
|
103
|
+
ExcludeOverride,
|
|
104
|
+
AdjustScoreOverride,
|
|
105
|
+
ClampScoreOverride,
|
|
106
|
+
ForceScoreOverride,
|
|
107
|
+
OverrideResult,
|
|
108
|
+
CompiledOverrideDefinition
|
|
98
109
|
} from './engines/scoring';
|
|
99
110
|
|
|
100
111
|
// Sequential
|