@noya-ai/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/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/index.cjs +2661 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2646 -0
- package/package.json +57 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2646 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { hostname } from "os";
|
|
6
|
+
import open from "open";
|
|
7
|
+
import { NoyaSDK } from "@noya-ai/sdk";
|
|
8
|
+
|
|
9
|
+
// src/config-paths.ts
|
|
10
|
+
import envPaths from "env-paths";
|
|
11
|
+
import { join } from "path";
|
|
12
|
+
var paths = envPaths("noya", { suffix: "" });
|
|
13
|
+
var CRED_PATH = join(paths.config, "credentials.json");
|
|
14
|
+
|
|
15
|
+
// src/credentials-store.ts
|
|
16
|
+
import {
|
|
17
|
+
chmodSync,
|
|
18
|
+
existsSync,
|
|
19
|
+
mkdirSync,
|
|
20
|
+
readFileSync,
|
|
21
|
+
renameSync,
|
|
22
|
+
rmSync,
|
|
23
|
+
writeFileSync
|
|
24
|
+
} from "fs";
|
|
25
|
+
import { dirname } from "path";
|
|
26
|
+
function loadCredentials(path) {
|
|
27
|
+
if (!existsSync(path)) return null;
|
|
28
|
+
try {
|
|
29
|
+
const raw = readFileSync(path, "utf8");
|
|
30
|
+
const parsed = JSON.parse(raw);
|
|
31
|
+
if (typeof parsed.clientId === "string" && typeof parsed.accessToken === "string" && typeof parsed.refreshToken === "string" && typeof parsed.expiresAt === "number") {
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
} catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function saveCredentials(path, creds) {
|
|
40
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
41
|
+
const tmpPath = `${path}.tmp`;
|
|
42
|
+
writeFileSync(tmpPath, JSON.stringify(creds, null, 2), { mode: 384 });
|
|
43
|
+
if (process.platform !== "win32") {
|
|
44
|
+
chmodSync(tmpPath, 384);
|
|
45
|
+
}
|
|
46
|
+
renameSync(tmpPath, path);
|
|
47
|
+
}
|
|
48
|
+
function clearCredentials(path) {
|
|
49
|
+
rmSync(path, { force: true });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// src/commands/auth/login.ts
|
|
53
|
+
import { createServer } from "http";
|
|
54
|
+
import { createHash, randomBytes } from "crypto";
|
|
55
|
+
var DEFAULT_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
56
|
+
async function login(opts) {
|
|
57
|
+
const out = opts.out ?? process.stdout;
|
|
58
|
+
const fetch_ = opts.fetch ?? globalThis.fetch;
|
|
59
|
+
const { server, port, waitForCallback, shutdown } = await startLoopbackServer(
|
|
60
|
+
opts.port ?? 0
|
|
61
|
+
);
|
|
62
|
+
const redirectUri = `http://127.0.0.1:${port}/callback`;
|
|
63
|
+
out.write(`Listening on ${redirectUri}
|
|
64
|
+
`);
|
|
65
|
+
try {
|
|
66
|
+
const stored = loadCredentials(opts.credPath);
|
|
67
|
+
let clientId = stored?.clientId;
|
|
68
|
+
if (!clientId) {
|
|
69
|
+
out.write("Registering OAuth client (DCR)...\n");
|
|
70
|
+
clientId = await registerClient({
|
|
71
|
+
fetch: fetch_,
|
|
72
|
+
baseUrl: opts.noyaAgentApiUrl,
|
|
73
|
+
clientName: `noya-cli/${opts.hostname}`,
|
|
74
|
+
redirectUri
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const verifier = base64Url(randomBytes(32));
|
|
78
|
+
const challenge = base64Url(createHash("sha256").update(verifier).digest());
|
|
79
|
+
const state = base64Url(randomBytes(16));
|
|
80
|
+
const authUrl = `${trimSlash(opts.noyaAgentApiUrl)}/oauth/authorize?${new URLSearchParams({
|
|
81
|
+
response_type: "code",
|
|
82
|
+
client_id: clientId,
|
|
83
|
+
redirect_uri: redirectUri,
|
|
84
|
+
code_challenge: challenge,
|
|
85
|
+
code_challenge_method: "S256",
|
|
86
|
+
scope: "mcp",
|
|
87
|
+
state
|
|
88
|
+
}).toString()}`;
|
|
89
|
+
out.write("Opening browser...\n");
|
|
90
|
+
await opts.openBrowser(authUrl);
|
|
91
|
+
const { code } = await waitForCallback({
|
|
92
|
+
expectedState: state,
|
|
93
|
+
timeoutMs: opts.timeoutMs ?? DEFAULT_TIMEOUT_MS
|
|
94
|
+
});
|
|
95
|
+
out.write("Exchanging authorization code for tokens...\n");
|
|
96
|
+
const tokens = await exchangeCode({
|
|
97
|
+
fetch: fetch_,
|
|
98
|
+
baseUrl: opts.noyaAgentApiUrl,
|
|
99
|
+
code,
|
|
100
|
+
verifier,
|
|
101
|
+
clientId,
|
|
102
|
+
redirectUri
|
|
103
|
+
});
|
|
104
|
+
const next = {
|
|
105
|
+
clientId,
|
|
106
|
+
accessToken: tokens.access_token,
|
|
107
|
+
refreshToken: tokens.refresh_token,
|
|
108
|
+
expiresAt: Math.floor(Date.now() / 1e3) + (tokens.expires_in ?? 3600)
|
|
109
|
+
};
|
|
110
|
+
saveCredentials(opts.credPath, next);
|
|
111
|
+
out.write(`\u2713 Logged in. Saved to ${opts.credPath}
|
|
112
|
+
`);
|
|
113
|
+
} finally {
|
|
114
|
+
await shutdown();
|
|
115
|
+
void server;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function trimSlash(s) {
|
|
119
|
+
return s.replace(/\/+$/, "");
|
|
120
|
+
}
|
|
121
|
+
function base64Url(buf) {
|
|
122
|
+
return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
123
|
+
}
|
|
124
|
+
async function registerClient(args) {
|
|
125
|
+
const res = await args.fetch(`${trimSlash(args.baseUrl)}/oauth/register`, {
|
|
126
|
+
method: "POST",
|
|
127
|
+
headers: { "content-type": "application/json" },
|
|
128
|
+
body: JSON.stringify({
|
|
129
|
+
client_name: args.clientName,
|
|
130
|
+
redirect_uris: [args.redirectUri],
|
|
131
|
+
grant_types: ["authorization_code", "refresh_token"],
|
|
132
|
+
token_endpoint_auth_method: "none"
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
if (!res.ok) {
|
|
136
|
+
throw new Error(`OAuth DCR failed: ${res.status} ${await res.text()}`);
|
|
137
|
+
}
|
|
138
|
+
const body = await res.json();
|
|
139
|
+
if (!body.client_id) throw new Error("OAuth DCR returned no client_id");
|
|
140
|
+
return body.client_id;
|
|
141
|
+
}
|
|
142
|
+
async function exchangeCode(args) {
|
|
143
|
+
const res = await args.fetch(`${trimSlash(args.baseUrl)}/oauth/token`, {
|
|
144
|
+
method: "POST",
|
|
145
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
146
|
+
body: new URLSearchParams({
|
|
147
|
+
grant_type: "authorization_code",
|
|
148
|
+
code: args.code,
|
|
149
|
+
code_verifier: args.verifier,
|
|
150
|
+
client_id: args.clientId,
|
|
151
|
+
redirect_uri: args.redirectUri
|
|
152
|
+
}).toString()
|
|
153
|
+
});
|
|
154
|
+
if (!res.ok) {
|
|
155
|
+
throw new Error(`Token exchange failed: ${res.status} ${await res.text()}`);
|
|
156
|
+
}
|
|
157
|
+
return await res.json();
|
|
158
|
+
}
|
|
159
|
+
async function startLoopbackServer(bindPort) {
|
|
160
|
+
let pendingResolve = null;
|
|
161
|
+
let pendingReject = null;
|
|
162
|
+
let pendingExpectedState = null;
|
|
163
|
+
const server = createServer((req, res) => {
|
|
164
|
+
if (!req.url) {
|
|
165
|
+
res.statusCode = 400;
|
|
166
|
+
return res.end("bad request");
|
|
167
|
+
}
|
|
168
|
+
const url = new URL(req.url, `http://127.0.0.1`);
|
|
169
|
+
if (url.pathname !== "/callback") {
|
|
170
|
+
res.statusCode = 404;
|
|
171
|
+
return res.end("not found");
|
|
172
|
+
}
|
|
173
|
+
const error = url.searchParams.get("error");
|
|
174
|
+
if (error) {
|
|
175
|
+
res.statusCode = 400;
|
|
176
|
+
res.end(`Authorization failed: ${error}. You can close this tab.`);
|
|
177
|
+
pendingReject?.(new Error(`Authorization failed: ${error}`));
|
|
178
|
+
pendingResolve = pendingReject = null;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const state = url.searchParams.get("state");
|
|
182
|
+
const code = url.searchParams.get("code");
|
|
183
|
+
if (!code) {
|
|
184
|
+
res.statusCode = 400;
|
|
185
|
+
res.end("Missing `code`. You can close this tab.");
|
|
186
|
+
pendingReject?.(new Error("Callback missing `code`"));
|
|
187
|
+
pendingResolve = pendingReject = null;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (state !== pendingExpectedState) {
|
|
191
|
+
res.statusCode = 400;
|
|
192
|
+
res.end("State mismatch. You can close this tab.");
|
|
193
|
+
pendingReject?.(new Error("OAuth state mismatch \u2014 possible CSRF"));
|
|
194
|
+
pendingResolve = pendingReject = null;
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
res.setHeader("content-type", "text/html");
|
|
198
|
+
res.end(SUCCESS_PAGE);
|
|
199
|
+
pendingResolve?.({ url });
|
|
200
|
+
pendingResolve = pendingReject = null;
|
|
201
|
+
});
|
|
202
|
+
await new Promise((resolve, reject) => {
|
|
203
|
+
server.once("error", reject);
|
|
204
|
+
server.listen(bindPort, "127.0.0.1", () => {
|
|
205
|
+
server.off("error", reject);
|
|
206
|
+
resolve();
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
const port = server.address().port;
|
|
210
|
+
const waitForCallback = ({
|
|
211
|
+
expectedState,
|
|
212
|
+
timeoutMs
|
|
213
|
+
}) => new Promise((resolve, reject) => {
|
|
214
|
+
pendingExpectedState = expectedState;
|
|
215
|
+
pendingResolve = ({ url }) => resolve({ code: url.searchParams.get("code") });
|
|
216
|
+
pendingReject = reject;
|
|
217
|
+
setTimeout(() => {
|
|
218
|
+
if (pendingReject) {
|
|
219
|
+
pendingReject(new Error("Authorization timed out \u2014 no callback received"));
|
|
220
|
+
pendingResolve = pendingReject = null;
|
|
221
|
+
}
|
|
222
|
+
}, timeoutMs).unref();
|
|
223
|
+
});
|
|
224
|
+
const shutdown = () => new Promise((resolve) => {
|
|
225
|
+
server.close(() => resolve());
|
|
226
|
+
server.unref();
|
|
227
|
+
});
|
|
228
|
+
return { server, port, waitForCallback, shutdown };
|
|
229
|
+
}
|
|
230
|
+
var SUCCESS_PAGE = `<!doctype html>
|
|
231
|
+
<html><head><title>Logged in to Noya</title></head>
|
|
232
|
+
<body style="font-family:-apple-system,system-ui,sans-serif;padding:2rem">
|
|
233
|
+
<h1>\u2713 Logged in to Noya</h1>
|
|
234
|
+
<p>You can close this tab and return to the terminal.</p>
|
|
235
|
+
</body></html>`;
|
|
236
|
+
|
|
237
|
+
// src/commands/auth/logout.ts
|
|
238
|
+
import { existsSync as existsSync2 } from "fs";
|
|
239
|
+
async function logout(opts) {
|
|
240
|
+
if (!existsSync2(opts.credPath)) {
|
|
241
|
+
opts.out.write("Already logged out.\n");
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
clearCredentials(opts.credPath);
|
|
245
|
+
opts.out.write(`Logged out. Removed ${opts.credPath}
|
|
246
|
+
`);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// src/resolve-credentials.ts
|
|
250
|
+
function resolveCredentials(input) {
|
|
251
|
+
const envKey = input.env.NOYA_API_KEY?.trim();
|
|
252
|
+
const storedClientId = input.stored?.clientId ?? null;
|
|
253
|
+
if (envKey) {
|
|
254
|
+
return {
|
|
255
|
+
source: "env",
|
|
256
|
+
credentials: { apiKey: envKey },
|
|
257
|
+
overriding: input.stored !== null,
|
|
258
|
+
storedClientId
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (input.stored) {
|
|
262
|
+
return {
|
|
263
|
+
source: "file",
|
|
264
|
+
credentials: { bearer: input.stored.accessToken },
|
|
265
|
+
overriding: false,
|
|
266
|
+
storedClientId
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
source: "anonymous",
|
|
271
|
+
credentials: {},
|
|
272
|
+
overriding: false,
|
|
273
|
+
storedClientId: null
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// src/commands/auth/status.ts
|
|
278
|
+
async function status(opts) {
|
|
279
|
+
const r = resolveCredentials({ env: opts.env, stored: opts.stored });
|
|
280
|
+
if (r.source === "anonymous") {
|
|
281
|
+
opts.out.write("Not logged in.\n\n");
|
|
282
|
+
opts.out.write("Pick one:\n");
|
|
283
|
+
opts.out.write(" - Run `noya auth login` to authorize via your browser.\n");
|
|
284
|
+
opts.out.write(" - Or set NOYA_API_KEY=<key> in your shell \u2014 generate a key at https://agent.noya.ai/api-keys.\n");
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
let me = null;
|
|
288
|
+
let verifyError = null;
|
|
289
|
+
try {
|
|
290
|
+
me = await opts.getMe(r.credentials);
|
|
291
|
+
} catch (err) {
|
|
292
|
+
verifyError = err instanceof Error ? err.message : String(err);
|
|
293
|
+
}
|
|
294
|
+
if (r.source === "env") {
|
|
295
|
+
const apiKey = r.credentials.apiKey ?? "";
|
|
296
|
+
const prefix = apiKey.slice(0, 12);
|
|
297
|
+
opts.out.write(`Using NOYA_API_KEY env var (prefix \`${prefix}\`)`);
|
|
298
|
+
if (r.overriding && r.storedClientId) {
|
|
299
|
+
opts.out.write(`
|
|
300
|
+
\u21B3 overriding stored OAuth login as \`${r.storedClientId}\``);
|
|
301
|
+
}
|
|
302
|
+
opts.out.write("\n");
|
|
303
|
+
} else {
|
|
304
|
+
opts.out.write(`Logged in via OAuth (client \`${r.storedClientId}\`)
|
|
305
|
+
`);
|
|
306
|
+
if (opts.stored) {
|
|
307
|
+
const accessRemaining = opts.stored.expiresAt - Math.floor(Date.now() / 1e3);
|
|
308
|
+
opts.out.write(` \u21B3 access token: ${humanDuration(accessRemaining)}
|
|
309
|
+
`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (verifyError) {
|
|
313
|
+
opts.out.write(`
|
|
314
|
+
Could not verify credential against /api/me: ${verifyError}
|
|
315
|
+
`);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
if (me) {
|
|
319
|
+
opts.out.write(`
|
|
320
|
+
user: ${me.userId}
|
|
321
|
+
`);
|
|
322
|
+
if (me.wallet) {
|
|
323
|
+
opts.out.write(`wallet: ${me.wallet.address}
|
|
324
|
+
`);
|
|
325
|
+
} else {
|
|
326
|
+
opts.out.write(`wallet: (none \u2014 no embedded Ethereum wallet on this account)
|
|
327
|
+
`);
|
|
328
|
+
}
|
|
329
|
+
if (me.credentialExpiresAt) {
|
|
330
|
+
const ms = new Date(me.credentialExpiresAt).getTime() - Date.now();
|
|
331
|
+
opts.out.write(
|
|
332
|
+
`expiry: ${me.credentialExpiresAt} (${humanDuration(Math.floor(ms / 1e3))})
|
|
333
|
+
`
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function humanDuration(seconds) {
|
|
339
|
+
if (seconds <= 0) return "expired";
|
|
340
|
+
if (seconds < 60) return `${seconds}s remaining`;
|
|
341
|
+
const minutes = Math.floor(seconds / 60);
|
|
342
|
+
if (minutes < 60) return `${minutes} min remaining`;
|
|
343
|
+
const hours = Math.floor(minutes / 60);
|
|
344
|
+
if (hours < 48) return `${hours}h remaining`;
|
|
345
|
+
const days = Math.floor(hours / 24);
|
|
346
|
+
return `${days} days remaining`;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// src/generated-commands.ts
|
|
350
|
+
import { Option } from "commander";
|
|
351
|
+
function registerCommand(root, pathSegments, description, configure) {
|
|
352
|
+
let parent = root;
|
|
353
|
+
for (let i = 0; i < pathSegments.length - 1; i++) {
|
|
354
|
+
const name = pathSegments[i];
|
|
355
|
+
let child = parent.commands.find((c) => c.name() === name);
|
|
356
|
+
if (!child) {
|
|
357
|
+
child = parent.command(name);
|
|
358
|
+
}
|
|
359
|
+
parent = child;
|
|
360
|
+
}
|
|
361
|
+
const leaf = pathSegments[pathSegments.length - 1];
|
|
362
|
+
let cmd = parent.commands.find((c) => c.name() === leaf);
|
|
363
|
+
if (!cmd) cmd = parent.command(leaf).description(description);
|
|
364
|
+
configure(cmd);
|
|
365
|
+
}
|
|
366
|
+
async function runAndPrint(call) {
|
|
367
|
+
try {
|
|
368
|
+
const result = await Promise.resolve(call());
|
|
369
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
370
|
+
} catch (err) {
|
|
371
|
+
process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}
|
|
372
|
+
`);
|
|
373
|
+
process.exit(1);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function setGroupDescription(program2, name, description) {
|
|
377
|
+
let cmd = program2.commands.find((c) => c.name() === name);
|
|
378
|
+
if (!cmd) cmd = program2.command(name);
|
|
379
|
+
cmd.description(description);
|
|
380
|
+
}
|
|
381
|
+
function setSubGroupDescription(program2, groupName, subName, description) {
|
|
382
|
+
let group = program2.commands.find((c) => c.name() === groupName);
|
|
383
|
+
if (!group) group = program2.command(groupName);
|
|
384
|
+
let sub = group.commands.find((c) => c.name() === subName);
|
|
385
|
+
if (!sub) sub = group.command(subName);
|
|
386
|
+
sub.description(description);
|
|
387
|
+
}
|
|
388
|
+
function registerGeneratedCommands(program2, sdk2) {
|
|
389
|
+
setGroupDescription(program2, "data", "Crypto markets data \u2014 prices, news, on-chain analytics, prediction markets");
|
|
390
|
+
setGroupDescription(program2, "chain", "On-chain operations \u2014 transfers, swaps, approvals, lending");
|
|
391
|
+
setGroupDescription(program2, "predict", "Prediction markets \u2014 search, orderbooks, order placement");
|
|
392
|
+
setGroupDescription(program2, "threads", "Conversation threads with the Noya agent");
|
|
393
|
+
setGroupDescription(program2, "portfolio", "User portfolio (holdings, DCA strategies, positions)");
|
|
394
|
+
setGroupDescription(program2, "account", "Wallet identity + signing (signMessage / signTransaction / signTypedData)");
|
|
395
|
+
setSubGroupDescription(program2, "chain", "wallet", "Wallet metadata + native (ETH/native token) transfers");
|
|
396
|
+
setSubGroupDescription(program2, "chain", "erc20", "ERC-20 token reads + transfers + approvals");
|
|
397
|
+
setSubGroupDescription(program2, "chain", "erc721", "ERC-721 NFT reads + mints + transfers");
|
|
398
|
+
setSubGroupDescription(program2, "chain", "weth", "Wrap / unwrap native token \u2194 WETH");
|
|
399
|
+
setSubGroupDescription(program2, "chain", "compound", "Compound III lending \u2014 supply, withdraw, borrow, repay");
|
|
400
|
+
setSubGroupDescription(program2, "chain", "morpho", "Morpho vault deposits + withdrawals");
|
|
401
|
+
setSubGroupDescription(program2, "chain", "enso", "Enso router + bridge (cross-chain swaps)");
|
|
402
|
+
setSubGroupDescription(program2, "chain", "pyth", "Pyth oracle price reads (chain-agnostic)");
|
|
403
|
+
setSubGroupDescription(program2, "chain", "defillama", "DeFiLlama protocol + token-price reads (chain-agnostic)");
|
|
404
|
+
setSubGroupDescription(program2, "chain", "x402", "Make x402-gated HTTP requests + discover x402 services");
|
|
405
|
+
registerCommand(program2, ["data", "alternative", "fear-greed"], "Auto-generated from sdk.data.alternative.fearGreed", (cmd) => {
|
|
406
|
+
cmd.option("--limit <value>", "Number of historical Fear & Greed entries to return (most recent first). 1 returns just the latest reading.");
|
|
407
|
+
cmd.action(async (opts) => {
|
|
408
|
+
const input = {
|
|
409
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
410
|
+
};
|
|
411
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
412
|
+
await runAndPrint(() => sdk2.data.alternative.fearGreed(input));
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
registerCommand(program2, ["data", "batch", "dispatch"], "Auto-generated from sdk.data.batch.dispatch", (cmd) => {
|
|
416
|
+
cmd.action(async () => {
|
|
417
|
+
await runAndPrint(() => sdk2.data.batch.dispatch());
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
registerCommand(program2, ["data", "coingecko", "price"], "Auto-generated from sdk.data.coingecko.price", (cmd) => {
|
|
421
|
+
cmd.option("--token-ids <value>", "CoinGecko token IDs to price (e.g. `bitcoin`, `ethereum`). At least one required.");
|
|
422
|
+
cmd.option("--vs-currencies <value>", "Quote currencies (e.g. `usd`, `eur`, `btc`). Defaults to USD when omitted.");
|
|
423
|
+
cmd.option("--include24hr-change", "Include 24-hour percentage price change in the response.");
|
|
424
|
+
cmd.option("--include-market-cap", "Include market cap in the response.");
|
|
425
|
+
cmd.option("--include24hr-vol", "Include 24-hour trading volume in the response.");
|
|
426
|
+
cmd.action(async (opts) => {
|
|
427
|
+
const input = {
|
|
428
|
+
"tokenIds": opts["tokenIds"] === void 0 ? void 0 : String(opts["tokenIds"]).split(","),
|
|
429
|
+
"vsCurrencies": opts["vsCurrencies"] === void 0 ? void 0 : String(opts["vsCurrencies"]).split(","),
|
|
430
|
+
"include24hrChange": opts["include24hrChange"] === void 0 ? void 0 : Boolean(opts["include24hrChange"]),
|
|
431
|
+
"includeMarketCap": opts["includeMarketCap"] === void 0 ? void 0 : Boolean(opts["includeMarketCap"]),
|
|
432
|
+
"include24hrVol": opts["include24hrVol"] === void 0 ? void 0 : Boolean(opts["include24hrVol"])
|
|
433
|
+
};
|
|
434
|
+
if (opts["tokenIds"] === void 0 ? void 0 : String(opts["tokenIds"]).split(",") === void 0) delete input["tokenIds"];
|
|
435
|
+
if (opts["vsCurrencies"] === void 0 ? void 0 : String(opts["vsCurrencies"]).split(",") === void 0) delete input["vsCurrencies"];
|
|
436
|
+
if (opts["include24hrChange"] === void 0 ? void 0 : Boolean(opts["include24hrChange"]) === void 0) delete input["include24hrChange"];
|
|
437
|
+
if (opts["includeMarketCap"] === void 0 ? void 0 : Boolean(opts["includeMarketCap"]) === void 0) delete input["includeMarketCap"];
|
|
438
|
+
if (opts["include24hrVol"] === void 0 ? void 0 : Boolean(opts["include24hrVol"]) === void 0) delete input["include24hrVol"];
|
|
439
|
+
await runAndPrint(() => sdk2.data.coingecko.price(input));
|
|
440
|
+
});
|
|
441
|
+
});
|
|
442
|
+
registerCommand(program2, ["data", "coingecko", "ohlcv"], "Auto-generated from sdk.data.coingecko.ohlcv", (cmd) => {
|
|
443
|
+
cmd.option("--token-id <value>", "CoinGecko token ID (e.g. `bitcoin`).");
|
|
444
|
+
cmd.option("--vs-currency <value>", "Quote currency for the OHLCV candles.");
|
|
445
|
+
cmd.addOption(new Option("--days <value>", "Lookback window. Use `max` for the full available history. (choices: 1, 7, 14, 30, 90, 180, 365, max)").choices(["1", "7", "14", "30", "90", "180", "365", "max"]));
|
|
446
|
+
cmd.addOption(new Option("--interval <value>", "Candle resolution. CoinGecko picks a sensible default if omitted (hourly for short windows, daily for long). (choices: daily, hourly)").choices(["daily", "hourly"]));
|
|
447
|
+
cmd.action(async (opts) => {
|
|
448
|
+
const input = {
|
|
449
|
+
"tokenId": opts["tokenId"],
|
|
450
|
+
"vsCurrency": opts["vsCurrency"],
|
|
451
|
+
"days": opts["days"],
|
|
452
|
+
"interval": opts["interval"]
|
|
453
|
+
};
|
|
454
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
455
|
+
if (opts["vsCurrency"] === void 0) delete input["vsCurrency"];
|
|
456
|
+
if (opts["days"] === void 0) delete input["days"];
|
|
457
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
458
|
+
await runAndPrint(() => sdk2.data.coingecko.ohlcv(input));
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
registerCommand(program2, ["data", "coingecko", "token-info"], "Auto-generated from sdk.data.coingecko.tokenInfo", (cmd) => {
|
|
462
|
+
cmd.option("--token-id <value>", "CoinGecko token ID to fetch metadata for.");
|
|
463
|
+
cmd.action(async (opts) => {
|
|
464
|
+
const input = {
|
|
465
|
+
"tokenId": opts["tokenId"]
|
|
466
|
+
};
|
|
467
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
468
|
+
await runAndPrint(() => sdk2.data.coingecko.tokenInfo(input));
|
|
469
|
+
});
|
|
470
|
+
});
|
|
471
|
+
registerCommand(program2, ["data", "coingecko", "trending"], "Auto-generated from sdk.data.coingecko.trending", (cmd) => {
|
|
472
|
+
cmd.action(async () => {
|
|
473
|
+
await runAndPrint(() => sdk2.data.coingecko.trending());
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
registerCommand(program2, ["data", "coingecko", "search"], "Auto-generated from sdk.data.coingecko.search", (cmd) => {
|
|
477
|
+
cmd.option("--query <value>", "Free-text search query (token name, symbol, or partial match).");
|
|
478
|
+
cmd.action(async (opts) => {
|
|
479
|
+
const input = {
|
|
480
|
+
"query": opts["query"]
|
|
481
|
+
};
|
|
482
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
483
|
+
await runAndPrint(() => sdk2.data.coingecko.search(input));
|
|
484
|
+
});
|
|
485
|
+
});
|
|
486
|
+
registerCommand(program2, ["data", "coingecko", "price-history"], "Auto-generated from sdk.data.coingecko.priceHistory", (cmd) => {
|
|
487
|
+
cmd.option("--token-id <value>", "CoinGecko token ID.");
|
|
488
|
+
cmd.option("--vs-currency <value>", "Quote currency for the historical prices.");
|
|
489
|
+
cmd.option("--days <value>", "Lookback window in days (e.g. `30`). Mutually exclusive with `from`/`to`.");
|
|
490
|
+
cmd.option("--from <value>", "ISO 8601 start timestamp (UTC). Use with `to` instead of `days`.");
|
|
491
|
+
cmd.option("--to <value>", "ISO 8601 end timestamp (UTC). Use with `from` instead of `days`.");
|
|
492
|
+
cmd.addOption(new Option("--interval <value>", "Sampling interval. CoinGecko picks one based on the window when omitted. (choices: 5m, hourly, daily)").choices(["5m", "hourly", "daily"]));
|
|
493
|
+
cmd.action(async (opts) => {
|
|
494
|
+
const input = {
|
|
495
|
+
"tokenId": opts["tokenId"],
|
|
496
|
+
"vsCurrency": opts["vsCurrency"],
|
|
497
|
+
"days": opts["days"],
|
|
498
|
+
"from": opts["from"],
|
|
499
|
+
"to": opts["to"],
|
|
500
|
+
"interval": opts["interval"]
|
|
501
|
+
};
|
|
502
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
503
|
+
if (opts["vsCurrency"] === void 0) delete input["vsCurrency"];
|
|
504
|
+
if (opts["days"] === void 0) delete input["days"];
|
|
505
|
+
if (opts["from"] === void 0) delete input["from"];
|
|
506
|
+
if (opts["to"] === void 0) delete input["to"];
|
|
507
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
508
|
+
await runAndPrint(() => sdk2.data.coingecko.priceHistory(input));
|
|
509
|
+
});
|
|
510
|
+
});
|
|
511
|
+
registerCommand(program2, ["data", "coingecko", "price-at-date"], "Auto-generated from sdk.data.coingecko.priceAtDate", (cmd) => {
|
|
512
|
+
cmd.option("--token-id <value>", "CoinGecko token ID.");
|
|
513
|
+
cmd.option("--date <value>", "Snapshot date in `YYYY-MM-DD` format (UTC). CoinGecko returns the daily close + cap + volume.");
|
|
514
|
+
cmd.action(async (opts) => {
|
|
515
|
+
const input = {
|
|
516
|
+
"tokenId": opts["tokenId"],
|
|
517
|
+
"date": opts["date"]
|
|
518
|
+
};
|
|
519
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
520
|
+
if (opts["date"] === void 0) delete input["date"];
|
|
521
|
+
await runAndPrint(() => sdk2.data.coingecko.priceAtDate(input));
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
registerCommand(program2, ["data", "coinglass", "funding-rates"], "Auto-generated from sdk.data.coinglass.fundingRates", (cmd) => {
|
|
525
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
526
|
+
cmd.action(async (opts) => {
|
|
527
|
+
const input = {
|
|
528
|
+
"symbol": opts["symbol"]
|
|
529
|
+
};
|
|
530
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
531
|
+
await runAndPrint(() => sdk2.data.coinglass.fundingRates(input));
|
|
532
|
+
});
|
|
533
|
+
});
|
|
534
|
+
registerCommand(program2, ["data", "coinglass", "open-interest"], "Auto-generated from sdk.data.coinglass.openInterest", (cmd) => {
|
|
535
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
536
|
+
cmd.action(async (opts) => {
|
|
537
|
+
const input = {
|
|
538
|
+
"symbol": opts["symbol"]
|
|
539
|
+
};
|
|
540
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
541
|
+
await runAndPrint(() => sdk2.data.coinglass.openInterest(input));
|
|
542
|
+
});
|
|
543
|
+
});
|
|
544
|
+
registerCommand(program2, ["data", "coinglass", "liquidations"], "Auto-generated from sdk.data.coinglass.liquidations", (cmd) => {
|
|
545
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
546
|
+
cmd.action(async (opts) => {
|
|
547
|
+
const input = {
|
|
548
|
+
"symbol": opts["symbol"]
|
|
549
|
+
};
|
|
550
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
551
|
+
await runAndPrint(() => sdk2.data.coinglass.liquidations(input));
|
|
552
|
+
});
|
|
553
|
+
});
|
|
554
|
+
registerCommand(program2, ["data", "coinglass", "long-short-ratio"], "Auto-generated from sdk.data.coinglass.longShortRatio", (cmd) => {
|
|
555
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
556
|
+
cmd.addOption(new Option("--range <value>", "Aggregation window for the snapshot. (choices: 4h, 6h, 8h, 12h, 1d, 1w)").choices(["4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
557
|
+
cmd.action(async (opts) => {
|
|
558
|
+
const input = {
|
|
559
|
+
"symbol": opts["symbol"],
|
|
560
|
+
"range": opts["range"]
|
|
561
|
+
};
|
|
562
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
563
|
+
if (opts["range"] === void 0) delete input["range"];
|
|
564
|
+
await runAndPrint(() => sdk2.data.coinglass.longShortRatio(input));
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
registerCommand(program2, ["data", "coinglass", "supported-coins"], "Auto-generated from sdk.data.coinglass.supportedCoins", (cmd) => {
|
|
568
|
+
cmd.action(async () => {
|
|
569
|
+
await runAndPrint(() => sdk2.data.coinglass.supportedCoins());
|
|
570
|
+
});
|
|
571
|
+
});
|
|
572
|
+
registerCommand(program2, ["data", "coinglass", "supported-exchanges"], "Auto-generated from sdk.data.coinglass.supportedExchanges", (cmd) => {
|
|
573
|
+
cmd.action(async () => {
|
|
574
|
+
await runAndPrint(() => sdk2.data.coinglass.supportedExchanges());
|
|
575
|
+
});
|
|
576
|
+
});
|
|
577
|
+
registerCommand(program2, ["data", "coinglass", "exchange-pairs"], "Auto-generated from sdk.data.coinglass.exchangePairs", (cmd) => {
|
|
578
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
579
|
+
cmd.option("--exchange <value>", "Filter to a single exchange (e.g. `Binance`). Returns all when omitted.");
|
|
580
|
+
cmd.action(async (opts) => {
|
|
581
|
+
const input = {
|
|
582
|
+
"symbol": opts["symbol"],
|
|
583
|
+
"exchange": opts["exchange"]
|
|
584
|
+
};
|
|
585
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
586
|
+
if (opts["exchange"] === void 0) delete input["exchange"];
|
|
587
|
+
await runAndPrint(() => sdk2.data.coinglass.exchangePairs(input));
|
|
588
|
+
});
|
|
589
|
+
});
|
|
590
|
+
registerCommand(program2, ["data", "coinglass", "liquidations-by-exchange"], "Auto-generated from sdk.data.coinglass.liquidationsByExchange", (cmd) => {
|
|
591
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
592
|
+
cmd.addOption(new Option("--range <value>", "Aggregation window for the snapshot. (choices: 4h, 6h, 8h, 12h, 1d, 1w)").choices(["4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
593
|
+
cmd.action(async (opts) => {
|
|
594
|
+
const input = {
|
|
595
|
+
"symbol": opts["symbol"],
|
|
596
|
+
"range": opts["range"]
|
|
597
|
+
};
|
|
598
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
599
|
+
if (opts["range"] === void 0) delete input["range"];
|
|
600
|
+
await runAndPrint(() => sdk2.data.coinglass.liquidationsByExchange(input));
|
|
601
|
+
});
|
|
602
|
+
});
|
|
603
|
+
registerCommand(program2, ["data", "coinglass", "funding-rate-history"], "Auto-generated from sdk.data.coinglass.fundingRateHistory", (cmd) => {
|
|
604
|
+
cmd.option("--exchange <value>", "Exchange to pull historical data from.");
|
|
605
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
606
|
+
cmd.addOption(new Option("--interval <value>", "Candle interval for the historical series. (choices: 1m, 3m, 5m, 15m, 30m, 1h, 4h, 6h, 8h, 12h, 1d, 1w)").choices(["1m", "3m", "5m", "15m", "30m", "1h", "4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
607
|
+
cmd.option("--limit <value>", "Number of historical points to return (1\u20134500).");
|
|
608
|
+
cmd.option("--start-time <value>", "Unix epoch ms \u2014 start of the time window. Omit to use `limit` newest points.");
|
|
609
|
+
cmd.option("--end-time <value>", "Unix epoch ms \u2014 end of the time window.");
|
|
610
|
+
cmd.action(async (opts) => {
|
|
611
|
+
const input = {
|
|
612
|
+
"exchange": opts["exchange"],
|
|
613
|
+
"symbol": opts["symbol"],
|
|
614
|
+
"interval": opts["interval"],
|
|
615
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
616
|
+
"startTime": opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]),
|
|
617
|
+
"endTime": opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"])
|
|
618
|
+
};
|
|
619
|
+
if (opts["exchange"] === void 0) delete input["exchange"];
|
|
620
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
621
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
622
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
623
|
+
if (opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]) === void 0) delete input["startTime"];
|
|
624
|
+
if (opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"]) === void 0) delete input["endTime"];
|
|
625
|
+
await runAndPrint(() => sdk2.data.coinglass.fundingRateHistory(input));
|
|
626
|
+
});
|
|
627
|
+
});
|
|
628
|
+
registerCommand(program2, ["data", "coinglass", "open-interest-history"], "Auto-generated from sdk.data.coinglass.openInterestHistory", (cmd) => {
|
|
629
|
+
cmd.option("--exchange <value>", "Exchange to pull historical data from.");
|
|
630
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
631
|
+
cmd.addOption(new Option("--interval <value>", "Candle interval for the historical series. (choices: 1m, 3m, 5m, 15m, 30m, 1h, 4h, 6h, 8h, 12h, 1d, 1w)").choices(["1m", "3m", "5m", "15m", "30m", "1h", "4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
632
|
+
cmd.option("--limit <value>", "Number of historical points to return (1\u20134500).");
|
|
633
|
+
cmd.option("--start-time <value>", "Unix epoch ms \u2014 start of the time window. Omit to use `limit` newest points.");
|
|
634
|
+
cmd.option("--end-time <value>", "Unix epoch ms \u2014 end of the time window.");
|
|
635
|
+
cmd.action(async (opts) => {
|
|
636
|
+
const input = {
|
|
637
|
+
"exchange": opts["exchange"],
|
|
638
|
+
"symbol": opts["symbol"],
|
|
639
|
+
"interval": opts["interval"],
|
|
640
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
641
|
+
"startTime": opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]),
|
|
642
|
+
"endTime": opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"])
|
|
643
|
+
};
|
|
644
|
+
if (opts["exchange"] === void 0) delete input["exchange"];
|
|
645
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
646
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
647
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
648
|
+
if (opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]) === void 0) delete input["startTime"];
|
|
649
|
+
if (opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"]) === void 0) delete input["endTime"];
|
|
650
|
+
await runAndPrint(() => sdk2.data.coinglass.openInterestHistory(input));
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
registerCommand(program2, ["data", "coinglass", "liquidation-history"], "Auto-generated from sdk.data.coinglass.liquidationHistory", (cmd) => {
|
|
654
|
+
cmd.option("--exchange <value>", "Exchange to pull historical data from.");
|
|
655
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
656
|
+
cmd.addOption(new Option("--interval <value>", "Candle interval for the historical series. (choices: 1m, 3m, 5m, 15m, 30m, 1h, 4h, 6h, 8h, 12h, 1d, 1w)").choices(["1m", "3m", "5m", "15m", "30m", "1h", "4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
657
|
+
cmd.option("--limit <value>", "Number of historical points to return (1\u20134500).");
|
|
658
|
+
cmd.option("--start-time <value>", "Unix epoch ms \u2014 start of the time window. Omit to use `limit` newest points.");
|
|
659
|
+
cmd.option("--end-time <value>", "Unix epoch ms \u2014 end of the time window.");
|
|
660
|
+
cmd.action(async (opts) => {
|
|
661
|
+
const input = {
|
|
662
|
+
"exchange": opts["exchange"],
|
|
663
|
+
"symbol": opts["symbol"],
|
|
664
|
+
"interval": opts["interval"],
|
|
665
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
666
|
+
"startTime": opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]),
|
|
667
|
+
"endTime": opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"])
|
|
668
|
+
};
|
|
669
|
+
if (opts["exchange"] === void 0) delete input["exchange"];
|
|
670
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
671
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
672
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
673
|
+
if (opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]) === void 0) delete input["startTime"];
|
|
674
|
+
if (opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"]) === void 0) delete input["endTime"];
|
|
675
|
+
await runAndPrint(() => sdk2.data.coinglass.liquidationHistory(input));
|
|
676
|
+
});
|
|
677
|
+
});
|
|
678
|
+
registerCommand(program2, ["data", "coinglass", "long-short-ratio-history"], "Auto-generated from sdk.data.coinglass.longShortRatioHistory", (cmd) => {
|
|
679
|
+
cmd.option("--exchange <value>", "Exchange to pull historical data from.");
|
|
680
|
+
cmd.option("--symbol <value>", "Coin symbol, uppercased (e.g. `BTC`, `ETH`).");
|
|
681
|
+
cmd.addOption(new Option("--interval <value>", "Candle interval for the historical series. (choices: 1m, 3m, 5m, 15m, 30m, 1h, 4h, 6h, 8h, 12h, 1d, 1w)").choices(["1m", "3m", "5m", "15m", "30m", "1h", "4h", "6h", "8h", "12h", "1d", "1w"]));
|
|
682
|
+
cmd.option("--limit <value>", "Number of historical points to return (1\u20134500).");
|
|
683
|
+
cmd.option("--start-time <value>", "Unix epoch ms \u2014 start of the time window. Omit to use `limit` newest points.");
|
|
684
|
+
cmd.option("--end-time <value>", "Unix epoch ms \u2014 end of the time window.");
|
|
685
|
+
cmd.action(async (opts) => {
|
|
686
|
+
const input = {
|
|
687
|
+
"exchange": opts["exchange"],
|
|
688
|
+
"symbol": opts["symbol"],
|
|
689
|
+
"interval": opts["interval"],
|
|
690
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
691
|
+
"startTime": opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]),
|
|
692
|
+
"endTime": opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"])
|
|
693
|
+
};
|
|
694
|
+
if (opts["exchange"] === void 0) delete input["exchange"];
|
|
695
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
696
|
+
if (opts["interval"] === void 0) delete input["interval"];
|
|
697
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
698
|
+
if (opts["startTime"] === void 0 ? void 0 : Number(opts["startTime"]) === void 0) delete input["startTime"];
|
|
699
|
+
if (opts["endTime"] === void 0 ? void 0 : Number(opts["endTime"]) === void 0) delete input["endTime"];
|
|
700
|
+
await runAndPrint(() => sdk2.data.coinglass.longShortRatioHistory(input));
|
|
701
|
+
});
|
|
702
|
+
});
|
|
703
|
+
registerCommand(program2, ["data", "composite", "market-snapshot"], "Auto-generated from sdk.data.composite.marketSnapshot", (cmd) => {
|
|
704
|
+
cmd.option("--coingecko-id <value>", "CoinGecko token ID for the price + market-cap component (e.g. `bitcoin`).");
|
|
705
|
+
cmd.option("--coinglass-symbol <value>", "CoinGlass coin symbol for the funding + open-interest component (e.g. `BTC`).");
|
|
706
|
+
cmd.action(async (opts) => {
|
|
707
|
+
const input = {
|
|
708
|
+
"coingeckoId": opts["coingeckoId"],
|
|
709
|
+
"coinglassSymbol": opts["coinglassSymbol"]
|
|
710
|
+
};
|
|
711
|
+
if (opts["coingeckoId"] === void 0) delete input["coingeckoId"];
|
|
712
|
+
if (opts["coinglassSymbol"] === void 0) delete input["coinglassSymbol"];
|
|
713
|
+
await runAndPrint(() => sdk2.data.composite.marketSnapshot(input));
|
|
714
|
+
});
|
|
715
|
+
});
|
|
716
|
+
registerCommand(program2, ["data", "composite", "alpha-radar"], "Auto-generated from sdk.data.composite.alphaRadar", (cmd) => {
|
|
717
|
+
cmd.option("--symbol <value>", "Coin symbol to score across the alpha-radar signal components (e.g. `BTC`).");
|
|
718
|
+
cmd.action(async (opts) => {
|
|
719
|
+
const input = {
|
|
720
|
+
"symbol": opts["symbol"]
|
|
721
|
+
};
|
|
722
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
723
|
+
await runAndPrint(() => sdk2.data.composite.alphaRadar(input));
|
|
724
|
+
});
|
|
725
|
+
});
|
|
726
|
+
registerCommand(program2, ["data", "composite", "wallet-xray"], "Auto-generated from sdk.data.composite.walletXray", (cmd) => {
|
|
727
|
+
cmd.option("--address <value>", "Wallet address to analyze (EVM `0x\u2026` or chain-native format).");
|
|
728
|
+
cmd.option("--chain <value>", "Chain name to scope the analysis (e.g. `eth`, `base`, `polygon`). Defaults to Ethereum mainnet.");
|
|
729
|
+
cmd.action(async (opts) => {
|
|
730
|
+
const input = {
|
|
731
|
+
"address": opts["address"],
|
|
732
|
+
"chain": opts["chain"]
|
|
733
|
+
};
|
|
734
|
+
if (opts["address"] === void 0) delete input["address"];
|
|
735
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
736
|
+
await runAndPrint(() => sdk2.data.composite.walletXray(input));
|
|
737
|
+
});
|
|
738
|
+
});
|
|
739
|
+
registerCommand(program2, ["data", "composite", "health"], "Auto-generated from sdk.data.composite.health", (cmd) => {
|
|
740
|
+
cmd.action(async () => {
|
|
741
|
+
await runAndPrint(() => sdk2.data.composite.health());
|
|
742
|
+
});
|
|
743
|
+
});
|
|
744
|
+
registerCommand(program2, ["data", "cryptonews", "news"], "Auto-generated from sdk.data.cryptonews.news", (cmd) => {
|
|
745
|
+
cmd.option("--tickers <value>", "Comma-separated tickers to filter by (e.g. `BTC,ETH`). Omit for the full feed.");
|
|
746
|
+
cmd.option("--items <value>", "Articles per page (1\u2013100).");
|
|
747
|
+
cmd.option("--page <value>", "1-based page number for pagination.");
|
|
748
|
+
cmd.addOption(new Option("--sentiment <value>", "Filter to articles with this sentiment classification. (choices: positive, negative, neutral)").choices(["positive", "negative", "neutral"]));
|
|
749
|
+
cmd.option("--topic <value>", "Filter by topic tag (e.g. `regulation`, `mining`, `defi`).");
|
|
750
|
+
cmd.option("--source <value>", "Filter by news outlet (e.g. `coindesk`, `cointelegraph`).");
|
|
751
|
+
cmd.option("--date <value>", "Date filter. Accepts presets (`today`, `last7days`, `last30days`) or `MMDDYYYY-MMDDYYYY` ranges.");
|
|
752
|
+
cmd.addOption(new Option("--sort <value>", "Sort order \u2014 `rank` for relevance, `date` for newest first. (choices: rank, date)").choices(["rank", "date"]));
|
|
753
|
+
cmd.action(async (opts) => {
|
|
754
|
+
const input = {
|
|
755
|
+
"tickers": opts["tickers"],
|
|
756
|
+
"items": opts["items"] === void 0 ? void 0 : Number(opts["items"]),
|
|
757
|
+
"page": opts["page"] === void 0 ? void 0 : Number(opts["page"]),
|
|
758
|
+
"sentiment": opts["sentiment"],
|
|
759
|
+
"topic": opts["topic"],
|
|
760
|
+
"source": opts["source"],
|
|
761
|
+
"date": opts["date"],
|
|
762
|
+
"sort": opts["sort"]
|
|
763
|
+
};
|
|
764
|
+
if (opts["tickers"] === void 0) delete input["tickers"];
|
|
765
|
+
if (opts["items"] === void 0 ? void 0 : Number(opts["items"]) === void 0) delete input["items"];
|
|
766
|
+
if (opts["page"] === void 0 ? void 0 : Number(opts["page"]) === void 0) delete input["page"];
|
|
767
|
+
if (opts["sentiment"] === void 0) delete input["sentiment"];
|
|
768
|
+
if (opts["topic"] === void 0) delete input["topic"];
|
|
769
|
+
if (opts["source"] === void 0) delete input["source"];
|
|
770
|
+
if (opts["date"] === void 0) delete input["date"];
|
|
771
|
+
if (opts["sort"] === void 0) delete input["sort"];
|
|
772
|
+
await runAndPrint(() => sdk2.data.cryptonews.news(input));
|
|
773
|
+
});
|
|
774
|
+
});
|
|
775
|
+
registerCommand(program2, ["data", "cryptonews", "sentiment"], "Auto-generated from sdk.data.cryptonews.sentiment", (cmd) => {
|
|
776
|
+
cmd.option("--tickers <value>", "Comma-separated tickers to score (e.g. `BTC,ETH,SOL`).");
|
|
777
|
+
cmd.option("--date <value>", "Date window. Presets: `today`, `yesterday`, `last7days`, `last30days`, `yeartodate`. Or a custom `MMDDYYYY-MMDDYYYY` range (or `MMDDYYYY-today`).");
|
|
778
|
+
cmd.action(async (opts) => {
|
|
779
|
+
const input = {
|
|
780
|
+
"tickers": opts["tickers"],
|
|
781
|
+
"date": opts["date"]
|
|
782
|
+
};
|
|
783
|
+
if (opts["tickers"] === void 0) delete input["tickers"];
|
|
784
|
+
if (opts["date"] === void 0) delete input["date"];
|
|
785
|
+
await runAndPrint(() => sdk2.data.cryptonews.sentiment(input));
|
|
786
|
+
});
|
|
787
|
+
});
|
|
788
|
+
registerCommand(program2, ["data", "cryptonews", "trending"], "Auto-generated from sdk.data.cryptonews.trending", (cmd) => {
|
|
789
|
+
cmd.option("--date <value>", "Date window \u2014 same format as the sentiment endpoint. Defaults to today.");
|
|
790
|
+
cmd.action(async (opts) => {
|
|
791
|
+
const input = {
|
|
792
|
+
"date": opts["date"]
|
|
793
|
+
};
|
|
794
|
+
if (opts["date"] === void 0) delete input["date"];
|
|
795
|
+
await runAndPrint(() => sdk2.data.cryptonews.trending(input));
|
|
796
|
+
});
|
|
797
|
+
});
|
|
798
|
+
registerCommand(program2, ["data", "defillama", "tvl"], "Auto-generated from sdk.data.defillama.tvl", (cmd) => {
|
|
799
|
+
cmd.option("--protocol <value>", "DeFiLlama protocol slug (e.g. `aave-v3`). Mutually exclusive with `chain`.");
|
|
800
|
+
cmd.option("--chain <value>", "Chain name (e.g. `Ethereum`, `Base`). Returns the chain's aggregate TVL.");
|
|
801
|
+
cmd.option("--historical", "Include the full daily TVL time-series in the response.");
|
|
802
|
+
cmd.action(async (opts) => {
|
|
803
|
+
const input = {
|
|
804
|
+
"protocol": opts["protocol"],
|
|
805
|
+
"chain": opts["chain"],
|
|
806
|
+
"historical": opts["historical"] === void 0 ? void 0 : Boolean(opts["historical"])
|
|
807
|
+
};
|
|
808
|
+
if (opts["protocol"] === void 0) delete input["protocol"];
|
|
809
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
810
|
+
if (opts["historical"] === void 0 ? void 0 : Boolean(opts["historical"]) === void 0) delete input["historical"];
|
|
811
|
+
await runAndPrint(() => sdk2.data.defillama.tvl(input));
|
|
812
|
+
});
|
|
813
|
+
});
|
|
814
|
+
registerCommand(program2, ["data", "defillama", "yields"], "Auto-generated from sdk.data.defillama.yields", (cmd) => {
|
|
815
|
+
cmd.option("--chain <value>", "Filter pools to a single chain.");
|
|
816
|
+
cmd.option("--token <value>", "Filter pools that include this token symbol (e.g. `USDC`).");
|
|
817
|
+
cmd.option("--protocol <value>", "Filter pools by protocol slug (e.g. `aave-v3`).");
|
|
818
|
+
cmd.option("--min-tvl <value>", "Minimum pool TVL in USD \u2014 drop dust pools below this threshold.");
|
|
819
|
+
cmd.option("--pool-id <value>", "Specific DeFiLlama pool ID for a single-pool lookup. Wins over the other filters.");
|
|
820
|
+
cmd.action(async (opts) => {
|
|
821
|
+
const input = {
|
|
822
|
+
"chain": opts["chain"],
|
|
823
|
+
"token": opts["token"],
|
|
824
|
+
"protocol": opts["protocol"],
|
|
825
|
+
"minTvl": opts["minTvl"] === void 0 ? void 0 : Number(opts["minTvl"]),
|
|
826
|
+
"poolId": opts["poolId"]
|
|
827
|
+
};
|
|
828
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
829
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
830
|
+
if (opts["protocol"] === void 0) delete input["protocol"];
|
|
831
|
+
if (opts["minTvl"] === void 0 ? void 0 : Number(opts["minTvl"]) === void 0) delete input["minTvl"];
|
|
832
|
+
if (opts["poolId"] === void 0) delete input["poolId"];
|
|
833
|
+
await runAndPrint(() => sdk2.data.defillama.yields(input));
|
|
834
|
+
});
|
|
835
|
+
});
|
|
836
|
+
registerCommand(program2, ["data", "defillama", "protocol-fees"], "Auto-generated from sdk.data.defillama.protocolFees", (cmd) => {
|
|
837
|
+
cmd.option("--protocol <value>", "Protocol slug to pull fee/revenue data for.");
|
|
838
|
+
cmd.addOption(new Option("--data-type <value>", "Which fee/revenue stream to fetch. `dailyFees` = total user fees, `dailyRevenue` = protocol's cut. (choices: dailyFees, dailyRevenue, dailyHoldersRevenue, dailySupplySideRevenue, dailyBribesRevenue, dailyTokenTaxes)").choices(["dailyFees", "dailyRevenue", "dailyHoldersRevenue", "dailySupplySideRevenue", "dailyBribesRevenue", "dailyTokenTaxes"]));
|
|
839
|
+
cmd.action(async (opts) => {
|
|
840
|
+
const input = {
|
|
841
|
+
"protocol": opts["protocol"],
|
|
842
|
+
"dataType": opts["dataType"]
|
|
843
|
+
};
|
|
844
|
+
if (opts["protocol"] === void 0) delete input["protocol"];
|
|
845
|
+
if (opts["dataType"] === void 0) delete input["dataType"];
|
|
846
|
+
await runAndPrint(() => sdk2.data.defillama.protocolFees(input));
|
|
847
|
+
});
|
|
848
|
+
});
|
|
849
|
+
registerCommand(program2, ["data", "defillama", "dex-volumes"], "Auto-generated from sdk.data.defillama.dexVolumes", (cmd) => {
|
|
850
|
+
cmd.option("--protocol <value>", "Single-DEX detail mode (e.g. `uniswap`). Mutually exclusive with `chain`.");
|
|
851
|
+
cmd.option("--chain <value>", "Filter aggregate volume to one chain (e.g. `Ethereum`). Omit both for the global summary.");
|
|
852
|
+
cmd.action(async (opts) => {
|
|
853
|
+
const input = {
|
|
854
|
+
"protocol": opts["protocol"],
|
|
855
|
+
"chain": opts["chain"]
|
|
856
|
+
};
|
|
857
|
+
if (opts["protocol"] === void 0) delete input["protocol"];
|
|
858
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
859
|
+
await runAndPrint(() => sdk2.data.defillama.dexVolumes(input));
|
|
860
|
+
});
|
|
861
|
+
});
|
|
862
|
+
registerCommand(program2, ["data", "defillama", "stablecoins"], "Auto-generated from sdk.data.defillama.stablecoins", (cmd) => {
|
|
863
|
+
cmd.option("--chain <value>", "Filter circulating-supply data to one chain.");
|
|
864
|
+
cmd.option("--stablecoin-id <value>", "DeFiLlama stablecoin ID for a single-coin lookup (e.g. `1` for USDT).");
|
|
865
|
+
cmd.action(async (opts) => {
|
|
866
|
+
const input = {
|
|
867
|
+
"chain": opts["chain"],
|
|
868
|
+
"stablecoinId": opts["stablecoinId"]
|
|
869
|
+
};
|
|
870
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
871
|
+
if (opts["stablecoinId"] === void 0) delete input["stablecoinId"];
|
|
872
|
+
await runAndPrint(() => sdk2.data.defillama.stablecoins(input));
|
|
873
|
+
});
|
|
874
|
+
});
|
|
875
|
+
registerCommand(program2, ["data", "defillama", "bridges"], "Auto-generated from sdk.data.defillama.bridges", (cmd) => {
|
|
876
|
+
cmd.option("--chain <value>", "Filter bridge volume to one chain.");
|
|
877
|
+
cmd.option("--bridge-id <value>", "DeFiLlama numeric bridge ID for a single-bridge detail view.");
|
|
878
|
+
cmd.action(async (opts) => {
|
|
879
|
+
const input = {
|
|
880
|
+
"chain": opts["chain"],
|
|
881
|
+
"bridgeId": opts["bridgeId"] === void 0 ? void 0 : Number(opts["bridgeId"])
|
|
882
|
+
};
|
|
883
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
884
|
+
if (opts["bridgeId"] === void 0 ? void 0 : Number(opts["bridgeId"]) === void 0) delete input["bridgeId"];
|
|
885
|
+
await runAndPrint(() => sdk2.data.defillama.bridges(input));
|
|
886
|
+
});
|
|
887
|
+
});
|
|
888
|
+
registerCommand(program2, ["data", "defillama", "bridges-list"], "Auto-generated from sdk.data.defillama.bridgesList", (cmd) => {
|
|
889
|
+
cmd.action(async () => {
|
|
890
|
+
await runAndPrint(() => sdk2.data.defillama.bridgesList());
|
|
891
|
+
});
|
|
892
|
+
});
|
|
893
|
+
registerCommand(program2, ["data", "geckoterminal", "token-pools"], "Auto-generated from sdk.data.geckoterminal.tokenPools", (cmd) => {
|
|
894
|
+
cmd.option("--network <value>", "GeckoTerminal network slug (e.g. `eth`, `bsc`, `base`, `arbitrum`).");
|
|
895
|
+
cmd.option("--token-address <value>", "Token contract address on `network`. Returns the pools that include it.");
|
|
896
|
+
cmd.option("--page <value>", "1-based page number \u2014 GeckoTerminal returns up to 20 pools per page.");
|
|
897
|
+
cmd.action(async (opts) => {
|
|
898
|
+
const input = {
|
|
899
|
+
"network": opts["network"],
|
|
900
|
+
"tokenAddress": opts["tokenAddress"],
|
|
901
|
+
"page": opts["page"] === void 0 ? void 0 : Number(opts["page"])
|
|
902
|
+
};
|
|
903
|
+
if (opts["network"] === void 0) delete input["network"];
|
|
904
|
+
if (opts["tokenAddress"] === void 0) delete input["tokenAddress"];
|
|
905
|
+
if (opts["page"] === void 0 ? void 0 : Number(opts["page"]) === void 0) delete input["page"];
|
|
906
|
+
await runAndPrint(() => sdk2.data.geckoterminal.tokenPools(input));
|
|
907
|
+
});
|
|
908
|
+
});
|
|
909
|
+
registerCommand(program2, ["data", "geckoterminal", "pool-ohlcv"], "Auto-generated from sdk.data.geckoterminal.poolOhlcv", (cmd) => {
|
|
910
|
+
cmd.option("--network <value>", "GeckoTerminal network slug (e.g. `eth`, `bsc`, `base`, `arbitrum`).");
|
|
911
|
+
cmd.option("--pool-address <value>", "DEX pool contract address on `network`.");
|
|
912
|
+
cmd.addOption(new Option("--timeframe <value>", "Candle resolution unit. (choices: day, hour, minute)").choices(["day", "hour", "minute"]));
|
|
913
|
+
cmd.option("--aggregate <value>", "Bucket multiple `timeframe` units into one candle (e.g. `timeframe=hour, aggregate=4` \u2192 4-hour candles).");
|
|
914
|
+
cmd.option("--limit <value>", "Number of candles to return (1\u20131000).");
|
|
915
|
+
cmd.option("--before-timestamp <value>", "Unix epoch seconds \u2014 return candles strictly before this time. Use for pagination backwards in history.");
|
|
916
|
+
cmd.action(async (opts) => {
|
|
917
|
+
const input = {
|
|
918
|
+
"network": opts["network"],
|
|
919
|
+
"poolAddress": opts["poolAddress"],
|
|
920
|
+
"timeframe": opts["timeframe"],
|
|
921
|
+
"aggregate": opts["aggregate"] === void 0 ? void 0 : Number(opts["aggregate"]),
|
|
922
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
923
|
+
"beforeTimestamp": opts["beforeTimestamp"] === void 0 ? void 0 : Number(opts["beforeTimestamp"])
|
|
924
|
+
};
|
|
925
|
+
if (opts["network"] === void 0) delete input["network"];
|
|
926
|
+
if (opts["poolAddress"] === void 0) delete input["poolAddress"];
|
|
927
|
+
if (opts["timeframe"] === void 0) delete input["timeframe"];
|
|
928
|
+
if (opts["aggregate"] === void 0 ? void 0 : Number(opts["aggregate"]) === void 0) delete input["aggregate"];
|
|
929
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
930
|
+
if (opts["beforeTimestamp"] === void 0 ? void 0 : Number(opts["beforeTimestamp"]) === void 0) delete input["beforeTimestamp"];
|
|
931
|
+
await runAndPrint(() => sdk2.data.geckoterminal.poolOhlcv(input));
|
|
932
|
+
});
|
|
933
|
+
});
|
|
934
|
+
registerCommand(program2, ["data", "geckoterminal", "pool-trades"], "Auto-generated from sdk.data.geckoterminal.poolTrades", (cmd) => {
|
|
935
|
+
cmd.option("--network <value>", "GeckoTerminal network slug (e.g. `eth`, `bsc`, `base`, `arbitrum`).");
|
|
936
|
+
cmd.option("--pool-address <value>", "DEX pool contract address on `network`.");
|
|
937
|
+
cmd.option("--trade-volume-in-usd-greater-than <value>", "Drop trades below this USD-equivalent volume threshold. Useful for filtering dust/wash trades.");
|
|
938
|
+
cmd.action(async (opts) => {
|
|
939
|
+
const input = {
|
|
940
|
+
"network": opts["network"],
|
|
941
|
+
"poolAddress": opts["poolAddress"],
|
|
942
|
+
"tradeVolumeInUsdGreaterThan": opts["tradeVolumeInUsdGreaterThan"] === void 0 ? void 0 : Number(opts["tradeVolumeInUsdGreaterThan"])
|
|
943
|
+
};
|
|
944
|
+
if (opts["network"] === void 0) delete input["network"];
|
|
945
|
+
if (opts["poolAddress"] === void 0) delete input["poolAddress"];
|
|
946
|
+
if (opts["tradeVolumeInUsdGreaterThan"] === void 0 ? void 0 : Number(opts["tradeVolumeInUsdGreaterThan"]) === void 0) delete input["tradeVolumeInUsdGreaterThan"];
|
|
947
|
+
await runAndPrint(() => sdk2.data.geckoterminal.poolTrades(input));
|
|
948
|
+
});
|
|
949
|
+
});
|
|
950
|
+
registerCommand(program2, ["data", "geckoterminal", "trending-pools"], "Auto-generated from sdk.data.geckoterminal.trendingPools", (cmd) => {
|
|
951
|
+
cmd.action(async () => {
|
|
952
|
+
await runAndPrint(() => sdk2.data.geckoterminal.trendingPools());
|
|
953
|
+
});
|
|
954
|
+
});
|
|
955
|
+
registerCommand(program2, ["data", "geckoterminal", "token-info"], "Auto-generated from sdk.data.geckoterminal.tokenInfo", (cmd) => {
|
|
956
|
+
cmd.option("--network <value>", "GeckoTerminal network slug (e.g. `eth`, `bsc`, `base`, `arbitrum`).");
|
|
957
|
+
cmd.option("--addresses <value>", "Token contract addresses on `network` (1\u201330 per request). Batched lookup.");
|
|
958
|
+
cmd.option("--include-top-pools", "Include each token's top pools in the response. Set false to slim down the payload.");
|
|
959
|
+
cmd.action(async (opts) => {
|
|
960
|
+
const input = {
|
|
961
|
+
"network": opts["network"],
|
|
962
|
+
"addresses": opts["addresses"] === void 0 ? void 0 : String(opts["addresses"]).split(","),
|
|
963
|
+
"includeTopPools": opts["includeTopPools"] === void 0 ? void 0 : Boolean(opts["includeTopPools"])
|
|
964
|
+
};
|
|
965
|
+
if (opts["network"] === void 0) delete input["network"];
|
|
966
|
+
if (opts["addresses"] === void 0 ? void 0 : String(opts["addresses"]).split(",") === void 0) delete input["addresses"];
|
|
967
|
+
if (opts["includeTopPools"] === void 0 ? void 0 : Boolean(opts["includeTopPools"]) === void 0) delete input["includeTopPools"];
|
|
968
|
+
await runAndPrint(() => sdk2.data.geckoterminal.tokenInfo(input));
|
|
969
|
+
});
|
|
970
|
+
});
|
|
971
|
+
registerCommand(program2, ["data", "kaito", "entities"], "Auto-generated from sdk.data.kaito.entities", (cmd) => {
|
|
972
|
+
cmd.option("--query <value>", "Free-text filter for entity names. Omit to list all.");
|
|
973
|
+
cmd.option("--limit <value>", "Max entities to return (1\u2013100).");
|
|
974
|
+
cmd.action(async (opts) => {
|
|
975
|
+
const input = {
|
|
976
|
+
"query": opts["query"],
|
|
977
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
978
|
+
};
|
|
979
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
980
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
981
|
+
await runAndPrint(() => sdk2.data.kaito.entities(input));
|
|
982
|
+
});
|
|
983
|
+
});
|
|
984
|
+
registerCommand(program2, ["data", "kaito", "narratives"], "Auto-generated from sdk.data.kaito.narratives", (cmd) => {
|
|
985
|
+
cmd.option("--query <value>", "Free-text filter for narrative names. Omit to list all.");
|
|
986
|
+
cmd.option("--limit <value>", "Max narratives to return (1\u2013100).");
|
|
987
|
+
cmd.action(async (opts) => {
|
|
988
|
+
const input = {
|
|
989
|
+
"query": opts["query"],
|
|
990
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
991
|
+
};
|
|
992
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
993
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
994
|
+
await runAndPrint(() => sdk2.data.kaito.narratives(input));
|
|
995
|
+
});
|
|
996
|
+
});
|
|
997
|
+
registerCommand(program2, ["data", "kaito", "search"], "Auto-generated from sdk.data.kaito.search", (cmd) => {
|
|
998
|
+
cmd.option("--query <value>", "Free-text search query across tweets, narratives, and entities.");
|
|
999
|
+
cmd.option("--size <value>", "Result page size (1\u201350). Default 10.");
|
|
1000
|
+
cmd.action(async (opts) => {
|
|
1001
|
+
const input = {
|
|
1002
|
+
"query": opts["query"],
|
|
1003
|
+
"size": opts["size"] === void 0 ? void 0 : Number(opts["size"])
|
|
1004
|
+
};
|
|
1005
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
1006
|
+
if (opts["size"] === void 0 ? void 0 : Number(opts["size"]) === void 0) delete input["size"];
|
|
1007
|
+
await runAndPrint(() => sdk2.data.kaito.search(input));
|
|
1008
|
+
});
|
|
1009
|
+
});
|
|
1010
|
+
registerCommand(program2, ["data", "kaito", "advanced-search"], "Auto-generated from sdk.data.kaito.advancedSearch", (cmd) => {
|
|
1011
|
+
cmd.option("--tokens <value>", "Comma-separated token symbols to filter tweets to (e.g. `BTC,ETH`).");
|
|
1012
|
+
cmd.option("--keyword <value>", "Keyword filter \u2014 substring-matched against tweet text.");
|
|
1013
|
+
cmd.option("--query <value>", "Semantic search query.");
|
|
1014
|
+
cmd.option("--usernames <value>", "Comma-separated Twitter usernames to filter to.");
|
|
1015
|
+
cmd.option("--sources <value>", "Comma-separated source filters.");
|
|
1016
|
+
cmd.option("--min_created_at <value>", "ISO 8601 \u2014 earliest tweet creation time.");
|
|
1017
|
+
cmd.option("--max_created_at <value>", "ISO 8601 \u2014 latest tweet creation time.");
|
|
1018
|
+
cmd.option("--from <value>", "Result offset for pagination.");
|
|
1019
|
+
cmd.option("--size <value>", "Page size.");
|
|
1020
|
+
cmd.option("--languages <value>", "Comma-separated language codes (e.g. `en,zh`).");
|
|
1021
|
+
cmd.addOption(new Option("--sort_by <value>", "Field to sort by. (choices: relevance, created_at, engagement, smart_engagement, author, length, bookmark, sentiment, views)").choices(["relevance", "created_at", "engagement", "smart_engagement", "author", "length", "bookmark", "sentiment", "views"]));
|
|
1022
|
+
cmd.addOption(new Option("--sort_order <value>", "Sort direction for the result list. (choices: asc, desc)").choices(["asc", "desc"]));
|
|
1023
|
+
cmd.addOption(new Option("--tweet_length_type <value>", "Filter by tweet length category. (choices: short, long, thread, article)").choices(["short", "long", "thread", "article"]));
|
|
1024
|
+
cmd.addOption(new Option("--tweet_type <value>", "Filter by tweet shape. (choices: tweet, quote, reply)").choices(["tweet", "quote", "reply"]));
|
|
1025
|
+
cmd.addOption(new Option("--sentiment_type <value>", "Filter by Kaito's sentiment classification. (choices: bullish, bearish, neutral)").choices(["bullish", "bearish", "neutral"]));
|
|
1026
|
+
cmd.addOption(new Option("--author_type <value>", "Filter by author classification. (choices: Organization, Individual)").choices(["Organization", "Individual"]));
|
|
1027
|
+
cmd.option("--min_bookmark_count <value>", "Minimum bookmark count threshold.");
|
|
1028
|
+
cmd.option("--max_bookmark_count <value>", "Maximum bookmark count threshold.");
|
|
1029
|
+
cmd.option("--min_view_count <value>", "Minimum view count threshold.");
|
|
1030
|
+
cmd.option("--max_view_count <value>", "Maximum view count threshold.");
|
|
1031
|
+
cmd.option("--min_smart_engagement_count <value>", "Minimum smart-follower engagement count.");
|
|
1032
|
+
cmd.option("--max_smart_engagement_count <value>", "Maximum smart-follower engagement count.");
|
|
1033
|
+
cmd.option("--min_like_count <value>", "Minimum like count threshold.");
|
|
1034
|
+
cmd.option("--max_like_count <value>", "Maximum like count threshold.");
|
|
1035
|
+
cmd.option("--min_reply_count <value>", "Minimum reply count threshold.");
|
|
1036
|
+
cmd.option("--max_reply_count <value>", "Maximum reply count threshold.");
|
|
1037
|
+
cmd.option("--min_retweet_count <value>", "Minimum retweet count threshold.");
|
|
1038
|
+
cmd.option("--max_retweet_count <value>", "Maximum retweet count threshold.");
|
|
1039
|
+
cmd.option("--min_quote_count <value>", "Minimum quote-tweet count threshold.");
|
|
1040
|
+
cmd.option("--max_quote_count <value>", "Maximum quote-tweet count threshold.");
|
|
1041
|
+
cmd.action(async (opts) => {
|
|
1042
|
+
const input = {
|
|
1043
|
+
"tokens": opts["tokens"],
|
|
1044
|
+
"keyword": opts["keyword"],
|
|
1045
|
+
"query": opts["query"],
|
|
1046
|
+
"usernames": opts["usernames"],
|
|
1047
|
+
"sources": opts["sources"],
|
|
1048
|
+
"min_created_at": opts["min_created_at"],
|
|
1049
|
+
"max_created_at": opts["max_created_at"],
|
|
1050
|
+
"from": opts["from"] === void 0 ? void 0 : Number(opts["from"]),
|
|
1051
|
+
"size": opts["size"] === void 0 ? void 0 : Number(opts["size"]),
|
|
1052
|
+
"languages": opts["languages"],
|
|
1053
|
+
"sort_by": opts["sort_by"],
|
|
1054
|
+
"sort_order": opts["sort_order"],
|
|
1055
|
+
"tweet_length_type": opts["tweet_length_type"],
|
|
1056
|
+
"tweet_type": opts["tweet_type"],
|
|
1057
|
+
"sentiment_type": opts["sentiment_type"],
|
|
1058
|
+
"author_type": opts["author_type"],
|
|
1059
|
+
"min_bookmark_count": opts["min_bookmark_count"] === void 0 ? void 0 : Number(opts["min_bookmark_count"]),
|
|
1060
|
+
"max_bookmark_count": opts["max_bookmark_count"] === void 0 ? void 0 : Number(opts["max_bookmark_count"]),
|
|
1061
|
+
"min_view_count": opts["min_view_count"] === void 0 ? void 0 : Number(opts["min_view_count"]),
|
|
1062
|
+
"max_view_count": opts["max_view_count"] === void 0 ? void 0 : Number(opts["max_view_count"]),
|
|
1063
|
+
"min_smart_engagement_count": opts["min_smart_engagement_count"] === void 0 ? void 0 : Number(opts["min_smart_engagement_count"]),
|
|
1064
|
+
"max_smart_engagement_count": opts["max_smart_engagement_count"] === void 0 ? void 0 : Number(opts["max_smart_engagement_count"]),
|
|
1065
|
+
"min_like_count": opts["min_like_count"] === void 0 ? void 0 : Number(opts["min_like_count"]),
|
|
1066
|
+
"max_like_count": opts["max_like_count"] === void 0 ? void 0 : Number(opts["max_like_count"]),
|
|
1067
|
+
"min_reply_count": opts["min_reply_count"] === void 0 ? void 0 : Number(opts["min_reply_count"]),
|
|
1068
|
+
"max_reply_count": opts["max_reply_count"] === void 0 ? void 0 : Number(opts["max_reply_count"]),
|
|
1069
|
+
"min_retweet_count": opts["min_retweet_count"] === void 0 ? void 0 : Number(opts["min_retweet_count"]),
|
|
1070
|
+
"max_retweet_count": opts["max_retweet_count"] === void 0 ? void 0 : Number(opts["max_retweet_count"]),
|
|
1071
|
+
"min_quote_count": opts["min_quote_count"] === void 0 ? void 0 : Number(opts["min_quote_count"]),
|
|
1072
|
+
"max_quote_count": opts["max_quote_count"] === void 0 ? void 0 : Number(opts["max_quote_count"])
|
|
1073
|
+
};
|
|
1074
|
+
if (opts["tokens"] === void 0) delete input["tokens"];
|
|
1075
|
+
if (opts["keyword"] === void 0) delete input["keyword"];
|
|
1076
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
1077
|
+
if (opts["usernames"] === void 0) delete input["usernames"];
|
|
1078
|
+
if (opts["sources"] === void 0) delete input["sources"];
|
|
1079
|
+
if (opts["min_created_at"] === void 0) delete input["min_created_at"];
|
|
1080
|
+
if (opts["max_created_at"] === void 0) delete input["max_created_at"];
|
|
1081
|
+
if (opts["from"] === void 0 ? void 0 : Number(opts["from"]) === void 0) delete input["from"];
|
|
1082
|
+
if (opts["size"] === void 0 ? void 0 : Number(opts["size"]) === void 0) delete input["size"];
|
|
1083
|
+
if (opts["languages"] === void 0) delete input["languages"];
|
|
1084
|
+
if (opts["sort_by"] === void 0) delete input["sort_by"];
|
|
1085
|
+
if (opts["sort_order"] === void 0) delete input["sort_order"];
|
|
1086
|
+
if (opts["tweet_length_type"] === void 0) delete input["tweet_length_type"];
|
|
1087
|
+
if (opts["tweet_type"] === void 0) delete input["tweet_type"];
|
|
1088
|
+
if (opts["sentiment_type"] === void 0) delete input["sentiment_type"];
|
|
1089
|
+
if (opts["author_type"] === void 0) delete input["author_type"];
|
|
1090
|
+
if (opts["min_bookmark_count"] === void 0 ? void 0 : Number(opts["min_bookmark_count"]) === void 0) delete input["min_bookmark_count"];
|
|
1091
|
+
if (opts["max_bookmark_count"] === void 0 ? void 0 : Number(opts["max_bookmark_count"]) === void 0) delete input["max_bookmark_count"];
|
|
1092
|
+
if (opts["min_view_count"] === void 0 ? void 0 : Number(opts["min_view_count"]) === void 0) delete input["min_view_count"];
|
|
1093
|
+
if (opts["max_view_count"] === void 0 ? void 0 : Number(opts["max_view_count"]) === void 0) delete input["max_view_count"];
|
|
1094
|
+
if (opts["min_smart_engagement_count"] === void 0 ? void 0 : Number(opts["min_smart_engagement_count"]) === void 0) delete input["min_smart_engagement_count"];
|
|
1095
|
+
if (opts["max_smart_engagement_count"] === void 0 ? void 0 : Number(opts["max_smart_engagement_count"]) === void 0) delete input["max_smart_engagement_count"];
|
|
1096
|
+
if (opts["min_like_count"] === void 0 ? void 0 : Number(opts["min_like_count"]) === void 0) delete input["min_like_count"];
|
|
1097
|
+
if (opts["max_like_count"] === void 0 ? void 0 : Number(opts["max_like_count"]) === void 0) delete input["max_like_count"];
|
|
1098
|
+
if (opts["min_reply_count"] === void 0 ? void 0 : Number(opts["min_reply_count"]) === void 0) delete input["min_reply_count"];
|
|
1099
|
+
if (opts["max_reply_count"] === void 0 ? void 0 : Number(opts["max_reply_count"]) === void 0) delete input["max_reply_count"];
|
|
1100
|
+
if (opts["min_retweet_count"] === void 0 ? void 0 : Number(opts["min_retweet_count"]) === void 0) delete input["min_retweet_count"];
|
|
1101
|
+
if (opts["max_retweet_count"] === void 0 ? void 0 : Number(opts["max_retweet_count"]) === void 0) delete input["max_retweet_count"];
|
|
1102
|
+
if (opts["min_quote_count"] === void 0 ? void 0 : Number(opts["min_quote_count"]) === void 0) delete input["min_quote_count"];
|
|
1103
|
+
if (opts["max_quote_count"] === void 0 ? void 0 : Number(opts["max_quote_count"]) === void 0) delete input["max_quote_count"];
|
|
1104
|
+
await runAndPrint(() => sdk2.data.kaito.advancedSearch(input));
|
|
1105
|
+
});
|
|
1106
|
+
});
|
|
1107
|
+
registerCommand(program2, ["data", "kaito", "tweet-engagement"], "Auto-generated from sdk.data.kaito.tweetEngagement", (cmd) => {
|
|
1108
|
+
cmd.option("--tweet_id <value>", "Twitter status ID (numeric, as a string).");
|
|
1109
|
+
cmd.action(async (opts) => {
|
|
1110
|
+
const input = {
|
|
1111
|
+
"tweet_id": opts["tweet_id"]
|
|
1112
|
+
};
|
|
1113
|
+
if (opts["tweet_id"] === void 0) delete input["tweet_id"];
|
|
1114
|
+
await runAndPrint(() => sdk2.data.kaito.tweetEngagement(input));
|
|
1115
|
+
});
|
|
1116
|
+
});
|
|
1117
|
+
registerCommand(program2, ["data", "kaito", "feeds"], "Auto-generated from sdk.data.kaito.feeds", (cmd) => {
|
|
1118
|
+
cmd.option("--token <value>", "Token symbol to filter feed to (e.g. `BTC`). Omit for all.");
|
|
1119
|
+
cmd.option("--min_created_at <value>", "ISO 8601 \u2014 earliest tweet creation time.");
|
|
1120
|
+
cmd.option("--max_created_at <value>", "ISO 8601 \u2014 latest tweet creation time.");
|
|
1121
|
+
cmd.option("--size <value>", "Page size (1\u201350).");
|
|
1122
|
+
cmd.action(async (opts) => {
|
|
1123
|
+
const input = {
|
|
1124
|
+
"token": opts["token"],
|
|
1125
|
+
"min_created_at": opts["min_created_at"],
|
|
1126
|
+
"max_created_at": opts["max_created_at"],
|
|
1127
|
+
"size": opts["size"] === void 0 ? void 0 : Number(opts["size"])
|
|
1128
|
+
};
|
|
1129
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1130
|
+
if (opts["min_created_at"] === void 0) delete input["min_created_at"];
|
|
1131
|
+
if (opts["max_created_at"] === void 0) delete input["max_created_at"];
|
|
1132
|
+
if (opts["size"] === void 0 ? void 0 : Number(opts["size"]) === void 0) delete input["size"];
|
|
1133
|
+
await runAndPrint(() => sdk2.data.kaito.feeds(input));
|
|
1134
|
+
});
|
|
1135
|
+
});
|
|
1136
|
+
registerCommand(program2, ["data", "kaito", "sentiment"], "Auto-generated from sdk.data.kaito.sentiment", (cmd) => {
|
|
1137
|
+
cmd.option("--token <value>", "Token symbol to compute sentiment for (e.g. `BTC`).");
|
|
1138
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 earliest date in the analysis window.");
|
|
1139
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 latest date in the analysis window.");
|
|
1140
|
+
cmd.option("--adjusted", "Apply Kaito's bot/spam adjustment.");
|
|
1141
|
+
cmd.option("--average", "Return rolling average vs raw daily values.");
|
|
1142
|
+
cmd.option("--gaussian", "Apply Gaussian smoothing to the time series.");
|
|
1143
|
+
cmd.addOption(new Option("--language <value>", "Restrict source tweets to one language. (choices: all, en, zh, ko, others)").choices(["all", "en", "zh", "ko", "others"]));
|
|
1144
|
+
cmd.addOption(new Option("--version <value>", "Sentiment model version. Default to v3 (latest). (choices: 2, 3)").choices(["2", "3"]));
|
|
1145
|
+
cmd.action(async (opts) => {
|
|
1146
|
+
const input = {
|
|
1147
|
+
"token": opts["token"],
|
|
1148
|
+
"start_date": opts["start_date"],
|
|
1149
|
+
"end_date": opts["end_date"],
|
|
1150
|
+
"adjusted": opts["adjusted"] === void 0 ? void 0 : Boolean(opts["adjusted"]),
|
|
1151
|
+
"average": opts["average"] === void 0 ? void 0 : Boolean(opts["average"]),
|
|
1152
|
+
"gaussian": opts["gaussian"] === void 0 ? void 0 : Boolean(opts["gaussian"]),
|
|
1153
|
+
"language": opts["language"],
|
|
1154
|
+
"version": opts["version"]
|
|
1155
|
+
};
|
|
1156
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1157
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1158
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1159
|
+
if (opts["adjusted"] === void 0 ? void 0 : Boolean(opts["adjusted"]) === void 0) delete input["adjusted"];
|
|
1160
|
+
if (opts["average"] === void 0 ? void 0 : Boolean(opts["average"]) === void 0) delete input["average"];
|
|
1161
|
+
if (opts["gaussian"] === void 0 ? void 0 : Boolean(opts["gaussian"]) === void 0) delete input["gaussian"];
|
|
1162
|
+
if (opts["language"] === void 0) delete input["language"];
|
|
1163
|
+
if (opts["version"] === void 0) delete input["version"];
|
|
1164
|
+
await runAndPrint(() => sdk2.data.kaito.sentiment(input));
|
|
1165
|
+
});
|
|
1166
|
+
});
|
|
1167
|
+
registerCommand(program2, ["data", "kaito", "engagement"], "Auto-generated from sdk.data.kaito.engagement", (cmd) => {
|
|
1168
|
+
cmd.option("--token <value>", "Token symbol filter. Mutually exclusive with `keyword`.");
|
|
1169
|
+
cmd.option("--keyword <value>", "Keyword filter. Mutually exclusive with `token`.");
|
|
1170
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 start date for the engagement window.");
|
|
1171
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 end date for the engagement window.");
|
|
1172
|
+
cmd.action(async (opts) => {
|
|
1173
|
+
const input = {
|
|
1174
|
+
"token": opts["token"],
|
|
1175
|
+
"keyword": opts["keyword"],
|
|
1176
|
+
"start_date": opts["start_date"],
|
|
1177
|
+
"end_date": opts["end_date"]
|
|
1178
|
+
};
|
|
1179
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1180
|
+
if (opts["keyword"] === void 0) delete input["keyword"];
|
|
1181
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1182
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1183
|
+
await runAndPrint(() => sdk2.data.kaito.engagement(input));
|
|
1184
|
+
});
|
|
1185
|
+
});
|
|
1186
|
+
registerCommand(program2, ["data", "kaito", "mentions"], "Auto-generated from sdk.data.kaito.mentions", (cmd) => {
|
|
1187
|
+
cmd.option("--token <value>", "Token symbol filter. Mutually exclusive with `keyword`.");
|
|
1188
|
+
cmd.option("--keyword <value>", "Keyword filter. Mutually exclusive with `token`.");
|
|
1189
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 start date for the engagement window.");
|
|
1190
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 end date for the engagement window.");
|
|
1191
|
+
cmd.action(async (opts) => {
|
|
1192
|
+
const input = {
|
|
1193
|
+
"token": opts["token"],
|
|
1194
|
+
"keyword": opts["keyword"],
|
|
1195
|
+
"start_date": opts["start_date"],
|
|
1196
|
+
"end_date": opts["end_date"]
|
|
1197
|
+
};
|
|
1198
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1199
|
+
if (opts["keyword"] === void 0) delete input["keyword"];
|
|
1200
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1201
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1202
|
+
await runAndPrint(() => sdk2.data.kaito.mentions(input));
|
|
1203
|
+
});
|
|
1204
|
+
});
|
|
1205
|
+
registerCommand(program2, ["data", "kaito", "mindshare"], "Auto-generated from sdk.data.kaito.mindshare", (cmd) => {
|
|
1206
|
+
cmd.option("--token <value>", "Token symbol to compute mindshare for.");
|
|
1207
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 earliest date in the analysis window.");
|
|
1208
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 latest date in the analysis window.");
|
|
1209
|
+
cmd.option("--scope <value>", "Optional scope filter (e.g. narrative or category).");
|
|
1210
|
+
cmd.action(async (opts) => {
|
|
1211
|
+
const input = {
|
|
1212
|
+
"token": opts["token"],
|
|
1213
|
+
"start_date": opts["start_date"],
|
|
1214
|
+
"end_date": opts["end_date"],
|
|
1215
|
+
"scope": opts["scope"]
|
|
1216
|
+
};
|
|
1217
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1218
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1219
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1220
|
+
if (opts["scope"] === void 0) delete input["scope"];
|
|
1221
|
+
await runAndPrint(() => sdk2.data.kaito.mindshare(input));
|
|
1222
|
+
});
|
|
1223
|
+
});
|
|
1224
|
+
registerCommand(program2, ["data", "kaito", "mindshare-arena"], "Auto-generated from sdk.data.kaito.mindshareArena", (cmd) => {
|
|
1225
|
+
cmd.addOption(new Option("--duration <value>", "Mindshare measurement window. (choices: all, 24h, 48h, 7d, 30d, 3m, 6m, 12m)").choices(["all", "24h", "48h", "7d", "30d", "3m", "6m", "12m"]));
|
|
1226
|
+
cmd.addOption(new Option("--language <value>", "Restrict tweets to one language. (choices: all, en, zh, ko, others)").choices(["all", "en", "zh", "ko", "others"]));
|
|
1227
|
+
cmd.addOption(new Option("--categories <value>", "Restrict to a single arena category. (choices: EXCHANGE, INFOMKT)").choices(["EXCHANGE", "INFOMKT"]));
|
|
1228
|
+
cmd.option("--pre_tge", "Include pre-TGE projects in the leaderboard.");
|
|
1229
|
+
cmd.option("--ex_official", "Exclude tweets from official project accounts.");
|
|
1230
|
+
cmd.option("--weighted", "Use Kaito's weighted-by-author-influence score.");
|
|
1231
|
+
cmd.option("--nft", "Restrict to NFT projects.");
|
|
1232
|
+
cmd.action(async (opts) => {
|
|
1233
|
+
const input = {
|
|
1234
|
+
"duration": opts["duration"],
|
|
1235
|
+
"language": opts["language"],
|
|
1236
|
+
"categories": opts["categories"],
|
|
1237
|
+
"pre_tge": opts["pre_tge"] === void 0 ? void 0 : Boolean(opts["pre_tge"]),
|
|
1238
|
+
"ex_official": opts["ex_official"] === void 0 ? void 0 : Boolean(opts["ex_official"]),
|
|
1239
|
+
"weighted": opts["weighted"] === void 0 ? void 0 : Boolean(opts["weighted"]),
|
|
1240
|
+
"nft": opts["nft"] === void 0 ? void 0 : Boolean(opts["nft"])
|
|
1241
|
+
};
|
|
1242
|
+
if (opts["duration"] === void 0) delete input["duration"];
|
|
1243
|
+
if (opts["language"] === void 0) delete input["language"];
|
|
1244
|
+
if (opts["categories"] === void 0) delete input["categories"];
|
|
1245
|
+
if (opts["pre_tge"] === void 0 ? void 0 : Boolean(opts["pre_tge"]) === void 0) delete input["pre_tge"];
|
|
1246
|
+
if (opts["ex_official"] === void 0 ? void 0 : Boolean(opts["ex_official"]) === void 0) delete input["ex_official"];
|
|
1247
|
+
if (opts["weighted"] === void 0 ? void 0 : Boolean(opts["weighted"]) === void 0) delete input["weighted"];
|
|
1248
|
+
if (opts["nft"] === void 0 ? void 0 : Boolean(opts["nft"]) === void 0) delete input["nft"];
|
|
1249
|
+
await runAndPrint(() => sdk2.data.kaito.mindshareArena(input));
|
|
1250
|
+
});
|
|
1251
|
+
});
|
|
1252
|
+
registerCommand(program2, ["data", "kaito", "mindshare-delta"], "Auto-generated from sdk.data.kaito.mindshareDelta", (cmd) => {
|
|
1253
|
+
cmd.addOption(new Option("--duration <value>", "Window over which to compute the mindshare delta. (choices: 24h, 48h, 7d, 30d, 3m, 6m, 12m, all)").choices(["24h", "48h", "7d", "30d", "3m", "6m", "12m", "all"]));
|
|
1254
|
+
cmd.addOption(new Option("--sort_type <value>", "Sort by largest delta first (`desc`) or smallest (`asc`). (choices: desc, asc)").choices(["desc", "asc"]));
|
|
1255
|
+
cmd.option("--limit <value>", "Max projects to return.");
|
|
1256
|
+
cmd.action(async (opts) => {
|
|
1257
|
+
const input = {
|
|
1258
|
+
"duration": opts["duration"],
|
|
1259
|
+
"sort_type": opts["sort_type"],
|
|
1260
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1261
|
+
};
|
|
1262
|
+
if (opts["duration"] === void 0) delete input["duration"];
|
|
1263
|
+
if (opts["sort_type"] === void 0) delete input["sort_type"];
|
|
1264
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1265
|
+
await runAndPrint(() => sdk2.data.kaito.mindshareDelta(input));
|
|
1266
|
+
});
|
|
1267
|
+
});
|
|
1268
|
+
registerCommand(program2, ["data", "kaito", "mindshare-narrative"], "Auto-generated from sdk.data.kaito.mindshareNarrative", (cmd) => {
|
|
1269
|
+
cmd.option("--narrative <value>", "Narrative slug (e.g. `RWA`, `AI`, `meme`).");
|
|
1270
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 earliest date in the analysis window.");
|
|
1271
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 latest date in the analysis window.");
|
|
1272
|
+
cmd.action(async (opts) => {
|
|
1273
|
+
const input = {
|
|
1274
|
+
"narrative": opts["narrative"],
|
|
1275
|
+
"start_date": opts["start_date"],
|
|
1276
|
+
"end_date": opts["end_date"]
|
|
1277
|
+
};
|
|
1278
|
+
if (opts["narrative"] === void 0) delete input["narrative"];
|
|
1279
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1280
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1281
|
+
await runAndPrint(() => sdk2.data.kaito.mindshareNarrative(input));
|
|
1282
|
+
});
|
|
1283
|
+
});
|
|
1284
|
+
registerCommand(program2, ["data", "kaito", "kol-mindshare"], "Auto-generated from sdk.data.kaito.kolMindshare", (cmd) => {
|
|
1285
|
+
cmd.option("--token <value>", "Token symbol to attribute KOL mindshare to.");
|
|
1286
|
+
cmd.addOption(new Option("--duration <value>", "KOL mindshare window. (choices: 24h, 48h, 7d, 30d, 3m, 6m, 12m, all)").choices(["24h", "48h", "7d", "30d", "3m", "6m", "12m", "all"]));
|
|
1287
|
+
cmd.option("--top_n <value>", "Top N KOLs to return.");
|
|
1288
|
+
cmd.action(async (opts) => {
|
|
1289
|
+
const input = {
|
|
1290
|
+
"token": opts["token"],
|
|
1291
|
+
"duration": opts["duration"],
|
|
1292
|
+
"top_n": opts["top_n"] === void 0 ? void 0 : Number(opts["top_n"])
|
|
1293
|
+
};
|
|
1294
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1295
|
+
if (opts["duration"] === void 0) delete input["duration"];
|
|
1296
|
+
if (opts["top_n"] === void 0 ? void 0 : Number(opts["top_n"]) === void 0) delete input["top_n"];
|
|
1297
|
+
await runAndPrint(() => sdk2.data.kaito.kolMindshare(input));
|
|
1298
|
+
});
|
|
1299
|
+
});
|
|
1300
|
+
registerCommand(program2, ["data", "kaito", "events"], "Auto-generated from sdk.data.kaito.events", (cmd) => {
|
|
1301
|
+
cmd.option("--token <value>", "Token symbol to filter events for.");
|
|
1302
|
+
cmd.option("--start_date <value>", "ISO 8601 \u2014 earliest event date.");
|
|
1303
|
+
cmd.option("--end_date <value>", "ISO 8601 \u2014 latest event date.");
|
|
1304
|
+
cmd.option("--min_announcement_date <value>", "ISO 8601 \u2014 earliest announcement date.");
|
|
1305
|
+
cmd.option("--max_announcement_date <value>", "ISO 8601 \u2014 latest announcement date.");
|
|
1306
|
+
cmd.option("--event_types <value>", "Comma-separated event-type filters.");
|
|
1307
|
+
cmd.option("--sources <value>", "Comma-separated source filters.");
|
|
1308
|
+
cmd.addOption(new Option("--sort_by <value>", "Sort field. (choices: event_date, project_name, market_cap, announcement_date)").choices(["event_date", "project_name", "market_cap", "announcement_date"]));
|
|
1309
|
+
cmd.addOption(new Option("--sort_order <value>", "Sort direction for the result list. (choices: asc, desc)").choices(["asc", "desc"]));
|
|
1310
|
+
cmd.action(async (opts) => {
|
|
1311
|
+
const input = {
|
|
1312
|
+
"token": opts["token"],
|
|
1313
|
+
"start_date": opts["start_date"],
|
|
1314
|
+
"end_date": opts["end_date"],
|
|
1315
|
+
"min_announcement_date": opts["min_announcement_date"],
|
|
1316
|
+
"max_announcement_date": opts["max_announcement_date"],
|
|
1317
|
+
"event_types": opts["event_types"],
|
|
1318
|
+
"sources": opts["sources"],
|
|
1319
|
+
"sort_by": opts["sort_by"],
|
|
1320
|
+
"sort_order": opts["sort_order"]
|
|
1321
|
+
};
|
|
1322
|
+
if (opts["token"] === void 0) delete input["token"];
|
|
1323
|
+
if (opts["start_date"] === void 0) delete input["start_date"];
|
|
1324
|
+
if (opts["end_date"] === void 0) delete input["end_date"];
|
|
1325
|
+
if (opts["min_announcement_date"] === void 0) delete input["min_announcement_date"];
|
|
1326
|
+
if (opts["max_announcement_date"] === void 0) delete input["max_announcement_date"];
|
|
1327
|
+
if (opts["event_types"] === void 0) delete input["event_types"];
|
|
1328
|
+
if (opts["sources"] === void 0) delete input["sources"];
|
|
1329
|
+
if (opts["sort_by"] === void 0) delete input["sort_by"];
|
|
1330
|
+
if (opts["sort_order"] === void 0) delete input["sort_order"];
|
|
1331
|
+
await runAndPrint(() => sdk2.data.kaito.events(input));
|
|
1332
|
+
});
|
|
1333
|
+
});
|
|
1334
|
+
registerCommand(program2, ["data", "kaito", "twitter-user-metadata"], "Auto-generated from sdk.data.kaito.twitterUserMetadata", (cmd) => {
|
|
1335
|
+
cmd.option("--user_id <value>", "Twitter user ID (numeric, as a string).");
|
|
1336
|
+
cmd.action(async (opts) => {
|
|
1337
|
+
const input = {
|
|
1338
|
+
"user_id": opts["user_id"]
|
|
1339
|
+
};
|
|
1340
|
+
if (opts["user_id"] === void 0) delete input["user_id"];
|
|
1341
|
+
await runAndPrint(() => sdk2.data.kaito.twitterUserMetadata(input));
|
|
1342
|
+
});
|
|
1343
|
+
});
|
|
1344
|
+
registerCommand(program2, ["data", "kaito", "market-smart-following"], "Auto-generated from sdk.data.kaito.marketSmartFollowing", (cmd) => {
|
|
1345
|
+
cmd.addOption(new Option("--duration <value>", "Window for the smart-following analysis. (choices: 24h, 48h, 7d, 30d, all_dates)").choices(["24h", "48h", "7d", "30d", "all_dates"]));
|
|
1346
|
+
cmd.option("--from <value>", "Result offset for pagination.");
|
|
1347
|
+
cmd.addOption(new Option("--sort_by <value>", "Sort field. (choices: earliest_time, smart_followers, followers_change, change_ratio)").choices(["earliest_time", "smart_followers", "followers_change", "change_ratio"]));
|
|
1348
|
+
cmd.addOption(new Option("--sort_order <value>", "Sort direction for the result list. (choices: asc, desc)").choices(["asc", "desc"]));
|
|
1349
|
+
cmd.addOption(new Option("--filter_smart_followers_operator <value>", "Comparison operator for `filter_smart_followers_value`. (choices: gte, lte)").choices(["gte", "lte"]));
|
|
1350
|
+
cmd.option("--filter_smart_followers_value <value>", "Threshold for smart-follower count filter.");
|
|
1351
|
+
cmd.addOption(new Option("--user_status <value>", "Filter to newly-tracked vs existing users. (choices: new, existing, all)").choices(["new", "existing", "all"]));
|
|
1352
|
+
cmd.addOption(new Option("--user_tag_individual_or_organization <value>", "Filter by author classification. (choices: Individual, Organization, all)").choices(["Individual", "Organization", "all"]));
|
|
1353
|
+
cmd.addOption(new Option("--user_type <value>", "Restrict to Kaito KOLs (`kkol`), non-KOLs, or both. (choices: kkol, non_kkol, all)").choices(["kkol", "non_kkol", "all"]));
|
|
1354
|
+
cmd.addOption(new Option("--user_web3_relevance <value>", "Restrict to web3-relevant users. (choices: relevant, irrelevant)").choices(["relevant", "irrelevant"]));
|
|
1355
|
+
cmd.action(async (opts) => {
|
|
1356
|
+
const input = {
|
|
1357
|
+
"duration": opts["duration"],
|
|
1358
|
+
"from": opts["from"] === void 0 ? void 0 : Number(opts["from"]),
|
|
1359
|
+
"sort_by": opts["sort_by"],
|
|
1360
|
+
"sort_order": opts["sort_order"],
|
|
1361
|
+
"filter_smart_followers_operator": opts["filter_smart_followers_operator"],
|
|
1362
|
+
"filter_smart_followers_value": opts["filter_smart_followers_value"] === void 0 ? void 0 : Number(opts["filter_smart_followers_value"]),
|
|
1363
|
+
"user_status": opts["user_status"],
|
|
1364
|
+
"user_tag_individual_or_organization": opts["user_tag_individual_or_organization"],
|
|
1365
|
+
"user_type": opts["user_type"],
|
|
1366
|
+
"user_web3_relevance": opts["user_web3_relevance"]
|
|
1367
|
+
};
|
|
1368
|
+
if (opts["duration"] === void 0) delete input["duration"];
|
|
1369
|
+
if (opts["from"] === void 0 ? void 0 : Number(opts["from"]) === void 0) delete input["from"];
|
|
1370
|
+
if (opts["sort_by"] === void 0) delete input["sort_by"];
|
|
1371
|
+
if (opts["sort_order"] === void 0) delete input["sort_order"];
|
|
1372
|
+
if (opts["filter_smart_followers_operator"] === void 0) delete input["filter_smart_followers_operator"];
|
|
1373
|
+
if (opts["filter_smart_followers_value"] === void 0 ? void 0 : Number(opts["filter_smart_followers_value"]) === void 0) delete input["filter_smart_followers_value"];
|
|
1374
|
+
if (opts["user_status"] === void 0) delete input["user_status"];
|
|
1375
|
+
if (opts["user_tag_individual_or_organization"] === void 0) delete input["user_tag_individual_or_organization"];
|
|
1376
|
+
if (opts["user_type"] === void 0) delete input["user_type"];
|
|
1377
|
+
if (opts["user_web3_relevance"] === void 0) delete input["user_web3_relevance"];
|
|
1378
|
+
await runAndPrint(() => sdk2.data.kaito.marketSmartFollowing(input));
|
|
1379
|
+
});
|
|
1380
|
+
});
|
|
1381
|
+
registerCommand(program2, ["data", "kaito", "smart-followers"], "Auto-generated from sdk.data.kaito.smartFollowers", (cmd) => {
|
|
1382
|
+
cmd.option("--user_id <value>", "Twitter user ID (numeric, as a string). Provide this OR `username`.");
|
|
1383
|
+
cmd.option("--username <value>", "Twitter handle without the `@`. Provide this OR `user_id`.");
|
|
1384
|
+
cmd.option("--date <value>", "ISO 8601 date \u2014 pin the smart-follower snapshot.");
|
|
1385
|
+
cmd.addOption(new Option("--mode <value>", "`count` returns just the number; `users` returns the full list of follower handles. (choices: count, users)").choices(["count", "users"]));
|
|
1386
|
+
cmd.action(async (opts) => {
|
|
1387
|
+
const input = {
|
|
1388
|
+
"user_id": opts["user_id"],
|
|
1389
|
+
"username": opts["username"],
|
|
1390
|
+
"date": opts["date"],
|
|
1391
|
+
"mode": opts["mode"]
|
|
1392
|
+
};
|
|
1393
|
+
if (opts["user_id"] === void 0) delete input["user_id"];
|
|
1394
|
+
if (opts["username"] === void 0) delete input["username"];
|
|
1395
|
+
if (opts["date"] === void 0) delete input["date"];
|
|
1396
|
+
if (opts["mode"] === void 0) delete input["mode"];
|
|
1397
|
+
await runAndPrint(() => sdk2.data.kaito.smartFollowers(input));
|
|
1398
|
+
});
|
|
1399
|
+
});
|
|
1400
|
+
registerCommand(program2, ["data", "kaito", "smart-following"], "Auto-generated from sdk.data.kaito.smartFollowing", (cmd) => {
|
|
1401
|
+
cmd.option("--user_id <value>", "Twitter user ID (numeric, as a string). Provide this OR `username`.");
|
|
1402
|
+
cmd.option("--username <value>", "Twitter handle without the `@`. Provide this OR `user_id`.");
|
|
1403
|
+
cmd.addOption(new Option("--category <value>", "Restrict the followed-by-smart-followers list to a category. (choices: ALL, Organization, Individual)").choices(["ALL", "Organization", "Individual"]));
|
|
1404
|
+
cmd.action(async (opts) => {
|
|
1405
|
+
const input = {
|
|
1406
|
+
"user_id": opts["user_id"],
|
|
1407
|
+
"username": opts["username"],
|
|
1408
|
+
"category": opts["category"]
|
|
1409
|
+
};
|
|
1410
|
+
if (opts["user_id"] === void 0) delete input["user_id"];
|
|
1411
|
+
if (opts["username"] === void 0) delete input["username"];
|
|
1412
|
+
if (opts["category"] === void 0) delete input["category"];
|
|
1413
|
+
await runAndPrint(() => sdk2.data.kaito.smartFollowing(input));
|
|
1414
|
+
});
|
|
1415
|
+
});
|
|
1416
|
+
registerCommand(program2, ["data", "moralis", "wallet"], "Auto-generated from sdk.data.moralis.wallet", (cmd) => {
|
|
1417
|
+
cmd.option("--address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1418
|
+
cmd.option("--chain <value>", "EVM chain \u2014 accepts a friendly name (`eth`, `base`, `polygon`, `arbitrum`, \u2026) or a hex chain id (`0x1`, `0x2105`, \u2026). Defaults to Ethereum mainnet.");
|
|
1419
|
+
cmd.option("--to-block <value>", "Snapshot the wallet at this block height. Omit for the current head.");
|
|
1420
|
+
cmd.action(async (opts) => {
|
|
1421
|
+
const input = {
|
|
1422
|
+
"address": opts["address"],
|
|
1423
|
+
"chain": opts["chain"],
|
|
1424
|
+
"toBlock": opts["toBlock"] === void 0 ? void 0 : Number(opts["toBlock"])
|
|
1425
|
+
};
|
|
1426
|
+
if (opts["address"] === void 0) delete input["address"];
|
|
1427
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
1428
|
+
if (opts["toBlock"] === void 0 ? void 0 : Number(opts["toBlock"]) === void 0) delete input["toBlock"];
|
|
1429
|
+
await runAndPrint(() => sdk2.data.moralis.wallet(input));
|
|
1430
|
+
});
|
|
1431
|
+
});
|
|
1432
|
+
registerCommand(program2, ["data", "moralis", "transfers"], "Auto-generated from sdk.data.moralis.transfers", (cmd) => {
|
|
1433
|
+
cmd.option("--address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1434
|
+
cmd.option("--chain <value>", "EVM chain \u2014 accepts a friendly name (`eth`, `base`, `polygon`, `arbitrum`, \u2026) or a hex chain id (`0x1`, `0x2105`, \u2026). Defaults to Ethereum mainnet.");
|
|
1435
|
+
cmd.option("--limit <value>", "Transfers per page (max 100).");
|
|
1436
|
+
cmd.option("--from-date <value>", "ISO 8601 (or YYYY-MM-DD) start date \u2014 only return transfers after this date.");
|
|
1437
|
+
cmd.option("--to-date <value>", "ISO 8601 (or YYYY-MM-DD) end date \u2014 only return transfers before this date.");
|
|
1438
|
+
cmd.option("--cursor <value>", "Opaque pagination cursor from the previous response. Omit for page 1.");
|
|
1439
|
+
cmd.action(async (opts) => {
|
|
1440
|
+
const input = {
|
|
1441
|
+
"address": opts["address"],
|
|
1442
|
+
"chain": opts["chain"],
|
|
1443
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1444
|
+
"fromDate": opts["fromDate"],
|
|
1445
|
+
"toDate": opts["toDate"],
|
|
1446
|
+
"cursor": opts["cursor"]
|
|
1447
|
+
};
|
|
1448
|
+
if (opts["address"] === void 0) delete input["address"];
|
|
1449
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
1450
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1451
|
+
if (opts["fromDate"] === void 0) delete input["fromDate"];
|
|
1452
|
+
if (opts["toDate"] === void 0) delete input["toDate"];
|
|
1453
|
+
if (opts["cursor"] === void 0) delete input["cursor"];
|
|
1454
|
+
await runAndPrint(() => sdk2.data.moralis.transfers(input));
|
|
1455
|
+
});
|
|
1456
|
+
});
|
|
1457
|
+
registerCommand(program2, ["data", "moralis", "defi-positions"], "Auto-generated from sdk.data.moralis.defiPositions", (cmd) => {
|
|
1458
|
+
cmd.option("--address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1459
|
+
cmd.option("--chain <value>", "EVM chain \u2014 accepts a friendly name (`eth`, `base`, `polygon`, `arbitrum`, \u2026) or a hex chain id (`0x1`, `0x2105`, \u2026). Defaults to Ethereum mainnet.");
|
|
1460
|
+
cmd.action(async (opts) => {
|
|
1461
|
+
const input = {
|
|
1462
|
+
"address": opts["address"],
|
|
1463
|
+
"chain": opts["chain"]
|
|
1464
|
+
};
|
|
1465
|
+
if (opts["address"] === void 0) delete input["address"];
|
|
1466
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
1467
|
+
await runAndPrint(() => sdk2.data.moralis.defiPositions(input));
|
|
1468
|
+
});
|
|
1469
|
+
});
|
|
1470
|
+
registerCommand(program2, ["data", "moralis", "nft-holdings"], "Auto-generated from sdk.data.moralis.nftHoldings", (cmd) => {
|
|
1471
|
+
cmd.option("--address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1472
|
+
cmd.option("--chain <value>", "EVM chain \u2014 accepts a friendly name (`eth`, `base`, `polygon`, `arbitrum`, \u2026) or a hex chain id (`0x1`, `0x2105`, \u2026). Defaults to Ethereum mainnet.");
|
|
1473
|
+
cmd.option("--limit <value>", "NFTs per page (max 100).");
|
|
1474
|
+
cmd.option("--cursor <value>", "Opaque pagination cursor from the previous response. Omit for page 1.");
|
|
1475
|
+
cmd.action(async (opts) => {
|
|
1476
|
+
const input = {
|
|
1477
|
+
"address": opts["address"],
|
|
1478
|
+
"chain": opts["chain"],
|
|
1479
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1480
|
+
"cursor": opts["cursor"]
|
|
1481
|
+
};
|
|
1482
|
+
if (opts["address"] === void 0) delete input["address"];
|
|
1483
|
+
if (opts["chain"] === void 0) delete input["chain"];
|
|
1484
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1485
|
+
if (opts["cursor"] === void 0) delete input["cursor"];
|
|
1486
|
+
await runAndPrint(() => sdk2.data.moralis.nftHoldings(input));
|
|
1487
|
+
});
|
|
1488
|
+
});
|
|
1489
|
+
registerCommand(program2, ["data", "noya", "tokens-search"], "Auto-generated from sdk.data.noya.tokensSearch", (cmd) => {
|
|
1490
|
+
cmd.option("--q <value>", "Free-text search query \u2014 matches token symbol, name, or category.");
|
|
1491
|
+
cmd.option("--limit <value>", "Max tokens to return (1\u2013100).");
|
|
1492
|
+
cmd.option("--signal <value>", "Filter to tokens with a specific Noya signal (e.g. `strong_buy`).");
|
|
1493
|
+
cmd.option("--risk <value>", "Filter to tokens at a specific risk tier (e.g. `low`, `medium`, `high`).");
|
|
1494
|
+
cmd.option("--min-final-score <value>", "Minimum AI final score (0\u2013100).");
|
|
1495
|
+
cmd.option("--max-final-score <value>", "Maximum AI final score (0\u2013100).");
|
|
1496
|
+
cmd.option("--min-market-cap <value>", "Minimum market cap in USD.");
|
|
1497
|
+
cmd.option("--max-market-cap <value>", "Maximum market cap in USD.");
|
|
1498
|
+
cmd.option("--grades <value>", "Comma-separated grade filters (e.g. `A,A+`).");
|
|
1499
|
+
cmd.action(async (opts) => {
|
|
1500
|
+
const input = {
|
|
1501
|
+
"q": opts["q"],
|
|
1502
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1503
|
+
"signal": opts["signal"],
|
|
1504
|
+
"risk": opts["risk"],
|
|
1505
|
+
"minFinalScore": opts["minFinalScore"] === void 0 ? void 0 : Number(opts["minFinalScore"]),
|
|
1506
|
+
"maxFinalScore": opts["maxFinalScore"] === void 0 ? void 0 : Number(opts["maxFinalScore"]),
|
|
1507
|
+
"minMarketCap": opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]),
|
|
1508
|
+
"maxMarketCap": opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"]),
|
|
1509
|
+
"grades": opts["grades"]
|
|
1510
|
+
};
|
|
1511
|
+
if (opts["q"] === void 0) delete input["q"];
|
|
1512
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1513
|
+
if (opts["signal"] === void 0) delete input["signal"];
|
|
1514
|
+
if (opts["risk"] === void 0) delete input["risk"];
|
|
1515
|
+
if (opts["minFinalScore"] === void 0 ? void 0 : Number(opts["minFinalScore"]) === void 0) delete input["minFinalScore"];
|
|
1516
|
+
if (opts["maxFinalScore"] === void 0 ? void 0 : Number(opts["maxFinalScore"]) === void 0) delete input["maxFinalScore"];
|
|
1517
|
+
if (opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]) === void 0) delete input["minMarketCap"];
|
|
1518
|
+
if (opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"]) === void 0) delete input["maxMarketCap"];
|
|
1519
|
+
if (opts["grades"] === void 0) delete input["grades"];
|
|
1520
|
+
await runAndPrint(() => sdk2.data.noya.tokensSearch(input));
|
|
1521
|
+
});
|
|
1522
|
+
});
|
|
1523
|
+
registerCommand(program2, ["data", "noya", "tokens-similar"], "Auto-generated from sdk.data.noya.tokensSimilar", (cmd) => {
|
|
1524
|
+
cmd.option("--token-id <value>", "Noya token ID to find similar tokens for.");
|
|
1525
|
+
cmd.option("--limit <value>", "Max similar tokens to return.");
|
|
1526
|
+
cmd.action(async (opts) => {
|
|
1527
|
+
const input = {
|
|
1528
|
+
"tokenId": opts["tokenId"],
|
|
1529
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1530
|
+
};
|
|
1531
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
1532
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1533
|
+
await runAndPrint(() => sdk2.data.noya.tokensSimilar(input));
|
|
1534
|
+
});
|
|
1535
|
+
});
|
|
1536
|
+
registerCommand(program2, ["data", "noya", "tokens-recommendations"], "Auto-generated from sdk.data.noya.tokensRecommendations", (cmd) => {
|
|
1537
|
+
cmd.addOption(new Option("--risk-tolerance <value>", "Caller's risk profile \u2014 filters the recommendation set accordingly. (choices: conservative, moderate, aggressive)").choices(["conservative", "moderate", "aggressive"]));
|
|
1538
|
+
cmd.option("--min-market-cap <value>", "Minimum market cap in USD.");
|
|
1539
|
+
cmd.option("--max-market-cap <value>", "Maximum market cap in USD.");
|
|
1540
|
+
cmd.option("--query <value>", "Optional free-text query to bias recommendations toward.");
|
|
1541
|
+
cmd.option("--limit <value>", "Max tokens to recommend (1\u2013100).");
|
|
1542
|
+
cmd.action(async (opts) => {
|
|
1543
|
+
const input = {
|
|
1544
|
+
"riskTolerance": opts["riskTolerance"],
|
|
1545
|
+
"minMarketCap": opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]),
|
|
1546
|
+
"maxMarketCap": opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"]),
|
|
1547
|
+
"query": opts["query"],
|
|
1548
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1549
|
+
};
|
|
1550
|
+
if (opts["riskTolerance"] === void 0) delete input["riskTolerance"];
|
|
1551
|
+
if (opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]) === void 0) delete input["minMarketCap"];
|
|
1552
|
+
if (opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"]) === void 0) delete input["maxMarketCap"];
|
|
1553
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
1554
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1555
|
+
await runAndPrint(() => sdk2.data.noya.tokensRecommendations(input));
|
|
1556
|
+
});
|
|
1557
|
+
});
|
|
1558
|
+
registerCommand(program2, ["data", "noya", "tokens-top-score"], "Auto-generated from sdk.data.noya.tokensTopScore", (cmd) => {
|
|
1559
|
+
cmd.option("--limit <value>", "Number of top tokens to return.");
|
|
1560
|
+
cmd.option("--grades <value>", "Comma-separated grade filters (e.g. `A,A+`).");
|
|
1561
|
+
cmd.option("--min-catalyst-score <value>", "Minimum AI catalyst score (0\u2013100).");
|
|
1562
|
+
cmd.option("--min-market-cap <value>", "Minimum market cap in USD.");
|
|
1563
|
+
cmd.option("--max-market-cap <value>", "Maximum market cap in USD.");
|
|
1564
|
+
cmd.action(async (opts) => {
|
|
1565
|
+
const input = {
|
|
1566
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1567
|
+
"grades": opts["grades"],
|
|
1568
|
+
"minCatalystScore": opts["minCatalystScore"] === void 0 ? void 0 : Number(opts["minCatalystScore"]),
|
|
1569
|
+
"minMarketCap": opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]),
|
|
1570
|
+
"maxMarketCap": opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"])
|
|
1571
|
+
};
|
|
1572
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1573
|
+
if (opts["grades"] === void 0) delete input["grades"];
|
|
1574
|
+
if (opts["minCatalystScore"] === void 0 ? void 0 : Number(opts["minCatalystScore"]) === void 0) delete input["minCatalystScore"];
|
|
1575
|
+
if (opts["minMarketCap"] === void 0 ? void 0 : Number(opts["minMarketCap"]) === void 0) delete input["minMarketCap"];
|
|
1576
|
+
if (opts["maxMarketCap"] === void 0 ? void 0 : Number(opts["maxMarketCap"]) === void 0) delete input["maxMarketCap"];
|
|
1577
|
+
await runAndPrint(() => sdk2.data.noya.tokensTopScore(input));
|
|
1578
|
+
});
|
|
1579
|
+
});
|
|
1580
|
+
registerCommand(program2, ["data", "noya", "tokens-health"], "Auto-generated from sdk.data.noya.tokensHealth", (cmd) => {
|
|
1581
|
+
cmd.action(async () => {
|
|
1582
|
+
await runAndPrint(() => sdk2.data.noya.tokensHealth());
|
|
1583
|
+
});
|
|
1584
|
+
});
|
|
1585
|
+
registerCommand(program2, ["data", "noya", "tokens-versions"], "Auto-generated from sdk.data.noya.tokensVersions", (cmd) => {
|
|
1586
|
+
cmd.action(async () => {
|
|
1587
|
+
await runAndPrint(() => sdk2.data.noya.tokensVersions());
|
|
1588
|
+
});
|
|
1589
|
+
});
|
|
1590
|
+
registerCommand(program2, ["data", "noya", "tokens-by-version"], "Auto-generated from sdk.data.noya.tokensByVersion", (cmd) => {
|
|
1591
|
+
cmd.option("--version-id <value>", "Specific Noya analysis version ID. Defaults to the latest.");
|
|
1592
|
+
cmd.option("--signal <value>", "Filter to a specific signal value.");
|
|
1593
|
+
cmd.option("--risk <value>", "Filter to a specific risk tier.");
|
|
1594
|
+
cmd.option("--sort <value>", "Field name to sort by (e.g. `marketCap`, `aiFinal`).");
|
|
1595
|
+
cmd.addOption(new Option("--order <value>", "Sort direction. (choices: asc, desc)").choices(["asc", "desc"]));
|
|
1596
|
+
cmd.action(async (opts) => {
|
|
1597
|
+
const input = {
|
|
1598
|
+
"versionId": opts["versionId"] === void 0 ? void 0 : Number(opts["versionId"]),
|
|
1599
|
+
"signal": opts["signal"],
|
|
1600
|
+
"risk": opts["risk"],
|
|
1601
|
+
"sort": opts["sort"],
|
|
1602
|
+
"order": opts["order"]
|
|
1603
|
+
};
|
|
1604
|
+
if (opts["versionId"] === void 0 ? void 0 : Number(opts["versionId"]) === void 0) delete input["versionId"];
|
|
1605
|
+
if (opts["signal"] === void 0) delete input["signal"];
|
|
1606
|
+
if (opts["risk"] === void 0) delete input["risk"];
|
|
1607
|
+
if (opts["sort"] === void 0) delete input["sort"];
|
|
1608
|
+
if (opts["order"] === void 0) delete input["order"];
|
|
1609
|
+
await runAndPrint(() => sdk2.data.noya.tokensByVersion(input));
|
|
1610
|
+
});
|
|
1611
|
+
});
|
|
1612
|
+
registerCommand(program2, ["data", "noya", "tokens-detail"], "Auto-generated from sdk.data.noya.tokensDetail", (cmd) => {
|
|
1613
|
+
cmd.option("--version-id <value>", "Specific Noya analysis version. Defaults to the latest.");
|
|
1614
|
+
cmd.option("--symbol <value>", "Token symbol (e.g. `BTC`, `ETH`).");
|
|
1615
|
+
cmd.action(async (opts) => {
|
|
1616
|
+
const input = {
|
|
1617
|
+
"versionId": opts["versionId"] === void 0 ? void 0 : Number(opts["versionId"]),
|
|
1618
|
+
"symbol": opts["symbol"]
|
|
1619
|
+
};
|
|
1620
|
+
if (opts["versionId"] === void 0 ? void 0 : Number(opts["versionId"]) === void 0) delete input["versionId"];
|
|
1621
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
1622
|
+
await runAndPrint(() => sdk2.data.noya.tokensDetail(input));
|
|
1623
|
+
});
|
|
1624
|
+
});
|
|
1625
|
+
registerCommand(program2, ["data", "noya", "polymarket-search"], "Auto-generated from sdk.data.noya.polymarketSearch", (cmd) => {
|
|
1626
|
+
cmd.option("--q <value>", "Free-text search query \u2014 matches market question, description, and tags.");
|
|
1627
|
+
cmd.option("--limit <value>", "Max markets to return (1\u2013100).");
|
|
1628
|
+
cmd.action(async (opts) => {
|
|
1629
|
+
const input = {
|
|
1630
|
+
"q": opts["q"],
|
|
1631
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1632
|
+
};
|
|
1633
|
+
if (opts["q"] === void 0) delete input["q"];
|
|
1634
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1635
|
+
await runAndPrint(() => sdk2.data.noya.polymarketSearch(input));
|
|
1636
|
+
});
|
|
1637
|
+
});
|
|
1638
|
+
registerCommand(program2, ["data", "noya", "polymarket-similar"], "Auto-generated from sdk.data.noya.polymarketSimilar", (cmd) => {
|
|
1639
|
+
cmd.option("--condition-id <value>", "Polymarket condition ID (or event ID, depending on `type`) to find similar items for.");
|
|
1640
|
+
cmd.option("--limit <value>", "Max similar items to return.");
|
|
1641
|
+
cmd.addOption(new Option("--type <value>", "Whether `conditionId` refers to a market or an event. (choices: market, event)").choices(["market", "event"]));
|
|
1642
|
+
cmd.action(async (opts) => {
|
|
1643
|
+
const input = {
|
|
1644
|
+
"conditionId": opts["conditionId"],
|
|
1645
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1646
|
+
"type": opts["type"]
|
|
1647
|
+
};
|
|
1648
|
+
if (opts["conditionId"] === void 0) delete input["conditionId"];
|
|
1649
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1650
|
+
if (opts["type"] === void 0) delete input["type"];
|
|
1651
|
+
await runAndPrint(() => sdk2.data.noya.polymarketSimilar(input));
|
|
1652
|
+
});
|
|
1653
|
+
});
|
|
1654
|
+
registerCommand(program2, ["data", "noya", "polymarket-recommendations"], "Auto-generated from sdk.data.noya.polymarketRecommendations", (cmd) => {
|
|
1655
|
+
cmd.addOption(new Option("--risk-tolerance <value>", "Caller's risk profile. (choices: conservative, moderate, aggressive)").choices(["conservative", "moderate", "aggressive"]));
|
|
1656
|
+
cmd.option("--preferred-tags <value>", "Bias toward markets carrying any of these tags.");
|
|
1657
|
+
cmd.option("--preferred-categories <value>", "Bias toward markets in these categories.");
|
|
1658
|
+
cmd.option("--min-days-until-close <value>", "Minimum days until the market resolves.");
|
|
1659
|
+
cmd.option("--max-days-until-close <value>", "Maximum days until the market resolves.");
|
|
1660
|
+
cmd.option("--min-liquidity <value>", "Minimum on-book liquidity in USD.");
|
|
1661
|
+
cmd.option("--min-volume24h <value>", "Minimum 24h volume in USD.");
|
|
1662
|
+
cmd.option("--query <value>", "Optional free-text query to bias recommendations toward.");
|
|
1663
|
+
cmd.option("--limit <value>", "Max markets to recommend.");
|
|
1664
|
+
cmd.action(async (opts) => {
|
|
1665
|
+
const input = {
|
|
1666
|
+
"riskTolerance": opts["riskTolerance"],
|
|
1667
|
+
"preferredTags": opts["preferredTags"] === void 0 ? void 0 : String(opts["preferredTags"]).split(","),
|
|
1668
|
+
"preferredCategories": opts["preferredCategories"] === void 0 ? void 0 : String(opts["preferredCategories"]).split(","),
|
|
1669
|
+
"minDaysUntilClose": opts["minDaysUntilClose"] === void 0 ? void 0 : Number(opts["minDaysUntilClose"]),
|
|
1670
|
+
"maxDaysUntilClose": opts["maxDaysUntilClose"] === void 0 ? void 0 : Number(opts["maxDaysUntilClose"]),
|
|
1671
|
+
"minLiquidity": opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]),
|
|
1672
|
+
"minVolume24h": opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"]),
|
|
1673
|
+
"query": opts["query"],
|
|
1674
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1675
|
+
};
|
|
1676
|
+
if (opts["riskTolerance"] === void 0) delete input["riskTolerance"];
|
|
1677
|
+
if (opts["preferredTags"] === void 0 ? void 0 : String(opts["preferredTags"]).split(",") === void 0) delete input["preferredTags"];
|
|
1678
|
+
if (opts["preferredCategories"] === void 0 ? void 0 : String(opts["preferredCategories"]).split(",") === void 0) delete input["preferredCategories"];
|
|
1679
|
+
if (opts["minDaysUntilClose"] === void 0 ? void 0 : Number(opts["minDaysUntilClose"]) === void 0) delete input["minDaysUntilClose"];
|
|
1680
|
+
if (opts["maxDaysUntilClose"] === void 0 ? void 0 : Number(opts["maxDaysUntilClose"]) === void 0) delete input["maxDaysUntilClose"];
|
|
1681
|
+
if (opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]) === void 0) delete input["minLiquidity"];
|
|
1682
|
+
if (opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"]) === void 0) delete input["minVolume24h"];
|
|
1683
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
1684
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1685
|
+
await runAndPrint(() => sdk2.data.noya.polymarketRecommendations(input));
|
|
1686
|
+
});
|
|
1687
|
+
});
|
|
1688
|
+
registerCommand(program2, ["data", "noya", "polymarket-top-ev"], "Auto-generated from sdk.data.noya.polymarketTopEv", (cmd) => {
|
|
1689
|
+
cmd.option("--limit <value>", "Number of top markets to return.");
|
|
1690
|
+
cmd.option("--min-liquidity <value>", "Minimum on-book liquidity in USD.");
|
|
1691
|
+
cmd.option("--min-volume24h <value>", "Minimum 24h volume in USD.");
|
|
1692
|
+
cmd.option("--tags <value>", "Comma-separated tag filter.");
|
|
1693
|
+
cmd.action(async (opts) => {
|
|
1694
|
+
const input = {
|
|
1695
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1696
|
+
"minLiquidity": opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]),
|
|
1697
|
+
"minVolume24h": opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"]),
|
|
1698
|
+
"tags": opts["tags"]
|
|
1699
|
+
};
|
|
1700
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1701
|
+
if (opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]) === void 0) delete input["minLiquidity"];
|
|
1702
|
+
if (opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"]) === void 0) delete input["minVolume24h"];
|
|
1703
|
+
if (opts["tags"] === void 0) delete input["tags"];
|
|
1704
|
+
await runAndPrint(() => sdk2.data.noya.polymarketTopEv(input));
|
|
1705
|
+
});
|
|
1706
|
+
});
|
|
1707
|
+
registerCommand(program2, ["data", "noya", "polymarket-filter"], "Auto-generated from sdk.data.noya.polymarketFilter", (cmd) => {
|
|
1708
|
+
cmd.option("--q <value>", "Free-text search query \u2014 required by the upstream filter endpoint.");
|
|
1709
|
+
cmd.option("--limit <value>", "Max results.");
|
|
1710
|
+
cmd.option("--tags <value>", "Comma-separated tag filter.");
|
|
1711
|
+
cmd.option("--category <value>", "Restrict to a single category.");
|
|
1712
|
+
cmd.option("--active", "Filter to active (non-resolved) markets.");
|
|
1713
|
+
cmd.option("--min-liquidity <value>", "Minimum on-book liquidity in USD.");
|
|
1714
|
+
cmd.option("--min-volume24h <value>", "Minimum 24h volume in USD.");
|
|
1715
|
+
cmd.action(async (opts) => {
|
|
1716
|
+
const input = {
|
|
1717
|
+
"q": opts["q"],
|
|
1718
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1719
|
+
"tags": opts["tags"],
|
|
1720
|
+
"category": opts["category"],
|
|
1721
|
+
"active": opts["active"] === void 0 ? void 0 : Boolean(opts["active"]),
|
|
1722
|
+
"minLiquidity": opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]),
|
|
1723
|
+
"minVolume24h": opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"])
|
|
1724
|
+
};
|
|
1725
|
+
if (opts["q"] === void 0) delete input["q"];
|
|
1726
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1727
|
+
if (opts["tags"] === void 0) delete input["tags"];
|
|
1728
|
+
if (opts["category"] === void 0) delete input["category"];
|
|
1729
|
+
if (opts["active"] === void 0 ? void 0 : Boolean(opts["active"]) === void 0) delete input["active"];
|
|
1730
|
+
if (opts["minLiquidity"] === void 0 ? void 0 : Number(opts["minLiquidity"]) === void 0) delete input["minLiquidity"];
|
|
1731
|
+
if (opts["minVolume24h"] === void 0 ? void 0 : Number(opts["minVolume24h"]) === void 0) delete input["minVolume24h"];
|
|
1732
|
+
await runAndPrint(() => sdk2.data.noya.polymarketFilter(input));
|
|
1733
|
+
});
|
|
1734
|
+
});
|
|
1735
|
+
registerCommand(program2, ["data", "noya", "polymarket-events"], "Auto-generated from sdk.data.noya.polymarketEvents", (cmd) => {
|
|
1736
|
+
cmd.option("--limit <value>", "Max events to return (1\u2013200).");
|
|
1737
|
+
cmd.action(async (opts) => {
|
|
1738
|
+
const input = {
|
|
1739
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1740
|
+
};
|
|
1741
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1742
|
+
await runAndPrint(() => sdk2.data.noya.polymarketEvents(input));
|
|
1743
|
+
});
|
|
1744
|
+
});
|
|
1745
|
+
registerCommand(program2, ["data", "noya", "polymarket-by-event"], "Auto-generated from sdk.data.noya.polymarketByEvent", (cmd) => {
|
|
1746
|
+
cmd.option("--event-slug <value>", "Polymarket event slug (URL fragment, e.g. `2024-presidential-election`).");
|
|
1747
|
+
cmd.option("--limit <value>", "Max markets per event to return.");
|
|
1748
|
+
cmd.action(async (opts) => {
|
|
1749
|
+
const input = {
|
|
1750
|
+
"eventSlug": opts["eventSlug"],
|
|
1751
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1752
|
+
};
|
|
1753
|
+
if (opts["eventSlug"] === void 0) delete input["eventSlug"];
|
|
1754
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1755
|
+
await runAndPrint(() => sdk2.data.noya.polymarketByEvent(input));
|
|
1756
|
+
});
|
|
1757
|
+
});
|
|
1758
|
+
registerCommand(program2, ["data", "noya", "polymarket-tags"], "Auto-generated from sdk.data.noya.polymarketTags", (cmd) => {
|
|
1759
|
+
cmd.addOption(new Option("--type <value>", "Restrict tag list to those used on markets or events. Returns both when omitted. (choices: market, event)").choices(["market", "event"]));
|
|
1760
|
+
cmd.action(async (opts) => {
|
|
1761
|
+
const input = {
|
|
1762
|
+
"type": opts["type"]
|
|
1763
|
+
};
|
|
1764
|
+
if (opts["type"] === void 0) delete input["type"];
|
|
1765
|
+
await runAndPrint(() => sdk2.data.noya.polymarketTags(input));
|
|
1766
|
+
});
|
|
1767
|
+
});
|
|
1768
|
+
registerCommand(program2, ["data", "noya", "polymarket-health"], "Auto-generated from sdk.data.noya.polymarketHealth", (cmd) => {
|
|
1769
|
+
cmd.action(async () => {
|
|
1770
|
+
await runAndPrint(() => sdk2.data.noya.polymarketHealth());
|
|
1771
|
+
});
|
|
1772
|
+
});
|
|
1773
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-versions"], "Auto-generated from sdk.data.noya.polymarketAnalysisVersions", (cmd) => {
|
|
1774
|
+
cmd.option("--limit <value>", "Max versions to list.");
|
|
1775
|
+
cmd.option("--offset <value>", "Pagination offset.");
|
|
1776
|
+
cmd.action(async (opts) => {
|
|
1777
|
+
const input = {
|
|
1778
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1779
|
+
"offset": opts["offset"] === void 0 ? void 0 : Number(opts["offset"])
|
|
1780
|
+
};
|
|
1781
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1782
|
+
if (opts["offset"] === void 0 ? void 0 : Number(opts["offset"]) === void 0) delete input["offset"];
|
|
1783
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisVersions(input));
|
|
1784
|
+
});
|
|
1785
|
+
});
|
|
1786
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-latest"], "Auto-generated from sdk.data.noya.polymarketAnalysisLatest", (cmd) => {
|
|
1787
|
+
cmd.action(async () => {
|
|
1788
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisLatest());
|
|
1789
|
+
});
|
|
1790
|
+
});
|
|
1791
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-events"], "Auto-generated from sdk.data.noya.polymarketAnalysisEvents", (cmd) => {
|
|
1792
|
+
cmd.option("--version <value>", "Analysis batch version. `latest` for the most recent run, or a numeric version ID for a specific batch.");
|
|
1793
|
+
cmd.option("--tag <value>", "Filter events to those carrying a specific tag.");
|
|
1794
|
+
cmd.addOption(new Option("--signal <value>", "Noya analysis signal classification. (choices: strong_buy, buy, hold, sell, strong_sell, none)").choices(["strong_buy", "buy", "hold", "sell", "strong_sell", "none"]));
|
|
1795
|
+
cmd.option("--limit <value>", "Max events to return.");
|
|
1796
|
+
cmd.option("--offset <value>", "Pagination offset.");
|
|
1797
|
+
cmd.action(async (opts) => {
|
|
1798
|
+
const input = {
|
|
1799
|
+
"version": opts["version"] === void 0 ? void 0 : JSON.parse(String(opts["version"])),
|
|
1800
|
+
"tag": opts["tag"],
|
|
1801
|
+
"signal": opts["signal"],
|
|
1802
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
1803
|
+
"offset": opts["offset"] === void 0 ? void 0 : Number(opts["offset"])
|
|
1804
|
+
};
|
|
1805
|
+
if (opts["version"] === void 0 ? void 0 : JSON.parse(String(opts["version"])) === void 0) delete input["version"];
|
|
1806
|
+
if (opts["tag"] === void 0) delete input["tag"];
|
|
1807
|
+
if (opts["signal"] === void 0) delete input["signal"];
|
|
1808
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1809
|
+
if (opts["offset"] === void 0 ? void 0 : Number(opts["offset"]) === void 0) delete input["offset"];
|
|
1810
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisEvents(input));
|
|
1811
|
+
});
|
|
1812
|
+
});
|
|
1813
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-event-history"], "Auto-generated from sdk.data.noya.polymarketAnalysisEventHistory", (cmd) => {
|
|
1814
|
+
cmd.option("--event-id <value>", "Polymarket event ID to fetch the analysis history for.");
|
|
1815
|
+
cmd.action(async (opts) => {
|
|
1816
|
+
const input = {
|
|
1817
|
+
"eventId": opts["eventId"]
|
|
1818
|
+
};
|
|
1819
|
+
if (opts["eventId"] === void 0) delete input["eventId"];
|
|
1820
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisEventHistory(input));
|
|
1821
|
+
});
|
|
1822
|
+
});
|
|
1823
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-market-history"], "Auto-generated from sdk.data.noya.polymarketAnalysisMarketHistory", (cmd) => {
|
|
1824
|
+
cmd.option("--condition-id <value>", "Polymarket condition ID to fetch the analysis history for.");
|
|
1825
|
+
cmd.action(async (opts) => {
|
|
1826
|
+
const input = {
|
|
1827
|
+
"conditionId": opts["conditionId"]
|
|
1828
|
+
};
|
|
1829
|
+
if (opts["conditionId"] === void 0) delete input["conditionId"];
|
|
1830
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisMarketHistory(input));
|
|
1831
|
+
});
|
|
1832
|
+
});
|
|
1833
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-top"], "Auto-generated from sdk.data.noya.polymarketAnalysisTop", (cmd) => {
|
|
1834
|
+
cmd.option("--version <value>", "Analysis batch version. `latest` for the most recent run, or a numeric version ID for a specific batch.");
|
|
1835
|
+
cmd.addOption(new Option("--by <value>", "Ranking metric. (choices: ev_percentage, confidence, signal_strength)").choices(["ev_percentage", "confidence", "signal_strength"]));
|
|
1836
|
+
cmd.addOption(new Option("--signal <value>", "Noya analysis signal classification. (choices: strong_buy, buy, hold, sell, strong_sell, none)").choices(["strong_buy", "buy", "hold", "sell", "strong_sell", "none"]));
|
|
1837
|
+
cmd.option("--limit <value>", "Max markets to return.");
|
|
1838
|
+
cmd.action(async (opts) => {
|
|
1839
|
+
const input = {
|
|
1840
|
+
"version": opts["version"] === void 0 ? void 0 : JSON.parse(String(opts["version"])),
|
|
1841
|
+
"by": opts["by"],
|
|
1842
|
+
"signal": opts["signal"],
|
|
1843
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
1844
|
+
};
|
|
1845
|
+
if (opts["version"] === void 0 ? void 0 : JSON.parse(String(opts["version"])) === void 0) delete input["version"];
|
|
1846
|
+
if (opts["by"] === void 0) delete input["by"];
|
|
1847
|
+
if (opts["signal"] === void 0) delete input["signal"];
|
|
1848
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
1849
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisTop(input));
|
|
1850
|
+
});
|
|
1851
|
+
});
|
|
1852
|
+
registerCommand(program2, ["data", "noya", "polymarket-analysis-health"], "Auto-generated from sdk.data.noya.polymarketAnalysisHealth", (cmd) => {
|
|
1853
|
+
cmd.action(async () => {
|
|
1854
|
+
await runAndPrint(() => sdk2.data.noya.polymarketAnalysisHealth());
|
|
1855
|
+
});
|
|
1856
|
+
});
|
|
1857
|
+
registerCommand(program2, ["account", "polymarket-address"], "Derive the Polymarket Safe address (CREATE2) for the user's EOA. Mirrors `noya_get_polymarket_address` MCP tool \u2014 pure local derivation, no network call beyond the one /api/me to resolve the EOA", (cmd) => {
|
|
1858
|
+
cmd.action(async () => {
|
|
1859
|
+
await runAndPrint(() => sdk2.account.polymarketAddress());
|
|
1860
|
+
});
|
|
1861
|
+
});
|
|
1862
|
+
registerCommand(program2, ["account", "address"], "Resolved Ethereum address from /api/me. Throws if anonymous", (cmd) => {
|
|
1863
|
+
cmd.action(async () => {
|
|
1864
|
+
await runAndPrint(() => sdk2.account.address());
|
|
1865
|
+
});
|
|
1866
|
+
});
|
|
1867
|
+
registerCommand(program2, ["account", "sign-message"], "Auto-generated from sdk.account.signMessage", (cmd) => {
|
|
1868
|
+
cmd.option("--message <value>", "Message to sign. Plain UTF-8 string \u2014 signer prefixes the EIP-191 envelope automatically.");
|
|
1869
|
+
cmd.action(async (opts) => {
|
|
1870
|
+
const input = {
|
|
1871
|
+
"message": opts["message"]
|
|
1872
|
+
};
|
|
1873
|
+
if (opts["message"] === void 0) delete input["message"];
|
|
1874
|
+
await runAndPrint(() => sdk2.account.signMessage(input));
|
|
1875
|
+
});
|
|
1876
|
+
});
|
|
1877
|
+
registerCommand(program2, ["account", "sign-transaction"], "Auto-generated from sdk.account.signTransaction", (cmd) => {
|
|
1878
|
+
cmd.option("--chain-id <value>", "EVM chain ID. Required for EIP-1559 / EIP-2930 / EIP-4844 transactions.");
|
|
1879
|
+
cmd.addOption(new Option("--type <value>", "Transaction envelope type. viem infers from the populated fields when omitted. (choices: legacy, eip2930, eip1559, eip4844, eip7702)").choices(["legacy", "eip2930", "eip1559", "eip4844", "eip7702"]));
|
|
1880
|
+
cmd.option("--nonce <value>", "Sender's nonce. viem fetches the next free one when omitted.");
|
|
1881
|
+
cmd.option("--to <value>", "Destination address. Omit for contract deployment.");
|
|
1882
|
+
cmd.option("--value <value>", "Native-token amount in wei. Accepts string, number, or bigint.");
|
|
1883
|
+
cmd.option("--data <value>", "Calldata (hex). Empty for native transfers.");
|
|
1884
|
+
cmd.option("--gas <value>", "Gas limit. viem estimates when omitted.");
|
|
1885
|
+
cmd.option("--gas-price <value>", "Legacy gas price (wei). Mutually exclusive with EIP-1559 fields.");
|
|
1886
|
+
cmd.option("--max-fee-per-gas <value>", "EIP-1559 max fee per gas (wei).");
|
|
1887
|
+
cmd.option("--max-priority-fee-per-gas <value>", "EIP-1559 max priority fee (tip) per gas (wei).");
|
|
1888
|
+
cmd.option("--access-list <value>", "EIP-2930 access list.");
|
|
1889
|
+
cmd.action(async (opts) => {
|
|
1890
|
+
const input = {
|
|
1891
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
1892
|
+
"type": opts["type"],
|
|
1893
|
+
"nonce": opts["nonce"] === void 0 ? void 0 : Number(opts["nonce"]),
|
|
1894
|
+
"to": opts["to"],
|
|
1895
|
+
"value": opts["value"] === void 0 ? void 0 : JSON.parse(String(opts["value"])),
|
|
1896
|
+
"data": opts["data"],
|
|
1897
|
+
"gas": opts["gas"] === void 0 ? void 0 : JSON.parse(String(opts["gas"])),
|
|
1898
|
+
"gasPrice": opts["gasPrice"] === void 0 ? void 0 : JSON.parse(String(opts["gasPrice"])),
|
|
1899
|
+
"maxFeePerGas": opts["maxFeePerGas"] === void 0 ? void 0 : JSON.parse(String(opts["maxFeePerGas"])),
|
|
1900
|
+
"maxPriorityFeePerGas": opts["maxPriorityFeePerGas"] === void 0 ? void 0 : JSON.parse(String(opts["maxPriorityFeePerGas"])),
|
|
1901
|
+
"accessList": opts["accessList"] === void 0 ? void 0 : String(opts["accessList"]).split(",")
|
|
1902
|
+
};
|
|
1903
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
1904
|
+
if (opts["type"] === void 0) delete input["type"];
|
|
1905
|
+
if (opts["nonce"] === void 0 ? void 0 : Number(opts["nonce"]) === void 0) delete input["nonce"];
|
|
1906
|
+
if (opts["to"] === void 0) delete input["to"];
|
|
1907
|
+
if (opts["value"] === void 0 ? void 0 : JSON.parse(String(opts["value"])) === void 0) delete input["value"];
|
|
1908
|
+
if (opts["data"] === void 0) delete input["data"];
|
|
1909
|
+
if (opts["gas"] === void 0 ? void 0 : JSON.parse(String(opts["gas"])) === void 0) delete input["gas"];
|
|
1910
|
+
if (opts["gasPrice"] === void 0 ? void 0 : JSON.parse(String(opts["gasPrice"])) === void 0) delete input["gasPrice"];
|
|
1911
|
+
if (opts["maxFeePerGas"] === void 0 ? void 0 : JSON.parse(String(opts["maxFeePerGas"])) === void 0) delete input["maxFeePerGas"];
|
|
1912
|
+
if (opts["maxPriorityFeePerGas"] === void 0 ? void 0 : JSON.parse(String(opts["maxPriorityFeePerGas"])) === void 0) delete input["maxPriorityFeePerGas"];
|
|
1913
|
+
if (opts["accessList"] === void 0 ? void 0 : String(opts["accessList"]).split(",") === void 0) delete input["accessList"];
|
|
1914
|
+
await runAndPrint(() => sdk2.account.signTransaction(input));
|
|
1915
|
+
});
|
|
1916
|
+
});
|
|
1917
|
+
registerCommand(program2, ["account", "sign-typed-data"], "Auto-generated from sdk.account.signTypedData", (cmd) => {
|
|
1918
|
+
cmd.option("--domain <value>", "EIP-712 domain separator (`name`, `version`, `chainId`, `verifyingContract`, `salt`).");
|
|
1919
|
+
cmd.option("--types <value>", "Map of struct name \u2192 field definitions, per EIP-712. Must include the `primaryType` struct.");
|
|
1920
|
+
cmd.option("--primary-type <value>", "Name of the root struct in `types` to sign.");
|
|
1921
|
+
cmd.option("--message <value>", "Concrete values matching the `primaryType` struct.");
|
|
1922
|
+
cmd.action(async (opts) => {
|
|
1923
|
+
const input = {
|
|
1924
|
+
"domain": opts["domain"] === void 0 ? void 0 : JSON.parse(String(opts["domain"])),
|
|
1925
|
+
"types": opts["types"] === void 0 ? void 0 : JSON.parse(String(opts["types"])),
|
|
1926
|
+
"primaryType": opts["primaryType"],
|
|
1927
|
+
"message": opts["message"] === void 0 ? void 0 : JSON.parse(String(opts["message"]))
|
|
1928
|
+
};
|
|
1929
|
+
if (opts["domain"] === void 0 ? void 0 : JSON.parse(String(opts["domain"])) === void 0) delete input["domain"];
|
|
1930
|
+
if (opts["types"] === void 0 ? void 0 : JSON.parse(String(opts["types"])) === void 0) delete input["types"];
|
|
1931
|
+
if (opts["primaryType"] === void 0) delete input["primaryType"];
|
|
1932
|
+
if (opts["message"] === void 0 ? void 0 : JSON.parse(String(opts["message"])) === void 0) delete input["message"];
|
|
1933
|
+
await runAndPrint(() => sdk2.account.signTypedData(input));
|
|
1934
|
+
});
|
|
1935
|
+
});
|
|
1936
|
+
registerCommand(program2, ["account", "to-viem"], "Returns a viem `LocalAccount` whose signing methods POST to signer. Memoized \u2014 same Account instance always returns the same viem account", (cmd) => {
|
|
1937
|
+
cmd.action(async () => {
|
|
1938
|
+
await runAndPrint(() => sdk2.account.toViem());
|
|
1939
|
+
});
|
|
1940
|
+
});
|
|
1941
|
+
registerCommand(program2, ["chain", "wallet", "get-wallet-details"], "Auto-generated from sdk.chain.wallet.getWalletDetails", (cmd) => {
|
|
1942
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
1943
|
+
cmd.action(async (opts) => {
|
|
1944
|
+
const input = {
|
|
1945
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"])
|
|
1946
|
+
};
|
|
1947
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
1948
|
+
await runAndPrint(() => sdk2.chain.wallet.getWalletDetails(input));
|
|
1949
|
+
});
|
|
1950
|
+
});
|
|
1951
|
+
registerCommand(program2, ["chain", "wallet", "native-transfer"], "Auto-generated from sdk.chain.wallet.nativeTransfer", (cmd) => {
|
|
1952
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
1953
|
+
cmd.option("--to <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1954
|
+
cmd.option("--value <value>", "Amount of native token (ETH/MATIC/etc.) to send, in whole units.");
|
|
1955
|
+
cmd.action(async (opts) => {
|
|
1956
|
+
const input = {
|
|
1957
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
1958
|
+
"to": opts["to"],
|
|
1959
|
+
"value": opts["value"]
|
|
1960
|
+
};
|
|
1961
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
1962
|
+
if (opts["to"] === void 0) delete input["to"];
|
|
1963
|
+
if (opts["value"] === void 0) delete input["value"];
|
|
1964
|
+
await runAndPrint(() => sdk2.chain.wallet.nativeTransfer(input));
|
|
1965
|
+
});
|
|
1966
|
+
});
|
|
1967
|
+
registerCommand(program2, ["chain", "erc20", "get-balance"], "Auto-generated from sdk.chain.erc20.getBalance", (cmd) => {
|
|
1968
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
1969
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1970
|
+
cmd.action(async (opts) => {
|
|
1971
|
+
const input = {
|
|
1972
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
1973
|
+
"contractAddress": opts["contractAddress"]
|
|
1974
|
+
};
|
|
1975
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
1976
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
1977
|
+
await runAndPrint(() => sdk2.chain.erc20.getBalance(input));
|
|
1978
|
+
});
|
|
1979
|
+
});
|
|
1980
|
+
registerCommand(program2, ["chain", "erc20", "get-allowance"], "Auto-generated from sdk.chain.erc20.getAllowance", (cmd) => {
|
|
1981
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
1982
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1983
|
+
cmd.option("--spender <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
1984
|
+
cmd.action(async (opts) => {
|
|
1985
|
+
const input = {
|
|
1986
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
1987
|
+
"contractAddress": opts["contractAddress"],
|
|
1988
|
+
"spender": opts["spender"]
|
|
1989
|
+
};
|
|
1990
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
1991
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
1992
|
+
if (opts["spender"] === void 0) delete input["spender"];
|
|
1993
|
+
await runAndPrint(() => sdk2.chain.erc20.getAllowance(input));
|
|
1994
|
+
});
|
|
1995
|
+
});
|
|
1996
|
+
registerCommand(program2, ["chain", "erc20", "get-erc20-token-address"], "Auto-generated from sdk.chain.erc20.getErc20TokenAddress", (cmd) => {
|
|
1997
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
1998
|
+
cmd.option("--symbol <value>", "Token symbol to look up (e.g. `USDC`, `WETH`).");
|
|
1999
|
+
cmd.action(async (opts) => {
|
|
2000
|
+
const input = {
|
|
2001
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2002
|
+
"symbol": opts["symbol"]
|
|
2003
|
+
};
|
|
2004
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2005
|
+
if (opts["symbol"] === void 0) delete input["symbol"];
|
|
2006
|
+
await runAndPrint(() => sdk2.chain.erc20.getErc20TokenAddress(input));
|
|
2007
|
+
});
|
|
2008
|
+
});
|
|
2009
|
+
registerCommand(program2, ["chain", "erc20", "transfer"], "Auto-generated from sdk.chain.erc20.transfer", (cmd) => {
|
|
2010
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2011
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2012
|
+
cmd.option("--destination <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2013
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2014
|
+
cmd.action(async (opts) => {
|
|
2015
|
+
const input = {
|
|
2016
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2017
|
+
"contractAddress": opts["contractAddress"],
|
|
2018
|
+
"destination": opts["destination"],
|
|
2019
|
+
"amount": opts["amount"]
|
|
2020
|
+
};
|
|
2021
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2022
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
2023
|
+
if (opts["destination"] === void 0) delete input["destination"];
|
|
2024
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2025
|
+
await runAndPrint(() => sdk2.chain.erc20.transfer(input));
|
|
2026
|
+
});
|
|
2027
|
+
});
|
|
2028
|
+
registerCommand(program2, ["chain", "erc20", "approve"], "Auto-generated from sdk.chain.erc20.approve", (cmd) => {
|
|
2029
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2030
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2031
|
+
cmd.option("--spender <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2032
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2033
|
+
cmd.action(async (opts) => {
|
|
2034
|
+
const input = {
|
|
2035
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2036
|
+
"contractAddress": opts["contractAddress"],
|
|
2037
|
+
"spender": opts["spender"],
|
|
2038
|
+
"amount": opts["amount"]
|
|
2039
|
+
};
|
|
2040
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2041
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
2042
|
+
if (opts["spender"] === void 0) delete input["spender"];
|
|
2043
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2044
|
+
await runAndPrint(() => sdk2.chain.erc20.approve(input));
|
|
2045
|
+
});
|
|
2046
|
+
});
|
|
2047
|
+
registerCommand(program2, ["chain", "erc721", "get-balance"], "Auto-generated from sdk.chain.erc721.getBalance", (cmd) => {
|
|
2048
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2049
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2050
|
+
cmd.action(async (opts) => {
|
|
2051
|
+
const input = {
|
|
2052
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2053
|
+
"contractAddress": opts["contractAddress"]
|
|
2054
|
+
};
|
|
2055
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2056
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
2057
|
+
await runAndPrint(() => sdk2.chain.erc721.getBalance(input));
|
|
2058
|
+
});
|
|
2059
|
+
});
|
|
2060
|
+
registerCommand(program2, ["chain", "erc721", "mint"], "Auto-generated from sdk.chain.erc721.mint", (cmd) => {
|
|
2061
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2062
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2063
|
+
cmd.option("--destination <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2064
|
+
cmd.action(async (opts) => {
|
|
2065
|
+
const input = {
|
|
2066
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2067
|
+
"contractAddress": opts["contractAddress"],
|
|
2068
|
+
"destination": opts["destination"]
|
|
2069
|
+
};
|
|
2070
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2071
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
2072
|
+
if (opts["destination"] === void 0) delete input["destination"];
|
|
2073
|
+
await runAndPrint(() => sdk2.chain.erc721.mint(input));
|
|
2074
|
+
});
|
|
2075
|
+
});
|
|
2076
|
+
registerCommand(program2, ["chain", "erc721", "transfer"], "Auto-generated from sdk.chain.erc721.transfer", (cmd) => {
|
|
2077
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2078
|
+
cmd.option("--contract-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2079
|
+
cmd.option("--token-id <value>", "Token ID to transfer (decimal string).");
|
|
2080
|
+
cmd.option("--destination <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2081
|
+
cmd.action(async (opts) => {
|
|
2082
|
+
const input = {
|
|
2083
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2084
|
+
"contractAddress": opts["contractAddress"],
|
|
2085
|
+
"tokenId": opts["tokenId"],
|
|
2086
|
+
"destination": opts["destination"]
|
|
2087
|
+
};
|
|
2088
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2089
|
+
if (opts["contractAddress"] === void 0) delete input["contractAddress"];
|
|
2090
|
+
if (opts["tokenId"] === void 0) delete input["tokenId"];
|
|
2091
|
+
if (opts["destination"] === void 0) delete input["destination"];
|
|
2092
|
+
await runAndPrint(() => sdk2.chain.erc721.transfer(input));
|
|
2093
|
+
});
|
|
2094
|
+
});
|
|
2095
|
+
registerCommand(program2, ["chain", "weth", "wrap-eth"], "Auto-generated from sdk.chain.weth.wrapEth", (cmd) => {
|
|
2096
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2097
|
+
cmd.option("--amount-to-wrap <value>", "Amount of ETH to wrap into WETH, in wei.");
|
|
2098
|
+
cmd.action(async (opts) => {
|
|
2099
|
+
const input = {
|
|
2100
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2101
|
+
"amountToWrap": opts["amountToWrap"]
|
|
2102
|
+
};
|
|
2103
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2104
|
+
if (opts["amountToWrap"] === void 0) delete input["amountToWrap"];
|
|
2105
|
+
await runAndPrint(() => sdk2.chain.weth.wrapEth(input));
|
|
2106
|
+
});
|
|
2107
|
+
});
|
|
2108
|
+
registerCommand(program2, ["chain", "weth", "unwrap-eth"], "Auto-generated from sdk.chain.weth.unwrapEth", (cmd) => {
|
|
2109
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2110
|
+
cmd.option("--amount-to-unwrap <value>", "Amount of WETH to unwrap back to ETH, in wei.");
|
|
2111
|
+
cmd.action(async (opts) => {
|
|
2112
|
+
const input = {
|
|
2113
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2114
|
+
"amountToUnwrap": opts["amountToUnwrap"]
|
|
2115
|
+
};
|
|
2116
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2117
|
+
if (opts["amountToUnwrap"] === void 0) delete input["amountToUnwrap"];
|
|
2118
|
+
await runAndPrint(() => sdk2.chain.weth.unwrapEth(input));
|
|
2119
|
+
});
|
|
2120
|
+
});
|
|
2121
|
+
registerCommand(program2, ["chain", "compound", "supply"], "Auto-generated from sdk.chain.compound.supply", (cmd) => {
|
|
2122
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2123
|
+
cmd.option("--asset-id <value>", "Compound III asset identifier \u2014 typically the symbol like `USDC`, `WETH`, `cbETH`.");
|
|
2124
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2125
|
+
cmd.action(async (opts) => {
|
|
2126
|
+
const input = {
|
|
2127
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2128
|
+
"assetId": opts["assetId"],
|
|
2129
|
+
"amount": opts["amount"]
|
|
2130
|
+
};
|
|
2131
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2132
|
+
if (opts["assetId"] === void 0) delete input["assetId"];
|
|
2133
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2134
|
+
await runAndPrint(() => sdk2.chain.compound.supply(input));
|
|
2135
|
+
});
|
|
2136
|
+
});
|
|
2137
|
+
registerCommand(program2, ["chain", "compound", "withdraw"], "Auto-generated from sdk.chain.compound.withdraw", (cmd) => {
|
|
2138
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2139
|
+
cmd.option("--asset-id <value>", "Compound III asset identifier \u2014 typically the symbol like `USDC`, `WETH`, `cbETH`.");
|
|
2140
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2141
|
+
cmd.action(async (opts) => {
|
|
2142
|
+
const input = {
|
|
2143
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2144
|
+
"assetId": opts["assetId"],
|
|
2145
|
+
"amount": opts["amount"]
|
|
2146
|
+
};
|
|
2147
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2148
|
+
if (opts["assetId"] === void 0) delete input["assetId"];
|
|
2149
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2150
|
+
await runAndPrint(() => sdk2.chain.compound.withdraw(input));
|
|
2151
|
+
});
|
|
2152
|
+
});
|
|
2153
|
+
registerCommand(program2, ["chain", "compound", "borrow"], "Auto-generated from sdk.chain.compound.borrow", (cmd) => {
|
|
2154
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2155
|
+
cmd.option("--asset-id <value>", "Compound III asset identifier \u2014 typically the symbol like `USDC`, `WETH`, `cbETH`.");
|
|
2156
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2157
|
+
cmd.action(async (opts) => {
|
|
2158
|
+
const input = {
|
|
2159
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2160
|
+
"assetId": opts["assetId"],
|
|
2161
|
+
"amount": opts["amount"]
|
|
2162
|
+
};
|
|
2163
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2164
|
+
if (opts["assetId"] === void 0) delete input["assetId"];
|
|
2165
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2166
|
+
await runAndPrint(() => sdk2.chain.compound.borrow(input));
|
|
2167
|
+
});
|
|
2168
|
+
});
|
|
2169
|
+
registerCommand(program2, ["chain", "compound", "repay"], "Auto-generated from sdk.chain.compound.repay", (cmd) => {
|
|
2170
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2171
|
+
cmd.option("--asset-id <value>", "Compound III asset identifier \u2014 typically the symbol like `USDC`, `WETH`, `cbETH`.");
|
|
2172
|
+
cmd.option("--amount <value>", "Amount as a string in the token's smallest unit (e.g. `100000000` for 100 USDC at 6 decimals).");
|
|
2173
|
+
cmd.action(async (opts) => {
|
|
2174
|
+
const input = {
|
|
2175
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2176
|
+
"assetId": opts["assetId"],
|
|
2177
|
+
"amount": opts["amount"]
|
|
2178
|
+
};
|
|
2179
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2180
|
+
if (opts["assetId"] === void 0) delete input["assetId"];
|
|
2181
|
+
if (opts["amount"] === void 0) delete input["amount"];
|
|
2182
|
+
await runAndPrint(() => sdk2.chain.compound.repay(input));
|
|
2183
|
+
});
|
|
2184
|
+
});
|
|
2185
|
+
registerCommand(program2, ["chain", "compound", "get-portfolio"], "Auto-generated from sdk.chain.compound.getPortfolio", (cmd) => {
|
|
2186
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2187
|
+
cmd.action(async (opts) => {
|
|
2188
|
+
const input = {
|
|
2189
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"])
|
|
2190
|
+
};
|
|
2191
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2192
|
+
await runAndPrint(() => sdk2.chain.compound.getPortfolio(input));
|
|
2193
|
+
});
|
|
2194
|
+
});
|
|
2195
|
+
registerCommand(program2, ["chain", "morpho", "deposit"], "Auto-generated from sdk.chain.morpho.deposit", (cmd) => {
|
|
2196
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2197
|
+
cmd.option("--vault-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2198
|
+
cmd.option("--assets <value>", "Asset amount to deposit/withdraw, in the vault's underlying-asset smallest unit.");
|
|
2199
|
+
cmd.action(async (opts) => {
|
|
2200
|
+
const input = {
|
|
2201
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2202
|
+
"vaultAddress": opts["vaultAddress"],
|
|
2203
|
+
"assets": opts["assets"]
|
|
2204
|
+
};
|
|
2205
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2206
|
+
if (opts["vaultAddress"] === void 0) delete input["vaultAddress"];
|
|
2207
|
+
if (opts["assets"] === void 0) delete input["assets"];
|
|
2208
|
+
await runAndPrint(() => sdk2.chain.morpho.deposit(input));
|
|
2209
|
+
});
|
|
2210
|
+
});
|
|
2211
|
+
registerCommand(program2, ["chain", "morpho", "withdraw"], "Auto-generated from sdk.chain.morpho.withdraw", (cmd) => {
|
|
2212
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2213
|
+
cmd.option("--vault-address <value>", "EVM-style 0x-prefixed 40-hex-char address.");
|
|
2214
|
+
cmd.option("--assets <value>", "Asset amount to deposit/withdraw, in the vault's underlying-asset smallest unit.");
|
|
2215
|
+
cmd.action(async (opts) => {
|
|
2216
|
+
const input = {
|
|
2217
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2218
|
+
"vaultAddress": opts["vaultAddress"],
|
|
2219
|
+
"assets": opts["assets"]
|
|
2220
|
+
};
|
|
2221
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2222
|
+
if (opts["vaultAddress"] === void 0) delete input["vaultAddress"];
|
|
2223
|
+
if (opts["assets"] === void 0) delete input["assets"];
|
|
2224
|
+
await runAndPrint(() => sdk2.chain.morpho.withdraw(input));
|
|
2225
|
+
});
|
|
2226
|
+
});
|
|
2227
|
+
registerCommand(program2, ["chain", "enso", "route"], "Auto-generated from sdk.chain.enso.route", (cmd) => {
|
|
2228
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2229
|
+
cmd.option("--token-in <value>", "Address of the token to swap from. Use `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` for native ETH.");
|
|
2230
|
+
cmd.option("--token-out <value>", "Address of the token to swap to.");
|
|
2231
|
+
cmd.option("--amount-in <value>", "Amount of `tokenIn` to swap, in whole units (e.g. `100` = 100 USDC).");
|
|
2232
|
+
cmd.option("--slippage <value>", "Slippage tolerance in basis points (50 = 0.5%). Defaults to provider's safe value.");
|
|
2233
|
+
cmd.action(async (opts) => {
|
|
2234
|
+
const input = {
|
|
2235
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2236
|
+
"tokenIn": opts["tokenIn"],
|
|
2237
|
+
"tokenOut": opts["tokenOut"],
|
|
2238
|
+
"amountIn": opts["amountIn"],
|
|
2239
|
+
"slippage": opts["slippage"] === void 0 ? void 0 : Number(opts["slippage"])
|
|
2240
|
+
};
|
|
2241
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2242
|
+
if (opts["tokenIn"] === void 0) delete input["tokenIn"];
|
|
2243
|
+
if (opts["tokenOut"] === void 0) delete input["tokenOut"];
|
|
2244
|
+
if (opts["amountIn"] === void 0) delete input["amountIn"];
|
|
2245
|
+
if (opts["slippage"] === void 0 ? void 0 : Number(opts["slippage"]) === void 0) delete input["slippage"];
|
|
2246
|
+
await runAndPrint(() => sdk2.chain.enso.route(input));
|
|
2247
|
+
});
|
|
2248
|
+
});
|
|
2249
|
+
registerCommand(program2, ["chain", "enso", "bridge"], "Auto-generated from sdk.chain.enso.bridge", (cmd) => {
|
|
2250
|
+
cmd.option("--chain-id <value>", "EVM chain ID \u2014 e.g. `1` (Ethereum), `8453` (Base), `137` (Polygon), `42161` (Arbitrum).");
|
|
2251
|
+
cmd.option("--destination-chain-id <value>", "Target chain ID for the bridge.");
|
|
2252
|
+
cmd.option("--token-in <value>", "Source-chain token address.");
|
|
2253
|
+
cmd.option("--token-out <value>", "Destination-chain token address.");
|
|
2254
|
+
cmd.option("--amount-in <value>", "Amount in whole token units (e.g. `1.5` for 1.5 ETH). Provider applies the right scaling.");
|
|
2255
|
+
cmd.action(async (opts) => {
|
|
2256
|
+
const input = {
|
|
2257
|
+
"chainId": opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]),
|
|
2258
|
+
"destinationChainId": opts["destinationChainId"] === void 0 ? void 0 : Number(opts["destinationChainId"]),
|
|
2259
|
+
"tokenIn": opts["tokenIn"],
|
|
2260
|
+
"tokenOut": opts["tokenOut"],
|
|
2261
|
+
"amountIn": opts["amountIn"]
|
|
2262
|
+
};
|
|
2263
|
+
if (opts["chainId"] === void 0 ? void 0 : Number(opts["chainId"]) === void 0) delete input["chainId"];
|
|
2264
|
+
if (opts["destinationChainId"] === void 0 ? void 0 : Number(opts["destinationChainId"]) === void 0) delete input["destinationChainId"];
|
|
2265
|
+
if (opts["tokenIn"] === void 0) delete input["tokenIn"];
|
|
2266
|
+
if (opts["tokenOut"] === void 0) delete input["tokenOut"];
|
|
2267
|
+
if (opts["amountIn"] === void 0) delete input["amountIn"];
|
|
2268
|
+
await runAndPrint(() => sdk2.chain.enso.bridge(input));
|
|
2269
|
+
});
|
|
2270
|
+
});
|
|
2271
|
+
registerCommand(program2, ["chain", "pyth", "fetch-price-feed"], "Auto-generated from sdk.chain.pyth.fetchPriceFeed", (cmd) => {
|
|
2272
|
+
cmd.option("--token-symbol <value>", "Token symbol to resolve to a Pyth price feed ID (e.g. `BTC`, `ETH`, `SOL`).");
|
|
2273
|
+
cmd.action(async (opts) => {
|
|
2274
|
+
const input = {
|
|
2275
|
+
"tokenSymbol": opts["tokenSymbol"]
|
|
2276
|
+
};
|
|
2277
|
+
if (opts["tokenSymbol"] === void 0) delete input["tokenSymbol"];
|
|
2278
|
+
await runAndPrint(() => sdk2.chain.pyth.fetchPriceFeed(input));
|
|
2279
|
+
});
|
|
2280
|
+
});
|
|
2281
|
+
registerCommand(program2, ["chain", "pyth", "fetch-price"], "Auto-generated from sdk.chain.pyth.fetchPrice", (cmd) => {
|
|
2282
|
+
cmd.option("--price-feed-id <value>", "Pyth price feed ID \u2014 the hex value resolved via `fetchPriceFeed` (e.g. `0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43`).");
|
|
2283
|
+
cmd.action(async (opts) => {
|
|
2284
|
+
const input = {
|
|
2285
|
+
"priceFeedId": opts["priceFeedId"]
|
|
2286
|
+
};
|
|
2287
|
+
if (opts["priceFeedId"] === void 0) delete input["priceFeedId"];
|
|
2288
|
+
await runAndPrint(() => sdk2.chain.pyth.fetchPrice(input));
|
|
2289
|
+
});
|
|
2290
|
+
});
|
|
2291
|
+
registerCommand(program2, ["chain", "defillama", "find-protocol"], "Auto-generated from sdk.chain.defillama.findProtocol", (cmd) => {
|
|
2292
|
+
cmd.option("--query <value>", "Free-text query to find DeFiLlama protocols by name or slug.");
|
|
2293
|
+
cmd.action(async (opts) => {
|
|
2294
|
+
const input = {
|
|
2295
|
+
"query": opts["query"]
|
|
2296
|
+
};
|
|
2297
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
2298
|
+
await runAndPrint(() => sdk2.chain.defillama.findProtocol(input));
|
|
2299
|
+
});
|
|
2300
|
+
});
|
|
2301
|
+
registerCommand(program2, ["chain", "defillama", "get-protocol"], "Auto-generated from sdk.chain.defillama.getProtocol", (cmd) => {
|
|
2302
|
+
cmd.option("--protocol-id <value>", "DeFiLlama protocol slug (e.g. `aave-v3`, `uniswap`).");
|
|
2303
|
+
cmd.action(async (opts) => {
|
|
2304
|
+
const input = {
|
|
2305
|
+
"protocolId": opts["protocolId"]
|
|
2306
|
+
};
|
|
2307
|
+
if (opts["protocolId"] === void 0) delete input["protocolId"];
|
|
2308
|
+
await runAndPrint(() => sdk2.chain.defillama.getProtocol(input));
|
|
2309
|
+
});
|
|
2310
|
+
});
|
|
2311
|
+
registerCommand(program2, ["chain", "defillama", "get-token-prices"], "Auto-generated from sdk.chain.defillama.getTokenPrices", (cmd) => {
|
|
2312
|
+
cmd.option("--tokens <value>", 'Tokens to price, in DeFiLlama\'s `chain:address` (or `coingecko:id`) format. Example: `["ethereum:0xa0b8..."]`.');
|
|
2313
|
+
cmd.action(async (opts) => {
|
|
2314
|
+
const input = {
|
|
2315
|
+
"tokens": opts["tokens"] === void 0 ? void 0 : String(opts["tokens"]).split(",")
|
|
2316
|
+
};
|
|
2317
|
+
if (opts["tokens"] === void 0 ? void 0 : String(opts["tokens"]).split(",") === void 0) delete input["tokens"];
|
|
2318
|
+
await runAndPrint(() => sdk2.chain.defillama.getTokenPrices(input));
|
|
2319
|
+
});
|
|
2320
|
+
});
|
|
2321
|
+
registerCommand(program2, ["chain", "x402", "make-http-request"], "Auto-generated from sdk.chain.x402.makeHttpRequest", (cmd) => {
|
|
2322
|
+
cmd.option("--url <value>", "Target URL of the x402-gated service.");
|
|
2323
|
+
cmd.option("--method <value>", "HTTP method. Default `GET`.");
|
|
2324
|
+
cmd.option("--headers <value>", "Extra request headers to send.");
|
|
2325
|
+
cmd.option("--body <value>", "Request body for POST/PUT/PATCH.");
|
|
2326
|
+
cmd.action(async (opts) => {
|
|
2327
|
+
const input = {
|
|
2328
|
+
"url": opts["url"],
|
|
2329
|
+
"method": opts["method"],
|
|
2330
|
+
"headers": opts["headers"] === void 0 ? void 0 : JSON.parse(String(opts["headers"])),
|
|
2331
|
+
"body": opts["body"] === void 0 ? void 0 : JSON.parse(String(opts["body"]))
|
|
2332
|
+
};
|
|
2333
|
+
if (opts["url"] === void 0) delete input["url"];
|
|
2334
|
+
if (opts["method"] === void 0) delete input["method"];
|
|
2335
|
+
if (opts["headers"] === void 0 ? void 0 : JSON.parse(String(opts["headers"])) === void 0) delete input["headers"];
|
|
2336
|
+
if (opts["body"] === void 0 ? void 0 : JSON.parse(String(opts["body"])) === void 0) delete input["body"];
|
|
2337
|
+
await runAndPrint(() => sdk2.chain.x402.makeHttpRequest(input));
|
|
2338
|
+
});
|
|
2339
|
+
});
|
|
2340
|
+
registerCommand(program2, ["chain", "x402", "discover-services"], "Auto-generated from sdk.chain.x402.discoverServices", (cmd) => {
|
|
2341
|
+
cmd.option("--query <value>", "Free-text filter for x402 service discovery. Omit to list all known services.");
|
|
2342
|
+
cmd.action(async (opts) => {
|
|
2343
|
+
const input = {
|
|
2344
|
+
"query": opts["query"]
|
|
2345
|
+
};
|
|
2346
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
2347
|
+
await runAndPrint(() => sdk2.chain.x402.discoverServices(input));
|
|
2348
|
+
});
|
|
2349
|
+
});
|
|
2350
|
+
registerCommand(program2, ["predict", "search-markets"], "Auto-generated from sdk.predict.searchMarkets", (cmd) => {
|
|
2351
|
+
cmd.option("--query <value>", "Free-text search query (e.g. `election`, `fed rate cut`).");
|
|
2352
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2353
|
+
cmd.option("--limit <value>", "Max markets per venue.");
|
|
2354
|
+
cmd.action(async (opts) => {
|
|
2355
|
+
const input = {
|
|
2356
|
+
"query": opts["query"],
|
|
2357
|
+
"venue": opts["venue"],
|
|
2358
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
2359
|
+
};
|
|
2360
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
2361
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2362
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
2363
|
+
await runAndPrint(() => sdk2.predict.searchMarkets(input));
|
|
2364
|
+
});
|
|
2365
|
+
});
|
|
2366
|
+
registerCommand(program2, ["predict", "search-events"], "Auto-generated from sdk.predict.searchEvents", (cmd) => {
|
|
2367
|
+
cmd.option("--query <value>", "Free-text event-search query.");
|
|
2368
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2369
|
+
cmd.option("--limit <value>", "Max events per venue.");
|
|
2370
|
+
cmd.action(async (opts) => {
|
|
2371
|
+
const input = {
|
|
2372
|
+
"query": opts["query"],
|
|
2373
|
+
"venue": opts["venue"],
|
|
2374
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"])
|
|
2375
|
+
};
|
|
2376
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
2377
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2378
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
2379
|
+
await runAndPrint(() => sdk2.predict.searchEvents(input));
|
|
2380
|
+
});
|
|
2381
|
+
});
|
|
2382
|
+
registerCommand(program2, ["predict", "get-market"], "Auto-generated from sdk.predict.getMarket", (cmd) => {
|
|
2383
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2384
|
+
cmd.option("--market-id <value>", "Venue-native market ID (Polymarket gamma id, Limitless slug, Probable id, Kalshi ticker).");
|
|
2385
|
+
cmd.action(async (opts) => {
|
|
2386
|
+
const input = {
|
|
2387
|
+
"venue": opts["venue"],
|
|
2388
|
+
"marketId": opts["marketId"]
|
|
2389
|
+
};
|
|
2390
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2391
|
+
if (opts["marketId"] === void 0) delete input["marketId"];
|
|
2392
|
+
await runAndPrint(() => sdk2.predict.getMarket(input));
|
|
2393
|
+
});
|
|
2394
|
+
});
|
|
2395
|
+
registerCommand(program2, ["predict", "get-orderbook"], "Auto-generated from sdk.predict.getOrderbook", (cmd) => {
|
|
2396
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2397
|
+
cmd.option("--market-id <value>", "Venue-native market ID. Returns the live bid/ask snapshot.");
|
|
2398
|
+
cmd.action(async (opts) => {
|
|
2399
|
+
const input = {
|
|
2400
|
+
"venue": opts["venue"],
|
|
2401
|
+
"marketId": opts["marketId"]
|
|
2402
|
+
};
|
|
2403
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2404
|
+
if (opts["marketId"] === void 0) delete input["marketId"];
|
|
2405
|
+
await runAndPrint(() => sdk2.predict.getOrderbook(input));
|
|
2406
|
+
});
|
|
2407
|
+
});
|
|
2408
|
+
registerCommand(program2, ["predict", "strategy-playbook"], "Auto-generated from sdk.predict.strategyPlaybook", (cmd) => {
|
|
2409
|
+
cmd.addOption(new Option("--strategy <value>", "Which composition pattern to retrieve step-by-step instructions for. (choices: arbitrage, hedging, matching, price_comparison)").choices(["arbitrage", "hedging", "matching", "price_comparison"]));
|
|
2410
|
+
cmd.action(async (opts) => {
|
|
2411
|
+
const input = {
|
|
2412
|
+
"strategy": opts["strategy"]
|
|
2413
|
+
};
|
|
2414
|
+
if (opts["strategy"] === void 0) delete input["strategy"];
|
|
2415
|
+
await runAndPrint(() => sdk2.predict.strategyPlaybook(input));
|
|
2416
|
+
});
|
|
2417
|
+
});
|
|
2418
|
+
registerCommand(program2, ["predict", "create-order"], "Auto-generated from sdk.predict.createOrder", (cmd) => {
|
|
2419
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2420
|
+
cmd.option("--market-id <value>", "Venue-native market ID.");
|
|
2421
|
+
cmd.option("--outcome-id <value>", "Token / outcome ID within the market (YES vs NO, or specific outcome).");
|
|
2422
|
+
cmd.addOption(new Option("--side <value>", "Order side. (choices: buy, sell)").choices(["buy", "sell"]));
|
|
2423
|
+
cmd.option("--size <value>", "Number of shares / contracts as a decimal string (e.g. `100`).");
|
|
2424
|
+
cmd.option("--price <value>", "Limit price in (0, 1) as a decimal string. Required for limit orders; ignored for market orders.");
|
|
2425
|
+
cmd.addOption(new Option("--type <value>", "Order type. `limit` = GTC limit, `market` = FOK against the book, others as named. (choices: limit, market, gtc, gtd, fok)").choices(["limit", "market", "gtc", "gtd", "fok"]));
|
|
2426
|
+
cmd.action(async (opts) => {
|
|
2427
|
+
const input = {
|
|
2428
|
+
"venue": opts["venue"],
|
|
2429
|
+
"marketId": opts["marketId"],
|
|
2430
|
+
"outcomeId": opts["outcomeId"],
|
|
2431
|
+
"side": opts["side"],
|
|
2432
|
+
"size": opts["size"],
|
|
2433
|
+
"price": opts["price"],
|
|
2434
|
+
"type": opts["type"]
|
|
2435
|
+
};
|
|
2436
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2437
|
+
if (opts["marketId"] === void 0) delete input["marketId"];
|
|
2438
|
+
if (opts["outcomeId"] === void 0) delete input["outcomeId"];
|
|
2439
|
+
if (opts["side"] === void 0) delete input["side"];
|
|
2440
|
+
if (opts["size"] === void 0) delete input["size"];
|
|
2441
|
+
if (opts["price"] === void 0) delete input["price"];
|
|
2442
|
+
if (opts["type"] === void 0) delete input["type"];
|
|
2443
|
+
await runAndPrint(() => sdk2.predict.createOrder(input));
|
|
2444
|
+
});
|
|
2445
|
+
});
|
|
2446
|
+
registerCommand(program2, ["predict", "cancel-order"], "Auto-generated from sdk.predict.cancelOrder", (cmd) => {
|
|
2447
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2448
|
+
cmd.option("--order-id <value>", "Venue order ID (compound `orderId:tokenId` for Probable; bare ID for the rest).");
|
|
2449
|
+
cmd.action(async (opts) => {
|
|
2450
|
+
const input = {
|
|
2451
|
+
"venue": opts["venue"],
|
|
2452
|
+
"orderId": opts["orderId"]
|
|
2453
|
+
};
|
|
2454
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2455
|
+
if (opts["orderId"] === void 0) delete input["orderId"];
|
|
2456
|
+
await runAndPrint(() => sdk2.predict.cancelOrder(input));
|
|
2457
|
+
});
|
|
2458
|
+
});
|
|
2459
|
+
registerCommand(program2, ["predict", "positions"], "Auto-generated from sdk.predict.positions", (cmd) => {
|
|
2460
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2461
|
+
cmd.action(async (opts) => {
|
|
2462
|
+
const input = {
|
|
2463
|
+
"venue": opts["venue"]
|
|
2464
|
+
};
|
|
2465
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2466
|
+
await runAndPrint(() => sdk2.predict.positions(input));
|
|
2467
|
+
});
|
|
2468
|
+
});
|
|
2469
|
+
registerCommand(program2, ["predict", "open-orders"], "Auto-generated from sdk.predict.openOrders", (cmd) => {
|
|
2470
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2471
|
+
cmd.option("--market-id <value>", "Optional market filter. Some venues require this.");
|
|
2472
|
+
cmd.action(async (opts) => {
|
|
2473
|
+
const input = {
|
|
2474
|
+
"venue": opts["venue"],
|
|
2475
|
+
"marketId": opts["marketId"]
|
|
2476
|
+
};
|
|
2477
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2478
|
+
if (opts["marketId"] === void 0) delete input["marketId"];
|
|
2479
|
+
await runAndPrint(() => sdk2.predict.openOrders(input));
|
|
2480
|
+
});
|
|
2481
|
+
});
|
|
2482
|
+
registerCommand(program2, ["predict", "my-trades"], "Auto-generated from sdk.predict.myTrades", (cmd) => {
|
|
2483
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2484
|
+
cmd.option("--market-id <value>", "Optional market filter.");
|
|
2485
|
+
cmd.option("--limit <value>", "Max trades to return.");
|
|
2486
|
+
cmd.option("--since <value>", "Unix epoch seconds \u2014 only trades on/after this timestamp.");
|
|
2487
|
+
cmd.action(async (opts) => {
|
|
2488
|
+
const input = {
|
|
2489
|
+
"venue": opts["venue"],
|
|
2490
|
+
"marketId": opts["marketId"],
|
|
2491
|
+
"limit": opts["limit"] === void 0 ? void 0 : Number(opts["limit"]),
|
|
2492
|
+
"since": opts["since"] === void 0 ? void 0 : Number(opts["since"])
|
|
2493
|
+
};
|
|
2494
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2495
|
+
if (opts["marketId"] === void 0) delete input["marketId"];
|
|
2496
|
+
if (opts["limit"] === void 0 ? void 0 : Number(opts["limit"]) === void 0) delete input["limit"];
|
|
2497
|
+
if (opts["since"] === void 0 ? void 0 : Number(opts["since"]) === void 0) delete input["since"];
|
|
2498
|
+
await runAndPrint(() => sdk2.predict.myTrades(input));
|
|
2499
|
+
});
|
|
2500
|
+
});
|
|
2501
|
+
registerCommand(program2, ["predict", "get-order"], "Auto-generated from sdk.predict.getOrder", (cmd) => {
|
|
2502
|
+
cmd.addOption(new Option("--venue <value>", "Prediction-market venue. `polymarket`, `kalshi`, `limitless`, `probable`, etc. (choices: polymarket, kalshi, kalshi-demo, limitless, probable, baozi, myriad, opinion, metaculus, smarkets, polymarket_us)").choices(["polymarket", "kalshi", "kalshi-demo", "limitless", "probable", "baozi", "myriad", "opinion", "metaculus", "smarkets", "polymarket_us"]));
|
|
2503
|
+
cmd.option("--order-id <value>", "Venue order ID.");
|
|
2504
|
+
cmd.action(async (opts) => {
|
|
2505
|
+
const input = {
|
|
2506
|
+
"venue": opts["venue"],
|
|
2507
|
+
"orderId": opts["orderId"]
|
|
2508
|
+
};
|
|
2509
|
+
if (opts["venue"] === void 0) delete input["venue"];
|
|
2510
|
+
if (opts["orderId"] === void 0) delete input["orderId"];
|
|
2511
|
+
await runAndPrint(() => sdk2.predict.getOrder(input));
|
|
2512
|
+
});
|
|
2513
|
+
});
|
|
2514
|
+
registerCommand(program2, ["threads", "list"], "GET /api/threads \u2192 returns the list of threads for the authed user", (cmd) => {
|
|
2515
|
+
cmd.action(async () => {
|
|
2516
|
+
await runAndPrint(() => sdk2.threads.list());
|
|
2517
|
+
});
|
|
2518
|
+
});
|
|
2519
|
+
registerCommand(program2, ["threads", "search"], "GET /api/threads/search?q=", (cmd) => {
|
|
2520
|
+
cmd.option("--query <value>", "Free-text search query \u2014 matches thread title and message content.");
|
|
2521
|
+
cmd.action(async (opts) => {
|
|
2522
|
+
const input = {
|
|
2523
|
+
"query": opts["query"]
|
|
2524
|
+
};
|
|
2525
|
+
if (opts["query"] === void 0) delete input["query"];
|
|
2526
|
+
await runAndPrint(() => sdk2.threads.search(input));
|
|
2527
|
+
});
|
|
2528
|
+
});
|
|
2529
|
+
registerCommand(program2, ["threads", "get-messages"], "GET /api/threads/:id/messages", (cmd) => {
|
|
2530
|
+
cmd.option("--thread-id <value>", "Thread ID to fetch messages for.");
|
|
2531
|
+
cmd.action(async (opts) => {
|
|
2532
|
+
const input = {
|
|
2533
|
+
"threadId": opts["threadId"]
|
|
2534
|
+
};
|
|
2535
|
+
if (opts["threadId"] === void 0) delete input["threadId"];
|
|
2536
|
+
await runAndPrint(() => sdk2.threads.getMessages(input));
|
|
2537
|
+
});
|
|
2538
|
+
});
|
|
2539
|
+
registerCommand(program2, ["threads", "summary"], "GET /api/threads/:id/summary \u2014 compact summary for voice agent context", (cmd) => {
|
|
2540
|
+
cmd.option("--thread-id <value>", "Thread ID to summarize.");
|
|
2541
|
+
cmd.action(async (opts) => {
|
|
2542
|
+
const input = {
|
|
2543
|
+
"threadId": opts["threadId"]
|
|
2544
|
+
};
|
|
2545
|
+
if (opts["threadId"] === void 0) delete input["threadId"];
|
|
2546
|
+
await runAndPrint(() => sdk2.threads.summary(input));
|
|
2547
|
+
});
|
|
2548
|
+
});
|
|
2549
|
+
registerCommand(program2, ["threads", "delete"], "DELETE /api/threads/:id", (cmd) => {
|
|
2550
|
+
cmd.option("--thread-id <value>", "Thread ID to delete. Idempotent \u2014 no error when the thread is already gone.");
|
|
2551
|
+
cmd.action(async (opts) => {
|
|
2552
|
+
const input = {
|
|
2553
|
+
"threadId": opts["threadId"]
|
|
2554
|
+
};
|
|
2555
|
+
if (opts["threadId"] === void 0) delete input["threadId"];
|
|
2556
|
+
await runAndPrint(() => sdk2.threads.delete(input));
|
|
2557
|
+
});
|
|
2558
|
+
});
|
|
2559
|
+
registerCommand(program2, ["threads", "send-message"], "POST /api/messages", (cmd) => {
|
|
2560
|
+
cmd.option("--thread-id <value>", "Existing thread ID to append to. Omit to start a new thread (the server returns the new ID).");
|
|
2561
|
+
cmd.option("--content <value>", "Message text to send to the agent.");
|
|
2562
|
+
cmd.action(async (opts) => {
|
|
2563
|
+
const input = {
|
|
2564
|
+
"threadId": opts["threadId"],
|
|
2565
|
+
"content": opts["content"]
|
|
2566
|
+
};
|
|
2567
|
+
if (opts["threadId"] === void 0) delete input["threadId"];
|
|
2568
|
+
if (opts["content"] === void 0) delete input["content"];
|
|
2569
|
+
await runAndPrint(() => sdk2.threads.sendMessage(input));
|
|
2570
|
+
});
|
|
2571
|
+
});
|
|
2572
|
+
registerCommand(program2, ["threads", "generate-id"], "Pure local UUID v4. Mirrors `noya_generate_thread_id` MCP tool \u2014 useful for generating a stable threadId before sending the first message", (cmd) => {
|
|
2573
|
+
cmd.action(async () => {
|
|
2574
|
+
await runAndPrint(() => sdk2.threads.generateId());
|
|
2575
|
+
});
|
|
2576
|
+
});
|
|
2577
|
+
registerCommand(program2, ["threads", "agent-summary"], "GET /api/agents/summarize \u2014 list of agents and their specialties", (cmd) => {
|
|
2578
|
+
cmd.action(async () => {
|
|
2579
|
+
await runAndPrint(() => sdk2.threads.agentSummary());
|
|
2580
|
+
});
|
|
2581
|
+
});
|
|
2582
|
+
registerCommand(program2, ["portfolio", "get"], "GET /api/user/summary \u2014 wraps `noya_get_portfolio` MCP semantics by returning the user's identity + holdings + DCA + polymarket data in one shot. Falls back to the raw response if `data` is missing", (cmd) => {
|
|
2583
|
+
cmd.action(async () => {
|
|
2584
|
+
await runAndPrint(() => sdk2.portfolio.get());
|
|
2585
|
+
});
|
|
2586
|
+
});
|
|
2587
|
+
}
|
|
2588
|
+
|
|
2589
|
+
// src/index.ts
|
|
2590
|
+
var NOYA_AGENT_API_URL = process.env.NOYA_AGENT_API_URL ?? "https://agent-api.noya.ai";
|
|
2591
|
+
var program = new Command();
|
|
2592
|
+
program.name("noya").description("Noya agentic toolkit CLI").version("0.0.0");
|
|
2593
|
+
var auth = program.command("auth").description("Manage Noya authentication");
|
|
2594
|
+
auth.command("login").description("Authorize the CLI via your browser (OAuth)").option(
|
|
2595
|
+
"--with-token <key>",
|
|
2596
|
+
"Print instructions for using NOYA_API_KEY env var (no file is written)"
|
|
2597
|
+
).action(async (opts) => {
|
|
2598
|
+
if (opts.withToken !== void 0) {
|
|
2599
|
+
process.stdout.write(
|
|
2600
|
+
"API keys are configured via the NOYA_API_KEY env var, not a stored file.\n export NOYA_API_KEY=<your-key>\nGenerate a key at https://agent.noya.ai/api-keys.\nAdd to your shell config (~/.zshrc, ~/.bashrc, .envrc) for persistence.\n"
|
|
2601
|
+
);
|
|
2602
|
+
return;
|
|
2603
|
+
}
|
|
2604
|
+
await login({
|
|
2605
|
+
noyaAgentApiUrl: NOYA_AGENT_API_URL,
|
|
2606
|
+
credPath: CRED_PATH,
|
|
2607
|
+
hostname: hostname(),
|
|
2608
|
+
openBrowser: async (url) => {
|
|
2609
|
+
await open(url);
|
|
2610
|
+
},
|
|
2611
|
+
out: process.stdout
|
|
2612
|
+
});
|
|
2613
|
+
});
|
|
2614
|
+
auth.command("status").description("Show the active credential and verify it against the API").action(async () => {
|
|
2615
|
+
await status({
|
|
2616
|
+
env: process.env,
|
|
2617
|
+
stored: loadCredentials(CRED_PATH),
|
|
2618
|
+
getMe: async (creds) => {
|
|
2619
|
+
new NoyaSDK({ ...creds, noyaAgentApiUrl: NOYA_AGENT_API_URL });
|
|
2620
|
+
const res = await fetch(`${NOYA_AGENT_API_URL}/api/me`, {
|
|
2621
|
+
headers: creds.apiKey ? { "x-api-key": creds.apiKey } : { authorization: `Bearer ${creds.bearer}` }
|
|
2622
|
+
});
|
|
2623
|
+
if (!res.ok) throw new Error(`/api/me ${res.status}`);
|
|
2624
|
+
return await res.json();
|
|
2625
|
+
},
|
|
2626
|
+
out: process.stdout
|
|
2627
|
+
});
|
|
2628
|
+
});
|
|
2629
|
+
auth.command("logout").description("Wipe the stored OAuth credentials").action(async () => {
|
|
2630
|
+
await logout({ credPath: CRED_PATH, out: process.stdout });
|
|
2631
|
+
});
|
|
2632
|
+
var resolved = resolveCredentials({
|
|
2633
|
+
env: process.env,
|
|
2634
|
+
stored: loadCredentials(CRED_PATH)
|
|
2635
|
+
});
|
|
2636
|
+
var sdk = new NoyaSDK({
|
|
2637
|
+
...resolved.credentials,
|
|
2638
|
+
noyaAgentApiUrl: NOYA_AGENT_API_URL,
|
|
2639
|
+
...process.env.NOYA_SIGNER_URL ? { signer: { url: process.env.NOYA_SIGNER_URL } } : {}
|
|
2640
|
+
});
|
|
2641
|
+
registerGeneratedCommands(program, sdk);
|
|
2642
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
2643
|
+
process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}
|
|
2644
|
+
`);
|
|
2645
|
+
process.exit(1);
|
|
2646
|
+
});
|