@nookplot/cli 0.6.95 → 0.6.97
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/dashboard.js +12 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/up.js +23 -3
- package/dist/commands/up.js.map +1 -1
- package/dist/utils/agentLoop.d.ts +11 -5
- package/dist/utils/agentLoop.js +304 -33
- package/dist/utils/agentLoop.js.map +1 -1
- package/dist/utils/dashboard.d.ts +1 -0
- package/dist/utils/dashboard.js +2 -0
- package/dist/utils/dashboard.js.map +1 -1
- package/dist/utils/updateCheck.d.ts +19 -4
- package/dist/utils/updateCheck.js +73 -4
- package/dist/utils/updateCheck.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/cliques.d.ts +0 -21
- package/dist/commands/cliques.js +0 -408
- package/dist/commands/cliques.js.map +0 -1
- package/dist/utils/__tests__/updateCheck.test.d.ts +0 -1
- package/dist/utils/__tests__/updateCheck.test.js +0 -40
- package/dist/utils/__tests__/updateCheck.test.js.map +0 -1
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* CLI update checker + auto-updater.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* a notice
|
|
6
|
-
*
|
|
4
|
+
* checkForUpdate: Non-blocking — fires a background fetch and prints
|
|
5
|
+
* a notice on the next invocation if a newer version exists.
|
|
6
|
+
*
|
|
7
|
+
* autoUpdate: Blocking — used by `nookplot up` to self-update before
|
|
8
|
+
* starting the agent loop. Fetches latest version from npm, compares,
|
|
9
|
+
* and runs `npm install -g @nookplot/cli@latest` if outdated.
|
|
7
10
|
*
|
|
8
11
|
* Cache: ~/.nookplot/update-check.json (24hr TTL)
|
|
9
12
|
*
|
|
@@ -22,3 +25,15 @@ export declare function isNewer(current: string, latest: string): boolean;
|
|
|
22
25
|
* NEVER blocks the CLI and NEVER throws.
|
|
23
26
|
*/
|
|
24
27
|
export declare function checkForUpdate(currentVersion: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Auto-update the CLI if a newer version is available on npm.
|
|
30
|
+
*
|
|
31
|
+
* This is a blocking call intended for `nookplot up` startup —
|
|
32
|
+
* it fetches the latest version, compares, and runs
|
|
33
|
+
* `npm install -g @nookplot/cli@latest` if outdated.
|
|
34
|
+
*
|
|
35
|
+
* Returns true if an update was installed (caller should re-exec).
|
|
36
|
+
* Returns false if already up to date or update failed.
|
|
37
|
+
* Never throws.
|
|
38
|
+
*/
|
|
39
|
+
export declare function autoUpdate(currentVersion: string): Promise<boolean>;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* CLI update checker + auto-updater.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* a notice
|
|
6
|
-
*
|
|
4
|
+
* checkForUpdate: Non-blocking — fires a background fetch and prints
|
|
5
|
+
* a notice on the next invocation if a newer version exists.
|
|
6
|
+
*
|
|
7
|
+
* autoUpdate: Blocking — used by `nookplot up` to self-update before
|
|
8
|
+
* starting the agent loop. Fetches latest version from npm, compares,
|
|
9
|
+
* and runs `npm install -g @nookplot/cli@latest` if outdated.
|
|
7
10
|
*
|
|
8
11
|
* Cache: ~/.nookplot/update-check.json (24hr TTL)
|
|
9
12
|
*
|
|
@@ -12,6 +15,7 @@
|
|
|
12
15
|
import fs from "fs";
|
|
13
16
|
import path from "path";
|
|
14
17
|
import os from "os";
|
|
18
|
+
import { execSync } from "child_process";
|
|
15
19
|
const CACHE_DIR = path.join(os.homedir(), ".nookplot");
|
|
16
20
|
const CACHE_FILE = path.join(CACHE_DIR, "update-check.json");
|
|
17
21
|
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
@@ -112,4 +116,69 @@ export function checkForUpdate(currentVersion) {
|
|
|
112
116
|
// Never crash the CLI
|
|
113
117
|
}
|
|
114
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Auto-update the CLI if a newer version is available on npm.
|
|
121
|
+
*
|
|
122
|
+
* This is a blocking call intended for `nookplot up` startup —
|
|
123
|
+
* it fetches the latest version, compares, and runs
|
|
124
|
+
* `npm install -g @nookplot/cli@latest` if outdated.
|
|
125
|
+
*
|
|
126
|
+
* Returns true if an update was installed (caller should re-exec).
|
|
127
|
+
* Returns false if already up to date or update failed.
|
|
128
|
+
* Never throws.
|
|
129
|
+
*/
|
|
130
|
+
export async function autoUpdate(currentVersion) {
|
|
131
|
+
try {
|
|
132
|
+
// Check cache first to avoid hammering npm on every `up`
|
|
133
|
+
const cached = readCache();
|
|
134
|
+
let latestVersion = cached?.latestVersion ?? null;
|
|
135
|
+
if (!cached) {
|
|
136
|
+
// Fetch from npm
|
|
137
|
+
const controller = new AbortController();
|
|
138
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
139
|
+
const res = await fetch(REGISTRY_URL, {
|
|
140
|
+
signal: controller.signal,
|
|
141
|
+
headers: { Accept: "application/json" },
|
|
142
|
+
});
|
|
143
|
+
clearTimeout(timeout);
|
|
144
|
+
if (!res.ok)
|
|
145
|
+
return false;
|
|
146
|
+
const data = (await res.json());
|
|
147
|
+
latestVersion = data.version ?? null;
|
|
148
|
+
if (latestVersion)
|
|
149
|
+
writeCache(latestVersion);
|
|
150
|
+
}
|
|
151
|
+
if (!latestVersion || !isNewer(currentVersion, latestVersion)) {
|
|
152
|
+
return false; // Already up to date
|
|
153
|
+
}
|
|
154
|
+
process.stderr.write(`\n Updating @nookplot/cli ${currentVersion} \u2192 ${latestVersion}...\n`);
|
|
155
|
+
// Detect package manager — prefer the one that installed us
|
|
156
|
+
const npmUserAgent = process.env.npm_config_user_agent || "";
|
|
157
|
+
let installCmd;
|
|
158
|
+
if (npmUserAgent.includes("pnpm")) {
|
|
159
|
+
installCmd = `pnpm add -g @nookplot/cli@${latestVersion}`;
|
|
160
|
+
}
|
|
161
|
+
else if (npmUserAgent.includes("yarn")) {
|
|
162
|
+
installCmd = `yarn global add @nookplot/cli@${latestVersion}`;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
installCmd = `npm install -g @nookplot/cli@${latestVersion}`;
|
|
166
|
+
}
|
|
167
|
+
execSync(installCmd, { stdio: "inherit", timeout: 60000 });
|
|
168
|
+
process.stderr.write(` Updated to @nookplot/cli@${latestVersion}\n\n`);
|
|
169
|
+
// Re-exec the same command with the new version
|
|
170
|
+
const { execFileSync } = await import("child_process");
|
|
171
|
+
execFileSync(process.argv[0], process.argv.slice(1), {
|
|
172
|
+
stdio: "inherit",
|
|
173
|
+
env: { ...process.env, _NOOKPLOT_UPDATED: "1" },
|
|
174
|
+
});
|
|
175
|
+
process.exit(0);
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
// Update failed — continue with current version
|
|
179
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
180
|
+
process.stderr.write(` Auto-update failed: ${msg}\n Continuing with current version.\n\n`);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
115
184
|
//# sourceMappingURL=updateCheck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `nookplot guilds` — Guild management.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* nookplot guilds — List guilds
|
|
6
|
-
* nookplot guilds show <id> — Show guild detail
|
|
7
|
-
* nookplot guilds suggest — Get AI-suggested guilds
|
|
8
|
-
* nookplot guilds create — Create a new guild (alias: propose)
|
|
9
|
-
* nookplot guilds propose — Create a new guild (alias: create)
|
|
10
|
-
* nookplot guilds approve <id> — Accept guild invitation
|
|
11
|
-
* nookplot guilds reject <id> — Decline guild invitation
|
|
12
|
-
* nookplot guilds leave <id> — Leave guild
|
|
13
|
-
*
|
|
14
|
-
* Note: `nookplot cliques` still works as an alias for backward compatibility.
|
|
15
|
-
*
|
|
16
|
-
* @module commands/guilds
|
|
17
|
-
*/
|
|
18
|
-
import type { Command } from "commander";
|
|
19
|
-
export declare function registerGuildsCommand(program: Command): void;
|
|
20
|
-
/** @deprecated Use registerGuildsCommand instead */
|
|
21
|
-
export declare const registerCliquesCommand: typeof registerGuildsCommand;
|
package/dist/commands/cliques.js
DELETED
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `nookplot guilds` — Guild management.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* nookplot guilds — List guilds
|
|
6
|
-
* nookplot guilds show <id> — Show guild detail
|
|
7
|
-
* nookplot guilds suggest — Get AI-suggested guilds
|
|
8
|
-
* nookplot guilds create — Create a new guild (alias: propose)
|
|
9
|
-
* nookplot guilds propose — Create a new guild (alias: create)
|
|
10
|
-
* nookplot guilds approve <id> — Accept guild invitation
|
|
11
|
-
* nookplot guilds reject <id> — Decline guild invitation
|
|
12
|
-
* nookplot guilds leave <id> — Leave guild
|
|
13
|
-
*
|
|
14
|
-
* Note: `nookplot cliques` still works as an alias for backward compatibility.
|
|
15
|
-
*
|
|
16
|
-
* @module commands/guilds
|
|
17
|
-
*/
|
|
18
|
-
import chalk from "chalk";
|
|
19
|
-
import ora from "ora";
|
|
20
|
-
import { ethers } from "ethers";
|
|
21
|
-
import { loadConfig, validateConfig } from "../config.js";
|
|
22
|
-
import { gatewayRequest, isGatewayError } from "../utils/http.js";
|
|
23
|
-
export function registerGuildsCommand(program) {
|
|
24
|
-
const cmd = program
|
|
25
|
-
.command("guilds")
|
|
26
|
-
.alias("cliques")
|
|
27
|
-
.description("Guild management — propose, join, and collaborate with agent guilds");
|
|
28
|
-
// nookplot cliques list (default)
|
|
29
|
-
cmd
|
|
30
|
-
.command("list", { isDefault: true })
|
|
31
|
-
.description("List all guilds")
|
|
32
|
-
.option("--json", "Output raw JSON")
|
|
33
|
-
.action(async (opts) => {
|
|
34
|
-
try {
|
|
35
|
-
await listCliques(program.opts(), opts);
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
39
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
// nookplot guilds show <id>
|
|
44
|
-
cmd
|
|
45
|
-
.command("show <id>")
|
|
46
|
-
.description("Show guild detail")
|
|
47
|
-
.option("--json", "Output raw JSON")
|
|
48
|
-
.action(async (id, opts) => {
|
|
49
|
-
try {
|
|
50
|
-
await showClique(program.opts(), id, opts);
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
54
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
// nookplot cliques suggest
|
|
59
|
-
cmd
|
|
60
|
-
.command("suggest")
|
|
61
|
-
.description("Get AI-suggested guild formations")
|
|
62
|
-
.option("--limit <n>", "Max suggestions", "5")
|
|
63
|
-
.option("--json", "Output raw JSON")
|
|
64
|
-
.action(async (opts) => {
|
|
65
|
-
try {
|
|
66
|
-
await suggestCliques(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 cliques mine
|
|
75
|
-
cmd
|
|
76
|
-
.command("mine")
|
|
77
|
-
.description("Show guilds you belong to")
|
|
78
|
-
.option("--json", "Output raw JSON")
|
|
79
|
-
.action(async (opts) => {
|
|
80
|
-
try {
|
|
81
|
-
await myCliques(program.opts(), opts);
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
85
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
// nookplot guilds create (primary) / propose (alias)
|
|
90
|
-
cmd
|
|
91
|
-
.command("create")
|
|
92
|
-
.alias("propose")
|
|
93
|
-
.description("Create a new guild")
|
|
94
|
-
.requiredOption("--name <name>", "Guild name")
|
|
95
|
-
.requiredOption("--members <addresses>", "Comma-separated member addresses")
|
|
96
|
-
.option("--description <desc>", "Guild description")
|
|
97
|
-
.option("--json", "Output raw JSON")
|
|
98
|
-
.action(async (opts) => {
|
|
99
|
-
try {
|
|
100
|
-
await proposeClique(program.opts(), opts);
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
104
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
105
|
-
process.exit(1);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
// nookplot guilds approve <id>
|
|
109
|
-
cmd
|
|
110
|
-
.command("approve <id>")
|
|
111
|
-
.description("Accept a guild invitation")
|
|
112
|
-
.option("--json", "Output raw JSON")
|
|
113
|
-
.action(async (id, opts) => {
|
|
114
|
-
try {
|
|
115
|
-
await cliqueAction(program.opts(), id, "approve", opts);
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
119
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
120
|
-
process.exit(1);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
// nookplot cliques reject <id>
|
|
124
|
-
cmd
|
|
125
|
-
.command("reject <id>")
|
|
126
|
-
.description("Decline a guild invitation")
|
|
127
|
-
.option("--json", "Output raw JSON")
|
|
128
|
-
.action(async (id, opts) => {
|
|
129
|
-
try {
|
|
130
|
-
await cliqueAction(program.opts(), id, "reject", opts);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
134
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
135
|
-
process.exit(1);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
// nookplot cliques leave <id>
|
|
139
|
-
cmd
|
|
140
|
-
.command("leave <id>")
|
|
141
|
-
.description("Leave a guild")
|
|
142
|
-
.option("--json", "Output raw JSON")
|
|
143
|
-
.action(async (id, opts) => {
|
|
144
|
-
try {
|
|
145
|
-
await cliqueAction(program.opts(), id, "leave", opts);
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
149
|
-
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
// ── Helpers ──────────────────────────────────────────────────
|
|
155
|
-
function loadAndValidate(globalOpts) {
|
|
156
|
-
const config = loadConfig({
|
|
157
|
-
configPath: globalOpts.config,
|
|
158
|
-
gatewayOverride: globalOpts.gateway,
|
|
159
|
-
apiKeyOverride: globalOpts.apiKey,
|
|
160
|
-
});
|
|
161
|
-
const errors = validateConfig(config);
|
|
162
|
-
if (errors.length > 0) {
|
|
163
|
-
for (const e of errors)
|
|
164
|
-
console.error(chalk.red(` ✗ ${e}`));
|
|
165
|
-
process.exit(1);
|
|
166
|
-
}
|
|
167
|
-
return config;
|
|
168
|
-
}
|
|
169
|
-
function requireWallet(config) {
|
|
170
|
-
if (!config.privateKey) {
|
|
171
|
-
console.error(chalk.red(" ✗ Private key required. Set NOOKPLOT_AGENT_PRIVATE_KEY."));
|
|
172
|
-
process.exit(1);
|
|
173
|
-
}
|
|
174
|
-
try {
|
|
175
|
-
return new ethers.Wallet(config.privateKey);
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
console.error(chalk.red(" ✗ Invalid private key."));
|
|
179
|
-
process.exit(1);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
const CLIQUE_STATUS_NAMES = {
|
|
183
|
-
Proposed: "Proposed",
|
|
184
|
-
Active: "Active",
|
|
185
|
-
Dissolved: "Dissolved",
|
|
186
|
-
};
|
|
187
|
-
// ── Command implementations ─────────────────────────────────
|
|
188
|
-
async function listCliques(globalOpts, cmdOpts) {
|
|
189
|
-
const config = loadAndValidate(globalOpts);
|
|
190
|
-
const spinner = ora("Fetching guilds…").start();
|
|
191
|
-
const result = await gatewayRequest(config.gateway, "GET", "/v1/cliques", { apiKey: config.apiKey });
|
|
192
|
-
if (isGatewayError(result)) {
|
|
193
|
-
spinner.fail("Failed to fetch cliques");
|
|
194
|
-
console.error(chalk.red(` ${result.error}`));
|
|
195
|
-
process.exit(1);
|
|
196
|
-
}
|
|
197
|
-
spinner.succeed(`${result.data.totalCliques} guild(s) on network`);
|
|
198
|
-
if (cmdOpts.json) {
|
|
199
|
-
console.log(JSON.stringify(result.data, null, 2));
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const cliques = result.data.cliques ?? [];
|
|
203
|
-
if (cliques.length === 0) {
|
|
204
|
-
console.log(chalk.dim("\n No guilds found.\n"));
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
console.log("");
|
|
208
|
-
for (const c of cliques) {
|
|
209
|
-
const status = CLIQUE_STATUS_NAMES[c.status] ?? c.status;
|
|
210
|
-
const statusColor = c.status === "Active" ? chalk.green : c.status === "Proposed" ? chalk.yellow : chalk.dim;
|
|
211
|
-
console.log(` ${chalk.bold(`#${c.cliqueId}`)} ${chalk.cyan(c.name)} ${statusColor(status)}`);
|
|
212
|
-
console.log(` Members: ${c.memberCount} | Creator: ${c.creator.id.slice(0, 10)}…`);
|
|
213
|
-
console.log("");
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
async function showClique(globalOpts, id, cmdOpts) {
|
|
217
|
-
const config = loadAndValidate(globalOpts);
|
|
218
|
-
const spinner = ora(`Fetching guild #${id}…`).start();
|
|
219
|
-
const result = await gatewayRequest(config.gateway, "GET", `/v1/cliques/${encodeURIComponent(id)}`, { apiKey: config.apiKey });
|
|
220
|
-
if (isGatewayError(result)) {
|
|
221
|
-
spinner.fail(`Guild #${id} not found`);
|
|
222
|
-
console.error(chalk.red(` ${result.error}`));
|
|
223
|
-
process.exit(1);
|
|
224
|
-
}
|
|
225
|
-
const c = result.data;
|
|
226
|
-
spinner.succeed(`Guild #${c.cliqueId}`);
|
|
227
|
-
if (cmdOpts.json) {
|
|
228
|
-
console.log(JSON.stringify(c, null, 2));
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
const status = CLIQUE_STATUS_NAMES[c.status] ?? c.status;
|
|
232
|
-
console.log("");
|
|
233
|
-
console.log(chalk.bold(` Guild #${c.cliqueId}`));
|
|
234
|
-
console.log(` Name: ${c.name}`);
|
|
235
|
-
console.log(` Status: ${status}`);
|
|
236
|
-
console.log(` Creator: ${c.creator.id}`);
|
|
237
|
-
console.log(` Members: ${c.memberCount}`);
|
|
238
|
-
console.log(` Created: ${new Date(Number(c.createdAt) * 1000).toLocaleString()}`);
|
|
239
|
-
if (c.members && c.members.length > 0) {
|
|
240
|
-
console.log("");
|
|
241
|
-
console.log(chalk.bold(" Members:"));
|
|
242
|
-
for (const m of c.members) {
|
|
243
|
-
const mStatus = m.status === "Approved" ? chalk.green("✓") : m.status === "Pending" ? chalk.yellow("…") : chalk.dim(m.status);
|
|
244
|
-
console.log(` ${mStatus} ${m.agent.id.slice(0, 10)}…`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
if (c.collectiveSpawns && c.collectiveSpawns.length > 0) {
|
|
248
|
-
console.log("");
|
|
249
|
-
console.log(chalk.bold(" Collective Spawns:"));
|
|
250
|
-
for (const s of c.collectiveSpawns) {
|
|
251
|
-
console.log(` • Deployment: ${s.deployment.id} (${new Date(Number(s.createdAt) * 1000).toLocaleDateString()})`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
console.log("");
|
|
255
|
-
}
|
|
256
|
-
async function suggestCliques(globalOpts, cmdOpts) {
|
|
257
|
-
const config = loadAndValidate(globalOpts);
|
|
258
|
-
const spinner = ora("Getting guild suggestions…").start();
|
|
259
|
-
const limit = Math.min(Math.max(parseInt(cmdOpts.limit ?? "5", 10) || 5, 1), 20);
|
|
260
|
-
const result = await gatewayRequest(config.gateway, "GET", `/v1/cliques/suggest?limit=${limit}`, { apiKey: config.apiKey });
|
|
261
|
-
if (isGatewayError(result)) {
|
|
262
|
-
spinner.fail("Failed to get suggestions");
|
|
263
|
-
console.error(chalk.red(` ${result.error}`));
|
|
264
|
-
process.exit(1);
|
|
265
|
-
}
|
|
266
|
-
const { suggestions } = result.data;
|
|
267
|
-
spinner.succeed(`${suggestions.length} suggestion(s)`);
|
|
268
|
-
if (cmdOpts.json) {
|
|
269
|
-
console.log(JSON.stringify(result.data, null, 2));
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
if (suggestions.length === 0) {
|
|
273
|
-
console.log(chalk.dim("\n No suggestions available yet.\n"));
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
console.log("");
|
|
277
|
-
for (let i = 0; i < suggestions.length; i++) {
|
|
278
|
-
const s = suggestions[i];
|
|
279
|
-
console.log(` ${chalk.bold(`${i + 1}.`)} ${chalk.cyan(s.reason)} ${chalk.dim(`(score: ${s.score})`)}`);
|
|
280
|
-
console.log(` Agents: ${s.agents.map((a) => a.slice(0, 10) + "…").join(", ")}`);
|
|
281
|
-
console.log("");
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
async function myCliques(globalOpts, cmdOpts) {
|
|
285
|
-
const config = loadAndValidate(globalOpts);
|
|
286
|
-
if (!config.privateKey) {
|
|
287
|
-
console.error(chalk.red(" ✗ Private key required to find your guilds. Set NOOKPLOT_AGENT_PRIVATE_KEY."));
|
|
288
|
-
process.exit(1);
|
|
289
|
-
}
|
|
290
|
-
let wallet;
|
|
291
|
-
try {
|
|
292
|
-
wallet = new ethers.Wallet(config.privateKey);
|
|
293
|
-
}
|
|
294
|
-
catch {
|
|
295
|
-
console.error(chalk.red(" ✗ Invalid private key."));
|
|
296
|
-
process.exit(1);
|
|
297
|
-
}
|
|
298
|
-
const spinner = ora("Fetching your guilds…").start();
|
|
299
|
-
const result = await gatewayRequest(config.gateway, "GET", `/v1/cliques/agent/${wallet.address}`, { apiKey: config.apiKey });
|
|
300
|
-
if (isGatewayError(result)) {
|
|
301
|
-
spinner.fail("Failed to fetch your guilds");
|
|
302
|
-
console.error(chalk.red(` ${result.error}`));
|
|
303
|
-
process.exit(1);
|
|
304
|
-
}
|
|
305
|
-
const { cliqueIds } = result.data;
|
|
306
|
-
spinner.succeed(`You belong to ${cliqueIds.length} guild(s)`);
|
|
307
|
-
if (cmdOpts.json) {
|
|
308
|
-
console.log(JSON.stringify(result.data, null, 2));
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
if (cliqueIds.length === 0) {
|
|
312
|
-
console.log(chalk.dim("\n You are not in any guilds yet.\n"));
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
console.log("");
|
|
316
|
-
for (const id of cliqueIds) {
|
|
317
|
-
console.log(` • Guild #${id}`);
|
|
318
|
-
}
|
|
319
|
-
console.log(chalk.dim(`\n Use ${chalk.cyan("nookplot guilds show <id>")} for details.\n`));
|
|
320
|
-
}
|
|
321
|
-
async function proposeClique(globalOpts, cmdOpts) {
|
|
322
|
-
const config = loadAndValidate(globalOpts);
|
|
323
|
-
const wallet = requireWallet(config);
|
|
324
|
-
const members = cmdOpts.members.split(",").map((s) => s.trim()).filter(Boolean);
|
|
325
|
-
for (const m of members) {
|
|
326
|
-
if (!ethers.isAddress(m)) {
|
|
327
|
-
console.error(chalk.red(` ✗ Invalid address: ${m}`));
|
|
328
|
-
process.exit(1);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
if (members.length < 1) {
|
|
332
|
-
console.error(chalk.red(" ✗ At least one member address required."));
|
|
333
|
-
process.exit(1);
|
|
334
|
-
}
|
|
335
|
-
const spinner = ora("Proposing guild…").start();
|
|
336
|
-
// 1. Prepare
|
|
337
|
-
const prepareResult = await gatewayRequest(config.gateway, "POST", "/v1/prepare/clique", {
|
|
338
|
-
apiKey: config.apiKey,
|
|
339
|
-
body: {
|
|
340
|
-
name: cmdOpts.name,
|
|
341
|
-
description: cmdOpts.description ?? "",
|
|
342
|
-
members,
|
|
343
|
-
},
|
|
344
|
-
});
|
|
345
|
-
if (isGatewayError(prepareResult)) {
|
|
346
|
-
spinner.fail("Failed to prepare guild proposal");
|
|
347
|
-
console.error(chalk.red(` ${prepareResult.error}`));
|
|
348
|
-
process.exit(1);
|
|
349
|
-
}
|
|
350
|
-
// 2. Sign
|
|
351
|
-
const { forwardRequest, domain, types } = prepareResult.data;
|
|
352
|
-
const sig = await wallet.signTypedData(domain, types, forwardRequest);
|
|
353
|
-
// 3. Relay
|
|
354
|
-
const relayResult = await gatewayRequest(config.gateway, "POST", "/v1/relay", { apiKey: config.apiKey, body: { ...forwardRequest, signature: sig } });
|
|
355
|
-
if (isGatewayError(relayResult)) {
|
|
356
|
-
spinner.fail("Failed to relay guild proposal");
|
|
357
|
-
console.error(chalk.red(` ${relayResult.error}`));
|
|
358
|
-
process.exit(1);
|
|
359
|
-
}
|
|
360
|
-
if (cmdOpts.json) {
|
|
361
|
-
spinner.stop();
|
|
362
|
-
console.log(JSON.stringify({ name: cmdOpts.name, members, txHash: relayResult.data.txHash }, null, 2));
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
spinner.succeed(chalk.green(`Guild "${cmdOpts.name}" proposed`));
|
|
366
|
-
console.log(` Members: ${members.length}`);
|
|
367
|
-
console.log(` TX: ${relayResult.data.txHash}`);
|
|
368
|
-
console.log(chalk.dim(`\n Members must approve with ${chalk.cyan("nookplot guilds approve <id>")}.\n`));
|
|
369
|
-
}
|
|
370
|
-
async function cliqueAction(globalOpts, id, action, cmdOpts) {
|
|
371
|
-
const config = loadAndValidate(globalOpts);
|
|
372
|
-
const wallet = requireWallet(config);
|
|
373
|
-
const actionLabels = {
|
|
374
|
-
approve: { present: "Approving", past: "Accepted invitation to" },
|
|
375
|
-
reject: { present: "Rejecting", past: "Declined invitation to" },
|
|
376
|
-
leave: { present: "Leaving", past: "Left" },
|
|
377
|
-
};
|
|
378
|
-
const label = actionLabels[action];
|
|
379
|
-
const spinner = ora(`${label.present} guild #${id}…`).start();
|
|
380
|
-
// 1. Prepare
|
|
381
|
-
const prepareResult = await gatewayRequest(config.gateway, "POST", `/v1/prepare/clique/${encodeURIComponent(id)}/${action}`, { apiKey: config.apiKey, body: {} });
|
|
382
|
-
if (isGatewayError(prepareResult)) {
|
|
383
|
-
spinner.fail(`Failed to prepare ${action}`);
|
|
384
|
-
console.error(chalk.red(` ${prepareResult.error}`));
|
|
385
|
-
process.exit(1);
|
|
386
|
-
}
|
|
387
|
-
// 2. Sign
|
|
388
|
-
const { forwardRequest, domain, types } = prepareResult.data;
|
|
389
|
-
const sig = await wallet.signTypedData(domain, types, forwardRequest);
|
|
390
|
-
// 3. Relay
|
|
391
|
-
const relayResult = await gatewayRequest(config.gateway, "POST", "/v1/relay", { apiKey: config.apiKey, body: { ...forwardRequest, signature: sig } });
|
|
392
|
-
if (isGatewayError(relayResult)) {
|
|
393
|
-
spinner.fail(`Failed to relay ${action}`);
|
|
394
|
-
console.error(chalk.red(` ${relayResult.error}`));
|
|
395
|
-
process.exit(1);
|
|
396
|
-
}
|
|
397
|
-
if (cmdOpts.json) {
|
|
398
|
-
spinner.stop();
|
|
399
|
-
console.log(JSON.stringify({ cliqueId: id, action, txHash: relayResult.data.txHash }, null, 2));
|
|
400
|
-
return;
|
|
401
|
-
}
|
|
402
|
-
spinner.succeed(chalk.green(`${label.past} guild #${id}`));
|
|
403
|
-
console.log(` TX: ${relayResult.data.txHash}`);
|
|
404
|
-
console.log("");
|
|
405
|
-
}
|
|
406
|
-
/** @deprecated Use registerGuildsCommand instead */
|
|
407
|
-
export const registerCliquesCommand = registerGuildsCommand;
|
|
408
|
-
//# sourceMappingURL=cliques.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cliques.js","sourceRoot":"","sources":["../../src/commands/cliques.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|