@higher.archi/boe 1.0.28 → 1.0.30
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/decay/engine.d.ts +32 -1
- package/dist/engines/decay/engine.d.ts.map +1 -1
- package/dist/engines/decay/engine.js +69 -0
- package/dist/engines/decay/engine.js.map +1 -1
- package/dist/engines/decay/index.d.ts +1 -1
- package/dist/engines/decay/index.d.ts.map +1 -1
- package/dist/engines/decay/index.js.map +1 -1
- package/dist/engines/decay/strategy.d.ts +4 -2
- package/dist/engines/decay/strategy.d.ts.map +1 -1
- package/dist/engines/decay/strategy.js +24 -0
- package/dist/engines/decay/strategy.js.map +1 -1
- package/dist/engines/decay/types.d.ts +9 -0
- package/dist/engines/decay/types.d.ts.map +1 -1
- package/dist/engines/loyalty/compiler.d.ts +11 -0
- package/dist/engines/loyalty/compiler.d.ts.map +1 -0
- package/dist/engines/loyalty/compiler.js +144 -0
- package/dist/engines/loyalty/compiler.js.map +1 -0
- package/dist/engines/loyalty/engine.d.ts +76 -0
- package/dist/engines/loyalty/engine.d.ts.map +1 -0
- package/dist/engines/loyalty/engine.js +132 -0
- package/dist/engines/loyalty/engine.js.map +1 -0
- package/dist/engines/loyalty/index.d.ts +8 -0
- package/dist/engines/loyalty/index.d.ts.map +1 -0
- package/dist/engines/loyalty/index.js +17 -0
- package/dist/engines/loyalty/index.js.map +1 -0
- package/dist/engines/loyalty/strategy.d.ts +35 -0
- package/dist/engines/loyalty/strategy.d.ts.map +1 -0
- package/dist/engines/loyalty/strategy.js +405 -0
- package/dist/engines/loyalty/strategy.js.map +1 -0
- package/dist/engines/loyalty/types.d.ts +190 -0
- package/dist/engines/loyalty/types.d.ts.map +1 -0
- package/dist/engines/loyalty/types.js +11 -0
- package/dist/engines/loyalty/types.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/engines/decay/engine.ts +93 -1
- package/src/engines/decay/index.ts +2 -1
- package/src/engines/decay/strategy.ts +33 -0
- package/src/engines/decay/types.ts +10 -0
- package/src/engines/loyalty/compiler.ts +174 -0
- package/src/engines/loyalty/engine.ts +174 -0
- package/src/engines/loyalty/index.ts +43 -0
- package/src/engines/loyalty/strategy.ts +532 -0
- package/src/engines/loyalty/types.ts +252 -0
- package/src/index.ts +39 -1
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
import { WorkingMemory, Fact, FactInput, FactChange } from '../../core';
|
|
19
|
-
import type { CompiledDecayRuleSet, DecayOptions, DecayResult } from './types';
|
|
19
|
+
import type { CompiledDecayRuleSet, DecayOptions, DecayResult, DecayIngestResult, UrgencyTier } from './types';
|
|
20
20
|
export declare class DecayEngine {
|
|
21
21
|
private wm;
|
|
22
22
|
private strategy;
|
|
23
|
+
private _stream;
|
|
23
24
|
constructor(workingMemory?: WorkingMemory);
|
|
24
25
|
add<T = Record<string, any>>(input: FactInput<T>): Fact<T>;
|
|
25
26
|
remove(factId: string): Fact | undefined;
|
|
@@ -43,6 +44,36 @@ export declare class DecayEngine {
|
|
|
43
44
|
* @returns Decay result with per-entity freshness and tier distribution
|
|
44
45
|
*/
|
|
45
46
|
execute(ruleSet: CompiledDecayRuleSet, options?: DecayOptions): DecayResult;
|
|
47
|
+
/**
|
|
48
|
+
* Score a single entity incrementally without touching working memory.
|
|
49
|
+
*
|
|
50
|
+
* Each call computes the entity's freshness, updates a running accumulator
|
|
51
|
+
* (tier distribution, average freshness), and returns both the individual
|
|
52
|
+
* result and the aggregate. The compiled ruleset must stay the same across
|
|
53
|
+
* calls (matched by id). Call `resetStream()` to start a new stream.
|
|
54
|
+
*
|
|
55
|
+
* Note: event-driven re-engagement requires facts in working memory,
|
|
56
|
+
* so ingest() uses multi-dimension scoring without re-engagement events.
|
|
57
|
+
*
|
|
58
|
+
* @param entityData - The entity's data object (same shape as fact.data)
|
|
59
|
+
* @param ruleSet - Compiled decay ruleset
|
|
60
|
+
* @param asOf - Reference time (default: now)
|
|
61
|
+
* @returns DecayIngestResult with entity-level and aggregate stats
|
|
62
|
+
*/
|
|
63
|
+
ingest(entityData: Record<string, any>, ruleSet: CompiledDecayRuleSet, asOf?: Date): DecayIngestResult;
|
|
64
|
+
/**
|
|
65
|
+
* Get the current streaming aggregate without ingesting a new entity.
|
|
66
|
+
* Returns null if no entities have been ingested yet.
|
|
67
|
+
*/
|
|
68
|
+
getStreamResult(): {
|
|
69
|
+
tierDistribution: Record<UrgencyTier, number>;
|
|
70
|
+
averageFreshness: number;
|
|
71
|
+
totalIngested: number;
|
|
72
|
+
} | null;
|
|
73
|
+
/**
|
|
74
|
+
* Reset the streaming accumulator. Does not affect working memory.
|
|
75
|
+
*/
|
|
76
|
+
resetStream(): void;
|
|
46
77
|
getWorkingMemory(): WorkingMemory;
|
|
47
78
|
}
|
|
48
79
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,aAAa,EACb,IAAI,EACJ,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,aAAa,EACb,IAAI,EACJ,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACZ,MAAM,SAAS,CAAC;AAajB,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAiC;gBAEpC,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,CACL,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,YAAiB,GACzB,WAAW;IAQd;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CACJ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,OAAO,EAAE,oBAAoB,EAC7B,IAAI,GAAE,IAAiB,GACtB,iBAAiB;IAoCpB;;;OAGG;IACH,eAAe,IAAI;QAAE,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAS5H;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB,gBAAgB,IAAI,aAAa;CAGlC"}
|
|
@@ -23,6 +23,7 @@ const strategy_1 = require("./strategy");
|
|
|
23
23
|
class DecayEngine {
|
|
24
24
|
wm;
|
|
25
25
|
strategy;
|
|
26
|
+
_stream = null;
|
|
26
27
|
constructor(workingMemory) {
|
|
27
28
|
this.wm = workingMemory ?? new core_1.WorkingMemory();
|
|
28
29
|
this.strategy = new strategy_1.DecayExecutor();
|
|
@@ -80,6 +81,74 @@ class DecayEngine {
|
|
|
80
81
|
return this.strategy.run(ruleSet, this.wm, options);
|
|
81
82
|
}
|
|
82
83
|
// ========================================
|
|
84
|
+
// Streaming Ingest
|
|
85
|
+
// ========================================
|
|
86
|
+
/**
|
|
87
|
+
* Score a single entity incrementally without touching working memory.
|
|
88
|
+
*
|
|
89
|
+
* Each call computes the entity's freshness, updates a running accumulator
|
|
90
|
+
* (tier distribution, average freshness), and returns both the individual
|
|
91
|
+
* result and the aggregate. The compiled ruleset must stay the same across
|
|
92
|
+
* calls (matched by id). Call `resetStream()` to start a new stream.
|
|
93
|
+
*
|
|
94
|
+
* Note: event-driven re-engagement requires facts in working memory,
|
|
95
|
+
* so ingest() uses multi-dimension scoring without re-engagement events.
|
|
96
|
+
*
|
|
97
|
+
* @param entityData - The entity's data object (same shape as fact.data)
|
|
98
|
+
* @param ruleSet - Compiled decay ruleset
|
|
99
|
+
* @param asOf - Reference time (default: now)
|
|
100
|
+
* @returns DecayIngestResult with entity-level and aggregate stats
|
|
101
|
+
*/
|
|
102
|
+
ingest(entityData, ruleSet, asOf = new Date()) {
|
|
103
|
+
if (!this._stream || this._stream.ruleSetId !== ruleSet.id) {
|
|
104
|
+
this._stream = {
|
|
105
|
+
ruleSetId: ruleSet.id,
|
|
106
|
+
freshnessSum: 0,
|
|
107
|
+
count: 0,
|
|
108
|
+
tierDistribution: { critical: 0, high: 0, medium: 0, low: 0, stale: 0 },
|
|
109
|
+
lastResult: null
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Build a temporary fact for the executor
|
|
113
|
+
const tempFact = {
|
|
114
|
+
id: entityData[ruleSet.entityIdField] ?? `ingest:${this._stream.count + 1}`,
|
|
115
|
+
type: ruleSet.entityType,
|
|
116
|
+
data: entityData
|
|
117
|
+
};
|
|
118
|
+
const entityResult = this.strategy.scoreEntity(tempFact, ruleSet, asOf);
|
|
119
|
+
// Update accumulator
|
|
120
|
+
const s = this._stream;
|
|
121
|
+
s.freshnessSum += entityResult.compositeFreshness;
|
|
122
|
+
s.count++;
|
|
123
|
+
s.tierDistribution[entityResult.urgencyTier]++;
|
|
124
|
+
const averageFreshness = Math.round((s.freshnessSum / s.count) * 10000) / 10000;
|
|
125
|
+
return {
|
|
126
|
+
...entityResult,
|
|
127
|
+
tierDistribution: { ...s.tierDistribution },
|
|
128
|
+
averageFreshness,
|
|
129
|
+
totalIngested: s.count
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the current streaming aggregate without ingesting a new entity.
|
|
134
|
+
* Returns null if no entities have been ingested yet.
|
|
135
|
+
*/
|
|
136
|
+
getStreamResult() {
|
|
137
|
+
if (!this._stream || this._stream.count === 0)
|
|
138
|
+
return null;
|
|
139
|
+
return {
|
|
140
|
+
tierDistribution: { ...this._stream.tierDistribution },
|
|
141
|
+
averageFreshness: Math.round((this._stream.freshnessSum / this._stream.count) * 10000) / 10000,
|
|
142
|
+
totalIngested: this._stream.count
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Reset the streaming accumulator. Does not affect working memory.
|
|
147
|
+
*/
|
|
148
|
+
resetStream() {
|
|
149
|
+
this._stream = null;
|
|
150
|
+
}
|
|
151
|
+
// ========================================
|
|
83
152
|
// Utility Methods
|
|
84
153
|
// ========================================
|
|
85
154
|
getWorkingMemory() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/engines/decay/engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,qCAKoB;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/engines/decay/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Decay Engine -- Temporal Freshness Scoring
|
|
3
3
|
*/
|
|
4
|
-
export type { DecayStrategy, UrgencyTier, ReEngagementEffect, DecayAggregation, DecayDimension, CompiledDecayDimension, ReEngagementRule, SingleDimensionDecayRuleSet, MultiDimensionDecayRuleSet, EventDrivenDecayRuleSet, DecayRuleSet, CompiledSingleDimensionDecayRuleSet, CompiledMultiDimensionDecayRuleSet, CompiledEventDrivenDecayRuleSet, CompiledDecayRuleSet, DimensionDecayResult, ReEngagementEvent, EntityDecayResult, DecayResult, DecayOptions } from './types';
|
|
4
|
+
export type { DecayStrategy, UrgencyTier, ReEngagementEffect, DecayAggregation, DecayDimension, CompiledDecayDimension, ReEngagementRule, SingleDimensionDecayRuleSet, MultiDimensionDecayRuleSet, EventDrivenDecayRuleSet, DecayRuleSet, CompiledSingleDimensionDecayRuleSet, CompiledMultiDimensionDecayRuleSet, CompiledEventDrivenDecayRuleSet, CompiledDecayRuleSet, DimensionDecayResult, ReEngagementEvent, EntityDecayResult, DecayResult, DecayOptions, DecayIngestResult } from './types';
|
|
5
5
|
export { URGENCY_THRESHOLDS, resolveUrgencyTier } from './types';
|
|
6
6
|
export { compileDecayRuleSet } from './compiler';
|
|
7
7
|
export { DecayExecutor, decayStrategy } from './strategy';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,YAAY,EACZ,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,YAAY,EACZ,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/decay/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/decay/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2BH,wBAAwB;AACxB,iCAGiB;AAFf,2GAAA,kBAAkB,OAAA;AAClB,2GAAA,kBAAkB,OAAA;AAGpB,WAAW;AACX,uCAAiD;AAAxC,+GAAA,mBAAmB,OAAA;AAE5B,WAAW;AACX,uCAA0D;AAAjD,yGAAA,aAAa,OAAA;AAAE,yGAAA,aAAa,OAAA;AAErC,SAAS;AACT,mCAAuC;AAA9B,qGAAA,WAAW,OAAA"}
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
* - multi-dimension: Multiple temporal axes aggregated into a composite score
|
|
7
7
|
* - event-driven: Multi-dimension with re-engagement events that reset/boost/extend decay
|
|
8
8
|
*/
|
|
9
|
-
import type { IWorkingMemory } from '../../core';
|
|
10
|
-
import type { CompiledDecayRuleSet, DecayOptions, DecayResult } from './types';
|
|
9
|
+
import type { IWorkingMemory, Fact } from '../../core';
|
|
10
|
+
import type { CompiledDecayRuleSet, DecayOptions, DecayResult, EntityDecayResult } from './types';
|
|
11
11
|
export declare class DecayExecutor {
|
|
12
|
+
/** Score a single entity fact directly (no WorkingMemory scan) */
|
|
13
|
+
scoreEntity(fact: Fact, ruleSet: CompiledDecayRuleSet, asOf?: Date): EntityDecayResult;
|
|
12
14
|
run(ruleSet: CompiledDecayRuleSet, wm: IWorkingMemory, options?: DecayOptions): DecayResult;
|
|
13
15
|
private runSingleDimension;
|
|
14
16
|
private runMultiDimension;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvD,OAAO,KAAK,EACV,oBAAoB,EAKpB,YAAY,EACZ,WAAW,EACX,iBAAiB,EAKlB,MAAM,SAAS,CAAC;AAKjB,qBAAa,aAAa;IACxB,kEAAkE;IAClE,WAAW,CACT,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,oBAAoB,EAC7B,IAAI,GAAE,IAAiB,GACtB,iBAAiB;IA4BpB,GAAG,CACD,OAAO,EAAE,oBAAoB,EAC7B,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,YAAiB,GACzB,WAAW;IA+Cd,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,cAAc;CA0IvB;AAiGD,yBAAyB;AACzB,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -13,6 +13,30 @@ const decay_1 = require("../../core/evaluation/decay");
|
|
|
13
13
|
const types_1 = require("./types");
|
|
14
14
|
const MS_PER_DAY = 86_400_000;
|
|
15
15
|
class DecayExecutor {
|
|
16
|
+
/** Score a single entity fact directly (no WorkingMemory scan) */
|
|
17
|
+
scoreEntity(fact, ruleSet, asOf = new Date()) {
|
|
18
|
+
const entityId = resolveEntityId(fact, ruleSet.entityIdField);
|
|
19
|
+
if (ruleSet.strategy === 'single-dimension') {
|
|
20
|
+
const dimResult = computeDimensionDecay(fact, ruleSet.dimension, asOf);
|
|
21
|
+
return {
|
|
22
|
+
entityId,
|
|
23
|
+
compositeFreshness: dimResult.freshnessScore,
|
|
24
|
+
urgencyTier: (0, types_1.resolveUrgencyTier)(dimResult.freshnessScore, ruleSet.urgencyThresholds),
|
|
25
|
+
dimensions: [dimResult]
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// multi-dimension or event-driven (without WM-based re-engagement events)
|
|
29
|
+
const dimensions = ruleSet.strategy === 'event-driven' ? ruleSet.dimensions : ruleSet.dimensions;
|
|
30
|
+
const aggregation = ruleSet.aggregation;
|
|
31
|
+
const dimResults = dimensions.map(dim => computeDimensionDecay(fact, dim, asOf));
|
|
32
|
+
const compositeFreshness = aggregateFreshness(dimResults, dimensions, aggregation);
|
|
33
|
+
return {
|
|
34
|
+
entityId,
|
|
35
|
+
compositeFreshness,
|
|
36
|
+
urgencyTier: (0, types_1.resolveUrgencyTier)(compositeFreshness, ruleSet.urgencyThresholds),
|
|
37
|
+
dimensions: dimResults
|
|
38
|
+
};
|
|
39
|
+
}
|
|
16
40
|
run(ruleSet, wm, options = {}) {
|
|
17
41
|
const startTime = performance.now();
|
|
18
42
|
const asOf = options.asOf ?? new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/decay/strategy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/decay/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -144,5 +144,14 @@ export type DecayOptions = {
|
|
|
144
144
|
asOf?: Date;
|
|
145
145
|
onEntity?: (entity: EntityDecayResult) => void;
|
|
146
146
|
};
|
|
147
|
+
/** Result from ingest() -- includes individual entity result and running aggregate */
|
|
148
|
+
export type DecayIngestResult = EntityDecayResult & {
|
|
149
|
+
/** Running tier distribution across all ingested entities */
|
|
150
|
+
tierDistribution: Record<UrgencyTier, number>;
|
|
151
|
+
/** Running average freshness across all ingested entities */
|
|
152
|
+
averageFreshness: number;
|
|
153
|
+
/** Total number of entities ingested so far */
|
|
154
|
+
totalIngested: number;
|
|
155
|
+
};
|
|
147
156
|
export {};
|
|
148
157
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/decay/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loyalty Engine Compiler
|
|
3
|
+
*
|
|
4
|
+
* Validates loyalty rulesets and resolves defaults.
|
|
5
|
+
*/
|
|
6
|
+
import type { LoyaltyRuleSet, CompiledLoyaltyRuleSet } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Compile and validate a loyalty ruleset.
|
|
9
|
+
*/
|
|
10
|
+
export declare function compileLoyaltyRuleSet(ruleSet: LoyaltyRuleSet): CompiledLoyaltyRuleSet;
|
|
11
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/compiler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EAIvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,GACtB,sBAAsB,CAmBxB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Loyalty Engine Compiler
|
|
4
|
+
*
|
|
5
|
+
* Validates loyalty rulesets and resolves defaults.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.compileLoyaltyRuleSet = compileLoyaltyRuleSet;
|
|
9
|
+
const errors_1 = require("../../core/errors");
|
|
10
|
+
/**
|
|
11
|
+
* Compile and validate a loyalty ruleset.
|
|
12
|
+
*/
|
|
13
|
+
function compileLoyaltyRuleSet(ruleSet) {
|
|
14
|
+
if (!ruleSet.id) {
|
|
15
|
+
throw new errors_1.CompilationError('Loyalty ruleset requires an id');
|
|
16
|
+
}
|
|
17
|
+
if (ruleSet.mode !== 'loyalty') {
|
|
18
|
+
throw new errors_1.CompilationError(`Expected mode 'loyalty', got '${ruleSet.mode}'`);
|
|
19
|
+
}
|
|
20
|
+
switch (ruleSet.strategy) {
|
|
21
|
+
case 'earning':
|
|
22
|
+
return compileEarning(ruleSet);
|
|
23
|
+
case 'redemption':
|
|
24
|
+
return compileRedemption(ruleSet);
|
|
25
|
+
case 'tier-evaluation':
|
|
26
|
+
return compileTierEvaluation(ruleSet);
|
|
27
|
+
default:
|
|
28
|
+
throw new errors_1.CompilationError(`Unknown loyalty strategy: '${ruleSet.strategy}'`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function compileEarning(ruleSet) {
|
|
32
|
+
if (!ruleSet.earningRules || ruleSet.earningRules.length === 0) {
|
|
33
|
+
throw new errors_1.CompilationError('Earning strategy requires at least one earning rule');
|
|
34
|
+
}
|
|
35
|
+
// Validate unique rule IDs
|
|
36
|
+
const ruleIds = new Set();
|
|
37
|
+
for (const rule of ruleSet.earningRules) {
|
|
38
|
+
if (!rule.id) {
|
|
39
|
+
throw new errors_1.CompilationError('Each earning rule requires an id');
|
|
40
|
+
}
|
|
41
|
+
if (ruleIds.has(rule.id)) {
|
|
42
|
+
throw new errors_1.CompilationError(`Duplicate earning rule id: '${rule.id}'`);
|
|
43
|
+
}
|
|
44
|
+
if (rule.baseRate < 0) {
|
|
45
|
+
throw new errors_1.CompilationError(`Earning rule '${rule.id}' baseRate must be non-negative`);
|
|
46
|
+
}
|
|
47
|
+
ruleIds.add(rule.id);
|
|
48
|
+
}
|
|
49
|
+
// Validate tier IDs are unique
|
|
50
|
+
validateTierIds(ruleSet.tiers);
|
|
51
|
+
// Validate promotions
|
|
52
|
+
validatePromotions(ruleSet.promotions);
|
|
53
|
+
return {
|
|
54
|
+
id: ruleSet.id,
|
|
55
|
+
name: ruleSet.name,
|
|
56
|
+
mode: 'loyalty',
|
|
57
|
+
strategy: 'earning',
|
|
58
|
+
earningRules: ruleSet.earningRules,
|
|
59
|
+
defaultRate: ruleSet.defaultRate ?? 1,
|
|
60
|
+
tiers: ruleSet.tiers ?? [],
|
|
61
|
+
expirationPolicy: ruleSet.expirationPolicy ?? {},
|
|
62
|
+
promotions: ruleSet.promotions ?? []
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function compileRedemption(ruleSet) {
|
|
66
|
+
if (!ruleSet.redemptionOptions || ruleSet.redemptionOptions.length === 0) {
|
|
67
|
+
throw new errors_1.CompilationError('Redemption strategy requires at least one redemption option');
|
|
68
|
+
}
|
|
69
|
+
// Validate unique option IDs
|
|
70
|
+
const optionIds = new Set();
|
|
71
|
+
for (const option of ruleSet.redemptionOptions) {
|
|
72
|
+
if (!option.id) {
|
|
73
|
+
throw new errors_1.CompilationError('Each redemption option requires an id');
|
|
74
|
+
}
|
|
75
|
+
if (optionIds.has(option.id)) {
|
|
76
|
+
throw new errors_1.CompilationError(`Duplicate redemption option id: '${option.id}'`);
|
|
77
|
+
}
|
|
78
|
+
if (option.pointsRequired <= 0) {
|
|
79
|
+
throw new errors_1.CompilationError(`Redemption option '${option.id}' pointsRequired must be positive`);
|
|
80
|
+
}
|
|
81
|
+
optionIds.add(option.id);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
id: ruleSet.id,
|
|
85
|
+
name: ruleSet.name,
|
|
86
|
+
mode: 'loyalty',
|
|
87
|
+
strategy: 'redemption',
|
|
88
|
+
redemptionOptions: ruleSet.redemptionOptions,
|
|
89
|
+
tiers: ruleSet.tiers ?? [],
|
|
90
|
+
expirationPolicy: ruleSet.expirationPolicy ?? {},
|
|
91
|
+
promotions: ruleSet.promotions ?? []
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function compileTierEvaluation(ruleSet) {
|
|
95
|
+
if (!ruleSet.tiers || ruleSet.tiers.length === 0) {
|
|
96
|
+
throw new errors_1.CompilationError('Tier-evaluation strategy requires at least one tier definition');
|
|
97
|
+
}
|
|
98
|
+
// Validate tier IDs are unique
|
|
99
|
+
validateTierIds(ruleSet.tiers);
|
|
100
|
+
// Validate tiers are sorted by threshold ascending
|
|
101
|
+
for (let i = 1; i < ruleSet.tiers.length; i++) {
|
|
102
|
+
if (ruleSet.tiers[i].qualifyingThreshold < ruleSet.tiers[i - 1].qualifyingThreshold) {
|
|
103
|
+
throw new errors_1.CompilationError(`Tier '${ruleSet.tiers[i].id}' threshold (${ruleSet.tiers[i].qualifyingThreshold}) ` +
|
|
104
|
+
`is less than previous tier '${ruleSet.tiers[i - 1].id}' (${ruleSet.tiers[i - 1].qualifyingThreshold}). ` +
|
|
105
|
+
`Tiers must be ordered by ascending threshold.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
id: ruleSet.id,
|
|
110
|
+
name: ruleSet.name,
|
|
111
|
+
mode: 'loyalty',
|
|
112
|
+
strategy: 'tier-evaluation',
|
|
113
|
+
evaluationPeriod: ruleSet.evaluationPeriod ?? 'rolling-12-months',
|
|
114
|
+
tiers: ruleSet.tiers,
|
|
115
|
+
expirationPolicy: ruleSet.expirationPolicy ?? {},
|
|
116
|
+
promotions: ruleSet.promotions ?? []
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function validateTierIds(tiers) {
|
|
120
|
+
if (!tiers)
|
|
121
|
+
return;
|
|
122
|
+
const tierIds = new Set();
|
|
123
|
+
for (const tier of tiers) {
|
|
124
|
+
if (tierIds.has(tier.id)) {
|
|
125
|
+
throw new errors_1.CompilationError(`Duplicate tier id: '${tier.id}'`);
|
|
126
|
+
}
|
|
127
|
+
tierIds.add(tier.id);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function validatePromotions(promotions) {
|
|
131
|
+
if (!promotions)
|
|
132
|
+
return;
|
|
133
|
+
const promoIds = new Set();
|
|
134
|
+
for (const promo of promotions) {
|
|
135
|
+
if (!promo.id) {
|
|
136
|
+
throw new errors_1.CompilationError('Each promotion requires an id');
|
|
137
|
+
}
|
|
138
|
+
if (promoIds.has(promo.id)) {
|
|
139
|
+
throw new errors_1.CompilationError(`Duplicate promotion id: '${promo.id}'`);
|
|
140
|
+
}
|
|
141
|
+
promoIds.add(promo.id);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/engines/loyalty/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loyalty Engine
|
|
3
|
+
*
|
|
4
|
+
* Point ledger engine that manages earning rules with category multipliers,
|
|
5
|
+
* point transactions, tier-qualified balances, and promotion stacking.
|
|
6
|
+
* Unlike other BOE engines, the Loyalty engine maintains a running balance
|
|
7
|
+
* ledger across operations.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const engine = new LoyaltyEngine();
|
|
12
|
+
* const compiled = compileLoyaltyRuleSet({ ... });
|
|
13
|
+
*
|
|
14
|
+
* // Stream purchases as they arrive
|
|
15
|
+
* const r1 = engine.ingest({ memberId: 'M001', amount: 250, category: 'dining' }, compiled);
|
|
16
|
+
* // r1.pointsEarned: 500, r1.newBalance: 500
|
|
17
|
+
*
|
|
18
|
+
* engine.getBalance('M001'); // { currentBalance: 500, ... }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { WorkingMemory, Fact, FactInput, FactChange } from '../../core';
|
|
22
|
+
import type { CompiledLoyaltyRuleSet, CompiledEarningRuleSet, LoyaltyOptions, LoyaltyResult, LoyaltyIngestResult, MemberBalance } from './types';
|
|
23
|
+
export declare class LoyaltyEngine {
|
|
24
|
+
private wm;
|
|
25
|
+
private strategy;
|
|
26
|
+
private _ledger;
|
|
27
|
+
constructor(workingMemory?: WorkingMemory);
|
|
28
|
+
add<T = Record<string, any>>(input: FactInput<T>): Fact<T>;
|
|
29
|
+
remove(factId: string): Fact | undefined;
|
|
30
|
+
update<T = Record<string, any>>(input: FactInput<T>): Fact<T>;
|
|
31
|
+
get(factId: string): Fact | undefined;
|
|
32
|
+
getByType(type: string): Fact[];
|
|
33
|
+
getAll(): Fact[];
|
|
34
|
+
has(factId: string): boolean;
|
|
35
|
+
size(): number;
|
|
36
|
+
clear(): void;
|
|
37
|
+
getChanges(): FactChange[];
|
|
38
|
+
clearChanges(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Execute a loyalty ruleset against all facts in working memory.
|
|
41
|
+
*
|
|
42
|
+
* @param ruleSet - Compiled loyalty ruleset
|
|
43
|
+
* @param options - Runtime options (asOf date)
|
|
44
|
+
* @returns Loyalty result (earning, redemption, or tier-evaluation)
|
|
45
|
+
*/
|
|
46
|
+
execute(ruleSet: CompiledLoyaltyRuleSet, options?: LoyaltyOptions): LoyaltyResult;
|
|
47
|
+
/**
|
|
48
|
+
* Process a single purchase/activity event incrementally.
|
|
49
|
+
*
|
|
50
|
+
* Each call computes points earned, updates the internal ledger,
|
|
51
|
+
* evaluates tier status, and returns the result with the new balance.
|
|
52
|
+
* Only works with earning strategy rulesets.
|
|
53
|
+
*
|
|
54
|
+
* @param eventData - Event data with memberId, amount, and optional category
|
|
55
|
+
* @param ruleSet - Compiled earning ruleset
|
|
56
|
+
* @param asOf - Reference time (default: now)
|
|
57
|
+
* @returns Earning result with updated balance
|
|
58
|
+
*/
|
|
59
|
+
ingest(eventData: Record<string, any>, ruleSet: CompiledEarningRuleSet, asOf?: Date): LoyaltyIngestResult;
|
|
60
|
+
/**
|
|
61
|
+
* Get the current balance for a member.
|
|
62
|
+
* Returns undefined if the member has no transactions.
|
|
63
|
+
*/
|
|
64
|
+
getBalance(memberId: string): MemberBalance | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Get the full ledger state (all member balances).
|
|
67
|
+
*/
|
|
68
|
+
getLedger(): Map<string, MemberBalance>;
|
|
69
|
+
/**
|
|
70
|
+
* Reset the ledger, clearing all member balances.
|
|
71
|
+
* Does not affect working memory.
|
|
72
|
+
*/
|
|
73
|
+
resetLedger(): void;
|
|
74
|
+
getWorkingMemory(): WorkingMemory;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,aAAa,EACb,IAAI,EACJ,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAyC;gBAE5C,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;;;;;;OAMG;IACH,OAAO,CACL,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,cAAmB,GAC3B,aAAa;IAQhB;;;;;;;;;;;OAWG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,OAAO,EAAE,sBAAsB,EAC/B,IAAI,GAAE,IAAiB,GACtB,mBAAmB;IAQtB;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIvD;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAIvC;;;OAGG;IACH,WAAW,IAAI,IAAI;IAQnB,gBAAgB,IAAI,aAAa;CAGlC"}
|