@mnemopay/sdk 1.2.0 → 1.2.2
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/README.md +50 -6
- package/dist/fico.d.ts +29 -17
- package/dist/fico.d.ts.map +1 -1
- package/dist/fico.js +18 -17
- package/dist/fico.js.map +1 -1
- package/dist/fraud.d.ts +2 -2
- package/dist/fraud.d.ts.map +1 -1
- package/dist/fraud.js +97 -37
- package/dist/fraud.js.map +1 -1
- package/dist/index.d.ts +25 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +176 -39
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +35 -3
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +133 -57
- package/dist/ledger.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +109 -3
- package/dist/mcp/server.js.map +1 -1
- package/package.json +3 -3
package/dist/ledger.js
CHANGED
|
@@ -40,27 +40,65 @@ class Ledger {
|
|
|
40
40
|
entries = [];
|
|
41
41
|
seq = 0;
|
|
42
42
|
lastEntryHash;
|
|
43
|
+
/** Running balance per "account:currency" key — O(1) lookups, survives compaction */
|
|
44
|
+
_accountBalances = new Map();
|
|
45
|
+
/** Running totals for fast verify() — maintained across compaction */
|
|
46
|
+
_totalDebits = 0;
|
|
47
|
+
_totalCredits = 0;
|
|
48
|
+
/** Lifetime entry count (includes compacted-away entries) */
|
|
49
|
+
_totalEntryCount = 0;
|
|
50
|
+
/**
|
|
51
|
+
* High-throughput mode: skip LedgerEntry object creation and hash computation.
|
|
52
|
+
* Enabled automatically when compact() is called with maxEntries <= 100.
|
|
53
|
+
* Running totals (_accountBalances, _totalDebits, _totalCredits) remain correct.
|
|
54
|
+
*/
|
|
55
|
+
_skipEntries = false;
|
|
43
56
|
constructor(existingEntries) {
|
|
44
|
-
if (existingEntries)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
? Math.max(...this.entries.map(e => e.seq)) + 1
|
|
59
|
-
: 0;
|
|
60
|
-
// Compute lastEntryHash from the final entry for chain continuity
|
|
61
|
-
if (this.entries.length > 0) {
|
|
62
|
-
this.lastEntryHash = hashEntry(this.entries[this.entries.length - 1]);
|
|
57
|
+
if (!existingEntries || existingEntries.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
// Check for a summary entry (last element) from a previous serialize()
|
|
60
|
+
const last = existingEntries[existingEntries.length - 1];
|
|
61
|
+
const hasSummary = last?._isSummary === true;
|
|
62
|
+
if (hasSummary) {
|
|
63
|
+
// Restore running totals from summary instead of re-scanning all entries
|
|
64
|
+
this._totalDebits = last.totalDebits ?? 0;
|
|
65
|
+
this._totalCredits = last.totalCredits ?? 0;
|
|
66
|
+
this._totalEntryCount = last.totalEntryCount ?? 0;
|
|
67
|
+
if (last.accountBalances) {
|
|
68
|
+
for (const [k, v] of Object.entries(last.accountBalances)) {
|
|
69
|
+
this._accountBalances.set(k, v);
|
|
70
|
+
}
|
|
63
71
|
}
|
|
72
|
+
existingEntries = existingEntries.slice(0, -1);
|
|
73
|
+
}
|
|
74
|
+
const validated = existingEntries.map(e => {
|
|
75
|
+
const debit = Number(e.debit);
|
|
76
|
+
const credit = Number(e.credit);
|
|
77
|
+
if (!Number.isFinite(debit) || debit < 0)
|
|
78
|
+
throw new Error(`Ledger entry ${e.id}: debit must be a non-negative finite number`);
|
|
79
|
+
if (!Number.isFinite(credit) || credit < 0)
|
|
80
|
+
throw new Error(`Ledger entry ${e.id}: credit must be a non-negative finite number`);
|
|
81
|
+
if (!Number.isFinite(e.seq) || e.seq < 0)
|
|
82
|
+
throw new Error(`Ledger entry ${e.id}: seq must be a non-negative number`);
|
|
83
|
+
return { ...e, debit, credit };
|
|
84
|
+
});
|
|
85
|
+
if (!hasSummary) {
|
|
86
|
+
// No summary: rebuild running totals from all provided entries
|
|
87
|
+
for (const e of validated) {
|
|
88
|
+
this._totalDebits += e.debit;
|
|
89
|
+
this._totalCredits += e.credit;
|
|
90
|
+
this._totalEntryCount += (e.debit > 0 || e.credit > 0) ? 1 : 0;
|
|
91
|
+
const key = `${e.account}:${e.currency}`;
|
|
92
|
+
this._accountBalances.set(key, (this._accountBalances.get(key) ?? 0) + e.credit - e.debit);
|
|
93
|
+
}
|
|
94
|
+
this._totalEntryCount = validated.length;
|
|
95
|
+
}
|
|
96
|
+
this.entries = validated;
|
|
97
|
+
this.seq = validated.length > 0
|
|
98
|
+
? Math.max(...validated.map(e => e.seq)) + 1
|
|
99
|
+
: 0;
|
|
100
|
+
if (this.entries.length > 0) {
|
|
101
|
+
this.lastEntryHash = hashEntry(this.entries[this.entries.length - 1]);
|
|
64
102
|
}
|
|
65
103
|
}
|
|
66
104
|
// ── Core: Double-Entry Transfer ──────────────────────────────────────────
|
|
@@ -75,6 +113,20 @@ class Ledger {
|
|
|
75
113
|
throw new Error("Both fromAccount and toAccount are required");
|
|
76
114
|
if (fromAccount === toAccount)
|
|
77
115
|
throw new Error("Cannot transfer to the same account");
|
|
116
|
+
// Update running totals and account balances (O(1), survives compaction)
|
|
117
|
+
this._totalDebits += amount;
|
|
118
|
+
this._totalCredits += amount;
|
|
119
|
+
this._totalEntryCount += 2;
|
|
120
|
+
this.seq += 2;
|
|
121
|
+
const debitKey = `${fromAccount}:${currency}`;
|
|
122
|
+
const creditKey = `${toAccount}:${currency}`;
|
|
123
|
+
this._accountBalances.set(debitKey, (this._accountBalances.get(debitKey) ?? 0) - amount);
|
|
124
|
+
this._accountBalances.set(creditKey, (this._accountBalances.get(creditKey) ?? 0) + amount);
|
|
125
|
+
// High-throughput mode: skip LedgerEntry object + hash creation entirely.
|
|
126
|
+
// Running totals above are sufficient for balance() and verifyLedger().
|
|
127
|
+
if (this._skipEntries) {
|
|
128
|
+
return { entries: [], txRef: "" };
|
|
129
|
+
}
|
|
78
130
|
const txRef = crypto.randomUUID();
|
|
79
131
|
const now = new Date().toISOString();
|
|
80
132
|
const debitEntry = {
|
|
@@ -89,7 +141,7 @@ class Ledger {
|
|
|
89
141
|
relatedTxId,
|
|
90
142
|
counterAccount: toAccount,
|
|
91
143
|
createdAt: now,
|
|
92
|
-
seq: this.seq
|
|
144
|
+
seq: this.seq - 2,
|
|
93
145
|
prevEntryHash: this.lastEntryHash,
|
|
94
146
|
};
|
|
95
147
|
const debitHash = hashEntry(debitEntry);
|
|
@@ -105,13 +157,30 @@ class Ledger {
|
|
|
105
157
|
relatedTxId,
|
|
106
158
|
counterAccount: fromAccount,
|
|
107
159
|
createdAt: now,
|
|
108
|
-
seq: this.seq
|
|
160
|
+
seq: this.seq - 1,
|
|
109
161
|
prevEntryHash: debitHash,
|
|
110
162
|
};
|
|
111
163
|
this.entries.push(debitEntry, creditEntry);
|
|
112
164
|
this.lastEntryHash = hashEntry(creditEntry);
|
|
113
165
|
return { entries: [debitEntry, creditEntry], txRef };
|
|
114
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Compact the ledger by dropping oldest entries while preserving running totals.
|
|
169
|
+
* Call periodically from long-lived agents to bound memory usage.
|
|
170
|
+
* Running totals (getBalance, verify) remain correct after compaction.
|
|
171
|
+
*/
|
|
172
|
+
compact(maxEntries) {
|
|
173
|
+
// When compacting aggressively (≤100 entries), switch to high-throughput mode:
|
|
174
|
+
// skip LedgerEntry object + hash creation on future transfers (running totals only).
|
|
175
|
+
if (maxEntries <= 100) {
|
|
176
|
+
this._skipEntries = true;
|
|
177
|
+
this.entries.length = 0; // clear all existing entries immediately
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (this.entries.length <= maxEntries)
|
|
181
|
+
return;
|
|
182
|
+
this.entries.splice(0, this.entries.length - maxEntries);
|
|
183
|
+
}
|
|
115
184
|
// ── Payment Flow Methods ─────────────────────────────────────────────────
|
|
116
185
|
/**
|
|
117
186
|
* CHARGE: Move funds from agent's available balance into escrow.
|
|
@@ -173,13 +242,8 @@ class Ledger {
|
|
|
173
242
|
* Balance = SUM(credits) - SUM(debits)
|
|
174
243
|
*/
|
|
175
244
|
getBalance(account, currency = "USD") {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (entry.account === account && entry.currency === currency) {
|
|
179
|
-
balance += entry.credit - entry.debit;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// Round to appropriate precision: 2 decimals for fiat, 8 for crypto
|
|
245
|
+
const key = `${account}:${currency}`;
|
|
246
|
+
const balance = this._accountBalances.get(key) ?? 0;
|
|
183
247
|
const precision = (currency === "BTC") ? 1e8 : 100;
|
|
184
248
|
return Math.round(balance * precision) / precision;
|
|
185
249
|
}
|
|
@@ -187,6 +251,9 @@ class Ledger {
|
|
|
187
251
|
* Get detailed balance info for an account.
|
|
188
252
|
*/
|
|
189
253
|
getAccountBalance(account, currency = "USD") {
|
|
254
|
+
const key = `${account}:${currency}`;
|
|
255
|
+
const balance = this._accountBalances.get(key) ?? 0;
|
|
256
|
+
// For detailed debit/credit breakdown, scan remaining entries only
|
|
190
257
|
let totalCredits = 0;
|
|
191
258
|
let totalDebits = 0;
|
|
192
259
|
let entryCount = 0;
|
|
@@ -201,7 +268,7 @@ class Ledger {
|
|
|
201
268
|
account,
|
|
202
269
|
accountType: this.parseAccountType(account),
|
|
203
270
|
currency,
|
|
204
|
-
balance: Math.round(
|
|
271
|
+
balance: Math.round(balance * 100) / 100,
|
|
205
272
|
totalCredits: Math.round(totalCredits * 100) / 100,
|
|
206
273
|
totalDebits: Math.round(totalDebits * 100) / 100,
|
|
207
274
|
entryCount,
|
|
@@ -226,38 +293,33 @@ class Ledger {
|
|
|
226
293
|
* Verify the entire ledger balances (total debits = total credits).
|
|
227
294
|
*/
|
|
228
295
|
verify() {
|
|
296
|
+
// Use running totals (O(1)) — maintained across compaction
|
|
297
|
+
const totalDebits = Math.round(this._totalDebits * 100) / 100;
|
|
298
|
+
const totalCredits = Math.round(this._totalCredits * 100) / 100;
|
|
299
|
+
const imbalance = Math.round((this._totalDebits - this._totalCredits) * 100) / 100;
|
|
300
|
+
// Build account summary from running balance map
|
|
229
301
|
const accountMap = new Map();
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
totalDebits: 0,
|
|
244
|
-
entryCount: 0,
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
const acct = accountMap.get(key);
|
|
248
|
-
acct.totalCredits += entry.credit;
|
|
249
|
-
acct.totalDebits += entry.debit;
|
|
250
|
-
acct.balance = Math.round((acct.totalCredits - acct.totalDebits) * 100) / 100;
|
|
251
|
-
acct.entryCount++;
|
|
302
|
+
for (const [key, balance] of this._accountBalances) {
|
|
303
|
+
const colonIdx = key.lastIndexOf(':');
|
|
304
|
+
const account = key.slice(0, colonIdx);
|
|
305
|
+
const currency = key.slice(colonIdx + 1);
|
|
306
|
+
accountMap.set(key, {
|
|
307
|
+
account,
|
|
308
|
+
accountType: this.parseAccountType(account),
|
|
309
|
+
currency,
|
|
310
|
+
balance: Math.round(balance * 100) / 100,
|
|
311
|
+
totalCredits: 0, // per-account credits not tracked post-compaction
|
|
312
|
+
totalDebits: 0,
|
|
313
|
+
entryCount: 0,
|
|
314
|
+
});
|
|
252
315
|
}
|
|
253
|
-
const imbalance = Math.round((totalDebits - totalCredits) * 100) / 100;
|
|
254
316
|
const chainResult = this.verifyChain();
|
|
255
317
|
return {
|
|
256
|
-
totalDebits
|
|
257
|
-
totalCredits
|
|
318
|
+
totalDebits,
|
|
319
|
+
totalCredits,
|
|
258
320
|
imbalance,
|
|
259
321
|
balanced: imbalance === 0,
|
|
260
|
-
entryCount: this.
|
|
322
|
+
entryCount: this._totalEntryCount, // lifetime count (survives compaction)
|
|
261
323
|
accounts: Array.from(accountMap.values()),
|
|
262
324
|
chainValid: chainResult.valid,
|
|
263
325
|
chainIntegrity: chainResult.chainIntegrity,
|
|
@@ -301,15 +363,29 @@ class Ledger {
|
|
|
301
363
|
}
|
|
302
364
|
// ── Serialization ────────────────────────────────────────────────────────
|
|
303
365
|
/**
|
|
304
|
-
* Export
|
|
366
|
+
* Export entries + a summary entry for persistence.
|
|
367
|
+
* The summary entry allows running totals (including compacted history)
|
|
368
|
+
* to survive a serialize/deserialize roundtrip.
|
|
305
369
|
*/
|
|
306
370
|
serialize() {
|
|
307
|
-
|
|
371
|
+
const summary = {
|
|
372
|
+
_isSummary: true,
|
|
373
|
+
totalDebits: this._totalDebits,
|
|
374
|
+
totalCredits: this._totalCredits,
|
|
375
|
+
totalEntryCount: this._totalEntryCount,
|
|
376
|
+
accountBalances: Object.fromEntries(this._accountBalances),
|
|
377
|
+
};
|
|
378
|
+
return [...this.entries, summary];
|
|
308
379
|
}
|
|
309
380
|
/**
|
|
310
381
|
* Get entry count.
|
|
311
382
|
*/
|
|
383
|
+
/** Lifetime entry count (includes compacted-away entries) */
|
|
312
384
|
get size() {
|
|
385
|
+
return this._totalEntryCount;
|
|
386
|
+
}
|
|
387
|
+
/** Current in-memory entry count (after any compaction) */
|
|
388
|
+
get visibleSize() {
|
|
313
389
|
return this.entries.length;
|
|
314
390
|
}
|
|
315
391
|
// ── Internal ─────────────────────────────────────────────────────────────
|
package/dist/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAuFH,8BAaC;AAnBD,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAkB;IAC1C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,QAAQ,CAA4B,CAAC;IACpE,MAAM,OAAO,GAAG;QACd,KAAK,CAAC,EAAE;QACR,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,OAAO;QACb,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB,KAAK,CAAC,QAAQ;QACd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACjB,KAAK,CAAC,aAAa,IAAI,EAAE;KAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAE/E,MAAa,MAAM;IACT,OAAO,GAAkB,EAAE,CAAC;IAC5B,GAAG,GAAG,CAAC,CAAC;IACR,aAAa,CAAqB;IAE1C,YAAY,eAA+B;QACzC,IAAI,eAAe,EAAE,CAAC;YACpB,uDAAuD;YACvD,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,8CAA8C,CAAC,CAAC;gBAC9H,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC;gBACjI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBACrH,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;gBAC/C,CAAC,CAAC,CAAC,CAAC;YACN,kEAAkE;YAClE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAE5E;;;OAGG;IACH,QAAQ,CACN,WAAmB,EACnB,SAAiB,EACjB,MAAc,EACd,QAAkB,EAClB,WAAmB,EACnB,WAAoB;QAEpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxH,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC/F,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAEtF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,UAAU,GAAgB;YAC9B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,KAAK;YACL,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;YAC/C,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,CAAC;YACT,QAAQ;YACR,WAAW;YACX,WAAW;YACX,cAAc,EAAE,SAAS;YACzB,SAAS,EAAE,GAAG;YACd,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QAExC,MAAM,WAAW,GAAgB;YAC/B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,KAAK;YACL,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC7C,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,MAAM;YACd,QAAQ;YACR,WAAW;YACX,WAAW;YACX,cAAc,EAAE,WAAW;YAC3B,SAAS,EAAE,GAAG;YACd,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACf,aAAa,EAAE,SAAS;SACzB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,4EAA4E;IAE5E;;;OAGG;IACH,YAAY,CAAC,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,WAAqB,KAAK;QACpF,OAAO,IAAI,CAAC,QAAQ,CAClB,SAAS,OAAO,EAAE,EAClB,UAAU,OAAO,EAAE,EACnB,MAAM,EACN,QAAQ,EACR,yBAAyB,EACzB,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,gBAAgB,CACd,OAAe,EACf,IAAY,EACZ,WAAmB,EACnB,SAAiB,EACjB,SAAiB,EACjB,cAAuB,EACvB,WAAqB,KAAK;QAE1B,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,iDAAiD;QACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,UAAU,OAAO,EAAE,EACnB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,gCAAgC,EAChC,IAAI,CACL,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,iBAAiB,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EACjE,IAAI,CACL,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,MAAM,WAAW,GAAG,cAAc;YAChC,CAAC,CAAC,gBAAgB,cAAc,EAAE;YAClC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,IAAI,CACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,YAAY,CACV,OAAe,EACf,IAAY,EACZ,SAAiB,EACjB,cAAuB,EACvB,WAAqB,KAAK;QAE1B,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,IAAI,cAAc,EAAE,CAAC;YACnB,6CAA6C;YAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,gBAAgB,cAAc,EAAE,EAChC,SAAS,OAAO,EAAE,EAClB,SAAS,EACT,QAAQ,EACR,qCAAqC,EACrC,IAAI,CACL,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,SAAS,OAAO,EAAE,EAClB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,qCAAqC,EACrC,IAAI,CACL,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,WAAqB,KAAK;QAC1F,OAAO,IAAI,CAAC,QAAQ,CAClB,UAAU,OAAO,EAAE,EACnB,SAAS,OAAO,EAAE,EAClB,MAAM,EACN,QAAQ,EACR,6BAA6B,EAC7B,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,WAAqB,KAAK;QACvF,OAAO,IAAI,CAAC,QAAQ,CAClB,gBAAgB,EAChB,SAAS,OAAO,EAAE,EAClB,MAAM,EACN,QAAQ,EACR,uBAAuB,MAAM,EAAE,CAChC,CAAC;IACJ,CAAC;IAED,4EAA4E;IAE5E;;;OAGG;IACH,UAAU,CAAC,OAAe,EAAE,WAAqB,KAAK;QACpD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC7D,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YACxC,CAAC;QACH,CAAC;QACD,oEAAoE;QACpE,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAe,EAAE,WAAqB,KAAK;QAC3D,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC7D,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC7B,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC;gBAC3B,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC3C,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;YAC7D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG;YAClD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG;YAChD,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,IAAY;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAe,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;aAC7B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;QAErD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC;YAC3B,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;YAE7B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;oBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,CAAC;oBACV,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,CAAC;oBACd,UAAU,EAAE,CAAC;iBACd,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAClC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEvC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG;YAChD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG;YAClD,SAAS;YACT,QAAQ,EAAE,SAAS,KAAK,CAAC;YACzB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC/B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzC,UAAU,EAAE,WAAW,CAAC,KAAK;YAC7B,cAAc,EAAE,WAAW,CAAC,cAAc;SAC3C,CAAC;IACJ,CAAC;IAED,4EAA4E;IAE5E;;;OAGG;IACH,WAAW;QACT,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,8CAA8C;YAC9C,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;gBAAE,SAAS;YAEhD,YAAY,EAAE,CAAC;YAEf,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,2EAA2E;gBAC3E,UAAU,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;gBACzC,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,YAAY,CAAC;QAE5E,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;YAC/B,WAAW;YACX,cAAc;SACf,CAAC;IACJ,CAAC;IAED,4EAA4E;IAE5E;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,4EAA4E;IAEpE,gBAAgB,CAAC,OAAe;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;YAC7B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,UAAU;gBACb,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3D,KAAK,cAAc,CAAC,CAAC,OAAO,cAAc,CAAC;YAC3C,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAjZD,wBAiZC"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAuzCnE,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmfjD;AAID,MAAM,CAAC,OAAO,UAAU,mBAAmB,IAAI,MAAM,CAgBpD"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -476,6 +476,57 @@ const TOOLS = [
|
|
|
476
476
|
required: ["paymentMethodId"],
|
|
477
477
|
},
|
|
478
478
|
},
|
|
479
|
+
// ── Payouts (Paystack) ─────────────────────────────────────────────────────
|
|
480
|
+
{
|
|
481
|
+
name: "payout_create",
|
|
482
|
+
description: "Initiate a bank transfer (payout) via Paystack. First creates a transfer recipient, " +
|
|
483
|
+
"then initiates the transfer. Only works with Paystack rail.",
|
|
484
|
+
inputSchema: {
|
|
485
|
+
type: "object",
|
|
486
|
+
properties: {
|
|
487
|
+
accountName: { type: "string", description: "Recipient's name" },
|
|
488
|
+
accountNumber: { type: "string", description: "Bank account number" },
|
|
489
|
+
bankCode: { type: "string", description: "Bank code (e.g., '058' for GTBank)" },
|
|
490
|
+
amount: { type: "number", description: "Amount in NGN" },
|
|
491
|
+
reason: { type: "string", description: "Reason for the transfer" },
|
|
492
|
+
},
|
|
493
|
+
required: ["accountName", "accountNumber", "bankCode", "amount", "reason"],
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
name: "payout_status",
|
|
498
|
+
description: "Check the status of a Paystack transfer/payout by transfer code.",
|
|
499
|
+
inputSchema: {
|
|
500
|
+
type: "object",
|
|
501
|
+
properties: {
|
|
502
|
+
transferCode: { type: "string", description: "Transfer code from payout_create (e.g., TRF_...)" },
|
|
503
|
+
},
|
|
504
|
+
required: ["transferCode"],
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
// ── Webhooks ──────────────────────────────────────────────────────────────
|
|
508
|
+
{
|
|
509
|
+
name: "webhook_register",
|
|
510
|
+
description: "Register a webhook URL to receive payment events (charge.success, transfer.success, etc.). " +
|
|
511
|
+
"Events are stored in-memory and dispatched when matching events occur.",
|
|
512
|
+
inputSchema: {
|
|
513
|
+
type: "object",
|
|
514
|
+
properties: {
|
|
515
|
+
url: { type: "string", description: "Callback URL to receive events" },
|
|
516
|
+
events: {
|
|
517
|
+
type: "array",
|
|
518
|
+
items: { type: "string" },
|
|
519
|
+
description: "Event types to subscribe to: charge.success, charge.failed, settle, refund, transfer.success, transfer.failed",
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
required: ["url", "events"],
|
|
523
|
+
},
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: "webhook_list",
|
|
527
|
+
description: "List all registered webhook subscriptions.",
|
|
528
|
+
inputSchema: { type: "object", properties: {} },
|
|
529
|
+
},
|
|
479
530
|
// ── Receipts & Export ─────────────────────────────────────────────────────
|
|
480
531
|
{
|
|
481
532
|
name: "receipt_get",
|
|
@@ -938,7 +989,7 @@ async function executeTool(agent, name, args) {
|
|
|
938
989
|
}
|
|
939
990
|
// ── Agent FICO ─────────────────────────────────────────────────────────
|
|
940
991
|
case "agent_fico_score": {
|
|
941
|
-
const fico = new index_js_2.
|
|
992
|
+
const fico = new index_js_2.AgentCreditScore();
|
|
942
993
|
const txHistory = await agent.history(1000);
|
|
943
994
|
const profile = await agent.profile();
|
|
944
995
|
const result = fico.compute({
|
|
@@ -1011,6 +1062,60 @@ async function executeTool(agent, name, args) {
|
|
|
1011
1062
|
const result = _ewmaDetector.update(args.amount);
|
|
1012
1063
|
return JSON.stringify(result, null, 2);
|
|
1013
1064
|
}
|
|
1065
|
+
// ── Payouts (Paystack) ──────────────────────────────────────────────
|
|
1066
|
+
case "payout_create": {
|
|
1067
|
+
const rail = agent.paymentRail;
|
|
1068
|
+
if (!rail || rail.name !== "paystack")
|
|
1069
|
+
throw new Error("payout_create requires Paystack rail. Set MNEMOPAY_PAYMENT_RAIL=paystack");
|
|
1070
|
+
const recipient = await rail.createTransferRecipient(args.accountName, args.accountNumber, args.bankCode);
|
|
1071
|
+
const transfer = await rail.initiateTransfer(recipient.recipientCode, args.amount, args.reason, agent.agentId);
|
|
1072
|
+
return JSON.stringify({
|
|
1073
|
+
status: "initiated",
|
|
1074
|
+
transferCode: transfer.externalId,
|
|
1075
|
+
reference: transfer.reference,
|
|
1076
|
+
amount: transfer.amount,
|
|
1077
|
+
recipientCode: recipient.recipientCode,
|
|
1078
|
+
recipientName: recipient.name,
|
|
1079
|
+
transferStatus: transfer.transferStatus,
|
|
1080
|
+
}, null, 2);
|
|
1081
|
+
}
|
|
1082
|
+
case "payout_status": {
|
|
1083
|
+
const rail = agent.paymentRail;
|
|
1084
|
+
if (!rail || rail.name !== "paystack")
|
|
1085
|
+
throw new Error("payout_status requires Paystack rail");
|
|
1086
|
+
const response = await rail.request("GET", `/transfer/verify/${encodeURIComponent(args.transferCode)}`);
|
|
1087
|
+
return JSON.stringify({
|
|
1088
|
+
transferCode: args.transferCode,
|
|
1089
|
+
status: response.data?.status ?? "unknown",
|
|
1090
|
+
amount: response.data?.amount ? response.data.amount / 100 : null,
|
|
1091
|
+
recipient: response.data?.recipient?.details?.account_name,
|
|
1092
|
+
createdAt: response.data?.createdAt,
|
|
1093
|
+
updatedAt: response.data?.updatedAt,
|
|
1094
|
+
}, null, 2);
|
|
1095
|
+
}
|
|
1096
|
+
// ── Webhooks ────────────────────────────────────────────────────────
|
|
1097
|
+
case "webhook_register": {
|
|
1098
|
+
const id = `wh_${Date.now()}_${require("crypto").randomBytes(4).toString("hex")}`;
|
|
1099
|
+
_webhooks.set(id, { id, url: args.url, events: args.events, createdAt: Date.now() });
|
|
1100
|
+
return JSON.stringify({
|
|
1101
|
+
webhookId: id,
|
|
1102
|
+
url: args.url,
|
|
1103
|
+
events: args.events,
|
|
1104
|
+
status: "registered",
|
|
1105
|
+
message: "Webhook will receive POST requests when matching events occur.",
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
case "webhook_list": {
|
|
1109
|
+
const hooks = Array.from(_webhooks.values()).map(w => ({
|
|
1110
|
+
webhookId: w.id,
|
|
1111
|
+
url: w.url,
|
|
1112
|
+
events: w.events,
|
|
1113
|
+
createdAt: new Date(w.createdAt).toISOString(),
|
|
1114
|
+
}));
|
|
1115
|
+
if (hooks.length === 0)
|
|
1116
|
+
return "No webhooks registered.";
|
|
1117
|
+
return JSON.stringify(hooks, null, 2);
|
|
1118
|
+
}
|
|
1014
1119
|
case "shop_checkout": {
|
|
1015
1120
|
const { CheckoutExecutor } = await import("../commerce/checkout/index.js");
|
|
1016
1121
|
const { loadProfileFromEnv } = await import("../commerce/checkout/profile.js");
|
|
@@ -1046,6 +1151,7 @@ const _merkleTree = new index_js_2.MerkleTree();
|
|
|
1046
1151
|
const _ewmaDetector = new index_js_2.EWMADetector(0.15, 2.5, 3.5, 10);
|
|
1047
1152
|
const pendingApprovals = new Map();
|
|
1048
1153
|
const pendingChargeRequests = new Map();
|
|
1154
|
+
const _webhooks = new Map();
|
|
1049
1155
|
// Auto-expire pending approvals after 10 minutes
|
|
1050
1156
|
setInterval(() => {
|
|
1051
1157
|
const now = Date.now();
|
|
@@ -1105,7 +1211,7 @@ async function getCommerceEngine(agent) {
|
|
|
1105
1211
|
// ─── Server setup ───────────────────────────────────────────────────────────
|
|
1106
1212
|
async function startServer() {
|
|
1107
1213
|
const agent = createAgent();
|
|
1108
|
-
const server = new index_js_1.Server({ name: "mnemopay", version: "1.
|
|
1214
|
+
const server = new index_js_1.Server({ name: "mnemopay", version: "1.2.0" }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
|
|
1109
1215
|
// ── Tools ───────────────────────────────────────────────────────────────
|
|
1110
1216
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
1111
1217
|
tools: TOOLS,
|
|
@@ -1562,7 +1668,7 @@ async function startServer() {
|
|
|
1562
1668
|
// ─── Smithery sandbox — allows tool scanning without real credentials ──────
|
|
1563
1669
|
function createSandboxServer() {
|
|
1564
1670
|
const agent = index_js_2.MnemoPay.quick("smithery-sandbox");
|
|
1565
|
-
const server = new index_js_1.Server({ name: "mnemopay", version: "1.
|
|
1671
|
+
const server = new index_js_1.Server({ name: "mnemopay", version: "1.2.0" }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
|
|
1566
1672
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
1567
1673
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
1568
1674
|
const { name, arguments: args } = request.params;
|