@higher.archi/boe 1.0.20 → 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.
Files changed (44) hide show
  1. package/dist/core/types/rule.d.ts +1 -1
  2. package/dist/core/types/rule.d.ts.map +1 -1
  3. package/dist/engines/ensemble/index.d.ts +2 -0
  4. package/dist/engines/ensemble/index.d.ts.map +1 -1
  5. package/dist/engines/ensemble/index.js +8 -1
  6. package/dist/engines/ensemble/index.js.map +1 -1
  7. package/dist/engines/ensemble/members.d.ts +66 -0
  8. package/dist/engines/ensemble/members.d.ts.map +1 -0
  9. package/dist/engines/ensemble/members.js +86 -0
  10. package/dist/engines/ensemble/members.js.map +1 -0
  11. package/dist/engines/ranking/compiler.d.ts +12 -0
  12. package/dist/engines/ranking/compiler.d.ts.map +1 -0
  13. package/dist/engines/ranking/compiler.js +163 -0
  14. package/dist/engines/ranking/compiler.js.map +1 -0
  15. package/dist/engines/ranking/engine.d.ts +48 -0
  16. package/dist/engines/ranking/engine.d.ts.map +1 -0
  17. package/dist/engines/ranking/engine.js +89 -0
  18. package/dist/engines/ranking/engine.js.map +1 -0
  19. package/dist/engines/ranking/index.d.ts +9 -0
  20. package/dist/engines/ranking/index.d.ts.map +1 -0
  21. package/dist/engines/ranking/index.js +23 -0
  22. package/dist/engines/ranking/index.js.map +1 -0
  23. package/dist/engines/ranking/strategy.d.ts +21 -0
  24. package/dist/engines/ranking/strategy.d.ts.map +1 -0
  25. package/dist/engines/ranking/strategy.js +250 -0
  26. package/dist/engines/ranking/strategy.js.map +1 -0
  27. package/dist/engines/ranking/types.d.ts +142 -0
  28. package/dist/engines/ranking/types.d.ts.map +1 -0
  29. package/dist/engines/ranking/types.js +46 -0
  30. package/dist/engines/ranking/types.js.map +1 -0
  31. package/dist/index.d.ts +4 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +17 -1
  34. package/dist/index.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/core/types/rule.ts +1 -1
  37. package/src/engines/ensemble/index.ts +9 -0
  38. package/src/engines/ensemble/members.ts +156 -0
  39. package/src/engines/ranking/compiler.ts +194 -0
  40. package/src/engines/ranking/engine.ts +120 -0
  41. package/src/engines/ranking/index.ts +46 -0
  42. package/src/engines/ranking/strategy.ts +333 -0
  43. package/src/engines/ranking/types.ts +231 -0
  44. package/src/index.ts +41 -2
@@ -21,7 +21,7 @@ export type ValidityDuration = {
21
21
  months?: number;
22
22
  from: string;
23
23
  };
24
- export type RuleSetMode = "forward" | "scoring" | "backward" | "sequential" | "fuzzy" | "bayesian" | "monte-carlo" | "state-machine" | "constraint" | "utility" | "defeasible" | "expert" | "pricing" | "ensemble";
24
+ export type RuleSetMode = "forward" | "scoring" | "backward" | "sequential" | "fuzzy" | "bayesian" | "monte-carlo" | "state-machine" | "constraint" | "utility" | "defeasible" | "expert" | "pricing" | "ensemble" | "ranking";
25
25
  export type BaseRule = {
26
26
  id: string;
27
27
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/core/types/rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAM7C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAMF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEnN,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IAGd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAMF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAGzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/core/types/rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAM7C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAMF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/N,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IAGd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAMF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAGzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -6,4 +6,6 @@ export { compileEnsembleRuleSet } from './compiler';
6
6
  export { EnsembleStrategy, ensembleStrategy } from './strategy';
7
7
  export { EnsembleEngine } from './engine';
8
8
  export { summarizeEnsemble } from './summary';
9
+ export { bayesianMember, fuzzyMember, monteCarloMember, expertMember, scoringMember } from './members';
10
+ export type { BayesianMemberConfig, FuzzyMemberConfig, MonteCarloMemberConfig, ExpertMemberConfig, ScoringMemberConfig } from './members';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/ensemble/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,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,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/ensemble/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,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,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EACL,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAC3E,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,oBAAoB,EAAE,iBAAiB,EAAE,sBAAsB,EAC/D,kBAAkB,EAAE,mBAAmB,EACxC,MAAM,WAAW,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Ensemble Engine — Multi-Model Score Fusion
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.summarizeEnsemble = exports.EnsembleEngine = exports.ensembleStrategy = exports.EnsembleStrategy = exports.compileEnsembleRuleSet = void 0;
6
+ exports.scoringMember = exports.expertMember = exports.monteCarloMember = exports.fuzzyMember = exports.bayesianMember = exports.summarizeEnsemble = exports.EnsembleEngine = exports.ensembleStrategy = exports.EnsembleStrategy = exports.compileEnsembleRuleSet = void 0;
7
7
  // Compiler
8
8
  var compiler_1 = require("./compiler");
9
9
  Object.defineProperty(exports, "compileEnsembleRuleSet", { enumerable: true, get: function () { return compiler_1.compileEnsembleRuleSet; } });
@@ -17,4 +17,11 @@ Object.defineProperty(exports, "EnsembleEngine", { enumerable: true, get: functi
17
17
  // Summary
18
18
  var summary_1 = require("./summary");
19
19
  Object.defineProperty(exports, "summarizeEnsemble", { enumerable: true, get: function () { return summary_1.summarizeEnsemble; } });
20
+ // Member adapter factories
21
+ var members_1 = require("./members");
22
+ Object.defineProperty(exports, "bayesianMember", { enumerable: true, get: function () { return members_1.bayesianMember; } });
23
+ Object.defineProperty(exports, "fuzzyMember", { enumerable: true, get: function () { return members_1.fuzzyMember; } });
24
+ Object.defineProperty(exports, "monteCarloMember", { enumerable: true, get: function () { return members_1.monteCarloMember; } });
25
+ Object.defineProperty(exports, "expertMember", { enumerable: true, get: function () { return members_1.expertMember; } });
26
+ Object.defineProperty(exports, "scoringMember", { enumerable: true, get: function () { return members_1.scoringMember; } });
20
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/ensemble/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAsBH,WAAW;AACX,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAE/B,WAAW;AACX,uCAAgE;AAAvD,4GAAA,gBAAgB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAE3C,SAAS;AACT,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAEvB,UAAU;AACV,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/ensemble/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAsBH,WAAW;AACX,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAE/B,WAAW;AACX,uCAAgE;AAAvD,4GAAA,gBAAgB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAE3C,SAAS;AACT,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAEvB,UAAU;AACV,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAE1B,2BAA2B;AAC3B,qCAEmB;AADjB,yGAAA,cAAc,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,wGAAA,aAAa,OAAA"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Ensemble Member Adapter Factories
3
+ *
4
+ * Factory functions that wrap non-scoring engines (Bayesian, Fuzzy, etc.)
5
+ * into CustomMemberDef or ScoringMemberDef for use in ensemble rulesets.
6
+ */
7
+ import type { ScoreExtractor, ConfidenceExtractor, CustomMemberDef, ScoringMemberDef } from './types';
8
+ import type { CompiledBayesianRuleSet, BayesianOptions, BayesianResult } from '../bayesian';
9
+ import type { CompiledFuzzyRuleSet, FuzzyOptions, FuzzyResult } from '../fuzzy';
10
+ import type { CompiledMonteCarloRuleSet, MonteCarloOptions, MonteCarloResult } from '../monte-carlo';
11
+ import type { CompiledExpertRuleSet, ExpertOptions, ExpertResult } from '../expert';
12
+ import type { CompiledScoringRuleSet, ScoringOptions } from '../scoring/types';
13
+ export type BayesianMemberConfig = {
14
+ id: string;
15
+ name?: string;
16
+ weight: number;
17
+ ruleset: CompiledBayesianRuleSet;
18
+ extractScore: ScoreExtractor<BayesianResult>;
19
+ extractConfidence?: ConfidenceExtractor<BayesianResult>;
20
+ options?: BayesianOptions;
21
+ };
22
+ export type FuzzyMemberConfig = {
23
+ id: string;
24
+ name?: string;
25
+ weight: number;
26
+ ruleset: CompiledFuzzyRuleSet;
27
+ extractScore: ScoreExtractor<FuzzyResult>;
28
+ extractConfidence?: ConfidenceExtractor<FuzzyResult>;
29
+ options?: FuzzyOptions;
30
+ };
31
+ export type MonteCarloMemberConfig = {
32
+ id: string;
33
+ name?: string;
34
+ weight: number;
35
+ ruleset: CompiledMonteCarloRuleSet;
36
+ extractScore: ScoreExtractor<MonteCarloResult>;
37
+ extractConfidence?: ConfidenceExtractor<MonteCarloResult>;
38
+ options?: MonteCarloOptions;
39
+ };
40
+ export type ExpertMemberConfig = {
41
+ id: string;
42
+ name?: string;
43
+ weight: number;
44
+ ruleset: CompiledExpertRuleSet;
45
+ extractScore: ScoreExtractor<ExpertResult>;
46
+ extractConfidence?: ConfidenceExtractor<ExpertResult>;
47
+ options?: ExpertOptions;
48
+ };
49
+ export type ScoringMemberConfig = {
50
+ id: string;
51
+ name?: string;
52
+ weight: number;
53
+ ruleset: CompiledScoringRuleSet;
54
+ options?: ScoringOptions;
55
+ };
56
+ /** Wrap a Bayesian engine as an ensemble member. Default confidence uses result.confidence. */
57
+ export declare function bayesianMember(config: BayesianMemberConfig): CustomMemberDef;
58
+ /** Wrap a Fuzzy engine as an ensemble member. Default confidence is 1.0 (outputs are crisp). */
59
+ export declare function fuzzyMember(config: FuzzyMemberConfig): CustomMemberDef;
60
+ /** Wrap a Monte Carlo engine as an ensemble member. Default confidence is 1.0 (domain-specific). */
61
+ export declare function monteCarloMember(config: MonteCarloMemberConfig): CustomMemberDef;
62
+ /** Wrap an Expert engine as an ensemble member. Default confidence is 1.0 (per-conclusion only). */
63
+ export declare function expertMember(config: ExpertMemberConfig): CustomMemberDef;
64
+ /** Shorthand for creating a ScoringMemberDef. Consistency helper, no wrapping needed. */
65
+ export declare function scoringMember(config: ScoringMemberConfig): ScoringMemberDef;
66
+ //# sourceMappingURL=members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../src/engines/ensemble/members.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Ensemble Member Adapter Factories
4
+ *
5
+ * Factory functions that wrap non-scoring engines (Bayesian, Fuzzy, etc.)
6
+ * into CustomMemberDef or ScoringMemberDef for use in ensemble rulesets.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.bayesianMember = bayesianMember;
10
+ exports.fuzzyMember = fuzzyMember;
11
+ exports.monteCarloMember = monteCarloMember;
12
+ exports.expertMember = expertMember;
13
+ exports.scoringMember = scoringMember;
14
+ const bayesian_1 = require("../bayesian");
15
+ const fuzzy_1 = require("../fuzzy");
16
+ const monte_carlo_1 = require("../monte-carlo");
17
+ const expert_1 = require("../expert");
18
+ // ========================================
19
+ // Factory Functions
20
+ // ========================================
21
+ /** Wrap a Bayesian engine as an ensemble member. Default confidence uses result.confidence. */
22
+ function bayesianMember(config) {
23
+ const { id, name, weight, ruleset, extractScore, extractConfidence = (r) => r.confidence, options } = config;
24
+ return {
25
+ id, name, weight,
26
+ execute: (facts) => {
27
+ const engine = new bayesian_1.BayesianEngine();
28
+ for (const f of facts)
29
+ engine.add(f);
30
+ return engine.execute(ruleset, options);
31
+ },
32
+ extractScore,
33
+ extractConfidence
34
+ };
35
+ }
36
+ /** Wrap a Fuzzy engine as an ensemble member. Default confidence is 1.0 (outputs are crisp). */
37
+ function fuzzyMember(config) {
38
+ const { id, name, weight, ruleset, extractScore, extractConfidence = () => 1.0, options } = config;
39
+ return {
40
+ id, name, weight,
41
+ execute: (facts) => {
42
+ const engine = new fuzzy_1.FuzzyEngine();
43
+ for (const f of facts)
44
+ engine.add(f);
45
+ return engine.execute(ruleset, options);
46
+ },
47
+ extractScore,
48
+ extractConfidence
49
+ };
50
+ }
51
+ /** Wrap a Monte Carlo engine as an ensemble member. Default confidence is 1.0 (domain-specific). */
52
+ function monteCarloMember(config) {
53
+ const { id, name, weight, ruleset, extractScore, extractConfidence = () => 1.0, options } = config;
54
+ return {
55
+ id, name, weight,
56
+ execute: (facts) => {
57
+ const engine = new monte_carlo_1.MonteCarloEngine();
58
+ for (const f of facts)
59
+ engine.add(f);
60
+ return engine.execute(ruleset, options);
61
+ },
62
+ extractScore,
63
+ extractConfidence
64
+ };
65
+ }
66
+ /** Wrap an Expert engine as an ensemble member. Default confidence is 1.0 (per-conclusion only). */
67
+ function expertMember(config) {
68
+ const { id, name, weight, ruleset, extractScore, extractConfidence = () => 1.0, options } = config;
69
+ return {
70
+ id, name, weight,
71
+ execute: (facts) => {
72
+ const engine = new expert_1.ExpertEngine();
73
+ for (const f of facts)
74
+ engine.add(f);
75
+ return engine.execute(ruleset, options);
76
+ },
77
+ extractScore,
78
+ extractConfidence
79
+ };
80
+ }
81
+ /** Shorthand for creating a ScoringMemberDef. Consistency helper, no wrapping needed. */
82
+ function scoringMember(config) {
83
+ const { id, name, weight, ruleset, options } = config;
84
+ return { id, name, weight, ruleset, options };
85
+ }
86
+ //# sourceMappingURL=members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"members.js","sourceRoot":"","sources":["../../../src/engines/ensemble/members.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Ranking Engine Compiler
3
+ *
4
+ * Validates ranking rulesets and resolves defaults.
5
+ */
6
+ import type { TierDefinition } from '../scoring/types';
7
+ import type { RankingRuleSet, CompiledRankingRuleSet } from './types';
8
+ /**
9
+ * Compile and validate a ranking ruleset.
10
+ */
11
+ export declare function compileRankingRuleSet<T extends TierDefinition = TierDefinition>(ruleSet: RankingRuleSet<T>): CompiledRankingRuleSet<T>;
12
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/engines/ranking/compiler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EAMvB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC7E,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,sBAAsB,CAAC,CAAC,CAAC,CAuB3B"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * Ranking Engine Compiler
4
+ *
5
+ * Validates ranking rulesets and resolves defaults.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.compileRankingRuleSet = compileRankingRuleSet;
9
+ const errors_1 = require("../../core/errors");
10
+ const types_1 = require("../utility/types");
11
+ const types_2 = require("./types");
12
+ /**
13
+ * Compile and validate a ranking ruleset.
14
+ */
15
+ function compileRankingRuleSet(ruleSet) {
16
+ if (!ruleSet.id) {
17
+ throw new errors_1.CompilationError('Ranking ruleset requires an id');
18
+ }
19
+ if (ruleSet.mode !== 'ranking') {
20
+ throw new errors_1.CompilationError(`Expected mode 'ranking', got '${ruleSet.mode}'`);
21
+ }
22
+ if (!ruleSet.entityType || ruleSet.entityType.trim() === '') {
23
+ throw new errors_1.CompilationError('entityType is required and must be non-empty');
24
+ }
25
+ switch (ruleSet.strategy) {
26
+ case 'score':
27
+ return compileScore(ruleSet);
28
+ case 'elo':
29
+ return compileElo(ruleSet);
30
+ case 'head-to-head':
31
+ return compileHeadToHead(ruleSet);
32
+ default:
33
+ throw new errors_1.CompilationError(`Unknown ranking strategy: '${ruleSet.strategy}'`);
34
+ }
35
+ }
36
+ function compileScore(ruleSet) {
37
+ if (!ruleSet.scoringRuleset) {
38
+ throw new errors_1.CompilationError('Score strategy requires a scoringRuleset');
39
+ }
40
+ if (ruleSet.scoringRuleset.mode !== 'scoring') {
41
+ throw new errors_1.CompilationError(`scoringRuleset must have mode 'scoring', got '${ruleSet.scoringRuleset.mode}'`);
42
+ }
43
+ // Validate tier IDs are unique
44
+ const tiers = ruleSet.config?.tiers;
45
+ if (tiers) {
46
+ const tierIds = new Set();
47
+ for (const tier of tiers) {
48
+ if (tierIds.has(tier.id)) {
49
+ throw new errors_1.CompilationError(`Duplicate tier id: '${tier.id}'`);
50
+ }
51
+ tierIds.add(tier.id);
52
+ }
53
+ }
54
+ return {
55
+ id: ruleSet.id,
56
+ name: ruleSet.name,
57
+ mode: 'ranking',
58
+ strategy: 'score',
59
+ scoringRuleset: ruleSet.scoringRuleset,
60
+ scoringOptions: ruleSet.scoringOptions,
61
+ entityType: ruleSet.entityType,
62
+ config: {
63
+ direction: ruleSet.config?.direction ?? 'highest-first',
64
+ tiers: ruleSet.config?.tiers
65
+ }
66
+ };
67
+ }
68
+ function compileElo(ruleSet) {
69
+ const config = ruleSet.config ?? {};
70
+ // Resolve kFactor
71
+ let kFactor;
72
+ if (config.kFactor === undefined) {
73
+ kFactor = types_2.K_FACTOR_VALUES['standard'];
74
+ }
75
+ else if ((0, types_2.isKFactorPreset)(config.kFactor)) {
76
+ kFactor = types_2.K_FACTOR_VALUES[config.kFactor];
77
+ }
78
+ else if (typeof config.kFactor === 'number') {
79
+ if (config.kFactor <= 0) {
80
+ throw new errors_1.CompilationError('kFactor must be a positive number');
81
+ }
82
+ kFactor = config.kFactor;
83
+ }
84
+ else {
85
+ throw new errors_1.CompilationError(`Invalid kFactor: '${config.kFactor}'`);
86
+ }
87
+ const initialRating = config.initialRating ?? 1500;
88
+ if (initialRating <= 0) {
89
+ throw new errors_1.CompilationError('initialRating must be a positive number');
90
+ }
91
+ return {
92
+ id: ruleSet.id,
93
+ name: ruleSet.name,
94
+ mode: 'ranking',
95
+ strategy: 'elo',
96
+ entityType: ruleSet.entityType,
97
+ matchType: ruleSet.matchType ?? 'MatchResult',
98
+ config: {
99
+ initialRating,
100
+ kFactor,
101
+ direction: config.direction ?? 'highest-first'
102
+ }
103
+ };
104
+ }
105
+ function compileHeadToHead(ruleSet) {
106
+ const criteria = ruleSet.criteria;
107
+ if (!criteria || !Array.isArray(criteria) || criteria.length === 0) {
108
+ throw new errors_1.CompilationError('Head-to-head strategy requires at least one criterion');
109
+ }
110
+ // Validate no duplicate criterion IDs
111
+ const criterionIds = new Set();
112
+ for (const c of criteria) {
113
+ if (!c.id) {
114
+ throw new errors_1.CompilationError('Each criterion requires an id');
115
+ }
116
+ if (criterionIds.has(c.id)) {
117
+ throw new errors_1.CompilationError(`Duplicate criterion id: '${c.id}'`);
118
+ }
119
+ criterionIds.add(c.id);
120
+ }
121
+ // Resolve semantic weights to numeric
122
+ const resolvedCriteria = criteria.map((c) => {
123
+ let weight;
124
+ if ((0, types_1.isSemanticPriority)(c.weight)) {
125
+ weight = types_1.SEMANTIC_PRIORITY_VALUES[c.weight];
126
+ }
127
+ else if (typeof c.weight === 'number') {
128
+ weight = c.weight;
129
+ }
130
+ else {
131
+ throw new errors_1.CompilationError(`Invalid weight for criterion '${c.id}': '${c.weight}'`);
132
+ }
133
+ if (!c.direction) {
134
+ throw new errors_1.CompilationError(`Criterion '${c.id}' requires a direction`);
135
+ }
136
+ return {
137
+ id: c.id,
138
+ name: c.name,
139
+ weight,
140
+ direction: c.direction
141
+ };
142
+ });
143
+ // Normalize weights to sum to 1.0
144
+ const totalWeight = resolvedCriteria.reduce((sum, c) => sum + c.weight, 0);
145
+ if (totalWeight === 0) {
146
+ throw new errors_1.CompilationError('Criteria weights must not all be zero');
147
+ }
148
+ for (const c of resolvedCriteria) {
149
+ c.weight = c.weight / totalWeight;
150
+ }
151
+ return {
152
+ id: ruleSet.id,
153
+ name: ruleSet.name,
154
+ mode: 'ranking',
155
+ strategy: 'head-to-head',
156
+ entityType: ruleSet.entityType,
157
+ criteria: resolvedCriteria,
158
+ config: {
159
+ direction: ruleSet.config?.direction ?? 'highest-first'
160
+ }
161
+ };
162
+ }
163
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/engines/ranking/compiler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAoBH,sDAyBC;AA3CD,8CAAqD;AACrD,4CAAuG;AAYvG,mCAA2D;AAE3D;;GAEG;AACH,SAAgB,qBAAqB,CACnC,OAA0B;IAE1B,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,yBAAgB,CAAC,gCAAgC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,yBAAgB,CAAC,iCAAiC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5D,MAAM,IAAI,yBAAgB,CAAC,8CAA8C,CAAC,CAAC;IAC7E,CAAC;IAED,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,OAAO,CAA8B,CAAC;QAC5D,KAAK,KAAK;YACR,OAAO,UAAU,CAAC,OAAc,CAA8B,CAAC;QACjE,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,OAAc,CAA8B,CAAC;QACxE;YACE,MAAM,IAAI,yBAAgB,CAAC,8BAA+B,OAAe,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,OAAkD;IAElD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAgB,CAAC,0CAA0C,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,yBAAgB,CAAC,iDAAiD,OAAO,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9G,CAAC;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;IACpC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,yBAAgB,CAAC,uBAAuB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,OAAO;QACjB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,eAAe;YACvD,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,OAA6C;IAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAEpC,kBAAkB;IAClB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,GAAG,uBAAe,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,IAAA,uBAAe,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,uBAAe,CAAC,MAAM,CAAC,OAAwB,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,yBAAgB,CAAC,mCAAmC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,yBAAgB,CAAC,qBAAqB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IACnD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,yBAAgB,CAAC,yCAAyC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAG,OAAe,CAAC,SAAS,IAAI,aAAa;QACtD,MAAM,EAAE;YACN,aAAa;YACb,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,eAAe;SAC/C;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAsD;IAEtD,MAAM,QAAQ,GAAI,OAAe,CAAC,QAAQ,CAAC;IAE3C,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,yBAAgB,CAAC,uDAAuD,CAAC,CAAC;IACtF,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,IAAI,yBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,yBAAgB,CAAC,4BAA4B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,sCAAsC;IACtC,MAAM,gBAAgB,GAA+B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;QAC3E,IAAI,MAAc,CAAC;QACnB,IAAI,IAAA,0BAAkB,EAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,gCAAwB,CAAC,CAAC,CAAC,MAA0B,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,yBAAgB,CAAC,iCAAiC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,yBAAgB,CAAC,cAAc,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACzE,CAAC;QAED,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM;YACN,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,yBAAgB,CAAC,uCAAuC,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE;YACN,SAAS,EAAG,OAAe,CAAC,MAAM,EAAE,SAAS,IAAI,eAAe;SACjE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Ranking Engine
3
+ *
4
+ * Comparative scoring engine that ranks N entities relative to each other.
5
+ * Supports score-based ranking, Elo ratings, and head-to-head comparison.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const engine = new RankingEngine();
10
+ * engine.add({ type: 'Vendor', data: { id: 'v1', revenue: 500000 } });
11
+ * engine.add({ type: 'Vendor', data: { id: 'v2', revenue: 120000 } });
12
+ *
13
+ * const result = engine.execute(compiledRanking);
14
+ * console.log(result.rankings[0]); // { rank: 1, entityId: 'v1', percentileLabel: 'top-1%', ... }
15
+ * ```
16
+ */
17
+ import { WorkingMemory, Fact, FactInput, FactChange } from '../../core';
18
+ import type { TierDefinition } from '../scoring/types';
19
+ import type { CompiledRankingRuleSet, RankingOptions, RankingResult } from './types';
20
+ export declare class RankingEngine {
21
+ private wm;
22
+ private strategy;
23
+ constructor(workingMemory?: WorkingMemory);
24
+ add<T = Record<string, any>>(input: FactInput<T>): Fact<T>;
25
+ remove(factId: string): Fact | undefined;
26
+ update<T = Record<string, any>>(input: FactInput<T>): Fact<T>;
27
+ get(factId: string): Fact | undefined;
28
+ getByType(type: string): Fact[];
29
+ getAll(): Fact[];
30
+ has(factId: string): boolean;
31
+ size(): number;
32
+ clear(): void;
33
+ getChanges(): FactChange[];
34
+ clearChanges(): void;
35
+ /**
36
+ * Execute a ranking ruleset.
37
+ *
38
+ * Scores all entities of the configured type and produces
39
+ * a ranked list with percentiles and optional tier/movement tracking.
40
+ *
41
+ * @param ruleSet - Compiled ranking ruleset
42
+ * @param options - Runtime options (previousRankings for movement, onRank callback)
43
+ * @returns Ranking result with sorted entities
44
+ */
45
+ execute<T extends TierDefinition = TierDefinition>(ruleSet: CompiledRankingRuleSet<T>, options?: RankingOptions): RankingResult<T>;
46
+ getWorkingMemory(): WorkingMemory;
47
+ }
48
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engines/ranking/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,aAAa,EACb,IAAI,EACJ,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,aAAa,CAAC,EAAE,aAAa;IASzC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAI1D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIxC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAI7D,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;IAI/B,MAAM,IAAI,IAAI,EAAE;IAIhB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,IAAI,IAAI,MAAM;IAId,KAAK,IAAI,IAAI;IAIb,UAAU,IAAI,UAAU,EAAE;IAI1B,YAAY,IAAI,IAAI;IAQpB;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC/C,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAClC,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAAC,CAAC,CAAC;IAQnB,gBAAgB,IAAI,aAAa;CAGlC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Ranking Engine
4
+ *
5
+ * Comparative scoring engine that ranks N entities relative to each other.
6
+ * Supports score-based ranking, Elo ratings, and head-to-head comparison.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const engine = new RankingEngine();
11
+ * engine.add({ type: 'Vendor', data: { id: 'v1', revenue: 500000 } });
12
+ * engine.add({ type: 'Vendor', data: { id: 'v2', revenue: 120000 } });
13
+ *
14
+ * const result = engine.execute(compiledRanking);
15
+ * console.log(result.rankings[0]); // { rank: 1, entityId: 'v1', percentileLabel: 'top-1%', ... }
16
+ * ```
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.RankingEngine = void 0;
20
+ const core_1 = require("../../core");
21
+ const strategy_1 = require("./strategy");
22
+ class RankingEngine {
23
+ wm;
24
+ strategy;
25
+ constructor(workingMemory) {
26
+ this.wm = workingMemory ?? new core_1.WorkingMemory();
27
+ this.strategy = new strategy_1.RankingExecutor();
28
+ }
29
+ // ========================================
30
+ // IWorkingMemory Implementation
31
+ // ========================================
32
+ add(input) {
33
+ return this.wm.add(input);
34
+ }
35
+ remove(factId) {
36
+ return this.wm.remove(factId);
37
+ }
38
+ update(input) {
39
+ return this.wm.update(input);
40
+ }
41
+ get(factId) {
42
+ return this.wm.get(factId);
43
+ }
44
+ getByType(type) {
45
+ return this.wm.getByType(type);
46
+ }
47
+ getAll() {
48
+ return this.wm.getAll();
49
+ }
50
+ has(factId) {
51
+ return this.wm.has(factId);
52
+ }
53
+ size() {
54
+ return this.wm.size();
55
+ }
56
+ clear() {
57
+ this.wm.clear();
58
+ }
59
+ getChanges() {
60
+ return this.wm.getChanges();
61
+ }
62
+ clearChanges() {
63
+ this.wm.clearChanges();
64
+ }
65
+ // ========================================
66
+ // Engine Execution
67
+ // ========================================
68
+ /**
69
+ * Execute a ranking ruleset.
70
+ *
71
+ * Scores all entities of the configured type and produces
72
+ * a ranked list with percentiles and optional tier/movement tracking.
73
+ *
74
+ * @param ruleSet - Compiled ranking ruleset
75
+ * @param options - Runtime options (previousRankings for movement, onRank callback)
76
+ * @returns Ranking result with sorted entities
77
+ */
78
+ execute(ruleSet, options = {}) {
79
+ return this.strategy.run(ruleSet, this.wm, options);
80
+ }
81
+ // ========================================
82
+ // Utility Methods
83
+ // ========================================
84
+ getWorkingMemory() {
85
+ return this.wm;
86
+ }
87
+ }
88
+ exports.RankingEngine = RankingEngine;
89
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/engines/ranking/engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,qCAKoB;AAUpB,yCAA6C;AAE7C,MAAa,aAAa;IAChB,EAAE,CAAgB;IAClB,QAAQ,CAAkB;IAElC,YAAY,aAA6B;QACvC,IAAI,CAAC,EAAE,GAAG,aAAa,IAAI,IAAI,oBAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAe,EAAE,CAAC;IACxC,CAAC;IAED,2CAA2C;IAC3C,gCAAgC;IAChC,2CAA2C;IAE3C,GAAG,CAA0B,KAAmB;QAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAA0B,KAAmB;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;IACzB,CAAC;IAED,2CAA2C;IAC3C,mBAAmB;IACnB,2CAA2C;IAE3C;;;;;;;;;OASG;IACH,OAAO,CACL,OAAkC,EAClC,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,2CAA2C;IAC3C,kBAAkB;IAClB,2CAA2C;IAE3C,gBAAgB;QACd,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AArFD,sCAqFC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ranking Engine — Comparative Entity Ranking
3
+ */
4
+ 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 './types';
5
+ export { K_FACTOR_VALUES, isKFactorPreset, resolvePercentileLabel, resolveMovement } from './types';
6
+ export { compileRankingRuleSet } from './compiler';
7
+ export { RankingExecutor, rankingStrategy } from './strategy';
8
+ export { RankingEngine } from './engine';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/ranking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,eAAe,EAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Ranking Engine — Comparative Entity Ranking
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RankingEngine = exports.rankingStrategy = exports.RankingExecutor = exports.compileRankingRuleSet = exports.resolveMovement = exports.resolvePercentileLabel = exports.isKFactorPreset = exports.K_FACTOR_VALUES = void 0;
7
+ // Constants & utilities
8
+ var types_1 = require("./types");
9
+ Object.defineProperty(exports, "K_FACTOR_VALUES", { enumerable: true, get: function () { return types_1.K_FACTOR_VALUES; } });
10
+ Object.defineProperty(exports, "isKFactorPreset", { enumerable: true, get: function () { return types_1.isKFactorPreset; } });
11
+ Object.defineProperty(exports, "resolvePercentileLabel", { enumerable: true, get: function () { return types_1.resolvePercentileLabel; } });
12
+ Object.defineProperty(exports, "resolveMovement", { enumerable: true, get: function () { return types_1.resolveMovement; } });
13
+ // Compiler
14
+ var compiler_1 = require("./compiler");
15
+ Object.defineProperty(exports, "compileRankingRuleSet", { enumerable: true, get: function () { return compiler_1.compileRankingRuleSet; } });
16
+ // Strategy
17
+ var strategy_1 = require("./strategy");
18
+ Object.defineProperty(exports, "RankingExecutor", { enumerable: true, get: function () { return strategy_1.RankingExecutor; } });
19
+ Object.defineProperty(exports, "rankingStrategy", { enumerable: true, get: function () { return strategy_1.rankingStrategy; } });
20
+ // Engine
21
+ var engine_1 = require("./engine");
22
+ Object.defineProperty(exports, "RankingEngine", { enumerable: true, get: function () { return engine_1.RankingEngine; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/ranking/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA4BH,wBAAwB;AACxB,iCAKiB;AAJf,wGAAA,eAAe,OAAA;AACf,wGAAA,eAAe,OAAA;AACf,+GAAA,sBAAsB,OAAA;AACtB,wGAAA,eAAe,OAAA;AAGjB,WAAW;AACX,uCAAmD;AAA1C,iHAAA,qBAAqB,OAAA;AAE9B,WAAW;AACX,uCAA8D;AAArD,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAEzC,SAAS;AACT,mCAAyC;AAAhC,uGAAA,aAAa,OAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Ranking Engine Strategy
3
+ *
4
+ * Core execution logic for all ranking strategies:
5
+ * - score: Delegates to ScoringEngine, ranks by totalScore
6
+ * - elo: Processes match history, computes Elo ratings
7
+ * - head-to-head: Pairwise comparison on weighted criteria
8
+ */
9
+ import type { IWorkingMemory } from '../../core';
10
+ import type { TierDefinition } from '../scoring/types';
11
+ import type { CompiledRankingRuleSet, RankingOptions, RankingResult } from './types';
12
+ export declare class RankingExecutor {
13
+ run<T extends TierDefinition = TierDefinition>(ruleSet: CompiledRankingRuleSet<T>, wm: IWorkingMemory, options?: RankingOptions): RankingResult<T>;
14
+ private runScore;
15
+ private runElo;
16
+ private runHeadToHead;
17
+ private buildRankedEntities;
18
+ }
19
+ /** Singleton instance */
20
+ export declare const rankingStrategy: RankingExecutor;
21
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/ranking/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AAEzE,OAAO,KAAK,EACV,sBAAsB,EAItB,cAAc,EACd,aAAa,EAId,MAAM,SAAS,CAAC;AAGjB,qBAAa,eAAe;IAC1B,GAAG,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC3C,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAClC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAAC,CAAC,CAAC;IAiCnB,OAAO,CAAC,QAAQ;IA0ChB,OAAO,CAAC,MAAM;IAuDd,OAAO,CAAC,aAAa;IAiErB,OAAO,CAAC,mBAAmB;CAoF5B;AAqBD,yBAAyB;AACzB,eAAO,MAAM,eAAe,iBAAwB,CAAC"}