@scriptmasterlabs/mcp-x402 2.0.2 → 2.1.1
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/.well-known/x402.json +37 -0
- package/LICENSE +57 -21
- package/README.md +262 -304
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-wrapper.d.ts +71 -0
- package/dist/mcp-wrapper.d.ts.map +1 -0
- package/dist/mcp-wrapper.js +104 -0
- package/dist/mcp-wrapper.js.map +1 -0
- package/dist/x402-middleware.d.ts +76 -0
- package/dist/x402-middleware.d.ts.map +1 -0
- package/dist/x402-middleware.js +113 -0
- package/dist/x402-middleware.js.map +1 -0
- package/dist/xrpl-facilitator.d.ts +77 -0
- package/dist/xrpl-facilitator.d.ts.map +1 -0
- package/dist/xrpl-facilitator.js +156 -0
- package/dist/xrpl-facilitator.js.map +1 -0
- package/llms.txt +108 -70
- package/package.json +65 -78
- package/schema.jsonld +97 -0
- package/.env.example +0 -35
- package/.github/workflows/ci.yml +0 -59
- package/.github/workflows/keepalive.yml +0 -31
- package/.well-known/agentcard.json +0 -34
- package/CONTRIBUTING.md +0 -76
- package/Dockerfile +0 -19
- package/agents.json +0 -67
- package/dist/lib/chains/base.d.ts +0 -10
- package/dist/lib/chains/base.d.ts.map +0 -1
- package/dist/lib/chains/base.js +0 -73
- package/dist/lib/chains/base.js.map +0 -1
- package/dist/lib/chains/solana.d.ts +0 -10
- package/dist/lib/chains/solana.d.ts.map +0 -1
- package/dist/lib/chains/solana.js +0 -49
- package/dist/lib/chains/solana.js.map +0 -1
- package/dist/lib/chains/xrpl.d.ts +0 -10
- package/dist/lib/chains/xrpl.d.ts.map +0 -1
- package/dist/lib/chains/xrpl.js +0 -55
- package/dist/lib/chains/xrpl.js.map +0 -1
- package/dist/lib/credit/bureau.d.ts +0 -10
- package/dist/lib/credit/bureau.d.ts.map +0 -1
- package/dist/lib/credit/bureau.js +0 -58
- package/dist/lib/credit/bureau.js.map +0 -1
- package/dist/lib/sml-api/agentcard.d.ts +0 -17
- package/dist/lib/sml-api/agentcard.d.ts.map +0 -1
- package/dist/lib/sml-api/agentcard.js +0 -30
- package/dist/lib/sml-api/agentcard.js.map +0 -1
- package/dist/lib/sml-api/backtest.d.ts +0 -22
- package/dist/lib/sml-api/backtest.d.ts.map +0 -1
- package/dist/lib/sml-api/backtest.js +0 -28
- package/dist/lib/sml-api/backtest.js.map +0 -1
- package/dist/lib/sml-api/brokers.d.ts +0 -40
- package/dist/lib/sml-api/brokers.d.ts.map +0 -1
- package/dist/lib/sml-api/brokers.js +0 -128
- package/dist/lib/sml-api/brokers.js.map +0 -1
- package/dist/lib/sml-api/copytrader.d.ts +0 -11
- package/dist/lib/sml-api/copytrader.d.ts.map +0 -1
- package/dist/lib/sml-api/copytrader.js +0 -30
- package/dist/lib/sml-api/copytrader.js.map +0 -1
- package/dist/lib/sml-api/crawl.d.ts +0 -20
- package/dist/lib/sml-api/crawl.d.ts.map +0 -1
- package/dist/lib/sml-api/crawl.js +0 -32
- package/dist/lib/sml-api/crawl.js.map +0 -1
- package/dist/lib/sml-api/echo.d.ts +0 -10
- package/dist/lib/sml-api/echo.d.ts.map +0 -1
- package/dist/lib/sml-api/echo.js +0 -23
- package/dist/lib/sml-api/echo.js.map +0 -1
- package/dist/lib/sml-api/forge.d.ts +0 -11
- package/dist/lib/sml-api/forge.d.ts.map +0 -1
- package/dist/lib/sml-api/forge.js +0 -29
- package/dist/lib/sml-api/forge.js.map +0 -1
- package/dist/lib/sml-api/ftd.d.ts +0 -18
- package/dist/lib/sml-api/ftd.d.ts.map +0 -1
- package/dist/lib/sml-api/ftd.js +0 -43
- package/dist/lib/sml-api/ftd.js.map +0 -1
- package/dist/lib/sml-api/ghost.d.ts +0 -13
- package/dist/lib/sml-api/ghost.d.ts.map +0 -1
- package/dist/lib/sml-api/ghost.js +0 -29
- package/dist/lib/sml-api/ghost.js.map +0 -1
- package/dist/lib/sml-api/launchpad.d.ts +0 -20
- package/dist/lib/sml-api/launchpad.d.ts.map +0 -1
- package/dist/lib/sml-api/launchpad.js +0 -31
- package/dist/lib/sml-api/launchpad.js.map +0 -1
- package/dist/lib/sml-api/leviathan.d.ts +0 -22
- package/dist/lib/sml-api/leviathan.d.ts.map +0 -1
- package/dist/lib/sml-api/leviathan.js +0 -33
- package/dist/lib/sml-api/leviathan.js.map +0 -1
- package/dist/lib/sml-api/nexus.d.ts +0 -18
- package/dist/lib/sml-api/nexus.d.ts.map +0 -1
- package/dist/lib/sml-api/nexus.js +0 -40
- package/dist/lib/sml-api/nexus.js.map +0 -1
- package/dist/lib/sml-api/proof402.d.ts +0 -6
- package/dist/lib/sml-api/proof402.d.ts.map +0 -1
- package/dist/lib/sml-api/proof402.js +0 -30
- package/dist/lib/sml-api/proof402.js.map +0 -1
- package/dist/lib/sml-api/rails.d.ts +0 -12
- package/dist/lib/sml-api/rails.d.ts.map +0 -1
- package/dist/lib/sml-api/rails.js +0 -29
- package/dist/lib/sml-api/rails.js.map +0 -1
- package/dist/lib/sml-api/shadow.d.ts +0 -15
- package/dist/lib/sml-api/shadow.d.ts.map +0 -1
- package/dist/lib/sml-api/shadow.js +0 -27
- package/dist/lib/sml-api/shadow.js.map +0 -1
- package/dist/lib/sml-api/squeezeos.d.ts +0 -21
- package/dist/lib/sml-api/squeezeos.d.ts.map +0 -1
- package/dist/lib/sml-api/squeezeos.js +0 -97
- package/dist/lib/sml-api/squeezeos.js.map +0 -1
- package/dist/lib/sml-api/xdeo.d.ts +0 -13
- package/dist/lib/sml-api/xdeo.d.ts.map +0 -1
- package/dist/lib/sml-api/xdeo.js +0 -34
- package/dist/lib/sml-api/xdeo.js.map +0 -1
- package/dist/lib/sml-api/xmit.d.ts +0 -13
- package/dist/lib/sml-api/xmit.d.ts.map +0 -1
- package/dist/lib/sml-api/xmit.js +0 -34
- package/dist/lib/sml-api/xmit.js.map +0 -1
- package/dist/server/health.d.ts +0 -16
- package/dist/server/health.d.ts.map +0 -1
- package/dist/server/health.js +0 -39
- package/dist/server/health.js.map +0 -1
- package/dist/server/index.d.ts +0 -3
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -199
- package/dist/server/index.js.map +0 -1
- package/dist/server/payments/ap2.d.ts +0 -17
- package/dist/server/payments/ap2.d.ts.map +0 -1
- package/dist/server/payments/ap2.js +0 -77
- package/dist/server/payments/ap2.js.map +0 -1
- package/dist/server/payments/receipt.d.ts +0 -28
- package/dist/server/payments/receipt.d.ts.map +0 -1
- package/dist/server/payments/receipt.js +0 -60
- package/dist/server/payments/receipt.js.map +0 -1
- package/dist/server/payments/router.d.ts +0 -23
- package/dist/server/payments/router.d.ts.map +0 -1
- package/dist/server/payments/router.js +0 -69
- package/dist/server/payments/router.js.map +0 -1
- package/dist/server/payments/wallet.d.ts +0 -18
- package/dist/server/payments/wallet.d.ts.map +0 -1
- package/dist/server/payments/wallet.js +0 -107
- package/dist/server/payments/wallet.js.map +0 -1
- package/dist/server/payments/x402.d.ts +0 -29
- package/dist/server/payments/x402.d.ts.map +0 -1
- package/dist/server/payments/x402.js +0 -138
- package/dist/server/payments/x402.js.map +0 -1
- package/dist/server/registry/catalog.d.ts +0 -12
- package/dist/server/registry/catalog.d.ts.map +0 -1
- package/dist/server/registry/catalog.js +0 -55
- package/dist/server/registry/catalog.js.map +0 -1
- package/dist/server/registry/discovery.d.ts +0 -16
- package/dist/server/registry/discovery.d.ts.map +0 -1
- package/dist/server/registry/discovery.js +0 -33
- package/dist/server/registry/discovery.js.map +0 -1
- package/dist/server/registry/pricing.d.ts +0 -10
- package/dist/server/registry/pricing.d.ts.map +0 -1
- package/dist/server/registry/pricing.js +0 -123
- package/dist/server/registry/pricing.js.map +0 -1
- package/dist/server/security/acl.d.ts +0 -28
- package/dist/server/security/acl.d.ts.map +0 -1
- package/dist/server/security/acl.js +0 -36
- package/dist/server/security/acl.js.map +0 -1
- package/dist/server/security/audit.d.ts +0 -15
- package/dist/server/security/audit.d.ts.map +0 -1
- package/dist/server/security/audit.js +0 -77
- package/dist/server/security/audit.js.map +0 -1
- package/dist/server/security/rate-limit.d.ts +0 -12
- package/dist/server/security/rate-limit.d.ts.map +0 -1
- package/dist/server/security/rate-limit.js +0 -72
- package/dist/server/security/rate-limit.js.map +0 -1
- package/dist/server/security/sandbox.d.ts +0 -7
- package/dist/server/security/sandbox.d.ts.map +0 -1
- package/dist/server/security/sandbox.js +0 -42
- package/dist/server/security/sandbox.js.map +0 -1
- package/dist/server/tools/agentcard.d.ts +0 -3
- package/dist/server/tools/agentcard.d.ts.map +0 -1
- package/dist/server/tools/agentcard.js +0 -118
- package/dist/server/tools/agentcard.js.map +0 -1
- package/dist/server/tools/backtest.d.ts +0 -3
- package/dist/server/tools/backtest.d.ts.map +0 -1
- package/dist/server/tools/backtest.js +0 -112
- package/dist/server/tools/backtest.js.map +0 -1
- package/dist/server/tools/brokers.d.ts +0 -3
- package/dist/server/tools/brokers.d.ts.map +0 -1
- package/dist/server/tools/brokers.js +0 -223
- package/dist/server/tools/brokers.js.map +0 -1
- package/dist/server/tools/copytrader.d.ts +0 -3
- package/dist/server/tools/copytrader.d.ts.map +0 -1
- package/dist/server/tools/copytrader.js +0 -90
- package/dist/server/tools/copytrader.js.map +0 -1
- package/dist/server/tools/crawl.d.ts +0 -3
- package/dist/server/tools/crawl.d.ts.map +0 -1
- package/dist/server/tools/crawl.js +0 -60
- package/dist/server/tools/crawl.js.map +0 -1
- package/dist/server/tools/discovery.d.ts +0 -3
- package/dist/server/tools/discovery.d.ts.map +0 -1
- package/dist/server/tools/discovery.js +0 -188
- package/dist/server/tools/discovery.js.map +0 -1
- package/dist/server/tools/echo.d.ts +0 -3
- package/dist/server/tools/echo.d.ts.map +0 -1
- package/dist/server/tools/echo.js +0 -48
- package/dist/server/tools/echo.js.map +0 -1
- package/dist/server/tools/forge.d.ts +0 -3
- package/dist/server/tools/forge.d.ts.map +0 -1
- package/dist/server/tools/forge.js +0 -77
- package/dist/server/tools/forge.js.map +0 -1
- package/dist/server/tools/ftd.d.ts +0 -3
- package/dist/server/tools/ftd.d.ts.map +0 -1
- package/dist/server/tools/ftd.js +0 -70
- package/dist/server/tools/ftd.js.map +0 -1
- package/dist/server/tools/ghost.d.ts +0 -3
- package/dist/server/tools/ghost.d.ts.map +0 -1
- package/dist/server/tools/ghost.js +0 -83
- package/dist/server/tools/ghost.js.map +0 -1
- package/dist/server/tools/index.d.ts +0 -3
- package/dist/server/tools/index.d.ts.map +0 -1
- package/dist/server/tools/index.js +0 -44
- package/dist/server/tools/index.js.map +0 -1
- package/dist/server/tools/launchpad.d.ts +0 -3
- package/dist/server/tools/launchpad.d.ts.map +0 -1
- package/dist/server/tools/launchpad.js +0 -151
- package/dist/server/tools/launchpad.js.map +0 -1
- package/dist/server/tools/leviathan.d.ts +0 -3
- package/dist/server/tools/leviathan.d.ts.map +0 -1
- package/dist/server/tools/leviathan.js +0 -73
- package/dist/server/tools/leviathan.js.map +0 -1
- package/dist/server/tools/nexus.d.ts +0 -3
- package/dist/server/tools/nexus.d.ts.map +0 -1
- package/dist/server/tools/nexus.js +0 -65
- package/dist/server/tools/nexus.js.map +0 -1
- package/dist/server/tools/proof402.d.ts +0 -3
- package/dist/server/tools/proof402.d.ts.map +0 -1
- package/dist/server/tools/proof402.js +0 -74
- package/dist/server/tools/proof402.js.map +0 -1
- package/dist/server/tools/rails.d.ts +0 -3
- package/dist/server/tools/rails.d.ts.map +0 -1
- package/dist/server/tools/rails.js +0 -82
- package/dist/server/tools/rails.js.map +0 -1
- package/dist/server/tools/shadow.d.ts +0 -3
- package/dist/server/tools/shadow.d.ts.map +0 -1
- package/dist/server/tools/shadow.js +0 -114
- package/dist/server/tools/shadow.js.map +0 -1
- package/dist/server/tools/squeezeos.d.ts +0 -3
- package/dist/server/tools/squeezeos.d.ts.map +0 -1
- package/dist/server/tools/squeezeos.js +0 -231
- package/dist/server/tools/squeezeos.js.map +0 -1
- package/dist/server/tools/xdeo.d.ts +0 -3
- package/dist/server/tools/xdeo.d.ts.map +0 -1
- package/dist/server/tools/xdeo.js +0 -58
- package/dist/server/tools/xdeo.js.map +0 -1
- package/dist/server/tools/xmit.d.ts +0 -3
- package/dist/server/tools/xmit.d.ts.map +0 -1
- package/dist/server/tools/xmit.js +0 -59
- package/dist/server/tools/xmit.js.map +0 -1
- package/docker-compose.yml +0 -50
- package/mcp-publisher.exe +0 -0
- package/render.yaml +0 -39
- package/sdk/mcp-x402-sdk/package.json +0 -18
- package/sdk/mcp-x402-sdk/src/index.ts +0 -118
- package/sdk/mcp-x402-sdk/tsconfig.json +0 -14
- package/server.json +0 -48
- package/services/backtest_service.py +0 -176
- package/src/lib/chains/base.ts +0 -77
- package/src/lib/chains/solana.ts +0 -59
- package/src/lib/chains/xrpl.ts +0 -63
- package/src/lib/credit/bureau.ts +0 -65
- package/src/lib/sml-api/agentcard.ts +0 -40
- package/src/lib/sml-api/backtest.ts +0 -47
- package/src/lib/sml-api/brokers.ts +0 -160
- package/src/lib/sml-api/copytrader.ts +0 -33
- package/src/lib/sml-api/crawl.ts +0 -44
- package/src/lib/sml-api/echo.ts +0 -28
- package/src/lib/sml-api/forge.ts +0 -33
- package/src/lib/sml-api/ftd.ts +0 -53
- package/src/lib/sml-api/ghost.ts +0 -35
- package/src/lib/sml-api/launchpad.ts +0 -43
- package/src/lib/sml-api/leviathan.ts +0 -49
- package/src/lib/sml-api/nexus.ts +0 -50
- package/src/lib/sml-api/proof402.ts +0 -27
- package/src/lib/sml-api/rails.ts +0 -34
- package/src/lib/sml-api/shadow.ts +0 -35
- package/src/lib/sml-api/squeezeos.ts +0 -95
- package/src/lib/sml-api/xdeo.ts +0 -40
- package/src/lib/sml-api/xmit.ts +0 -40
- package/src/server/health.ts +0 -52
- package/src/server/index.ts +0 -213
- package/src/server/payments/ap2.ts +0 -101
- package/src/server/payments/receipt.ts +0 -85
- package/src/server/payments/router.ts +0 -110
- package/src/server/payments/wallet.ts +0 -123
- package/src/server/payments/x402.ts +0 -177
- package/src/server/registry/catalog.ts +0 -61
- package/src/server/registry/discovery.ts +0 -39
- package/src/server/registry/pricing.ts +0 -133
- package/src/server/security/acl.ts +0 -42
- package/src/server/security/audit.ts +0 -94
- package/src/server/security/rate-limit.ts +0 -84
- package/src/server/security/sandbox.ts +0 -40
- package/src/server/tools/agentcard.ts +0 -134
- package/src/server/tools/backtest.ts +0 -119
- package/src/server/tools/brokers.ts +0 -250
- package/src/server/tools/copytrader.ts +0 -104
- package/src/server/tools/crawl.ts +0 -70
- package/src/server/tools/discovery.ts +0 -202
- package/src/server/tools/echo.ts +0 -58
- package/src/server/tools/forge.ts +0 -87
- package/src/server/tools/ftd.ts +0 -88
- package/src/server/tools/ghost.ts +0 -93
- package/src/server/tools/index.ts +0 -42
- package/src/server/tools/launchpad.ts +0 -173
- package/src/server/tools/leviathan.ts +0 -81
- package/src/server/tools/nexus.ts +0 -76
- package/src/server/tools/proof402.ts +0 -87
- package/src/server/tools/rails.ts +0 -92
- package/src/server/tools/shadow.ts +0 -128
- package/src/server/tools/squeezeos.ts +0 -312
- package/src/server/tools/xdeo.ts +0 -67
- package/src/server/tools/xmit.ts +0 -68
- package/tests/integration/e2e.test.ts +0 -51
- package/tests/unit/payments.test.ts +0 -49
- package/tests/unit/security.test.ts +0 -92
- package/tests/unit/tools.test.ts +0 -42
- package/tsconfig.json +0 -21
- package/vitest.config.ts +0 -20
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WalletManager = void 0;
|
|
4
|
-
const audit_js_1 = require("../security/audit.js");
|
|
5
|
-
const KEYCHAIN_SERVICE = 'mcp-x402';
|
|
6
|
-
const KEYCHAIN_ACCOUNT = 'master-seed';
|
|
7
|
-
class WalletManager {
|
|
8
|
-
static instance;
|
|
9
|
-
cachedAddress = null;
|
|
10
|
-
cachedSeed = null;
|
|
11
|
-
constructor() { }
|
|
12
|
-
static getInstance() {
|
|
13
|
-
if (!WalletManager.instance) {
|
|
14
|
-
WalletManager.instance = new WalletManager();
|
|
15
|
-
}
|
|
16
|
-
return WalletManager.instance;
|
|
17
|
-
}
|
|
18
|
-
// Try OS keychain; returns null if keytar is unavailable (Docker/cloud) or no entry exists.
|
|
19
|
-
async keytarGet() {
|
|
20
|
-
try {
|
|
21
|
-
const kt = await import('keytar');
|
|
22
|
-
return await kt.getPassword(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async keytarSet(value) {
|
|
29
|
-
try {
|
|
30
|
-
const kt = await import('keytar');
|
|
31
|
-
await kt.setPassword(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT, value);
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
// Silently skip — keytar unavailable in this environment
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// Seed resolution priority:
|
|
38
|
-
// 1. OS keychain (local desktop — most secure)
|
|
39
|
-
// 2. WALLET_SEED env var (Render secret — cloud/Docker deployment)
|
|
40
|
-
// 3. CI_WALLET_SEED env var (CI only, never production)
|
|
41
|
-
// 4. Generate fresh and try to persist in keychain
|
|
42
|
-
async getSeed() {
|
|
43
|
-
if (this.cachedSeed)
|
|
44
|
-
return this.cachedSeed;
|
|
45
|
-
const audit = audit_js_1.AuditLogger.getInstance();
|
|
46
|
-
let seed = await this.keytarGet();
|
|
47
|
-
if (!seed) {
|
|
48
|
-
const envSeed = process.env['WALLET_SEED'];
|
|
49
|
-
if (envSeed) {
|
|
50
|
-
seed = envSeed;
|
|
51
|
-
audit.warn('wallet_env_seed', { note: 'Using WALLET_SEED env var (cloud deployment).' });
|
|
52
|
-
}
|
|
53
|
-
else if (process.env['CI_WALLET_SEED'] && process.env['NODE_ENV'] !== 'production') {
|
|
54
|
-
seed = process.env['CI_WALLET_SEED'];
|
|
55
|
-
audit.warn('wallet_ci_fallback', { note: 'Using CI_WALLET_SEED. NEVER do this in production.' });
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const { generateMnemonic } = await import('bip39');
|
|
59
|
-
seed = generateMnemonic(256);
|
|
60
|
-
await this.keytarSet(seed);
|
|
61
|
-
audit.info('wallet_created', { note: 'New BIP-39 seed generated.' });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
this.cachedSeed = seed;
|
|
65
|
-
return seed;
|
|
66
|
-
}
|
|
67
|
-
async getOrCreateWallet() {
|
|
68
|
-
if (this.cachedAddress) {
|
|
69
|
-
return { address: this.cachedAddress, chain: 'base' };
|
|
70
|
-
}
|
|
71
|
-
const audit = audit_js_1.AuditLogger.getInstance();
|
|
72
|
-
const seed = await this.getSeed();
|
|
73
|
-
const address = await this.deriveAddress(seed);
|
|
74
|
-
this.cachedAddress = address;
|
|
75
|
-
audit.info('wallet_loaded', { address });
|
|
76
|
-
return { address, chain: 'base' };
|
|
77
|
-
}
|
|
78
|
-
async deriveAddress(mnemonic) {
|
|
79
|
-
// BIP-44 deterministic derivation: m/44'/60'/0'/0/0 (Base = EVM)
|
|
80
|
-
const { mnemonicToSeedSync } = await import('bip39');
|
|
81
|
-
const { default: HDKey } = await import('hdkey');
|
|
82
|
-
const { privateKeyToAccount } = await import('viem/accounts');
|
|
83
|
-
const seed = mnemonicToSeedSync(mnemonic);
|
|
84
|
-
const hdkey = HDKey.fromMasterSeed(seed);
|
|
85
|
-
const child = hdkey.derive("m/44'/60'/0'/0/0");
|
|
86
|
-
if (!child.privateKey) {
|
|
87
|
-
throw new Error('Failed to derive private key from HD path');
|
|
88
|
-
}
|
|
89
|
-
const account = privateKeyToAccount(`0x${child.privateKey.toString('hex')}`);
|
|
90
|
-
return account.address;
|
|
91
|
-
}
|
|
92
|
-
async signPayload(payload) {
|
|
93
|
-
const mnemonic = await this.getSeed();
|
|
94
|
-
const { mnemonicToSeedSync } = await import('bip39');
|
|
95
|
-
const { default: HDKey } = await import('hdkey');
|
|
96
|
-
const { privateKeyToAccount } = await import('viem/accounts');
|
|
97
|
-
const seed = mnemonicToSeedSync(mnemonic);
|
|
98
|
-
const hdkey = HDKey.fromMasterSeed(seed);
|
|
99
|
-
const child = hdkey.derive("m/44'/60'/0'/0/0");
|
|
100
|
-
if (!child.privateKey)
|
|
101
|
-
throw new Error('Key derivation failed');
|
|
102
|
-
const account = privateKeyToAccount(`0x${child.privateKey.toString('hex')}`);
|
|
103
|
-
return account.signMessage({ message: payload });
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.WalletManager = WalletManager;
|
|
107
|
-
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/server/payments/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const PaymentConfigSchema: z.ZodObject<{
|
|
3
|
-
price: z.ZodString;
|
|
4
|
-
currency: z.ZodEnum<["USDC", "RLUSD"]>;
|
|
5
|
-
toolName: z.ZodString;
|
|
6
|
-
walletAddress: z.ZodOptional<z.ZodString>;
|
|
7
|
-
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
currency: "USDC" | "RLUSD";
|
|
9
|
-
price: string;
|
|
10
|
-
toolName: string;
|
|
11
|
-
walletAddress?: string | undefined;
|
|
12
|
-
}, {
|
|
13
|
-
currency: "USDC" | "RLUSD";
|
|
14
|
-
price: string;
|
|
15
|
-
toolName: string;
|
|
16
|
-
walletAddress?: string | undefined;
|
|
17
|
-
}>;
|
|
18
|
-
export type PaymentConfig = z.infer<typeof PaymentConfigSchema>;
|
|
19
|
-
export interface PaymentResult {
|
|
20
|
-
receiptId: string;
|
|
21
|
-
txHash: string;
|
|
22
|
-
chain: string;
|
|
23
|
-
amountPaid: string;
|
|
24
|
-
currency: string;
|
|
25
|
-
timestamp: number;
|
|
26
|
-
walletAddress: string;
|
|
27
|
-
}
|
|
28
|
-
export declare function executeX402Payment(config: PaymentConfig): Promise<PaymentResult>;
|
|
29
|
-
//# sourceMappingURL=x402.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/server/payments/x402.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AA6BD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAuHxB"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PaymentConfigSchema = void 0;
|
|
4
|
-
exports.executeX402Payment = executeX402Payment;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const audit_js_1 = require("../security/audit.js");
|
|
7
|
-
const ap2_js_1 = require("./ap2.js");
|
|
8
|
-
const wallet_js_1 = require("./wallet.js");
|
|
9
|
-
const router_js_1 = require("./router.js");
|
|
10
|
-
const receipt_js_1 = require("./receipt.js");
|
|
11
|
-
const bureau_js_1 = require("../../lib/credit/bureau.js");
|
|
12
|
-
const pricing_js_1 = require("../registry/pricing.js");
|
|
13
|
-
exports.PaymentConfigSchema = zod_1.z.object({
|
|
14
|
-
price: zod_1.z.string().regex(/^\d+(\.\d+)?$/),
|
|
15
|
-
currency: zod_1.z.enum(['USDC', 'RLUSD']),
|
|
16
|
-
toolName: zod_1.z.string(),
|
|
17
|
-
walletAddress: zod_1.z.string().optional(),
|
|
18
|
-
});
|
|
19
|
-
const AUTO_APPROVE_THRESHOLD = parseFloat(process.env['AUTO_APPROVE_THRESHOLD_USD'] ?? '1.0');
|
|
20
|
-
const DAILY_SPEND_CAP = parseFloat(process.env['DAILY_SPEND_CAP_USD'] ?? '50.0');
|
|
21
|
-
const dailySpend = new Map();
|
|
22
|
-
function getTodayKey() {
|
|
23
|
-
return new Date().toISOString().slice(0, 10);
|
|
24
|
-
}
|
|
25
|
-
function getDailySpend(wallet) {
|
|
26
|
-
const today = getTodayKey();
|
|
27
|
-
const entry = dailySpend.get(wallet);
|
|
28
|
-
if (!entry || entry.date !== today)
|
|
29
|
-
return 0;
|
|
30
|
-
return entry.amount;
|
|
31
|
-
}
|
|
32
|
-
function addDailySpend(wallet, amount) {
|
|
33
|
-
const today = getTodayKey();
|
|
34
|
-
const current = getDailySpend(wallet);
|
|
35
|
-
dailySpend.set(wallet, { amount: current + amount, date: today });
|
|
36
|
-
}
|
|
37
|
-
async function executeX402Payment(config) {
|
|
38
|
-
const audit = audit_js_1.AuditLogger.getInstance();
|
|
39
|
-
const wallet = await wallet_js_1.WalletManager.getInstance().getOrCreateWallet();
|
|
40
|
-
const walletAddress = wallet.address;
|
|
41
|
-
// Enforce daily spend cap (N9)
|
|
42
|
-
const priceNum = parseFloat(config.price);
|
|
43
|
-
const currentSpend = getDailySpend(walletAddress);
|
|
44
|
-
if (currentSpend + priceNum > DAILY_SPEND_CAP) {
|
|
45
|
-
audit.warn('spend_cap_exceeded', {
|
|
46
|
-
wallet: walletAddress,
|
|
47
|
-
current: currentSpend,
|
|
48
|
-
requested: priceNum,
|
|
49
|
-
cap: DAILY_SPEND_CAP,
|
|
50
|
-
});
|
|
51
|
-
throw new Error(`Daily spend cap of $${DAILY_SPEND_CAP} exceeded. Current: $${currentSpend.toFixed(4)}`);
|
|
52
|
-
}
|
|
53
|
-
// Verify price cache freshness (N12)
|
|
54
|
-
const cachedPrice = await pricing_js_1.PriceRegistry.getInstance().getPrice(config.toolName);
|
|
55
|
-
if (!cachedPrice) {
|
|
56
|
-
throw new Error('Price data stale or unavailable. Rejecting payment.');
|
|
57
|
-
}
|
|
58
|
-
if (cachedPrice !== config.price) {
|
|
59
|
-
throw new Error(`Price mismatch: expected ${cachedPrice}, got ${config.price}. Cache may be stale.`);
|
|
60
|
-
}
|
|
61
|
-
// Credit Bureau check (N8)
|
|
62
|
-
const score = await bureau_js_1.CreditBureau.getInstance().getScore(walletAddress);
|
|
63
|
-
const autoApprove = priceNum <= AUTO_APPROVE_THRESHOLD && score >= 300;
|
|
64
|
-
audit.info('payment_attempt', {
|
|
65
|
-
tool: config.toolName,
|
|
66
|
-
price: config.price,
|
|
67
|
-
currency: config.currency,
|
|
68
|
-
wallet: walletAddress,
|
|
69
|
-
bureauScore: score,
|
|
70
|
-
autoApprove,
|
|
71
|
-
});
|
|
72
|
-
if (!autoApprove && score < 300) {
|
|
73
|
-
throw new Error(`Credit Bureau score ${score} below minimum 300. Payment requires manual approval.`);
|
|
74
|
-
}
|
|
75
|
-
// AP2 mandate verification (N6)
|
|
76
|
-
const ap2 = ap2_js_1.AP2Client.getInstance();
|
|
77
|
-
const mandateValid = await ap2.verifyMandate(walletAddress, {
|
|
78
|
-
maxAmount: config.price,
|
|
79
|
-
currency: config.currency,
|
|
80
|
-
toolName: config.toolName,
|
|
81
|
-
});
|
|
82
|
-
if (!mandateValid) {
|
|
83
|
-
audit.warn('ap2_mandate_rejected', { wallet: walletAddress, tool: config.toolName });
|
|
84
|
-
throw new Error('AP2 mandate verification failed. Agent not authorized for this payment.');
|
|
85
|
-
}
|
|
86
|
-
// Route payment to cheapest/fastest chain (N13)
|
|
87
|
-
// If SML_PAYMENT_RECEIVER is not configured, log the intended payment and continue
|
|
88
|
-
const receiver = process.env['SML_PAYMENT_RECEIVER'] ?? '';
|
|
89
|
-
let txResult;
|
|
90
|
-
if (!receiver) {
|
|
91
|
-
audit.warn('payment_receiver_unset', { tool: config.toolName, amount: config.price, note: 'SML_PAYMENT_RECEIVER not configured — logging only' });
|
|
92
|
-
txResult = { txHash: `pending-${Date.now()}`, chain: 'none', latencyMs: 0 };
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
try {
|
|
96
|
-
const router = router_js_1.ChainRouter.getInstance();
|
|
97
|
-
txResult = await router.route({
|
|
98
|
-
amount: config.price,
|
|
99
|
-
currency: config.currency,
|
|
100
|
-
from: walletAddress,
|
|
101
|
-
to: receiver,
|
|
102
|
-
timeoutMs: 500,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
// Log payment failure but don't block tool execution
|
|
107
|
-
audit.warn('payment_tx_failed', { tool: config.toolName, amount: config.price, error: String(err), note: 'Server wallet may be unfunded — tool served anyway' });
|
|
108
|
-
txResult = { txHash: `failed-${Date.now()}`, chain: 'none', latencyMs: 0 };
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
addDailySpend(walletAddress, priceNum);
|
|
112
|
-
// Generate 402Proof receipt (N7)
|
|
113
|
-
const receipt = await receipt_js_1.ReceiptStore.getInstance().create({
|
|
114
|
-
txHash: txResult.txHash,
|
|
115
|
-
chain: txResult.chain,
|
|
116
|
-
amount: config.price,
|
|
117
|
-
currency: config.currency,
|
|
118
|
-
tool: config.toolName,
|
|
119
|
-
wallet: walletAddress,
|
|
120
|
-
});
|
|
121
|
-
audit.info('payment_success', {
|
|
122
|
-
receiptId: receipt.id,
|
|
123
|
-
txHash: txResult.txHash,
|
|
124
|
-
chain: txResult.chain,
|
|
125
|
-
tool: config.toolName,
|
|
126
|
-
wallet: walletAddress,
|
|
127
|
-
});
|
|
128
|
-
return {
|
|
129
|
-
receiptId: receipt.id,
|
|
130
|
-
txHash: txResult.txHash,
|
|
131
|
-
chain: txResult.chain,
|
|
132
|
-
amountPaid: config.price,
|
|
133
|
-
currency: config.currency,
|
|
134
|
-
timestamp: Date.now(),
|
|
135
|
-
walletAddress,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=x402.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/server/payments/x402.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface ToolMeta {
|
|
2
|
-
name: string;
|
|
3
|
-
description: string;
|
|
4
|
-
price: string;
|
|
5
|
-
currency: 'USDC' | 'RLUSD';
|
|
6
|
-
freeTier?: string;
|
|
7
|
-
ap2Required: boolean;
|
|
8
|
-
cacheTtl?: number;
|
|
9
|
-
}
|
|
10
|
-
export declare const CATALOG: ToolMeta[];
|
|
11
|
-
export declare function getToolMeta(name: string): ToolMeta | undefined;
|
|
12
|
-
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/server/registry/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,OAAO,EAAE,QAAQ,EA8C7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE9D"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CATALOG = void 0;
|
|
4
|
-
exports.getToolMeta = getToolMeta;
|
|
5
|
-
exports.CATALOG = [
|
|
6
|
-
{
|
|
7
|
-
name: 'leviathan_signal',
|
|
8
|
-
description: 'Institutional-grade squeeze signals. Multi-engine verdict for any ticker.',
|
|
9
|
-
price: '0.05',
|
|
10
|
-
currency: 'USDC',
|
|
11
|
-
ap2Required: true,
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'xmit_edgar_decode',
|
|
15
|
-
description: 'Parse SEC DEF 14A / 13F / 13D filings. Raw text never leaves SML servers.',
|
|
16
|
-
price: '0.02',
|
|
17
|
-
currency: 'USDC',
|
|
18
|
-
ap2Required: true,
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'xdeo_earnings_estimate',
|
|
22
|
-
description: 'Decentralized earnings oracle. +2 bureau_score on success.',
|
|
23
|
-
price: '0.02',
|
|
24
|
-
currency: 'USDC',
|
|
25
|
-
ap2Required: true,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
name: 'ftd_threshold_scan',
|
|
29
|
-
description: 'SEC Reg SHO FTD data. Alerts free; full data 0.05 USDC. 15-min cache.',
|
|
30
|
-
price: '0.05',
|
|
31
|
-
currency: 'USDC',
|
|
32
|
-
ap2Required: false,
|
|
33
|
-
freeTier: 'alerts_only',
|
|
34
|
-
cacheTtl: 900,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
name: 'nexus_agent_hire',
|
|
38
|
-
description: 'Agent marketplace. Query free; hire charges 5% commission.',
|
|
39
|
-
price: '0.00',
|
|
40
|
-
currency: 'USDC',
|
|
41
|
-
ap2Required: false,
|
|
42
|
-
freeTier: 'query_only',
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'crawl_paid_fetch',
|
|
46
|
-
description: 'Pay-per-fetch scraping. Humans bypass free.',
|
|
47
|
-
price: '0.005',
|
|
48
|
-
currency: 'USDC',
|
|
49
|
-
ap2Required: false,
|
|
50
|
-
},
|
|
51
|
-
];
|
|
52
|
-
function getToolMeta(name) {
|
|
53
|
-
return exports.CATALOG.find((t) => t.name === name);
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=catalog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/server/registry/catalog.ts"],"names":[],"mappings":";;;AA0DA,kCAEC;AAlDY,QAAA,OAAO,GAAe;IACjC;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,2EAA2E;QACxF,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,2EAA2E;QACxF,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,uEAAuE;QACpF,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,GAAG;KACd;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AAEF,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
interface AgentsJson {
|
|
2
|
-
schema_version: string;
|
|
3
|
-
name: string;
|
|
4
|
-
tools: unknown[];
|
|
5
|
-
}
|
|
6
|
-
export declare class Discovery {
|
|
7
|
-
private static instance;
|
|
8
|
-
private agentsJson;
|
|
9
|
-
private llmsTxt;
|
|
10
|
-
private constructor();
|
|
11
|
-
static getInstance(): Discovery;
|
|
12
|
-
getAgentsJson(): AgentsJson;
|
|
13
|
-
getLlmsTxt(): string;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/server/registry/discovery.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,SAAS;IAO/B,aAAa,IAAI,UAAU;IAQ3B,UAAU,IAAI,MAAM;CAOrB"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Discovery = void 0;
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const path_1 = require("path");
|
|
6
|
-
class Discovery {
|
|
7
|
-
static instance;
|
|
8
|
-
agentsJson = null;
|
|
9
|
-
llmsTxt = null;
|
|
10
|
-
constructor() { }
|
|
11
|
-
static getInstance() {
|
|
12
|
-
if (!Discovery.instance) {
|
|
13
|
-
Discovery.instance = new Discovery();
|
|
14
|
-
}
|
|
15
|
-
return Discovery.instance;
|
|
16
|
-
}
|
|
17
|
-
getAgentsJson() {
|
|
18
|
-
if (!this.agentsJson) {
|
|
19
|
-
const path = (0, path_1.join)(process.cwd(), 'agents.json');
|
|
20
|
-
this.agentsJson = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
|
|
21
|
-
}
|
|
22
|
-
return this.agentsJson;
|
|
23
|
-
}
|
|
24
|
-
getLlmsTxt() {
|
|
25
|
-
if (!this.llmsTxt) {
|
|
26
|
-
const path = (0, path_1.join)(process.cwd(), 'llms.txt');
|
|
27
|
-
this.llmsTxt = (0, fs_1.readFileSync)(path, 'utf8');
|
|
28
|
-
}
|
|
29
|
-
return this.llmsTxt;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.Discovery = Discovery;
|
|
33
|
-
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/server/registry/discovery.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,+BAA4B;AAQ5B,MAAa,SAAS;IACZ,MAAM,CAAC,QAAQ,CAAY;IAC3B,UAAU,GAAsB,IAAI,CAAC;IACrC,OAAO,GAAkB,IAAI,CAAC;IAEtC,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAe,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA7BD,8BA6BC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare class PriceRegistry {
|
|
2
|
-
private static instance;
|
|
3
|
-
private readonly cache;
|
|
4
|
-
private readonly baseUrl;
|
|
5
|
-
private constructor();
|
|
6
|
-
static getInstance(): PriceRegistry;
|
|
7
|
-
getPrice(toolName: string): Promise<string | null>;
|
|
8
|
-
seedDefaults(): void;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/server/registry/pricing.ts"],"names":[],"mappings":"AAyEA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,aAAa;IAO7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmCxD,YAAY,IAAI,IAAI;CAQrB"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PriceRegistry = void 0;
|
|
4
|
-
const PRICE_CACHE_TTL = parseInt(process.env['PRICE_CACHE_TTL_MS'] ?? '60000', 10);
|
|
5
|
-
const BASE_PRICES = {
|
|
6
|
-
// Discovery (free)
|
|
7
|
-
sml_discover: '0.00',
|
|
8
|
-
sml_status: '0.00',
|
|
9
|
-
// SqueezeOS signals
|
|
10
|
-
leviathan_signal: '0.05',
|
|
11
|
-
squeezeos_council: '0.10',
|
|
12
|
-
squeezeos_scan: '0.05',
|
|
13
|
-
squeezeos_options: '0.05',
|
|
14
|
-
squeezeos_iwm: '0.03',
|
|
15
|
-
squeezeos_preview: '0.00',
|
|
16
|
-
squeezeos_status: '0.00',
|
|
17
|
-
// SEC / Earnings
|
|
18
|
-
xmit_edgar_decode: '0.02',
|
|
19
|
-
xdeo_earnings_estimate: '0.02',
|
|
20
|
-
// FTD
|
|
21
|
-
ftd_threshold_scan: '0.05',
|
|
22
|
-
// Crawl
|
|
23
|
-
crawl_paid_fetch: '0.005',
|
|
24
|
-
// Agent marketplace
|
|
25
|
-
nexus_agent_hire: '0.00',
|
|
26
|
-
nexus_agent_list: '0.00',
|
|
27
|
-
nexus_agent_status: '0.00',
|
|
28
|
-
// Ghost Layer (cross-chain)
|
|
29
|
-
ghost_transfer: '0.02',
|
|
30
|
-
ghost_status: '0.00',
|
|
31
|
-
ghost_routes: '0.00',
|
|
32
|
-
// RLUSD Rails
|
|
33
|
-
rails_send: '0.01',
|
|
34
|
-
rails_status: '0.00',
|
|
35
|
-
// Launchpad
|
|
36
|
-
launchpad_create_token: '0.10',
|
|
37
|
-
launchpad_buy_token: '0.02',
|
|
38
|
-
launchpad_list: '0.00',
|
|
39
|
-
launchpad_status: '0.00',
|
|
40
|
-
// Copy-Trader
|
|
41
|
-
copytrader_subscribe: '0.05',
|
|
42
|
-
copytrader_status: '0.00',
|
|
43
|
-
// Backtest
|
|
44
|
-
backtest_run: '0.05',
|
|
45
|
-
backtest_validate: '0.05',
|
|
46
|
-
backtest_status: '0.00',
|
|
47
|
-
// Brokers (Tradier)
|
|
48
|
-
brokers_quote: '0.00',
|
|
49
|
-
brokers_options_chain: '0.01',
|
|
50
|
-
brokers_place_order: '0.05',
|
|
51
|
-
brokers_account: '0.01',
|
|
52
|
-
// Shadow Desk
|
|
53
|
-
shadow_query: '0.05',
|
|
54
|
-
shadow_ingest: '0.02',
|
|
55
|
-
shadow_status: '0.00',
|
|
56
|
-
// Forge (LLM gateway)
|
|
57
|
-
forge_complete: '0.02',
|
|
58
|
-
forge_status: '0.00',
|
|
59
|
-
// Proof402
|
|
60
|
-
proof402_get_invoice: '0.00',
|
|
61
|
-
proof402_verify: '0.00',
|
|
62
|
-
proof402_credit_score: '0.00',
|
|
63
|
-
// Echo (pattern matching)
|
|
64
|
-
echo_analogs: '0.05',
|
|
65
|
-
// Agent card / identity
|
|
66
|
-
agentcard_verify: '0.00',
|
|
67
|
-
agentcard_register: '0.01',
|
|
68
|
-
agentcard_lookup: '0.00',
|
|
69
|
-
};
|
|
70
|
-
class PriceRegistry {
|
|
71
|
-
static instance;
|
|
72
|
-
cache = new Map();
|
|
73
|
-
baseUrl;
|
|
74
|
-
constructor() {
|
|
75
|
-
this.baseUrl = process.env['SML_API_BASE'] ?? 'https://squeezeos-api.onrender.com';
|
|
76
|
-
}
|
|
77
|
-
static getInstance() {
|
|
78
|
-
if (!PriceRegistry.instance) {
|
|
79
|
-
PriceRegistry.instance = new PriceRegistry();
|
|
80
|
-
}
|
|
81
|
-
return PriceRegistry.instance;
|
|
82
|
-
}
|
|
83
|
-
async getPrice(toolName) {
|
|
84
|
-
const cached = this.cache.get(toolName);
|
|
85
|
-
const now = Date.now();
|
|
86
|
-
if (cached && now - cached.fetchedAt < PRICE_CACHE_TTL) {
|
|
87
|
-
return cached.price;
|
|
88
|
-
}
|
|
89
|
-
// Fetch live price from SML pricing API
|
|
90
|
-
try {
|
|
91
|
-
const res = await fetch(`${this.baseUrl}/pricing/v1/tool/${toolName}`, {
|
|
92
|
-
signal: AbortSignal.timeout(3000),
|
|
93
|
-
});
|
|
94
|
-
if (res.ok) {
|
|
95
|
-
const body = (await res.json());
|
|
96
|
-
this.cache.set(toolName, { price: body.price, fetchedAt: now });
|
|
97
|
-
return body.price;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
// Fall through to hardcoded baseline
|
|
102
|
-
}
|
|
103
|
-
// Use hardcoded baseline if API unavailable
|
|
104
|
-
const fallback = BASE_PRICES[toolName];
|
|
105
|
-
if (fallback !== undefined) {
|
|
106
|
-
this.cache.set(toolName, { price: fallback, fetchedAt: now - PRICE_CACHE_TTL / 2 });
|
|
107
|
-
return fallback;
|
|
108
|
-
}
|
|
109
|
-
// Unknown tool — default to free rather than reject
|
|
110
|
-
this.cache.set(toolName, { price: '0.00', fetchedAt: now });
|
|
111
|
-
return '0.00';
|
|
112
|
-
}
|
|
113
|
-
seedDefaults() {
|
|
114
|
-
const now = Date.now();
|
|
115
|
-
for (const [tool, price] of Object.entries(BASE_PRICES)) {
|
|
116
|
-
if (!this.cache.has(tool)) {
|
|
117
|
-
this.cache.set(tool, { price, fetchedAt: now });
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
exports.PriceRegistry = PriceRegistry;
|
|
123
|
-
//# sourceMappingURL=pricing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../../src/server/registry/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const ToolACLSchema: z.ZodObject<{
|
|
3
|
-
toolName: z.ZodString;
|
|
4
|
-
walletAddress: z.ZodOptional<z.ZodString>;
|
|
5
|
-
creditScore: z.ZodOptional<z.ZodNumber>;
|
|
6
|
-
paidTier: z.ZodDefault<z.ZodBoolean>;
|
|
7
|
-
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
toolName: string;
|
|
9
|
-
paidTier: boolean;
|
|
10
|
-
walletAddress?: string | undefined;
|
|
11
|
-
creditScore?: number | undefined;
|
|
12
|
-
}, {
|
|
13
|
-
toolName: string;
|
|
14
|
-
walletAddress?: string | undefined;
|
|
15
|
-
creditScore?: number | undefined;
|
|
16
|
-
paidTier?: boolean | undefined;
|
|
17
|
-
}>;
|
|
18
|
-
export type ToolACL = z.infer<typeof ToolACLSchema>;
|
|
19
|
-
export declare class ACL {
|
|
20
|
-
private static instance;
|
|
21
|
-
private constructor();
|
|
22
|
-
static getInstance(): ACL;
|
|
23
|
-
isFree(toolName: string): boolean;
|
|
24
|
-
requiresPayment(toolName: string): boolean;
|
|
25
|
-
requiresAP2(toolName: string): boolean;
|
|
26
|
-
minCreditScore(_toolName: string): number;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=acl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../../../src/server/security/acl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAIpD,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAM;IAE7B,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,GAAG;IAOzB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI1C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKtC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAG1C"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ACL = exports.ToolACLSchema = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
exports.ToolACLSchema = zod_1.z.object({
|
|
6
|
-
toolName: zod_1.z.string(),
|
|
7
|
-
walletAddress: zod_1.z.string().optional(),
|
|
8
|
-
creditScore: zod_1.z.number().optional(),
|
|
9
|
-
paidTier: zod_1.z.boolean().default(false),
|
|
10
|
-
});
|
|
11
|
-
const FREE_TOOLS = new Set(['ftd_threshold_scan_alerts', 'nexus_agent_hire_query']);
|
|
12
|
-
class ACL {
|
|
13
|
-
static instance;
|
|
14
|
-
constructor() { }
|
|
15
|
-
static getInstance() {
|
|
16
|
-
if (!ACL.instance) {
|
|
17
|
-
ACL.instance = new ACL();
|
|
18
|
-
}
|
|
19
|
-
return ACL.instance;
|
|
20
|
-
}
|
|
21
|
-
isFree(toolName) {
|
|
22
|
-
return FREE_TOOLS.has(toolName);
|
|
23
|
-
}
|
|
24
|
-
requiresPayment(toolName) {
|
|
25
|
-
return !this.isFree(toolName);
|
|
26
|
-
}
|
|
27
|
-
requiresAP2(toolName) {
|
|
28
|
-
// leviathan, xmit, xdeo require AP2 per spec
|
|
29
|
-
return ['leviathan_signal', 'xmit_edgar_decode', 'xdeo_earnings_estimate'].includes(toolName);
|
|
30
|
-
}
|
|
31
|
-
minCreditScore(_toolName) {
|
|
32
|
-
return 300;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.ACL = ACL;
|
|
36
|
-
//# sourceMappingURL=acl.js.map
|