@higher.archi/boe 1.0.23 → 1.0.25
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/prediction/compiler.d.ts +11 -0
- package/dist/engines/prediction/compiler.d.ts.map +1 -0
- package/dist/engines/prediction/compiler.js +153 -0
- package/dist/engines/prediction/compiler.js.map +1 -0
- package/dist/engines/prediction/engine.d.ts +49 -0
- package/dist/engines/prediction/engine.d.ts.map +1 -0
- package/dist/engines/prediction/engine.js +91 -0
- package/dist/engines/prediction/engine.js.map +1 -0
- package/dist/engines/prediction/index.d.ts +9 -0
- package/dist/engines/prediction/index.d.ts.map +1 -0
- package/dist/engines/prediction/index.js +25 -0
- package/dist/engines/prediction/index.js.map +1 -0
- package/dist/engines/prediction/strategy.d.ts +20 -0
- package/dist/engines/prediction/strategy.d.ts.map +1 -0
- package/dist/engines/prediction/strategy.js +441 -0
- package/dist/engines/prediction/strategy.js.map +1 -0
- package/dist/engines/prediction/types.d.ts +150 -0
- package/dist/engines/prediction/types.d.ts.map +1 -0
- package/dist/engines/prediction/types.js +59 -0
- package/dist/engines/prediction/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/types/rule.ts +1 -1
- package/src/engines/prediction/compiler.ts +186 -0
- package/src/engines/prediction/engine.ts +120 -0
- package/src/engines/prediction/index.ts +49 -0
- package/src/engines/prediction/strategy.ts +573 -0
- package/src/engines/prediction/types.ts +236 -0
- package/src/index.ts +39 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Prediction Engine Types
|
|
4
|
+
*
|
|
5
|
+
* Trajectory forecasting engine that takes historical score snapshots,
|
|
6
|
+
* fits a model, and projects forward. Supports linear regression,
|
|
7
|
+
* exponential smoothing, and weighted moving average strategies.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.HORIZON_PRESET_VALUES = exports.SMOOTHING_PRESET_VALUES = void 0;
|
|
11
|
+
exports.isSmoothingPreset = isSmoothingPreset;
|
|
12
|
+
exports.isHorizonPreset = isHorizonPreset;
|
|
13
|
+
exports.resolveConfidenceBracket = resolveConfidenceBracket;
|
|
14
|
+
exports.resolveTrendDirection = resolveTrendDirection;
|
|
15
|
+
// ========================================
|
|
16
|
+
// Preset Value Maps
|
|
17
|
+
// ========================================
|
|
18
|
+
exports.SMOOTHING_PRESET_VALUES = {
|
|
19
|
+
'responsive': { alpha: 0.8, beta: 0.3 },
|
|
20
|
+
'balanced': { alpha: 0.5, beta: 0.2 },
|
|
21
|
+
'smooth': { alpha: 0.2, beta: 0.1 }
|
|
22
|
+
};
|
|
23
|
+
exports.HORIZON_PRESET_VALUES = {
|
|
24
|
+
'1-day': 86_400_000,
|
|
25
|
+
'1-week': 604_800_000,
|
|
26
|
+
'1-month': 2_592_000_000,
|
|
27
|
+
'3-months': 7_776_000_000,
|
|
28
|
+
'6-months': 15_552_000_000,
|
|
29
|
+
'1-year': 31_104_000_000
|
|
30
|
+
};
|
|
31
|
+
// ========================================
|
|
32
|
+
// Type Guards
|
|
33
|
+
// ========================================
|
|
34
|
+
function isSmoothingPreset(value) {
|
|
35
|
+
return typeof value === 'string' && value in exports.SMOOTHING_PRESET_VALUES;
|
|
36
|
+
}
|
|
37
|
+
function isHorizonPreset(value) {
|
|
38
|
+
return typeof value === 'string' && value in exports.HORIZON_PRESET_VALUES;
|
|
39
|
+
}
|
|
40
|
+
// ========================================
|
|
41
|
+
// Resolver Functions
|
|
42
|
+
// ========================================
|
|
43
|
+
/** Map a confidence value (0-1) to a semantic bracket */
|
|
44
|
+
function resolveConfidenceBracket(confidence) {
|
|
45
|
+
if (confidence >= 0.8)
|
|
46
|
+
return 'high';
|
|
47
|
+
if (confidence >= 0.5)
|
|
48
|
+
return 'moderate';
|
|
49
|
+
if (confidence > 0)
|
|
50
|
+
return 'low';
|
|
51
|
+
return 'insufficient-data';
|
|
52
|
+
}
|
|
53
|
+
/** Map a slope (per ms) to a semantic trend direction */
|
|
54
|
+
function resolveTrendDirection(slopePerMs, stableThreshold) {
|
|
55
|
+
if (Math.abs(slopePerMs) <= stableThreshold)
|
|
56
|
+
return 'stable';
|
|
57
|
+
return slopePerMs > 0 ? 'rising' : 'declining';
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/prediction/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA4CH,8CAEC;AAED,0CAEC;AAOD,4DAKC;AAGD,sDAGC;AA/CD,2CAA2C;AAC3C,oBAAoB;AACpB,2CAA2C;AAE9B,QAAA,uBAAuB,GAA6D;IAC/F,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IACvC,UAAU,EAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IACvC,QAAQ,EAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CACxC,CAAC;AAEW,QAAA,qBAAqB,GAAkC;IAClE,OAAO,EAAK,UAAU;IACtB,QAAQ,EAAI,WAAW;IACvB,SAAS,EAAG,aAAa;IACzB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAI,cAAc;CAC3B,CAAC;AAEF,2CAA2C;AAC3C,cAAc;AACd,2CAA2C;AAE3C,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,+BAAuB,CAAC;AACvE,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,6BAAqB,CAAC;AACrE,CAAC;AAED,2CAA2C;AAC3C,qBAAqB;AACrB,2CAA2C;AAE3C,yDAAyD;AACzD,SAAgB,wBAAwB,CAAC,UAAkB;IACzD,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,UAAU,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,yDAAyD;AACzD,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,eAAuB;IAC/E,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,eAAe;QAAE,OAAO,QAAQ,CAAC;IAC7D,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;AACjD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -57,6 +57,8 @@ export { EnsembleStrategy, compileEnsembleRuleSet, ensembleStrategy, summarizeEn
|
|
|
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
58
|
export { RankingEngine, RankingExecutor, compileRankingRuleSet, rankingStrategy, K_FACTOR_VALUES, isKFactorPreset, resolvePercentileLabel, resolveMovement } from './engines/ranking';
|
|
59
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';
|
|
60
|
+
export { PredictionEngine, PredictionExecutor, compilePredictionRuleSet, predictionStrategy, SMOOTHING_PRESET_VALUES, HORIZON_PRESET_VALUES, isSmoothingPreset, isHorizonPreset, resolveConfidenceBracket, resolveTrendDirection } from './engines/prediction';
|
|
61
|
+
export type { PredictionStrategy, TrendDirection, SmoothingPreset, HorizonPreset, ConfidenceBracket, FieldMapping, ThresholdDefinition, LinearRegressionConfig, ExponentialSmoothingConfig, WeightedMovingAverageConfig, LinearRegressionRuleSet, ExponentialSmoothingRuleSet, WeightedMovingAverageRuleSet, PredictionRuleSet, CompiledLinearRegressionRuleSet, CompiledExponentialSmoothingRuleSet, CompiledWeightedMovingAverageRuleSet, CompiledPredictionRuleSet, ThresholdCrossing, Forecast, EntityPrediction, PredictionResult, PredictionOptions } from './engines/prediction';
|
|
60
62
|
export { soundex, nysiis, caverphone2, cosineSimilarity } from './functions';
|
|
61
63
|
export { BOEError, CompilationError, RuntimeError } from './core/errors';
|
|
62
64
|
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":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,8 +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.
|
|
34
|
-
exports.resolveDecayTimestamp = exports.calculateDecayMultiplier = exports.RuntimeError = exports.CompilationError = exports.BOEError = void 0;
|
|
33
|
+
exports.predictionStrategy = exports.compilePredictionRuleSet = exports.PredictionExecutor = exports.PredictionEngine = 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 = exports.cosineSimilarity = exports.caverphone2 = exports.nysiis = exports.soundex = exports.resolveTrendDirection = exports.resolveConfidenceBracket = exports.isHorizonPreset = exports.isSmoothingPreset = exports.HORIZON_PRESET_VALUES = exports.SMOOTHING_PRESET_VALUES = void 0;
|
|
35
35
|
// ========================================
|
|
36
36
|
// Engines
|
|
37
37
|
// ========================================
|
|
@@ -186,6 +186,18 @@ Object.defineProperty(exports, "K_FACTOR_VALUES", { enumerable: true, get: funct
|
|
|
186
186
|
Object.defineProperty(exports, "isKFactorPreset", { enumerable: true, get: function () { return ranking_1.isKFactorPreset; } });
|
|
187
187
|
Object.defineProperty(exports, "resolvePercentileLabel", { enumerable: true, get: function () { return ranking_1.resolvePercentileLabel; } });
|
|
188
188
|
Object.defineProperty(exports, "resolveMovement", { enumerable: true, get: function () { return ranking_1.resolveMovement; } });
|
|
189
|
+
// Prediction
|
|
190
|
+
var prediction_1 = require("./engines/prediction");
|
|
191
|
+
Object.defineProperty(exports, "PredictionEngine", { enumerable: true, get: function () { return prediction_1.PredictionEngine; } });
|
|
192
|
+
Object.defineProperty(exports, "PredictionExecutor", { enumerable: true, get: function () { return prediction_1.PredictionExecutor; } });
|
|
193
|
+
Object.defineProperty(exports, "compilePredictionRuleSet", { enumerable: true, get: function () { return prediction_1.compilePredictionRuleSet; } });
|
|
194
|
+
Object.defineProperty(exports, "predictionStrategy", { enumerable: true, get: function () { return prediction_1.predictionStrategy; } });
|
|
195
|
+
Object.defineProperty(exports, "SMOOTHING_PRESET_VALUES", { enumerable: true, get: function () { return prediction_1.SMOOTHING_PRESET_VALUES; } });
|
|
196
|
+
Object.defineProperty(exports, "HORIZON_PRESET_VALUES", { enumerable: true, get: function () { return prediction_1.HORIZON_PRESET_VALUES; } });
|
|
197
|
+
Object.defineProperty(exports, "isSmoothingPreset", { enumerable: true, get: function () { return prediction_1.isSmoothingPreset; } });
|
|
198
|
+
Object.defineProperty(exports, "isHorizonPreset", { enumerable: true, get: function () { return prediction_1.isHorizonPreset; } });
|
|
199
|
+
Object.defineProperty(exports, "resolveConfidenceBracket", { enumerable: true, get: function () { return prediction_1.resolveConfidenceBracket; } });
|
|
200
|
+
Object.defineProperty(exports, "resolveTrendDirection", { enumerable: true, get: function () { return prediction_1.resolveTrendDirection; } });
|
|
189
201
|
// ========================================
|
|
190
202
|
// Utility Functions (from old modules, re-exported for convenience)
|
|
191
203
|
// ========================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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.25",
|
|
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" | "ranking";
|
|
40
|
+
export type RuleSetMode = "forward" | "scoring" | "backward" | "sequential" | "fuzzy" | "bayesian" | "monte-carlo" | "state-machine" | "constraint" | "utility" | "defeasible" | "expert" | "pricing" | "ensemble" | "ranking" | "prediction";
|
|
41
41
|
|
|
42
42
|
export type BaseRule = {
|
|
43
43
|
id: string; // Unique identifier (system-generated or explicit)
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prediction Engine Compiler
|
|
3
|
+
*
|
|
4
|
+
* Validates prediction rulesets and resolves defaults.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { CompilationError } from '../../core/errors';
|
|
8
|
+
|
|
9
|
+
import type {
|
|
10
|
+
PredictionRuleSet,
|
|
11
|
+
CompiledPredictionRuleSet,
|
|
12
|
+
CompiledLinearRegressionRuleSet,
|
|
13
|
+
CompiledExponentialSmoothingRuleSet,
|
|
14
|
+
CompiledWeightedMovingAverageRuleSet
|
|
15
|
+
} from './types';
|
|
16
|
+
import { HORIZON_PRESET_VALUES, SMOOTHING_PRESET_VALUES, isHorizonPreset, isSmoothingPreset } from './types';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Compile and validate a prediction ruleset.
|
|
20
|
+
*/
|
|
21
|
+
export function compilePredictionRuleSet(
|
|
22
|
+
ruleSet: PredictionRuleSet
|
|
23
|
+
): CompiledPredictionRuleSet {
|
|
24
|
+
// ---- Common validation ----
|
|
25
|
+
|
|
26
|
+
if (!ruleSet.id) {
|
|
27
|
+
throw new CompilationError('Prediction ruleset requires an id');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (ruleSet.mode !== 'prediction') {
|
|
31
|
+
throw new CompilationError(`Expected mode 'prediction', got '${ruleSet.mode}'`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!ruleSet.snapshotType || ruleSet.snapshotType.trim() === '') {
|
|
35
|
+
throw new CompilationError('snapshotType is required and must be non-empty');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Fields validation
|
|
39
|
+
if (!ruleSet.fields) {
|
|
40
|
+
throw new CompilationError('fields mapping is required');
|
|
41
|
+
}
|
|
42
|
+
if (!ruleSet.fields.entityId || typeof ruleSet.fields.entityId !== 'string' || ruleSet.fields.entityId.trim() === '') {
|
|
43
|
+
throw new CompilationError('fields.entityId is required and must be a non-empty string');
|
|
44
|
+
}
|
|
45
|
+
if (!ruleSet.fields.score || typeof ruleSet.fields.score !== 'string' || ruleSet.fields.score.trim() === '') {
|
|
46
|
+
throw new CompilationError('fields.score is required and must be a non-empty string');
|
|
47
|
+
}
|
|
48
|
+
if (!ruleSet.fields.timestamp || typeof ruleSet.fields.timestamp !== 'string' || ruleSet.fields.timestamp.trim() === '') {
|
|
49
|
+
throw new CompilationError('fields.timestamp is required and must be a non-empty string');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Horizon
|
|
53
|
+
let horizonMs: number;
|
|
54
|
+
if (isHorizonPreset(ruleSet.horizon)) {
|
|
55
|
+
horizonMs = HORIZON_PRESET_VALUES[ruleSet.horizon];
|
|
56
|
+
} else if (typeof ruleSet.horizon === 'number') {
|
|
57
|
+
if (ruleSet.horizon <= 0) {
|
|
58
|
+
throw new CompilationError('horizon must be a positive number (milliseconds)');
|
|
59
|
+
}
|
|
60
|
+
horizonMs = ruleSet.horizon;
|
|
61
|
+
} else {
|
|
62
|
+
throw new CompilationError(`Invalid horizon: '${ruleSet.horizon}'`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Thresholds
|
|
66
|
+
const thresholds = ruleSet.thresholds ?? [];
|
|
67
|
+
if (thresholds.length > 0) {
|
|
68
|
+
const thresholdIds = new Set<string>();
|
|
69
|
+
for (const t of thresholds) {
|
|
70
|
+
if (!t.id) {
|
|
71
|
+
throw new CompilationError('Each threshold requires an id');
|
|
72
|
+
}
|
|
73
|
+
if (thresholdIds.has(t.id)) {
|
|
74
|
+
throw new CompilationError(`Duplicate threshold id: '${t.id}'`);
|
|
75
|
+
}
|
|
76
|
+
thresholdIds.add(t.id);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// defaultTrend
|
|
81
|
+
if (ruleSet.defaultTrend !== undefined && typeof ruleSet.defaultTrend !== 'number') {
|
|
82
|
+
throw new CompilationError('defaultTrend must be a number (score units per month)');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ---- Strategy-specific ----
|
|
86
|
+
|
|
87
|
+
switch (ruleSet.strategy) {
|
|
88
|
+
case 'linear-regression':
|
|
89
|
+
return compileLinearRegression(ruleSet, horizonMs, thresholds);
|
|
90
|
+
case 'exponential-smoothing':
|
|
91
|
+
return compileExponentialSmoothing(ruleSet, horizonMs, thresholds);
|
|
92
|
+
case 'weighted-moving-average':
|
|
93
|
+
return compileWeightedMovingAverage(ruleSet, horizonMs, thresholds);
|
|
94
|
+
default:
|
|
95
|
+
throw new CompilationError(`Unknown prediction strategy: '${(ruleSet as any).strategy}'`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function compileLinearRegression(
|
|
100
|
+
ruleSet: PredictionRuleSet & { strategy: 'linear-regression' },
|
|
101
|
+
horizonMs: number,
|
|
102
|
+
thresholds: PredictionRuleSet['thresholds'] & {}
|
|
103
|
+
): CompiledLinearRegressionRuleSet {
|
|
104
|
+
const stableThreshold = ruleSet.config?.stableThreshold ?? 0.001;
|
|
105
|
+
if (stableThreshold < 0) {
|
|
106
|
+
throw new CompilationError('stableThreshold must be non-negative');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
id: ruleSet.id,
|
|
111
|
+
name: ruleSet.name,
|
|
112
|
+
mode: 'prediction',
|
|
113
|
+
strategy: 'linear-regression',
|
|
114
|
+
snapshotType: ruleSet.snapshotType,
|
|
115
|
+
fields: ruleSet.fields,
|
|
116
|
+
horizonMs,
|
|
117
|
+
thresholds: thresholds as any,
|
|
118
|
+
defaultTrend: ruleSet.defaultTrend,
|
|
119
|
+
config: { stableThreshold }
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function compileExponentialSmoothing(
|
|
124
|
+
ruleSet: PredictionRuleSet & { strategy: 'exponential-smoothing' },
|
|
125
|
+
horizonMs: number,
|
|
126
|
+
thresholds: PredictionRuleSet['thresholds'] & {}
|
|
127
|
+
): CompiledExponentialSmoothingRuleSet {
|
|
128
|
+
let alpha: number;
|
|
129
|
+
let beta: number;
|
|
130
|
+
|
|
131
|
+
const smoothing = ruleSet.config?.smoothing ?? 'balanced';
|
|
132
|
+
|
|
133
|
+
if (isSmoothingPreset(smoothing)) {
|
|
134
|
+
const preset = SMOOTHING_PRESET_VALUES[smoothing];
|
|
135
|
+
alpha = preset.alpha;
|
|
136
|
+
beta = preset.beta;
|
|
137
|
+
} else if (typeof smoothing === 'object' && smoothing !== null) {
|
|
138
|
+
alpha = smoothing.alpha;
|
|
139
|
+
beta = smoothing.beta;
|
|
140
|
+
if (typeof alpha !== 'number' || alpha <= 0 || alpha > 1) {
|
|
141
|
+
throw new CompilationError('smoothing.alpha must be a number in (0, 1]');
|
|
142
|
+
}
|
|
143
|
+
if (typeof beta !== 'number' || beta <= 0 || beta > 1) {
|
|
144
|
+
throw new CompilationError('smoothing.beta must be a number in (0, 1]');
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
throw new CompilationError(`Invalid smoothing value: '${smoothing}'`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
id: ruleSet.id,
|
|
152
|
+
name: ruleSet.name,
|
|
153
|
+
mode: 'prediction',
|
|
154
|
+
strategy: 'exponential-smoothing',
|
|
155
|
+
snapshotType: ruleSet.snapshotType,
|
|
156
|
+
fields: ruleSet.fields,
|
|
157
|
+
horizonMs,
|
|
158
|
+
thresholds: thresholds as any,
|
|
159
|
+
defaultTrend: ruleSet.defaultTrend,
|
|
160
|
+
config: { alpha, beta }
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function compileWeightedMovingAverage(
|
|
165
|
+
ruleSet: PredictionRuleSet & { strategy: 'weighted-moving-average' },
|
|
166
|
+
horizonMs: number,
|
|
167
|
+
thresholds: PredictionRuleSet['thresholds'] & {}
|
|
168
|
+
): CompiledWeightedMovingAverageRuleSet {
|
|
169
|
+
const window = ruleSet.config?.window ?? 5;
|
|
170
|
+
if (!Number.isInteger(window) || window < 2) {
|
|
171
|
+
throw new CompilationError('window must be a positive integer >= 2');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
id: ruleSet.id,
|
|
176
|
+
name: ruleSet.name,
|
|
177
|
+
mode: 'prediction',
|
|
178
|
+
strategy: 'weighted-moving-average',
|
|
179
|
+
snapshotType: ruleSet.snapshotType,
|
|
180
|
+
fields: ruleSet.fields,
|
|
181
|
+
horizonMs,
|
|
182
|
+
thresholds: thresholds as any,
|
|
183
|
+
defaultTrend: ruleSet.defaultTrend,
|
|
184
|
+
config: { window }
|
|
185
|
+
};
|
|
186
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prediction Engine
|
|
3
|
+
*
|
|
4
|
+
* Trajectory forecasting engine that takes historical score snapshots,
|
|
5
|
+
* fits a model, and projects forward. Supports linear regression,
|
|
6
|
+
* exponential smoothing, and weighted moving average strategies.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const engine = new PredictionEngine();
|
|
11
|
+
* engine.add({ type: 'VendorScore', data: { vendorId: 'acme', totalScore: 520, evaluatedAt: '2025-09-01' } });
|
|
12
|
+
* engine.add({ type: 'VendorScore', data: { vendorId: 'acme', totalScore: 580, evaluatedAt: '2025-12-01' } });
|
|
13
|
+
* engine.add({ type: 'VendorScore', data: { vendorId: 'acme', totalScore: 640, evaluatedAt: '2026-03-01' } });
|
|
14
|
+
*
|
|
15
|
+
* const result = engine.execute(compiledRuleset);
|
|
16
|
+
* console.log(result.predictions[0]); // { entityId: 'acme', trend: 'rising', trendSlope: 20, ... }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import {
|
|
21
|
+
WorkingMemory,
|
|
22
|
+
Fact,
|
|
23
|
+
FactInput,
|
|
24
|
+
FactChange
|
|
25
|
+
} from '../../core';
|
|
26
|
+
|
|
27
|
+
import type {
|
|
28
|
+
CompiledPredictionRuleSet,
|
|
29
|
+
PredictionOptions,
|
|
30
|
+
PredictionResult
|
|
31
|
+
} from './types';
|
|
32
|
+
|
|
33
|
+
import { PredictionExecutor } from './strategy';
|
|
34
|
+
|
|
35
|
+
export class PredictionEngine {
|
|
36
|
+
private wm: WorkingMemory;
|
|
37
|
+
private strategy: PredictionExecutor;
|
|
38
|
+
|
|
39
|
+
constructor(workingMemory?: WorkingMemory) {
|
|
40
|
+
this.wm = workingMemory ?? new WorkingMemory();
|
|
41
|
+
this.strategy = new PredictionExecutor();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ========================================
|
|
45
|
+
// IWorkingMemory Implementation
|
|
46
|
+
// ========================================
|
|
47
|
+
|
|
48
|
+
add<T = Record<string, any>>(input: FactInput<T>): Fact<T> {
|
|
49
|
+
return this.wm.add(input);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
remove(factId: string): Fact | undefined {
|
|
53
|
+
return this.wm.remove(factId);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
update<T = Record<string, any>>(input: FactInput<T>): Fact<T> {
|
|
57
|
+
return this.wm.update(input);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
get(factId: string): Fact | undefined {
|
|
61
|
+
return this.wm.get(factId);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getByType(type: string): Fact[] {
|
|
65
|
+
return this.wm.getByType(type);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getAll(): Fact[] {
|
|
69
|
+
return this.wm.getAll();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
has(factId: string): boolean {
|
|
73
|
+
return this.wm.has(factId);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
size(): number {
|
|
77
|
+
return this.wm.size();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
clear(): void {
|
|
81
|
+
this.wm.clear();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
getChanges(): FactChange[] {
|
|
85
|
+
return this.wm.getChanges();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
clearChanges(): void {
|
|
89
|
+
this.wm.clearChanges();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// ========================================
|
|
93
|
+
// Engine Execution
|
|
94
|
+
// ========================================
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Execute a prediction ruleset.
|
|
98
|
+
*
|
|
99
|
+
* Groups all snapshots of the configured type by entity,
|
|
100
|
+
* fits a trajectory model, and projects forward to the horizon.
|
|
101
|
+
*
|
|
102
|
+
* @param ruleSet - Compiled prediction ruleset
|
|
103
|
+
* @param options - Runtime options (onPredict callback, asOf for testing)
|
|
104
|
+
* @returns Prediction result with forecasts per entity
|
|
105
|
+
*/
|
|
106
|
+
execute(
|
|
107
|
+
ruleSet: CompiledPredictionRuleSet,
|
|
108
|
+
options: PredictionOptions = {}
|
|
109
|
+
): PredictionResult {
|
|
110
|
+
return this.strategy.run(ruleSet, this.wm, options);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ========================================
|
|
114
|
+
// Utility Methods
|
|
115
|
+
// ========================================
|
|
116
|
+
|
|
117
|
+
getWorkingMemory(): WorkingMemory {
|
|
118
|
+
return this.wm;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prediction Engine — Trajectory Forecasting
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Types
|
|
6
|
+
export type {
|
|
7
|
+
PredictionStrategy,
|
|
8
|
+
TrendDirection,
|
|
9
|
+
SmoothingPreset,
|
|
10
|
+
HorizonPreset,
|
|
11
|
+
ConfidenceBracket,
|
|
12
|
+
FieldMapping,
|
|
13
|
+
ThresholdDefinition,
|
|
14
|
+
LinearRegressionConfig,
|
|
15
|
+
ExponentialSmoothingConfig,
|
|
16
|
+
WeightedMovingAverageConfig,
|
|
17
|
+
LinearRegressionRuleSet,
|
|
18
|
+
ExponentialSmoothingRuleSet,
|
|
19
|
+
WeightedMovingAverageRuleSet,
|
|
20
|
+
PredictionRuleSet,
|
|
21
|
+
CompiledLinearRegressionRuleSet,
|
|
22
|
+
CompiledExponentialSmoothingRuleSet,
|
|
23
|
+
CompiledWeightedMovingAverageRuleSet,
|
|
24
|
+
CompiledPredictionRuleSet,
|
|
25
|
+
ThresholdCrossing,
|
|
26
|
+
Forecast,
|
|
27
|
+
EntityPrediction,
|
|
28
|
+
PredictionResult,
|
|
29
|
+
PredictionOptions
|
|
30
|
+
} from './types';
|
|
31
|
+
|
|
32
|
+
// Constants & utilities
|
|
33
|
+
export {
|
|
34
|
+
SMOOTHING_PRESET_VALUES,
|
|
35
|
+
HORIZON_PRESET_VALUES,
|
|
36
|
+
isSmoothingPreset,
|
|
37
|
+
isHorizonPreset,
|
|
38
|
+
resolveConfidenceBracket,
|
|
39
|
+
resolveTrendDirection
|
|
40
|
+
} from './types';
|
|
41
|
+
|
|
42
|
+
// Compiler
|
|
43
|
+
export { compilePredictionRuleSet } from './compiler';
|
|
44
|
+
|
|
45
|
+
// Strategy
|
|
46
|
+
export { PredictionExecutor, predictionStrategy } from './strategy';
|
|
47
|
+
|
|
48
|
+
// Engine
|
|
49
|
+
export { PredictionEngine } from './engine';
|