agentcash 0.5.0-mpp.0 → 0.6.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/dist/cjs/run-server.cjs +54 -54
- package/dist/esm/{chunk-UWU3MOEC.js → chunk-BOGGLB3Y.js} +4 -4
- package/dist/esm/{chunk-CRYNS6Y3.js → chunk-C73Z5QPI.js} +4 -4
- package/dist/esm/{chunk-W3OHV4AX.js → chunk-KFYFGEC4.js} +2 -2
- package/dist/esm/{chunk-OS6MJ6OG.js → chunk-LOEINYA7.js} +3 -3
- package/dist/esm/chunk-N3WKW6F4.js +7 -0
- package/dist/esm/{chunk-HV7BGP42.js.map → chunk-N3WKW6F4.js.map} +1 -1
- package/dist/esm/{chunk-KEPI2YKC.js → chunk-THRXTZU6.js} +2 -2
- package/dist/esm/{chunk-G4TH4S7M.js → chunk-UFSCGP67.js} +2 -5
- package/dist/esm/chunk-UFSCGP67.js.map +1 -0
- package/dist/esm/{chunk-CK3GCQYQ.js → chunk-X5H7CNL7.js} +2 -2
- package/dist/esm/{commands-JOZ6UKA6.js → commands-RO7I7ERX.js} +134 -21
- package/dist/esm/commands-RO7I7ERX.js.map +1 -0
- package/dist/esm/{fund-C24TLKK6.js → fund-BVBH76XD.js} +4 -4
- package/dist/esm/index.js +45 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{install-R2P4LXLN.js → install-WAPHWJ54.js} +5 -5
- package/dist/esm/lib.js +2 -2
- package/dist/esm/{server-EUPBSNJX.js → server-VK4ASVX7.js} +9 -9
- package/dist/esm/server-VK4ASVX7.js.map +1 -0
- package/dist/esm/shared/operations/index.js +5 -5
- package/package.json +4 -4
- package/dist/esm/chunk-G4TH4S7M.js.map +0 -1
- package/dist/esm/chunk-HV7BGP42.js +0 -7
- package/dist/esm/commands-JOZ6UKA6.js.map +0 -1
- package/dist/esm/server-EUPBSNJX.js.map +0 -1
- /package/dist/esm/{chunk-UWU3MOEC.js.map → chunk-BOGGLB3Y.js.map} +0 -0
- /package/dist/esm/{chunk-CRYNS6Y3.js.map → chunk-C73Z5QPI.js.map} +0 -0
- /package/dist/esm/{chunk-W3OHV4AX.js.map → chunk-KFYFGEC4.js.map} +0 -0
- /package/dist/esm/{chunk-OS6MJ6OG.js.map → chunk-LOEINYA7.js.map} +0 -0
- /package/dist/esm/{chunk-KEPI2YKC.js.map → chunk-THRXTZU6.js.map} +0 -0
- /package/dist/esm/{chunk-CK3GCQYQ.js.map → chunk-X5H7CNL7.js.map} +0 -0
- /package/dist/esm/{fund-C24TLKK6.js.map → fund-BVBH76XD.js.map} +0 -0
- /package/dist/esm/{install-R2P4LXLN.js.map → install-WAPHWJ54.js.map} +0 -0
|
@@ -5,27 +5,32 @@ import {
|
|
|
5
5
|
buildRequest,
|
|
6
6
|
createFetchWithPayment,
|
|
7
7
|
requestSchema
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C73Z5QPI.js";
|
|
9
9
|
import {
|
|
10
10
|
TEMPO_RPC_URL,
|
|
11
11
|
getWalletInfo,
|
|
12
12
|
submitErrorReport
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BOGGLB3Y.js";
|
|
14
14
|
import {
|
|
15
15
|
checkEndpoint,
|
|
16
|
-
discoverResources
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
discoverResources,
|
|
17
|
+
getSiwxExtension,
|
|
18
|
+
safeCreateSIWxPayload,
|
|
19
|
+
safeGetPaymentRequired
|
|
20
|
+
} from "./chunk-X5H7CNL7.js";
|
|
21
|
+
import "./chunk-N3WKW6F4.js";
|
|
22
|
+
import "./chunk-THRXTZU6.js";
|
|
20
23
|
import {
|
|
21
24
|
DEFAULT_NETWORK,
|
|
22
25
|
getWallet,
|
|
23
26
|
redeemInviteCode,
|
|
24
27
|
safeParseJson,
|
|
25
28
|
toJsonObject
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-KFYFGEC4.js";
|
|
30
|
+
import "./chunk-UFSCGP67.js";
|
|
28
31
|
import {
|
|
32
|
+
DEFAULT_USER_FETCH_TIMEOUT,
|
|
33
|
+
safeFetch,
|
|
29
34
|
safeParseResponse
|
|
30
35
|
} from "./chunk-TRPO7BKD.js";
|
|
31
36
|
import "./chunk-ISR6DJ53.js";
|
|
@@ -382,15 +387,122 @@ function extractJsonErrorMessage(body) {
|
|
|
382
387
|
return void 0;
|
|
383
388
|
}
|
|
384
389
|
|
|
385
|
-
// src/cli/commands/
|
|
390
|
+
// src/cli/commands/fetch-auth.ts
|
|
386
391
|
import { randomBytes as randomBytes2 } from "crypto";
|
|
387
|
-
|
|
388
|
-
|
|
392
|
+
import { x402Client as x402Client2, x402HTTPClient as x402HTTPClient2 } from "@x402/core/client";
|
|
393
|
+
import { encodeSIWxHeader } from "@x402/extensions/sign-in-with-x";
|
|
394
|
+
var SURFACE2 = "cli:fetch-auth";
|
|
395
|
+
async function fetchAuthCommand(args, flags) {
|
|
389
396
|
const { account } = await getWalletOrExit(flags);
|
|
390
397
|
const sessionId = randomBytes2(16).toString("hex");
|
|
391
398
|
const input = parseRequestInput(SURFACE2, args, flags);
|
|
399
|
+
const httpClient = new x402HTTPClient2(new x402Client2());
|
|
400
|
+
const firstResult = await safeFetch(
|
|
401
|
+
SURFACE2,
|
|
402
|
+
buildRequest({ input, address: account.address, sessionId }),
|
|
403
|
+
input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT
|
|
404
|
+
);
|
|
405
|
+
if (firstResult.isErr()) {
|
|
406
|
+
return outputAndExit(fromNeverthrowError(firstResult), flags);
|
|
407
|
+
}
|
|
408
|
+
const firstResponse = firstResult.value;
|
|
409
|
+
if (firstResponse.status !== 402) {
|
|
410
|
+
if (!firstResponse.ok) {
|
|
411
|
+
return outputAndExit(
|
|
412
|
+
errorResponse({
|
|
413
|
+
code: "HTTP_ERROR",
|
|
414
|
+
message: firstResponse.statusText,
|
|
415
|
+
surface: SURFACE2,
|
|
416
|
+
cause: "http",
|
|
417
|
+
details: { statusCode: firstResponse.status }
|
|
418
|
+
}),
|
|
419
|
+
flags
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
const parseResult2 = await safeParseResponse(SURFACE2, firstResponse);
|
|
423
|
+
if (parseResult2.isErr()) {
|
|
424
|
+
return outputAndExit(fromNeverthrowError(parseResult2), flags);
|
|
425
|
+
}
|
|
426
|
+
const data2 = parseResult2.value.type === "json" ? parseResult2.value.data : parseResult2.value.type === "text" ? parseResult2.value.data : { type: parseResult2.value.type };
|
|
427
|
+
return outputAndExit(successResponse(data2), flags);
|
|
428
|
+
}
|
|
429
|
+
const paymentRequiredResult = await safeGetPaymentRequired(
|
|
430
|
+
SURFACE2,
|
|
431
|
+
httpClient,
|
|
432
|
+
firstResponse
|
|
433
|
+
);
|
|
434
|
+
if (paymentRequiredResult.isErr()) {
|
|
435
|
+
return outputAndExit(fromNeverthrowError(paymentRequiredResult), flags);
|
|
436
|
+
}
|
|
437
|
+
const paymentRequired = paymentRequiredResult.value;
|
|
438
|
+
const siwxExtension = getSiwxExtension(paymentRequired.extensions);
|
|
439
|
+
if (!siwxExtension) {
|
|
440
|
+
return outputAndExit(
|
|
441
|
+
errorResponse({
|
|
442
|
+
code: "GENERAL_ERROR",
|
|
443
|
+
message: "Endpoint returned 402 but no sign-in-with-x extension found. Use `fetch` for paid endpoints.",
|
|
444
|
+
surface: SURFACE2,
|
|
445
|
+
cause: "no_siwx_extension",
|
|
446
|
+
details: {
|
|
447
|
+
extensions: Object.keys(paymentRequired.extensions ?? {})
|
|
448
|
+
}
|
|
449
|
+
}),
|
|
450
|
+
flags
|
|
451
|
+
);
|
|
452
|
+
}
|
|
453
|
+
const payloadResult = await safeCreateSIWxPayload(
|
|
454
|
+
SURFACE2,
|
|
455
|
+
siwxExtension,
|
|
456
|
+
account
|
|
457
|
+
);
|
|
458
|
+
if (payloadResult.isErr()) {
|
|
459
|
+
return outputAndExit(fromNeverthrowError(payloadResult), flags);
|
|
460
|
+
}
|
|
461
|
+
const siwxHeader = encodeSIWxHeader(payloadResult.value);
|
|
462
|
+
const authedRequest = buildRequest({
|
|
463
|
+
input,
|
|
464
|
+
address: account.address,
|
|
465
|
+
sessionId
|
|
466
|
+
});
|
|
467
|
+
authedRequest.headers.set("SIGN-IN-WITH-X", siwxHeader);
|
|
468
|
+
const authedResult = await safeFetch(
|
|
469
|
+
SURFACE2,
|
|
470
|
+
authedRequest,
|
|
471
|
+
input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT
|
|
472
|
+
);
|
|
473
|
+
if (authedResult.isErr()) {
|
|
474
|
+
return outputAndExit(fromNeverthrowError(authedResult), flags);
|
|
475
|
+
}
|
|
476
|
+
const authedResponse = authedResult.value;
|
|
477
|
+
if (!authedResponse.ok) {
|
|
478
|
+
return outputAndExit(
|
|
479
|
+
errorResponse({
|
|
480
|
+
code: "HTTP_ERROR",
|
|
481
|
+
message: authedResponse.statusText,
|
|
482
|
+
surface: SURFACE2,
|
|
483
|
+
cause: "http",
|
|
484
|
+
details: { statusCode: authedResponse.status }
|
|
485
|
+
}),
|
|
486
|
+
flags
|
|
487
|
+
);
|
|
488
|
+
}
|
|
489
|
+
const parseResult = await safeParseResponse(SURFACE2, authedResponse);
|
|
490
|
+
if (parseResult.isErr()) {
|
|
491
|
+
return outputAndExit(fromNeverthrowError(parseResult), flags);
|
|
492
|
+
}
|
|
493
|
+
const data = parseResult.value.type === "json" ? parseResult.value.data : parseResult.value.type === "text" ? parseResult.value.data : { type: parseResult.value.type };
|
|
494
|
+
outputAndExit(successResponse(data), flags);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
// src/cli/commands/check.ts
|
|
498
|
+
import { randomBytes as randomBytes3 } from "crypto";
|
|
499
|
+
var SURFACE3 = "cli:check";
|
|
500
|
+
async function checkCommand(args, flags) {
|
|
501
|
+
const { account } = await getWalletOrExit(flags);
|
|
502
|
+
const sessionId = randomBytes3(16).toString("hex");
|
|
503
|
+
const input = parseRequestInput(SURFACE3, args, flags);
|
|
392
504
|
const result = await checkEndpoint({
|
|
393
|
-
surface:
|
|
505
|
+
surface: SURFACE3,
|
|
394
506
|
url: input.url,
|
|
395
507
|
methods: input.method ? [input.method] : void 0,
|
|
396
508
|
body: input.body,
|
|
@@ -434,9 +546,9 @@ async function discoverCommand(args, flags) {
|
|
|
434
546
|
}
|
|
435
547
|
|
|
436
548
|
// src/cli/commands/register.ts
|
|
437
|
-
var
|
|
549
|
+
var SURFACE4 = "cli:register";
|
|
438
550
|
async function registerCommand(args, flags) {
|
|
439
|
-
const result = await registerOrigin(
|
|
551
|
+
const result = await registerOrigin(SURFACE4, { url: args.url }, flags.dev);
|
|
440
552
|
if (result.isErr()) {
|
|
441
553
|
return outputAndExit(fromNeverthrowError(result), flags);
|
|
442
554
|
}
|
|
@@ -455,10 +567,10 @@ async function registerCommand(args, flags) {
|
|
|
455
567
|
}
|
|
456
568
|
|
|
457
569
|
// src/cli/commands/wallet.ts
|
|
458
|
-
var
|
|
570
|
+
var SURFACE5 = "cli:wallet";
|
|
459
571
|
async function walletInfoCommand(_args, flags) {
|
|
460
572
|
const { account } = await getWalletOrExit(flags);
|
|
461
|
-
const result = await getWalletInfo(
|
|
573
|
+
const result = await getWalletInfo(SURFACE5, account.address, flags);
|
|
462
574
|
if (result.isErr()) {
|
|
463
575
|
return outputAndExit(fromNeverthrowError(result), flags);
|
|
464
576
|
}
|
|
@@ -483,7 +595,7 @@ async function walletRedeemCommand(args, flags) {
|
|
|
483
595
|
code: args.code,
|
|
484
596
|
dev: flags.dev,
|
|
485
597
|
address: account.address,
|
|
486
|
-
surface:
|
|
598
|
+
surface: SURFACE5
|
|
487
599
|
});
|
|
488
600
|
if (result.isErr()) {
|
|
489
601
|
return outputAndExit(fromNeverthrowError(result), flags);
|
|
@@ -499,11 +611,11 @@ async function walletRedeemCommand(args, flags) {
|
|
|
499
611
|
}
|
|
500
612
|
|
|
501
613
|
// src/cli/commands/report-error.ts
|
|
502
|
-
var
|
|
614
|
+
var SURFACE6 = "cli:report-error";
|
|
503
615
|
async function reportErrorCommand(args, flags) {
|
|
504
616
|
const { account } = await getWalletOrExit(flags);
|
|
505
617
|
const result = await submitErrorReport(
|
|
506
|
-
|
|
618
|
+
SURFACE6,
|
|
507
619
|
{
|
|
508
620
|
tool: args.tool,
|
|
509
621
|
summary: args.summary,
|
|
@@ -530,12 +642,13 @@ async function reportErrorCommand(args, flags) {
|
|
|
530
642
|
|
|
531
643
|
// src/cli/commands/server.ts
|
|
532
644
|
async function serverCommand(flags) {
|
|
533
|
-
const { startServer } = await import("./server-
|
|
645
|
+
const { startServer } = await import("./server-VK4ASVX7.js");
|
|
534
646
|
await startServer(flags);
|
|
535
647
|
}
|
|
536
648
|
export {
|
|
537
649
|
checkCommand,
|
|
538
650
|
discoverCommand,
|
|
651
|
+
fetchAuthCommand,
|
|
539
652
|
fetchCommand,
|
|
540
653
|
registerCommand,
|
|
541
654
|
reportErrorCommand,
|
|
@@ -543,4 +656,4 @@ export {
|
|
|
543
656
|
walletInfoCommand,
|
|
544
657
|
walletRedeemCommand
|
|
545
658
|
};
|
|
546
|
-
//# sourceMappingURL=commands-
|
|
659
|
+
//# sourceMappingURL=commands-RO7I7ERX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/fetch.ts","../../src/cli/output/types.ts","../../src/cli/output/format.ts","../../src/cli/output/response.ts","../../src/cli/commands/lib/get-wallet-or-exit.ts","../../src/cli/commands/lib/parse-request-input.ts","../../src/cli/commands/fetch-auth.ts","../../src/cli/commands/check.ts","../../src/cli/commands/discover.ts","../../src/cli/commands/register.ts","../../src/cli/commands/wallet.ts","../../src/cli/commands/report-error.ts","../../src/cli/commands/server.ts"],"sourcesContent":["import { randomBytes } from 'crypto';\n\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\nimport { ExactEvmScheme } from '@x402/evm/exact/client';\nimport { Mppx, tempo as tempoMethod } from 'mppx/client';\nimport { createClient, http } from 'viem';\nimport { tempo } from 'viem/chains';\n\nimport {\n successResponse,\n errorResponse,\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { buildRequest } from '@/server/tools/lib/request';\nimport { DEFAULT_NETWORK } from '@/shared/networks';\nimport { TEMPO_RPC_URL } from '@/shared/tempo';\nimport { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { createFetchWithPayment } from '@/shared/operations/fetch-with-payment';\nimport { getWalletOrExit, parseRequestInput } from './lib';\n\nimport type { GlobalFlags } from '@/types';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\n\nconst SURFACE = 'cli:fetch';\n\ninterface FetchArgs {\n url: string;\n method?: string;\n body?: string;\n headers?: string;\n paymentMethod?: string;\n}\n\nexport async function fetchCommand(\n args: FetchArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n const sessionId = randomBytes(16).toString('hex');\n\n const input = parseRequestInput(SURFACE, args, flags);\n\n // Set up x402 client\n const coreClient = x402Client.fromConfig({\n schemes: [\n { network: DEFAULT_NETWORK, client: new ExactEvmScheme(account) },\n ],\n });\n const x402HttpClient = new x402HTTPClient(coreClient);\n\n // Set up MPP client (polyfill: false — we handle 402 retries ourselves)\n const mppxClient = Mppx.create({\n polyfill: false,\n methods: [\n tempoMethod({\n account,\n getClient: () =>\n createClient({ chain: tempo, transport: http(TEMPO_RPC_URL) }),\n }),\n ],\n });\n\n const provider = flags.provider ?? account.address;\n const paymentMethod = (args.paymentMethod ?? 'auto') as\n | 'x402'\n | 'mpp'\n | 'auto';\n\n const request = buildRequest({\n input,\n address: account.address,\n sessionId,\n provider,\n });\n\n const fetchResult = await createFetchWithPayment({\n surface: SURFACE,\n clients: { x402: x402HttpClient, mpp: mppxClient },\n paymentMethod,\n account,\n flags,\n })(request);\n\n if (fetchResult.isErr()) {\n return outputAndExit(fromNeverthrowError(fetchResult), flags);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n const parseResult = await safeParseResponse(SURFACE, response);\n const details: JsonObject = { statusCode: response.status };\n let serverMessage: string | undefined;\n if (parseResult.isOk()) {\n const { type } = parseResult.value;\n if (type === 'json') {\n details.body = parseResult.value.data;\n serverMessage = extractJsonErrorMessage(parseResult.value.data);\n } else if (type === 'text') {\n details.body = parseResult.value.data;\n serverMessage = parseResult.value.data;\n } else {\n details.bodyType = type;\n }\n }\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: serverMessage ?? response.statusText,\n surface: SURFACE,\n cause: 'http',\n details,\n }),\n flags\n );\n }\n\n const parseResponseResult = await safeParseResponse(SURFACE, response);\n if (parseResponseResult.isErr()) {\n return outputAndExit(fromNeverthrowError(parseResponseResult), flags);\n }\n\n // Build response data\n const data =\n parseResponseResult.value.type === 'json'\n ? parseResponseResult.value.data\n : parseResponseResult.value.type === 'text'\n ? parseResponseResult.value.data\n : { type: parseResponseResult.value.type };\n\n // Build metadata from paymentInfo\n const metadata = paymentInfo\n ? {\n protocol: paymentInfo.protocol,\n ...(paymentInfo.price ? { price: paymentInfo.price } : {}),\n ...(paymentInfo.payment ? { payment: paymentInfo.payment } : {}),\n }\n : undefined;\n\n outputAndExit(successResponse(data, metadata), flags);\n}\n\n/**\n * Extract an error message from a JSON response body.\n * Handles common patterns: { error: \"msg\" }, { error: { message: \"msg\" } }, { message: \"msg\" }\n */\nfunction extractJsonErrorMessage(body: JsonObject): string | undefined {\n if (typeof body === 'object' && body !== null) {\n const obj = body as Record<string, unknown>;\n if (typeof obj.error === 'string') return obj.error;\n if (\n typeof obj.error === 'object' &&\n obj.error !== null &&\n typeof (obj.error as Record<string, unknown>).message === 'string'\n ) {\n return (obj.error as Record<string, unknown>).message as string;\n }\n if (typeof obj.message === 'string') return obj.message;\n }\n return undefined;\n}\n","import type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { PaymentProtocol } from '@/shared/protocol';\n\n/**\n * Exit codes for CLI commands\n * Allows agents to programmatically determine error types\n */\nexport enum ExitCode {\n Success = 0,\n GeneralError = 1,\n InsufficientBalance = 2,\n NetworkError = 3,\n PaymentFailed = 4,\n InvalidInput = 5,\n}\n\n/**\n * Error codes for structured error responses\n */\nexport type ErrorCode =\n | 'GENERAL_ERROR'\n | 'INSUFFICIENT_BALANCE'\n | 'NETWORK_ERROR'\n | 'PAYMENT_FAILED'\n | 'INVALID_INPUT'\n | 'WALLET_ERROR'\n | 'PARSE_ERROR'\n | 'HTTP_ERROR'\n | 'X402_ERROR';\n\n/**\n * Maps error codes to exit codes\n */\nexport const errorCodeToExitCode: Record<ErrorCode, ExitCode> = {\n GENERAL_ERROR: ExitCode.GeneralError,\n INSUFFICIENT_BALANCE: ExitCode.InsufficientBalance,\n NETWORK_ERROR: ExitCode.NetworkError,\n PAYMENT_FAILED: ExitCode.PaymentFailed,\n INVALID_INPUT: ExitCode.InvalidInput,\n WALLET_ERROR: ExitCode.GeneralError,\n PARSE_ERROR: ExitCode.InvalidInput,\n HTTP_ERROR: ExitCode.NetworkError,\n X402_ERROR: ExitCode.PaymentFailed,\n};\n\n/**\n * Payment metadata included in successful paid responses\n */\nexport interface PaymentMetadata {\n success: boolean;\n transactionHash?: string;\n}\n\n/**\n * Metadata included in CLI responses\n */\nexport interface ResponseMetadata {\n protocol?: PaymentProtocol;\n price?: string;\n payment?: PaymentMetadata;\n}\n\n/**\n * Successful CLI response\n */\nexport interface CliSuccessResponse {\n success: true;\n data: JsonObject | string;\n metadata?: ResponseMetadata;\n}\n\n/**\n * Error details in CLI response\n */\nexport interface CliErrorDetails {\n code: ErrorCode;\n message: string;\n surface?: string;\n cause?: string;\n details?: JsonObject;\n}\n\n/**\n * Failed CLI response\n */\nexport interface CliErrorResponse {\n success: false;\n error: CliErrorDetails;\n}\n\n/**\n * Union type for all CLI responses\n */\nexport type CliResponse = CliSuccessResponse | CliErrorResponse;\n\n/**\n * Output format options\n */\nexport type OutputFormat = 'json' | 'pretty';\n","import type { OutputFormat } from './types';\n\n/**\n * Detect if stdout is a TTY (interactive terminal)\n */\nfunction isTTY(): boolean {\n return process.stdout.isTTY ?? false;\n}\n\n/**\n * Determine output format based on flags and environment\n * - Explicit --format flag takes precedence\n * - Non-TTY (piped) defaults to json\n * - TTY (interactive) defaults to pretty\n */\nexport function getOutputFormat(formatFlag?: string): OutputFormat {\n if (formatFlag === 'json' || formatFlag === 'pretty') {\n return formatFlag;\n }\n return isTTY() ? 'pretty' : 'json';\n}\n\n/**\n * Check if quiet mode is enabled (suppress stderr)\n */\nexport function isQuiet(quietFlag?: boolean): boolean {\n return quietFlag ?? false;\n}\n","import chalk from 'chalk';\n\nimport { getOutputFormat, isQuiet } from './format';\nimport {\n ExitCode,\n errorCodeToExitCode,\n type CliErrorDetails,\n type CliErrorResponse,\n type CliResponse,\n type CliSuccessResponse,\n type ErrorCode,\n type OutputFormat,\n type ResponseMetadata,\n} from './types';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\n\n/**\n * Output flags that can be passed to commands\n */\nexport interface OutputFlags {\n format?: string;\n quiet?: boolean;\n verbose?: boolean;\n}\n\n/**\n * Create a success response\n */\nexport function successResponse(\n data: JsonObject | string,\n metadata?: ResponseMetadata\n): CliSuccessResponse {\n return {\n success: true,\n data,\n ...(metadata ? { metadata } : {}),\n };\n}\n\n/**\n * Create an error response\n */\nexport function errorResponse(error: CliErrorDetails): CliErrorResponse {\n return {\n success: false,\n error,\n };\n}\n\n/**\n * Convert a neverthrow error to a CLI error response\n */\nexport function fromNeverthrowError(\n err: Err<unknown, BaseError<string>>,\n codeOverride?: ErrorCode\n): CliErrorResponse {\n const { error } = err;\n const code = codeOverride ?? mapCauseToErrorCode(error.cause);\n\n return errorResponse({\n code,\n message: error.message,\n surface: error.surface,\n cause: error.cause,\n });\n}\n\n/**\n * Map error cause to error code\n */\nfunction mapCauseToErrorCode(cause: string): ErrorCode {\n switch (cause) {\n case 'network':\n return 'NETWORK_ERROR';\n case 'http':\n return 'HTTP_ERROR';\n case 'parse':\n return 'PARSE_ERROR';\n case 'insufficient_balance':\n return 'INSUFFICIENT_BALANCE';\n case 'payment_failed':\n case 'payment_already_attempted':\n return 'PAYMENT_FAILED';\n case 'invalid_input':\n case 'validation':\n return 'INVALID_INPUT';\n case 'wallet':\n case 'file_not_readable':\n return 'WALLET_ERROR';\n default:\n return 'GENERAL_ERROR';\n }\n}\n\nconst MAX_ERROR_MESSAGE_LENGTH = 200;\n\n/**\n * Truncate a string to a max length, appending \"...\" if truncated.\n */\nfunction truncate(str: string, max: number): [string, boolean] {\n if (str.length <= max) return [str, false];\n return [str.slice(0, max) + '...', true];\n}\n\n/**\n * Format error fields for output.\n * Truncates the message unless verbose. Verbose also includes raw details.\n */\nfunction formatError(error: CliErrorDetails, verbose: boolean) {\n const statusCode = (error.details?.statusCode as number) ?? undefined;\n const [message, truncated] = verbose\n ? [error.message, false]\n : truncate(error.message, MAX_ERROR_MESSAGE_LENGTH);\n return { statusCode, message, truncated };\n}\n\n/**\n * Build a compact error object for JSON output (no redundant body).\n * Verbose mode includes the full details.\n */\nfunction buildJsonError(error: CliErrorDetails, verbose: boolean) {\n const { statusCode, message, truncated } = formatError(error, verbose);\n return {\n code: error.code,\n message,\n ...(statusCode != null ? { statusCode } : {}),\n ...(error.surface ? { surface: error.surface } : {}),\n ...(error.cause ? { cause: error.cause } : {}),\n ...(error.details ? { details: error.details } : {}),\n ...(truncated ? { hint: 'Use --verbose for the full error.' } : {}),\n };\n}\n\n/**\n * Format response as JSON string\n */\nfunction formatJson(response: CliResponse, verbose: boolean): string {\n if (response.success) return JSON.stringify(response, null, 2);\n\n return JSON.stringify(\n { success: false, error: buildJsonError(response.error, verbose) },\n null,\n 2\n );\n}\n\n/**\n * Format response as pretty output for TTY\n */\nfunction formatPretty(response: CliResponse, verbose: boolean): string {\n if (response.success) {\n const lines: string[] = [];\n\n // Data\n if (typeof response.data === 'string') {\n lines.push(response.data);\n } else {\n lines.push(JSON.stringify(response.data, null, 2));\n }\n\n // Metadata\n if (response.metadata) {\n lines.push('');\n if (response.metadata.protocol) {\n lines.push(chalk.dim(`Protocol: ${response.metadata.protocol}`));\n }\n if (response.metadata.price) {\n lines.push(chalk.dim(`Price: ${response.metadata.price}`));\n }\n if (response.metadata.payment) {\n const { success, transactionHash } = response.metadata.payment;\n lines.push(\n chalk.dim(\n `Payment: ${success ? chalk.green('✓') : chalk.red('✗')}${transactionHash ? ` (${transactionHash.slice(0, 10)}...)` : ''}`\n )\n );\n }\n }\n\n return lines.join('\\n');\n }\n\n const { error } = response;\n const { statusCode, message, truncated } = formatError(error, verbose);\n\n const prefix = statusCode != null ? `Error (${statusCode})` : 'Error';\n const lines = [\n chalk.red(`${prefix}: ${message}`),\n chalk.dim(`Code: ${error.code}`),\n ];\n\n if (error.surface) lines.push(chalk.dim(`Surface: ${error.surface}`));\n if (error.cause) lines.push(chalk.dim(`Cause: ${error.cause}`));\n\n if (truncated) {\n lines.push(chalk.dim('Use --verbose for the full error.'));\n }\n\n if (error.details) {\n lines.push(chalk.dim(`Details: ${JSON.stringify(error.details, null, 2)}`));\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Output a response to stdout and exit with appropriate code\n */\nexport function outputAndExit(\n response: CliResponse,\n flags: OutputFlags = {}\n): never {\n const format = getOutputFormat(flags.format);\n const quiet = isQuiet(flags.quiet);\n const verbose = flags.verbose ?? false;\n\n output(response, format, quiet, verbose);\n\n const exitCode = response.success\n ? ExitCode.Success\n : errorCodeToExitCode[response.error.code];\n\n process.exit(exitCode);\n}\n\n/**\n * Output a response to stdout without exiting\n */\nfunction output(\n response: CliResponse,\n format: OutputFormat = 'json',\n quiet = false,\n verbose = false\n): void {\n if (quiet) return;\n\n const formatted =\n format === 'json'\n ? formatJson(response, verbose)\n : formatPretty(response, verbose);\n\n console.log(formatted);\n}\n","import {\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\nimport { getWallet } from '@/shared/wallet';\n\nimport type { GlobalFlags } from '@/types';\nimport type { PrivateKeyAccount } from 'viem/accounts';\n\ninterface WalletInfo {\n account: PrivateKeyAccount;\n}\n\n/**\n * Get wallet or exit with error.\n * This function always returns a valid wallet - if getting the wallet fails,\n * it exits the process with an appropriate error.\n */\nexport async function getWalletOrExit(\n flags: GlobalFlags<OutputFlags>\n): Promise<WalletInfo> {\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n outputAndExit(fromNeverthrowError(walletResult, 'WALLET_ERROR'), flags);\n }\n\n return walletResult.value;\n}\n","import type { z } from 'zod';\n\nimport { errorResponse, outputAndExit, type OutputFlags } from '@/cli/output';\nimport { requestSchema } from '@/server/tools/lib/request';\nimport { safeParseJson } from '@/shared/neverthrow/json';\n\nimport type { GlobalFlags } from '@/types';\n\ninterface RawRequestArgs {\n url: string;\n method?: string;\n body?: string;\n headers?: string;\n}\n\ntype RequestInput = z.infer<typeof requestSchema>;\n\n/**\n * Parse and validate CLI request arguments into a typed RequestInput.\n * Exits with error response if parsing fails.\n */\nexport function parseRequestInput(\n surface: string,\n args: RawRequestArgs,\n flags: GlobalFlags<OutputFlags>\n): RequestInput {\n // Parse body JSON if provided\n let parsedBody: unknown;\n if (args.body) {\n const bodyResult = safeParseJson(surface, args.body);\n if (bodyResult.isErr()) {\n outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: `Invalid JSON body: ${args.body}`,\n surface,\n cause: 'invalid_json',\n }),\n flags\n );\n }\n parsedBody = bodyResult.value;\n }\n\n // Parse headers JSON if provided\n let parsedHeaders: Record<string, string> | undefined;\n if (args.headers) {\n const headersResult = safeParseJson(surface, args.headers);\n if (headersResult.isErr()) {\n outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: `Invalid JSON headers: ${args.headers}`,\n surface,\n cause: 'invalid_json',\n }),\n flags\n );\n }\n\n // Validate headers is an object with string values\n const headersValue = headersResult.value;\n if (\n typeof headersValue !== 'object' ||\n headersValue === null ||\n Array.isArray(headersValue)\n ) {\n outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: 'Headers must be an object',\n surface,\n cause: 'invalid_headers',\n }),\n flags\n );\n }\n\n // Validate all values are strings\n const headers: Record<string, string> = {};\n for (const [key, value] of Object.entries(headersValue)) {\n if (typeof value !== 'string') {\n outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: `Header \"${key}\" must be a string, got ${typeof value}`,\n surface,\n cause: 'invalid_headers',\n }),\n flags\n );\n }\n headers[key] = value;\n }\n parsedHeaders = headers;\n }\n\n // Validate full request input\n const inputResult = requestSchema.safeParse({\n url: args.url,\n method: args.method,\n body: parsedBody,\n headers: parsedHeaders ?? {},\n });\n\n if (!inputResult.success) {\n outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: inputResult.error.message,\n surface,\n cause: 'validation',\n }),\n flags\n );\n }\n\n return inputResult.data;\n}\n","import { randomBytes } from 'crypto';\n\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\nimport { encodeSIWxHeader } from '@x402/extensions/sign-in-with-x';\n\nimport {\n successResponse,\n errorResponse,\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { buildRequest } from '@/server/tools/lib/request';\nimport {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeFetch,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport {\n safeGetPaymentRequired,\n safeCreateSIWxPayload,\n} from '@/shared/neverthrow/x402';\nimport { getSiwxExtension } from '@/server/lib/x402-extensions';\nimport { getWalletOrExit, parseRequestInput } from './lib';\n\nimport type { GlobalFlags } from '@/types';\n\nconst SURFACE = 'cli:fetch-auth';\n\ninterface FetchAuthArgs {\n url: string;\n method?: string;\n body?: string;\n headers?: string;\n}\n\nexport async function fetchAuthCommand(\n args: FetchAuthArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n const sessionId = randomBytes(16).toString('hex');\n\n const input = parseRequestInput(SURFACE, args, flags);\n\n const httpClient = new x402HTTPClient(new x402Client());\n\n // Step 1: Make initial request\n const firstResult = await safeFetch(\n SURFACE,\n buildRequest({ input, address: account.address, sessionId }),\n input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT\n );\n\n if (firstResult.isErr()) {\n return outputAndExit(fromNeverthrowError(firstResult), flags);\n }\n\n const firstResponse = firstResult.value;\n\n // Not a 402 — return response as-is\n if (firstResponse.status !== 402) {\n if (!firstResponse.ok) {\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: firstResponse.statusText,\n surface: SURFACE,\n cause: 'http',\n details: { statusCode: firstResponse.status },\n }),\n flags\n );\n }\n\n const parseResult = await safeParseResponse(SURFACE, firstResponse);\n if (parseResult.isErr()) {\n return outputAndExit(fromNeverthrowError(parseResult), flags);\n }\n\n const data =\n parseResult.value.type === 'json'\n ? parseResult.value.data\n : parseResult.value.type === 'text'\n ? parseResult.value.data\n : { type: parseResult.value.type };\n\n return outputAndExit(successResponse(data), flags);\n }\n\n // Step 2: Parse 402 response for SIWX extension\n const paymentRequiredResult = await safeGetPaymentRequired(\n SURFACE,\n httpClient,\n firstResponse\n );\n\n if (paymentRequiredResult.isErr()) {\n return outputAndExit(fromNeverthrowError(paymentRequiredResult), flags);\n }\n\n const paymentRequired = paymentRequiredResult.value;\n const siwxExtension = getSiwxExtension(paymentRequired.extensions);\n\n if (!siwxExtension) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message:\n 'Endpoint returned 402 but no sign-in-with-x extension found. Use `fetch` for paid endpoints.',\n surface: SURFACE,\n cause: 'no_siwx_extension',\n details: {\n extensions: Object.keys(paymentRequired.extensions ?? {}),\n },\n }),\n flags\n );\n }\n\n // Step 3: Create signed SIWX proof\n const payloadResult = await safeCreateSIWxPayload(\n SURFACE,\n siwxExtension,\n account\n );\n\n if (payloadResult.isErr()) {\n return outputAndExit(fromNeverthrowError(payloadResult), flags);\n }\n\n const siwxHeader = encodeSIWxHeader(payloadResult.value);\n\n // Step 4: Retry with SIGN-IN-WITH-X header\n const authedRequest = buildRequest({\n input,\n address: account.address,\n sessionId,\n });\n authedRequest.headers.set('SIGN-IN-WITH-X', siwxHeader);\n\n const authedResult = await safeFetch(\n SURFACE,\n authedRequest,\n input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT\n );\n\n if (authedResult.isErr()) {\n return outputAndExit(fromNeverthrowError(authedResult), flags);\n }\n\n const authedResponse = authedResult.value;\n\n if (!authedResponse.ok) {\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: authedResponse.statusText,\n surface: SURFACE,\n cause: 'http',\n details: { statusCode: authedResponse.status },\n }),\n flags\n );\n }\n\n const parseResult = await safeParseResponse(SURFACE, authedResponse);\n if (parseResult.isErr()) {\n return outputAndExit(fromNeverthrowError(parseResult), flags);\n }\n\n const data =\n parseResult.value.type === 'json'\n ? parseResult.value.data\n : parseResult.value.type === 'text'\n ? parseResult.value.data\n : { type: parseResult.value.type };\n\n outputAndExit(successResponse(data), flags);\n}\n","import { randomBytes } from 'crypto';\n\nimport { successResponse, outputAndExit, type OutputFlags } from '@/cli/output';\n\nimport { checkEndpoint } from '@/shared/operations/check-endpoint';\nimport { toJsonObject } from '@/shared/neverthrow/json';\nimport { getWalletOrExit, parseRequestInput } from './lib';\n\nimport type { GlobalFlags } from '@/types';\n\nconst SURFACE = 'cli:check';\n\ninterface CheckArgs {\n url: string;\n method?: string;\n body?: string;\n headers?: string;\n}\n\nexport async function checkCommand(\n args: CheckArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n const sessionId = randomBytes(16).toString('hex');\n\n const input = parseRequestInput(SURFACE, args, flags);\n\n const result = await checkEndpoint({\n surface: SURFACE,\n url: input.url,\n methods: input.method ? [input.method] : undefined,\n body: input.body,\n headers: {\n ...(input.headers ?? {}),\n 'X-Wallet-Address': account.address,\n 'X-Session-ID': sessionId,\n },\n includeMethodErrors: !!input.method,\n });\n\n return outputAndExit(successResponse(toJsonObject(result)), flags);\n}\n","import {\n successResponse,\n errorResponse,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { discoverResources } from '@/shared/operations/discover';\n\nimport type { GlobalFlags } from '@/types';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\n\ninterface DiscoverArgs {\n url: string;\n}\n\nexport async function discoverCommand(\n args: DiscoverArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const result = await discoverResources('cli:discover', args.url);\n\n if (result) {\n return outputAndExit(\n successResponse({\n found: true,\n origin: result.origin,\n source: result.source,\n ...(result.info ? { info: result.info as unknown as JsonObject } : {}),\n endpoints: result.endpoints.map(e => ({ ...e })),\n ...(result.instructions ? { instructions: result.instructions } : {}),\n }),\n flags\n );\n }\n\n const origin = URL.canParse(args.url) ? new URL(args.url).origin : args.url;\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: `No OpenAPI spec found for ${origin}. Tried: /openapi.json, /.well-known/openapi.json`,\n surface: 'cli:discover',\n cause: 'not_found',\n details: { origin },\n }),\n flags\n );\n}\n","import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { registerOrigin } from '@/shared/operations/register';\n\nimport type { GlobalFlags } from '@/types';\n\nconst SURFACE = 'cli:register';\n\ninterface RegisterArgs {\n url: string;\n}\n\nexport async function registerCommand(\n args: RegisterArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const result = await registerOrigin(SURFACE, { url: args.url }, flags.dev);\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), flags);\n }\n\n const { origin, resourceCount } = result.value;\n\n return outputAndExit(\n successResponse({\n origin: {\n id: origin.id,\n origin: origin.origin,\n name: origin.name,\n },\n resourceCount,\n }),\n flags\n );\n}\n","import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { getWalletInfo } from '@/shared/operations/wallet-info';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { getWalletOrExit } from './lib';\n\nimport type { GlobalFlags } from '@/types';\n\nconst SURFACE = 'cli:wallet';\n\nexport async function walletInfoCommand(\n _args: object,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n\n const result = await getWalletInfo(SURFACE, account.address, flags);\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), flags);\n }\n\n return outputAndExit(\n successResponse({\n address: result.value.address,\n balance: result.value.balance,\n chains: result.value.chains.map(c => ({\n chain: c.chain,\n balance: c.balance,\n })),\n isNewWallet: result.value.isNewWallet,\n depositLink: result.value.depositLink,\n ...(result.value.message ? { message: result.value.message } : {}),\n }),\n flags\n );\n}\n\ninterface WalletRedeemArgs {\n code: string;\n}\n\nexport async function walletRedeemCommand(\n args: WalletRedeemArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n\n const result = await redeemInviteCode({\n code: args.code,\n dev: flags.dev,\n address: account.address,\n surface: SURFACE,\n });\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), flags);\n }\n\n return outputAndExit(\n successResponse({\n redeemed: true,\n amount: `${result.value.amount} USDC`,\n txHash: result.value.txHash,\n }),\n flags\n );\n}\n","import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { submitErrorReport } from '@/shared/operations/report-error';\nimport { getWalletOrExit } from './lib';\n\nimport type { GlobalFlags } from '@/types';\n\nconst SURFACE = 'cli:report-error';\n\ninterface ReportErrorArgs {\n tool: string;\n summary: string;\n errorMessage: string;\n resource?: string;\n stack?: string;\n fullReport?: string;\n}\n\nexport async function reportErrorCommand(\n args: ReportErrorArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n\n const result = await submitErrorReport(\n SURFACE,\n {\n tool: args.tool,\n summary: args.summary,\n errorMessage: args.errorMessage,\n resource: args.resource,\n stack: args.stack,\n fullReport: args.fullReport,\n },\n account.address,\n flags.dev\n );\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), flags);\n }\n\n return outputAndExit(\n successResponse({\n submitted: result.value.submitted,\n reportId: result.value.reportId,\n message: result.value.message,\n }),\n flags\n );\n}\n","import type { GlobalFlags } from '@/types';\n\n/**\n * Start the MCP server\n * This is a wrapper that imports and calls the existing server implementation\n */\nexport async function serverCommand(flags: GlobalFlags): Promise<void> {\n const { startServer } = await import('@/server');\n await startServer(flags);\n}\n"],"mappings":"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","names":["lines","randomBytes","x402Client","x402HTTPClient","SURFACE","randomBytes","x402HTTPClient","x402Client","parseResult","data","randomBytes","SURFACE","randomBytes","SURFACE","SURFACE","SURFACE"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
promptDeposit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LOEINYA7.js";
|
|
4
4
|
import {
|
|
5
5
|
getWallet
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-KFYFGEC4.js";
|
|
7
|
+
import "./chunk-UFSCGP67.js";
|
|
8
8
|
import {
|
|
9
9
|
log
|
|
10
10
|
} from "./chunk-TRPO7BKD.js";
|
|
@@ -31,4 +31,4 @@ var fundMcpServer = async (flags) => {
|
|
|
31
31
|
export {
|
|
32
32
|
fundMcpServer
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=fund-
|
|
34
|
+
//# sourceMappingURL=fund-BVBH76XD.js.map
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
isMppEnabled
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-N3WKW6F4.js";
|
|
5
5
|
import "./chunk-KPEJO3KV.js";
|
|
6
6
|
|
|
7
7
|
// src/index.ts
|
|
@@ -78,7 +78,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
78
78
|
default: "auto"
|
|
79
79
|
}),
|
|
80
80
|
async (args) => {
|
|
81
|
-
const { fetchCommand } = await import("./commands-
|
|
81
|
+
const { fetchCommand } = await import("./commands-RO7I7ERX.js");
|
|
82
82
|
await fetchCommand(
|
|
83
83
|
{
|
|
84
84
|
url: args.url,
|
|
@@ -90,6 +90,40 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
90
90
|
args
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
|
+
).command(
|
|
94
|
+
"fetch-auth <url>",
|
|
95
|
+
"HTTP fetch with automatic SIWX (Sign-In With X) authentication",
|
|
96
|
+
(yargs2) => yargs2.positional("url", {
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "The endpoint URL to fetch",
|
|
99
|
+
demandOption: true
|
|
100
|
+
}).option("method", {
|
|
101
|
+
alias: "m",
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "HTTP method",
|
|
104
|
+
choices: ["GET", "POST", "PUT", "DELETE", "PATCH"],
|
|
105
|
+
default: "GET"
|
|
106
|
+
}).option("body", {
|
|
107
|
+
alias: "b",
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Request body as JSON string"
|
|
110
|
+
}).option("headers", {
|
|
111
|
+
alias: "H",
|
|
112
|
+
type: "string",
|
|
113
|
+
description: "Additional headers as JSON object"
|
|
114
|
+
}),
|
|
115
|
+
async (args) => {
|
|
116
|
+
const { fetchAuthCommand } = await import("./commands-RO7I7ERX.js");
|
|
117
|
+
await fetchAuthCommand(
|
|
118
|
+
{
|
|
119
|
+
url: args.url,
|
|
120
|
+
method: args.method,
|
|
121
|
+
body: args.body,
|
|
122
|
+
headers: args.headers
|
|
123
|
+
},
|
|
124
|
+
args
|
|
125
|
+
);
|
|
126
|
+
}
|
|
93
127
|
).command(
|
|
94
128
|
"check <url>",
|
|
95
129
|
"Check endpoint for x402 pricing and schema without making payment",
|
|
@@ -112,7 +146,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
112
146
|
description: "Additional headers as JSON object"
|
|
113
147
|
}),
|
|
114
148
|
async (args) => {
|
|
115
|
-
const { checkCommand } = await import("./commands-
|
|
149
|
+
const { checkCommand } = await import("./commands-RO7I7ERX.js");
|
|
116
150
|
await checkCommand(
|
|
117
151
|
{
|
|
118
152
|
url: args.url,
|
|
@@ -132,7 +166,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
132
166
|
demandOption: true
|
|
133
167
|
}),
|
|
134
168
|
async (args) => {
|
|
135
|
-
const { discoverCommand } = await import("./commands-
|
|
169
|
+
const { discoverCommand } = await import("./commands-RO7I7ERX.js");
|
|
136
170
|
await discoverCommand({ url: args.url }, args);
|
|
137
171
|
}
|
|
138
172
|
).command(
|
|
@@ -144,7 +178,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
144
178
|
demandOption: true
|
|
145
179
|
}),
|
|
146
180
|
async (args) => {
|
|
147
|
-
const { registerCommand } = await import("./commands-
|
|
181
|
+
const { registerCommand } = await import("./commands-RO7I7ERX.js");
|
|
148
182
|
await registerCommand({ url: args.url }, args);
|
|
149
183
|
}
|
|
150
184
|
).command(
|
|
@@ -155,7 +189,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
155
189
|
"Get wallet address, balance, and deposit link",
|
|
156
190
|
(yargs3) => yargs3,
|
|
157
191
|
async (args) => {
|
|
158
|
-
const { walletInfoCommand } = await import("./commands-
|
|
192
|
+
const { walletInfoCommand } = await import("./commands-RO7I7ERX.js");
|
|
159
193
|
await walletInfoCommand({}, args);
|
|
160
194
|
}
|
|
161
195
|
).command(
|
|
@@ -167,7 +201,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
167
201
|
demandOption: true
|
|
168
202
|
}),
|
|
169
203
|
async (args) => {
|
|
170
|
-
const { walletRedeemCommand } = await import("./commands-
|
|
204
|
+
const { walletRedeemCommand } = await import("./commands-RO7I7ERX.js");
|
|
171
205
|
await walletRedeemCommand({ code: args.code }, args);
|
|
172
206
|
}
|
|
173
207
|
).demandCommand(1, "You must specify a wallet subcommand").strict(),
|
|
@@ -199,7 +233,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
199
233
|
description: "Detailed report with context and repro steps"
|
|
200
234
|
}),
|
|
201
235
|
async (args) => {
|
|
202
|
-
const { reportErrorCommand } = await import("./commands-
|
|
236
|
+
const { reportErrorCommand } = await import("./commands-RO7I7ERX.js");
|
|
203
237
|
await reportErrorCommand(
|
|
204
238
|
{
|
|
205
239
|
tool: args.tool,
|
|
@@ -217,7 +251,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
217
251
|
"Start the MCP server (default when no command specified)",
|
|
218
252
|
(yargs2) => yargs2,
|
|
219
253
|
async (args) => {
|
|
220
|
-
const { serverCommand } = await import("./commands-
|
|
254
|
+
const { serverCommand } = await import("./commands-RO7I7ERX.js");
|
|
221
255
|
await serverCommand(args);
|
|
222
256
|
}
|
|
223
257
|
).command(
|
|
@@ -230,7 +264,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
230
264
|
default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
|
|
231
265
|
}),
|
|
232
266
|
async (args) => {
|
|
233
|
-
const { installMcpServer } = await import("./install-
|
|
267
|
+
const { installMcpServer } = await import("./install-WAPHWJ54.js");
|
|
234
268
|
await installMcpServer(args);
|
|
235
269
|
}
|
|
236
270
|
).command(
|
|
@@ -238,7 +272,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
238
272
|
"Open the funding page to add USDC to your wallet",
|
|
239
273
|
(yargs2) => yargs2,
|
|
240
274
|
async (args) => {
|
|
241
|
-
const { fundMcpServer } = await import("./fund-
|
|
275
|
+
const { fundMcpServer } = await import("./fund-BVBH76XD.js");
|
|
242
276
|
await fundMcpServer(args);
|
|
243
277
|
}
|
|
244
278
|
).example(
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { Clients } from './cli/install/clients';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'],\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/shared/cli-context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n 'HTTP fetch with automatic x402 payment handling',\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .option('payment-method', {\n alias: 'p',\n type: 'string',\n description: 'Payment protocol to use',\n choices: isMppEnabled()\n ? ['x402', 'mpp', 'auto']\n : ['x402', 'auto'],\n default: 'auto',\n }),\n async args => {\n const { fetchCommand } = await import('@/cli/commands');\n await fetchCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n paymentMethod: args.paymentMethod,\n },\n args\n );\n }\n )\n .command(\n 'check <url>',\n 'Check endpoint for x402 pricing and schema without making payment',\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to check',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description:\n 'HTTP method to check. If omitted, all methods are probed in parallel.',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n }),\n async args => {\n const { checkCommand } = await import('@/cli/commands');\n await checkCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'discover <url>',\n 'Discover x402-protected endpoints on an origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n }),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand({ url: args.url }, args);\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands');\n await registerCommand({ url: args.url }, args);\n }\n )\n .command(\n 'wallet',\n 'Wallet management commands',\n yargs =>\n yargs\n .command(\n 'info',\n 'Get wallet address, balance, and deposit link',\n yargs => yargs,\n async args => {\n const { walletInfoCommand } = await import('@/cli/commands');\n await walletInfoCommand({}, args);\n }\n )\n .command(\n 'redeem <code>',\n 'Redeem an invite code for free USDC',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem',\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands');\n await walletRedeemCommand({ code: args.code }, args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'report-error',\n 'Report a critical bug to the agentcash team (emergency only)',\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: 'The tool/command that failed',\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: '1-2 sentence summary of the issue',\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: 'The error message',\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: 'The x402 resource URL (if applicable)',\n })\n .option('stack', {\n type: 'string',\n description: 'Stack trace (if available)',\n })\n .option('full-report', {\n type: 'string',\n description: 'Detailed report with context and repro steps',\n }),\n async args => {\n const { reportErrorCommand } = await import('@/cli/commands');\n await reportErrorCommand(\n {\n tool: args.tool,\n summary: args.summary,\n errorMessage: args.errorMessage,\n resource: args.resource,\n stack: args.stack,\n fullReport: args.fullReport,\n },\n args\n );\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://enrichx402.com/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://enrichx402.com/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://enrichx402.com\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://enrichx402.com\"',\n 'Register origin with agentcash'\n )\n .example('$0 wallet info', 'Get wallet balance')\n .example('$0 wallet redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .help()\n .version()\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":";;;;;;;AAEA,OAAO,WAAW;AAClB,SAAS,eAAe;AAIxB,IAAM,eAAe,QAAQ,QAAQ,IAAI,UAAU;AACnD,IAAM,aAAa,gBAAgB,QAAQ,QAAQ,IAAI,EAAE;AAEzD,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC,EAC7B,WAAW,WAAW,EACtB,MAAM,wBAAwB,EAC9B,OAAO,OAAO;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,EACA,OAAO,OAAO;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,aAAa,OAAO;AAC/B,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,MAAM;AAAA,EACN,aACE;AAAA,EACF,UAAU;AACZ,CAAC,EACA,OAAO,YAAY;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aACE;AAAA,EACF,SAAS,CAAC,QAAQ,QAAQ;AAC5B,CAAC,EACA,OAAO,SAAS;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,WAAW,OAAM,SAAQ;AAExB,MAAI,KAAK,SAAS;AAChB,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,2BAAsB;AACnE,wBAAoB,EAAE,SAAS,KAAK,CAAC;AAAA,EACvC;AACF,CAAC,EAIA;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO;AAAA,IACjD,SAAS;AAAA,EACX,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,kBAAkB;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,aAAa,IAClB,CAAC,QAAQ,OAAO,MAAM,IACtB,CAAC,QAAQ,MAAM;AAAA,IACnB,SAAS;AAAA,EACX,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,wBAAgB;AACtD,UAAM;AAAA,MACJ;AAAA,QACE,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,eAAe,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aACE;AAAA,IACF,SAAS,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO;AAAA,EACnD,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,wBAAgB;AACtD,UAAM;AAAA,MACJ;AAAA,QACE,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAgB;AACzD,UAAM,gBAAgB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,EAC/C;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAgB;AACzD,UAAM,gBAAgB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,EAC/C;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,wBAAgB;AAC3D,YAAM,kBAAkB,CAAC,GAAG,IAAI;AAAA,IAClC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,wBAAgB;AAC7D,YAAM,oBAAoB,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI;AAAA,IACrD;AAAA,EACF,EACC,cAAc,GAAG,sCAAsC,EACvD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG,OAAO,QAAQ;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,iBAAiB;AAAA,IACvB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,YAAY;AAAA,IAClB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,SAAS;AAAA,IACf,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,eAAe;AAAA,IACrB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,wBAAgB;AAC5D,UAAM;AAAA,MACJ;AAAA,QACE,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,QACZ,YAAY,KAAK;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EAIC;AAAA,EACC,CAAC,MAAM,QAAQ;AAAA,EACf;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,wBAAgB;AACvD,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,OAAO,UAAU;AAAA,IACrB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS,gDAAoC;AAAA,EAC/C,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,uBAAe;AACzD,UAAM,iBAAiB,IAAI;AAAA,EAC7B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,oBAAY;AACnD,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,QAAQ,kBAAkB,oBAAoB,EAC9C,QAAQ,2BAA2B,oBAAoB,EACvD,QAAQ,MAAM,4BAA4B,EAC1C,QAAQ,8BAA8B,wBAAwB,EAC9D,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,SAAO;AAEZ,QAAM,WAAW;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACxD,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AACA,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["yargs"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { Clients } from './cli/install/clients';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'],\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/shared/cli-context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n 'HTTP fetch with automatic x402 payment handling',\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .option('payment-method', {\n alias: 'p',\n type: 'string',\n description: 'Payment protocol to use',\n choices: isMppEnabled() ? ['x402', 'mpp', 'auto'] : ['x402', 'auto'],\n default: 'auto',\n }),\n async args => {\n const { fetchCommand } = await import('@/cli/commands');\n await fetchCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n paymentMethod: args.paymentMethod,\n },\n args\n );\n }\n )\n .command(\n 'fetch-auth <url>',\n 'HTTP fetch with automatic SIWX (Sign-In With X) authentication',\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n }),\n async args => {\n const { fetchAuthCommand } = await import('@/cli/commands');\n await fetchAuthCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'check <url>',\n 'Check endpoint for x402 pricing and schema without making payment',\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to check',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description:\n 'HTTP method to check. If omitted, all methods are probed in parallel.',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n }),\n async args => {\n const { checkCommand } = await import('@/cli/commands');\n await checkCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'discover <url>',\n 'Discover x402-protected endpoints on an origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n }),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand({ url: args.url }, args);\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands');\n await registerCommand({ url: args.url }, args);\n }\n )\n .command(\n 'wallet',\n 'Wallet management commands',\n yargs =>\n yargs\n .command(\n 'info',\n 'Get wallet address, balance, and deposit link',\n yargs => yargs,\n async args => {\n const { walletInfoCommand } = await import('@/cli/commands');\n await walletInfoCommand({}, args);\n }\n )\n .command(\n 'redeem <code>',\n 'Redeem an invite code for free USDC',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem',\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands');\n await walletRedeemCommand({ code: args.code }, args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'report-error',\n 'Report a critical bug to the agentcash team (emergency only)',\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: 'The tool/command that failed',\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: '1-2 sentence summary of the issue',\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: 'The error message',\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: 'The x402 resource URL (if applicable)',\n })\n .option('stack', {\n type: 'string',\n description: 'Stack trace (if available)',\n })\n .option('full-report', {\n type: 'string',\n description: 'Detailed report with context and repro steps',\n }),\n async args => {\n const { reportErrorCommand } = await import('@/cli/commands');\n await reportErrorCommand(\n {\n tool: args.tool,\n summary: args.summary,\n errorMessage: args.errorMessage,\n resource: args.resource,\n stack: args.stack,\n fullReport: args.fullReport,\n },\n args\n );\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://enrichx402.com/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://enrichx402.com/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://enrichx402.com\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://enrichx402.com\"',\n 'Register origin with agentcash'\n )\n .example('$0 wallet info', 'Get wallet balance')\n .example('$0 wallet redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .help()\n .version()\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":"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","names":["yargs"]}
|
|
@@ -4,18 +4,18 @@ import {
|
|
|
4
4
|
} from "./chunk-KPEJO3KV.js";
|
|
5
5
|
import {
|
|
6
6
|
DIST_TAG
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-THRXTZU6.js";
|
|
8
8
|
import {
|
|
9
9
|
promptDeposit,
|
|
10
10
|
wait
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LOEINYA7.js";
|
|
12
12
|
import {
|
|
13
13
|
getWallet,
|
|
14
14
|
redeemInviteCode
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-KFYFGEC4.js";
|
|
16
16
|
import {
|
|
17
17
|
getBalance
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-UFSCGP67.js";
|
|
19
19
|
import {
|
|
20
20
|
err,
|
|
21
21
|
log,
|
|
@@ -702,4 +702,4 @@ var installMcpServer = async (flags) => {
|
|
|
702
702
|
export {
|
|
703
703
|
installMcpServer
|
|
704
704
|
};
|
|
705
|
-
//# sourceMappingURL=install-
|
|
705
|
+
//# sourceMappingURL=install-WAPHWJ54.js.map
|
package/dist/esm/lib.js
CHANGED
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
SUPPORTED_METHODS,
|
|
6
6
|
checkEndpoint,
|
|
7
7
|
discoverResources
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-X5H7CNL7.js";
|
|
9
|
+
import "./chunk-N3WKW6F4.js";
|
|
10
10
|
import "./chunk-TRPO7BKD.js";
|
|
11
11
|
import "./chunk-ISR6DJ53.js";
|
|
12
12
|
|