@mnemopay/sdk 0.7.4 → 0.8.0

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.
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Identity System for MnemoPay
4
+ *
5
+ * Inspired by the elephant's olfactory signature system — each elephant has
6
+ * a unique chemical identity recognizable by kin after 12+ years of separation.
7
+ * Similarly, each MnemoPay agent gets a unique cryptographic identity that
8
+ * persists across sessions and enables trust verification.
9
+ *
10
+ * Components:
11
+ * - AgentIdentity: Cryptographic keypair + metadata for each agent
12
+ * - CapabilityToken: Scoped, time-limited permissions for agent actions
13
+ * - IdentityRegistry: Discovery and verification of agent identities
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.IdentityRegistry = void 0;
17
+ // ─── Crypto Utilities ───────────────────────────────────────────────────────
18
+ function generateKeyPair() {
19
+ // Use Web Crypto API for browser compatibility
20
+ // For production: use ECDSA P-256 or Ed25519
21
+ // For now: generate deterministic-length hex keys using crypto.randomUUID
22
+ const privateBytes = new Uint8Array(32);
23
+ crypto.getRandomValues(privateBytes);
24
+ const privateKey = Array.from(privateBytes).map(b => b.toString(16).padStart(2, "0")).join("");
25
+ // Derive "public key" — in production this would be ECDSA point derivation
26
+ const publicBytes = new Uint8Array(32);
27
+ crypto.getRandomValues(publicBytes);
28
+ const publicKey = Array.from(publicBytes).map(b => b.toString(16).padStart(2, "0")).join("");
29
+ return { publicKey, privateKey };
30
+ }
31
+ function signMessage(message, _privateKey) {
32
+ // Simplified HMAC-like signature for now
33
+ // Production: use actual ECDSA signing
34
+ const encoder = new TextEncoder();
35
+ const data = encoder.encode(message + _privateKey);
36
+ let hash = 0x811c9dc5;
37
+ for (const byte of data) {
38
+ hash ^= byte;
39
+ hash = Math.imul(hash, 0x01000193);
40
+ }
41
+ return (hash >>> 0).toString(16).padStart(8, "0") + Date.now().toString(16);
42
+ }
43
+ // ─── Identity Registry ──────────────────────────────────────────────────────
44
+ class IdentityRegistry {
45
+ identities = new Map();
46
+ tokens = new Map();
47
+ agentTokens = new Map(); // agentId → token IDs
48
+ /**
49
+ * Create a new agent identity with a cryptographic keypair.
50
+ */
51
+ createIdentity(agentId, ownerId, ownerEmail, options) {
52
+ if (this.identities.has(agentId)) {
53
+ throw new Error(`Agent identity already exists: ${agentId}`);
54
+ }
55
+ const { publicKey, privateKey } = generateKeyPair();
56
+ const now = new Date().toISOString();
57
+ const identity = {
58
+ agentId,
59
+ publicKey,
60
+ privateKey,
61
+ ownerId,
62
+ displayName: options?.displayName,
63
+ capabilities: options?.capabilities ?? [],
64
+ createdAt: now,
65
+ lastActiveAt: now,
66
+ verified: false,
67
+ kya: {
68
+ ownerType: options?.ownerType ?? "individual",
69
+ ownerEmail,
70
+ ownerCountry: options?.ownerCountry,
71
+ ownerKycStatus: "unverified",
72
+ financialAuthorized: false,
73
+ },
74
+ };
75
+ this.identities.set(agentId, identity);
76
+ return identity;
77
+ }
78
+ /**
79
+ * Get an agent's identity (public info only — strips private key).
80
+ */
81
+ getIdentity(agentId) {
82
+ const identity = this.identities.get(agentId);
83
+ if (!identity)
84
+ return null;
85
+ const { privateKey: _, ...publicIdentity } = identity;
86
+ return publicIdentity;
87
+ }
88
+ /**
89
+ * Verify an agent's KYC status (mark as verified after external check).
90
+ */
91
+ verifyKYC(agentId) {
92
+ const identity = this.identities.get(agentId);
93
+ if (!identity)
94
+ throw new Error(`Unknown agent: ${agentId}`);
95
+ identity.kya.ownerKycStatus = "verified";
96
+ identity.kya.kycVerifiedAt = new Date().toISOString();
97
+ identity.kya.financialAuthorized = true;
98
+ identity.verified = true;
99
+ }
100
+ /**
101
+ * Issue a scoped capability token to an agent.
102
+ */
103
+ issueToken(agentId, permissions, options) {
104
+ const identity = this.identities.get(agentId);
105
+ if (!identity)
106
+ throw new Error(`Unknown agent: ${agentId}`);
107
+ const now = new Date();
108
+ const expiresInMs = (options?.expiresInMinutes ?? 60) * 60_000;
109
+ const token = {
110
+ id: crypto.randomUUID(),
111
+ agentId,
112
+ permissions,
113
+ maxAmount: options?.maxAmount,
114
+ maxTotalSpend: options?.maxTotalSpend,
115
+ totalSpent: 0,
116
+ allowedCounterparties: options?.allowedCounterparties ?? [],
117
+ allowedCategories: options?.allowedCategories ?? [],
118
+ issuedAt: now.toISOString(),
119
+ expiresAt: new Date(now.getTime() + expiresInMs).toISOString(),
120
+ revoked: false,
121
+ issuedBy: options?.issuedBy ?? identity.ownerId,
122
+ };
123
+ this.tokens.set(token.id, token);
124
+ // Track tokens per agent
125
+ if (!this.agentTokens.has(agentId)) {
126
+ this.agentTokens.set(agentId, new Set());
127
+ }
128
+ this.agentTokens.get(agentId).add(token.id);
129
+ return token;
130
+ }
131
+ /**
132
+ * Validate a capability token for a specific action.
133
+ */
134
+ validateToken(tokenId, action, amount, counterpartyId) {
135
+ const token = this.tokens.get(tokenId);
136
+ if (!token) {
137
+ return { valid: false, agentId: "", reason: "Token not found" };
138
+ }
139
+ if (token.revoked) {
140
+ return { valid: false, agentId: token.agentId, reason: "Token has been revoked" };
141
+ }
142
+ // Check expiry
143
+ if (new Date() > new Date(token.expiresAt)) {
144
+ return { valid: false, agentId: token.agentId, reason: "Token has expired" };
145
+ }
146
+ // Check permission
147
+ if (!token.permissions.includes(action) && !token.permissions.includes("admin")) {
148
+ return { valid: false, agentId: token.agentId, reason: `Token does not grant '${action}' permission` };
149
+ }
150
+ // Check per-transaction amount limit
151
+ if (amount !== undefined && token.maxAmount !== undefined && amount > token.maxAmount) {
152
+ return {
153
+ valid: false,
154
+ agentId: token.agentId,
155
+ reason: `Amount $${amount} exceeds token limit $${token.maxAmount}`,
156
+ };
157
+ }
158
+ // Check total spend limit
159
+ if (amount !== undefined && token.maxTotalSpend !== undefined) {
160
+ if (token.totalSpent + amount > token.maxTotalSpend) {
161
+ return {
162
+ valid: false,
163
+ agentId: token.agentId,
164
+ reason: `Total spend would exceed limit ($${token.totalSpent + amount} > $${token.maxTotalSpend})`,
165
+ };
166
+ }
167
+ }
168
+ // Check counterparty whitelist
169
+ if (counterpartyId && token.allowedCounterparties.length > 0) {
170
+ if (!token.allowedCounterparties.includes(counterpartyId)) {
171
+ return {
172
+ valid: false,
173
+ agentId: token.agentId,
174
+ reason: `Counterparty '${counterpartyId}' not in allowed list`,
175
+ };
176
+ }
177
+ }
178
+ const identity = this.identities.get(token.agentId);
179
+ return {
180
+ valid: true,
181
+ agentId: token.agentId,
182
+ identity: identity ? { ...identity, privateKey: "[redacted]" } : undefined,
183
+ activeToken: token,
184
+ };
185
+ }
186
+ /**
187
+ * Record spending against a token's total spend limit.
188
+ */
189
+ recordSpend(tokenId, amount) {
190
+ const token = this.tokens.get(tokenId);
191
+ if (!token)
192
+ throw new Error(`Token not found: ${tokenId}`);
193
+ token.totalSpent += amount;
194
+ }
195
+ /**
196
+ * Revoke a capability token immediately.
197
+ */
198
+ revokeToken(tokenId) {
199
+ const token = this.tokens.get(tokenId);
200
+ if (!token)
201
+ throw new Error(`Token not found: ${tokenId}`);
202
+ token.revoked = true;
203
+ }
204
+ /**
205
+ * Revoke ALL tokens for an agent (kill switch).
206
+ */
207
+ revokeAllTokens(agentId) {
208
+ const tokenIds = this.agentTokens.get(agentId);
209
+ if (!tokenIds)
210
+ return 0;
211
+ let revoked = 0;
212
+ for (const id of tokenIds) {
213
+ const token = this.tokens.get(id);
214
+ if (token && !token.revoked) {
215
+ token.revoked = true;
216
+ revoked++;
217
+ }
218
+ }
219
+ return revoked;
220
+ }
221
+ /**
222
+ * List all active (non-revoked, non-expired) tokens for an agent.
223
+ */
224
+ listActiveTokens(agentId) {
225
+ const tokenIds = this.agentTokens.get(agentId);
226
+ if (!tokenIds)
227
+ return [];
228
+ const now = new Date();
229
+ return Array.from(tokenIds)
230
+ .map(id => this.tokens.get(id))
231
+ .filter(t => !t.revoked && new Date(t.expiresAt) > now);
232
+ }
233
+ /**
234
+ * Update last active timestamp (call on any agent activity).
235
+ */
236
+ touch(agentId) {
237
+ const identity = this.identities.get(agentId);
238
+ if (identity) {
239
+ identity.lastActiveAt = new Date().toISOString();
240
+ }
241
+ }
242
+ /**
243
+ * Sign a message with an agent's private key (for inter-agent verification).
244
+ */
245
+ sign(agentId, message) {
246
+ const identity = this.identities.get(agentId);
247
+ if (!identity)
248
+ throw new Error(`Unknown agent: ${agentId}`);
249
+ return signMessage(message, identity.privateKey);
250
+ }
251
+ // ── Serialization ────────────────────────────────────────────────────────
252
+ serialize() {
253
+ return {
254
+ identities: Array.from(this.identities.values()),
255
+ tokens: Array.from(this.tokens.values()),
256
+ };
257
+ }
258
+ static deserialize(data) {
259
+ const registry = new IdentityRegistry();
260
+ for (const id of data.identities) {
261
+ registry.identities.set(id.agentId, id);
262
+ }
263
+ for (const token of data.tokens) {
264
+ registry.tokens.set(token.id, token);
265
+ if (!registry.agentTokens.has(token.agentId)) {
266
+ registry.agentTokens.set(token.agentId, new Set());
267
+ }
268
+ registry.agentTokens.get(token.agentId).add(token.id);
269
+ }
270
+ return registry;
271
+ }
272
+ get size() {
273
+ return this.identities.size;
274
+ }
275
+ }
276
+ exports.IdentityRegistry = IdentityRegistry;
277
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,8 @@ import { type RecallStrategy, type EmbeddingProvider, type RecallEngineConfig }
13
13
  import { FraudGuard, type FraudConfig, type Dispute, type RequestContext } from "./fraud.js";
14
14
  import { type PaymentRail } from "./rails/index.js";
15
15
  import { type StorageAdapter } from "./storage/sqlite.js";
16
+ import { Ledger, type LedgerEntry, type LedgerSummary, type AccountBalance, type Currency } from "./ledger.js";
17
+ import { IdentityRegistry } from "./identity.js";
16
18
  type Listener = (...args: any[]) => void;
17
19
  declare class EventEmitter {
18
20
  private _events;
@@ -175,6 +177,10 @@ export declare class MnemoPayLite extends EventEmitter {
175
177
  readonly paymentRail: PaymentRail;
176
178
  /** When true, settle() requires a different agentId than the charge creator */
177
179
  readonly requireCounterparty: boolean;
180
+ /** Double-entry ledger — every financial operation is tracked with debit+credit pairs */
181
+ readonly ledger: Ledger;
182
+ /** Agent identity registry — cryptographic identity, KYA compliance, capability tokens */
183
+ readonly identity: IdentityRegistry;
178
184
  constructor(agentId: string, decay?: number, debug?: boolean, recallConfig?: Partial<RecallEngineConfig>, fraudConfig?: Partial<FraudConfig>, paymentRail?: PaymentRail, requireCounterparty?: boolean, storage?: StorageAdapter);
179
185
  enablePersistence(dir: string): void;
180
186
  private _loadFromDisk;
@@ -195,6 +201,20 @@ export declare class MnemoPayLite extends EventEmitter {
195
201
  dispute(txId: string, reason: string, evidence?: string[]): Promise<Dispute>;
196
202
  resolveDispute(disputeId: string, outcome: "refund" | "uphold"): Promise<Dispute>;
197
203
  balance(): Promise<BalanceInfo>;
204
+ /**
205
+ * Get the ledger balance for this agent (computed from double-entry records).
206
+ * This is the source of truth — should match this._wallet.
207
+ */
208
+ ledgerBalance(currency?: Currency): Promise<AccountBalance>;
209
+ /**
210
+ * Verify the entire ledger balances (total debits = total credits).
211
+ * If imbalance !== 0, there's a bug.
212
+ */
213
+ verifyLedger(): Promise<LedgerSummary>;
214
+ /**
215
+ * Get all ledger entries for a specific transaction.
216
+ */
217
+ ledgerEntries(txId: string): Promise<LedgerEntry[]>;
198
218
  profile(): Promise<AgentProfile>;
199
219
  logs(limit?: number): Promise<AuditEntry[]>;
200
220
  history(limit?: number): Promise<Transaction[]>;
@@ -271,12 +291,18 @@ export { autoScore, computeScore, reputationTier };
271
291
  export { RecallEngine, cosineSimilarity, localEmbed, l2Normalize } from "./recall/engine.js";
272
292
  export type { RecallStrategy, EmbeddingProvider, RecallEngineConfig, RecallResult } from "./recall/engine.js";
273
293
  export { FraudGuard, RateLimiter, DEFAULT_FRAUD_CONFIG, DEFAULT_RATE_LIMIT } from "./fraud.js";
274
- export type { FraudConfig, FraudSignal, RiskAssessment, Dispute, PlatformFeeRecord, RequestContext, RateLimitConfig } from "./fraud.js";
294
+ export type { FraudConfig, FeeTier, FraudSignal, RiskAssessment, Dispute, PlatformFeeRecord, RequestContext, RateLimitConfig, GeoProfile, GeoFraudConfig } from "./fraud.js";
275
295
  export { IsolationForest, TransactionGraph, BehaviorProfile } from "./fraud-ml.js";
276
296
  export type { CollusionSignal, DriftSignal, BehaviorSnapshot } from "./fraud-ml.js";
277
- export { MockRail, StripeRail, LightningRail } from "./rails/index.js";
278
- export type { PaymentRail, PaymentRailResult } from "./rails/index.js";
297
+ export { MockRail, StripeRail, LightningRail, PaystackRail, NIGERIAN_BANKS } from "./rails/index.js";
298
+ export type { PaymentRail, PaymentRailResult, PaystackConfig, PaystackCurrency, PaystackHoldResult, PaystackVerifyResult, PaystackTransferRecipient, PaystackTransferResult, PaystackWebhookEvent } from "./rails/index.js";
279
299
  export { SQLiteStorage, JSONFileStorage } from "./storage/sqlite.js";
280
300
  export type { StorageAdapter, PersistedState } from "./storage/sqlite.js";
301
+ export { Ledger } from "./ledger.js";
302
+ export type { LedgerEntry, LedgerSummary, AccountBalance, Currency, AccountType, TransferResult } from "./ledger.js";
303
+ export { IdentityRegistry } from "./identity.js";
304
+ export type { AgentIdentity, CapabilityToken, Permission, IdentityVerification, KYARecord } from "./identity.js";
305
+ export { MnemoPayNetwork } from "./network.js";
306
+ export type { NetworkAgent, DealResult, NetworkStats, NetworkConfig } from "./network.js";
281
307
  export { default as createSandboxServer } from "./mcp/server.js";
282
308
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,13 +14,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.createSandboxServer = exports.JSONFileStorage = exports.SQLiteStorage = exports.LightningRail = exports.StripeRail = exports.MockRail = exports.BehaviorProfile = exports.TransactionGraph = exports.IsolationForest = exports.DEFAULT_RATE_LIMIT = exports.DEFAULT_FRAUD_CONFIG = exports.RateLimiter = exports.FraudGuard = exports.l2Normalize = exports.localEmbed = exports.cosineSimilarity = exports.RecallEngine = exports.MnemoPay = exports.MnemoPayLite = void 0;
17
+ exports.createSandboxServer = exports.MnemoPayNetwork = exports.IdentityRegistry = exports.Ledger = exports.JSONFileStorage = exports.SQLiteStorage = exports.NIGERIAN_BANKS = exports.PaystackRail = exports.LightningRail = exports.StripeRail = exports.MockRail = exports.BehaviorProfile = exports.TransactionGraph = exports.IsolationForest = exports.DEFAULT_RATE_LIMIT = exports.DEFAULT_FRAUD_CONFIG = exports.RateLimiter = exports.FraudGuard = exports.l2Normalize = exports.localEmbed = exports.cosineSimilarity = exports.RecallEngine = exports.MnemoPay = exports.MnemoPayLite = void 0;
18
18
  exports.autoScore = autoScore;
19
19
  exports.computeScore = computeScore;
20
20
  exports.reputationTier = reputationTier;
21
21
  const engine_js_1 = require("./recall/engine.js");
22
22
  const fraud_js_1 = require("./fraud.js");
23
23
  const index_js_1 = require("./rails/index.js");
24
+ const ledger_js_1 = require("./ledger.js");
25
+ const identity_js_1 = require("./identity.js");
24
26
  class EventEmitter {
25
27
  _events = new Map();
26
28
  on(event, fn) {
@@ -115,6 +117,10 @@ class MnemoPayLite extends EventEmitter {
115
117
  paymentRail;
116
118
  /** When true, settle() requires a different agentId than the charge creator */
117
119
  requireCounterparty;
120
+ /** Double-entry ledger — every financial operation is tracked with debit+credit pairs */
121
+ ledger;
122
+ /** Agent identity registry — cryptographic identity, KYA compliance, capability tokens */
123
+ identity;
118
124
  constructor(agentId, decay = 0.05, debug = false, recallConfig, fraudConfig, paymentRail, requireCounterparty = false, storage) {
119
125
  super();
120
126
  this.agentId = agentId;
@@ -124,6 +130,8 @@ class MnemoPayLite extends EventEmitter {
124
130
  this.fraud = new fraud_js_1.FraudGuard(fraudConfig);
125
131
  this.paymentRail = paymentRail ?? new index_js_1.MockRail();
126
132
  this.requireCounterparty = requireCounterparty;
133
+ this.ledger = new ledger_js_1.Ledger();
134
+ this.identity = new identity_js_1.IdentityRegistry();
127
135
  // Use provided storage adapter, or auto-detect persistence
128
136
  if (storage) {
129
137
  this.storageAdapter = storage;
@@ -202,6 +210,21 @@ class MnemoPayLite extends EventEmitter {
202
210
  if (raw.auditLog) {
203
211
  this.auditLog = raw.auditLog.map((e) => ({ ...e, createdAt: new Date(e.createdAt) }));
204
212
  }
213
+ // Restore ledger entries
214
+ if (raw.ledger && Array.isArray(raw.ledger)) {
215
+ this.ledger = new ledger_js_1.Ledger(raw.ledger);
216
+ this.log(`Restored ${raw.ledger.length} ledger entries`);
217
+ }
218
+ // Restore identity registry
219
+ if (raw.identity) {
220
+ try {
221
+ this.identity = identity_js_1.IdentityRegistry.deserialize(raw.identity);
222
+ this.log(`Restored ${raw.identity.identities?.length ?? 0} identities`);
223
+ }
224
+ catch (e) {
225
+ this.log(`Failed to restore identity registry: ${e}`);
226
+ }
227
+ }
205
228
  // Restore fraud guard state
206
229
  if (raw.fraudGuard) {
207
230
  try {
@@ -325,6 +348,8 @@ class MnemoPayLite extends EventEmitter {
325
348
  transactions: Array.from(this.transactions.values()),
326
349
  auditLog: this.auditLog.slice(-500), // Keep last 500 entries
327
350
  fraudGuard: this.fraud.serialize(),
351
+ ledger: this.ledger.serialize(),
352
+ identity: this.identity.serialize(),
328
353
  savedAt: new Date().toISOString(),
329
354
  });
330
355
  // Atomic write
@@ -352,6 +377,10 @@ class MnemoPayLite extends EventEmitter {
352
377
  }
353
378
  // ── Memory Methods ──────────────────────────────────────────────────────
354
379
  async remember(content, opts) {
380
+ if (!content || typeof content !== "string")
381
+ throw new Error("Memory content is required");
382
+ if (content.length > 100_000)
383
+ throw new Error("Memory content exceeds 100KB limit");
355
384
  const importance = opts?.importance ?? autoScore(content);
356
385
  const now = new Date();
357
386
  const mem = {
@@ -450,8 +479,12 @@ class MnemoPayLite extends EventEmitter {
450
479
  }
451
480
  // ── Payment Methods ─────────────────────────────────────────────────────
452
481
  async charge(amount, reason, ctx) {
453
- if (amount <= 0)
454
- throw new Error("Amount must be positive");
482
+ if (!Number.isFinite(amount) || amount <= 0)
483
+ throw new Error("Amount must be a positive finite number");
484
+ // Round to 2 decimals to prevent floating point dust
485
+ amount = Math.round(amount * 100) / 100;
486
+ if (!reason || typeof reason !== "string")
487
+ throw new Error("Reason is required");
455
488
  const maxCharge = 500 * this._reputation;
456
489
  if (amount > maxCharge) {
457
490
  throw new Error(`Amount $${amount.toFixed(2)} exceeds reputation ceiling $${maxCharge.toFixed(2)} ` +
@@ -486,6 +519,8 @@ class MnemoPayLite extends EventEmitter {
486
519
  externalStatus: hold.status,
487
520
  };
488
521
  this.transactions.set(tx.id, tx);
522
+ // Ledger: move funds from agent available → escrow
523
+ this.ledger.recordCharge(this.agentId, amount, tx.id);
489
524
  this.audit("payment:pending", { id: tx.id, amount, reason, riskScore: risk.score, rail: this.paymentRail.name, externalId: hold.externalId });
490
525
  this._saveToDisk();
491
526
  this.emit("payment:pending", { id: tx.id, amount, reason });
@@ -493,6 +528,8 @@ class MnemoPayLite extends EventEmitter {
493
528
  return { ...tx };
494
529
  }
495
530
  async settle(txId, counterpartyId) {
531
+ if (!txId || typeof txId !== "string")
532
+ throw new Error("Transaction ID is required");
496
533
  const tx = this.transactions.get(txId);
497
534
  if (!tx)
498
535
  throw new Error(`Transaction ${txId} not found`);
@@ -521,6 +558,8 @@ class MnemoPayLite extends EventEmitter {
521
558
  tx.status = "completed";
522
559
  tx.completedAt = new Date();
523
560
  this._wallet += fee.netAmount;
561
+ // Ledger: escrow → float → revenue (fee) + counterparty/agent (net)
562
+ this.ledger.recordSettlement(this.agentId, tx.id, tx.amount, fee.feeAmount, fee.netAmount, tx.counterpartyId);
524
563
  // 3. Boost reputation
525
564
  this._reputation = Math.min(this._reputation + 0.01, 1.0);
526
565
  // 4. Reinforce recently-accessed memories (feedback loop)
@@ -532,9 +571,12 @@ class MnemoPayLite extends EventEmitter {
532
571
  reinforced++;
533
572
  }
534
573
  }
574
+ // Touch identity (update last active)
575
+ this.identity.touch(this.agentId);
535
576
  this.audit("payment:completed", {
536
577
  id: tx.id, grossAmount: tx.amount, platformFee: fee.feeAmount,
537
- netAmount: fee.netAmount, feeRate: fee.feeRate, reinforcedMemories: reinforced,
578
+ netAmount: fee.netAmount, feeRate: fee.feeRate,
579
+ reinforcedMemories: reinforced,
538
580
  });
539
581
  this._saveToDisk();
540
582
  this.emit("payment:completed", { id: tx.id, amount: fee.netAmount, fee: fee.feeAmount });
@@ -558,6 +600,12 @@ class MnemoPayLite extends EventEmitter {
558
600
  const refundAmount = tx.netAmount ?? tx.amount;
559
601
  this._wallet = Math.max(this._wallet - refundAmount, 0);
560
602
  this._reputation = Math.max(this._reputation - 0.05, 0);
603
+ // Ledger: reverse the net settlement
604
+ this.ledger.recordRefund(this.agentId, tx.id, refundAmount, tx.counterpartyId);
605
+ }
606
+ else if (tx.status === "pending") {
607
+ // Ledger: release escrow back to agent
608
+ this.ledger.recordCancellation(this.agentId, tx.amount, tx.id);
561
609
  }
562
610
  tx.status = "refunded";
563
611
  this.audit("payment:refunded", { id: tx.id, amount: tx.amount, netRefunded: tx.netAmount ?? tx.amount });
@@ -607,7 +655,31 @@ class MnemoPayLite extends EventEmitter {
607
655
  return d;
608
656
  }
609
657
  async balance() {
610
- return { wallet: this._wallet, reputation: this._reputation };
658
+ // Round to 2 decimals to prevent floating point dust accumulation
659
+ return {
660
+ wallet: Math.round(this._wallet * 100) / 100,
661
+ reputation: this._reputation,
662
+ };
663
+ }
664
+ /**
665
+ * Get the ledger balance for this agent (computed from double-entry records).
666
+ * This is the source of truth — should match this._wallet.
667
+ */
668
+ async ledgerBalance(currency = "USD") {
669
+ return this.ledger.getAccountBalance(`agent:${this.agentId}`, currency);
670
+ }
671
+ /**
672
+ * Verify the entire ledger balances (total debits = total credits).
673
+ * If imbalance !== 0, there's a bug.
674
+ */
675
+ async verifyLedger() {
676
+ return this.ledger.verify();
677
+ }
678
+ /**
679
+ * Get all ledger entries for a specific transaction.
680
+ */
681
+ async ledgerEntries(txId) {
682
+ return this.ledger.getEntriesForTransaction(txId);
611
683
  }
612
684
  // ── Observability ───────────────────────────────────────────────────────
613
685
  async profile() {
@@ -663,7 +735,7 @@ class MnemoPayLite extends EventEmitter {
663
735
  name: `MnemoPay Agent (${this.agentId})`,
664
736
  description: "AI agent with persistent cognitive memory and micropayment capabilities via MnemoPay protocol.",
665
737
  url,
666
- version: "0.6.0",
738
+ version: "0.8.0",
667
739
  capabilities: {
668
740
  memory: true,
669
741
  payments: true,
@@ -1002,7 +1074,7 @@ class MnemoPay extends EventEmitter {
1002
1074
  name: `MnemoPay Agent (${this.agentId})`,
1003
1075
  description: "AI agent with persistent cognitive memory and micropayment capabilities via MnemoPay protocol.",
1004
1076
  url,
1005
- version: "0.6.0",
1077
+ version: "0.8.0",
1006
1078
  capabilities: {
1007
1079
  memory: true,
1008
1080
  payments: true,
@@ -1104,9 +1176,17 @@ var index_js_2 = require("./rails/index.js");
1104
1176
  Object.defineProperty(exports, "MockRail", { enumerable: true, get: function () { return index_js_2.MockRail; } });
1105
1177
  Object.defineProperty(exports, "StripeRail", { enumerable: true, get: function () { return index_js_2.StripeRail; } });
1106
1178
  Object.defineProperty(exports, "LightningRail", { enumerable: true, get: function () { return index_js_2.LightningRail; } });
1179
+ Object.defineProperty(exports, "PaystackRail", { enumerable: true, get: function () { return index_js_2.PaystackRail; } });
1180
+ Object.defineProperty(exports, "NIGERIAN_BANKS", { enumerable: true, get: function () { return index_js_2.NIGERIAN_BANKS; } });
1107
1181
  var sqlite_js_1 = require("./storage/sqlite.js");
1108
1182
  Object.defineProperty(exports, "SQLiteStorage", { enumerable: true, get: function () { return sqlite_js_1.SQLiteStorage; } });
1109
1183
  Object.defineProperty(exports, "JSONFileStorage", { enumerable: true, get: function () { return sqlite_js_1.JSONFileStorage; } });
1184
+ var ledger_js_2 = require("./ledger.js");
1185
+ Object.defineProperty(exports, "Ledger", { enumerable: true, get: function () { return ledger_js_2.Ledger; } });
1186
+ var identity_js_2 = require("./identity.js");
1187
+ Object.defineProperty(exports, "IdentityRegistry", { enumerable: true, get: function () { return identity_js_2.IdentityRegistry; } });
1188
+ var network_js_1 = require("./network.js");
1189
+ Object.defineProperty(exports, "MnemoPayNetwork", { enumerable: true, get: function () { return network_js_1.MnemoPayNetwork; } });
1110
1190
  var server_js_1 = require("./mcp/server.js");
1111
1191
  Object.defineProperty(exports, "createSandboxServer", { enumerable: true, get: function () { return __importDefault(server_js_1).default; } });
1112
1192
  //# sourceMappingURL=index.js.map