agentcash 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/run-server.cjs +74 -50
- package/dist/esm/{chunk-LXLFCKRE.js → chunk-DZC5MTYY.js} +2 -2
- package/dist/esm/{chunk-LDXTW6MC.js → chunk-FM2E2QVT.js} +60 -36
- package/dist/esm/chunk-FM2E2QVT.js.map +1 -0
- package/dist/esm/{chunk-V5JYDONS.js → chunk-QCFNW6VN.js} +2 -2
- package/dist/esm/{chunk-NUYR6S4R.js → chunk-VVTMCXSK.js} +2 -2
- package/dist/esm/{commands-N2AA3RBV.js → commands-DE2RIAL5.js} +10 -10
- package/dist/esm/commands-DE2RIAL5.js.map +1 -0
- package/dist/esm/index.js +8 -8
- package/dist/esm/{install-DSGWSVXN.js → install-Q4KN5XCP.js} +2 -2
- package/dist/esm/lib.d.ts +4 -2
- package/dist/esm/lib.js +3 -3
- package/dist/esm/{server-SCEZADBF.js → server-WCNK52XR.js} +11 -11
- package/dist/esm/server-WCNK52XR.js.map +1 -0
- package/dist/esm/shared/operations/index.js +3 -3
- package/package.json +2 -2
- package/dist/esm/chunk-LDXTW6MC.js.map +0 -1
- package/dist/esm/commands-N2AA3RBV.js.map +0 -1
- package/dist/esm/server-SCEZADBF.js.map +0 -1
- /package/dist/esm/{chunk-LXLFCKRE.js.map → chunk-DZC5MTYY.js.map} +0 -0
- /package/dist/esm/{chunk-V5JYDONS.js.map → chunk-QCFNW6VN.js.map} +0 -0
- /package/dist/esm/{chunk-NUYR6S4R.js.map → chunk-VVTMCXSK.js.map} +0 -0
- /package/dist/esm/{install-DSGWSVXN.js.map → install-Q4KN5XCP.js.map} +0 -0
package/dist/cjs/run-server.cjs
CHANGED
|
@@ -94982,10 +94982,10 @@ init_formatUnits();
|
|
|
94982
94982
|
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/actions/index.js
|
|
94983
94983
|
init_cjs_shims();
|
|
94984
94984
|
|
|
94985
|
-
// viem-
|
|
94985
|
+
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/chains/index.js
|
|
94986
94986
|
init_cjs_shims();
|
|
94987
94987
|
|
|
94988
|
-
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/chains/
|
|
94988
|
+
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/chains/definitions/tempo.js
|
|
94989
94989
|
init_cjs_shims();
|
|
94990
94990
|
|
|
94991
94991
|
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/tempo/chainConfig.js
|
|
@@ -96859,18 +96859,17 @@ var chainConfig = {
|
|
|
96859
96859
|
}
|
|
96860
96860
|
};
|
|
96861
96861
|
|
|
96862
|
-
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/chains/definitions/
|
|
96863
|
-
|
|
96864
|
-
var tempoModerato = /* @__PURE__ */ defineChain({
|
|
96862
|
+
// ../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/chains/definitions/tempo.js
|
|
96863
|
+
var tempo = /* @__PURE__ */ defineChain({
|
|
96865
96864
|
...chainConfig,
|
|
96866
|
-
id:
|
|
96865
|
+
id: 4217,
|
|
96867
96866
|
blockExplorers: {
|
|
96868
96867
|
default: {
|
|
96869
96868
|
name: "Tempo Explorer",
|
|
96870
|
-
url: "https://explore.
|
|
96869
|
+
url: "https://explore.mainnet.tempo.xyz"
|
|
96871
96870
|
}
|
|
96872
96871
|
},
|
|
96873
|
-
name: "Tempo
|
|
96872
|
+
name: "Tempo Mainnet",
|
|
96874
96873
|
nativeCurrency: {
|
|
96875
96874
|
name: "USD",
|
|
96876
96875
|
symbol: "USD",
|
|
@@ -96878,8 +96877,8 @@ var tempoModerato = /* @__PURE__ */ defineChain({
|
|
|
96878
96877
|
},
|
|
96879
96878
|
rpcUrls: {
|
|
96880
96879
|
default: {
|
|
96881
|
-
http: ["https://rpc.
|
|
96882
|
-
webSocket: ["wss://rpc.
|
|
96880
|
+
http: ["https://rpc.presto.tempo.xyz"],
|
|
96881
|
+
webSocket: ["wss://rpc.presto.tempo.xyz"]
|
|
96883
96882
|
}
|
|
96884
96883
|
}
|
|
96885
96884
|
});
|
|
@@ -102057,7 +102056,7 @@ var charge2 = fromIntent3(charge, {
|
|
|
102057
102056
|
});
|
|
102058
102057
|
|
|
102059
102058
|
// ../../../node_modules/.pnpm/mpay@0.1.0_@modelcontextprotocol+sdk@1.26.0_zod@4.3.6__typescript@5.9.3_viem@2.45.3_buf_ec874423718c5154f482914f09739070/node_modules/mpay/dist/tempo/Method.js
|
|
102060
|
-
var
|
|
102059
|
+
var tempo2 = from18({
|
|
102061
102060
|
intents: {
|
|
102062
102061
|
charge: charge2
|
|
102063
102062
|
},
|
|
@@ -102065,7 +102064,7 @@ var tempo = from18({
|
|
|
102065
102064
|
});
|
|
102066
102065
|
|
|
102067
102066
|
// ../../../node_modules/.pnpm/mpay@0.1.0_@modelcontextprotocol+sdk@1.26.0_zod@4.3.6__typescript@5.9.3_viem@2.45.3_buf_ec874423718c5154f482914f09739070/node_modules/mpay/dist/tempo/client/Method.js
|
|
102068
|
-
function
|
|
102067
|
+
function tempo3(parameters = {}) {
|
|
102069
102068
|
const rpcUrl2 = parameters.rpcUrl ?? rpcUrl;
|
|
102070
102069
|
function getClient(chainId) {
|
|
102071
102070
|
if (parameters.client)
|
|
@@ -102074,11 +102073,11 @@ function tempo2(parameters = {}) {
|
|
|
102074
102073
|
if (!url3)
|
|
102075
102074
|
throw new Error(`No \`rpcUrl\` configured for \`chainId\` (${chainId}).`);
|
|
102076
102075
|
return createClient({
|
|
102077
|
-
chain: { ...
|
|
102076
|
+
chain: { ...tempo, id: chainId },
|
|
102078
102077
|
transport: http(url3)
|
|
102079
102078
|
});
|
|
102080
102079
|
}
|
|
102081
|
-
return toClient(
|
|
102080
|
+
return toClient(tempo2, {
|
|
102082
102081
|
context: object({
|
|
102083
102082
|
account: optional(custom())
|
|
102084
102083
|
}),
|
|
@@ -102301,30 +102300,8 @@ var DEFAULT_NETWORK = "eip155:8453";
|
|
|
102301
102300
|
|
|
102302
102301
|
// src/shared/tempo.ts
|
|
102303
102302
|
init_cjs_shims();
|
|
102304
|
-
var
|
|
102305
|
-
var
|
|
102306
|
-
var TEMPO_CHAIN_NAME = process.env.TEMPO_CHAIN_NAME ?? "Tempo";
|
|
102307
|
-
var TEMPO_TOKEN_ADDRESS = process.env.TEMPO_TOKEN_ADDRESS ?? "0x20c0000000000000000000000000000000000001";
|
|
102308
|
-
function getTempoChainId() {
|
|
102309
|
-
return TEMPO_CHAIN_ID;
|
|
102310
|
-
}
|
|
102311
|
-
function getTempoRpcUrl() {
|
|
102312
|
-
return TEMPO_RPC_URL;
|
|
102313
|
-
}
|
|
102314
|
-
function getTempoChainName() {
|
|
102315
|
-
return TEMPO_CHAIN_NAME;
|
|
102316
|
-
}
|
|
102317
|
-
function getTempoTokenAddress() {
|
|
102318
|
-
return TEMPO_TOKEN_ADDRESS;
|
|
102319
|
-
}
|
|
102320
|
-
var tempoChain = defineChain({
|
|
102321
|
-
id: TEMPO_CHAIN_ID,
|
|
102322
|
-
name: TEMPO_CHAIN_NAME,
|
|
102323
|
-
nativeCurrency: { name: "TEMPO", symbol: "TEMPO", decimals: 18 },
|
|
102324
|
-
rpcUrls: {
|
|
102325
|
-
default: { http: [TEMPO_RPC_URL] }
|
|
102326
|
-
}
|
|
102327
|
-
});
|
|
102303
|
+
var TEMPO_RPC_URL = "https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz";
|
|
102304
|
+
var TEMPO_TOKEN_ADDRESS = "0x20c0000000000000000000000000000000000000";
|
|
102328
102305
|
|
|
102329
102306
|
// src/shared/operations/fetch-with-payment.ts
|
|
102330
102307
|
init_cjs_shims();
|
|
@@ -107417,8 +107394,8 @@ async function getTempoBalance({
|
|
|
107417
107394
|
}
|
|
107418
107395
|
const data = await res.json();
|
|
107419
107396
|
return {
|
|
107420
|
-
chainId:
|
|
107421
|
-
chainName:
|
|
107397
|
+
chainId: tempo.id,
|
|
107398
|
+
chainName: tempo.name,
|
|
107422
107399
|
balance: BigInt(data.balance),
|
|
107423
107400
|
tokenAddress
|
|
107424
107401
|
};
|
|
@@ -107964,9 +107941,9 @@ var registerFetchTool = ({
|
|
|
107964
107941
|
const x402HttpClient = new x402HTTPClient(coreClient);
|
|
107965
107942
|
const mpayClient = Mpay_exports.create({
|
|
107966
107943
|
methods: [
|
|
107967
|
-
|
|
107944
|
+
tempo3({
|
|
107968
107945
|
account,
|
|
107969
|
-
rpcUrl: { [
|
|
107946
|
+
rpcUrl: { [tempo.id]: TEMPO_RPC_URL }
|
|
107970
107947
|
})
|
|
107971
107948
|
]
|
|
107972
107949
|
});
|
|
@@ -108159,7 +108136,7 @@ init_cjs_shims();
|
|
|
108159
108136
|
async function getWalletInfo(surface3, address, flags) {
|
|
108160
108137
|
const [balanceResult, tempoResult] = await Promise.all([
|
|
108161
108138
|
getBalance3({ address, flags, surface: surface3 }),
|
|
108162
|
-
getTempoBalance({ address, tokenAddress:
|
|
108139
|
+
getTempoBalance({ address, tokenAddress: TEMPO_TOKEN_ADDRESS }).then((r) => Number(formatUnits(r.balance, 6))).catch((e) => {
|
|
108163
108140
|
log.info(`Failed to fetch Tempo balance: ${e}`);
|
|
108164
108141
|
return null;
|
|
108165
108142
|
})
|
|
@@ -108361,8 +108338,8 @@ async function getEndpointSchema(endpointUrl, method) {
|
|
|
108361
108338
|
}
|
|
108362
108339
|
const operation = pathEntry[httpMethod];
|
|
108363
108340
|
if (!operation) {
|
|
108364
|
-
|
|
108365
|
-
return
|
|
108341
|
+
log.debug(`No OpenAPI operation found for ${httpMethod.toUpperCase()} ${path2}`);
|
|
108342
|
+
return null;
|
|
108366
108343
|
}
|
|
108367
108344
|
const resolved = resolveRefs(spec, operation, /* @__PURE__ */ new Set());
|
|
108368
108345
|
return { path: path2, method: httpMethod, ...resolved };
|
|
@@ -108399,6 +108376,38 @@ async function getOriginIndex(origin) {
|
|
|
108399
108376
|
indexCache.set(origin, endpoints);
|
|
108400
108377
|
return endpoints;
|
|
108401
108378
|
}
|
|
108379
|
+
var OPENAPI_HTTP_METHODS = /* @__PURE__ */ new Set([
|
|
108380
|
+
"get",
|
|
108381
|
+
"post",
|
|
108382
|
+
"put",
|
|
108383
|
+
"delete",
|
|
108384
|
+
"patch",
|
|
108385
|
+
"head",
|
|
108386
|
+
"options",
|
|
108387
|
+
"trace"
|
|
108388
|
+
]);
|
|
108389
|
+
async function getSpecMethods(endpointUrl) {
|
|
108390
|
+
if (!URL.canParse(endpointUrl)) return null;
|
|
108391
|
+
const origin = new URL(endpointUrl).origin;
|
|
108392
|
+
const spec = await fetchOpenApiSpec(origin);
|
|
108393
|
+
if (!spec?.paths) return null;
|
|
108394
|
+
const paths = spec.paths;
|
|
108395
|
+
const path2 = extractPath(endpointUrl, origin);
|
|
108396
|
+
let pathEntry = paths[path2];
|
|
108397
|
+
if (!pathEntry) {
|
|
108398
|
+
for (const [specPath, specEntry] of Object.entries(paths)) {
|
|
108399
|
+
if (specEntry == null || typeof specEntry !== "object") continue;
|
|
108400
|
+
const pattern = specPath.replace(/\{[^}]+\}/g, "[^/]+");
|
|
108401
|
+
const regex = new RegExp(`^${pattern}$`);
|
|
108402
|
+
if (regex.test(path2)) {
|
|
108403
|
+
pathEntry = specEntry;
|
|
108404
|
+
break;
|
|
108405
|
+
}
|
|
108406
|
+
}
|
|
108407
|
+
}
|
|
108408
|
+
if (!pathEntry) return null;
|
|
108409
|
+
return Object.keys(pathEntry).filter((k) => OPENAPI_HTTP_METHODS.has(k)).map((k) => k.toUpperCase());
|
|
108410
|
+
}
|
|
108402
108411
|
function getIndexEntry(origin, path2, method) {
|
|
108403
108412
|
const entries = indexCache.get(origin);
|
|
108404
108413
|
if (!entries) return void 0;
|
|
@@ -108420,9 +108429,24 @@ async function checkEndpoint({
|
|
|
108420
108429
|
methods,
|
|
108421
108430
|
body,
|
|
108422
108431
|
headers = {},
|
|
108423
|
-
includeMethodErrors = false
|
|
108432
|
+
includeMethodErrors = false,
|
|
108433
|
+
probeAllMethods = false
|
|
108424
108434
|
}) {
|
|
108425
|
-
|
|
108435
|
+
let methodsToCheck;
|
|
108436
|
+
if (methods) {
|
|
108437
|
+
methodsToCheck = methods;
|
|
108438
|
+
} else if (probeAllMethods) {
|
|
108439
|
+
methodsToCheck = [...SUPPORTED_METHODS];
|
|
108440
|
+
} else {
|
|
108441
|
+
const specMethods = await getSpecMethods(url3);
|
|
108442
|
+
if (specMethods?.length) {
|
|
108443
|
+
methodsToCheck = specMethods.filter(
|
|
108444
|
+
(m) => SUPPORTED_METHODS.includes(m)
|
|
108445
|
+
);
|
|
108446
|
+
} else {
|
|
108447
|
+
methodsToCheck = [...SUPPORTED_METHODS];
|
|
108448
|
+
}
|
|
108449
|
+
}
|
|
108426
108450
|
log.info("Checking endpoint", { url: url3, methods: methodsToCheck });
|
|
108427
108451
|
const results = await Promise.all(
|
|
108428
108452
|
methodsToCheck.map(
|
|
@@ -108597,7 +108621,7 @@ var registerCheckEndpointTool = ({
|
|
|
108597
108621
|
toolName3,
|
|
108598
108622
|
{
|
|
108599
108623
|
title: "Check Endpoint Schema",
|
|
108600
|
-
description: `Probe endpoint to check if payment-protected. By default checks
|
|
108624
|
+
description: `Probe endpoint to check if payment-protected. By default checks only the HTTP methods declared in the endpoint's OpenAPI spec (falls back to all methods if no spec is available). Returns pricing, input schema, and payment methods for each method that responds with 402 or 2xx. Use before fetch to preview costs. No payment made.`,
|
|
108601
108625
|
inputSchema: checkEndpointInputSchema,
|
|
108602
108626
|
annotations: {
|
|
108603
108627
|
readOnlyHint: true,
|
|
@@ -108765,7 +108789,7 @@ var import_path2 = require("path");
|
|
|
108765
108789
|
var import_url = require("url");
|
|
108766
108790
|
function getVersion2() {
|
|
108767
108791
|
if (true) {
|
|
108768
|
-
return "0.3.
|
|
108792
|
+
return "0.3.6";
|
|
108769
108793
|
}
|
|
108770
108794
|
const __dirname3 = (0, import_path2.dirname)((0, import_url.fileURLToPath)(importMetaUrl));
|
|
108771
108795
|
const pkg = JSON.parse(
|
|
@@ -109499,7 +109523,7 @@ var import_path3 = require("path");
|
|
|
109499
109523
|
var import_url2 = require("url");
|
|
109500
109524
|
function getVersion3() {
|
|
109501
109525
|
if (true) {
|
|
109502
|
-
return "0.3.
|
|
109526
|
+
return "0.3.6";
|
|
109503
109527
|
}
|
|
109504
109528
|
const __dirname3 = (0, import_path3.dirname)((0, import_url2.fileURLToPath)(importMetaUrl));
|
|
109505
109529
|
const pkg = JSON.parse(
|
|
@@ -4,7 +4,7 @@ import { dirname, join } from "path";
|
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
function getVersion() {
|
|
6
6
|
if (true) {
|
|
7
|
-
return "0.3.
|
|
7
|
+
return "0.3.6";
|
|
8
8
|
}
|
|
9
9
|
const __dirname2 = dirname(fileURLToPath(import.meta.url));
|
|
10
10
|
const pkg = JSON.parse(
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
MCP_VERSION,
|
|
20
20
|
DIST_TAG
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-DZC5MTYY.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MCP_VERSION
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DZC5MTYY.js";
|
|
4
4
|
import {
|
|
5
5
|
err,
|
|
6
6
|
getBalance,
|
|
@@ -250,8 +250,8 @@ async function getEndpointSchema(endpointUrl, method) {
|
|
|
250
250
|
}
|
|
251
251
|
const operation = pathEntry[httpMethod];
|
|
252
252
|
if (!operation) {
|
|
253
|
-
|
|
254
|
-
return
|
|
253
|
+
log.debug(`No OpenAPI operation found for ${httpMethod.toUpperCase()} ${path}`);
|
|
254
|
+
return null;
|
|
255
255
|
}
|
|
256
256
|
const resolved = resolveRefs(spec, operation, /* @__PURE__ */ new Set());
|
|
257
257
|
return { path, method: httpMethod, ...resolved };
|
|
@@ -288,6 +288,38 @@ async function getOriginIndex(origin) {
|
|
|
288
288
|
indexCache.set(origin, endpoints);
|
|
289
289
|
return endpoints;
|
|
290
290
|
}
|
|
291
|
+
var OPENAPI_HTTP_METHODS = /* @__PURE__ */ new Set([
|
|
292
|
+
"get",
|
|
293
|
+
"post",
|
|
294
|
+
"put",
|
|
295
|
+
"delete",
|
|
296
|
+
"patch",
|
|
297
|
+
"head",
|
|
298
|
+
"options",
|
|
299
|
+
"trace"
|
|
300
|
+
]);
|
|
301
|
+
async function getSpecMethods(endpointUrl) {
|
|
302
|
+
if (!URL.canParse(endpointUrl)) return null;
|
|
303
|
+
const origin = new URL(endpointUrl).origin;
|
|
304
|
+
const spec = await fetchOpenApiSpec(origin);
|
|
305
|
+
if (!spec?.paths) return null;
|
|
306
|
+
const paths = spec.paths;
|
|
307
|
+
const path = extractPath(endpointUrl, origin);
|
|
308
|
+
let pathEntry = paths[path];
|
|
309
|
+
if (!pathEntry) {
|
|
310
|
+
for (const [specPath, specEntry] of Object.entries(paths)) {
|
|
311
|
+
if (specEntry == null || typeof specEntry !== "object") continue;
|
|
312
|
+
const pattern = specPath.replace(/\{[^}]+\}/g, "[^/]+");
|
|
313
|
+
const regex = new RegExp(`^${pattern}$`);
|
|
314
|
+
if (regex.test(path)) {
|
|
315
|
+
pathEntry = specEntry;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
if (!pathEntry) return null;
|
|
321
|
+
return Object.keys(pathEntry).filter((k) => OPENAPI_HTTP_METHODS.has(k)).map((k) => k.toUpperCase());
|
|
322
|
+
}
|
|
291
323
|
function getIndexEntry(origin, path, method) {
|
|
292
324
|
const entries = indexCache.get(origin);
|
|
293
325
|
if (!entries) return void 0;
|
|
@@ -340,9 +372,24 @@ async function checkEndpoint({
|
|
|
340
372
|
methods,
|
|
341
373
|
body,
|
|
342
374
|
headers = {},
|
|
343
|
-
includeMethodErrors = false
|
|
375
|
+
includeMethodErrors = false,
|
|
376
|
+
probeAllMethods = false
|
|
344
377
|
}) {
|
|
345
|
-
|
|
378
|
+
let methodsToCheck;
|
|
379
|
+
if (methods) {
|
|
380
|
+
methodsToCheck = methods;
|
|
381
|
+
} else if (probeAllMethods) {
|
|
382
|
+
methodsToCheck = [...SUPPORTED_METHODS];
|
|
383
|
+
} else {
|
|
384
|
+
const specMethods = await getSpecMethods(url);
|
|
385
|
+
if (specMethods?.length) {
|
|
386
|
+
methodsToCheck = specMethods.filter(
|
|
387
|
+
(m) => SUPPORTED_METHODS.includes(m)
|
|
388
|
+
);
|
|
389
|
+
} else {
|
|
390
|
+
methodsToCheck = [...SUPPORTED_METHODS];
|
|
391
|
+
}
|
|
392
|
+
}
|
|
346
393
|
log.info("Checking endpoint", { url, methods: methodsToCheck });
|
|
347
394
|
const results = await Promise.all(
|
|
348
395
|
methodsToCheck.map(
|
|
@@ -548,33 +595,11 @@ async function discoverResources(surface, url) {
|
|
|
548
595
|
import { formatUnits as formatUnits2 } from "viem";
|
|
549
596
|
|
|
550
597
|
// src/shared/tempo.ts
|
|
551
|
-
|
|
552
|
-
var
|
|
553
|
-
var TEMPO_RPC_URL = process.env.TEMPO_RPC_URL ?? "https://tempo-moderato.g.alchemy.com/v2/GCnF4KF-qMTaDYNxAOMSC";
|
|
554
|
-
var TEMPO_CHAIN_NAME = process.env.TEMPO_CHAIN_NAME ?? "Tempo";
|
|
555
|
-
var TEMPO_TOKEN_ADDRESS = process.env.TEMPO_TOKEN_ADDRESS ?? "0x20c0000000000000000000000000000000000001";
|
|
556
|
-
function getTempoChainId() {
|
|
557
|
-
return TEMPO_CHAIN_ID;
|
|
558
|
-
}
|
|
559
|
-
function getTempoRpcUrl() {
|
|
560
|
-
return TEMPO_RPC_URL;
|
|
561
|
-
}
|
|
562
|
-
function getTempoChainName() {
|
|
563
|
-
return TEMPO_CHAIN_NAME;
|
|
564
|
-
}
|
|
565
|
-
function getTempoTokenAddress() {
|
|
566
|
-
return TEMPO_TOKEN_ADDRESS;
|
|
567
|
-
}
|
|
568
|
-
var tempoChain = defineChain({
|
|
569
|
-
id: TEMPO_CHAIN_ID,
|
|
570
|
-
name: TEMPO_CHAIN_NAME,
|
|
571
|
-
nativeCurrency: { name: "TEMPO", symbol: "TEMPO", decimals: 18 },
|
|
572
|
-
rpcUrls: {
|
|
573
|
-
default: { http: [TEMPO_RPC_URL] }
|
|
574
|
-
}
|
|
575
|
-
});
|
|
598
|
+
var TEMPO_RPC_URL = "https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz";
|
|
599
|
+
var TEMPO_TOKEN_ADDRESS = "0x20c0000000000000000000000000000000000000";
|
|
576
600
|
|
|
577
601
|
// src/shared/tempo-balance.ts
|
|
602
|
+
import { tempo } from "viem/chains";
|
|
578
603
|
var MPPSCAN_BASE = "https://mppscan.com";
|
|
579
604
|
async function getTempoBalance({
|
|
580
605
|
address,
|
|
@@ -590,8 +615,8 @@ async function getTempoBalance({
|
|
|
590
615
|
}
|
|
591
616
|
const data = await res.json();
|
|
592
617
|
return {
|
|
593
|
-
chainId:
|
|
594
|
-
chainName:
|
|
618
|
+
chainId: tempo.id,
|
|
619
|
+
chainName: tempo.name,
|
|
595
620
|
balance: BigInt(data.balance),
|
|
596
621
|
tokenAddress
|
|
597
622
|
};
|
|
@@ -601,7 +626,7 @@ async function getTempoBalance({
|
|
|
601
626
|
async function getWalletInfo(surface, address, flags) {
|
|
602
627
|
const [balanceResult, tempoResult] = await Promise.all([
|
|
603
628
|
getBalance({ address, flags, surface }),
|
|
604
|
-
getTempoBalance({ address, tokenAddress:
|
|
629
|
+
getTempoBalance({ address, tokenAddress: TEMPO_TOKEN_ADDRESS }).then((r) => Number(formatUnits2(r.balance, 6))).catch((e) => {
|
|
605
630
|
log.info(`Failed to fetch Tempo balance: ${e}`);
|
|
606
631
|
return null;
|
|
607
632
|
})
|
|
@@ -664,8 +689,7 @@ async function submitErrorReport(surface, input, address, dev) {
|
|
|
664
689
|
}
|
|
665
690
|
|
|
666
691
|
export {
|
|
667
|
-
|
|
668
|
-
getTempoRpcUrl,
|
|
692
|
+
TEMPO_RPC_URL,
|
|
669
693
|
x402Ok,
|
|
670
694
|
x402Err,
|
|
671
695
|
safeGetPaymentRequired,
|
|
@@ -689,4 +713,4 @@ export {
|
|
|
689
713
|
getWalletInfo,
|
|
690
714
|
submitErrorReport
|
|
691
715
|
};
|
|
692
|
-
//# sourceMappingURL=chunk-
|
|
716
|
+
//# sourceMappingURL=chunk-FM2E2QVT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/operations/check-endpoint.ts","../../src/shared/neverthrow/x402/index.ts","../../src/shared/neverthrow/mpp/index.ts","../../src/shared/protocol.ts","../../src/shared/openapi-cache.ts","../../src/shared/token.ts","../../src/server/lib/x402-extensions.ts","../../src/shared/operations/discover.ts","../../src/shared/operations/wallet-info.ts","../../src/shared/tempo.ts","../../src/shared/tempo-balance.ts","../../src/shared/operations/report-error.ts"],"sourcesContent":["import { resultFromPromise } from '@agentcash/neverthrow';\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\n\nimport { log } from '@/shared/log';\nimport { safeFetch } from '@/shared/neverthrow/fetch';\nimport { safeGetPaymentRequired } from '@/shared/neverthrow/x402';\nimport { safeGetMppChallenge } from '@/shared/neverthrow/mpp';\nimport { detectPaymentProtocols } from '@/shared/protocol';\nimport { getEndpointSchema, getIndexEntry, getSpecMethods } from '@/shared/openapi-cache';\nimport { tokenStringToNumber } from '@/shared/token';\nimport { getInputSchema } from '@/server/lib/x402-extensions';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { PaymentProtocol } from '@/shared/protocol';\n\n// ─── Public types ────────────────────────────────────────────────\n\nexport const SUPPORTED_METHODS = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n] as const;\n\nexport type SupportedMethod = (typeof SUPPORTED_METHODS)[number];\n\n/** A single method's probe outcome (only 402 or 2xx responses are kept). */\nexport interface ProbeMethodResult {\n method: SupportedMethod;\n source: 'openapi' | 'probe';\n requiresPayment: boolean;\n statusCode?: number;\n protocols?: PaymentProtocol[];\n paymentMethods?: JsonObject[];\n schema?: JsonObject;\n estimatedPrice?: string;\n summary?: string;\n}\n\nexport interface CheckEndpointResult {\n url: string;\n results: ProbeMethodResult[];\n}\n\nexport interface CheckEndpointOptions {\n surface: string;\n url: string;\n /** Methods to probe. Defaults to spec-defined methods, or all if no spec / probeAllMethods is set. */\n methods?: SupportedMethod[];\n body?: unknown;\n headers?: Record<string, string>;\n /** When true, include 404/405 responses in results. Useful when a specific method is targeted. */\n includeMethodErrors?: boolean;\n /** When true, probe all HTTP methods regardless of what the OpenAPI spec declares. */\n probeAllMethods?: boolean;\n}\n\n// ─── Public entry point ──────────────────────────────────────────\n\n/**\n * Probe an endpoint across one or more HTTP methods in parallel.\n * Returns only the methods that responded with 402 or 2xx.\n * Does not make any payment.\n */\nexport async function checkEndpoint({\n surface,\n url,\n methods,\n body,\n headers = {},\n includeMethodErrors = false,\n probeAllMethods = false,\n}: CheckEndpointOptions): Promise<CheckEndpointResult> {\n let methodsToCheck: SupportedMethod[];\n if (methods) {\n methodsToCheck = methods;\n } else if (probeAllMethods) {\n methodsToCheck = [...SUPPORTED_METHODS];\n } else {\n const specMethods = await getSpecMethods(url);\n if (specMethods?.length) {\n methodsToCheck = specMethods.filter(\n (m): m is SupportedMethod => SUPPORTED_METHODS.includes(m as SupportedMethod)\n );\n } else {\n methodsToCheck = [...SUPPORTED_METHODS];\n }\n }\n\n log.info('Checking endpoint', { url, methods: methodsToCheck });\n\n const results = await Promise.all(\n methodsToCheck.map(method =>\n probeMethod({ surface, method, url, body, headers, includeMethodErrors })\n )\n );\n\n return {\n url,\n results: results.filter((r): r is ProbeMethodResult => r !== null),\n };\n}\n\n// ─── Per-method probe (private) ──────────────────────────────────\n\ninterface ProbeMethodOptions {\n surface: string;\n method: SupportedMethod;\n url: string;\n body?: unknown;\n headers: Record<string, string>;\n includeMethodErrors: boolean;\n}\n\nasync function probeMethod({\n surface,\n method,\n url,\n body,\n headers,\n includeMethodErrors,\n}: ProbeMethodOptions): Promise<ProbeMethodResult | null> {\n // ── Cache-first: try OpenAPI spec ──\n const cachedSchemaResult = await resultFromPromise(\n 'openapi',\n surface,\n getEndpointSchema(url, method),\n e => ({\n cause: 'cache_lookup' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (cachedSchemaResult.isOk() && cachedSchemaResult.value) {\n const cachedSchema = cachedSchemaResult.value;\n const origin = new URL(url).origin;\n const path = new URL(url).pathname || '/';\n const indexEntry = getIndexEntry(origin, path, method);\n\n return {\n method,\n source: 'openapi',\n requiresPayment: true,\n schema: cachedSchema,\n ...(indexEntry?.price ? { estimatedPrice: indexEntry.price } : {}),\n ...(indexEntry?.protocols\n ? { protocols: indexEntry.protocols as PaymentProtocol[] }\n : {}),\n ...(indexEntry?.summary ? { summary: indexEntry.summary } : {}),\n };\n }\n\n if (cachedSchemaResult.isErr()) {\n log.debug(\n `Cache lookup failed for ${method} ${url}, falling back to 402 probe`\n );\n }\n\n // ── Fallback: 402 probe ──\n const request = buildProbeRequest(url, method, body, headers);\n const responseResult = await safeFetch(surface, request);\n\n if (responseResult.isErr()) {\n log.debug(`${method} ${url} probe failed`, responseResult.error);\n return null;\n }\n\n const response = responseResult.value;\n\n // Non-402 error\n if (!response.ok && response.status !== 402) {\n if (\n includeMethodErrors &&\n (response.status === 404 || response.status === 405)\n ) {\n return {\n method,\n source: 'probe',\n requiresPayment: false,\n statusCode: response.status,\n };\n }\n log.debug(`${method} ${url} returned ${response.status} — skipping`);\n return null;\n }\n\n // 2xx success — include (no payment required)\n if (response.status !== 402) {\n return {\n method,\n source: 'probe',\n requiresPayment: false,\n statusCode: response.status,\n };\n }\n\n // 402 — extract payment details\n const protocols = detectPaymentProtocols(response);\n const paymentMethods: JsonObject[] = [];\n\n if (protocols.includes('mpp')) {\n const challengeResult = safeGetMppChallenge(surface, response);\n\n if (challengeResult.isOk()) {\n const challenge = challengeResult.value;\n\n const currency = challenge.request.currency as string | undefined;\n const amount = challenge.request.amount as string | undefined;\n const decimals = (challenge.request.decimals as number | undefined) ?? 6;\n\n // Try to enrich with OpenAPI schema\n let schema: JsonObject | undefined;\n const endpointSchemaResult = await resultFromPromise(\n 'openapi',\n surface,\n getEndpointSchema(url, method),\n e => ({\n cause: 'schema_fetch' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n if (endpointSchemaResult.isOk() && endpointSchemaResult.value) {\n schema = endpointSchemaResult.value;\n } else if (endpointSchemaResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI schema for: ${url}`);\n }\n\n paymentMethods.push({\n protocol: 'mpp',\n method: challenge.method,\n intent: challenge.intent,\n realm: challenge.realm,\n ...(challenge.description\n ? { description: challenge.description }\n : {}),\n ...(amount ? { price: tokenStringToNumber(amount, decimals) } : {}),\n ...(currency ? { currency } : {}),\n ...(schema ? { schema } : {}),\n network: `tempo:${challenge.method}`,\n } as unknown as JsonObject);\n }\n }\n\n if (protocols.includes('x402')) {\n const client = new x402HTTPClient(new x402Client());\n\n const paymentRequiredResult = await safeGetPaymentRequired(\n surface,\n client,\n response\n );\n\n if (paymentRequiredResult.isOk()) {\n const { resource, extensions, accepts } = paymentRequiredResult.value;\n\n for (const accept of accepts) {\n paymentMethods.push({\n protocol: 'x402',\n ...resource,\n schema: getInputSchema(extensions) as JsonObject,\n price: tokenStringToNumber(accept.amount),\n network: accept.network,\n asset: accept.asset,\n } as unknown as JsonObject);\n }\n }\n }\n\n return {\n method,\n source: 'probe',\n requiresPayment: true,\n statusCode: response.status,\n protocols,\n paymentMethods,\n };\n}\n\n// ─── Request builder (private) ───────────────────────────────────\n\nfunction buildProbeRequest(\n url: string,\n method: string,\n body: unknown,\n headers: Record<string, string>\n): Request {\n const supportsBody = ['POST', 'PUT', 'PATCH'].includes(method);\n const requestBody =\n supportsBody && body\n ? typeof body === 'string'\n ? body\n : JSON.stringify(body)\n : undefined;\n\n return new Request(url, {\n method,\n body: requestBody,\n headers: {\n ...(requestBody ? { 'Content-Type': 'application/json' } : {}),\n ...headers,\n },\n });\n}\n","import {\n err,\n ok,\n resultFromPromise,\n resultFromThrowable,\n} from '@agentcash/neverthrow';\nimport { createSIWxPayload } from '@x402/extensions/sign-in-with-x';\n\nimport type { BaseX402Error } from './types';\nimport type { x402HTTPClient } from '@x402/core/http';\nimport type { PaymentRequired } from '@x402/core/types';\nimport type { CompleteSIWxInfo } from '@x402/extensions/sign-in-with-x';\nimport type { PrivateKeyAccount } from 'viem';\n\nconst errorType = 'x402';\n\nexport const x402Ok = <T>(value: T) => ok(value);\nexport const x402Err = (cause: string, error: BaseX402Error) =>\n err(errorType, cause, error);\n\nconst x402ResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseX402Error\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst x402ResultFromThrowable = <T>(\n surface: string,\n fn: () => T,\n error: (e: unknown) => BaseX402Error\n) => resultFromThrowable(errorType, surface, fn, error);\n\nexport const safeGetPaymentRequired = (\n surface: string,\n client: x402HTTPClient,\n response: Response\n) => {\n return x402ResultFromPromise(\n surface,\n response.json().then(\n json =>\n client.getPaymentRequiredResponse(\n name => response.headers.get(name),\n json\n ),\n () =>\n client.getPaymentRequiredResponse(name => response.headers.get(name))\n ),\n error => ({\n cause: 'parse_payment_required',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse payment required',\n })\n );\n};\n\nexport const safeCreatePaymentPayload = (\n surface: string,\n client: x402HTTPClient,\n paymentRequired: PaymentRequired\n) => {\n return x402ResultFromPromise(\n surface,\n client.createPaymentPayload(paymentRequired),\n error => ({\n cause: 'create_payment_payload',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create payment payload',\n })\n );\n};\n\nexport const safeGetPaymentSettlement = (\n surface: string,\n client: x402HTTPClient,\n response: Response\n) => {\n return x402ResultFromThrowable(\n surface,\n () => client.getPaymentSettleResponse(name => response.headers.get(name)),\n error => ({\n cause: 'get_payment_settlement',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to get payment settlement',\n })\n );\n};\n\nexport const safeCreateSIWxPayload = (\n surface: string,\n serverInfo: CompleteSIWxInfo,\n signer: PrivateKeyAccount\n) => {\n return x402ResultFromPromise(\n surface,\n createSIWxPayload(serverInfo, signer),\n error => ({\n cause: 'create_siwx_payload',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create SIWX payload',\n })\n );\n};\n","import { Challenge, Receipt } from 'mpay';\nimport {\n err,\n ok,\n resultFromPromise,\n resultFromThrowable,\n} from '@agentcash/neverthrow';\n\nimport type { BaseMppError } from './types';\nimport type { Mpay as MpayNs } from 'mpay/client';\n\nconst errorType = 'mpp';\n\nexport const mppOk = <T>(value: T) => ok(value);\nexport const mppErr = (surface: string, error: BaseMppError) =>\n err(errorType, surface, error);\n\nconst mppResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseMppError\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst mppResultFromThrowable = <T>(\n surface: string,\n fn: () => T,\n error: (e: unknown) => BaseMppError\n) => resultFromThrowable(errorType, surface, fn, error);\n\nexport const safeGetMppChallenge = (surface: string, response: Response) => {\n return mppResultFromThrowable(\n surface,\n () => Challenge.fromResponse(response),\n error => ({\n cause: 'parse_mpp_challenge',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse MPP challenge from response',\n })\n );\n};\n\nexport const safeCreateMppCredential = (\n surface: string,\n mpayClient: MpayNs.Mpay,\n response: Response\n) => {\n return mppResultFromPromise(\n surface,\n mpayClient.createCredential(response),\n error => ({\n cause: 'create_mpp_credential',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create MPP credential',\n })\n );\n};\n\nexport const safeGetMppReceipt = (surface: string, response: Response) => {\n return mppResultFromThrowable(\n surface,\n () => Receipt.fromResponse(response),\n error => ({\n cause: 'parse_mpp_receipt',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse MPP receipt from response',\n })\n );\n};\n","export type PaymentProtocol = 'x402' | 'mpp';\n\n/**\n * Detects all payment protocols present in a 402 response.\n * MPP responses include a `WWW-Authenticate` header starting with \"Payment\".\n * x402 responses include a `payment-required` header.\n * If neither is explicitly detected, defaults to x402.\n */\nexport function detectPaymentProtocols(response: Response): PaymentProtocol[] {\n const protocols: PaymentProtocol[] = [];\n const wwwAuth = response.headers.get('WWW-Authenticate');\n if (wwwAuth?.startsWith('Payment')) {\n protocols.push('mpp');\n }\n const paymentRequired = response.headers.get('payment-required');\n if (paymentRequired) {\n protocols.push('x402');\n }\n // If we couldn't detect either explicitly, default to x402\n if (protocols.length === 0) {\n protocols.push('x402');\n }\n return protocols;\n}\n\n/**\n * Convenience: returns the first/preferred protocol from a 402 response.\n * Useful when a single protocol must be chosen (e.g. for payment).\n */\nexport function detectPaymentProtocol(response: Response): PaymentProtocol {\n return detectPaymentProtocols(response)[0]!;\n}\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { safeFetch } from './neverthrow/fetch';\nimport { log } from './log';\n\nimport type { JsonObject, JsonValue } from './neverthrow/json/types';\n\nexport interface EndpointSummary {\n path: string; // \"/api/apollo/people/search\"\n method: string; // \"POST\"\n summary: string; // \"Search for people by name, email, or domain\"\n price?: string; // \"$0.02\" — from x-payment-info, advisory only\n protocols?: string[]; // [\"x402\", \"mpp\"] — from x-payment-info\n}\n\n/**\n * In-memory cache for OpenAPI specs per origin.\n * Populated during discovery or on-demand when check_endpoint needs schema info.\n */\nconst specCache = new Map<string, JsonObject>();\n\n/**\n * Fetch and cache an OpenAPI spec for an origin.\n * Tries multiple well-known locations in order.\n */\nexport async function fetchOpenApiSpec(\n origin: string\n): Promise<JsonObject | null> {\n const cached = specCache.get(origin);\n if (cached) return cached;\n\n const uniqueUrls = [\n `${origin}/openapi.json`,\n `${origin}/.well-known/openapi.json`,\n `${origin}/.well-known/x402`,\n `${origin}/.well-known/mpp`,\n ];\n\n for (const url of uniqueUrls) {\n log.debug(`Fetching OpenAPI spec from: ${url}`);\n const fetchResult = await safeFetch(\n 'fetchOpenApiSpec',\n new Request(url, { headers: { Accept: 'application/json' } })\n );\n\n if (fetchResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI spec from: ${url}`);\n continue;\n }\n\n const response = fetchResult.value;\n if (!response.ok) continue;\n\n const jsonResult = await resultFromPromise(\n 'json',\n 'fetchOpenApiSpec',\n response.json() as Promise<JsonObject>,\n () => ({\n cause: 'parse' as const,\n message: `Failed to parse JSON from: ${url}`,\n })\n );\n\n if (jsonResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI spec from: ${url}`);\n continue;\n }\n\n const spec = jsonResult.value;\n\n // Basic validation - must have paths\n if (spec && typeof spec === 'object' && spec.paths) {\n specCache.set(origin, spec);\n log.info(`Cached OpenAPI spec for origin: ${origin}`);\n return spec;\n }\n }\n\n log.debug(`No OpenAPI spec found for origin: ${origin}`);\n return null;\n}\n\n/**\n * Resolve a JSON $ref pointer within the spec.\n * Only supports local refs: \"#/components/schemas/Foo\"\n */\nfunction resolveRef(\n spec: JsonObject,\n ref: string,\n seen: Set<string>\n): JsonValue | undefined {\n if (!ref.startsWith('#/')) return undefined;\n if (seen.has(ref)) return { $circular: ref } as unknown as JsonValue;\n seen.add(ref);\n\n const parts = ref.slice(2).split('/');\n let current: JsonValue = spec;\n\n for (const part of parts) {\n if (\n current == null ||\n typeof current !== 'object' ||\n Array.isArray(current)\n )\n return undefined;\n const next: JsonValue | undefined = current[part];\n if (next === undefined) return undefined;\n current = next;\n }\n\n if (\n current != null &&\n typeof current === 'object' &&\n !Array.isArray(current)\n ) {\n return resolveRefs(spec, current, seen);\n }\n return current;\n}\n\n/**\n * Recursively resolve all $ref pointers in a JSON object.\n * Keeps it shallow enough to avoid context bloat - max depth 4.\n */\nfunction resolveRefs(\n spec: JsonObject,\n obj: JsonObject,\n seen: Set<string>,\n depth = 0\n): JsonObject {\n if (depth > 4) return obj;\n\n const result: JsonObject = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (key === '$ref' && typeof value === 'string') {\n const resolved = resolveRef(spec, value, seen);\n if (\n resolved != null &&\n typeof resolved === 'object' &&\n !Array.isArray(resolved)\n ) {\n Object.assign(result, resolved);\n } else {\n result[key] = value;\n }\n } else if (\n value != null &&\n typeof value === 'object' &&\n !Array.isArray(value)\n ) {\n result[key] = resolveRefs(spec, value, seen, depth + 1);\n } else if (Array.isArray(value)) {\n result[key] = value.map(item => {\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n return resolveRefs(spec, item, seen, depth + 1);\n }\n return item;\n });\n } else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\n/**\n * Normalize a URL path for matching against OpenAPI spec paths.\n * e.g. \"https://example.com/api/foo\" -> \"/api/foo\"\n */\nfunction extractPath(url: string, origin: string): string {\n if (url.startsWith(origin)) {\n return url.slice(origin.length) || '/';\n }\n return URL.canParse(url) ? new URL(url).pathname : url;\n}\n\n/**\n * Extract the schema for a specific endpoint from the OpenAPI spec.\n * Returns the operation object with resolved $refs, or null if not found.\n */\nexport async function getEndpointSchema(\n endpointUrl: string,\n method?: string\n): Promise<JsonObject | null> {\n if (!URL.canParse(endpointUrl)) return null;\n const origin = new URL(endpointUrl).origin;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec) return null;\n\n const paths = spec.paths as JsonObject | undefined;\n if (!paths) return null;\n\n const path = extractPath(endpointUrl, origin);\n const httpMethod = (method ?? 'post').toLowerCase();\n\n // Try exact match first, then try path patterns\n let pathEntry = paths[path] as JsonObject | undefined;\n\n if (!pathEntry) {\n // Try matching against parameterized paths like /api/foo/{id}\n for (const [specPath, specEntry] of Object.entries(paths)) {\n if (specEntry == null || typeof specEntry !== 'object') continue;\n\n const pattern = specPath.replace(/\\{[^}]+\\}/g, '[^/]+');\n const regex = new RegExp(`^${pattern}$`);\n if (regex.test(path)) {\n pathEntry = specEntry as JsonObject;\n break;\n }\n }\n }\n\n if (!pathEntry) {\n log.debug(`No OpenAPI path entry found for: ${path}`);\n return null;\n }\n\n const operation = pathEntry[httpMethod] as JsonObject | undefined;\n if (!operation) {\n log.debug(`No OpenAPI operation found for ${httpMethod.toUpperCase()} ${path}`);\n return null;\n }\n\n const resolved = resolveRefs(spec, operation, new Set());\n return { path, method: httpMethod, ...resolved };\n}\n\n// ── Lightweight Endpoint Index ──\n\nconst indexCache = new Map<string, EndpointSummary[]>();\n\n/**\n * Lazily build a lightweight index for an origin.\n * Fetches the OpenAPI spec if not cached, then extracts\n * path + method + summary + x-payment-info for each operation.\n */\nexport async function getOriginIndex(\n origin: string\n): Promise<EndpointSummary[] | null> {\n const cached = indexCache.get(origin);\n if (cached) return cached;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec?.paths) return null;\n\n const endpoints: EndpointSummary[] = [];\n for (const [path, methods] of Object.entries(\n spec.paths as Record<string, JsonObject>\n )) {\n for (const [method, operation] of Object.entries(methods)) {\n if (typeof operation === 'object' && operation !== null) {\n const op = operation as Record<string, unknown>;\n const paymentInfo = op['x-payment-info'] as\n | Record<string, unknown>\n | undefined;\n const entry: EndpointSummary = {\n path,\n method: method.toUpperCase(),\n summary: (op.summary as string) || (op.description as string) || '',\n };\n if (paymentInfo?.price != null) {\n entry.price = `$${paymentInfo.price as number}`;\n }\n if (Array.isArray(paymentInfo?.protocols)) {\n entry.protocols = paymentInfo.protocols as string[];\n }\n endpoints.push(entry);\n }\n }\n }\n\n indexCache.set(origin, endpoints);\n return endpoints;\n}\n\n/** HTTP methods that represent operations in an OpenAPI path entry. */\nconst OPENAPI_HTTP_METHODS = new Set([\n 'get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace',\n]);\n\n/**\n * Return the HTTP methods defined in the OpenAPI spec for a given endpoint URL.\n * Returns null if no spec or path entry is available (caller should fall back to probing all methods).\n */\nexport async function getSpecMethods(\n endpointUrl: string\n): Promise<string[] | null> {\n if (!URL.canParse(endpointUrl)) return null;\n const origin = new URL(endpointUrl).origin;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec?.paths) return null;\n\n const paths = spec.paths as JsonObject;\n const path = extractPath(endpointUrl, origin);\n\n let pathEntry = paths[path] as JsonObject | undefined;\n\n if (!pathEntry) {\n for (const [specPath, specEntry] of Object.entries(paths)) {\n if (specEntry == null || typeof specEntry !== 'object') continue;\n const pattern = specPath.replace(/\\{[^}]+\\}/g, '[^/]+');\n const regex = new RegExp(`^${pattern}$`);\n if (regex.test(path)) {\n pathEntry = specEntry as JsonObject;\n break;\n }\n }\n }\n\n if (!pathEntry) return null;\n\n return Object.keys(pathEntry)\n .filter(k => OPENAPI_HTTP_METHODS.has(k))\n .map(k => k.toUpperCase());\n}\n\n/**\n * Look up a single endpoint entry from the lightweight index cache.\n * Returns the matching EndpointSummary (with pricing hints) or undefined.\n * Synchronous — only checks what's already cached.\n */\nexport function getIndexEntry(\n origin: string,\n path: string,\n method: string\n): EndpointSummary | undefined {\n const entries = indexCache.get(origin);\n if (!entries) return undefined;\n\n const m = method.toUpperCase();\n return entries.find(e => e.path === path && e.method === m);\n}\n","import { formatUnits } from 'viem';\n\nexport const tokenStringToNumber = (amount: string, decimals = 6) => {\n return Number(formatUnits(BigInt(amount), decimals));\n};\n","import type { PaymentRequired } from '@x402/core/types';\nimport type { DiscoveryExtension } from '@x402/extensions/bazaar';\nimport type {\n CompleteSIWxInfo,\n SIWxExtensionInfo,\n SupportedChain,\n} from '@x402/extensions/sign-in-with-x';\n\nconst getBazaarExtension = (extensions: PaymentRequired['extensions']) => {\n const { bazaar } = extensions ?? {};\n\n if (!bazaar) {\n return undefined;\n }\n\n return bazaar as DiscoveryExtension;\n};\n\nexport const getInputSchema = (extensions: PaymentRequired['extensions']) =>\n getBazaarExtension(extensions)?.schema.properties.input;\n\nexport const getSiwxExtension = (\n extensions: PaymentRequired['extensions']\n): CompleteSIWxInfo | undefined => {\n const siwx = extensions?.['sign-in-with-x'] as\n | { info?: SIWxExtensionInfo; supportedChains?: SupportedChain[] }\n | undefined;\n\n if (!siwx?.info) {\n return undefined;\n }\n\n // Pick the first EVM chain from supportedChains, falling back to defaults\n const chain = siwx.supportedChains?.find(c =>\n c.chainId.startsWith('eip155:')\n );\n\n return {\n ...siwx.info,\n chainId: chain?.chainId ?? 'eip155:8453',\n type: chain?.type ?? 'eip191',\n signatureScheme: chain?.signatureScheme,\n };\n};\n","import { log } from '@/shared/log';\nimport { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { fetchOpenApiSpec, getOriginIndex } from '@/shared/openapi-cache';\n\nimport type { EndpointSummary } from '@/shared/openapi-cache';\n\nexport interface DiscoveryResult {\n origin: string;\n source: 'openapi';\n endpoints: EndpointSummary[];\n instructions?: string;\n}\n\n/**\n * Fetch llms.txt instructions from an origin (best-effort).\n */\nasync function fetchLlmsTxt(\n surface: string,\n origin: string\n): Promise<string | null> {\n const llmsTxtUrl = `${origin}/llms.txt`;\n log.debug(`Fetching llms.txt from: ${llmsTxtUrl}`);\n\n const result = await safeFetch(\n surface,\n new Request(llmsTxtUrl, { headers: { Accept: 'text/plain' } })\n );\n\n if (result.isErr()) return null;\n\n const parseResult = await safeParseResponse(surface, result.value);\n if (parseResult.isErr() || parseResult.value.type !== 'text') return null;\n\n return parseResult.value.data;\n}\n\n/**\n * Discover payment-protected resources on an origin.\n * Fetches OpenAPI spec, builds endpoint index, and fetches llms.txt instructions.\n *\n * Returns DiscoveryResult on success, null if no spec/endpoints found.\n */\nexport async function discoverResources(\n surface: string,\n url: string\n): Promise<DiscoveryResult | null> {\n const origin = URL.canParse(url) ? new URL(url).origin : url;\n\n log.info(`Discovering resources for origin: ${origin}`);\n\n // Fetch OpenAPI spec and llms.txt in parallel\n const [spec, instructions] = await Promise.all([\n fetchOpenApiSpec(origin),\n fetchLlmsTxt(surface, origin),\n ]);\n\n if (!spec?.paths) {\n log.debug(\n `No OpenAPI spec found for ${origin}. Tried: /openapi.json, /.well-known/openapi.json, /.well-known/x402, /.well-known/mpp`\n );\n return null;\n }\n\n // Build the lightweight endpoint index\n const endpoints = await getOriginIndex(origin);\n\n if (!endpoints || endpoints.length === 0) {\n log.debug(`OpenAPI spec found for ${origin} but no endpoints extracted`);\n return null;\n }\n\n log.info(`Found ${endpoints.length} endpoints for: ${origin}`);\n\n return {\n origin,\n source: 'openapi',\n endpoints: endpoints.map(({ path, method, summary, price, protocols }) => ({\n path,\n method,\n summary,\n ...(price ? { price } : {}),\n ...(protocols ? { protocols } : {}),\n })),\n ...(instructions ? { instructions } : {}),\n };\n}\n","import { formatUnits } from 'viem';\n\nimport { ok } from '@agentcash/neverthrow';\n\nimport { getBalance } from '@/shared/balance';\nimport { getDepositLink } from '@/shared/utils';\nimport { TEMPO_TOKEN_ADDRESS } from '@/shared/tempo';\nimport { getTempoBalance } from '@/shared/tempo-balance';\nimport { log } from '@/shared/log';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Address } from 'viem';\n\ninterface ChainBalance {\n chain: string;\n balance: number;\n}\n\nexport interface WalletInfoResult {\n address: Address;\n balance: number;\n chains: ChainBalance[];\n isNewWallet: boolean;\n depositLink: string;\n message?: string;\n}\n\n/**\n * Get wallet info including balance and deposit link.\n * Returns summed balance across Base and Tempo, with per-chain breakdown.\n */\nexport async function getWalletInfo(\n surface: string,\n address: Address,\n flags: GlobalFlags\n) {\n const [balanceResult, tempoResult] = await Promise.all([\n getBalance({ address, flags, surface }),\n getTempoBalance({ address, tokenAddress: TEMPO_TOKEN_ADDRESS })\n .then(r => Number(formatUnits(r.balance, 6)))\n .catch(e => {\n log.info(`Failed to fetch Tempo balance: ${e}`);\n return null;\n }),\n ]);\n\n if (balanceResult.isErr()) {\n return balanceResult;\n }\n\n const baseBalance = balanceResult.value.balance;\n const tempoBalance = tempoResult ?? 0;\n const totalBalance = baseBalance + tempoBalance;\n\n const chains: ChainBalance[] = [\n { chain: 'Base', balance: baseBalance },\n { chain: 'Tempo', balance: tempoBalance },\n ];\n\n return ok<WalletInfoResult>({\n address,\n balance: totalBalance,\n chains,\n isNewWallet: totalBalance === 0,\n depositLink: getDepositLink(address, flags),\n ...(totalBalance < 2.5 && totalBalance > 0\n ? { message: 'Your balance is low. Consider topping it up' }\n : {}),\n });\n}\n","import type { Address } from 'viem';\n\n/** Authenticated RPC for Tempo Mainnet */\nexport const TEMPO_RPC_URL =\n 'https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz';\n\n/** pathUSD token on Tempo Mainnet */\nexport const TEMPO_TOKEN_ADDRESS: Address =\n '0x20c0000000000000000000000000000000000000';\n","import { tempo } from 'viem/chains';\n\nimport type { Address } from 'viem';\n\nconst MPPSCAN_BASE = 'https://mppscan.com';\n\ninterface GetTempoBalanceResult {\n chainId: number;\n chainName: string;\n balance: bigint;\n tokenAddress: Address;\n}\n\nexport async function getTempoBalance({\n address,\n tokenAddress,\n}: {\n address: Address;\n tokenAddress: Address;\n}): Promise<GetTempoBalanceResult> {\n const url = `${MPPSCAN_BASE}/api/balance/${address}`;\n\n const res = await fetch(url, {\n method: 'GET',\n headers: { accept: 'application/json' },\n });\n\n if (!res.ok) {\n throw new Error(`mppscan balance request failed: ${res.status}`);\n }\n\n const data = (await res.json()) as { balance: string };\n\n return {\n chainId: tempo.id,\n chainName: tempo.name,\n balance: BigInt(data.balance),\n tokenAddress,\n };\n}\n","import { z } from 'zod';\nimport { ok } from '@agentcash/neverthrow';\n\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { getBaseUrl } from '@/shared/utils';\nimport { MCP_VERSION } from '@/shared/version';\n\nimport type { Address } from 'viem';\n\n/**\n * Error report input\n */\ninterface ErrorReportInput {\n tool: string;\n summary: string;\n errorMessage: string;\n resource?: string;\n stack?: string;\n fullReport?: string;\n}\n\n/**\n * Error report result\n */\nexport interface ErrorReportResult {\n submitted: true;\n reportId: string;\n message: string;\n}\n\n/**\n * Submit an error report to agentcash telemetry.\n */\nexport async function submitErrorReport(\n surface: string,\n input: ErrorReportInput,\n address: Address,\n dev: boolean\n) {\n const telemetryResult = await safeFetchJson(\n surface,\n new Request(`${getBaseUrl(dev)}/api/telemetry`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n walletAddress: address,\n mcpVersion: MCP_VERSION,\n reportedAt: new Date().toISOString(),\n }),\n }),\n z.object({\n reportId: z.string(),\n })\n );\n\n if (telemetryResult.isErr()) {\n return telemetryResult;\n }\n\n const { reportId } = telemetryResult.value;\n\n return ok<ErrorReportResult>({\n submitted: true,\n reportId,\n message:\n 'Error report submitted successfully. The agentcash team will investigate.',\n });\n}\n"],"mappings":"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","names":["errorType","formatUnits","formatUnits"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getWalletInfo,
|
|
3
3
|
submitErrorReport
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FM2E2QVT.js";
|
|
5
5
|
|
|
6
6
|
// src/shared/operations/index.ts
|
|
7
7
|
async function getWalletInfo2(surface, address, flags) {
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
getWalletInfo2 as getWalletInfo,
|
|
20
20
|
submitErrorReport2 as submitErrorReport
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-QCFNW6VN.js.map
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
tokenStringToNumber,
|
|
13
13
|
x402Err,
|
|
14
14
|
x402Ok
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-FM2E2QVT.js";
|
|
16
16
|
import {
|
|
17
17
|
fetchErr,
|
|
18
18
|
fetchOk,
|
|
@@ -306,4 +306,4 @@ export {
|
|
|
306
306
|
buildRequest,
|
|
307
307
|
createFetchWithPayment
|
|
308
308
|
};
|
|
309
|
-
//# sourceMappingURL=chunk-
|
|
309
|
+
//# sourceMappingURL=chunk-VVTMCXSK.js.map
|
|
@@ -2,16 +2,15 @@ import {
|
|
|
2
2
|
buildRequest,
|
|
3
3
|
createFetchWithPayment,
|
|
4
4
|
requestSchema
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VVTMCXSK.js";
|
|
6
6
|
import {
|
|
7
|
+
TEMPO_RPC_URL,
|
|
7
8
|
checkEndpoint,
|
|
8
9
|
discoverResources,
|
|
9
|
-
getTempoChainId,
|
|
10
|
-
getTempoRpcUrl,
|
|
11
10
|
getWalletInfo,
|
|
12
11
|
submitErrorReport
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-FM2E2QVT.js";
|
|
13
|
+
import "./chunk-DZC5MTYY.js";
|
|
15
14
|
import {
|
|
16
15
|
DEFAULT_NETWORK,
|
|
17
16
|
getWallet,
|
|
@@ -28,7 +27,8 @@ import "./chunk-ISR6DJ53.js";
|
|
|
28
27
|
import { randomBytes } from "crypto";
|
|
29
28
|
import { x402Client, x402HTTPClient } from "@x402/core/client";
|
|
30
29
|
import { ExactEvmScheme } from "@x402/evm/exact/client";
|
|
31
|
-
import { Mpay, tempo } from "mpay/client";
|
|
30
|
+
import { Mpay, tempo as tempoMethod } from "mpay/client";
|
|
31
|
+
import { tempo } from "viem/chains";
|
|
32
32
|
|
|
33
33
|
// src/cli/output/types.ts
|
|
34
34
|
var errorCodeToExitCode = {
|
|
@@ -264,9 +264,9 @@ async function fetchCommand(args, flags) {
|
|
|
264
264
|
const x402HttpClient = new x402HTTPClient(coreClient);
|
|
265
265
|
const mpayClient = Mpay.create({
|
|
266
266
|
methods: [
|
|
267
|
-
|
|
267
|
+
tempoMethod({
|
|
268
268
|
account,
|
|
269
|
-
rpcUrl: { [
|
|
269
|
+
rpcUrl: { [tempo.id]: TEMPO_RPC_URL }
|
|
270
270
|
})
|
|
271
271
|
]
|
|
272
272
|
});
|
|
@@ -452,7 +452,7 @@ async function reportErrorCommand(args, flags) {
|
|
|
452
452
|
|
|
453
453
|
// src/cli/commands/server.ts
|
|
454
454
|
async function serverCommand(flags) {
|
|
455
|
-
const { startServer } = await import("./server-
|
|
455
|
+
const { startServer } = await import("./server-WCNK52XR.js");
|
|
456
456
|
await startServer(flags);
|
|
457
457
|
}
|
|
458
458
|
export {
|
|
@@ -464,4 +464,4 @@ export {
|
|
|
464
464
|
walletInfoCommand,
|
|
465
465
|
walletRedeemCommand
|
|
466
466
|
};
|
|
467
|
-
//# sourceMappingURL=commands-
|
|
467
|
+
//# sourceMappingURL=commands-DE2RIAL5.js.map
|