@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.
Files changed (48) hide show
  1. package/dist/engines/decay/engine.d.ts +32 -1
  2. package/dist/engines/decay/engine.d.ts.map +1 -1
  3. package/dist/engines/decay/engine.js +69 -0
  4. package/dist/engines/decay/engine.js.map +1 -1
  5. package/dist/engines/decay/index.d.ts +1 -1
  6. package/dist/engines/decay/index.d.ts.map +1 -1
  7. package/dist/engines/decay/index.js.map +1 -1
  8. package/dist/engines/decay/strategy.d.ts +4 -2
  9. package/dist/engines/decay/strategy.d.ts.map +1 -1
  10. package/dist/engines/decay/strategy.js +24 -0
  11. package/dist/engines/decay/strategy.js.map +1 -1
  12. package/dist/engines/decay/types.d.ts +9 -0
  13. package/dist/engines/decay/types.d.ts.map +1 -1
  14. package/dist/engines/loyalty/compiler.d.ts +11 -0
  15. package/dist/engines/loyalty/compiler.d.ts.map +1 -0
  16. package/dist/engines/loyalty/compiler.js +144 -0
  17. package/dist/engines/loyalty/compiler.js.map +1 -0
  18. package/dist/engines/loyalty/engine.d.ts +76 -0
  19. package/dist/engines/loyalty/engine.d.ts.map +1 -0
  20. package/dist/engines/loyalty/engine.js +132 -0
  21. package/dist/engines/loyalty/engine.js.map +1 -0
  22. package/dist/engines/loyalty/index.d.ts +8 -0
  23. package/dist/engines/loyalty/index.d.ts.map +1 -0
  24. package/dist/engines/loyalty/index.js +17 -0
  25. package/dist/engines/loyalty/index.js.map +1 -0
  26. package/dist/engines/loyalty/strategy.d.ts +35 -0
  27. package/dist/engines/loyalty/strategy.d.ts.map +1 -0
  28. package/dist/engines/loyalty/strategy.js +405 -0
  29. package/dist/engines/loyalty/strategy.js.map +1 -0
  30. package/dist/engines/loyalty/types.d.ts +190 -0
  31. package/dist/engines/loyalty/types.d.ts.map +1 -0
  32. package/dist/engines/loyalty/types.js +11 -0
  33. package/dist/engines/loyalty/types.js.map +1 -0
  34. package/dist/index.d.ts +4 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +10 -3
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/engines/decay/engine.ts +93 -1
  40. package/src/engines/decay/index.ts +2 -1
  41. package/src/engines/decay/strategy.ts +33 -0
  42. package/src/engines/decay/types.ts +10 -0
  43. package/src/engines/loyalty/compiler.ts +174 -0
  44. package/src/engines/loyalty/engine.ts +174 -0
  45. package/src/engines/loyalty/index.ts +43 -0
  46. package/src/engines/loyalty/strategy.ts +532 -0
  47. package/src/engines/loyalty/types.ts +252 -0
  48. 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;AAIjB,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,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,gBAAgB,IAAI,aAAa;CAGlC"}
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;AAQpB,yCAA2C;AAE3C,MAAa,WAAW;IACd,EAAE,CAAgB;IAClB,QAAQ,CAAgB;IAEhC,YAAY,aAA6B;QACvC,IAAI,CAAC,EAAE,GAAG,aAAa,IAAI,IAAI,oBAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAa,EAAE,CAAC;IACtC,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,OAA6B,EAC7B,UAAwB,EAAE;QAE1B,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,kCAqFC"}
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,EACb,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
+ {"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;;;AA0BH,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"}
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,EAAQ,MAAM,YAAY,CAAC;AAIvD,OAAO,KAAK,EACV,oBAAoB,EAKpB,YAAY,EACZ,WAAW,EAMZ,MAAM,SAAS,CAAC;AAKjB,qBAAa,aAAa;IACxB,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"}
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":";AAAA;;;;;;;GAOG;;;AAGH,uDAAuE;AAiBvE,mCAA6C;AAE7C,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B,MAAa,aAAa;IACxB,GAAG,CACD,OAA6B,EAC7B,EAAkB,EAClB,UAAwB,EAAE;QAE1B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAExC,IAAI,QAA6B,CAAC;QAElC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,kBAAkB;gBACrB,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,iBAAiB;gBACpB,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,cAAc;gBACjB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA6B,OAAe,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAEhF,0BAA0B;QAC1B,MAAM,gBAAgB,GAAgC;YACpD,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;SACT,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,OAAO;YACL,QAAQ;YACR,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,gBAAgB;YAChB,eAAe;SAChB,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,4BAA4B;IAC5B,2CAA2C;IAEnC,kBAAkB,CACxB,OAA4C,EAC5C,EAAkB,EAClB,IAAU,EACV,OAAqB;QAErB,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAsB;gBAChC,QAAQ;gBACR,kBAAkB,EAAE,SAAS,CAAC,cAAc;gBAC5C,WAAW,EAAE,IAAA,0BAAkB,EAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC;gBACpF,UAAU,EAAE,CAAC,SAAS,CAAC;aACxB,CAAC;YAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2CAA2C;IAC3C,2BAA2B;IAC3B,2CAA2C;IAEnC,iBAAiB,CACvB,OAA2C,EAC3C,EAAkB,EAClB,IAAU,EACV,OAAqB;QAErB,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC9C,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CACvC,CAAC;YAEF,MAAM,kBAAkB,GAAG,kBAAkB,CAC3C,UAAU,EACV,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,CACpB,CAAC;YAEF,MAAM,MAAM,GAAsB;gBAChC,QAAQ;gBACR,kBAAkB;gBAClB,WAAW,EAAE,IAAA,0BAAkB,EAAC,kBAAkB,EAAE,OAAO,CAAC,iBAAiB,CAAC;gBAC9E,UAAU,EAAE,UAAU;aACvB,CAAC;YAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2CAA2C;IAC3C,wBAAwB;IACxB,2CAA2C;IAEnC,cAAc,CACpB,OAAwC,EACxC,EAAkB,EAClB,IAAU,EACV,OAAqB;QAErB,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAwB,EAAE,CAAC;YAE9C,2DAA2D;YAC3D,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,+EAA+E;gBAC/E,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAC/D,CAAC;gBAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAE1C,qCAAqC;gBACrC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,OAAO,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS;oBAChD,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBACpD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEvB,mDAAmD;gBACnD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACrC,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC3D,IAAI,CAAC,iBAAiB;wBAAE,SAAS;oBAEjC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACjD,MAAM,MAAM,GAAgB;wBAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB,CAAC;oBAEF,MAAM,aAAa,GAAG,IAAA,gCAAwB,EAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC;oBAEtF,IAAI,iBAAiB,GAAG,aAAa,CAAC;oBAEtC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;wBACpB,KAAK,OAAO;4BACV,kDAAkD;4BAClD,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;4BAClD,iBAAiB,GAAG,IAAA,gCAAwB,EAC1C,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,CACvC,CAAC,UAAU,CAAC;4BACb,MAAM;wBAER,KAAK,OAAO;4BACV,iCAAiC;4BACjC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;4BAC3E,MAAM;wBAER,KAAK,QAAQ;4BACX,mDAAmD;4BACnD,MAAM,YAAY,GAAG,IAAI,IAAI,CAC3B,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,UAAU,CAChE,CAAC;4BACF,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;4BAC9D,iBAAiB,GAAG,IAAA,gCAAwB,EAC1C,YAAY,EAAE,IAAI,EAAE,MAAM,CAC3B,CAAC,UAAU,CAAC;4BACb,MAAM;oBACV,CAAC;oBAED,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,cAAc;wBACzB,oBAAoB,EAAE,aAAa;wBACnC,mBAAmB,EAAE,iBAAiB;qBACvC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,8CAA8C;YAC9C,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC9C,qBAAqB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAC/C,CAAC;YAEF,kEAAkE;YAClE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC7B,gEAAgE;oBAChE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;wBACnC,+CAA+C;wBAC/C,MAAM,iBAAiB,GAAG,SAAS,CAAC,cAAc,CAAC;wBACnD,IAAI,iBAAiB,KAAK,KAAK,CAAC,oBAAoB,EAAE,CAAC;4BACrD,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC;4BACrD,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC;wBACzD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,kBAAkB,CAC3C,UAAU,EACV,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,CACpB,CAAC;YAEF,MAAM,MAAM,GAAsB;gBAChC,QAAQ;gBACR,kBAAkB;gBAClB,WAAW,EAAE,IAAA,0BAAkB,EAAC,kBAAkB,EAAE,OAAO,CAAC,iBAAiB,CAAC;gBAC9E,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;aACpE,CAAC;YAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA9QD,sCA8QC;AAED,2CAA2C;AAC3C,uBAAuB;AACvB,2CAA2C;AAE3C,SAAS,eAAe,CAAC,IAAU,EAAE,aAAqB;IACxD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAU,EACV,SAAiC,EACjC,IAAU;IAEV,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE7D,gDAAgD;IAChD,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,cAAc,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;YACpC,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,cAAc,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;YACpC,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC;YACjC,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAgB;QAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;IAEF,MAAM,SAAS,GAAc,IAAA,gCAAwB,EAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnF,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,aAAa,EAAE,SAAS,CAAC,IAAI;QAC7B,cAAc,EAAE,SAAS,CAAC,UAAU;QACpC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkC,EAClC,UAAoC,EACpC,WAA6B;IAE7B,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAE5D,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,4DAA4D;YAC5D,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe;gBAChF,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,yBAAyB;AACZ,QAAA,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
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"}