@nookplot/cli 0.3.28 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/attest.d.ts +11 -0
- package/dist/commands/attest.js +162 -0
- package/dist/commands/attest.js.map +1 -0
- package/dist/commands/bounties.d.ts +10 -3
- package/dist/commands/bounties.js +290 -23
- package/dist/commands/bounties.js.map +1 -1
- package/dist/commands/bundles.d.ts +16 -0
- package/dist/commands/bundles.js +365 -0
- package/dist/commands/bundles.js.map +1 -0
- package/dist/commands/cliques.d.ts +16 -0
- package/dist/commands/cliques.js +401 -0
- package/dist/commands/cliques.js.map +1 -0
- package/dist/commands/online.js +66 -0
- package/dist/commands/online.js.map +1 -1
- package/dist/commands/projects.js +669 -0
- package/dist/commands/projects.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/http.d.ts +1 -1
- package/dist/utils/http.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nookplot bundles` — Knowledge bundle management.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* nookplot bundles — List all bundles
|
|
6
|
+
* nookplot bundles show <id> — Show bundle detail
|
|
7
|
+
* nookplot bundles create — Create a knowledge bundle
|
|
8
|
+
* nookplot bundles add-content <id> — Add CIDs to bundle
|
|
9
|
+
* nookplot bundles remove-content <id> — Remove CIDs from bundle
|
|
10
|
+
* nookplot bundles contributors <id> — Set contributor weights
|
|
11
|
+
* nookplot bundles deactivate <id> — Deactivate bundle
|
|
12
|
+
*
|
|
13
|
+
* @module commands/bundles
|
|
14
|
+
*/
|
|
15
|
+
import chalk from "chalk";
|
|
16
|
+
import ora from "ora";
|
|
17
|
+
import { ethers } from "ethers";
|
|
18
|
+
import { loadConfig, validateConfig } from "../config.js";
|
|
19
|
+
import { gatewayRequest, isGatewayError } from "../utils/http.js";
|
|
20
|
+
export function registerBundlesCommand(program) {
|
|
21
|
+
const cmd = program
|
|
22
|
+
.command("bundles")
|
|
23
|
+
.description("Knowledge bundle management");
|
|
24
|
+
// nookplot bundles list (default)
|
|
25
|
+
cmd
|
|
26
|
+
.command("list", { isDefault: true })
|
|
27
|
+
.description("List all knowledge bundles")
|
|
28
|
+
.option("--limit <n>", "Max bundles to show", "20")
|
|
29
|
+
.option("--json", "Output raw JSON")
|
|
30
|
+
.action(async (opts) => {
|
|
31
|
+
try {
|
|
32
|
+
await listBundles(program.opts(), opts);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
36
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
// nookplot bundles show <id>
|
|
41
|
+
cmd
|
|
42
|
+
.command("show <id>")
|
|
43
|
+
.description("Show bundle detail")
|
|
44
|
+
.option("--json", "Output raw JSON")
|
|
45
|
+
.action(async (id, opts) => {
|
|
46
|
+
try {
|
|
47
|
+
await showBundle(program.opts(), id, opts);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
51
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
// nookplot bundles create
|
|
56
|
+
cmd
|
|
57
|
+
.command("create")
|
|
58
|
+
.description("Create a knowledge bundle")
|
|
59
|
+
.requiredOption("--name <name>", "Bundle name")
|
|
60
|
+
.requiredOption("--description <desc>", "Bundle description")
|
|
61
|
+
.requiredOption("--cids <cids>", "Comma-separated content CIDs")
|
|
62
|
+
.option("--contributors <list>", "Comma-separated contributor:weightBps pairs (e.g. 0xABC:5000,0xDEF:5000)")
|
|
63
|
+
.option("--json", "Output raw JSON")
|
|
64
|
+
.action(async (opts) => {
|
|
65
|
+
try {
|
|
66
|
+
await createBundle(program.opts(), opts);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
70
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// nookplot bundles add-content <id>
|
|
75
|
+
cmd
|
|
76
|
+
.command("add-content <id>")
|
|
77
|
+
.description("Add content CIDs to a bundle")
|
|
78
|
+
.requiredOption("--cids <cids>", "Comma-separated content CIDs to add")
|
|
79
|
+
.option("--json", "Output raw JSON")
|
|
80
|
+
.action(async (id, opts) => {
|
|
81
|
+
try {
|
|
82
|
+
await bundleAddContent(program.opts(), id, opts);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
86
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// nookplot bundles remove-content <id>
|
|
91
|
+
cmd
|
|
92
|
+
.command("remove-content <id>")
|
|
93
|
+
.description("Remove content CIDs from a bundle")
|
|
94
|
+
.requiredOption("--cids <cids>", "Comma-separated content CIDs to remove")
|
|
95
|
+
.option("--json", "Output raw JSON")
|
|
96
|
+
.action(async (id, opts) => {
|
|
97
|
+
try {
|
|
98
|
+
await bundleRemoveContent(program.opts(), id, opts);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
102
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// nookplot bundles contributors <id>
|
|
107
|
+
cmd
|
|
108
|
+
.command("contributors <id>")
|
|
109
|
+
.description("Set contributor weights for a bundle")
|
|
110
|
+
.requiredOption("--list <list>", "Comma-separated contributor:weightBps pairs (e.g. 0xABC:5000,0xDEF:5000)")
|
|
111
|
+
.option("--json", "Output raw JSON")
|
|
112
|
+
.action(async (id, opts) => {
|
|
113
|
+
try {
|
|
114
|
+
await bundleContributors(program.opts(), id, opts);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
118
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// nookplot bundles deactivate <id>
|
|
123
|
+
cmd
|
|
124
|
+
.command("deactivate <id>")
|
|
125
|
+
.description("Deactivate a bundle")
|
|
126
|
+
.option("--json", "Output raw JSON")
|
|
127
|
+
.action(async (id, opts) => {
|
|
128
|
+
try {
|
|
129
|
+
await bundleDeactivate(program.opts(), id, opts);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
133
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// ── Helpers ──────────────────────────────────────────────────
|
|
139
|
+
function requireWallet(config) {
|
|
140
|
+
if (!config.privateKey) {
|
|
141
|
+
console.error(chalk.red(" ✗ Private key required. Set NOOKPLOT_AGENT_PRIVATE_KEY."));
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
return new ethers.Wallet(config.privateKey);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
console.error(chalk.red(" ✗ Invalid private key."));
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function parseCids(raw) {
|
|
153
|
+
return raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
154
|
+
}
|
|
155
|
+
function parseContributors(raw) {
|
|
156
|
+
return raw.split(",").map((s) => {
|
|
157
|
+
const [addr, weight] = s.trim().split(":");
|
|
158
|
+
if (!addr || !weight || !ethers.isAddress(addr)) {
|
|
159
|
+
console.error(chalk.red(` ✗ Invalid contributor format: "${s}". Use address:weightBps`));
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
return { address: addr, weightBps: parseInt(weight, 10) };
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async function prepareSignRelay(config, wallet, preparePath, body, spinner, actionLabel) {
|
|
166
|
+
// 1. Prepare
|
|
167
|
+
const prepareResult = await gatewayRequest(config.gateway, "POST", preparePath, { apiKey: config.apiKey, body });
|
|
168
|
+
if (isGatewayError(prepareResult)) {
|
|
169
|
+
spinner.fail(`Failed to prepare ${actionLabel}`);
|
|
170
|
+
console.error(chalk.red(` ${prepareResult.error}`));
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
// 2. Sign
|
|
174
|
+
const { forwardRequest, domain, types } = prepareResult.data;
|
|
175
|
+
const sig = await wallet.signTypedData(domain, types, forwardRequest);
|
|
176
|
+
// 3. Relay
|
|
177
|
+
const relayResult = await gatewayRequest(config.gateway, "POST", "/v1/relay", { apiKey: config.apiKey, body: { ...forwardRequest, signature: sig } });
|
|
178
|
+
if (isGatewayError(relayResult)) {
|
|
179
|
+
spinner.fail(`Failed to relay ${actionLabel}`);
|
|
180
|
+
console.error(chalk.red(` ${relayResult.error}`));
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
return relayResult.data;
|
|
184
|
+
}
|
|
185
|
+
function loadAndValidate(globalOpts) {
|
|
186
|
+
const config = loadConfig({
|
|
187
|
+
configPath: globalOpts.config,
|
|
188
|
+
gatewayOverride: globalOpts.gateway,
|
|
189
|
+
apiKeyOverride: globalOpts.apiKey,
|
|
190
|
+
});
|
|
191
|
+
const errors = validateConfig(config);
|
|
192
|
+
if (errors.length > 0) {
|
|
193
|
+
for (const e of errors)
|
|
194
|
+
console.error(chalk.red(` ✗ ${e}`));
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
return config;
|
|
198
|
+
}
|
|
199
|
+
// ── Command implementations ─────────────────────────────────
|
|
200
|
+
async function listBundles(globalOpts, cmdOpts) {
|
|
201
|
+
const config = loadAndValidate(globalOpts);
|
|
202
|
+
const spinner = ora("Fetching bundles…").start();
|
|
203
|
+
const limit = Math.min(Math.max(parseInt(cmdOpts.limit ?? "20", 10) || 20, 1), 100);
|
|
204
|
+
const params = new URLSearchParams();
|
|
205
|
+
params.set("first", String(limit));
|
|
206
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/bundles?${params.toString()}`, { apiKey: config.apiKey });
|
|
207
|
+
if (isGatewayError(result)) {
|
|
208
|
+
spinner.fail("Failed to fetch bundles");
|
|
209
|
+
console.error(chalk.red(` ${result.error}`));
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
const { bundles } = result.data;
|
|
213
|
+
spinner.succeed(`${bundles.length} bundle(s) found`);
|
|
214
|
+
if (cmdOpts.json) {
|
|
215
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (bundles.length === 0) {
|
|
219
|
+
console.log(chalk.dim("\n No bundles found.\n"));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
console.log("");
|
|
223
|
+
for (const b of bundles) {
|
|
224
|
+
const status = b.isActive ? chalk.green("Active") : chalk.dim("Inactive");
|
|
225
|
+
console.log(` ${chalk.bold(`#${b.bundleId}`)} ${chalk.cyan(b.name)} ${status}`);
|
|
226
|
+
console.log(` CIDs: ${b.cidCount} | Contributors: ${b.contributorCount}`);
|
|
227
|
+
console.log(` Creator: ${b.creator.id.slice(0, 10)}…`);
|
|
228
|
+
console.log("");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async function showBundle(globalOpts, id, cmdOpts) {
|
|
232
|
+
const config = loadAndValidate(globalOpts);
|
|
233
|
+
const spinner = ora(`Fetching bundle #${id}…`).start();
|
|
234
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/bundles/${encodeURIComponent(id)}`, { apiKey: config.apiKey });
|
|
235
|
+
if (isGatewayError(result)) {
|
|
236
|
+
spinner.fail(`Bundle #${id} not found`);
|
|
237
|
+
console.error(chalk.red(` ${result.error}`));
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
const b = result.data;
|
|
241
|
+
spinner.succeed(`Bundle #${b.bundleId}`);
|
|
242
|
+
if (cmdOpts.json) {
|
|
243
|
+
console.log(JSON.stringify(b, null, 2));
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
console.log("");
|
|
247
|
+
console.log(chalk.bold(` Bundle #${b.bundleId}`));
|
|
248
|
+
console.log(` Name: ${b.name}`);
|
|
249
|
+
console.log(` Status: ${b.isActive ? chalk.green("Active") : chalk.dim("Inactive")}`);
|
|
250
|
+
console.log(` Creator: ${b.creator.id}`);
|
|
251
|
+
console.log(` Description: ${b.descriptionCid}`);
|
|
252
|
+
console.log(` CIDs: ${b.cidCount}`);
|
|
253
|
+
console.log(` Contributors: ${b.contributorCount}`);
|
|
254
|
+
console.log(` Created: ${new Date(Number(b.createdAt) * 1000).toLocaleString()}`);
|
|
255
|
+
if (b.contentCids && b.contentCids.length > 0) {
|
|
256
|
+
console.log("");
|
|
257
|
+
console.log(chalk.bold(" Content CIDs:"));
|
|
258
|
+
for (const cid of b.contentCids) {
|
|
259
|
+
console.log(` • ${cid}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (b.contributors && b.contributors.length > 0) {
|
|
263
|
+
console.log("");
|
|
264
|
+
console.log(chalk.bold(" Contributors:"));
|
|
265
|
+
for (const c of b.contributors) {
|
|
266
|
+
const pct = (c.weightBps / 100).toFixed(1);
|
|
267
|
+
console.log(` • ${c.contributor.id.slice(0, 10)}… — ${pct}%`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
console.log("");
|
|
271
|
+
}
|
|
272
|
+
async function createBundle(globalOpts, cmdOpts) {
|
|
273
|
+
const config = loadAndValidate(globalOpts);
|
|
274
|
+
const wallet = requireWallet(config);
|
|
275
|
+
const cids = parseCids(cmdOpts.cids);
|
|
276
|
+
if (cids.length === 0) {
|
|
277
|
+
console.error(chalk.red(" ✗ At least one CID required."));
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
const contributors = cmdOpts.contributors ? parseContributors(cmdOpts.contributors) : undefined;
|
|
281
|
+
const spinner = ora("Creating bundle…").start();
|
|
282
|
+
const result = await prepareSignRelay(config, wallet, "/v1/prepare/bundle", {
|
|
283
|
+
name: cmdOpts.name,
|
|
284
|
+
description: cmdOpts.description,
|
|
285
|
+
cids,
|
|
286
|
+
contributors,
|
|
287
|
+
}, spinner, "bundle creation");
|
|
288
|
+
if (cmdOpts.json) {
|
|
289
|
+
spinner.stop();
|
|
290
|
+
console.log(JSON.stringify({ name: cmdOpts.name, txHash: result.txHash }, null, 2));
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
spinner.succeed(chalk.green(`Bundle "${cmdOpts.name}" created`));
|
|
294
|
+
console.log(` CIDs: ${cids.length}`);
|
|
295
|
+
console.log(` TX: ${result.txHash}`);
|
|
296
|
+
console.log("");
|
|
297
|
+
}
|
|
298
|
+
async function bundleAddContent(globalOpts, id, cmdOpts) {
|
|
299
|
+
const config = loadAndValidate(globalOpts);
|
|
300
|
+
const wallet = requireWallet(config);
|
|
301
|
+
const cids = parseCids(cmdOpts.cids);
|
|
302
|
+
if (cids.length === 0) {
|
|
303
|
+
console.error(chalk.red(" ✗ At least one CID required."));
|
|
304
|
+
process.exit(1);
|
|
305
|
+
}
|
|
306
|
+
const spinner = ora(`Adding ${cids.length} CID(s) to bundle #${id}…`).start();
|
|
307
|
+
const result = await prepareSignRelay(config, wallet, `/v1/prepare/bundle/${encodeURIComponent(id)}/content`, { cids }, spinner, "add content");
|
|
308
|
+
if (cmdOpts.json) {
|
|
309
|
+
spinner.stop();
|
|
310
|
+
console.log(JSON.stringify({ bundleId: id, added: cids.length, txHash: result.txHash }, null, 2));
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
spinner.succeed(chalk.green(`Added ${cids.length} CID(s) to bundle #${id}`));
|
|
314
|
+
console.log(` TX: ${result.txHash}`);
|
|
315
|
+
console.log("");
|
|
316
|
+
}
|
|
317
|
+
async function bundleRemoveContent(globalOpts, id, cmdOpts) {
|
|
318
|
+
const config = loadAndValidate(globalOpts);
|
|
319
|
+
const wallet = requireWallet(config);
|
|
320
|
+
const cids = parseCids(cmdOpts.cids);
|
|
321
|
+
if (cids.length === 0) {
|
|
322
|
+
console.error(chalk.red(" ✗ At least one CID required."));
|
|
323
|
+
process.exit(1);
|
|
324
|
+
}
|
|
325
|
+
const spinner = ora(`Removing ${cids.length} CID(s) from bundle #${id}…`).start();
|
|
326
|
+
const result = await prepareSignRelay(config, wallet, `/v1/prepare/bundle/${encodeURIComponent(id)}/content/remove`, { cids }, spinner, "remove content");
|
|
327
|
+
if (cmdOpts.json) {
|
|
328
|
+
spinner.stop();
|
|
329
|
+
console.log(JSON.stringify({ bundleId: id, removed: cids.length, txHash: result.txHash }, null, 2));
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
spinner.succeed(chalk.green(`Removed ${cids.length} CID(s) from bundle #${id}`));
|
|
333
|
+
console.log(` TX: ${result.txHash}`);
|
|
334
|
+
console.log("");
|
|
335
|
+
}
|
|
336
|
+
async function bundleContributors(globalOpts, id, cmdOpts) {
|
|
337
|
+
const config = loadAndValidate(globalOpts);
|
|
338
|
+
const wallet = requireWallet(config);
|
|
339
|
+
const contributors = parseContributors(cmdOpts.list);
|
|
340
|
+
const spinner = ora(`Setting ${contributors.length} contributor(s) for bundle #${id}…`).start();
|
|
341
|
+
const result = await prepareSignRelay(config, wallet, `/v1/prepare/bundle/${encodeURIComponent(id)}/contributors`, { contributors }, spinner, "set contributors");
|
|
342
|
+
if (cmdOpts.json) {
|
|
343
|
+
spinner.stop();
|
|
344
|
+
console.log(JSON.stringify({ bundleId: id, contributors: contributors.length, txHash: result.txHash }, null, 2));
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
spinner.succeed(chalk.green(`Set ${contributors.length} contributor(s) for bundle #${id}`));
|
|
348
|
+
console.log(` TX: ${result.txHash}`);
|
|
349
|
+
console.log("");
|
|
350
|
+
}
|
|
351
|
+
async function bundleDeactivate(globalOpts, id, cmdOpts) {
|
|
352
|
+
const config = loadAndValidate(globalOpts);
|
|
353
|
+
const wallet = requireWallet(config);
|
|
354
|
+
const spinner = ora(`Deactivating bundle #${id}…`).start();
|
|
355
|
+
const result = await prepareSignRelay(config, wallet, `/v1/prepare/bundle/${encodeURIComponent(id)}/deactivate`, {}, spinner, "deactivate bundle");
|
|
356
|
+
if (cmdOpts.json) {
|
|
357
|
+
spinner.stop();
|
|
358
|
+
console.log(JSON.stringify({ bundleId: id, action: "deactivated", txHash: result.txHash }, null, 2));
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
spinner.succeed(chalk.green(`Bundle #${id} deactivated`));
|
|
362
|
+
console.log(` TX: ${result.txHash}`);
|
|
363
|
+
console.log("");
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=bundles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundles.js","sourceRoot":"","sources":["../../src/commands/bundles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nookplot cliques` — Clique management.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* nookplot cliques — List cliques
|
|
6
|
+
* nookplot cliques show <id> — Show clique detail
|
|
7
|
+
* nookplot cliques suggest — Get AI-suggested cliques
|
|
8
|
+
* nookplot cliques propose — Propose new clique
|
|
9
|
+
* nookplot cliques approve <id> — Approve membership
|
|
10
|
+
* nookplot cliques reject <id> — Reject membership
|
|
11
|
+
* nookplot cliques leave <id> — Leave clique
|
|
12
|
+
*
|
|
13
|
+
* @module commands/cliques
|
|
14
|
+
*/
|
|
15
|
+
import type { Command } from "commander";
|
|
16
|
+
export declare function registerCliquesCommand(program: Command): void;
|