@scriptmasterlabs/mcp-x402 2.0.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.
- package/.env.example +35 -0
- package/.github/workflows/ci.yml +59 -0
- package/.github/workflows/keepalive.yml +31 -0
- package/.well-known/agentcard.json +34 -0
- package/CONTRIBUTING.md +76 -0
- package/Dockerfile +19 -0
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/agents.json +67 -0
- package/dist/lib/chains/base.d.ts +10 -0
- package/dist/lib/chains/base.d.ts.map +1 -0
- package/dist/lib/chains/base.js +73 -0
- package/dist/lib/chains/base.js.map +1 -0
- package/dist/lib/chains/solana.d.ts +10 -0
- package/dist/lib/chains/solana.d.ts.map +1 -0
- package/dist/lib/chains/solana.js +49 -0
- package/dist/lib/chains/solana.js.map +1 -0
- package/dist/lib/chains/xrpl.d.ts +10 -0
- package/dist/lib/chains/xrpl.d.ts.map +1 -0
- package/dist/lib/chains/xrpl.js +55 -0
- package/dist/lib/chains/xrpl.js.map +1 -0
- package/dist/lib/credit/bureau.d.ts +10 -0
- package/dist/lib/credit/bureau.d.ts.map +1 -0
- package/dist/lib/credit/bureau.js +58 -0
- package/dist/lib/credit/bureau.js.map +1 -0
- package/dist/lib/sml-api/agentcard.d.ts +17 -0
- package/dist/lib/sml-api/agentcard.d.ts.map +1 -0
- package/dist/lib/sml-api/agentcard.js +30 -0
- package/dist/lib/sml-api/agentcard.js.map +1 -0
- package/dist/lib/sml-api/backtest.d.ts +22 -0
- package/dist/lib/sml-api/backtest.d.ts.map +1 -0
- package/dist/lib/sml-api/backtest.js +28 -0
- package/dist/lib/sml-api/backtest.js.map +1 -0
- package/dist/lib/sml-api/brokers.d.ts +40 -0
- package/dist/lib/sml-api/brokers.d.ts.map +1 -0
- package/dist/lib/sml-api/brokers.js +128 -0
- package/dist/lib/sml-api/brokers.js.map +1 -0
- package/dist/lib/sml-api/copytrader.d.ts +11 -0
- package/dist/lib/sml-api/copytrader.d.ts.map +1 -0
- package/dist/lib/sml-api/copytrader.js +30 -0
- package/dist/lib/sml-api/copytrader.js.map +1 -0
- package/dist/lib/sml-api/crawl.d.ts +20 -0
- package/dist/lib/sml-api/crawl.d.ts.map +1 -0
- package/dist/lib/sml-api/crawl.js +32 -0
- package/dist/lib/sml-api/crawl.js.map +1 -0
- package/dist/lib/sml-api/echo.d.ts +10 -0
- package/dist/lib/sml-api/echo.d.ts.map +1 -0
- package/dist/lib/sml-api/echo.js +23 -0
- package/dist/lib/sml-api/echo.js.map +1 -0
- package/dist/lib/sml-api/forge.d.ts +11 -0
- package/dist/lib/sml-api/forge.d.ts.map +1 -0
- package/dist/lib/sml-api/forge.js +29 -0
- package/dist/lib/sml-api/forge.js.map +1 -0
- package/dist/lib/sml-api/ftd.d.ts +18 -0
- package/dist/lib/sml-api/ftd.d.ts.map +1 -0
- package/dist/lib/sml-api/ftd.js +43 -0
- package/dist/lib/sml-api/ftd.js.map +1 -0
- package/dist/lib/sml-api/ghost.d.ts +13 -0
- package/dist/lib/sml-api/ghost.d.ts.map +1 -0
- package/dist/lib/sml-api/ghost.js +29 -0
- package/dist/lib/sml-api/ghost.js.map +1 -0
- package/dist/lib/sml-api/launchpad.d.ts +20 -0
- package/dist/lib/sml-api/launchpad.d.ts.map +1 -0
- package/dist/lib/sml-api/launchpad.js +31 -0
- package/dist/lib/sml-api/launchpad.js.map +1 -0
- package/dist/lib/sml-api/leviathan.d.ts +22 -0
- package/dist/lib/sml-api/leviathan.d.ts.map +1 -0
- package/dist/lib/sml-api/leviathan.js +33 -0
- package/dist/lib/sml-api/leviathan.js.map +1 -0
- package/dist/lib/sml-api/nexus.d.ts +18 -0
- package/dist/lib/sml-api/nexus.d.ts.map +1 -0
- package/dist/lib/sml-api/nexus.js +40 -0
- package/dist/lib/sml-api/nexus.js.map +1 -0
- package/dist/lib/sml-api/proof402.d.ts +6 -0
- package/dist/lib/sml-api/proof402.d.ts.map +1 -0
- package/dist/lib/sml-api/proof402.js +30 -0
- package/dist/lib/sml-api/proof402.js.map +1 -0
- package/dist/lib/sml-api/rails.d.ts +12 -0
- package/dist/lib/sml-api/rails.d.ts.map +1 -0
- package/dist/lib/sml-api/rails.js +29 -0
- package/dist/lib/sml-api/rails.js.map +1 -0
- package/dist/lib/sml-api/shadow.d.ts +15 -0
- package/dist/lib/sml-api/shadow.d.ts.map +1 -0
- package/dist/lib/sml-api/shadow.js +27 -0
- package/dist/lib/sml-api/shadow.js.map +1 -0
- package/dist/lib/sml-api/squeezeos.d.ts +21 -0
- package/dist/lib/sml-api/squeezeos.d.ts.map +1 -0
- package/dist/lib/sml-api/squeezeos.js +97 -0
- package/dist/lib/sml-api/squeezeos.js.map +1 -0
- package/dist/lib/sml-api/xdeo.d.ts +13 -0
- package/dist/lib/sml-api/xdeo.d.ts.map +1 -0
- package/dist/lib/sml-api/xdeo.js +34 -0
- package/dist/lib/sml-api/xdeo.js.map +1 -0
- package/dist/lib/sml-api/xmit.d.ts +13 -0
- package/dist/lib/sml-api/xmit.d.ts.map +1 -0
- package/dist/lib/sml-api/xmit.js +34 -0
- package/dist/lib/sml-api/xmit.js.map +1 -0
- package/dist/server/health.d.ts +16 -0
- package/dist/server/health.d.ts.map +1 -0
- package/dist/server/health.js +39 -0
- package/dist/server/health.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +193 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/payments/ap2.d.ts +17 -0
- package/dist/server/payments/ap2.d.ts.map +1 -0
- package/dist/server/payments/ap2.js +75 -0
- package/dist/server/payments/ap2.js.map +1 -0
- package/dist/server/payments/receipt.d.ts +28 -0
- package/dist/server/payments/receipt.d.ts.map +1 -0
- package/dist/server/payments/receipt.js +60 -0
- package/dist/server/payments/receipt.js.map +1 -0
- package/dist/server/payments/router.d.ts +23 -0
- package/dist/server/payments/router.d.ts.map +1 -0
- package/dist/server/payments/router.js +69 -0
- package/dist/server/payments/router.js.map +1 -0
- package/dist/server/payments/wallet.d.ts +18 -0
- package/dist/server/payments/wallet.d.ts.map +1 -0
- package/dist/server/payments/wallet.js +107 -0
- package/dist/server/payments/wallet.js.map +1 -0
- package/dist/server/payments/x402.d.ts +29 -0
- package/dist/server/payments/x402.d.ts.map +1 -0
- package/dist/server/payments/x402.js +122 -0
- package/dist/server/payments/x402.js.map +1 -0
- package/dist/server/registry/catalog.d.ts +12 -0
- package/dist/server/registry/catalog.d.ts.map +1 -0
- package/dist/server/registry/catalog.js +55 -0
- package/dist/server/registry/catalog.js.map +1 -0
- package/dist/server/registry/discovery.d.ts +16 -0
- package/dist/server/registry/discovery.d.ts.map +1 -0
- package/dist/server/registry/discovery.js +33 -0
- package/dist/server/registry/discovery.js.map +1 -0
- package/dist/server/registry/pricing.d.ts +10 -0
- package/dist/server/registry/pricing.d.ts.map +1 -0
- package/dist/server/registry/pricing.js +66 -0
- package/dist/server/registry/pricing.js.map +1 -0
- package/dist/server/security/acl.d.ts +28 -0
- package/dist/server/security/acl.d.ts.map +1 -0
- package/dist/server/security/acl.js +36 -0
- package/dist/server/security/acl.js.map +1 -0
- package/dist/server/security/audit.d.ts +15 -0
- package/dist/server/security/audit.d.ts.map +1 -0
- package/dist/server/security/audit.js +77 -0
- package/dist/server/security/audit.js.map +1 -0
- package/dist/server/security/rate-limit.d.ts +12 -0
- package/dist/server/security/rate-limit.d.ts.map +1 -0
- package/dist/server/security/rate-limit.js +72 -0
- package/dist/server/security/rate-limit.js.map +1 -0
- package/dist/server/security/sandbox.d.ts +7 -0
- package/dist/server/security/sandbox.d.ts.map +1 -0
- package/dist/server/security/sandbox.js +42 -0
- package/dist/server/security/sandbox.js.map +1 -0
- package/dist/server/tools/agentcard.d.ts +3 -0
- package/dist/server/tools/agentcard.d.ts.map +1 -0
- package/dist/server/tools/agentcard.js +118 -0
- package/dist/server/tools/agentcard.js.map +1 -0
- package/dist/server/tools/backtest.d.ts +3 -0
- package/dist/server/tools/backtest.d.ts.map +1 -0
- package/dist/server/tools/backtest.js +112 -0
- package/dist/server/tools/backtest.js.map +1 -0
- package/dist/server/tools/brokers.d.ts +3 -0
- package/dist/server/tools/brokers.d.ts.map +1 -0
- package/dist/server/tools/brokers.js +223 -0
- package/dist/server/tools/brokers.js.map +1 -0
- package/dist/server/tools/copytrader.d.ts +3 -0
- package/dist/server/tools/copytrader.d.ts.map +1 -0
- package/dist/server/tools/copytrader.js +90 -0
- package/dist/server/tools/copytrader.js.map +1 -0
- package/dist/server/tools/crawl.d.ts +3 -0
- package/dist/server/tools/crawl.d.ts.map +1 -0
- package/dist/server/tools/crawl.js +60 -0
- package/dist/server/tools/crawl.js.map +1 -0
- package/dist/server/tools/discovery.d.ts +3 -0
- package/dist/server/tools/discovery.d.ts.map +1 -0
- package/dist/server/tools/discovery.js +188 -0
- package/dist/server/tools/discovery.js.map +1 -0
- package/dist/server/tools/echo.d.ts +3 -0
- package/dist/server/tools/echo.d.ts.map +1 -0
- package/dist/server/tools/echo.js +48 -0
- package/dist/server/tools/echo.js.map +1 -0
- package/dist/server/tools/forge.d.ts +3 -0
- package/dist/server/tools/forge.d.ts.map +1 -0
- package/dist/server/tools/forge.js +77 -0
- package/dist/server/tools/forge.js.map +1 -0
- package/dist/server/tools/ftd.d.ts +3 -0
- package/dist/server/tools/ftd.d.ts.map +1 -0
- package/dist/server/tools/ftd.js +70 -0
- package/dist/server/tools/ftd.js.map +1 -0
- package/dist/server/tools/ghost.d.ts +3 -0
- package/dist/server/tools/ghost.d.ts.map +1 -0
- package/dist/server/tools/ghost.js +83 -0
- package/dist/server/tools/ghost.js.map +1 -0
- package/dist/server/tools/index.d.ts +3 -0
- package/dist/server/tools/index.d.ts.map +1 -0
- package/dist/server/tools/index.js +44 -0
- package/dist/server/tools/index.js.map +1 -0
- package/dist/server/tools/launchpad.d.ts +3 -0
- package/dist/server/tools/launchpad.d.ts.map +1 -0
- package/dist/server/tools/launchpad.js +151 -0
- package/dist/server/tools/launchpad.js.map +1 -0
- package/dist/server/tools/leviathan.d.ts +3 -0
- package/dist/server/tools/leviathan.d.ts.map +1 -0
- package/dist/server/tools/leviathan.js +73 -0
- package/dist/server/tools/leviathan.js.map +1 -0
- package/dist/server/tools/nexus.d.ts +3 -0
- package/dist/server/tools/nexus.d.ts.map +1 -0
- package/dist/server/tools/nexus.js +65 -0
- package/dist/server/tools/nexus.js.map +1 -0
- package/dist/server/tools/proof402.d.ts +3 -0
- package/dist/server/tools/proof402.d.ts.map +1 -0
- package/dist/server/tools/proof402.js +74 -0
- package/dist/server/tools/proof402.js.map +1 -0
- package/dist/server/tools/rails.d.ts +3 -0
- package/dist/server/tools/rails.d.ts.map +1 -0
- package/dist/server/tools/rails.js +82 -0
- package/dist/server/tools/rails.js.map +1 -0
- package/dist/server/tools/shadow.d.ts +3 -0
- package/dist/server/tools/shadow.d.ts.map +1 -0
- package/dist/server/tools/shadow.js +114 -0
- package/dist/server/tools/shadow.js.map +1 -0
- package/dist/server/tools/squeezeos.d.ts +3 -0
- package/dist/server/tools/squeezeos.d.ts.map +1 -0
- package/dist/server/tools/squeezeos.js +231 -0
- package/dist/server/tools/squeezeos.js.map +1 -0
- package/dist/server/tools/xdeo.d.ts +3 -0
- package/dist/server/tools/xdeo.d.ts.map +1 -0
- package/dist/server/tools/xdeo.js +58 -0
- package/dist/server/tools/xdeo.js.map +1 -0
- package/dist/server/tools/xmit.d.ts +3 -0
- package/dist/server/tools/xmit.d.ts.map +1 -0
- package/dist/server/tools/xmit.js +59 -0
- package/dist/server/tools/xmit.js.map +1 -0
- package/docker-compose.yml +50 -0
- package/llms.txt +70 -0
- package/package.json +77 -0
- package/render.yaml +39 -0
- package/sdk/mcp-x402-sdk/package.json +18 -0
- package/sdk/mcp-x402-sdk/src/index.ts +118 -0
- package/sdk/mcp-x402-sdk/tsconfig.json +14 -0
- package/server.json +60 -0
- package/services/backtest_service.py +176 -0
- package/src/lib/chains/base.ts +77 -0
- package/src/lib/chains/solana.ts +59 -0
- package/src/lib/chains/xrpl.ts +63 -0
- package/src/lib/credit/bureau.ts +65 -0
- package/src/lib/sml-api/agentcard.ts +40 -0
- package/src/lib/sml-api/backtest.ts +47 -0
- package/src/lib/sml-api/brokers.ts +160 -0
- package/src/lib/sml-api/copytrader.ts +33 -0
- package/src/lib/sml-api/crawl.ts +44 -0
- package/src/lib/sml-api/echo.ts +28 -0
- package/src/lib/sml-api/forge.ts +33 -0
- package/src/lib/sml-api/ftd.ts +53 -0
- package/src/lib/sml-api/ghost.ts +35 -0
- package/src/lib/sml-api/launchpad.ts +43 -0
- package/src/lib/sml-api/leviathan.ts +49 -0
- package/src/lib/sml-api/nexus.ts +50 -0
- package/src/lib/sml-api/proof402.ts +27 -0
- package/src/lib/sml-api/rails.ts +34 -0
- package/src/lib/sml-api/shadow.ts +35 -0
- package/src/lib/sml-api/squeezeos.ts +95 -0
- package/src/lib/sml-api/xdeo.ts +40 -0
- package/src/lib/sml-api/xmit.ts +40 -0
- package/src/server/health.ts +52 -0
- package/src/server/index.ts +206 -0
- package/src/server/payments/ap2.ts +99 -0
- package/src/server/payments/receipt.ts +85 -0
- package/src/server/payments/router.ts +110 -0
- package/src/server/payments/wallet.ts +123 -0
- package/src/server/payments/x402.ts +162 -0
- package/src/server/registry/catalog.ts +61 -0
- package/src/server/registry/discovery.ts +39 -0
- package/src/server/registry/pricing.ts +76 -0
- package/src/server/security/acl.ts +42 -0
- package/src/server/security/audit.ts +94 -0
- package/src/server/security/rate-limit.ts +84 -0
- package/src/server/security/sandbox.ts +40 -0
- package/src/server/tools/agentcard.ts +134 -0
- package/src/server/tools/backtest.ts +119 -0
- package/src/server/tools/brokers.ts +250 -0
- package/src/server/tools/copytrader.ts +104 -0
- package/src/server/tools/crawl.ts +70 -0
- package/src/server/tools/discovery.ts +202 -0
- package/src/server/tools/echo.ts +58 -0
- package/src/server/tools/forge.ts +87 -0
- package/src/server/tools/ftd.ts +88 -0
- package/src/server/tools/ghost.ts +93 -0
- package/src/server/tools/index.ts +42 -0
- package/src/server/tools/launchpad.ts +173 -0
- package/src/server/tools/leviathan.ts +81 -0
- package/src/server/tools/nexus.ts +76 -0
- package/src/server/tools/proof402.ts +87 -0
- package/src/server/tools/rails.ts +92 -0
- package/src/server/tools/shadow.ts +128 -0
- package/src/server/tools/squeezeos.ts +312 -0
- package/src/server/tools/xdeo.ts +67 -0
- package/src/server/tools/xmit.ts +68 -0
- package/tests/integration/e2e.test.ts +51 -0
- package/tests/unit/payments.test.ts +49 -0
- package/tests/unit/security.test.ts +92 -0
- package/tests/unit/tools.test.ts +42 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +20 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ShadowQueryParams {
|
|
2
|
+
query: string;
|
|
3
|
+
context?: string;
|
|
4
|
+
walletAddress: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ShadowIngestParams {
|
|
7
|
+
source: string;
|
|
8
|
+
payload: unknown;
|
|
9
|
+
walletAddress: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ShadowDeskAPI: {
|
|
12
|
+
query: (params: ShadowQueryParams) => Promise<unknown>;
|
|
13
|
+
ingest: (params: ShadowIngestParams) => Promise<unknown>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=shadow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/shadow.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,aAAa;oBACR,iBAAiB;qBAChB,kBAAkB;CACpC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShadowDeskAPI = void 0;
|
|
4
|
+
const SHADOW_BASE = process.env['SHADOW_DESK_URL'] ?? 'https://shadow-desk.onrender.com';
|
|
5
|
+
const SHADOW_ADMIN_KEY = process.env['SHADOW_ADMIN_API_KEY'] ?? '';
|
|
6
|
+
async function shadowPost(path, body) {
|
|
7
|
+
const headers = {
|
|
8
|
+
'Accept': 'application/json',
|
|
9
|
+
'Content-Type': 'application/json',
|
|
10
|
+
};
|
|
11
|
+
if (SHADOW_ADMIN_KEY)
|
|
12
|
+
headers['X-Admin-Key'] = SHADOW_ADMIN_KEY;
|
|
13
|
+
const res = await fetch(`${SHADOW_BASE}${path}`, {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
headers,
|
|
16
|
+
body: JSON.stringify(body),
|
|
17
|
+
signal: AbortSignal.timeout(15_000),
|
|
18
|
+
});
|
|
19
|
+
if (!res.ok)
|
|
20
|
+
throw new Error(`Shadow Desk POST ${path}: HTTP ${res.status}`);
|
|
21
|
+
return res.json();
|
|
22
|
+
}
|
|
23
|
+
exports.ShadowDeskAPI = {
|
|
24
|
+
query: (params) => shadowPost('/query', params),
|
|
25
|
+
ingest: (params) => shadowPost('/ingest', params),
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/lib/sml-api/shadow.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,kCAAkC,CAAC;AACzF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AAEnE,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACnD,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,gBAAgB;QAAE,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAcY,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClE,MAAM,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;CACtE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a SqueezeOS JWT for a premium endpoint.
|
|
3
|
+
* Format: base64(json).HMAC-SHA256(secret, encoded)
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateSqueezeOSToken(endpointKey: string, walletAddress: string): string;
|
|
6
|
+
export declare const SqueezeOSAPI: {
|
|
7
|
+
preview: (symbol: string) => Promise<unknown>;
|
|
8
|
+
history: (symbol?: string) => Promise<unknown>;
|
|
9
|
+
oracle: (symbol?: string) => Promise<unknown>;
|
|
10
|
+
ftd: () => Promise<unknown>;
|
|
11
|
+
status: () => Promise<unknown>;
|
|
12
|
+
demo: () => Promise<unknown>;
|
|
13
|
+
marketplaceBrowse: () => Promise<unknown>;
|
|
14
|
+
futuresLeaderboard: () => Promise<unknown>;
|
|
15
|
+
council: (symbol: string, walletAddress: string) => Promise<unknown>;
|
|
16
|
+
scan: (walletAddress: string) => Promise<unknown>;
|
|
17
|
+
options: (walletAddress: string) => Promise<unknown>;
|
|
18
|
+
iwm: (walletAddress: string) => Promise<unknown>;
|
|
19
|
+
marketplaceRead: (listingId: string, walletAddress: string) => Promise<unknown>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=squeezeos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"squeezeos.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/squeezeos.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAezF;AA6BD,eAAO,MAAM,YAAY;sBAEL,MAAM;uBACL,MAAM;sBACP,MAAM;;;;;;sBAQN,MAAM,iBAAiB,MAAM;0BAIzB,MAAM;6BAIH,MAAM;yBAIV,MAAM;iCAIE,MAAM,iBAAiB,MAAM;CAI3D,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqueezeOSAPI = void 0;
|
|
4
|
+
exports.generateSqueezeOSToken = generateSqueezeOSToken;
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const SQUEEZEOS_BASE = process.env['SQUEEZEOS_BASE_URL'] ?? 'https://squeezeos-api.onrender.com';
|
|
7
|
+
const PROOF402_SECRET = process.env['PROOF402_TOKEN_SECRET'] ?? '';
|
|
8
|
+
// Endpoint UUIDs — override via env vars if they change
|
|
9
|
+
const ENDPOINT_UUIDS = {
|
|
10
|
+
council: process.env['SQUEEZEOS_UUID_COUNCIL'] ?? '12a0e7a1-0000-0000-0000-000000000001',
|
|
11
|
+
scan: process.env['SQUEEZEOS_UUID_SCAN'] ?? '160cf28d-0000-0000-0000-000000000002',
|
|
12
|
+
options: process.env['SQUEEZEOS_UUID_OPTIONS'] ?? 'c951a374-0000-0000-0000-000000000003',
|
|
13
|
+
iwm: process.env['SQUEEZEOS_UUID_IWM'] ?? '60f48ce0-0000-0000-0000-000000000004',
|
|
14
|
+
marketplace_read: process.env['SQUEEZEOS_UUID_MARKETPLACE_READ'] ?? 'd1a2b3c4-0000-0000-0000-000000000005',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Generate a SqueezeOS JWT for a premium endpoint.
|
|
18
|
+
* Format: base64(json).HMAC-SHA256(secret, encoded)
|
|
19
|
+
*/
|
|
20
|
+
function generateSqueezeOSToken(endpointKey, walletAddress) {
|
|
21
|
+
const eid = ENDPOINT_UUIDS[endpointKey];
|
|
22
|
+
if (!eid)
|
|
23
|
+
throw new Error(`Unknown SqueezeOS endpoint key: ${endpointKey}`);
|
|
24
|
+
if (!PROOF402_SECRET)
|
|
25
|
+
throw new Error('PROOF402_TOKEN_SECRET is not set — cannot mint SqueezeOS JWT');
|
|
26
|
+
const payload = {
|
|
27
|
+
eid,
|
|
28
|
+
wlt: walletAddress,
|
|
29
|
+
iid: `mcp-x402-${Date.now()}`,
|
|
30
|
+
exp: Math.floor(Date.now() / 1000) + 3600, // 1 hour
|
|
31
|
+
};
|
|
32
|
+
const encoded = Buffer.from(JSON.stringify(payload)).toString('base64url');
|
|
33
|
+
const sig = (0, crypto_1.createHmac)('sha256', PROOF402_SECRET).update(encoded).digest('hex');
|
|
34
|
+
return `${encoded}.${sig}`;
|
|
35
|
+
}
|
|
36
|
+
async function squeezeGet(path, token) {
|
|
37
|
+
const headers = { 'Accept': 'application/json' };
|
|
38
|
+
if (token)
|
|
39
|
+
headers['X-Payment-Token'] = token;
|
|
40
|
+
const res = await fetch(`${SQUEEZEOS_BASE}${path}`, {
|
|
41
|
+
headers,
|
|
42
|
+
signal: AbortSignal.timeout(15_000),
|
|
43
|
+
});
|
|
44
|
+
if (!res.ok)
|
|
45
|
+
throw new Error(`SqueezeOS GET ${path}: HTTP ${res.status}`);
|
|
46
|
+
return res.json();
|
|
47
|
+
}
|
|
48
|
+
async function squeezePost(path, body, token) {
|
|
49
|
+
const headers = {
|
|
50
|
+
'Accept': 'application/json',
|
|
51
|
+
'Content-Type': 'application/json',
|
|
52
|
+
};
|
|
53
|
+
if (token)
|
|
54
|
+
headers['X-Payment-Token'] = token;
|
|
55
|
+
const res = await fetch(`${SQUEEZEOS_BASE}${path}`, {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers,
|
|
58
|
+
body: JSON.stringify(body),
|
|
59
|
+
signal: AbortSignal.timeout(15_000),
|
|
60
|
+
});
|
|
61
|
+
if (!res.ok)
|
|
62
|
+
throw new Error(`SqueezeOS POST ${path}: HTTP ${res.status}`);
|
|
63
|
+
return res.json();
|
|
64
|
+
}
|
|
65
|
+
exports.SqueezeOSAPI = {
|
|
66
|
+
// FREE
|
|
67
|
+
preview: (symbol) => squeezeGet(`/api/preview/${encodeURIComponent(symbol)}`),
|
|
68
|
+
history: (symbol) => squeezeGet(symbol ? `/api/history/${encodeURIComponent(symbol)}` : '/api/history'),
|
|
69
|
+
oracle: (symbol) => squeezeGet(symbol ? `/api/oracle/${encodeURIComponent(symbol)}` : '/api/oracle'),
|
|
70
|
+
ftd: () => squeezeGet('/api/ftd'),
|
|
71
|
+
status: () => squeezeGet('/api/status'),
|
|
72
|
+
demo: () => squeezeGet('/api/demo'),
|
|
73
|
+
marketplaceBrowse: () => squeezeGet('/api/marketplace'),
|
|
74
|
+
futuresLeaderboard: () => squeezeGet('/api/futures/leaderboard'),
|
|
75
|
+
// PAID — caller must supply walletAddress so we can mint the token
|
|
76
|
+
council: (symbol, walletAddress) => {
|
|
77
|
+
const token = generateSqueezeOSToken('council', walletAddress);
|
|
78
|
+
return squeezePost('/api/council', { symbol }, token);
|
|
79
|
+
},
|
|
80
|
+
scan: (walletAddress) => {
|
|
81
|
+
const token = generateSqueezeOSToken('scan', walletAddress);
|
|
82
|
+
return squeezeGet('/api/scan', token);
|
|
83
|
+
},
|
|
84
|
+
options: (walletAddress) => {
|
|
85
|
+
const token = generateSqueezeOSToken('options', walletAddress);
|
|
86
|
+
return squeezeGet('/api/options', token);
|
|
87
|
+
},
|
|
88
|
+
iwm: (walletAddress) => {
|
|
89
|
+
const token = generateSqueezeOSToken('iwm', walletAddress);
|
|
90
|
+
return squeezeGet('/api/iwm', token);
|
|
91
|
+
},
|
|
92
|
+
marketplaceRead: (listingId, walletAddress) => {
|
|
93
|
+
const token = generateSqueezeOSToken('marketplace_read', walletAddress);
|
|
94
|
+
return squeezePost('/api/marketplace/read', { listing_id: listingId }, token);
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=squeezeos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"squeezeos.js","sourceRoot":"","sources":["../../../src/lib/sml-api/squeezeos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface XdeoEstimateParams {
|
|
2
|
+
ticker: string;
|
|
3
|
+
fiscalQuarter: string;
|
|
4
|
+
estimateType: 'eps' | 'revenue' | 'guidance' | 'all';
|
|
5
|
+
}
|
|
6
|
+
export declare class XdeoClient {
|
|
7
|
+
private static instance;
|
|
8
|
+
private readonly baseUrl;
|
|
9
|
+
private constructor();
|
|
10
|
+
static getInstance(): XdeoClient;
|
|
11
|
+
getEstimate(params: XdeoEstimateParams): Promise<unknown>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=xdeo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdeo.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/xdeo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;CACtD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,UAAU;IAO1B,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBhE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XdeoClient = void 0;
|
|
4
|
+
class XdeoClient {
|
|
5
|
+
static instance;
|
|
6
|
+
baseUrl;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.baseUrl = process.env['SML_API_BASE'] ?? 'https://api.scriptmasterlabs.com';
|
|
9
|
+
}
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!XdeoClient.instance) {
|
|
12
|
+
XdeoClient.instance = new XdeoClient();
|
|
13
|
+
}
|
|
14
|
+
return XdeoClient.instance;
|
|
15
|
+
}
|
|
16
|
+
async getEstimate(params) {
|
|
17
|
+
const res = await fetch(`${this.baseUrl}/xdeo/v1/estimate`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: { 'Content-Type': 'application/json' },
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
ticker: params.ticker,
|
|
22
|
+
fiscal_quarter: params.fiscalQuarter,
|
|
23
|
+
estimate_type: params.estimateType,
|
|
24
|
+
}),
|
|
25
|
+
signal: AbortSignal.timeout(10_000),
|
|
26
|
+
});
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
throw new Error(`xDEO API error: HTTP ${res.status}`);
|
|
29
|
+
}
|
|
30
|
+
return res.json();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.XdeoClient = XdeoClient;
|
|
34
|
+
//# sourceMappingURL=xdeo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdeo.js","sourceRoot":"","sources":["../../../src/lib/sml-api/xdeo.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IACnB,OAAO,CAAS;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kCAAkC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA0B;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,aAAa,EAAE,MAAM,CAAC,YAAY;aACnC,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF;AAjCD,gCAiCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface XmitDecodeParams {
|
|
2
|
+
filingUrl: string;
|
|
3
|
+
parseTarget: 'executive_pay' | 'holdings' | 'ownership_changes' | 'all';
|
|
4
|
+
format: 'json' | 'markdown';
|
|
5
|
+
}
|
|
6
|
+
export declare class XmitClient {
|
|
7
|
+
private static instance;
|
|
8
|
+
private readonly baseUrl;
|
|
9
|
+
private constructor();
|
|
10
|
+
static getInstance(): XmitClient;
|
|
11
|
+
decode(params: XmitDecodeParams): Promise<unknown>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=xmit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xmit.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/xmit.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,GAAG,UAAU,GAAG,mBAAmB,GAAG,KAAK,CAAC;IACxE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,UAAU;IAO1B,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBzD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XmitClient = void 0;
|
|
4
|
+
class XmitClient {
|
|
5
|
+
static instance;
|
|
6
|
+
baseUrl;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.baseUrl = process.env['SML_API_BASE'] ?? 'https://api.scriptmasterlabs.com';
|
|
9
|
+
}
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!XmitClient.instance) {
|
|
12
|
+
XmitClient.instance = new XmitClient();
|
|
13
|
+
}
|
|
14
|
+
return XmitClient.instance;
|
|
15
|
+
}
|
|
16
|
+
async decode(params) {
|
|
17
|
+
const res = await fetch(`${this.baseUrl}/xmit/v1/decode`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: { 'Content-Type': 'application/json' },
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
filing_url: params.filingUrl,
|
|
22
|
+
parse_target: params.parseTarget,
|
|
23
|
+
format: params.format,
|
|
24
|
+
}),
|
|
25
|
+
signal: AbortSignal.timeout(30_000),
|
|
26
|
+
});
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
throw new Error(`xMIT API error: HTTP ${res.status}`);
|
|
29
|
+
}
|
|
30
|
+
return res.json();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.XmitClient = XmitClient;
|
|
34
|
+
//# sourceMappingURL=xmit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xmit.js","sourceRoot":"","sources":["../../../src/lib/sml-api/xmit.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IACnB,OAAO,CAAS;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kCAAkC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAwB;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF;AAjCD,gCAiCC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
export interface HealthStatus {
|
|
3
|
+
status: 'ok' | 'degraded';
|
|
4
|
+
version: string;
|
|
5
|
+
transport: string;
|
|
6
|
+
uptime_seconds: number;
|
|
7
|
+
uptime_human: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
checks: {
|
|
10
|
+
process: 'ok';
|
|
11
|
+
memory_mb: number;
|
|
12
|
+
memory_ok: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function healthHandler(_req: Request, res: Response): void;
|
|
16
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,OAAO,EAAE,IAAI,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAaD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsBhE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.healthHandler = healthHandler;
|
|
4
|
+
const startTime = Date.now();
|
|
5
|
+
function formatUptime(ms) {
|
|
6
|
+
const s = Math.floor(ms / 1000);
|
|
7
|
+
const m = Math.floor(s / 60);
|
|
8
|
+
const h = Math.floor(m / 60);
|
|
9
|
+
const d = Math.floor(h / 24);
|
|
10
|
+
if (d > 0)
|
|
11
|
+
return `${d}d ${h % 24}h ${m % 60}m`;
|
|
12
|
+
if (h > 0)
|
|
13
|
+
return `${h}h ${m % 60}m ${s % 60}s`;
|
|
14
|
+
if (m > 0)
|
|
15
|
+
return `${m}m ${s % 60}s`;
|
|
16
|
+
return `${s}s`;
|
|
17
|
+
}
|
|
18
|
+
function healthHandler(_req, res) {
|
|
19
|
+
const uptimeMs = Date.now() - startTime;
|
|
20
|
+
const memMb = Math.round(process.memoryUsage().rss / 1024 / 1024);
|
|
21
|
+
const memOk = memMb < 450; // warn if approaching 512MB container limit
|
|
22
|
+
const body = {
|
|
23
|
+
status: memOk ? 'ok' : 'degraded',
|
|
24
|
+
version: process.env['npm_package_version'] ?? '1.0.0',
|
|
25
|
+
transport: process.env['MCP_TRANSPORT'] ?? 'stdio',
|
|
26
|
+
uptime_seconds: Math.floor(uptimeMs / 1000),
|
|
27
|
+
uptime_human: formatUptime(uptimeMs),
|
|
28
|
+
timestamp: new Date().toISOString(),
|
|
29
|
+
checks: {
|
|
30
|
+
process: 'ok',
|
|
31
|
+
memory_mb: memMb,
|
|
32
|
+
memory_ok: memOk,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
// Return 200 even if degraded — let the orchestrator decide.
|
|
36
|
+
// Only return 5xx if the process itself is fundamentally broken.
|
|
37
|
+
res.status(200).json(body);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":";;AA6BA,sCAsBC;AAjDD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAgB7B,SAAS,YAAY,CAAC,EAAU;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAa,EAAE,GAAa;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,4CAA4C;IAEvE,MAAM,IAAI,GAAiB;QACzB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;QACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,OAAO;QACtD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO;QAClD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3C,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC;QACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;IAEF,6DAA6D;IAC7D,iEAAiE;IACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
8
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
9
|
+
const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
|
|
10
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
11
|
+
const express_1 = __importDefault(require("express"));
|
|
12
|
+
const crypto_1 = require("crypto");
|
|
13
|
+
const cors_1 = __importDefault(require("cors"));
|
|
14
|
+
const index_js_1 = require("./tools/index.js");
|
|
15
|
+
const audit_js_1 = require("./security/audit.js");
|
|
16
|
+
const rate_limit_js_1 = require("./security/rate-limit.js");
|
|
17
|
+
const health_js_1 = require("./health.js");
|
|
18
|
+
const VERSION = '1.0.0';
|
|
19
|
+
async function createServer() {
|
|
20
|
+
const server = new mcp_js_1.McpServer({ name: 'mcp-x402', version: VERSION }, { capabilities: { tools: {} } });
|
|
21
|
+
await (0, index_js_1.registerTools)(server);
|
|
22
|
+
return server;
|
|
23
|
+
}
|
|
24
|
+
async function runStdio() {
|
|
25
|
+
const server = await createServer();
|
|
26
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
27
|
+
await server.connect(transport);
|
|
28
|
+
audit_js_1.AuditLogger.getInstance().info('server_start', { transport: 'stdio', version: VERSION });
|
|
29
|
+
const shutdown = async () => {
|
|
30
|
+
audit_js_1.AuditLogger.getInstance().info('server_stop', { transport: 'stdio' });
|
|
31
|
+
await server.close();
|
|
32
|
+
process.exit(0);
|
|
33
|
+
};
|
|
34
|
+
process.on('SIGINT', shutdown);
|
|
35
|
+
process.on('SIGTERM', shutdown);
|
|
36
|
+
// Keep stdio process alive
|
|
37
|
+
process.stdin.on('end', () => {
|
|
38
|
+
audit_js_1.AuditLogger.getInstance().warn('stdio_stdin_end', {});
|
|
39
|
+
process.exit(0);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async function runSSE() {
|
|
43
|
+
const app = (0, express_1.default)();
|
|
44
|
+
const port = parseInt(process.env['MCP_SSE_PORT'] ?? '3402', 10);
|
|
45
|
+
app.use((0, cors_1.default)({ origin: process.env['CORS_ORIGIN'] ?? '*' }));
|
|
46
|
+
app.use(express_1.default.json({ limit: '1mb' }));
|
|
47
|
+
// Health endpoint
|
|
48
|
+
app.get('/health', health_js_1.healthHandler);
|
|
49
|
+
app.get('/agents.json', (_req, res) => {
|
|
50
|
+
res.sendFile('agents.json', { root: process.cwd() });
|
|
51
|
+
});
|
|
52
|
+
app.get('/llms.txt', (_req, res) => {
|
|
53
|
+
res.sendFile('llms.txt', { root: process.cwd() });
|
|
54
|
+
});
|
|
55
|
+
app.get('/.well-known/agentcard.json', (_req, res) => {
|
|
56
|
+
res.sendFile('.well-known/agentcard.json', { root: process.cwd() });
|
|
57
|
+
});
|
|
58
|
+
// FIX: Root handler — was 404, now returns service discovery
|
|
59
|
+
app.get('/', (_req, res) => {
|
|
60
|
+
res.json({
|
|
61
|
+
name: 'mcp-x402',
|
|
62
|
+
version: VERSION,
|
|
63
|
+
description: 'The x402 Amazon — 43+ tools, pay-per-call via XRPL. scriptmasterlabs.com',
|
|
64
|
+
status: 'online',
|
|
65
|
+
transport: 'streamable-http + sse',
|
|
66
|
+
endpoints: {
|
|
67
|
+
mcp_streamable: 'POST /mcp',
|
|
68
|
+
sse_connect: 'GET /sse',
|
|
69
|
+
sse_messages: 'POST /messages',
|
|
70
|
+
health: 'GET /health',
|
|
71
|
+
agentCard: 'GET /.well-known/agentcard.json',
|
|
72
|
+
llms: 'GET /llms.txt',
|
|
73
|
+
},
|
|
74
|
+
links: {
|
|
75
|
+
github: 'https://github.com/Timwal78/SML_Portfolio/tree/main/mcp-x402',
|
|
76
|
+
homepage: 'https://scriptmasterlabs.com',
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
// Streamable HTTP transport — claude.ai web connectors
|
|
81
|
+
const streamableTransports = new Map();
|
|
82
|
+
app.post('/mcp', async (req, res) => {
|
|
83
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
84
|
+
let transport = sessionId ? streamableTransports.get(sessionId) : undefined;
|
|
85
|
+
if (!transport) {
|
|
86
|
+
const newSessionId = (0, crypto_1.randomUUID)();
|
|
87
|
+
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: () => newSessionId });
|
|
88
|
+
streamableTransports.set(newSessionId, transport);
|
|
89
|
+
transport.onclose = () => streamableTransports.delete(newSessionId);
|
|
90
|
+
const server = await createServer();
|
|
91
|
+
await server.connect(transport);
|
|
92
|
+
audit_js_1.AuditLogger.getInstance().info('mcp_connect', { sessionId: newSessionId });
|
|
93
|
+
}
|
|
94
|
+
await transport.handleRequest(req, res, req.body);
|
|
95
|
+
});
|
|
96
|
+
// FIX: GET /mcp with no session was 404, now returns service info
|
|
97
|
+
app.get('/mcp', async (req, res) => {
|
|
98
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
99
|
+
const transport = sessionId ? streamableTransports.get(sessionId) : undefined;
|
|
100
|
+
if (!transport) {
|
|
101
|
+
res.json({
|
|
102
|
+
name: 'mcp-x402',
|
|
103
|
+
version: VERSION,
|
|
104
|
+
protocol: 'MCP/streamable-http',
|
|
105
|
+
status: 'ready',
|
|
106
|
+
tools: '43+ tools available',
|
|
107
|
+
how_to_connect: 'POST /mcp with a JSON-RPC initialize request',
|
|
108
|
+
sse_alternative: 'GET /sse for legacy SSE transport',
|
|
109
|
+
health: '/health',
|
|
110
|
+
homepage: 'https://scriptmasterlabs.com',
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
await transport.handleRequest(req, res);
|
|
115
|
+
});
|
|
116
|
+
app.delete('/mcp', async (req, res) => {
|
|
117
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
118
|
+
const transport = sessionId ? streamableTransports.get(sessionId) : undefined;
|
|
119
|
+
if (!transport) {
|
|
120
|
+
res.status(404).json({ error: 'session_not_found' });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
await transport.handleRequest(req, res);
|
|
124
|
+
});
|
|
125
|
+
const transports = new Map();
|
|
126
|
+
const rateLimiter = rate_limit_js_1.RateLimiter.getInstance();
|
|
127
|
+
app.get('/sse', async (req, res) => {
|
|
128
|
+
const clientIp = req.ip ?? 'unknown';
|
|
129
|
+
if (!rateLimiter.checkIp(clientIp)) {
|
|
130
|
+
res.status(429).json({ error: 'rate_limit_exceeded', retry_after: 60 });
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const transport = new sse_js_1.SSEServerTransport('/messages', res);
|
|
134
|
+
const sessionId = transport.sessionId;
|
|
135
|
+
transports.set(sessionId, transport);
|
|
136
|
+
const server = await createServer();
|
|
137
|
+
await server.connect(transport);
|
|
138
|
+
audit_js_1.AuditLogger.getInstance().info('sse_connect', { sessionId, clientIp });
|
|
139
|
+
res.on('close', async () => {
|
|
140
|
+
transports.delete(sessionId);
|
|
141
|
+
audit_js_1.AuditLogger.getInstance().info('sse_disconnect', { sessionId });
|
|
142
|
+
await server.close();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
app.post('/messages', async (req, res) => {
|
|
146
|
+
const sessionId = req.query['sessionId'];
|
|
147
|
+
if (!sessionId) {
|
|
148
|
+
res.status(400).json({ error: 'missing_session_id' });
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const transport = transports.get(sessionId);
|
|
152
|
+
if (!transport) {
|
|
153
|
+
res.status(404).json({ error: 'session_not_found' });
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
await transport.handlePostMessage(req, res);
|
|
157
|
+
});
|
|
158
|
+
const httpServer = await new Promise((resolve) => {
|
|
159
|
+
const s = app.listen(port, () => resolve(s));
|
|
160
|
+
});
|
|
161
|
+
audit_js_1.AuditLogger.getInstance().info('server_start', { transport: 'sse', port, version: VERSION });
|
|
162
|
+
console.error(`[mcp-x402] listening on :${port} — health: http://localhost:${port}/health`);
|
|
163
|
+
const shutdown = async () => {
|
|
164
|
+
audit_js_1.AuditLogger.getInstance().info('server_stop', { transport: 'sse' });
|
|
165
|
+
for (const [id] of transports) {
|
|
166
|
+
audit_js_1.AuditLogger.getInstance().info('sse_force_close', { sessionId: id });
|
|
167
|
+
}
|
|
168
|
+
httpServer.close(() => process.exit(0));
|
|
169
|
+
setTimeout(() => process.exit(1), 10_000).unref();
|
|
170
|
+
};
|
|
171
|
+
process.on('SIGINT', shutdown);
|
|
172
|
+
process.on('SIGTERM', shutdown);
|
|
173
|
+
process.on('uncaughtException', (err) => {
|
|
174
|
+
audit_js_1.AuditLogger.getInstance().error('uncaught_exception', { error: String(err), stack: err.stack ?? '' });
|
|
175
|
+
});
|
|
176
|
+
process.on('unhandledRejection', (reason) => {
|
|
177
|
+
audit_js_1.AuditLogger.getInstance().error('unhandledRejection', { reason: String(reason) });
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
const transport = process.env['MCP_TRANSPORT'] ?? 'stdio';
|
|
181
|
+
if (transport === 'sse') {
|
|
182
|
+
runSSE().catch((err) => {
|
|
183
|
+
console.error('[mcp-x402] fatal:', err);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
runStdio().catch((err) => {
|
|
189
|
+
console.error('[mcp-x402] fatal:', err);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;;AACA,oEAAoE;AACpE,wEAAiF;AACjF,oEAA6E;AAC7E,0FAAmG;AACnG,sDAA8B;AAC9B,mCAAoC;AACpC,gDAAwB;AACxB,+CAAiD;AACjD,kDAAkD;AAClD,4DAAuD;AACvD,2CAA4C;AAE5C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAG,IAAI,kBAAS,CAC1B,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EACtC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IACF,MAAM,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzF,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACtE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,2BAA2B;IAC3B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3B,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAEjE,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAExC,kBAAkB;IAClB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,yBAAa,CAAC,CAAC;IAElC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnD,GAAG,CAAC,QAAQ,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,0EAA0E;YACvF,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE;gBACT,cAAc,EAAE,WAAW;gBAC3B,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,gBAAgB;gBAC9B,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,iCAAiC;gBAC5C,IAAI,EAAE,eAAe;aACtB;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,8DAA8D;gBACtE,QAAQ,EAAE,8BAA8B;aACzC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE9E,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,IAAA,mBAAU,GAAE,CAAC;YAClC,SAAS,GAAG,IAAI,iDAA6B,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1F,oBAAoB,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAClD,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YACpC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,qBAAqB;gBAC/B,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,qBAAqB;gBAC5B,cAAc,EAAE,8CAA8C;gBAC9D,eAAe,EAAE,mCAAmC;gBACpD,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,8BAA8B;aACzC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjF,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,GAAG,EAA8B,CAAC;IACzD,MAAM,WAAW,GAAG,2BAAW,CAAC,WAAW,EAAE,CAAC;IAE9C,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,2BAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACzB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7B,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAuB,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAClF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjF,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,CAClC,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,+BAA+B,IAAI,SAAS,CAAC,CAAC;IAE5F,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAC9B,sBAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,sBAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,sBAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC;AAC1D,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface MandateParams {
|
|
2
|
+
maxAmount: string;
|
|
3
|
+
currency: string;
|
|
4
|
+
toolName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class AP2Client {
|
|
7
|
+
private static instance;
|
|
8
|
+
private readonly baseUrl;
|
|
9
|
+
private constructor();
|
|
10
|
+
static getInstance(): AP2Client;
|
|
11
|
+
verifyMandate(wallet: string, params: MandateParams): Promise<boolean>;
|
|
12
|
+
createMandate(wallet: string, params: {
|
|
13
|
+
dailyCap: string;
|
|
14
|
+
currency: string;
|
|
15
|
+
}): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ap2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ap2.d.ts","sourceRoot":"","sources":["../../../src/server/payments/ap2.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IA8CtE,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,MAAM,CAAC;CAkBnB"}
|