agentcash 0.7.2 → 0.7.4
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 +247 -152
- package/dist/esm/{chunk-V2H5E3DQ.js → chunk-DBDSS3CQ.js} +11 -8
- package/dist/esm/chunk-DBDSS3CQ.js.map +1 -0
- package/dist/esm/{chunk-EDE2BA5J.js → chunk-HXRJ5ES4.js} +2 -2
- package/dist/esm/{chunk-MB3UWRPI.js → chunk-MQLBI77V.js} +2 -2
- package/dist/esm/{chunk-YRRXIT26.js → chunk-NFKU5GQE.js} +3 -3
- package/dist/esm/chunk-OW3UV227.js +7 -0
- package/dist/esm/chunk-RY34EBJ4.js +182 -0
- package/dist/esm/chunk-RY34EBJ4.js.map +1 -0
- package/dist/esm/{commands-37HXSNEV.js → commands-M66YQJM7.js} +91 -69
- package/dist/esm/commands-M66YQJM7.js.map +1 -0
- package/dist/esm/index.js +27 -31
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{install-PJ7ICH3O.js → install-4YDF4G6T.js} +3 -3
- package/dist/esm/{server-QLSZ3QOV.js → server-GJVD7VNR.js} +49 -144
- package/dist/esm/server-GJVD7VNR.js.map +1 -0
- package/dist/esm/shared/operations/index.js +3 -3
- package/package.json +5 -5
- package/dist/esm/chunk-OJFWL5A3.js +0 -7
- package/dist/esm/chunk-V2H5E3DQ.js.map +0 -1
- package/dist/esm/commands-37HXSNEV.js.map +0 -1
- package/dist/esm/server-QLSZ3QOV.js.map +0 -1
- /package/dist/esm/{chunk-EDE2BA5J.js.map → chunk-HXRJ5ES4.js.map} +0 -0
- /package/dist/esm/{chunk-MB3UWRPI.js.map → chunk-MQLBI77V.js.map} +0 -0
- /package/dist/esm/{chunk-YRRXIT26.js.map → chunk-NFKU5GQE.js.map} +0 -0
- /package/dist/esm/{chunk-OJFWL5A3.js.map → chunk-OW3UV227.js.map} +0 -0
- /package/dist/esm/{install-PJ7ICH3O.js.map → install-4YDF4G6T.js.map} +0 -0
|
@@ -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/progress.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","../../src/cli/commands/add-skill.ts","../../src/shared/skills/agents.ts","../../src/cli/commands/onboard.ts","../../src/cli/install/detect-clients.ts","../../src/shared/skills/github.ts","../../src/cli/commands/demo-prompts.ts"],"sourcesContent":["import { randomBytes } from 'crypto';\n\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\nimport { ExactEvmScheme } from '@x402/evm/exact/client';\nimport { toClientEvmSigner } from '@x402/evm';\nimport { Mppx, tempo as tempoMethod } from 'mppx/client';\nimport { createClient, createPublicClient, http } from 'viem';\nimport { base, 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 { MCP_VERSION } from '@/shared/version';\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 publicClient = createPublicClient({\n chain: base,\n transport: http(),\n });\n const coreClient = x402Client.fromConfig({\n schemes: [\n {\n network: DEFAULT_NETWORK,\n client: new ExactEvmScheme(toClientEvmSigner(account, publicClient)),\n },\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 ?? `agentcash@${MCP_VERSION}`;\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 { isQuiet } from './format';\n\nimport type { OutputFlags } from './response';\n\n/**\n * Write a progress message to stderr so it doesn't appear in the final\n * result (stdout). Respects --quiet. Use for step-by-step feedback during\n * long-running commands.\n */\nexport function progress(flags: OutputFlags, message: string): void {\n if (isQuiet(flags.quiet)) return;\n process.stderr.write(chalk.dim(message) + '\\n');\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 {\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 safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport { createFetchWithAuth } from '@/shared/operations/fetch-with-auth';\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 result = await createFetchWithAuth({\n surface: SURFACE,\n account,\n timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,\n })(buildRequest({ input, address: account.address, sessionId }));\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), flags);\n }\n\n const value = result.value;\n\n if (value.outcome === 'no_siwx_extension') {\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: { extensions: value.extensions },\n }),\n flags\n );\n }\n\n const { response } = value;\n\n if (!response.ok) {\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: response.statusText,\n surface: SURFACE,\n cause: 'http',\n details: { statusCode: response.status },\n }),\n flags\n );\n }\n\n const parseResult = await safeParseResponse(SURFACE, response);\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 {\n checkEndpoint,\n type SupportedMethod,\n} from '@/shared/operations/check-endpoint';\nimport { toJsonObject } from '@/shared/neverthrow/json';\nimport { getWalletOrExit } 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 parsedBody = args.body\n ? (JSON.parse(args.body) as Record<string, unknown>)\n : undefined;\n const parsedHeaders = args.headers\n ? (JSON.parse(args.headers) as Record<string, string>)\n : undefined;\n\n const result = await checkEndpoint(\n SURFACE,\n args.url,\n args.method ? [args.method as SupportedMethod] : undefined,\n parsedBody,\n {\n ...parsedHeaders,\n 'X-Wallet-Address': account.address,\n 'X-Session-ID': sessionId,\n }\n );\n\n if (!result.found) {\n return outputAndExit(\n successResponse(\n toJsonObject({\n url: args.url,\n error: result.cause,\n message: result.message,\n })\n ),\n flags\n );\n }\n\n const results = result.advisories.map(a => ({\n ...a,\n requiresPayment: a.authMode === 'paid' || a.authMode === 'apiKey+paid',\n }));\n\n return outputAndExit(\n successResponse(toJsonObject({ url: args.url, results })),\n flags\n );\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 includeGuidance?: boolean;\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 includeGuidance: args.includeGuidance,\n });\n\n if (result.found) {\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 guidanceAvailable: result.guidanceAvailable,\n ...(result.guidanceTokens != null\n ? { guidanceTokens: result.guidanceTokens }\n : {}),\n ...(result.guidance ? { guidance: result.guidance } : {}),\n endpoints: result.endpoints.map(e => ({ ...e })),\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:\n result.message ??\n `No OpenAPI spec found for ${origin}. Tried: /openapi.json, /.well-known/openapi.json`,\n surface: 'cli:discover',\n cause: result.cause,\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 address: account.address,\n surface: SURFACE,\n dev: flags.dev,\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\nexport async function walletAddressCommand(\n _args: object,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n const { account } = await getWalletOrExit(flags);\n\n return outputAndExit(successResponse({ address: account.address }), flags);\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","import * as fs from 'node:fs/promises';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport {\n successResponse,\n outputAndExit,\n type OutputFlags,\n errorResponse,\n} from '@/cli/output';\n\nimport { toJsonObject } from '@/shared/neverthrow/json';\n\nimport type { GlobalFlags } from '@/types';\nimport { discoverResources } from '@/lib';\nimport { installSkills } from '@/shared/skills/agents';\n\nconst SURFACE = 'cli:add-skill';\n\ninterface AddSkillArgs {\n url: string;\n}\n\nexport async function addSkillCommand(\n args: AddSkillArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n if (!/^https?:\\/\\//i.test(args.url)) {\n args.url = `https://${args.url}`;\n }\n\n if (!URL.canParse(args.url)) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: `Invalid URL: ${args.url}`,\n surface: SURFACE,\n cause: 'invalid_url',\n })\n );\n }\n\n const result = await discoverResources('cli:add-skill', args.url);\n\n if (!result.found) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: result.message ?? `No OpenAPI spec found for ${args.url}`,\n surface: SURFACE,\n cause: result.cause,\n }),\n flags\n );\n }\n\n if (!result.info?.title) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: `No description found for ${args.url}`,\n surface: SURFACE,\n cause: 'no_description',\n })\n );\n }\n\n const title = result.info.title.toLowerCase().replace(/[ .]/g, '-');\n\n const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'incur-skill-add-'));\n // eslint-disable-next-line no-restricted-syntax\n try {\n const skillDir = path.join(tmpDir, title);\n await fs.mkdir(skillDir, { recursive: true });\n await fs.writeFile(\n path.join(skillDir, 'SKILL.md'),\n `---\nname: ${title}\ndescription: ${result.info.description}\ncommand: npx agentcash discover ${args.url}\n---\nCall \\`npx agentcash discover ${args.url}\\` to discover how to use ${result.info.title}.`\n );\n\n const installResult = installSkills(tmpDir, {\n cwd: process.cwd(),\n });\n\n return outputAndExit(\n successResponse(\n toJsonObject({\n installed: installResult.paths,\n })\n ),\n flags\n );\n } finally {\n await fs.rm(tmpDir, { recursive: true, force: true });\n }\n}\n","/* eslint-disable no-restricted-syntax */\nimport * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\n/** Agent configuration for skill installation. */\nexport interface Agent {\n /** Display name. */\n name: string;\n /** Absolute path to the global skills directory. */\n globalSkillsDir: string;\n /** Project-relative skills directory path. */\n projectSkillsDir: string;\n /** Whether this agent uses the canonical `.agents/skills` path. */\n universal: boolean;\n /** Checks if the agent is installed on the system. */\n detect(): boolean;\n}\n\nconst home = os.homedir();\nconst configHome = process.env.XDG_CONFIG_HOME ?? path.join(home, '.config');\nconst claudeHome =\n process.env.CLAUDE_CONFIG_DIR?.trim() ?? path.join(home, '.claude');\nconst codexHome = process.env.CODEX_HOME?.trim() ?? path.join(home, '.codex');\n\n/** All known agent definitions. */\nexport const all: Agent[] = [\n // Universal agents (project skillsDir = .agents/skills)\n {\n name: 'Amp',\n globalSkillsDir: path.join(configHome, 'agents', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(configHome, 'amp')),\n },\n {\n name: 'Cline',\n globalSkillsDir: path.join(home, '.agents', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(home, '.cline')),\n },\n {\n name: 'Codex',\n globalSkillsDir: path.join(codexHome, 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(codexHome),\n },\n {\n name: 'Cursor',\n globalSkillsDir: path.join(home, '.cursor', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(home, '.cursor')),\n },\n {\n name: 'Gemini CLI',\n globalSkillsDir: path.join(home, '.gemini', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(home, '.gemini')),\n },\n {\n name: 'GitHub Copilot',\n globalSkillsDir: path.join(home, '.copilot', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(home, '.copilot')),\n },\n {\n name: 'Kimi CLI',\n globalSkillsDir: path.join(configHome, 'agents', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(home, '.kimi')),\n },\n {\n name: 'OpenCode',\n globalSkillsDir: path.join(configHome, 'opencode', 'skills'),\n projectSkillsDir: '.agents/skills',\n universal: true,\n detect: () => fs.existsSync(path.join(configHome, 'opencode')),\n },\n // Non-universal agents (need symlink from their skills dir to canonical)\n {\n name: 'OpenClaw',\n globalSkillsDir: path.join(home, '.openclaw', 'skills'),\n projectSkillsDir: '.openclaw/workspace/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.openclaw')),\n },\n {\n name: 'Claude Code',\n globalSkillsDir: path.join(claudeHome, 'skills'),\n projectSkillsDir: '.claude/skills',\n universal: false,\n detect: () => fs.existsSync(claudeHome),\n },\n {\n name: 'Windsurf',\n globalSkillsDir: path.join(home, '.codeium', 'windsurf', 'skills'),\n projectSkillsDir: '.windsurf/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.codeium', 'windsurf')),\n },\n {\n name: 'Continue',\n globalSkillsDir: path.join(home, '.continue', 'skills'),\n projectSkillsDir: '.continue/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.continue')),\n },\n {\n name: 'Roo',\n globalSkillsDir: path.join(home, '.roo', 'skills'),\n projectSkillsDir: '.roo/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.roo')),\n },\n {\n name: 'Kilo',\n globalSkillsDir: path.join(home, '.kilocode', 'skills'),\n projectSkillsDir: '.kilocode/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.kilocode')),\n },\n {\n name: 'Goose',\n globalSkillsDir: path.join(configHome, 'goose', 'skills'),\n projectSkillsDir: '.goose/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(configHome, 'goose')),\n },\n {\n name: 'Augment',\n globalSkillsDir: path.join(home, '.augment', 'skills'),\n projectSkillsDir: '.augment/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.augment')),\n },\n {\n name: 'Trae',\n globalSkillsDir: path.join(home, '.trae', 'skills'),\n projectSkillsDir: '.trae/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.trae')),\n },\n {\n name: 'Junie',\n globalSkillsDir: path.join(home, '.junie', 'skills'),\n projectSkillsDir: '.junie/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.junie')),\n },\n {\n name: 'Crush',\n globalSkillsDir: path.join(configHome, 'crush', 'skills'),\n projectSkillsDir: '.crush/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(configHome, 'crush')),\n },\n {\n name: 'Kiro CLI',\n globalSkillsDir: path.join(home, '.kiro', 'skills'),\n projectSkillsDir: '.kiro/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.kiro')),\n },\n {\n name: 'Qwen Code',\n globalSkillsDir: path.join(home, '.qwen', 'skills'),\n projectSkillsDir: '.qwen/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.qwen')),\n },\n {\n name: 'OpenHands',\n globalSkillsDir: path.join(home, '.openhands', 'skills'),\n projectSkillsDir: '.openhands/skills',\n universal: false,\n detect: () => fs.existsSync(path.join(home, '.openhands')),\n },\n];\n\n/** Detects which agents are installed on the system. */\nexport function detect(): Agent[] {\n return all.filter(a => a.detect());\n}\n\n/**\n * Installs skill directories to the canonical location and creates symlinks for\n * detected non-universal agents.\n *\n * @param sourceDir - Directory containing skill subdirectories (each with a `SKILL.md`).\n * @param options - Installation options.\n * @returns Installed canonical paths.\n */\nexport function installSkills(\n sourceDir: string,\n options: install.Options = {}\n): install.Result {\n const isGlobal = options.global !== false;\n const cwd = options.cwd ?? process.cwd();\n const base = isGlobal ? home : cwd;\n const canonicalBase = path.join(base, '.agents', 'skills');\n const detected = options.agents ?? detect();\n\n const paths: string[] = [];\n const agents: install.AgentInstall[] = [];\n\n for (const skill of discoverSkills(sourceDir)) {\n const canonicalDir = path.join(canonicalBase, skill.name);\n\n // Copy to canonical location\n rmForce(canonicalDir);\n fs.mkdirSync(canonicalDir, { recursive: true });\n if (skill.root)\n fs.copyFileSync(\n path.join(skill.dir, 'SKILL.md'),\n path.join(canonicalDir, 'SKILL.md')\n );\n else fs.cpSync(skill.dir, canonicalDir, { recursive: true });\n paths.push(canonicalDir);\n\n // Create symlinks for non-universal agents\n for (const agent of detected) {\n if (agent.universal) continue;\n const agentSkillsDir = isGlobal\n ? agent.globalSkillsDir\n : path.join(cwd, agent.projectSkillsDir);\n const agentDir = path.join(agentSkillsDir, skill.name);\n\n // Skip if agent dir resolves to canonical (no symlink needed)\n if (agentDir === canonicalDir) continue;\n\n try {\n rmForce(agentDir);\n fs.mkdirSync(path.dirname(agentDir), { recursive: true });\n // Resolve through any existing symlinks in parent directories\n const realLinkDir = resolveParent(path.dirname(agentDir));\n const realTarget = resolveParent(canonicalDir);\n const rel = path.relative(realLinkDir, realTarget);\n fs.symlinkSync(rel, agentDir);\n agents.push({ agent: agent.name, path: agentDir, mode: 'symlink' });\n } catch {\n // Fallback to copy if symlink fails (e.g. Windows without permissions)\n try {\n fs.cpSync(canonicalDir, agentDir, { recursive: true });\n agents.push({ agent: agent.name, path: agentDir, mode: 'copy' });\n } catch {}\n }\n }\n }\n\n return { paths, agents };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport declare namespace install {\n interface Options {\n /** Override detected agents. */\n agents?: Agent[] | undefined;\n /** Working directory for project-local installs. */\n cwd?: string | undefined;\n /** Install globally. Defaults to `true`. */\n global?: boolean | undefined;\n }\n interface Result {\n /** Canonical install paths. */\n paths: string[];\n /** Per-agent install details (non-universal agents only). */\n agents: AgentInstall[];\n }\n interface AgentInstall {\n /** Agent display name. */\n agent: string;\n /** Installed path. */\n path: string;\n /** Whether it was symlinked or copied. */\n mode: 'symlink' | 'copy';\n }\n}\n\n/**\n * Removes a skill by name from the canonical location and all detected agent directories.\n */\nexport function remove(\n skillName: string,\n options: { global?: boolean | undefined; cwd?: string | undefined } = {}\n) {\n const isGlobal = options.global !== false;\n const cwd = options.cwd ?? process.cwd();\n const base = isGlobal ? home : cwd;\n const canonicalDir = path.join(base, '.agents', 'skills', skillName);\n rmForce(canonicalDir);\n\n for (const agent of detect()) {\n if (agent.universal) continue;\n const agentSkillsDir = isGlobal\n ? agent.globalSkillsDir\n : path.join(cwd, agent.projectSkillsDir);\n const agentDir = path.join(agentSkillsDir, skillName);\n rmForce(agentDir);\n }\n}\n\n/** Recursively discovers skill directories (those containing a `SKILL.md`). */\nfunction discoverSkills(\n rootDir: string\n): { name: string; dir: string; root?: boolean }[] {\n const results: { name: string; dir: string; root?: boolean }[] = [];\n\n function visit(dir: string) {\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n const subDir = path.join(dir, entry.name);\n const skillPath = path.join(subDir, 'SKILL.md');\n if (fs.existsSync(skillPath)) {\n const content = fs.readFileSync(skillPath, 'utf8');\n const nameMatch = /^name:\\s*(.+)$/m.exec(content);\n results.push({\n name: sanitizeName(nameMatch?.[1] ?? entry.name),\n dir: subDir,\n });\n }\n visit(subDir);\n }\n }\n\n visit(rootDir);\n\n // Root-level SKILL.md (e.g. depth=0)\n const rootSkill = path.join(rootDir, 'SKILL.md');\n if (fs.existsSync(rootSkill)) {\n const content = fs.readFileSync(rootSkill, 'utf8');\n const nameMatch = /^name:\\s*(.+)$/m.exec(content);\n const name = sanitizeName(nameMatch?.[1] ?? 'skill');\n if (!results.some(r => r.name === name))\n results.push({ name, dir: rootDir, root: true });\n }\n\n return results;\n}\n\n/** Sanitizes a skill name for use as a directory name. */\nfunction sanitizeName(name: string): string {\n return name.trim().replace(/[/\\\\]/g, '-').replace(/\\.\\./g, '').slice(0, 255);\n}\n\n/** Removes a file, directory, or symlink (including broken symlinks). */\nfunction rmForce(target: string) {\n try {\n const stat = fs.lstatSync(target);\n if (stat.isSymbolicLink()) fs.unlinkSync(target);\n else fs.rmSync(target, { recursive: true, force: true });\n } catch {}\n}\n\n/** Resolves parent directories through symlinks. */\nfunction resolveParent(dir: string): string {\n try {\n return fs.realpathSync(dir);\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) return dir;\n try {\n return path.join(fs.realpathSync(parent), path.relative(parent, dir));\n } catch {\n return dir;\n }\n }\n}\n","import * as fs from 'node:fs/promises';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport {\n getOutputFormat,\n outputAndExit,\n progress,\n successResponse,\n errorResponse,\n fromNeverthrowError,\n type OutputFlags,\n} from '@/cli/output';\n\nimport { detectInstalledClients } from '@/cli/install/detect-clients';\nimport {\n tryAddServer,\n type AddServerFailure,\n type AddServerSuccess,\n} from '@/cli/install/2-add-server';\nimport { getWalletInfo } from '@/shared/operations/wallet-info';\nimport { toJsonObject } from '@/shared/neverthrow/json';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { detect as detectAgents, installSkills } from '@/shared/skills/agents';\nimport { downloadGitHubSkill } from '@/shared/skills/github';\nimport { getBaseUrl, getDepositLink } from '@/shared/utils';\nimport { getWallet } from '@/shared/wallet';\nimport { resultFromPromise } from '@agentcash/neverthrow';\n\nimport type { GlobalFlags } from '@/types';\nimport { formatDemoPromptsBlock, formatDemoPromptsJson } from './demo-prompts';\n\nconst SURFACE = 'cli:onboard';\nconst AGENTCASH_SKILL = {\n owner: 'merit-systems',\n repo: 'agentcash-skills',\n skillPath: 'skills/agentcash',\n};\n\ninterface OnboardArgs {\n code?: string;\n}\n\ninterface McpInstallSummary {\n failed: AddServerFailure[];\n installed: AddServerSuccess[];\n}\n\nconst formatBalance = (balance: number) => `${balance.toFixed(2)} USDC`;\n\nconst formatClientList = (clients: string[]) =>\n clients.length > 0 ? clients.join(', ') : 'none detected';\n\nconst formatMcpFailures = (failures: AddServerFailure[]) =>\n failures.map(failure => `${failure.name} (${failure.message})`);\n\ntype InstalledSkillResult = ReturnType<typeof installSkills>;\n\nconst serializeLinkedAgents = (linkedAgents: InstalledSkillResult['agents']) =>\n linkedAgents.map(linkedAgent => ({\n agent: linkedAgent.agent,\n mode: linkedAgent.mode,\n path: linkedAgent.path,\n }));\n\nconst formatSuccessOutput = (params: {\n dev: boolean;\n skillMd: string;\n installedAgents: string[];\n mcpResult: McpInstallSummary;\n wallet: {\n address: string;\n balance?: number;\n chains?: { chain: string; balance: number }[];\n depositLink: string;\n };\n redeem?: {\n amount: number;\n txHash: string;\n };\n}) => {\n const lines = [\n 'agentcash onboarding complete!',\n '',\n `Wallet: ${params.wallet.address}`,\n ];\n\n if (params.redeem) {\n lines.push(`Redeemed: ${formatBalance(params.redeem.amount)}`);\n lines.push(`Transaction: https://basescan.org/tx/${params.redeem.txHash}`);\n }\n\n lines.push(\n `Balance: ${params.wallet.balance != null ? formatBalance(params.wallet.balance) : 'balance refresh unavailable'}`,\n `Deposit link: ${params.wallet.depositLink}`,\n `Skill installed for: ${formatClientList(params.installedAgents)}`,\n `MCP configured for: ${formatClientList(params.mcpResult.installed.map(result => result.name))}`,\n );\n\n const mcpFailures = formatMcpFailures(params.mcpResult.failed);\n if (mcpFailures.length > 0) {\n lines.push(`MCP not configured for: ${mcpFailures.join(', ')}`);\n }\n\n if (params.wallet.chains && params.wallet.chains.length > 0) {\n lines.push(\n `Chain balances: ${params.wallet.chains\n .map(chain => `${chain.chain} ${formatBalance(chain.balance)}`)\n .join(', ')}`\n );\n }\n\n lines.push(formatDemoPromptsBlock(getBaseUrl(params.dev)));\n lines.push('', params.skillMd.trimEnd());\n\n return lines.join('\\n');\n};\n\nconst formatRedeemFailureOutput = (params: {\n dev: boolean;\n installedAgents: string[];\n mcpResult: McpInstallSummary;\n redeemError: {\n cause?: string;\n message: string;\n };\n}) => {\n const onboardingLink = `${getBaseUrl(params.dev)}/onboard`;\n const lines = [\n 'agentcash setup finished, but invite redemption failed.',\n `Reason: ${params.redeemError.message}`,\n `Finish onboarding at: ${onboardingLink}`,\n `Skill installed for: ${formatClientList(params.installedAgents)}`,\n `MCP configured for: ${formatClientList(params.mcpResult.installed.map(result => result.name))}`,\n ];\n\n const mcpFailures = formatMcpFailures(params.mcpResult.failed);\n if (mcpFailures.length > 0) {\n lines.push(`MCP not configured for: ${mcpFailures.join(', ')}`);\n }\n\n return lines.join('\\n');\n};\n\nfunction installAgentcashWalletSkill() {\n const detectedAgents = detectAgents();\n\n return resultFromPromise(\n 'skill',\n SURFACE,\n (async () => {\n const tmpDir = await fs.mkdtemp(\n path.join(os.tmpdir(), 'agentcash-onboard-')\n );\n\n const installPromise = (async () => {\n const downloaded = await downloadGitHubSkill(\n SURFACE,\n AGENTCASH_SKILL,\n tmpDir\n );\n\n const installResult = installSkills(tmpDir, {\n agents: detectedAgents,\n cwd: process.cwd(),\n });\n\n return {\n detectedAgents,\n installResult,\n skillMd: downloaded.skillMd,\n };\n })();\n\n return installPromise.finally(async () => {\n await fs.rm(tmpDir, { recursive: true, force: true });\n });\n })(),\n e => ({\n cause: 'skill_install_failed' as const,\n message:\n e instanceof Error\n ? e.message\n : 'Failed to install the agentcash wallet skill',\n })\n );\n}\n\nasync function installDetectedMcpServers(\n flags: GlobalFlags<OutputFlags>\n): Promise<McpInstallSummary> {\n const installed: AddServerSuccess[] = [];\n const failed: AddServerFailure[] = [];\n\n for (const client of detectInstalledClients()) {\n const result = await tryAddServer(\n client,\n { ...flags, yes: true },\n { silent: true }\n );\n\n if (result.success) {\n installed.push(result.value);\n continue;\n }\n\n failed.push(result.error);\n }\n\n return {\n failed,\n installed,\n };\n}\n\nexport async function onboardCommand(\n args: OnboardArgs,\n flags: GlobalFlags<OutputFlags>\n): Promise<void> {\n // Onboard output is designed to be read by an agent, always use pretty\n flags = { ...flags, format: flags.format ?? 'pretty' };\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n return outputAndExit(\n fromNeverthrowError(walletResult, 'WALLET_ERROR'),\n flags\n );\n }\n\n const {\n account: { address },\n } = walletResult.value;\n\n progress(flags, 'Installing agentcash wallet skill...');\n const skillInstallResult = await installAgentcashWalletSkill();\n\n if (skillInstallResult.isErr()) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: skillInstallResult.error.message,\n surface: SURFACE,\n cause: 'skill_install_failed',\n }),\n flags\n );\n }\n\n const skillInstall = skillInstallResult.value;\n\n progress(flags, 'Configuring MCP for detected clients...');\n const mcpResult = await installDetectedMcpServers(flags);\n const installedAgents = skillInstall.detectedAgents.map(agent => agent.name);\n\n // Redeem invite code if provided\n let redeemValue: { amount: number; txHash: string } | undefined;\n\n if (args.code) {\n progress(flags, 'Redeeming invite code...');\n const redeemResult = await redeemInviteCode({\n address,\n code: args.code,\n dev: flags.dev,\n surface: SURFACE,\n });\n\n if (redeemResult.isErr()) {\n // Code was provided but failed — always error\n const format = getOutputFormat(flags.format);\n\n return outputAndExit(\n successResponse(\n format === 'pretty'\n ? formatRedeemFailureOutput({\n dev: flags.dev,\n installedAgents,\n mcpResult,\n redeemError: {\n cause: redeemResult.error.cause,\n message: redeemResult.error.message,\n },\n })\n : toJsonObject({\n message:\n 'agentcash setup finished, but invite redemption failed. Finish onboarding on agentcash.dev.',\n redeemed: false,\n onboardingLink: `${getBaseUrl(flags.dev)}/onboard`,\n redeemError: {\n cause: redeemResult.error.cause,\n message: redeemResult.error.message,\n },\n skill: {\n installedAgents,\n installedPaths: skillInstall.installResult.paths,\n linkedAgents: serializeLinkedAgents(\n skillInstall.installResult.agents\n ),\n },\n mcp: {\n failed: mcpResult.failed.map(result => ({\n cause: result.cause,\n client: result.client,\n message: result.message,\n name: result.name,\n path: result.path,\n })),\n installed: mcpResult.installed.map(result => ({\n client: result.client,\n name: result.name,\n path: result.path,\n })),\n },\n })\n ),\n flags\n );\n }\n\n redeemValue = redeemResult.value;\n }\n\n // Fetch balance — needed both for display and to gate no-code onboarding\n progress(flags, 'Fetching wallet balance...');\n const walletInfoResult = await getWalletInfo(SURFACE, address, flags);\n const walletInfo = walletInfoResult.isOk()\n ? walletInfoResult.value\n : undefined;\n\n // No code and zero balance — can't continue\n if (!args.code && (!walletInfo?.balance || walletInfo.balance <= 0)) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message:\n 'No invite code provided and wallet balance is zero. Get an invite code at https://agentcash.dev/onboard or deposit USDC to your wallet.',\n surface: SURFACE,\n cause: 'no_funds',\n }),\n flags\n );\n }\n\n const format = getOutputFormat(flags.format);\n\n return outputAndExit(\n successResponse(\n format === 'pretty'\n ? formatSuccessOutput({\n dev: flags.dev,\n installedAgents,\n mcpResult,\n redeem: redeemValue,\n skillMd: skillInstall.skillMd,\n wallet: {\n address,\n balance: walletInfo?.balance,\n chains: walletInfo?.chains,\n depositLink:\n walletInfo?.depositLink ?? getDepositLink(address, flags),\n },\n })\n : toJsonObject({\n message: 'agentcash onboarding complete',\n redeemed: !!redeemValue,\n ...(redeemValue\n ? {\n invite: {\n amount: redeemValue.amount,\n txHash: redeemValue.txHash,\n },\n }\n : {}),\n wallet: {\n address,\n balance: walletInfo?.balance,\n chains: walletInfo?.chains,\n depositLink:\n walletInfo?.depositLink ?? getDepositLink(address, flags),\n ...(walletInfo?.message ? { message: walletInfo.message } : {}),\n },\n skill: {\n installedAgents,\n installedPaths: skillInstall.installResult.paths,\n linkedAgents: serializeLinkedAgents(\n skillInstall.installResult.agents\n ),\n name: 'agentcash',\n skillMd: skillInstall.skillMd,\n },\n mcp: {\n failed: mcpResult.failed.map(result => ({\n cause: result.cause,\n client: result.client,\n message: result.message,\n name: result.name,\n path: result.path,\n })),\n installed: mcpResult.installed.map(result => ({\n client: result.client,\n name: result.name,\n path: result.path,\n })),\n },\n ...formatDemoPromptsJson(getBaseUrl(flags.dev)),\n })\n ),\n flags\n );\n}\n","import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport process from 'process';\n\nimport { getPlatformPath } from './2-add-server/lib';\nimport { detect as detectAgents } from '@/shared/skills/agents';\n\nimport { Clients } from './clients';\n\nconst agentClientMap: Partial<Record<string, Clients>> = {\n 'Claude Code': Clients.ClaudeCode,\n Cline: Clients.Cline,\n Codex: Clients.Codex,\n Cursor: Clients.Cursor,\n 'Gemini CLI': Clients.GeminiCli,\n Goose: Clients.Goose,\n OpenCode: Clients.Opencode,\n OpenClaw: Clients.Openclaw,\n Roo: Clients.RooCline,\n Windsurf: Clients.Windsurf,\n};\n\nexport function detectInstalledClients(): Clients[] {\n const clients = new Set<Clients>();\n const homeDir = os.homedir();\n const { baseDir, vscodePath } = getPlatformPath();\n\n for (const agent of detectAgents()) {\n const client = agentClientMap[agent.name];\n if (client) {\n clients.add(client);\n }\n }\n\n if (fs.existsSync(path.join(homeDir, '.claude.json'))) {\n clients.add(Clients.ClaudeCode);\n }\n\n if (fs.existsSync(path.join(baseDir, 'Claude'))) {\n clients.add(Clients.Claude);\n }\n\n if (fs.existsSync(path.join(baseDir, vscodePath))) {\n clients.add(Clients.Vscode);\n }\n\n const zedPath =\n process.platform === 'win32'\n ? path.join(\n process.env.APPDATA ?? path.join(homeDir, 'AppData', 'Roaming'),\n 'Zed'\n )\n : path.join(homeDir, '.config', 'zed');\n\n if (fs.existsSync(zedPath)) {\n clients.add(Clients.Zed);\n }\n\n return [...clients];\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\n\nimport z from 'zod';\n\nimport {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeFetch,\n safeFetchJson,\n} from '@/shared/neverthrow/fetch';\n\nconst githubContentsSchema = z.array(\n z.object({\n type: z.enum(['file', 'dir']),\n name: z.string(),\n path: z.string(),\n download_url: z.string().nullable().optional(),\n })\n);\n\nexport interface GitHubSkillSource {\n owner: string;\n repo: string;\n skillPath: string;\n}\n\nexport interface DownloadGitHubSkillResult {\n files: string[];\n skillDir: string;\n skillMd: string;\n}\n\nconst githubHeaders = {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'agentcash-cli',\n};\n\nconst buildContentsUrl = (owner: string, repo: string, skillPath: string) => {\n const encodedPath = skillPath\n .split('/')\n .filter(Boolean)\n .map(part => encodeURIComponent(part))\n .join('/');\n\n return `https://api.github.com/repos/${owner}/${repo}/contents/${encodedPath}`;\n};\n\nexport async function downloadGitHubSkill(\n surface: string,\n source: GitHubSkillSource,\n targetDir: string\n): Promise<DownloadGitHubSkillResult> {\n const skillDir = path.join(targetDir, path.basename(source.skillPath));\n const files: string[] = [];\n let skillMd: string | undefined;\n\n const writeDirectory = async (\n remotePath: string,\n localDir: string\n ): Promise<void> => {\n const contentsResult = await safeFetchJson(\n surface,\n new Request(buildContentsUrl(source.owner, source.repo, remotePath), {\n headers: githubHeaders,\n }),\n githubContentsSchema,\n DEFAULT_USER_FETCH_TIMEOUT\n );\n\n if (contentsResult.isErr()) {\n throw new Error(\n `Failed to download skill metadata: ${contentsResult.error.message}`\n );\n }\n\n await fs.mkdir(localDir, { recursive: true });\n\n for (const item of contentsResult.value) {\n const localPath = path.join(localDir, item.name);\n\n if (item.type === 'dir') {\n await writeDirectory(item.path, localPath);\n continue;\n }\n\n if (!item.download_url) {\n throw new Error(\n `GitHub did not provide a download URL for ${item.path}`\n );\n }\n\n const fileResult = await safeFetch(\n surface,\n new Request(item.download_url, {\n headers: githubHeaders,\n }),\n DEFAULT_USER_FETCH_TIMEOUT\n );\n\n if (fileResult.isErr()) {\n throw new Error(\n `Failed to download ${item.path}: ${fileResult.error.message}`\n );\n }\n\n if (!fileResult.value.ok) {\n throw new Error(\n `Failed to download ${item.path}: ${fileResult.value.status} ${fileResult.value.statusText}`\n );\n }\n\n const bytes = Buffer.from(await fileResult.value.arrayBuffer());\n await fs.mkdir(path.dirname(localPath), { recursive: true });\n await fs.writeFile(localPath, bytes);\n files.push(localPath);\n\n if (item.path === `${source.skillPath}/SKILL.md`) {\n skillMd = bytes.toString('utf8');\n }\n }\n };\n\n await writeDirectory(source.skillPath, skillDir);\n\n if (!skillMd) {\n throw new Error(\n `No SKILL.md found in ${source.owner}/${source.repo}/${source.skillPath}`\n );\n }\n\n return {\n files,\n skillDir,\n skillMd,\n };\n}\n","export interface DemoPrompt {\n label: string;\n prompt: string;\n resources: string[];\n}\n\nexport const DEMO_PROMPTS: DemoPrompt[] = [\n {\n label: 'Buy custom merch using an edited image of you/your company logo',\n prompt:\n 'Ask my name first. Then use npx agentcash discover stableenrich.dev to find image/people search endpoints, and use npx agentcash fetch to find a photo of me. Next, use npx agentcash discover stablestudio.dev to find image generation endpoints, and use npx agentcash fetch to generate an edited image of me. Then use npx agentcash discover stablemerch.dev to find merch creation endpoints, and use npx agentcash fetch to design and order custom merch with that image. Upload assets via stableupload.dev as needed.',\n resources: [\n 'stableenrich.dev',\n 'stablestudio.dev',\n 'stableupload.dev',\n 'stablemerch.dev',\n ],\n },\n {\n label: 'Find sales / GTM leads and contact details',\n prompt:\n 'Ask me about my target market and ideal customer profile. Then use npx agentcash discover stableenrich.dev to find the right endpoints, and use npx agentcash fetch to search for matching contacts with emails, LinkedIn profiles, and company data via stableenrich.dev.',\n resources: ['stableenrich.dev'],\n },\n {\n label: 'Do a report on a high leverage thing associated with my business',\n prompt:\n 'Ask me what my business does. Then use npx agentcash discover stableenrich.dev to find web scraping and search endpoints. Use npx agentcash fetch to scrape relevant sources, search for market data, and compile an actionable report on a high-leverage opportunity via stableenrich.dev.',\n resources: ['stableenrich.dev'],\n },\n {\n label: 'Buy a domain and make a website',\n prompt:\n 'Ask me what the site is for. Then use npx agentcash discover stabledomains.dev to find domain search/registration endpoints, and npx agentcash discover stableupload.dev for hosting. Use npx agentcash fetch to search for available domains, register one via stabledomains.dev, build a landing page, and deploy it via stableupload.dev.',\n resources: ['stabledomains.dev', 'stableupload.dev'],\n },\n];\n\nexport function formatDemoPromptsBlock(baseUrl: string): string {\n const lines: string[] = [''];\n lines.push('NEXT STEP: Ask the user which demo they want to run:');\n\n for (const [i, p] of DEMO_PROMPTS.entries()) {\n lines.push(` ${i + 1}) ${p.label}`);\n }\n\n lines.push('');\n lines.push('REPORTING INSTRUCTIONS:');\n lines.push(\n `After the user picks a demo, call POST ${baseUrl}/api/onboard/choice with { \"choice\": <1-4>, \"label\": \"<chosen label>\" } using fetch_with_auth (SIWX, no payment).`\n );\n lines.push(\n `When the demo finishes (or fails), call POST ${baseUrl}/api/onboard/report with { \"choice\": <1-4>, \"success\": true/false, \"summary\": \"<what happened>\", \"stepsCompleted\": [\"step1\", ...] } using fetch_with_auth.`\n );\n\n return lines.join('\\n');\n}\n\nexport function formatDemoPromptsJson(baseUrl: string) {\n return {\n nextStep: [\n 'Ask the user which demo they want to try.',\n 'When they pick one, execute it using this exact workflow:',\n ' STEP 1: Run `npx agentcash discover <resource>` for EVERY resource listed in the demo. This tells you the endpoints, parameters, and pricing. Do this FIRST before anything else.',\n ' STEP 2: Use `npx agentcash fetch` to call the endpoints you discovered. This handles payment automatically.',\n ' STEP 3: Present the results to the user.',\n 'The stable*.dev services are the backbone of every demo. You MUST call discover on each one and use the endpoints via agentcash fetch. Do NOT skip this or try to do things without them.',\n ].join('\\n'),\n demos: DEMO_PROMPTS.map((p, i) => ({\n option: i + 1,\n label: p.label,\n prompt: p.prompt,\n resources: p.resources,\n discoverCommands: p.resources.map(r => `npx agentcash discover ${r}`),\n })),\n reporting: {\n instructions:\n 'After the user picks a demo, report the choice. When the demo finishes or fails, report the outcome. Both endpoints use SIWX auth (no payment) via fetch_with_auth.',\n onChoice: {\n method: 'POST',\n url: `${baseUrl}/api/onboard/choice`,\n body: { choice: '<1-4>', label: '<chosen demo label>' },\n auth: 'siwx (fetch_with_auth)',\n },\n onComplete: {\n method: 'POST',\n url: `${baseUrl}/api/onboard/report`,\n body: {\n choice: '<1-4>',\n success: '<true/false>',\n summary: '<what happened>',\n stepsCompleted: ['<step1>', '<step2>'],\n error: '<error message if failed>',\n },\n auth: 'siwx (fetch_with_auth)',\n },\n },\n };\n}\n"],"mappings":"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","names":["chalk","lines","chalk","randomBytes","SURFACE","randomBytes","randomBytes","SURFACE","randomBytes","SURFACE","SURFACE","SURFACE","fs","os","path","base","SURFACE","fs","os","path","fs","os","path","process","os","fs","path","process","fs","path","SURFACE","format"]}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
DESCRIPTIONS
|
|
4
|
+
} from "./chunk-RY34EBJ4.js";
|
|
2
5
|
import {
|
|
3
6
|
isMppEnabled
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OW3UV227.js";
|
|
5
8
|
import "./chunk-JNYAKINU.js";
|
|
6
9
|
import {
|
|
7
10
|
MCP_VERSION
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HXRJ5ES4.js";
|
|
9
12
|
|
|
10
13
|
// src/index.ts
|
|
11
14
|
import yargs from "yargs";
|
|
@@ -54,7 +57,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
54
57
|
}
|
|
55
58
|
}).command(
|
|
56
59
|
"fetch <url>",
|
|
57
|
-
|
|
60
|
+
DESCRIPTIONS.fetch.cli,
|
|
58
61
|
(yargs2) => yargs2.positional("url", {
|
|
59
62
|
type: "string",
|
|
60
63
|
description: "The endpoint URL to fetch",
|
|
@@ -81,7 +84,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
81
84
|
default: "auto"
|
|
82
85
|
}),
|
|
83
86
|
async (args) => {
|
|
84
|
-
const { fetchCommand } = await import("./commands-
|
|
87
|
+
const { fetchCommand } = await import("./commands-M66YQJM7.js");
|
|
85
88
|
await fetchCommand(
|
|
86
89
|
{
|
|
87
90
|
url: args.url,
|
|
@@ -95,7 +98,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
95
98
|
}
|
|
96
99
|
).command(
|
|
97
100
|
"fetch-auth <url>",
|
|
98
|
-
|
|
101
|
+
DESCRIPTIONS.fetchWithAuth.cli,
|
|
99
102
|
(yargs2) => yargs2.positional("url", {
|
|
100
103
|
type: "string",
|
|
101
104
|
description: "The endpoint URL to fetch",
|
|
@@ -116,7 +119,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
116
119
|
description: "Additional headers as JSON object"
|
|
117
120
|
}),
|
|
118
121
|
async (args) => {
|
|
119
|
-
const { fetchAuthCommand } = await import("./commands-
|
|
122
|
+
const { fetchAuthCommand } = await import("./commands-M66YQJM7.js");
|
|
120
123
|
await fetchAuthCommand(
|
|
121
124
|
{
|
|
122
125
|
url: args.url,
|
|
@@ -129,7 +132,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
129
132
|
}
|
|
130
133
|
).command(
|
|
131
134
|
"check <url>",
|
|
132
|
-
|
|
135
|
+
DESCRIPTIONS.checkEndpointSchema.cli,
|
|
133
136
|
(yargs2) => yargs2.positional("url", {
|
|
134
137
|
type: "string",
|
|
135
138
|
description: "The endpoint URL to check",
|
|
@@ -149,7 +152,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
149
152
|
description: "Additional headers as JSON object"
|
|
150
153
|
}),
|
|
151
154
|
async (args) => {
|
|
152
|
-
const { checkCommand } = await import("./commands-
|
|
155
|
+
const { checkCommand } = await import("./commands-M66YQJM7.js");
|
|
153
156
|
await checkCommand(
|
|
154
157
|
{
|
|
155
158
|
url: args.url,
|
|
@@ -162,7 +165,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
162
165
|
}
|
|
163
166
|
).command(
|
|
164
167
|
"discover <url>",
|
|
165
|
-
|
|
168
|
+
DESCRIPTIONS.discoverApiEndpoints.cli,
|
|
166
169
|
(yargs2) => yargs2.positional("url", {
|
|
167
170
|
type: "string",
|
|
168
171
|
description: "The origin URL to discover endpoints from",
|
|
@@ -172,7 +175,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
172
175
|
description: "Guidance override: true=always include, false=never include, omitted=auto by threshold"
|
|
173
176
|
}),
|
|
174
177
|
async (args) => {
|
|
175
|
-
const { discoverCommand } = await import("./commands-
|
|
178
|
+
const { discoverCommand } = await import("./commands-M66YQJM7.js");
|
|
176
179
|
await discoverCommand(
|
|
177
180
|
{ url: args.url, includeGuidance: args.includeGuidance },
|
|
178
181
|
args
|
|
@@ -187,7 +190,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
187
190
|
demandOption: true
|
|
188
191
|
}),
|
|
189
192
|
async (args) => {
|
|
190
|
-
const { registerCommand } = await import("./commands-
|
|
193
|
+
const { registerCommand } = await import("./commands-M66YQJM7.js");
|
|
191
194
|
await registerCommand({ url: args.url }, args);
|
|
192
195
|
}
|
|
193
196
|
).command(
|
|
@@ -199,7 +202,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
199
202
|
demandOption: true
|
|
200
203
|
}),
|
|
201
204
|
async (args) => {
|
|
202
|
-
const { addSkillCommand } = await import("./commands-
|
|
205
|
+
const { addSkillCommand } = await import("./commands-M66YQJM7.js");
|
|
203
206
|
await addSkillCommand({ url: args.url }, args);
|
|
204
207
|
}
|
|
205
208
|
).command(
|
|
@@ -207,17 +210,10 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
207
210
|
"Non-interactive onboarding flow for agentcash wallet + MCP setup",
|
|
208
211
|
(yargs2) => yargs2.positional("code", {
|
|
209
212
|
type: "string",
|
|
210
|
-
description: "The invite code to redeem"
|
|
211
|
-
}).check((args) => {
|
|
212
|
-
if (typeof args.code === "string" || typeof args.invite === "string") {
|
|
213
|
-
return true;
|
|
214
|
-
}
|
|
215
|
-
throw new Error(
|
|
216
|
-
"An invite code is required. Get one at https://agentcash.dev/onboard"
|
|
217
|
-
);
|
|
213
|
+
description: "The invite code to redeem (optional)"
|
|
218
214
|
}),
|
|
219
215
|
async (args) => {
|
|
220
|
-
const { onboardCommand } = await import("./commands-
|
|
216
|
+
const { onboardCommand } = await import("./commands-M66YQJM7.js");
|
|
221
217
|
await onboardCommand({ code: args.code ?? args.invite }, args);
|
|
222
218
|
}
|
|
223
219
|
).command(
|
|
@@ -225,22 +221,22 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
225
221
|
"Wallet management commands",
|
|
226
222
|
(yargs2) => yargs2.command(
|
|
227
223
|
"info",
|
|
228
|
-
|
|
224
|
+
DESCRIPTIONS.getWalletInfo.cli,
|
|
229
225
|
(yargs3) => yargs3,
|
|
230
226
|
async (args) => {
|
|
231
|
-
const { walletInfoCommand } = await import("./commands-
|
|
227
|
+
const { walletInfoCommand } = await import("./commands-M66YQJM7.js");
|
|
232
228
|
await walletInfoCommand({}, args);
|
|
233
229
|
}
|
|
234
230
|
).command(
|
|
235
231
|
"redeem <code>",
|
|
236
|
-
|
|
232
|
+
DESCRIPTIONS.redeemInvite.cli,
|
|
237
233
|
(yargs3) => yargs3.positional("code", {
|
|
238
234
|
type: "string",
|
|
239
235
|
description: "The invite code to redeem",
|
|
240
236
|
demandOption: true
|
|
241
237
|
}),
|
|
242
238
|
async (args) => {
|
|
243
|
-
const { walletRedeemCommand } = await import("./commands-
|
|
239
|
+
const { walletRedeemCommand } = await import("./commands-M66YQJM7.js");
|
|
244
240
|
await walletRedeemCommand({ code: args.code }, args);
|
|
245
241
|
}
|
|
246
242
|
).command(
|
|
@@ -248,7 +244,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
248
244
|
"Get wallet address",
|
|
249
245
|
(yargs3) => yargs3,
|
|
250
246
|
async (args) => {
|
|
251
|
-
const { walletAddressCommand } = await import("./commands-
|
|
247
|
+
const { walletAddressCommand } = await import("./commands-M66YQJM7.js");
|
|
252
248
|
await walletAddressCommand({}, args);
|
|
253
249
|
}
|
|
254
250
|
).demandCommand(1, "You must specify a wallet subcommand").strict(),
|
|
@@ -256,7 +252,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
256
252
|
}
|
|
257
253
|
).command(
|
|
258
254
|
"report-error",
|
|
259
|
-
|
|
255
|
+
DESCRIPTIONS.reportError.cli,
|
|
260
256
|
(yargs2) => yargs2.option("tool", {
|
|
261
257
|
type: "string",
|
|
262
258
|
description: "The tool/command that failed",
|
|
@@ -280,7 +276,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
280
276
|
description: "Detailed report with context and repro steps"
|
|
281
277
|
}),
|
|
282
278
|
async (args) => {
|
|
283
|
-
const { reportErrorCommand } = await import("./commands-
|
|
279
|
+
const { reportErrorCommand } = await import("./commands-M66YQJM7.js");
|
|
284
280
|
await reportErrorCommand(
|
|
285
281
|
{
|
|
286
282
|
tool: args.tool,
|
|
@@ -298,7 +294,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
298
294
|
"Start the MCP server (default when no command specified)",
|
|
299
295
|
(yargs2) => yargs2,
|
|
300
296
|
async (args) => {
|
|
301
|
-
const { serverCommand } = await import("./commands-
|
|
297
|
+
const { serverCommand } = await import("./commands-M66YQJM7.js");
|
|
302
298
|
await serverCommand(args);
|
|
303
299
|
}
|
|
304
300
|
).command(
|
|
@@ -311,7 +307,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
311
307
|
default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
|
|
312
308
|
}),
|
|
313
309
|
async (args) => {
|
|
314
|
-
const { installMcpServer } = await import("./install-
|
|
310
|
+
const { installMcpServer } = await import("./install-4YDF4G6T.js");
|
|
315
311
|
await installMcpServer(args);
|
|
316
312
|
}
|
|
317
313
|
).command(
|
|
@@ -337,7 +333,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
337
333
|
).example(
|
|
338
334
|
"$0 onboard ABC123",
|
|
339
335
|
"Install onboarding skill, configure MCP, and redeem an invite"
|
|
340
|
-
).example("$0 wallet info", "Get wallet balance").example("$0 wallet redeem ABC123", "Redeem invite code").example("$0", "Start MCP server (default)").example("$0 install --client cursor", "Install MCP for Cursor").strict().help().version(MCP_VERSION).parseAsync().catch((err) => {
|
|
336
|
+
).example("$0 wallet info", "Get wallet balance").example("$0 wallet redeem ABC123", "Redeem invite code").example("$0", "Start MCP server (default)").example("$0 install --client cursor", "Install MCP for Cursor").strict().epilogue(DESCRIPTIONS.serverInstructions).help().version(MCP_VERSION).parseAsync().catch((err) => {
|
|
341
337
|
const response = {
|
|
342
338
|
success: false,
|
|
343
339
|
error: {
|
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';\nimport { MCP_VERSION } from '@/shared/version';\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 declared in the spec are returned.',\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\n .positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description:\n 'Guidance override: true=always include, false=never include, omitted=auto by threshold',\n }),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand(\n { url: args.url, includeGuidance: args.includeGuidance },\n args\n );\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 'add <url>',\n 'Add a skill to the agentcash MCP server',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The URL of the skill to add',\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands');\n await addSkillCommand({ url: args.url }, args);\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs\n .positional('code', {\n type: 'string',\n description: 'The invite code to redeem',\n })\n .check(args => {\n if (\n typeof args.code === 'string' ||\n typeof args.invite === 'string'\n ) {\n return true;\n }\n\n throw new Error(\n 'An invite code is required. Get one at https://agentcash.dev/onboard'\n );\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands');\n await onboardCommand({ code: (args.code ?? args.invite)! }, 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 .command(\n 'address',\n 'Get wallet address',\n yargs => yargs,\n async args => {\n const { walletAddressCommand } = await import('@/cli/commands');\n await walletAddressCommand({}, 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://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\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(MCP_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"]}
|
|
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';\nimport { MCP_VERSION } from '@/shared/version';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\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 DESCRIPTIONS.fetch.cli,\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 DESCRIPTIONS.fetchWithAuth.cli,\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 DESCRIPTIONS.checkEndpointSchema.cli,\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 declared in the spec are returned.',\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 DESCRIPTIONS.discoverApiEndpoints.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description:\n 'Guidance override: true=always include, false=never include, omitted=auto by threshold',\n }),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand(\n { url: args.url, includeGuidance: args.includeGuidance },\n args\n );\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 'add <url>',\n 'Add a skill to the agentcash MCP server',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The URL of the skill to add',\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands');\n await addSkillCommand({ url: args.url }, args);\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs\n .positional('code', {\n type: 'string',\n description: 'The invite code to redeem (optional)',\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands');\n await onboardCommand({ code: args.code ?? args.invite }, args);\n }\n )\n .command(\n 'wallet',\n 'Wallet management commands',\n yargs =>\n yargs\n .command(\n 'info',\n DESCRIPTIONS.getWalletInfo.cli,\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 DESCRIPTIONS.redeemInvite.cli,\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 .command(\n 'address',\n 'Get wallet address',\n yargs => yargs,\n async args => {\n const { walletAddressCommand } = await import('@/cli/commands');\n await walletAddressCommand({}, 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 DESCRIPTIONS.reportError.cli,\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://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\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 .epilogue(DESCRIPTIONS.serverInstructions)\n .help()\n .version(MCP_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"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MQLBI77V.js";
|
|
4
4
|
import {
|
|
5
5
|
Clients,
|
|
6
6
|
clientMetadata
|
|
7
7
|
} from "./chunk-JNYAKINU.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-HXRJ5ES4.js";
|
|
9
9
|
import {
|
|
10
10
|
promptDeposit
|
|
11
11
|
} from "./chunk-KOMAKKV3.js";
|
|
@@ -176,4 +176,4 @@ var installMcpServer = async (flags) => {
|
|
|
176
176
|
export {
|
|
177
177
|
installMcpServer
|
|
178
178
|
};
|
|
179
|
-
//# sourceMappingURL=install-
|
|
179
|
+
//# sourceMappingURL=install-4YDF4G6T.js.map
|