@mnemopay/sdk 0.9.1 → 0.9.3
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/adaptive.d.ts +256 -0
- package/dist/adaptive.d.ts.map +1 -0
- package/dist/adaptive.js +509 -0
- package/dist/adaptive.js.map +1 -0
- package/dist/commerce.d.ts.map +1 -1
- package/dist/commerce.js +6 -1
- package/dist/commerce.js.map +1 -1
- package/dist/fraud.d.ts.map +1 -1
- package/dist/fraud.js +14 -1
- package/dist/fraud.js.map +1 -1
- package/dist/identity.d.ts +5 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +18 -0
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -10
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +14 -3
- package/dist/ledger.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +9 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/network.d.ts +2 -0
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +63 -50
- package/dist/network.js.map +1 -1
- package/dist/rails/index.d.ts.map +1 -1
- package/dist/rails/index.js +15 -0
- package/dist/rails/index.js.map +1 -1
- package/dist/rails/paystack.d.ts +5 -1
- package/dist/rails/paystack.d.ts.map +1 -1
- package/dist/rails/paystack.js +24 -3
- package/dist/rails/paystack.js.map +1 -1
- package/package.json +2 -2
package/dist/adaptive.js
ADDED
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MnemoPay Adaptive Engine
|
|
4
|
+
*
|
|
5
|
+
* Business philosophy encoded in code: a system that doesn't learn from its
|
|
6
|
+
* own operations is dead. MnemoPay adapts to what moves the business forward
|
|
7
|
+
* — securely, with guardrails, with a full audit trail.
|
|
8
|
+
*
|
|
9
|
+
* The engine observes:
|
|
10
|
+
* - Agent behavior patterns (settlement rates, dispute frequency, charge velocity)
|
|
11
|
+
* - Revenue signals (which fee tiers produce the most volume, where agents churn)
|
|
12
|
+
* - Risk trends (emerging fraud patterns, anomaly drift, geographic shifts)
|
|
13
|
+
* - Memory health (recall quality, consolidation rates, storage efficiency)
|
|
14
|
+
*
|
|
15
|
+
* It adapts:
|
|
16
|
+
* - Fee tiers (within secure bounds) to maximize retention + revenue
|
|
17
|
+
* - Risk thresholds (tighten on emerging threats, loosen on proven agents)
|
|
18
|
+
* - Rate limits (reward trusted agents with higher throughput)
|
|
19
|
+
* - Memory decay (faster for low-value agents, slower for high-value)
|
|
20
|
+
*
|
|
21
|
+
* It NEVER:
|
|
22
|
+
* - Adapts below minimum security thresholds (floor on risk, max on limits)
|
|
23
|
+
* - Changes without an audit record
|
|
24
|
+
* - Overrides manual admin settings
|
|
25
|
+
* - Makes jumps > 20% in any single adaptation cycle
|
|
26
|
+
*
|
|
27
|
+
* This is the Agent FICO thesis: the longer an agent operates, the smarter
|
|
28
|
+
* the system becomes about that agent. Trust is earned, never assumed.
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.AdaptiveEngine = exports.DEFAULT_ADAPTIVE_CONFIG = void 0;
|
|
32
|
+
exports.DEFAULT_ADAPTIVE_CONFIG = {
|
|
33
|
+
enabled: true,
|
|
34
|
+
minObservations: 10,
|
|
35
|
+
maxDeltaPercent: 0.2,
|
|
36
|
+
decreaseFactor: 0.5, // halve on anomaly (multiplicative decrease)
|
|
37
|
+
increaseFactor: 0.02, // +2% per healthy cycle (additive increase)
|
|
38
|
+
cycleIntervalMinutes: 60,
|
|
39
|
+
lockedParams: [],
|
|
40
|
+
minTrustDurationDays: 14,
|
|
41
|
+
circuitBreakerThreshold: 3,
|
|
42
|
+
psiHaltThreshold: 0.25,
|
|
43
|
+
psiWarnThreshold: 0.1,
|
|
44
|
+
};
|
|
45
|
+
// ─── Secure Bounds ──────────────────────────────────────────────────────────
|
|
46
|
+
// These are HARD floors and ceilings. The adaptive engine cannot breach them.
|
|
47
|
+
// This is the "never adapt yourself into an insecure state" principle.
|
|
48
|
+
const SECURE_BOUNDS = {
|
|
49
|
+
// Fee rates: never go below 0.5% (business viability) or above 5% (market competitiveness)
|
|
50
|
+
feeRate: { min: 0.005, max: 0.05 },
|
|
51
|
+
// Risk block threshold: never go above 0.95 (must always be able to block)
|
|
52
|
+
blockThreshold: { min: 0.3, max: 0.95 },
|
|
53
|
+
// Flag threshold: never go above block threshold
|
|
54
|
+
flagThreshold: { min: 0.1, max: 0.7 },
|
|
55
|
+
// Rate limit multiplier: trusted agents get up to 3x, never below 0.5x
|
|
56
|
+
rateLimitMultiplier: { min: 0.5, max: 3.0 },
|
|
57
|
+
// Memory decay: never so fast memories die in < 1hr, never so slow they never decay
|
|
58
|
+
decayRate: { min: 0.001, max: 0.5 },
|
|
59
|
+
// Settlement hold: never below 5 minutes (gives rail time to capture)
|
|
60
|
+
settlementHoldMinutes: { min: 5, max: 1440 },
|
|
61
|
+
};
|
|
62
|
+
// ─── Adaptive Engine ────────────────────────────────────────────────────────
|
|
63
|
+
class AdaptiveEngine {
|
|
64
|
+
config;
|
|
65
|
+
events = [];
|
|
66
|
+
insights = new Map();
|
|
67
|
+
adaptations = [];
|
|
68
|
+
lastCycleAt = 0;
|
|
69
|
+
/** Manual overrides set by admin — these are never auto-changed */
|
|
70
|
+
adminOverrides = new Map();
|
|
71
|
+
eventCounter = 0;
|
|
72
|
+
/** Circuit breaker: consecutive cycles where metrics worsened */
|
|
73
|
+
consecutiveWorseningCycles = 0;
|
|
74
|
+
/** Circuit breaker: is the engine halted? */
|
|
75
|
+
circuitBreakerTripped = false;
|
|
76
|
+
/** Snapshot of key metrics from previous cycle (for regression detection) */
|
|
77
|
+
previousCycleMetrics = null;
|
|
78
|
+
/** PSI: distribution snapshot from previous cycle for drift detection */
|
|
79
|
+
previousDistribution = null;
|
|
80
|
+
/** Track first event timestamp per agent for trust duration calculation */
|
|
81
|
+
agentFirstSeen = new Map();
|
|
82
|
+
constructor(config) {
|
|
83
|
+
this.config = { ...exports.DEFAULT_ADAPTIVE_CONFIG, ...config };
|
|
84
|
+
}
|
|
85
|
+
// ── Event Ingestion ────────────────────────────────────────────────────
|
|
86
|
+
/**
|
|
87
|
+
* Record an operational event. The engine learns from every operation.
|
|
88
|
+
*/
|
|
89
|
+
observe(event) {
|
|
90
|
+
this.events.push(event);
|
|
91
|
+
this.eventCounter++;
|
|
92
|
+
// Track first-seen timestamp for trust duration calculation
|
|
93
|
+
if (!this.agentFirstSeen.has(event.agentId)) {
|
|
94
|
+
this.agentFirstSeen.set(event.agentId, event.timestamp);
|
|
95
|
+
}
|
|
96
|
+
// Rolling window: keep last 50K events to bound memory usage
|
|
97
|
+
if (this.events.length > 50_000) {
|
|
98
|
+
this.events = this.events.slice(-25_000);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// ── Agent Analysis ─────────────────────────────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* Analyze an agent's behavioral pattern and produce an insight profile.
|
|
104
|
+
* This is the "Agent FICO score" — built from real operational data.
|
|
105
|
+
*/
|
|
106
|
+
analyzeAgent(agentId) {
|
|
107
|
+
const agentEvents = this.events.filter(e => e.agentId === agentId);
|
|
108
|
+
const charges = agentEvents.filter(e => e.type === "charge");
|
|
109
|
+
const settles = agentEvents.filter(e => e.type === "settle");
|
|
110
|
+
const refunds = agentEvents.filter(e => e.type === "refund");
|
|
111
|
+
const disputes = agentEvents.filter(e => e.type === "dispute");
|
|
112
|
+
const memStores = agentEvents.filter(e => e.type === "memory_store");
|
|
113
|
+
const memRecalls = agentEvents.filter(e => e.type === "memory_recall");
|
|
114
|
+
const fraudBlocks = agentEvents.filter(e => e.type === "fraud_block");
|
|
115
|
+
const totalCompleted = settles.length + refunds.length;
|
|
116
|
+
const settlementRate = totalCompleted > 0 ? settles.length / totalCompleted : 0;
|
|
117
|
+
const avgCharge = charges.length > 0
|
|
118
|
+
? charges.reduce((sum, e) => sum + (e.amount ?? 0), 0) / charges.length
|
|
119
|
+
: 0;
|
|
120
|
+
const totalRevenue = settles.reduce((sum, e) => sum + (e.amount ?? 0) * 0.019, 0);
|
|
121
|
+
// Memory efficiency: recalls / stores (how often are stored memories actually used?)
|
|
122
|
+
const memoryEfficiency = memStores.length > 0
|
|
123
|
+
? Math.min(memRecalls.length / memStores.length, 1.0)
|
|
124
|
+
: 0;
|
|
125
|
+
// Risk tier determination — velocity-aware trust
|
|
126
|
+
// Anti-gaming: require BOTH sufficient observations AND time duration.
|
|
127
|
+
// A burst of 10 clean settlements in 1 hour should NOT earn "trusted".
|
|
128
|
+
let riskTier = "standard";
|
|
129
|
+
const firstSeen = this.agentFirstSeen.get(agentId) ?? Date.now();
|
|
130
|
+
const agentAgeDays = (Date.now() - firstSeen) / 86_400_000;
|
|
131
|
+
const meetsTimeDuration = agentAgeDays >= this.config.minTrustDurationDays;
|
|
132
|
+
if (disputes.length > 0 || fraudBlocks.length > 2) {
|
|
133
|
+
riskTier = disputes.length >= 3 ? "restricted" : "elevated";
|
|
134
|
+
}
|
|
135
|
+
else if (settlementRate > 0.9 && settles.length >= 10 && meetsTimeDuration) {
|
|
136
|
+
riskTier = "trusted";
|
|
137
|
+
}
|
|
138
|
+
// Recommended fee rate: reward high-volume, high-settlement agents
|
|
139
|
+
let recommendedFeeRate = null;
|
|
140
|
+
const totalVolume = settles.reduce((sum, e) => sum + (e.amount ?? 0), 0);
|
|
141
|
+
if (totalVolume >= 100_000)
|
|
142
|
+
recommendedFeeRate = 0.010;
|
|
143
|
+
else if (totalVolume >= 10_000)
|
|
144
|
+
recommendedFeeRate = 0.015;
|
|
145
|
+
// Rate limit multiplier: trusted agents earn higher throughput
|
|
146
|
+
let rateLimitMultiplier = 1.0;
|
|
147
|
+
if (riskTier === "trusted")
|
|
148
|
+
rateLimitMultiplier = 2.0;
|
|
149
|
+
else if (riskTier === "elevated")
|
|
150
|
+
rateLimitMultiplier = 0.7;
|
|
151
|
+
else if (riskTier === "restricted")
|
|
152
|
+
rateLimitMultiplier = 0.5;
|
|
153
|
+
// Health score (0-100)
|
|
154
|
+
let healthScore = 50;
|
|
155
|
+
healthScore += settlementRate * 20; // Up to +20 for settlements
|
|
156
|
+
healthScore += Math.min(settles.length, 50) * 0.2; // Up to +10 for volume
|
|
157
|
+
healthScore += memoryEfficiency * 10; // Up to +10 for memory usage
|
|
158
|
+
healthScore -= disputes.length * 5; // -5 per dispute
|
|
159
|
+
healthScore -= fraudBlocks.length * 10; // -10 per fraud block
|
|
160
|
+
healthScore = Math.max(0, Math.min(100, healthScore));
|
|
161
|
+
const insight = {
|
|
162
|
+
agentId,
|
|
163
|
+
settlementRate,
|
|
164
|
+
avgChargeAmount: Math.round(avgCharge * 100) / 100,
|
|
165
|
+
disputeCount: disputes.length,
|
|
166
|
+
totalRevenue: Math.round(totalRevenue * 100) / 100,
|
|
167
|
+
memoryEfficiency: Math.round(memoryEfficiency * 100) / 100,
|
|
168
|
+
riskTier,
|
|
169
|
+
recommendedFeeRate,
|
|
170
|
+
rateLimitMultiplier,
|
|
171
|
+
healthScore: Math.round(healthScore),
|
|
172
|
+
observations: agentEvents.length,
|
|
173
|
+
analyzedAt: new Date(),
|
|
174
|
+
};
|
|
175
|
+
this.insights.set(agentId, insight);
|
|
176
|
+
return insight;
|
|
177
|
+
}
|
|
178
|
+
// ── Business Metrics ───────────────────────────────────────────────────
|
|
179
|
+
/**
|
|
180
|
+
* Compute platform-wide business intelligence.
|
|
181
|
+
*/
|
|
182
|
+
computeMetrics() {
|
|
183
|
+
const agentIds = new Set(this.events.map(e => e.agentId));
|
|
184
|
+
const settles = this.events.filter(e => e.type === "settle");
|
|
185
|
+
const refunds = this.events.filter(e => e.type === "refund");
|
|
186
|
+
const charges = this.events.filter(e => e.type === "charge");
|
|
187
|
+
const disputes = this.events.filter(e => e.type === "dispute");
|
|
188
|
+
const fraudBlocks = this.events.filter(e => e.type === "fraud_block");
|
|
189
|
+
const memStores = this.events.filter(e => e.type === "memory_store");
|
|
190
|
+
const memRecalls = this.events.filter(e => e.type === "memory_recall");
|
|
191
|
+
const totalRevenue = settles.reduce((sum, e) => sum + (e.amount ?? 0) * 0.019, 0);
|
|
192
|
+
const totalCompleted = settles.length + refunds.length;
|
|
193
|
+
const platformSettlementRate = totalCompleted > 0 ? settles.length / totalCompleted : 0;
|
|
194
|
+
// Cycle revenue (last cycle interval)
|
|
195
|
+
const cycleStart = Date.now() - this.config.cycleIntervalMinutes * 60_000;
|
|
196
|
+
const cycleSettles = settles.filter(e => e.timestamp > cycleStart);
|
|
197
|
+
const cycleRevenue = cycleSettles.reduce((sum, e) => sum + (e.amount ?? 0) * 0.019, 0);
|
|
198
|
+
// Analyze all agents for tier counts
|
|
199
|
+
let trustedCount = 0;
|
|
200
|
+
let disputedAgentIds = new Set();
|
|
201
|
+
for (const agentId of agentIds) {
|
|
202
|
+
const insight = this.analyzeAgent(agentId);
|
|
203
|
+
if (insight.riskTier === "trusted")
|
|
204
|
+
trustedCount++;
|
|
205
|
+
if (insight.disputeCount > 0)
|
|
206
|
+
disputedAgentIds.add(agentId);
|
|
207
|
+
}
|
|
208
|
+
const avgMemUtil = memStores.length > 0
|
|
209
|
+
? Math.min(memRecalls.length / memStores.length, 1.0)
|
|
210
|
+
: 0;
|
|
211
|
+
const fraudDetectionRate = charges.length > 0
|
|
212
|
+
? fraudBlocks.length / charges.length
|
|
213
|
+
: 0;
|
|
214
|
+
// System health: composite score
|
|
215
|
+
let systemHealth = 70; // baseline
|
|
216
|
+
systemHealth += platformSettlementRate * 15;
|
|
217
|
+
systemHealth -= (disputes.length / Math.max(settles.length, 1)) * 20;
|
|
218
|
+
systemHealth += avgMemUtil * 5;
|
|
219
|
+
systemHealth = Math.max(0, Math.min(100, Math.round(systemHealth)));
|
|
220
|
+
return {
|
|
221
|
+
totalRevenue: Math.round(totalRevenue * 100) / 100,
|
|
222
|
+
cycleRevenue: Math.round(cycleRevenue * 100) / 100,
|
|
223
|
+
totalAgents: agentIds.size,
|
|
224
|
+
trustedAgents: trustedCount,
|
|
225
|
+
disputedAgents: disputedAgentIds.size,
|
|
226
|
+
platformSettlementRate: Math.round(platformSettlementRate * 100) / 100,
|
|
227
|
+
avgMemoryUtilization: Math.round(avgMemUtil * 100) / 100,
|
|
228
|
+
fraudDetectionRate: Math.round(fraudDetectionRate * 1000) / 1000,
|
|
229
|
+
systemHealth,
|
|
230
|
+
computedAt: new Date(),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
// ── Adaptive Optimization ──────────────────────────────────────────────
|
|
234
|
+
/**
|
|
235
|
+
* Run an adaptation cycle. Uses asymmetric AIMD:
|
|
236
|
+
* - Additive Increase: slow, gradual loosening on sustained good metrics
|
|
237
|
+
* - Multiplicative Decrease: fast, aggressive tightening on anomalies
|
|
238
|
+
*
|
|
239
|
+
* Includes circuit breaker (halt after N consecutive worsening cycles)
|
|
240
|
+
* and PSI drift detection (halt if input distribution shifts too much).
|
|
241
|
+
*/
|
|
242
|
+
runCycle() {
|
|
243
|
+
if (!this.config.enabled)
|
|
244
|
+
return [];
|
|
245
|
+
// Circuit breaker: if tripped, refuse to adapt until manually reset
|
|
246
|
+
if (this.circuitBreakerTripped) {
|
|
247
|
+
return [this.createRecord("_circuit_breaker", 0, 0, `Circuit breaker tripped after ${this.config.circuitBreakerThreshold} consecutive worsening cycles. Call resetCircuitBreaker() to resume.`, { consecutiveWorsening: this.consecutiveWorseningCycles })];
|
|
248
|
+
}
|
|
249
|
+
// Enforce minimum cycle interval
|
|
250
|
+
const now = Date.now();
|
|
251
|
+
if (now - this.lastCycleAt < this.config.cycleIntervalMinutes * 60_000) {
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
this.lastCycleAt = now;
|
|
255
|
+
if (this.events.length < this.config.minObservations) {
|
|
256
|
+
return [];
|
|
257
|
+
}
|
|
258
|
+
const metrics = this.computeMetrics();
|
|
259
|
+
const proposals = [];
|
|
260
|
+
// ── PSI Drift Detection ──────────────────────────────────────────
|
|
261
|
+
const currentDist = this.computeEventDistribution();
|
|
262
|
+
if (this.previousDistribution) {
|
|
263
|
+
const psi = this.computePSI(this.previousDistribution, currentDist);
|
|
264
|
+
if (psi > this.config.psiHaltThreshold) {
|
|
265
|
+
proposals.push(this.createRecord("_psi_drift", psi, this.config.psiHaltThreshold, `Severe distribution drift detected (PSI=${psi.toFixed(3)} > ${this.config.psiHaltThreshold}). Adaptation halted this cycle.`, { psi, threshold: this.config.psiHaltThreshold }));
|
|
266
|
+
this.previousDistribution = currentDist;
|
|
267
|
+
this.adaptations.push(...proposals);
|
|
268
|
+
return proposals;
|
|
269
|
+
}
|
|
270
|
+
if (psi > this.config.psiWarnThreshold) {
|
|
271
|
+
proposals.push(this.createRecord("_psi_warning", psi, this.config.psiWarnThreshold, `Moderate distribution drift (PSI=${psi.toFixed(3)}). Adapting with caution.`, { psi, threshold: this.config.psiWarnThreshold }));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
this.previousDistribution = currentDist;
|
|
275
|
+
// ── Circuit Breaker: check if previous cycle's adaptations worsened metrics ──
|
|
276
|
+
if (this.previousCycleMetrics) {
|
|
277
|
+
const worsened = metrics.platformSettlementRate < this.previousCycleMetrics.settlementRate - 0.02 ||
|
|
278
|
+
metrics.systemHealth < this.previousCycleMetrics.systemHealth - 3;
|
|
279
|
+
if (worsened) {
|
|
280
|
+
this.consecutiveWorseningCycles++;
|
|
281
|
+
if (this.consecutiveWorseningCycles >= this.config.circuitBreakerThreshold) {
|
|
282
|
+
this.circuitBreakerTripped = true;
|
|
283
|
+
proposals.push(this.createRecord("_circuit_breaker", this.consecutiveWorseningCycles, this.config.circuitBreakerThreshold, `Circuit breaker TRIPPED: ${this.consecutiveWorseningCycles} consecutive cycles worsened metrics.`, { prevSettlement: this.previousCycleMetrics.settlementRate, currentSettlement: metrics.platformSettlementRate }));
|
|
284
|
+
this.previousCycleMetrics = { settlementRate: metrics.platformSettlementRate, systemHealth: metrics.systemHealth };
|
|
285
|
+
this.adaptations.push(...proposals);
|
|
286
|
+
return proposals;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this.consecutiveWorseningCycles = 0; // Reset on healthy cycle
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
this.previousCycleMetrics = { settlementRate: metrics.platformSettlementRate, systemHealth: metrics.systemHealth };
|
|
294
|
+
// ── Asymmetric AIMD: Adapt fee rate ──────────────────────────────
|
|
295
|
+
if (!this.isLocked("feeRate")) {
|
|
296
|
+
const currentRate = this.getEffectiveValue("feeRate", 0.019);
|
|
297
|
+
let targetRate = currentRate;
|
|
298
|
+
const disputeRatio = metrics.disputedAgents / Math.max(metrics.totalAgents, 1);
|
|
299
|
+
if (disputeRatio > 0.1) {
|
|
300
|
+
// MULTIPLICATIVE DECREASE: fast tighten (increase fees to cover risk)
|
|
301
|
+
targetRate = currentRate * (1 + this.config.decreaseFactor);
|
|
302
|
+
}
|
|
303
|
+
else if (metrics.platformSettlementRate > 0.9 && metrics.totalAgents >= 5) {
|
|
304
|
+
// ADDITIVE INCREASE: slow loosen (decrease fees as reward)
|
|
305
|
+
targetRate = currentRate - (currentRate * this.config.increaseFactor);
|
|
306
|
+
}
|
|
307
|
+
targetRate = this.clamp(targetRate, SECURE_BOUNDS.feeRate.min, SECURE_BOUNDS.feeRate.max);
|
|
308
|
+
targetRate = this.limitDelta(currentRate, targetRate);
|
|
309
|
+
if (Math.abs(targetRate - currentRate) > 0.0001) {
|
|
310
|
+
proposals.push(this.createRecord("feeRate", currentRate, targetRate, disputeRatio > 0.1
|
|
311
|
+
? "AIMD multiplicative decrease: elevated disputes — increasing fees"
|
|
312
|
+
: "AIMD additive increase: healthy ecosystem — rewarding with lower fees", { settlementRate: metrics.platformSettlementRate, disputeRatio }));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// ── Asymmetric AIMD: Adapt risk thresholds ───────────────────────
|
|
316
|
+
if (!this.isLocked("blockThreshold")) {
|
|
317
|
+
const currentBlock = this.getEffectiveValue("blockThreshold", 0.75);
|
|
318
|
+
let targetBlock = currentBlock;
|
|
319
|
+
if (metrics.fraudDetectionRate > 0.10) {
|
|
320
|
+
// ADDITIVE INCREASE: slowly loosen (reduce false positives)
|
|
321
|
+
targetBlock = currentBlock + (currentBlock * this.config.increaseFactor);
|
|
322
|
+
}
|
|
323
|
+
else if (metrics.fraudDetectionRate < 0.001 && metrics.totalAgents > 20) {
|
|
324
|
+
// MULTIPLICATIVE DECREASE: fast tighten (more safety)
|
|
325
|
+
targetBlock = currentBlock * (1 - this.config.decreaseFactor * 0.1);
|
|
326
|
+
}
|
|
327
|
+
targetBlock = this.clamp(targetBlock, SECURE_BOUNDS.blockThreshold.min, SECURE_BOUNDS.blockThreshold.max);
|
|
328
|
+
targetBlock = this.limitDelta(currentBlock, targetBlock);
|
|
329
|
+
if (Math.abs(targetBlock - currentBlock) > 0.001) {
|
|
330
|
+
proposals.push(this.createRecord("blockThreshold", currentBlock, targetBlock, metrics.fraudDetectionRate > 0.10
|
|
331
|
+
? "AIMD additive: loosening to reduce false positives"
|
|
332
|
+
: "AIMD multiplicative: tightening for safety", { fraudRate: metrics.fraudDetectionRate, totalAgents: metrics.totalAgents }));
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
this.adaptations.push(...proposals);
|
|
336
|
+
if (this.adaptations.length > 1000) {
|
|
337
|
+
this.adaptations = this.adaptations.slice(-500);
|
|
338
|
+
}
|
|
339
|
+
return proposals;
|
|
340
|
+
}
|
|
341
|
+
// ── Circuit Breaker Controls ──────────────────────────────────────
|
|
342
|
+
/** Reset the circuit breaker, allowing adaptation to resume. */
|
|
343
|
+
resetCircuitBreaker() {
|
|
344
|
+
this.circuitBreakerTripped = false;
|
|
345
|
+
this.consecutiveWorseningCycles = 0;
|
|
346
|
+
}
|
|
347
|
+
/** Check if circuit breaker is currently tripped. */
|
|
348
|
+
get isCircuitBreakerTripped() {
|
|
349
|
+
return this.circuitBreakerTripped;
|
|
350
|
+
}
|
|
351
|
+
// ── PSI (Population Stability Index) ──────────────────────────────
|
|
352
|
+
/**
|
|
353
|
+
* Compute the event type distribution for drift detection.
|
|
354
|
+
*/
|
|
355
|
+
computeEventDistribution() {
|
|
356
|
+
const dist = new Map();
|
|
357
|
+
const total = this.events.length || 1;
|
|
358
|
+
for (const e of this.events) {
|
|
359
|
+
dist.set(e.type, (dist.get(e.type) ?? 0) + 1);
|
|
360
|
+
}
|
|
361
|
+
// Normalize to proportions
|
|
362
|
+
for (const [key, val] of dist) {
|
|
363
|
+
dist.set(key, val / total);
|
|
364
|
+
}
|
|
365
|
+
return dist;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Compute Population Stability Index between two distributions.
|
|
369
|
+
* PSI > 0.1 = moderate drift, > 0.25 = severe drift.
|
|
370
|
+
*/
|
|
371
|
+
computePSI(prev, current) {
|
|
372
|
+
const allKeys = new Set([...prev.keys(), ...current.keys()]);
|
|
373
|
+
let psi = 0;
|
|
374
|
+
const epsilon = 0.0001; // prevent log(0)
|
|
375
|
+
for (const key of allKeys) {
|
|
376
|
+
const p = Math.max(prev.get(key) ?? 0, epsilon);
|
|
377
|
+
const q = Math.max(current.get(key) ?? 0, epsilon);
|
|
378
|
+
psi += (q - p) * Math.log(q / p);
|
|
379
|
+
}
|
|
380
|
+
return Math.abs(psi);
|
|
381
|
+
}
|
|
382
|
+
// ── Admin Controls ─────────────────────────────────────────────────────
|
|
383
|
+
/**
|
|
384
|
+
* Lock a parameter from adaptive changes. Admin decisions override AI.
|
|
385
|
+
*/
|
|
386
|
+
lockParam(param) {
|
|
387
|
+
if (!this.config.lockedParams.includes(param)) {
|
|
388
|
+
this.config.lockedParams.push(param);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Unlock a parameter for adaptive changes.
|
|
393
|
+
*/
|
|
394
|
+
unlockParam(param) {
|
|
395
|
+
this.config.lockedParams = this.config.lockedParams.filter(p => p !== param);
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Set an admin override. This value will be used instead of adaptive suggestions.
|
|
399
|
+
*/
|
|
400
|
+
setOverride(param, value) {
|
|
401
|
+
this.adminOverrides.set(param, value);
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Remove an admin override, allowing adaptive control.
|
|
405
|
+
*/
|
|
406
|
+
removeOverride(param) {
|
|
407
|
+
this.adminOverrides.delete(param);
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Get the effective value for a parameter (admin override > adaptation > default).
|
|
411
|
+
*/
|
|
412
|
+
getEffectiveValue(param, defaultValue) {
|
|
413
|
+
if (this.adminOverrides.has(param))
|
|
414
|
+
return this.adminOverrides.get(param);
|
|
415
|
+
// Check last applied adaptation
|
|
416
|
+
const lastAdaptation = [...this.adaptations]
|
|
417
|
+
.reverse()
|
|
418
|
+
.find(a => a.parameter === param && a.applied);
|
|
419
|
+
return lastAdaptation ? lastAdaptation.newValue : defaultValue;
|
|
420
|
+
}
|
|
421
|
+
// ── Getters ────────────────────────────────────────────────────────────
|
|
422
|
+
getInsight(agentId) {
|
|
423
|
+
return this.insights.get(agentId);
|
|
424
|
+
}
|
|
425
|
+
getAdaptations(limit = 50) {
|
|
426
|
+
return this.adaptations.slice(-limit);
|
|
427
|
+
}
|
|
428
|
+
get totalEvents() {
|
|
429
|
+
return this.eventCounter;
|
|
430
|
+
}
|
|
431
|
+
get secureBounds() {
|
|
432
|
+
return SECURE_BOUNDS;
|
|
433
|
+
}
|
|
434
|
+
/** Backdate an agent's first-seen timestamp (for testing or data migration) */
|
|
435
|
+
setAgentFirstSeen(agentId, timestamp) {
|
|
436
|
+
this.agentFirstSeen.set(agentId, timestamp);
|
|
437
|
+
}
|
|
438
|
+
// ── Serialization ──────────────────────────────────────────────────────
|
|
439
|
+
serialize() {
|
|
440
|
+
return {
|
|
441
|
+
config: this.config,
|
|
442
|
+
insights: Array.from(this.insights.entries()),
|
|
443
|
+
adaptations: this.adaptations.slice(-200),
|
|
444
|
+
overrides: Array.from(this.adminOverrides.entries()),
|
|
445
|
+
eventCount: this.eventCounter,
|
|
446
|
+
circuitBreakerTripped: this.circuitBreakerTripped,
|
|
447
|
+
consecutiveWorsening: this.consecutiveWorseningCycles,
|
|
448
|
+
agentFirstSeen: Array.from(this.agentFirstSeen.entries()),
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
static deserialize(data) {
|
|
452
|
+
const engine = new AdaptiveEngine(data.config);
|
|
453
|
+
for (const [id, insight] of data.insights) {
|
|
454
|
+
insight.analyzedAt = new Date(insight.analyzedAt);
|
|
455
|
+
engine.insights.set(id, insight);
|
|
456
|
+
}
|
|
457
|
+
engine.adaptations = data.adaptations.map(a => ({
|
|
458
|
+
...a,
|
|
459
|
+
appliedAt: new Date(a.appliedAt),
|
|
460
|
+
}));
|
|
461
|
+
for (const [key, val] of data.overrides) {
|
|
462
|
+
engine.adminOverrides.set(key, val);
|
|
463
|
+
}
|
|
464
|
+
engine.eventCounter = data.eventCount ?? 0;
|
|
465
|
+
engine.circuitBreakerTripped = data.circuitBreakerTripped ?? false;
|
|
466
|
+
engine.consecutiveWorseningCycles = data.consecutiveWorsening ?? 0;
|
|
467
|
+
if (data.agentFirstSeen) {
|
|
468
|
+
for (const [id, ts] of data.agentFirstSeen) {
|
|
469
|
+
engine.agentFirstSeen.set(id, ts);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return engine;
|
|
473
|
+
}
|
|
474
|
+
// ── Internal Utilities ─────────────────────────────────────────────────
|
|
475
|
+
isLocked(param) {
|
|
476
|
+
return this.config.lockedParams.includes(param) || this.adminOverrides.has(param);
|
|
477
|
+
}
|
|
478
|
+
clamp(value, min, max) {
|
|
479
|
+
return Math.max(min, Math.min(max, value));
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Limit how much a parameter can change in one cycle.
|
|
483
|
+
* Prevents wild swings — stability is a security property.
|
|
484
|
+
*/
|
|
485
|
+
limitDelta(current, target) {
|
|
486
|
+
const maxDelta = current * this.config.maxDeltaPercent;
|
|
487
|
+
const delta = target - current;
|
|
488
|
+
if (Math.abs(delta) > maxDelta) {
|
|
489
|
+
return current + Math.sign(delta) * maxDelta;
|
|
490
|
+
}
|
|
491
|
+
return target;
|
|
492
|
+
}
|
|
493
|
+
createRecord(parameter, previousValue, newValue, reason, evidence) {
|
|
494
|
+
const isLocked = this.isLocked(parameter);
|
|
495
|
+
return {
|
|
496
|
+
id: `adapt_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
|
|
497
|
+
parameter,
|
|
498
|
+
previousValue: Math.round(previousValue * 10000) / 10000,
|
|
499
|
+
newValue: Math.round(newValue * 10000) / 10000,
|
|
500
|
+
reason,
|
|
501
|
+
evidence,
|
|
502
|
+
appliedAt: new Date(),
|
|
503
|
+
applied: !isLocked,
|
|
504
|
+
vetoReason: isLocked ? `Parameter '${parameter}' is locked or has admin override` : undefined,
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
exports.AdaptiveEngine = AdaptiveEngine;
|
|
509
|
+
//# sourceMappingURL=adaptive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive.js","sourceRoot":"","sources":["../src/adaptive.ts"],"names":[],"mappings":"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"}
|
package/dist/commerce.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce.d.ts","sourceRoot":"","sources":["../src/commerce.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"commerce.d.ts","sourceRoot":"","sources":["../src/commerce.ts"],"names":[],"mappings":"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"}
|
package/dist/commerce.js
CHANGED
|
@@ -114,7 +114,7 @@ class MockCommerceProvider {
|
|
|
114
114
|
exports.MockCommerceProvider = MockCommerceProvider;
|
|
115
115
|
// ─── Commerce Engine ────────────────────────────────────────────────────────
|
|
116
116
|
class CommerceEngine {
|
|
117
|
-
agent; // MnemoPayLite — avoid circular import
|
|
117
|
+
agent; // MnemoPayLite — uses any to avoid circular import
|
|
118
118
|
provider;
|
|
119
119
|
mandate = null;
|
|
120
120
|
orders = new Map();
|
|
@@ -124,6 +124,11 @@ class CommerceEngine {
|
|
|
124
124
|
searchLimiter = new CommerceRateLimiter(20, 60_000); // 20 searches/min
|
|
125
125
|
purchaseLimiter = new CommerceRateLimiter(5, 60_000); // 5 purchases/min
|
|
126
126
|
constructor(agent, provider) {
|
|
127
|
+
// Runtime validation: agent must implement required MnemoPayLite interface
|
|
128
|
+
if (!agent || typeof agent.charge !== "function" || typeof agent.settle !== "function" ||
|
|
129
|
+
typeof agent.refund !== "function" || typeof agent.agentId !== "string") {
|
|
130
|
+
throw new Error("CommerceEngine requires a valid MnemoPayLite agent with charge/settle/refund/agentId");
|
|
131
|
+
}
|
|
127
132
|
this.agent = agent;
|
|
128
133
|
this.provider = provider ?? new MockCommerceProvider();
|
|
129
134
|
}
|