mppx 0.6.17 → 0.6.18
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/CHANGELOG.md +8 -0
- package/dist/cli/cli.d.ts +4 -0
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +230 -10
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/plugins/plugin.d.ts +5 -0
- package/dist/cli/plugins/plugin.d.ts.map +1 -1
- package/dist/cli/plugins/plugin.js.map +1 -1
- package/dist/cli/plugins/stripe.d.ts.map +1 -1
- package/dist/cli/plugins/stripe.js +7 -2
- package/dist/cli/plugins/stripe.js.map +1 -1
- package/dist/cli/plugins/tempo.d.ts.map +1 -1
- package/dist/cli/plugins/tempo.js +69 -9
- package/dist/cli/plugins/tempo.js.map +1 -1
- package/dist/cli/utils.d.ts +10 -2
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +11 -4
- package/dist/cli/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/cli.test.ts +120 -0
- package/src/cli/cli.ts +254 -10
- package/src/cli/mcp.test.ts +3 -0
- package/src/cli/plugins/plugin.ts +9 -1
- package/src/cli/plugins/stripe.ts +7 -0
- package/src/cli/plugins/tempo.ts +83 -12
- package/src/cli/utils.test.ts +12 -1
- package/src/cli/utils.ts +23 -5
package/dist/cli/utils.d.ts
CHANGED
|
@@ -67,9 +67,17 @@ export declare function fmtBalance(b: bigint, symbol: string, decimals?: number,
|
|
|
67
67
|
explorerUrl?: string | undefined;
|
|
68
68
|
token?: string | undefined;
|
|
69
69
|
}): string;
|
|
70
|
-
|
|
71
|
-
export declare
|
|
70
|
+
export type Network = 'mainnet' | 'testnet';
|
|
71
|
+
export declare const networkRpcUrls: {
|
|
72
|
+
readonly mainnet: "https://rpc.tempo.xyz";
|
|
73
|
+
readonly testnet: "https://rpc.moderato.tempo.xyz";
|
|
74
|
+
};
|
|
75
|
+
/** Resolve RPC URL from explicit option, network option, then MPPX_RPC_URL/RPC_URL env vars. */
|
|
76
|
+
export declare function resolveRpcUrl(explicit?: string | undefined, options?: {
|
|
77
|
+
network?: Network | undefined;
|
|
78
|
+
}): string | undefined;
|
|
72
79
|
export declare function resolveChain(opts?: {
|
|
80
|
+
network?: Network | undefined;
|
|
73
81
|
rpcUrl?: string | undefined;
|
|
74
82
|
}): Promise<Chain>;
|
|
75
83
|
export declare function chainName(chain: {
|
package/dist/cli/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,KAAK,OAAO,EAAE,YAAY,EAAQ,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as readline from 'node:readline';
|
|
2
2
|
import { createClient, http } from 'viem';
|
|
3
3
|
import { tempo as tempoMainnet, tempoModerato } from 'viem/chains';
|
|
4
|
+
import * as defaults from '../tempo/internal/defaults.js';
|
|
4
5
|
// Inlined from https://github.com/alexeyraspopov/picocolors (ISC License)
|
|
5
6
|
export const pc = (() => {
|
|
6
7
|
const p = process || {};
|
|
@@ -191,12 +192,18 @@ export function fmtBalance(b, symbol, decimals = 6, opts) {
|
|
|
191
192
|
: pc.dim(symbol);
|
|
192
193
|
return `${dec ? `${formatted}.${dec}` : formatted} ${sym}`;
|
|
193
194
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
export const networkRpcUrls = {
|
|
196
|
+
mainnet: defaults.rpcUrl[defaults.chainId.mainnet],
|
|
197
|
+
testnet: defaults.rpcUrl[defaults.chainId.testnet],
|
|
198
|
+
};
|
|
199
|
+
/** Resolve RPC URL from explicit option, network option, then MPPX_RPC_URL/RPC_URL env vars. */
|
|
200
|
+
export function resolveRpcUrl(explicit, options = {}) {
|
|
201
|
+
return (explicit ??
|
|
202
|
+
(options.network ? networkRpcUrls[options.network] : undefined) ??
|
|
203
|
+
(process.env.MPPX_RPC_URL?.trim() || process.env.RPC_URL?.trim() || undefined));
|
|
197
204
|
}
|
|
198
205
|
export async function resolveChain(opts = {}) {
|
|
199
|
-
const rpcUrl = resolveRpcUrl(opts.rpcUrl);
|
|
206
|
+
const rpcUrl = resolveRpcUrl(opts.rpcUrl, { network: opts.network });
|
|
200
207
|
if (!rpcUrl)
|
|
201
208
|
return tempoMainnet;
|
|
202
209
|
const { getChainId } = await import('viem/actions');
|
package/dist/cli/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/cli.test.ts
CHANGED
|
@@ -318,6 +318,114 @@ describe('discover generate', () => {
|
|
|
318
318
|
})
|
|
319
319
|
})
|
|
320
320
|
|
|
321
|
+
describe('services', () => {
|
|
322
|
+
const registry = {
|
|
323
|
+
version: 1,
|
|
324
|
+
services: [
|
|
325
|
+
{
|
|
326
|
+
id: 'fal',
|
|
327
|
+
name: 'fal',
|
|
328
|
+
serviceUrl: 'https://fal.mpp.dev',
|
|
329
|
+
description: 'Image generation',
|
|
330
|
+
tags: ['image'],
|
|
331
|
+
status: 'active',
|
|
332
|
+
docs: { homepage: 'https://docs.fal.ai' },
|
|
333
|
+
endpoints: [
|
|
334
|
+
{
|
|
335
|
+
method: 'POST',
|
|
336
|
+
path: '/fal-ai/fast-sdxl',
|
|
337
|
+
description: 'Generate an image',
|
|
338
|
+
payment: {
|
|
339
|
+
amount: '3000',
|
|
340
|
+
currency: '0x20c000000000000000000000b9537d11c60e8b50',
|
|
341
|
+
decimals: 6,
|
|
342
|
+
intent: 'charge',
|
|
343
|
+
method: 'tempo',
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
method: 'GET',
|
|
348
|
+
path: '/health',
|
|
349
|
+
description: 'Health check',
|
|
350
|
+
payment: null,
|
|
351
|
+
},
|
|
352
|
+
],
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
id: 'freebie',
|
|
356
|
+
name: 'Freebie',
|
|
357
|
+
serviceUrl: 'https://freebie.example',
|
|
358
|
+
endpoints: [],
|
|
359
|
+
},
|
|
360
|
+
],
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
async function withRegistry<T>(fn: (url: string) => Promise<T>) {
|
|
364
|
+
const server = await Http.createServer((_req, res) => {
|
|
365
|
+
res.setHeader('Content-Type', 'application/json')
|
|
366
|
+
res.end(JSON.stringify(registry))
|
|
367
|
+
})
|
|
368
|
+
try {
|
|
369
|
+
return await fn(server.url)
|
|
370
|
+
} finally {
|
|
371
|
+
server.close()
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
test('list: prints registered services', async () => {
|
|
376
|
+
await withRegistry(async (url) => {
|
|
377
|
+
const { output, exitCode } = await serve(['services', 'list'], {
|
|
378
|
+
env: { MPPX_SERVICES_URL: url },
|
|
379
|
+
})
|
|
380
|
+
|
|
381
|
+
expect(exitCode).toBeUndefined()
|
|
382
|
+
expect(output).toContain('fal')
|
|
383
|
+
expect(output).toContain('1 paid')
|
|
384
|
+
expect(output).toContain('https://fal.mpp.dev')
|
|
385
|
+
})
|
|
386
|
+
})
|
|
387
|
+
|
|
388
|
+
test('list: supports structured output and filtering', async () => {
|
|
389
|
+
await withRegistry(async (url) => {
|
|
390
|
+
const { output, exitCode } = await serve(['services', 'list', '--query', 'image', '--json'], {
|
|
391
|
+
env: { MPPX_SERVICES_URL: url },
|
|
392
|
+
})
|
|
393
|
+
|
|
394
|
+
expect(exitCode).toBeUndefined()
|
|
395
|
+
const parsed = JSON.parse(output)
|
|
396
|
+
expect(parsed.services).toHaveLength(1)
|
|
397
|
+
expect(parsed.services[0]).toMatchObject({ id: 'fal', paidEndpoints: 1 })
|
|
398
|
+
})
|
|
399
|
+
})
|
|
400
|
+
|
|
401
|
+
test('show: prints service metadata', async () => {
|
|
402
|
+
await withRegistry(async (url) => {
|
|
403
|
+
const { output, exitCode } = await serve(['services', 'show', 'fal'], {
|
|
404
|
+
env: { MPPX_SERVICES_URL: url },
|
|
405
|
+
})
|
|
406
|
+
|
|
407
|
+
expect(exitCode).toBeUndefined()
|
|
408
|
+
expect(output).toContain('Image generation')
|
|
409
|
+
expect(output).toContain('https://docs.fal.ai')
|
|
410
|
+
expect(output).toContain('2 (1 paid)')
|
|
411
|
+
})
|
|
412
|
+
})
|
|
413
|
+
|
|
414
|
+
test('endpoints: prints paid endpoint details', async () => {
|
|
415
|
+
await withRegistry(async (url) => {
|
|
416
|
+
const { output, exitCode } = await serve(['services', 'endpoints', 'fal'], {
|
|
417
|
+
env: { MPPX_SERVICES_URL: url },
|
|
418
|
+
})
|
|
419
|
+
|
|
420
|
+
expect(exitCode).toBeUndefined()
|
|
421
|
+
expect(output).toContain('POST')
|
|
422
|
+
expect(output).toContain('/fal-ai/fast-sdxl')
|
|
423
|
+
expect(output).toContain('3000')
|
|
424
|
+
expect(output).toContain('tempo/charge')
|
|
425
|
+
})
|
|
426
|
+
})
|
|
427
|
+
})
|
|
428
|
+
|
|
321
429
|
describe('basic charge (examples/basic)', () => {
|
|
322
430
|
test('happy path: makes payment and receives response', { timeout: 120_000 }, async () => {
|
|
323
431
|
const { Actions } = await import('viem/tempo')
|
|
@@ -1413,6 +1521,7 @@ test('mppx --help', async () => {
|
|
|
1413
1521
|
expect(output).toContain('mppx')
|
|
1414
1522
|
expect(output).toContain('<url>')
|
|
1415
1523
|
expect(output).toContain('account')
|
|
1524
|
+
expect(output).toContain('services')
|
|
1416
1525
|
expect(output).toContain('sign')
|
|
1417
1526
|
})
|
|
1418
1527
|
|
|
@@ -1537,6 +1646,17 @@ export default defineConfig({
|
|
|
1537
1646
|
expect(output.trim()).toMatch(/^Payment\s+\S+/)
|
|
1538
1647
|
})
|
|
1539
1648
|
|
|
1649
|
+
test('rejects unsupported tempo method options', async () => {
|
|
1650
|
+
const { output, exitCode } = await serve(
|
|
1651
|
+
['sign', '--challenge', validChallenge, '--rpc-url', rpcUrl, '-M', 'feeToken=0xabc'],
|
|
1652
|
+
{ env: { MPPX_PRIVATE_KEY: testPrivateKey } },
|
|
1653
|
+
)
|
|
1654
|
+
|
|
1655
|
+
expect(exitCode).toBeDefined()
|
|
1656
|
+
expect(output).toContain('Unsupported CLI method option')
|
|
1657
|
+
expect(output).toContain('feeToken')
|
|
1658
|
+
})
|
|
1659
|
+
|
|
1540
1660
|
test('happy path: --json outputs authorization', { timeout: 120_000 }, async () => {
|
|
1541
1661
|
const { output, stderr, exitCode } = await serve(
|
|
1542
1662
|
['sign', '--challenge', validChallenge, '--rpc-url', rpcUrl, '--json'],
|
package/src/cli/cli.ts
CHANGED
|
@@ -60,6 +60,24 @@ const discoveryIssueSchema = z.object({
|
|
|
60
60
|
severity: z.string(),
|
|
61
61
|
})
|
|
62
62
|
|
|
63
|
+
const serviceSummarySchema = z.object({
|
|
64
|
+
description: z.string().optional(),
|
|
65
|
+
id: z.string(),
|
|
66
|
+
name: z.string().optional(),
|
|
67
|
+
paidEndpoints: z.number(),
|
|
68
|
+
status: z.string().optional(),
|
|
69
|
+
url: z.string().optional(),
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const serviceEndpointSchema = z.object({
|
|
73
|
+
description: z.string().optional(),
|
|
74
|
+
method: z.string(),
|
|
75
|
+
path: z.string(),
|
|
76
|
+
payment: z.unknown().optional(),
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
const servicesRegistryUrl = 'https://mpp.dev/api/services'
|
|
80
|
+
|
|
63
81
|
function shouldReturnStructured(c: { format: string; formatExplicit: boolean }) {
|
|
64
82
|
return c.format === 'json' && c.formatExplicit
|
|
65
83
|
}
|
|
@@ -79,6 +97,93 @@ function canReadCommandStdin() {
|
|
|
79
97
|
return process.stdin.listenerCount('data') === 0 && process.stdin.listenerCount('readable') === 0
|
|
80
98
|
}
|
|
81
99
|
|
|
100
|
+
type ServiceRegistryService = Record<string, unknown>
|
|
101
|
+
type ServiceRegistryEndpoint = Record<string, unknown>
|
|
102
|
+
|
|
103
|
+
function getString(value: unknown): string | undefined {
|
|
104
|
+
return typeof value === 'string' ? value : undefined
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function getEndpoints(service: ServiceRegistryService): ServiceRegistryEndpoint[] {
|
|
108
|
+
return Array.isArray(service.endpoints)
|
|
109
|
+
? service.endpoints.filter(
|
|
110
|
+
(endpoint): endpoint is ServiceRegistryEndpoint =>
|
|
111
|
+
typeof endpoint === 'object' && endpoint !== null,
|
|
112
|
+
)
|
|
113
|
+
: []
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function summarizeService(service: ServiceRegistryService) {
|
|
117
|
+
const endpoints = getEndpoints(service)
|
|
118
|
+
return {
|
|
119
|
+
...(getString(service.description) ? { description: getString(service.description) } : {}),
|
|
120
|
+
id: getString(service.id) ?? getString(service.name) ?? 'unknown',
|
|
121
|
+
...(getString(service.name) ? { name: getString(service.name) } : {}),
|
|
122
|
+
paidEndpoints: endpoints.filter((endpoint) => endpoint.payment).length,
|
|
123
|
+
...(getString(service.status) ? { status: getString(service.status) } : {}),
|
|
124
|
+
...(getString(service.serviceUrl) || getString(service.url)
|
|
125
|
+
? { url: getString(service.serviceUrl) ?? getString(service.url) }
|
|
126
|
+
: {}),
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function summarizeEndpoint(endpoint: ServiceRegistryEndpoint) {
|
|
131
|
+
return {
|
|
132
|
+
...(getString(endpoint.description) ? { description: getString(endpoint.description) } : {}),
|
|
133
|
+
method: getString(endpoint.method) ?? 'GET',
|
|
134
|
+
path: getString(endpoint.path) ?? '/',
|
|
135
|
+
...(endpoint.payment !== undefined ? { payment: endpoint.payment } : {}),
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function formatPayment(payment: unknown): string {
|
|
140
|
+
if (!payment) return 'free'
|
|
141
|
+
if (typeof payment !== 'object') return String(payment)
|
|
142
|
+
const p = payment as Record<string, unknown>
|
|
143
|
+
const amount = getString(p.amount)
|
|
144
|
+
const currency = getString(p.currency)
|
|
145
|
+
const method = getString(p.method)
|
|
146
|
+
const intent = getString(p.intent)
|
|
147
|
+
return [amount, currency, method && intent ? `${method}/${intent}` : (method ?? intent)]
|
|
148
|
+
.filter(Boolean)
|
|
149
|
+
.join(' ')
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async function fetchServicesRegistry(): Promise<ServiceRegistryService[]> {
|
|
153
|
+
const url = process.env.MPPX_SERVICES_URL ?? servicesRegistryUrl
|
|
154
|
+
const response = await globalThis.fetch(url)
|
|
155
|
+
if (!response.ok)
|
|
156
|
+
throw new Errors.IncurError({
|
|
157
|
+
code: 'SERVICES_FETCH_FAILED',
|
|
158
|
+
message: `Failed to fetch services registry: HTTP ${response.status}`,
|
|
159
|
+
exitCode: 1,
|
|
160
|
+
})
|
|
161
|
+
const json = (await response.json()) as unknown
|
|
162
|
+
if (
|
|
163
|
+
!json ||
|
|
164
|
+
typeof json !== 'object' ||
|
|
165
|
+
!Array.isArray((json as { services?: unknown }).services)
|
|
166
|
+
)
|
|
167
|
+
throw new Errors.IncurError({
|
|
168
|
+
code: 'SERVICES_INVALID',
|
|
169
|
+
message: 'Services registry response did not contain a services array.',
|
|
170
|
+
exitCode: 1,
|
|
171
|
+
})
|
|
172
|
+
return (json as { services: ServiceRegistryService[] }).services
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function findService(
|
|
176
|
+
services: ServiceRegistryService[],
|
|
177
|
+
id: string,
|
|
178
|
+
): ServiceRegistryService | undefined {
|
|
179
|
+
const needle = id.toLowerCase()
|
|
180
|
+
return services.find((service) => {
|
|
181
|
+
const serviceId = getString(service.id)?.toLowerCase()
|
|
182
|
+
const serviceName = getString(service.name)?.toLowerCase()
|
|
183
|
+
return serviceId === needle || serviceName === needle
|
|
184
|
+
})
|
|
185
|
+
}
|
|
186
|
+
|
|
82
187
|
const cli = Cli.create('mppx', {
|
|
83
188
|
version: packageJson.version,
|
|
84
189
|
description: 'Make HTTP requests with automatic payment handling',
|
|
@@ -88,6 +193,7 @@ const cli = Cli.create('mppx', {
|
|
|
88
193
|
}),
|
|
89
194
|
options: z.object({
|
|
90
195
|
account: z.string().optional().describe('Account name (env: MPPX_ACCOUNT)'),
|
|
196
|
+
autoSwap: z.boolean().optional().describe('Auto-swap source tokens into payment currency'),
|
|
91
197
|
config: z.string().optional().describe('Path to config file'),
|
|
92
198
|
confirm: z.boolean().optional().default(false).describe('Show confirmation prompts'),
|
|
93
199
|
data: z.string().optional().describe('Send request body (implies POST unless -X is set)'),
|
|
@@ -108,11 +214,14 @@ const cli = Cli.create('mppx', {
|
|
|
108
214
|
.array(z.string())
|
|
109
215
|
.optional()
|
|
110
216
|
.describe('Method-specific option (key=value, repeatable)'),
|
|
217
|
+
network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
|
|
218
|
+
payWith: z.string().optional().describe('Source token for Tempo auto-swap'),
|
|
111
219
|
rpcUrl: z
|
|
112
220
|
.string()
|
|
113
221
|
.optional()
|
|
114
222
|
.describe('RPC endpoint, defaults to public RPC for chain (env: MPPX_RPC_URL)'),
|
|
115
223
|
silent: z.boolean().default(false).describe('Silent mode (suppress progress and info)'),
|
|
224
|
+
slippage: z.number().optional().describe('Tempo auto-swap max slippage percentage'),
|
|
116
225
|
userAgent: z
|
|
117
226
|
.string()
|
|
118
227
|
.optional()
|
|
@@ -274,7 +383,14 @@ const cli = Cli.create('mppx', {
|
|
|
274
383
|
if (plugin) {
|
|
275
384
|
pluginResult = await plugin.setup({
|
|
276
385
|
challenge,
|
|
277
|
-
options: {
|
|
386
|
+
options: {
|
|
387
|
+
account: c.options.account,
|
|
388
|
+
autoSwap: c.options.autoSwap,
|
|
389
|
+
network: c.options.network,
|
|
390
|
+
payWith: c.options.payWith,
|
|
391
|
+
rpcUrl: c.options.rpcUrl,
|
|
392
|
+
slippage: c.options.slippage,
|
|
393
|
+
},
|
|
278
394
|
methodOpts: parseMethodOpts(c.options.methodOpt),
|
|
279
395
|
})
|
|
280
396
|
tokenSymbol = pluginResult.tokenSymbol
|
|
@@ -542,6 +658,7 @@ const account = Cli.create('account', {
|
|
|
542
658
|
description: 'Create new account',
|
|
543
659
|
options: z.object({
|
|
544
660
|
account: z.string().optional().describe('Account name (env: MPPX_ACCOUNT)'),
|
|
661
|
+
network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
|
|
545
662
|
rpcUrl: z.string().optional().describe('RPC endpoint (env: MPPX_RPC_URL)'),
|
|
546
663
|
}),
|
|
547
664
|
output: z.object({ address: z.string(), name: z.string() }),
|
|
@@ -587,8 +704,8 @@ const account = Cli.create('account', {
|
|
|
587
704
|
const addrDisplay = explorerUrl
|
|
588
705
|
? link(`${explorerUrl}/address/${acct.address}`, acct.address)
|
|
589
706
|
: acct.address
|
|
590
|
-
const rpcUrl = resolveRpcUrl(c.options.rpcUrl)
|
|
591
|
-
resolveChain({ rpcUrl })
|
|
707
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
|
|
708
|
+
resolveChain({ network: c.options.network, rpcUrl })
|
|
592
709
|
.then((chain) => createClient({ chain, transport: http(rpcUrl) }))
|
|
593
710
|
.then((client) =>
|
|
594
711
|
import('viem/tempo').then(({ Actions }) =>
|
|
@@ -702,6 +819,7 @@ const account = Cli.create('account', {
|
|
|
702
819
|
description: 'Fund account with testnet tokens',
|
|
703
820
|
options: z.object({
|
|
704
821
|
account: z.string().optional().describe('Account name (env: MPPX_ACCOUNT)'),
|
|
822
|
+
network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
|
|
705
823
|
rpcUrl: z.string().optional().describe('RPC endpoint (env: MPPX_RPC_URL)'),
|
|
706
824
|
}),
|
|
707
825
|
output: z.object({ account: z.string(), chain: z.string(), transactions: z.array(z.string()) }),
|
|
@@ -722,8 +840,8 @@ const account = Cli.create('account', {
|
|
|
722
840
|
return c.error({ code: 'ACCOUNT_NOT_FOUND', message: 'No account found.', exitCode: 69 })
|
|
723
841
|
}
|
|
724
842
|
const acct = privateKeyToAccount(key as `0x${string}`)
|
|
725
|
-
const rpcUrl = resolveRpcUrl(c.options.rpcUrl)
|
|
726
|
-
const chain = await resolveChain({ rpcUrl })
|
|
843
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
|
|
844
|
+
const chain = await resolveChain({ network: c.options.network, rpcUrl })
|
|
727
845
|
const client = createClient({ chain, transport: http(rpcUrl) })
|
|
728
846
|
if (!structured) console.log(`Funding "${accountName}" on ${chainName(chain)}`)
|
|
729
847
|
try {
|
|
@@ -852,6 +970,7 @@ const account = Cli.create('account', {
|
|
|
852
970
|
description: 'View account address',
|
|
853
971
|
options: z.object({
|
|
854
972
|
account: z.string().optional().describe('Account name (env: MPPX_ACCOUNT)'),
|
|
973
|
+
network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
|
|
855
974
|
rpcUrl: z.string().optional().describe('RPC endpoint (env: MPPX_RPC_URL)'),
|
|
856
975
|
}),
|
|
857
976
|
output: accountViewSchema,
|
|
@@ -869,8 +988,8 @@ const account = Cli.create('account', {
|
|
|
869
988
|
})
|
|
870
989
|
}
|
|
871
990
|
const address = tempoEntry.wallet_address as Address
|
|
872
|
-
const rpcUrl = resolveRpcUrl(c.options.rpcUrl)
|
|
873
|
-
const chain = await resolveChain({ rpcUrl })
|
|
991
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
|
|
992
|
+
const chain = await resolveChain({ network: c.options.network, rpcUrl })
|
|
874
993
|
const explorerUrl = chain.blockExplorers?.default?.url
|
|
875
994
|
const addrDisplay = explorerUrl
|
|
876
995
|
? link(`${explorerUrl}/address/${address}`, address)
|
|
@@ -913,8 +1032,8 @@ const account = Cli.create('account', {
|
|
|
913
1032
|
return c.error({ code: 'ACCOUNT_NOT_FOUND', message: 'No account found.', exitCode: 69 })
|
|
914
1033
|
}
|
|
915
1034
|
const acct = privateKeyToAccount(key as `0x${string}`)
|
|
916
|
-
const rpcUrl = resolveRpcUrl(c.options.rpcUrl)
|
|
917
|
-
const chain = await resolveChain({ rpcUrl })
|
|
1035
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
|
|
1036
|
+
const chain = await resolveChain({ network: c.options.network, rpcUrl })
|
|
918
1037
|
const explorerUrl = chain.blockExplorers?.default?.url
|
|
919
1038
|
const addrDisplay = explorerUrl
|
|
920
1039
|
? link(`${explorerUrl}/address/${acct.address}`, acct.address)
|
|
@@ -948,14 +1067,18 @@ const sign = Cli.create('sign', {
|
|
|
948
1067
|
challenge: z.string().optional().describe('WWW-Authenticate challenge value'),
|
|
949
1068
|
config: z.string().optional().describe('Path to config file'),
|
|
950
1069
|
dryRun: z.boolean().optional().describe('Validate and parse the challenge without signing'),
|
|
1070
|
+
autoSwap: z.boolean().optional().describe('Auto-swap source tokens into payment currency'),
|
|
951
1071
|
methodOpt: z
|
|
952
1072
|
.array(z.string())
|
|
953
1073
|
.optional()
|
|
954
1074
|
.describe('Method-specific option (key=value, repeatable)'),
|
|
1075
|
+
network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
|
|
1076
|
+
payWith: z.string().optional().describe('Source token for Tempo auto-swap'),
|
|
955
1077
|
rpcUrl: z
|
|
956
1078
|
.string()
|
|
957
1079
|
.optional()
|
|
958
1080
|
.describe('RPC endpoint, defaults to public RPC for chain (env: MPPX_RPC_URL)'),
|
|
1081
|
+
slippage: z.number().optional().describe('Tempo auto-swap max slippage percentage'),
|
|
959
1082
|
}),
|
|
960
1083
|
output: z.object({ authorization: z.string() }),
|
|
961
1084
|
alias: {
|
|
@@ -1029,7 +1152,14 @@ const sign = Cli.create('sign', {
|
|
|
1029
1152
|
if (plugin) {
|
|
1030
1153
|
const result = await plugin.setup({
|
|
1031
1154
|
challenge,
|
|
1032
|
-
options: {
|
|
1155
|
+
options: {
|
|
1156
|
+
account: c.options.account,
|
|
1157
|
+
autoSwap: c.options.autoSwap,
|
|
1158
|
+
network: c.options.network,
|
|
1159
|
+
payWith: c.options.payWith,
|
|
1160
|
+
rpcUrl: c.options.rpcUrl,
|
|
1161
|
+
slippage: c.options.slippage,
|
|
1162
|
+
},
|
|
1033
1163
|
methodOpts,
|
|
1034
1164
|
})
|
|
1035
1165
|
if (result.createCredential) {
|
|
@@ -1104,6 +1234,119 @@ export default defineConfig({
|
|
|
1104
1234
|
},
|
|
1105
1235
|
})
|
|
1106
1236
|
|
|
1237
|
+
const services = Cli.create('services', {
|
|
1238
|
+
description: 'Browse the MPP services registry',
|
|
1239
|
+
})
|
|
1240
|
+
.command('list', {
|
|
1241
|
+
description: 'List registered MPP services',
|
|
1242
|
+
options: z.object({
|
|
1243
|
+
query: z.string().optional().describe('Filter by id, name, category, tag, or description'),
|
|
1244
|
+
}),
|
|
1245
|
+
output: z.object({ services: z.array(serviceSummarySchema) }),
|
|
1246
|
+
alias: { query: 'q' },
|
|
1247
|
+
async run(c) {
|
|
1248
|
+
const query = c.options.query?.toLowerCase()
|
|
1249
|
+
const registry = await fetchServicesRegistry()
|
|
1250
|
+
const filtered = query
|
|
1251
|
+
? registry.filter((service) =>
|
|
1252
|
+
[
|
|
1253
|
+
service.id,
|
|
1254
|
+
service.name,
|
|
1255
|
+
service.description,
|
|
1256
|
+
...(Array.isArray(service.categories) ? service.categories : []),
|
|
1257
|
+
...(Array.isArray(service.tags) ? service.tags : []),
|
|
1258
|
+
]
|
|
1259
|
+
.filter((value): value is string => typeof value === 'string')
|
|
1260
|
+
.some((value) => value.toLowerCase().includes(query)),
|
|
1261
|
+
)
|
|
1262
|
+
: registry
|
|
1263
|
+
const summaries = filtered.map(summarizeService).sort((a, b) => a.id.localeCompare(b.id))
|
|
1264
|
+
return outputResult(c, { services: summaries }, () => {
|
|
1265
|
+
if (summaries.length === 0) {
|
|
1266
|
+
console.log('No services found.')
|
|
1267
|
+
return
|
|
1268
|
+
}
|
|
1269
|
+
const idWidth = Math.max(...summaries.map((service) => service.id.length))
|
|
1270
|
+
const paidWidth = Math.max(
|
|
1271
|
+
...summaries.map((service) => String(service.paidEndpoints).length),
|
|
1272
|
+
)
|
|
1273
|
+
for (const service of summaries) {
|
|
1274
|
+
const name = service.name && service.name !== service.id ? ` ${service.name}` : ''
|
|
1275
|
+
const url = service.url ? ` ${pc.dim(service.url)}` : ''
|
|
1276
|
+
console.log(
|
|
1277
|
+
`${service.id.padEnd(idWidth)} ${String(service.paidEndpoints).padStart(paidWidth)} paid${name}${url}`,
|
|
1278
|
+
)
|
|
1279
|
+
}
|
|
1280
|
+
})
|
|
1281
|
+
},
|
|
1282
|
+
})
|
|
1283
|
+
.command('show', {
|
|
1284
|
+
description: 'Show one registered MPP service',
|
|
1285
|
+
args: z.object({
|
|
1286
|
+
service: z.string().describe('Service id or name'),
|
|
1287
|
+
}),
|
|
1288
|
+
output: z.object({ service: z.record(z.string(), z.unknown()) }),
|
|
1289
|
+
async run(c) {
|
|
1290
|
+
const registry = await fetchServicesRegistry()
|
|
1291
|
+
const service = findService(registry, c.args.service)
|
|
1292
|
+
if (!service)
|
|
1293
|
+
return c.error({
|
|
1294
|
+
code: 'SERVICE_NOT_FOUND',
|
|
1295
|
+
message: `Service not found: ${c.args.service}`,
|
|
1296
|
+
exitCode: 1,
|
|
1297
|
+
})
|
|
1298
|
+
const summary = summarizeService(service)
|
|
1299
|
+
const endpoints = getEndpoints(service)
|
|
1300
|
+
return outputResult(c, { service }, () => {
|
|
1301
|
+
console.log(`${summary.name ?? summary.id} ${pc.dim(`(${summary.id})`)}`)
|
|
1302
|
+
if (summary.description) console.log(summary.description)
|
|
1303
|
+
if (summary.url) console.log(`${pc.dim('URL')} ${link(summary.url, summary.url)}`)
|
|
1304
|
+
if (summary.status) console.log(`${pc.dim('Status')} ${summary.status}`)
|
|
1305
|
+
console.log(`${pc.dim('Endpoints')} ${endpoints.length} (${summary.paidEndpoints} paid)`)
|
|
1306
|
+
const docs = service.docs as Record<string, unknown> | undefined
|
|
1307
|
+
const homepage = docs && getString(docs.homepage)
|
|
1308
|
+
if (homepage) console.log(`${pc.dim('Docs')} ${link(homepage, homepage)}`)
|
|
1309
|
+
})
|
|
1310
|
+
},
|
|
1311
|
+
})
|
|
1312
|
+
.command('endpoints', {
|
|
1313
|
+
description: 'List endpoints for a registered MPP service',
|
|
1314
|
+
args: z.object({
|
|
1315
|
+
service: z.string().describe('Service id or name'),
|
|
1316
|
+
}),
|
|
1317
|
+
output: z.object({
|
|
1318
|
+
endpoints: z.array(serviceEndpointSchema),
|
|
1319
|
+
service: serviceSummarySchema,
|
|
1320
|
+
}),
|
|
1321
|
+
async run(c) {
|
|
1322
|
+
const registry = await fetchServicesRegistry()
|
|
1323
|
+
const service = findService(registry, c.args.service)
|
|
1324
|
+
if (!service)
|
|
1325
|
+
return c.error({
|
|
1326
|
+
code: 'SERVICE_NOT_FOUND',
|
|
1327
|
+
message: `Service not found: ${c.args.service}`,
|
|
1328
|
+
exitCode: 1,
|
|
1329
|
+
})
|
|
1330
|
+
const summary = summarizeService(service)
|
|
1331
|
+
const endpoints = getEndpoints(service).map(summarizeEndpoint)
|
|
1332
|
+
return outputResult(c, { endpoints, service: summary }, () => {
|
|
1333
|
+
if (endpoints.length === 0) {
|
|
1334
|
+
console.log(`No endpoints found for ${summary.id}.`)
|
|
1335
|
+
return
|
|
1336
|
+
}
|
|
1337
|
+
const methodWidth = Math.max(...endpoints.map((endpoint) => endpoint.method.length))
|
|
1338
|
+
const pathWidth = Math.max(...endpoints.map((endpoint) => endpoint.path.length))
|
|
1339
|
+
for (const endpoint of endpoints) {
|
|
1340
|
+
const payment = formatPayment(endpoint.payment)
|
|
1341
|
+
const description = endpoint.description ? ` ${pc.dim(endpoint.description)}` : ''
|
|
1342
|
+
console.log(
|
|
1343
|
+
`${endpoint.method.padEnd(methodWidth)} ${endpoint.path.padEnd(pathWidth)} ${payment}${description}`,
|
|
1344
|
+
)
|
|
1345
|
+
}
|
|
1346
|
+
})
|
|
1347
|
+
},
|
|
1348
|
+
})
|
|
1349
|
+
|
|
1107
1350
|
const discover = Cli.create('discover', {
|
|
1108
1351
|
description: 'Discovery tooling',
|
|
1109
1352
|
})
|
|
@@ -1281,6 +1524,7 @@ const discover = Cli.create('discover', {
|
|
|
1281
1524
|
cli.command(account)
|
|
1282
1525
|
cli.command(discover)
|
|
1283
1526
|
cli.command(init)
|
|
1527
|
+
cli.command(services)
|
|
1284
1528
|
cli.command(sign)
|
|
1285
1529
|
|
|
1286
1530
|
export default cli
|