@hightop/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env.example ADDED
@@ -0,0 +1,11 @@
1
+ HIGHTOP_BASE_URL=https://api.hightop.com
2
+
3
+ # Header-key auth
4
+ HIGHTOP_AGENT_ID=
5
+ HIGHTOP_API_KEY=
6
+
7
+ # Or bearer-token auth
8
+ # HIGHTOP_BEARER_TOKEN=
9
+
10
+ # Optional request timeout in milliseconds
11
+ # HIGHTOP_TIMEOUT_MS=30000
package/README.md ADDED
@@ -0,0 +1,126 @@
1
+ # @hightop/cli
2
+
3
+ Command-line interface for the Hightop Agent API.
4
+
5
+ The executable is `hightop`. The CLI uses `@hightop/sdk` for all Agent API requests and derives normal command coverage from the generated Agent API endpoint catalog.
6
+
7
+ ## Configuration
8
+
9
+ Set a base URL and one auth mode for protected commands.
10
+
11
+ Header-key auth:
12
+
13
+ ```sh
14
+ export HIGHTOP_BASE_URL=https://api.hightop.com
15
+ export HIGHTOP_AGENT_ID=...
16
+ export HIGHTOP_API_KEY=...
17
+ ```
18
+
19
+ Bearer-token auth:
20
+
21
+ ```sh
22
+ export HIGHTOP_BASE_URL=https://api.hightop.com
23
+ export HIGHTOP_BEARER_TOKEN=...
24
+ ```
25
+
26
+ Supported environment variables:
27
+
28
+ ```txt
29
+ HIGHTOP_BASE_URL
30
+ HIGHTOP_AGENT_ID
31
+ HIGHTOP_API_KEY
32
+ HIGHTOP_BEARER_TOKEN
33
+ HIGHTOP_TIMEOUT_MS
34
+ ```
35
+
36
+ Equivalent flags are available for local/debug use:
37
+
38
+ ```sh
39
+ hightop self --base-url https://api.hightop.com --agent-id ... --api-key ...
40
+ ```
41
+
42
+ The CLI does not auto-load `.env` files. For local testing, source one into the shell:
43
+
44
+ ```sh
45
+ cp packages/cli/.env.example .env.agent
46
+ # edit .env.agent with real credentials
47
+ set -a
48
+ source .env.agent
49
+ set +a
50
+ ```
51
+
52
+ ## Help
53
+
54
+ Global help:
55
+
56
+ ```sh
57
+ hightop --help
58
+ ```
59
+
60
+ Command-group help:
61
+
62
+ ```sh
63
+ hightop x402 --help
64
+ hightop borrow collateral --help
65
+ ```
66
+
67
+ Endpoint command help:
68
+
69
+ ```sh
70
+ hightop one-off-payments create --help
71
+ hightop webhooks update --help
72
+ ```
73
+
74
+ When running from a checkout before publishing, call the built file directly:
75
+
76
+ ```sh
77
+ node packages/cli/dist/index.js x402 --help
78
+ ```
79
+
80
+ ## Commands
81
+
82
+ Examples:
83
+
84
+ ```sh
85
+ hightop self --pretty
86
+ hightop balances --pretty
87
+ hightop operations get <operation-id> --include-onchain --pretty
88
+ hightop borrow repay --asset GREEN --amount-usd 25 --simulate --pretty
89
+ hightop one-off-payments create --to 0x... --asset USDC --amount-usd 25 --simulate --pretty
90
+ hightop webhooks create --url https://example.com/hook --event-types payment.executed,webhook.test --pretty
91
+ hightop x402 quote --url https://example.com/paid-resource --pretty
92
+ hightop raw GET /v1/agent/openapi.json --pretty
93
+ ```
94
+
95
+ The generated command layer supports all catalogued `/v1/agent/*` endpoints. CLI flags are generated from endpoint query/body field names by converting underscores to dashes, for example `amount_usd` becomes `--amount-usd`.
96
+
97
+ For complex bodies, pass a JSON object:
98
+
99
+ ```sh
100
+ hightop x402 sign --body '{"pay_to":"0x...","amount":"1000","target_url":"https://example.com"}'
101
+ ```
102
+
103
+ Repeated or comma-separated array flags are accepted for known array fields:
104
+
105
+ ```sh
106
+ hightop webhooks create --url https://example.com/hook --event-types payment.executed,webhook.test
107
+ hightop earn rewards claim --protocols underscore-earn --protocols ripe-rewards
108
+ ```
109
+
110
+ ## Writes
111
+
112
+ For mutating commands, the CLI generates an idempotency key unless `--idempotency-key` is provided. The key is printed in the JSON response so callers can retry the same logical operation intentionally.
113
+
114
+ Use `--simulate` to call `/v1/agent/simulate` instead of broadcasting:
115
+
116
+ ```sh
117
+ hightop borrow repay --asset GREEN --amount-usd 25 --simulate --pretty
118
+ ```
119
+
120
+ Use `--wait` to poll the returned operation until it reaches a terminal state:
121
+
122
+ ```sh
123
+ hightop conversions execute --quote-id <quote-id> --wait --pretty
124
+ ```
125
+
126
+ Public `openapi` and `capabilities json` commands can run without auth, but still require `HIGHTOP_BASE_URL` or `--base-url`.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { type AgentApiEndpointKey, type AgentApiRequestFor, type AgentApiResponseFor, type AgentApiSimulateRequest, type AgentApiWriteResponse, type HightopAgentClientConfig, type HightopAgentRawRequest } from '@hightop/sdk';
2
+ type WritableOutput = {
3
+ write(chunk: string): unknown;
4
+ };
5
+ export type CliIo = {
6
+ env?: Record<string, string | undefined>;
7
+ stderr: WritableOutput;
8
+ stdout: WritableOutput;
9
+ };
10
+ export type HightopAgentCliClient = {
11
+ request: <Key extends AgentApiEndpointKey>(key: Key, payload?: AgentApiRequestFor<Key>, options?: Record<string, unknown>) => Promise<AgentApiResponseFor<Key>>;
12
+ account: {
13
+ get: () => Promise<unknown>;
14
+ };
15
+ balances: {
16
+ cash: (query?: Record<string, unknown>) => Promise<unknown>;
17
+ list: (query?: Record<string, unknown>) => Promise<unknown>;
18
+ };
19
+ borrow: {
20
+ deleverage: (body: Record<string, unknown>, options: Record<string, unknown>) => Promise<AgentApiWriteResponse>;
21
+ repay: (body: Record<string, unknown>, options: Record<string, unknown>) => Promise<AgentApiWriteResponse>;
22
+ };
23
+ capabilities: {
24
+ get: () => Promise<unknown>;
25
+ };
26
+ conversions: {
27
+ execute: (body: Record<string, unknown>, options: Record<string, unknown>) => Promise<AgentApiWriteResponse>;
28
+ quote: (body: Record<string, unknown>, options: Record<string, unknown>) => Promise<Record<string, unknown> & {
29
+ operation_id?: string;
30
+ }>;
31
+ };
32
+ operations: {
33
+ get: (id: string, query?: Record<string, unknown>) => Promise<unknown>;
34
+ list: (query?: Record<string, unknown>) => Promise<unknown>;
35
+ wait: (id: string, options?: Record<string, unknown>) => Promise<unknown>;
36
+ };
37
+ rawRequest: <Response = unknown>(request: HightopAgentRawRequest) => Promise<Response>;
38
+ self: {
39
+ get: () => Promise<unknown>;
40
+ usage: () => Promise<unknown>;
41
+ };
42
+ simulate: {
43
+ request: (body: AgentApiSimulateRequest) => Promise<unknown>;
44
+ };
45
+ };
46
+ export type HightopAgentCliClientFactory = (config: HightopAgentClientConfig) => HightopAgentCliClient;
47
+ export declare function runCli(argv: string[], io: CliIo, createClient?: HightopAgentCliClientFactory): Promise<number>;
48
+ export {};
49
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/cli.js ADDED
@@ -0,0 +1,753 @@
1
+ import { readFileSync } from 'fs';
2
+ import { dirname, join } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { agentApiEndpoints, buildAgentApiPath, createIdempotencyKey, HightopAgentClient, HightopAgentSDKError, } from '@hightop/sdk';
5
+ class CliUsageError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'CliUsageError';
9
+ }
10
+ }
11
+ const KNOWN_BOOLEAN_REQUEST_FIELDS = [
12
+ 'allow_conversion',
13
+ 'allow_partial',
14
+ 'enabled',
15
+ 'move_all',
16
+ 'remove_all',
17
+ 'repay_all',
18
+ 'to_best_available',
19
+ 'use_available_cash_first',
20
+ 'use_best_available',
21
+ 'withdraw_all',
22
+ ];
23
+ const BOOLEAN_FLAGS = new Set([
24
+ 'help',
25
+ 'include-onchain',
26
+ 'pretty',
27
+ 'repay-all',
28
+ 'simulate',
29
+ 'version',
30
+ 'wait',
31
+ ...KNOWN_BOOLEAN_REQUEST_FIELDS.map((field) => field.replace(/_/g, '-')),
32
+ ]);
33
+ const PACKAGE_JSON_PATH = join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
34
+ const PUBLIC_NO_AUTH_CLI_ENDPOINT_KEYS = new Set(['GET /v1/agent/openapi.json', 'GET /v1/agent/capabilities.json']);
35
+ function readCliVersion() {
36
+ return JSON.parse(readFileSync(PACKAGE_JSON_PATH, 'utf8')).version;
37
+ }
38
+ function parseArgs(argv) {
39
+ const flags = new Map();
40
+ const positionals = [];
41
+ for (let index = 0; index < argv.length; index += 1) {
42
+ const token = argv[index];
43
+ if (!token.startsWith('--')) {
44
+ positionals.push(token);
45
+ continue;
46
+ }
47
+ const [rawName, inlineValue] = token.slice(2).split(/=(.*)/s, 2);
48
+ const next = argv[index + 1];
49
+ const hasExplicitBooleanValue = BOOLEAN_FLAGS.has(rawName) && (next === 'true' || next === 'false');
50
+ const value = inlineValue ??
51
+ (BOOLEAN_FLAGS.has(rawName)
52
+ ? hasExplicitBooleanValue
53
+ ? next
54
+ : 'true'
55
+ : next && !next.startsWith('--')
56
+ ? next
57
+ : 'true');
58
+ if (inlineValue === undefined &&
59
+ ((BOOLEAN_FLAGS.has(rawName) && hasExplicitBooleanValue) ||
60
+ (!BOOLEAN_FLAGS.has(rawName) && next && !next.startsWith('--')))) {
61
+ index += 1;
62
+ }
63
+ const values = flags.get(rawName) ?? [];
64
+ values.push(value);
65
+ flags.set(rawName, values);
66
+ }
67
+ return { flags, positionals };
68
+ }
69
+ function flag(parsed, name) {
70
+ return parsed.flags.get(name)?.at(-1);
71
+ }
72
+ function flagValues(parsed, name) {
73
+ return parsed.flags.get(name) ?? [];
74
+ }
75
+ function hasFlag(parsed, name) {
76
+ return parsed.flags.has(name);
77
+ }
78
+ function endpointSegments(endpoint) {
79
+ return endpoint.path
80
+ .replace(/^\/v1\/agent\/?/, '')
81
+ .split('/')
82
+ .filter(Boolean);
83
+ }
84
+ function endpointPathParamsAfterCommand(endpoint) {
85
+ return endpoint.pathParams.filter((param) => !endpoint.queryParams.includes(param) && !endpoint.bodyParams.includes(param));
86
+ }
87
+ function commandUsage(commandPath, endpoint, pathParamsAfterCommand) {
88
+ const pathSuffix = pathParamsAfterCommand.map((param) => ` <${param}>`).join('');
89
+ const flags = [...endpoint.queryParams, ...endpoint.bodyParams]
90
+ .filter((param) => !endpoint.pathParams.includes(param))
91
+ .map((param) => ` [--${param.replace(/_/g, '-')} <value>]`)
92
+ .join('');
93
+ const submitFlags = endpoint.idempotencyRequired ? ' [--idempotency-key <key>] [--wait] [--simulate]' : '';
94
+ return `hightop ${commandPath.join(' ')}${pathSuffix}${flags}${submitFlags}`;
95
+ }
96
+ function commandFromEndpoint(endpoint) {
97
+ const segments = endpointSegments(endpoint);
98
+ const pathParamsAfterCommand = endpointPathParamsAfterCommand(endpoint);
99
+ const staticSegments = segments.filter((segment) => !segment.startsWith('{'));
100
+ if (endpoint.path === '/v1/agent/capabilities.json') {
101
+ return { commandPath: ['capabilities', 'json'], pathParamsAfterCommand };
102
+ }
103
+ if (endpoint.method === 'GET' && endpoint.pathParams.length === 0) {
104
+ return { commandPath: staticSegments, pathParamsAfterCommand };
105
+ }
106
+ if (endpoint.method === 'GET' && endpoint.pathParams.length > 0) {
107
+ const tail = staticSegments.slice(1);
108
+ if (tail.length > 0) {
109
+ return { commandPath: [staticSegments[0], ...tail], pathParamsAfterCommand };
110
+ }
111
+ return { commandPath: [staticSegments[0], 'get'], pathParamsAfterCommand };
112
+ }
113
+ if (endpoint.method === 'POST') {
114
+ if (endpoint.pathParams.length > 0) {
115
+ return { commandPath: staticSegments, pathParamsAfterCommand };
116
+ }
117
+ if (staticSegments.length === 1) {
118
+ if (staticSegments[0] === 'conversions') {
119
+ return { commandPath: ['conversions', 'execute'], pathParamsAfterCommand };
120
+ }
121
+ return { commandPath: [staticSegments[0], 'create'], pathParamsAfterCommand };
122
+ }
123
+ return { commandPath: staticSegments, pathParamsAfterCommand };
124
+ }
125
+ if (endpoint.method === 'PATCH') {
126
+ return { commandPath: [staticSegments[0], 'update'], pathParamsAfterCommand };
127
+ }
128
+ if (endpoint.method === 'DELETE') {
129
+ return { commandPath: [staticSegments[0], 'delete'], pathParamsAfterCommand };
130
+ }
131
+ return { commandPath: staticSegments, pathParamsAfterCommand };
132
+ }
133
+ function buildCliEndpointCommands() {
134
+ const commands = agentApiEndpoints
135
+ .filter((endpoint) => endpoint.key !== 'POST /v1/agent/simulate')
136
+ .flatMap((endpoint) => {
137
+ const primary = commandFromEndpoint(endpoint);
138
+ const aliases = [primary];
139
+ if (endpoint.key === 'GET /v1/agent/self/usage') {
140
+ aliases.push({ commandPath: ['usage'], pathParamsAfterCommand: [] });
141
+ }
142
+ if (endpoint.method === 'GET' &&
143
+ endpoint.pathParams.length === 0 &&
144
+ endpoint.queryParams.some((param) => param === 'cursor' || param === 'limit')) {
145
+ aliases.push({ commandPath: [...primary.commandPath, 'list'], pathParamsAfterCommand: [] });
146
+ }
147
+ return aliases.map((alias) => ({
148
+ commandPath: alias.commandPath,
149
+ endpoint,
150
+ pathParamsAfterCommand: alias.pathParamsAfterCommand,
151
+ usage: commandUsage(alias.commandPath, endpoint, alias.pathParamsAfterCommand),
152
+ }));
153
+ });
154
+ commands.push({
155
+ commandPath: ['openapi'],
156
+ endpoint: {
157
+ bodyParams: [],
158
+ bodySchema: null,
159
+ description: 'Return the public Agent API OpenAPI document.',
160
+ idempotencyRequired: false,
161
+ key: 'GET /v1/agent/openapi.json',
162
+ method: 'GET',
163
+ path: '/v1/agent/openapi.json',
164
+ pathParams: [],
165
+ queryParams: [],
166
+ requestSchema: null,
167
+ requestType: null,
168
+ responseSchema: null,
169
+ responseType: null,
170
+ routeClass: 'read',
171
+ },
172
+ pathParamsAfterCommand: [],
173
+ usage: 'hightop openapi',
174
+ });
175
+ const seen = new Set();
176
+ return commands.filter((command) => {
177
+ const key = command.commandPath.join(' ');
178
+ if (seen.has(key)) {
179
+ return false;
180
+ }
181
+ seen.add(key);
182
+ return true;
183
+ });
184
+ }
185
+ const CLI_ENDPOINT_COMMANDS = buildCliEndpointCommands();
186
+ function commandDisplayName(command) {
187
+ const suffix = command.pathParamsAfterCommand.map((param) => ` <${param}>`).join('');
188
+ return `${command.commandPath.join(' ')}${suffix}`;
189
+ }
190
+ function formatGlobalHelp() {
191
+ const commandLines = CLI_ENDPOINT_COMMANDS.map((command) => ({
192
+ description: command.endpoint.description,
193
+ name: commandDisplayName(command),
194
+ }))
195
+ .sort((a, b) => a.name.localeCompare(b.name))
196
+ .map(({ description, name }) => ` ${name.padEnd(42)} ${description}`)
197
+ .join('\n');
198
+ return `Usage:
199
+ hightop [command] [options]
200
+
201
+ Commands:
202
+ ${commandLines}
203
+ operations wait <id> Wait for an operation to finish
204
+ raw <method> <path> Call a known Agent API route
205
+ simulate <method> <path> Simulate a write request
206
+
207
+ Global options:
208
+ --base-url <url> Agent API base URL
209
+ --agent-id <id> Agent id for header-key auth
210
+ --api-key <key> API key for header-key auth
211
+ --bearer-token <token> Bearer token auth
212
+ --timeout-ms <ms> Request timeout
213
+ --pretty Pretty-print JSON output
214
+ --version, -v Print CLI version
215
+ --help, -h Print help
216
+
217
+ Environment:
218
+ HIGHTOP_BASE_URL
219
+ HIGHTOP_AGENT_ID
220
+ HIGHTOP_API_KEY
221
+ HIGHTOP_BEARER_TOKEN
222
+ HIGHTOP_TIMEOUT_MS
223
+
224
+ Examples:
225
+ hightop self --pretty
226
+ hightop balances --pretty
227
+ hightop operations get <operation-id> --include-onchain --pretty
228
+ hightop borrow repay --asset GREEN --amount-usd 25 --simulate --pretty
229
+ hightop one-off-payments create --to 0x... --asset USDC --amount-usd 25 --simulate --pretty
230
+ hightop raw GET /v1/agent/openapi.json --pretty
231
+ `;
232
+ }
233
+ function formatCommandHelp(commandPath) {
234
+ if (commandPath.length === 0) {
235
+ return formatGlobalHelp();
236
+ }
237
+ const matches = CLI_ENDPOINT_COMMANDS.filter((command) => commandPath.every((segment, index) => command.commandPath[index] === segment));
238
+ if (matches.length === 0) {
239
+ return `No help found for: hightop ${commandPath.join(' ')}\n\n${formatGlobalHelp()}`;
240
+ }
241
+ const exact = matches.find((command) => command.commandPath.length === commandPath.length);
242
+ if (exact && matches.length === 1) {
243
+ const endpoint = exact.endpoint;
244
+ const requestFlags = [...endpoint.queryParams, ...endpoint.bodyParams].filter((param) => !endpoint.pathParams.includes(param));
245
+ const flagLines = requestFlags.length > 0
246
+ ? `\nRequest flags:\n${requestFlags.map((param) => ` --${param.replace(/_/g, '-')} <value>`).join('\n')}\n`
247
+ : '';
248
+ const submitLines = endpoint.idempotencyRequired
249
+ ? '\nSubmit options:\n --idempotency-key <key>\n --simulate\n --wait\n --wait-timeout-ms <ms>\n'
250
+ : '';
251
+ return `Usage:
252
+ ${exact.usage}
253
+
254
+ Endpoint:
255
+ ${endpoint.method} ${endpoint.path}
256
+
257
+ ${endpoint.description}
258
+ ${flagLines}${submitLines}`;
259
+ }
260
+ return `Usage:
261
+ hightop ${commandPath.join(' ')} <subcommand> [options]
262
+
263
+ Commands:
264
+ ${matches
265
+ .map((command) => ` ${commandDisplayName(command).padEnd(42)} ${command.endpoint.description}`)
266
+ .sort()
267
+ .join('\n')}
268
+ `;
269
+ }
270
+ function helpCommandPath(parsed) {
271
+ return parsed.positionals.filter((position) => position !== 'help' && position !== '-h');
272
+ }
273
+ function parsePositiveInteger(value, name) {
274
+ if (value === undefined) {
275
+ return undefined;
276
+ }
277
+ const parsed = Number(value);
278
+ if (!Number.isInteger(parsed) || parsed <= 0) {
279
+ throw new CliUsageError(`${name} must be a positive integer`);
280
+ }
281
+ return parsed;
282
+ }
283
+ function parseJson(value, name) {
284
+ if (value === undefined) {
285
+ return undefined;
286
+ }
287
+ try {
288
+ return JSON.parse(value);
289
+ }
290
+ catch {
291
+ throw new CliUsageError(`${name} must be valid JSON`);
292
+ }
293
+ }
294
+ function parseKeyValueFlags(values, name) {
295
+ const result = {};
296
+ for (const value of values) {
297
+ const separator = value.indexOf('=');
298
+ if (separator <= 0) {
299
+ throw new CliUsageError(`${name} must use key=value`);
300
+ }
301
+ result[value.slice(0, separator)] = value.slice(separator + 1);
302
+ }
303
+ return result;
304
+ }
305
+ function commandAllowsMissingAuth(parsed) {
306
+ if (parsed.positionals[0] === 'raw') {
307
+ const method = parsed.positionals[1]?.toUpperCase();
308
+ const path = parsed.positionals[2];
309
+ return PUBLIC_NO_AUTH_CLI_ENDPOINT_KEYS.has(`${method} ${path}`);
310
+ }
311
+ const match = findCliEndpointCommand(parsed.positionals);
312
+ return match ? PUBLIC_NO_AUTH_CLI_ENDPOINT_KEYS.has(match.command.endpoint.key) : false;
313
+ }
314
+ function resolveConfig(parsed, env, options = {}) {
315
+ const agentId = flag(parsed, 'agent-id') ?? env.HIGHTOP_AGENT_ID;
316
+ const apiKey = flag(parsed, 'api-key') ?? env.HIGHTOP_API_KEY;
317
+ const baseUrl = flag(parsed, 'base-url') ?? env.HIGHTOP_BASE_URL;
318
+ const bearerToken = flag(parsed, 'bearer-token') ?? env.HIGHTOP_BEARER_TOKEN;
319
+ const requireAuth = options.requireAuth ?? true;
320
+ if (!baseUrl) {
321
+ throw new CliUsageError('Missing base URL. Set HIGHTOP_BASE_URL or pass --base-url.');
322
+ }
323
+ if ((agentId || apiKey) && bearerToken) {
324
+ throw new CliUsageError('Configure either agent-id/api-key or bearer-token, not both.');
325
+ }
326
+ if (agentId || apiKey) {
327
+ if (!agentId || !apiKey) {
328
+ throw new CliUsageError('Both agent-id and api-key are required for header-key auth.');
329
+ }
330
+ }
331
+ else if (!bearerToken && requireAuth) {
332
+ throw new CliUsageError('Missing auth. Set HIGHTOP_AGENT_ID/HIGHTOP_API_KEY or HIGHTOP_BEARER_TOKEN.');
333
+ }
334
+ return {
335
+ apiKey,
336
+ agentId,
337
+ baseUrl,
338
+ bearerToken,
339
+ timeoutMs: parsePositiveInteger(flag(parsed, 'timeout-ms') ?? env.HIGHTOP_TIMEOUT_MS, 'timeout-ms'),
340
+ };
341
+ }
342
+ function writeJson(output, value, pretty) {
343
+ output.write(`${JSON.stringify(value, null, pretty ? 2 : 0)}\n`);
344
+ }
345
+ function listQuery(parsed) {
346
+ return {
347
+ ...parseKeyValueFlags(flagValues(parsed, 'query'), '--query'),
348
+ ...(flag(parsed, 'cursor') ? { cursor: flag(parsed, 'cursor') } : {}),
349
+ ...(flag(parsed, 'limit') ? { limit: Number(flag(parsed, 'limit')) } : {}),
350
+ };
351
+ }
352
+ function requiredFlag(parsed, name) {
353
+ const value = flag(parsed, name);
354
+ if (!value || value === 'true') {
355
+ throw new CliUsageError(`--${name} is required`);
356
+ }
357
+ return value;
358
+ }
359
+ function optionalBoolean(parsed, name) {
360
+ const value = flag(parsed, name);
361
+ if (value === undefined) {
362
+ return undefined;
363
+ }
364
+ if (value === 'true') {
365
+ return true;
366
+ }
367
+ if (value === 'false') {
368
+ return false;
369
+ }
370
+ throw new CliUsageError(`--${name} must be true or false`);
371
+ }
372
+ function optionalNumber(parsed, name) {
373
+ const value = flag(parsed, name);
374
+ if (value === undefined) {
375
+ return undefined;
376
+ }
377
+ const parsedValue = Number(value);
378
+ if (!Number.isFinite(parsedValue)) {
379
+ throw new CliUsageError(`--${name} must be a number`);
380
+ }
381
+ return parsedValue;
382
+ }
383
+ function addAmountChoice(parsed, body, options = {}) {
384
+ const amount = flag(parsed, 'amount');
385
+ const amountUsd = flag(parsed, 'amount-usd');
386
+ const allRequested = options.allFlag ? optionalBoolean(parsed, options.allFlag) === true : false;
387
+ const selected = [amount !== undefined, amountUsd !== undefined, allRequested].filter(Boolean).length;
388
+ if (selected !== 1) {
389
+ const choices = options.allFlag ? `--amount, --amount-usd, or --${options.allFlag}` : '--amount or --amount-usd';
390
+ throw new CliUsageError(`Exactly one of ${choices} is required`);
391
+ }
392
+ if (amount !== undefined) {
393
+ body.amount = amount;
394
+ }
395
+ if (amountUsd !== undefined) {
396
+ body.amount_usd = amountUsd;
397
+ }
398
+ if (options.allFlag && allRequested) {
399
+ body[options.allFlag.replace(/-/g, '_')] = true;
400
+ }
401
+ return body;
402
+ }
403
+ function compactObject(value) {
404
+ return Object.fromEntries(Object.entries(value).filter(([, entryValue]) => entryValue !== undefined));
405
+ }
406
+ const NUMBER_REQUEST_FIELDS = new Set([
407
+ 'expires_in_seconds',
408
+ 'limit',
409
+ 'max_timeout_seconds',
410
+ 'slippage_percent',
411
+ 'timeout_ms',
412
+ 'unlock_delay_seconds',
413
+ ]);
414
+ const ARRAY_REQUEST_FIELDS = new Set(['event_types', 'protocols']);
415
+ function flagNameForField(field) {
416
+ return field.replace(/_/g, '-');
417
+ }
418
+ function parseRequestValue(field, value) {
419
+ if (value === 'true') {
420
+ return true;
421
+ }
422
+ if (value === 'false') {
423
+ return false;
424
+ }
425
+ if (value === 'null') {
426
+ return null;
427
+ }
428
+ if (NUMBER_REQUEST_FIELDS.has(field)) {
429
+ const numberValue = Number(value);
430
+ if (!Number.isFinite(numberValue)) {
431
+ throw new CliUsageError(`--${flagNameForField(field)} must be a number`);
432
+ }
433
+ return numberValue;
434
+ }
435
+ const firstCharacter = value.trimStart()[0];
436
+ if (firstCharacter === '{' || firstCharacter === '[' || firstCharacter === '"') {
437
+ return parseJson(value, `--${flagNameForField(field)}`);
438
+ }
439
+ return value;
440
+ }
441
+ function requestFieldValue(parsed, field) {
442
+ const values = flagValues(parsed, flagNameForField(field));
443
+ if (values.length === 0) {
444
+ return undefined;
445
+ }
446
+ if (ARRAY_REQUEST_FIELDS.has(field)) {
447
+ if (values.length === 1 && values[0].trim().startsWith('[')) {
448
+ return parseJson(values[0], `--${flagNameForField(field)}`);
449
+ }
450
+ return values.flatMap((value) => value
451
+ .split(',')
452
+ .map((item) => item.trim())
453
+ .filter(Boolean));
454
+ }
455
+ return parseRequestValue(field, values.at(-1));
456
+ }
457
+ function findCliEndpointCommand(positionals) {
458
+ const commands = [...CLI_ENDPOINT_COMMANDS].sort((a, b) => b.commandPath.length - a.commandPath.length);
459
+ for (const command of commands) {
460
+ const matches = command.commandPath.every((segment, index) => positionals[index] === segment);
461
+ if (matches) {
462
+ return {
463
+ command,
464
+ remaining: positionals.slice(command.commandPath.length),
465
+ };
466
+ }
467
+ }
468
+ return null;
469
+ }
470
+ function buildEndpointPayload(parsed, command, remainingPositionals) {
471
+ if (remainingPositionals.length !== command.pathParamsAfterCommand.length) {
472
+ throw new CliUsageError(`Usage: ${command.usage}`);
473
+ }
474
+ const endpoint = command.endpoint;
475
+ const pathParams = {};
476
+ command.pathParamsAfterCommand.forEach((param, index) => {
477
+ pathParams[param] = remainingPositionals[index];
478
+ });
479
+ const payload = { ...pathParams };
480
+ for (const field of [...endpoint.queryParams, ...endpoint.bodyParams]) {
481
+ if (endpoint.pathParams.includes(field)) {
482
+ continue;
483
+ }
484
+ const value = requestFieldValue(parsed, field);
485
+ if (value !== undefined) {
486
+ payload[field] = value;
487
+ }
488
+ }
489
+ if (endpoint.queryParams.includes('include') && hasFlag(parsed, 'include-onchain')) {
490
+ payload.include = 'onchain';
491
+ }
492
+ const bodyOverride = parseJson(flag(parsed, 'body'), '--body');
493
+ if (bodyOverride !== undefined) {
494
+ if (!bodyOverride || typeof bodyOverride !== 'object' || Array.isArray(bodyOverride)) {
495
+ throw new CliUsageError('--body must be a JSON object for endpoint commands');
496
+ }
497
+ Object.assign(payload, bodyOverride);
498
+ }
499
+ return {
500
+ body: compactObject(Object.fromEntries(endpoint.bodyParams.map((field) => [field, payload[field]]))),
501
+ pathParams,
502
+ payload: compactObject(payload),
503
+ };
504
+ }
505
+ async function executeGeneratedEndpointCommand(client, parsed) {
506
+ const match = findCliEndpointCommand(parsed.positionals);
507
+ if (!match) {
508
+ return { matched: false };
509
+ }
510
+ const { body, pathParams, payload } = buildEndpointPayload(parsed, match.command, match.remaining);
511
+ const endpoint = match.command.endpoint;
512
+ if (endpoint.key === 'GET /v1/agent/openapi.json') {
513
+ return {
514
+ matched: true,
515
+ result: await client.rawRequest({ method: 'GET', path: '/v1/agent/openapi.json' }),
516
+ };
517
+ }
518
+ if (hasFlag(parsed, 'simulate') && endpoint.method !== 'GET') {
519
+ return {
520
+ matched: true,
521
+ result: {
522
+ mode: 'simulate',
523
+ response: await client.simulate.request({
524
+ body,
525
+ method: endpoint.method,
526
+ path: buildAgentApiPath(endpoint.path, pathParams),
527
+ }),
528
+ },
529
+ };
530
+ }
531
+ const options = {};
532
+ let idempotencyKey;
533
+ if (endpoint.idempotencyRequired) {
534
+ idempotencyKey = flag(parsed, 'idempotency-key') ?? createIdempotencyKey();
535
+ options.idempotencyKey = idempotencyKey;
536
+ }
537
+ const response = (await client.request(endpoint.key, payload, options));
538
+ if (!endpoint.idempotencyRequired) {
539
+ return { matched: true, result: response };
540
+ }
541
+ const output = {
542
+ idempotency_key: idempotencyKey,
543
+ mode: 'submit',
544
+ response,
545
+ };
546
+ if (hasFlag(parsed, 'wait') && typeof response.operation_id === 'string') {
547
+ output.wait = await client.operations.wait(response.operation_id, {
548
+ timeoutMs: parsePositiveInteger(flag(parsed, 'wait-timeout-ms'), 'wait-timeout-ms'),
549
+ });
550
+ }
551
+ return { matched: true, result: output };
552
+ }
553
+ async function submitWrite(parsed, client, input) {
554
+ const body = compactObject(input.body);
555
+ if (hasFlag(parsed, 'simulate')) {
556
+ return {
557
+ mode: 'simulate',
558
+ response: await client.simulate.request({
559
+ body,
560
+ method: input.method,
561
+ path: input.path,
562
+ }),
563
+ };
564
+ }
565
+ const idempotencyKey = flag(parsed, 'idempotency-key') ?? createIdempotencyKey();
566
+ const response = await input.execute(body, { idempotencyKey });
567
+ const output = {
568
+ idempotency_key: idempotencyKey,
569
+ mode: 'submit',
570
+ response,
571
+ };
572
+ if (hasFlag(parsed, 'wait') && typeof response.operation_id === 'string') {
573
+ output.wait = await client.operations.wait(response.operation_id, {
574
+ timeoutMs: parsePositiveInteger(flag(parsed, 'wait-timeout-ms'), 'wait-timeout-ms'),
575
+ });
576
+ }
577
+ return output;
578
+ }
579
+ async function executeCommand(client, parsed) {
580
+ const [command, subcommand, id] = parsed.positionals;
581
+ if (!command || (command === 'self' && !subcommand)) {
582
+ return client.self.get();
583
+ }
584
+ if (command === 'usage' || (command === 'self' && subcommand === 'usage')) {
585
+ return client.self.usage();
586
+ }
587
+ if (command === 'capabilities' && !subcommand) {
588
+ return client.capabilities.get();
589
+ }
590
+ if (command === 'account') {
591
+ return client.account.get();
592
+ }
593
+ if (command === 'balances') {
594
+ return subcommand === 'cash' ? client.balances.cash(listQuery(parsed)) : client.balances.list(listQuery(parsed));
595
+ }
596
+ if (command === 'borrow') {
597
+ if (subcommand === 'repay') {
598
+ const body = addAmountChoice(parsed, {
599
+ allow_conversion: optionalBoolean(parsed, 'allow-conversion'),
600
+ asset: requiredFlag(parsed, 'asset'),
601
+ source_asset: flag(parsed, 'source-asset'),
602
+ }, { allFlag: 'repay-all' });
603
+ return submitWrite(parsed, client, {
604
+ body,
605
+ execute: (payload, options) => client.borrow.repay(payload, options),
606
+ method: 'POST',
607
+ path: '/v1/agent/borrow/repay',
608
+ });
609
+ }
610
+ if (subcommand === 'deleverage') {
611
+ const body = {
612
+ allow_conversion: optionalBoolean(parsed, 'allow-conversion'),
613
+ allow_partial: optionalBoolean(parsed, 'allow-partial'),
614
+ max_repay_amount_usd: flag(parsed, 'max-repay-amount-usd'),
615
+ source_asset: flag(parsed, 'source-asset'),
616
+ target_ltv: requiredFlag(parsed, 'target-ltv'),
617
+ use_available_cash_first: optionalBoolean(parsed, 'use-available-cash-first'),
618
+ };
619
+ return submitWrite(parsed, client, {
620
+ body,
621
+ execute: (payload, options) => client.borrow.deleverage(payload, options),
622
+ method: 'POST',
623
+ path: '/v1/agent/borrow/deleverage',
624
+ });
625
+ }
626
+ }
627
+ if (command === 'conversions') {
628
+ if (subcommand === 'quote') {
629
+ const body = addAmountChoice(parsed, {
630
+ from_asset: requiredFlag(parsed, 'from-asset'),
631
+ from_vault_address: flag(parsed, 'from-vault-address'),
632
+ slippage_percent: optionalNumber(parsed, 'slippage-percent'),
633
+ to_asset: requiredFlag(parsed, 'to-asset'),
634
+ to_vault_address: flag(parsed, 'to-vault-address'),
635
+ });
636
+ return submitWrite(parsed, client, {
637
+ body,
638
+ execute: (payload, options) => client.conversions.quote(payload, options),
639
+ method: 'POST',
640
+ path: '/v1/agent/conversions/quote',
641
+ });
642
+ }
643
+ if (subcommand === 'execute') {
644
+ const body = { quote_id: requiredFlag(parsed, 'quote-id') };
645
+ return submitWrite(parsed, client, {
646
+ body,
647
+ execute: (payload, options) => client.conversions.execute(payload, options),
648
+ method: 'POST',
649
+ path: '/v1/agent/conversions',
650
+ });
651
+ }
652
+ }
653
+ if (command === 'simulate') {
654
+ const method = subcommand?.toUpperCase();
655
+ if (!method || !['POST', 'PATCH', 'DELETE'].includes(method)) {
656
+ throw new CliUsageError('simulate requires one of POST, PATCH, DELETE');
657
+ }
658
+ if (!id?.startsWith('/v1/agent/')) {
659
+ throw new CliUsageError('simulate path must be a /v1/agent endpoint');
660
+ }
661
+ return client.simulate.request({
662
+ body: parseJson(flag(parsed, 'body'), '--body') ?? {},
663
+ method: method,
664
+ path: id,
665
+ });
666
+ }
667
+ if (command === 'operations') {
668
+ if (subcommand === 'list' || !subcommand) {
669
+ return client.operations.list(listQuery(parsed));
670
+ }
671
+ if (subcommand === 'get') {
672
+ if (!id) {
673
+ throw new CliUsageError('operations get requires an operation id');
674
+ }
675
+ return client.operations.get(id, hasFlag(parsed, 'include-onchain') ? { include: 'onchain' } : {});
676
+ }
677
+ if (subcommand === 'wait') {
678
+ if (!id) {
679
+ throw new CliUsageError('operations wait requires an operation id');
680
+ }
681
+ return client.operations.wait(id, {
682
+ pollIntervalMs: parsePositiveInteger(flag(parsed, 'poll-interval-ms'), 'poll-interval-ms'),
683
+ timeoutMs: parsePositiveInteger(flag(parsed, 'timeout-ms'), 'timeout-ms'),
684
+ });
685
+ }
686
+ }
687
+ if (command === 'raw') {
688
+ const method = subcommand?.toUpperCase();
689
+ if (!method || !['GET', 'POST', 'PATCH', 'DELETE'].includes(method)) {
690
+ throw new CliUsageError('raw requires one of GET, POST, PATCH, DELETE');
691
+ }
692
+ if (!id?.startsWith('/v1/agent/')) {
693
+ throw new CliUsageError('raw path must be a /v1/agent endpoint');
694
+ }
695
+ const request = {
696
+ body: parseJson(flag(parsed, 'body'), '--body'),
697
+ idempotencyKey: flag(parsed, 'idempotency-key'),
698
+ method: method,
699
+ path: id,
700
+ query: parseKeyValueFlags(flagValues(parsed, 'query'), '--query'),
701
+ };
702
+ return client.rawRequest(request);
703
+ }
704
+ const generated = await executeGeneratedEndpointCommand(client, parsed);
705
+ if (generated.matched) {
706
+ return generated.result;
707
+ }
708
+ throw new CliUsageError(`Unknown command: ${parsed.positionals.join(' ')}`);
709
+ }
710
+ function errorBody(error) {
711
+ if (error instanceof HightopAgentSDKError) {
712
+ return {
713
+ ok: false,
714
+ error: {
715
+ code: error.code ?? 'request_failed',
716
+ details: error.agentError?.details,
717
+ message: error.message,
718
+ status: error.status,
719
+ },
720
+ };
721
+ }
722
+ return {
723
+ ok: false,
724
+ error: {
725
+ code: error instanceof CliUsageError ? 'usage_error' : 'cli_error',
726
+ message: error instanceof Error ? error.message : String(error),
727
+ },
728
+ };
729
+ }
730
+ export async function runCli(argv, io, createClient = (config) => new HightopAgentClient(config)) {
731
+ const parsed = parseArgs(argv);
732
+ const pretty = hasFlag(parsed, 'pretty');
733
+ if (hasFlag(parsed, 'help') || parsed.positionals.includes('-h') || parsed.positionals[0] === 'help') {
734
+ io.stdout.write(formatCommandHelp(helpCommandPath(parsed)));
735
+ return 0;
736
+ }
737
+ if (hasFlag(parsed, 'version') || parsed.positionals.includes('-v')) {
738
+ io.stdout.write(`${readCliVersion()}\n`);
739
+ return 0;
740
+ }
741
+ try {
742
+ const config = resolveConfig(parsed, io.env ?? {}, { requireAuth: !commandAllowsMissingAuth(parsed) });
743
+ const client = createClient(config);
744
+ const result = await executeCommand(client, parsed);
745
+ writeJson(io.stdout, result, pretty);
746
+ return 0;
747
+ }
748
+ catch (error) {
749
+ writeJson(io.stderr, errorBody(error), pretty);
750
+ return error instanceof CliUsageError ? 2 : 1;
751
+ }
752
+ }
753
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ interface WritableOutput {
3
+ write(chunk: string): unknown;
4
+ }
5
+ export declare function main(argv?: string[], output?: WritableOutput): Promise<number>;
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,UAAU,cAAc;IACtB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAC9B;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,EAAE,MAAM,GAAE,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjH"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { pathToFileURL } from 'node:url';
3
+ import { runCli } from './cli.js';
4
+ export async function main(argv = process.argv.slice(2), output = process.stdout) {
5
+ return runCli(argv, { env: process.env, stderr: process.stderr, stdout: output });
6
+ }
7
+ const isDirectExecution = process.argv[1] ? import.meta.url === pathToFileURL(process.argv[1]).href : false;
8
+ if (isDirectExecution) {
9
+ main().then((exitCode) => {
10
+ process.exitCode = exitCode;
11
+ }, () => {
12
+ process.exitCode = 1;
13
+ });
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMjC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAyB,OAAO,CAAC,MAAM;IAC9F,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AACnF,CAAC;AAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;AAE3G,IAAI,iBAAiB,EAAE,CAAC;IACtB,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,QAAQ,EAAE,EAAE;QACX,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC7B,CAAC,EACD,GAAG,EAAE;QACH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC,CACF,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@hightop/cli",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "bin": {
7
+ "hightop": "./dist/index.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ ".env.example",
20
+ "README.md",
21
+ "package.json"
22
+ ],
23
+ "engines": {
24
+ "node": ">=20"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+ssh://git@github.com/hightophq/hightop-api.git",
29
+ "directory": "packages/cli"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "scripts": {
35
+ "prebuild": "npm --workspace @hightop/sdk run build",
36
+ "build": "tsc -p tsconfig.build.json",
37
+ "typecheck": "tsc -p tsconfig.json --noEmit",
38
+ "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\" --max-warnings=0",
39
+ "test": "vitest run --config vitest.config.ts"
40
+ },
41
+ "dependencies": {
42
+ "@hightop/sdk": "0.1.0"
43
+ }
44
+ }