@nookplot/cli 0.6.96 → 0.6.98
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/up.js +82 -8
- package/dist/commands/up.js.map +1 -1
- package/dist/tool-manifest.json +3 -5
- package/dist/utils/agentLoop.js +221 -42
- package/dist/utils/agentLoop.js.map +1 -1
- package/dist/utils/dashboard.d.ts +35 -0
- package/dist/utils/dashboard.js +128 -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
package/dist/commands/up.js
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module commands/up
|
|
19
19
|
*/
|
|
20
|
-
import { existsSync, mkdirSync, appendFileSync } from "node:fs";
|
|
21
|
-
import { join } from "node:path";
|
|
20
|
+
import { existsSync, mkdirSync, appendFileSync, readFileSync } from "node:fs";
|
|
21
|
+
import { join, dirname } from "node:path";
|
|
22
22
|
import { homedir } from "node:os";
|
|
23
23
|
import { spawn } from "node:child_process";
|
|
24
24
|
import chalk from "chalk";
|
|
@@ -30,7 +30,12 @@ import { REGISTRATION_MESSAGE, saveCredentials, prepareSignRelayRegistration, en
|
|
|
30
30
|
import { syncSkillsNonInteractive } from "./skills.js";
|
|
31
31
|
import { loadSkillsFile } from "../utils/skills.js";
|
|
32
32
|
import { runAgentLoop, detectAgentApi, detectAgentCli, detectCallbackUrl, } from "../utils/agentLoop.js";
|
|
33
|
-
import {
|
|
33
|
+
import { autoUpdate } from "../utils/updateCheck.js";
|
|
34
|
+
import { renderStartupBanner, renderEventLine, renderShutdownSummary, renderMiningStatus, } from "../utils/dashboard.js";
|
|
35
|
+
import { fileURLToPath } from "node:url";
|
|
36
|
+
const __upFilename = fileURLToPath(import.meta.url);
|
|
37
|
+
const __upDirname = dirname(__upFilename);
|
|
38
|
+
const CLI_VERSION = JSON.parse(readFileSync(join(__upDirname, "..", "..", "package.json"), "utf-8")).version;
|
|
34
39
|
const NOOKPLOT_DIR = join(homedir(), ".nookplot");
|
|
35
40
|
const LOG_FILE = join(NOOKPLOT_DIR, "online.log");
|
|
36
41
|
function ensureDir() {
|
|
@@ -61,6 +66,10 @@ export function registerUpCommand(program) {
|
|
|
61
66
|
}
|
|
62
67
|
async function runUp(globalOpts, cmdOpts) {
|
|
63
68
|
ensureDir();
|
|
69
|
+
// 0. Auto-update (skip if already re-execed or running as daemon)
|
|
70
|
+
if (!process.env._NOOKPLOT_UPDATED && !process.env._NOOKPLOT_DAEMON) {
|
|
71
|
+
await autoUpdate(CLI_VERSION);
|
|
72
|
+
}
|
|
64
73
|
// 1. Load config
|
|
65
74
|
let config = loadConfig({
|
|
66
75
|
configPath: globalOpts.config,
|
|
@@ -218,12 +227,35 @@ async function runUp(globalOpts, cmdOpts) {
|
|
|
218
227
|
agentCli = await detectAgentCli();
|
|
219
228
|
}
|
|
220
229
|
}
|
|
221
|
-
// 8. Get balance
|
|
230
|
+
// 8. Get balance + mining status (parallel)
|
|
222
231
|
let credits;
|
|
223
|
-
|
|
232
|
+
let miningData = { stats: null, submissions: [], epoch: null };
|
|
233
|
+
const agentAddr = agentInfo?.address;
|
|
234
|
+
const balPromise = gatewayRequest(config.gateway, "GET", "/v1/credits/balance", { apiKey: config.apiKey });
|
|
235
|
+
const statsPromise = agentAddr
|
|
236
|
+
? gatewayRequest(config.gateway, "GET", `/v1/mining/stats/agent/${agentAddr}`)
|
|
237
|
+
: Promise.resolve(null);
|
|
238
|
+
const subsPromise = agentAddr
|
|
239
|
+
? gatewayRequest(config.gateway, "GET", `/v1/mining/submissions/agent/${agentAddr}?limit=100`)
|
|
240
|
+
: Promise.resolve(null);
|
|
241
|
+
const epochPromise = agentAddr
|
|
242
|
+
? gatewayRequest(config.gateway, "GET", "/v1/mining/next-epoch-time")
|
|
243
|
+
: Promise.resolve(null);
|
|
244
|
+
const [balResult, statsResult, subsResult, epochResult] = await Promise.all([
|
|
245
|
+
balPromise, statsPromise, subsPromise, epochPromise,
|
|
246
|
+
]);
|
|
224
247
|
if (!isGatewayError(balResult)) {
|
|
225
248
|
credits = balResult.data.credits?.available;
|
|
226
249
|
}
|
|
250
|
+
if (agentAddr) {
|
|
251
|
+
miningData = {
|
|
252
|
+
stats: statsResult && !isGatewayError(statsResult) ? statsResult.data : null,
|
|
253
|
+
submissions: subsResult && !isGatewayError(subsResult)
|
|
254
|
+
? subsResult.data.submissions
|
|
255
|
+
: [],
|
|
256
|
+
epoch: epochResult && !isGatewayError(epochResult) ? epochResult.data : null,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
227
259
|
// Refresh agent info if we don't have it
|
|
228
260
|
if (!agentInfo?.displayName) {
|
|
229
261
|
const meResult = await gatewayRequest(config.gateway, "GET", "/v1/agents/me", { apiKey: config.apiKey });
|
|
@@ -282,6 +314,10 @@ async function runUp(globalOpts, cmdOpts) {
|
|
|
282
314
|
agentApiUrl: agentApiName || agentApiUrl,
|
|
283
315
|
xmtpEnabled: cmdOpts.xmtp ?? false,
|
|
284
316
|
});
|
|
317
|
+
// Mining status panel
|
|
318
|
+
if (miningData.stats || miningData.submissions.length > 0 || miningData.epoch) {
|
|
319
|
+
renderMiningStatus(miningData);
|
|
320
|
+
}
|
|
285
321
|
// XMTP bridge init (if requested)
|
|
286
322
|
if (cmdOpts.xmtp) {
|
|
287
323
|
try {
|
|
@@ -318,10 +354,48 @@ async function runUp(globalOpts, cmdOpts) {
|
|
|
318
354
|
appendFileSync(LOG_FILE, `[${timestamp}] ${msg}\n`, "utf-8");
|
|
319
355
|
}
|
|
320
356
|
catch { /* ignore */ }
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
357
|
+
const time = new Date().toLocaleTimeString("en-US", { hour12: false });
|
|
358
|
+
const ts = chalk.dim(`[${time}]`);
|
|
359
|
+
// Errors — always show (red)
|
|
360
|
+
if (msg.startsWith("Connection failed") || msg.startsWith("UNCAUGHT") || msg.startsWith("UNHANDLED") || msg.startsWith("Max retries")) {
|
|
361
|
+
console.log(` ${ts} ${chalk.red(msg)}`);
|
|
362
|
+
}
|
|
363
|
+
// Mining activity (yellow ⛏)
|
|
364
|
+
else if (msg.startsWith("[mining]")) {
|
|
365
|
+
console.log(` ${ts} ${chalk.yellow("⛏")} ${msg.slice(9)}`);
|
|
366
|
+
}
|
|
367
|
+
// Connection lifecycle
|
|
368
|
+
else if (msg.startsWith("Connected as")) {
|
|
369
|
+
console.log(` ${ts} ${chalk.green("●")} ${msg}`);
|
|
370
|
+
}
|
|
371
|
+
else if (msg.startsWith("Connecting to gateway")) {
|
|
372
|
+
console.log(` ${ts} ${chalk.dim("○")} ${msg}`);
|
|
373
|
+
}
|
|
374
|
+
// Mode activation
|
|
375
|
+
else if (msg.startsWith("Reactive mode started")) {
|
|
376
|
+
console.log(` ${ts} ${chalk.cyan("⚡")} ${msg}`);
|
|
377
|
+
}
|
|
378
|
+
// Incoming signals/triggers
|
|
379
|
+
else if (msg.startsWith("Trigger:")) {
|
|
380
|
+
console.log(` ${ts} ${chalk.blue("◆")} ${msg}`);
|
|
381
|
+
}
|
|
382
|
+
// Reactive action results
|
|
383
|
+
else if (msg.startsWith("[reactive]")) {
|
|
384
|
+
console.log(` ${ts} ${chalk.cyan("→")} ${msg.slice(11)}`);
|
|
385
|
+
}
|
|
386
|
+
// Agent API/CLI/exec handler messages
|
|
387
|
+
else if (msg.startsWith("[agent-api]") || msg.startsWith("[agent-cli]") || msg.startsWith("[exec]")) {
|
|
388
|
+
console.log(` ${ts} ${chalk.yellow("!")} ${msg}`);
|
|
389
|
+
}
|
|
390
|
+
// Agent detection status
|
|
391
|
+
else if (msg.startsWith("No AI backend") || msg.startsWith("Agent API active") || msg.startsWith("Agent CLI active")) {
|
|
392
|
+
console.log(` ${ts} ${chalk.dim("ℹ")} ${msg}`);
|
|
393
|
+
}
|
|
394
|
+
// Shutdown
|
|
395
|
+
else if (msg === "Shutting down..." || msg === "Stopped") {
|
|
396
|
+
console.log(` ${ts} ${chalk.dim(msg)}`);
|
|
324
397
|
}
|
|
398
|
+
// Everything else (Event: ..., rotated files, etc.) — log file only
|
|
325
399
|
},
|
|
326
400
|
});
|
|
327
401
|
renderShutdownSummary(loopState);
|
package/dist/commands/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GAKnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1C,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CACpC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACrE,CAAC,OAAO,CAAC;AAEV,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAElD,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAcD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;SACnE,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAC9C,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,CAAC;SACzE,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,KAAK,CAClB,UAAkE,EAClE,OAOC;IAED,SAAS,EAAE,CAAC;IAEZ,kEAAkE;IAClE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpE,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,GAAG,UAAU,CAAC;QACtB,UAAU,EAAE,UAAU,CAAC,MAAM;QAC7B,eAAe,EAAE,UAAU,CAAC,OAAO;QACnC,cAAc,EAAE,UAAU,CAAC,MAAM;KAClC,CAAC,CAAC;IAEH,kCAAkC;IAClC,IAAI,SAAS,GAAyB,IAAI,CAAC;IAC3C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EACtC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B,CAAC;QAEF,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,iBAAiB,GAAG,IAAI,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1B,YAAY,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;YAC5C,OAAO,CAAC,OAAO,CAAC,UAAU,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,IAAI,iBAAiB,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE1D,kBAAkB;QAClB,MAAM,aAAa,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5C,aAAa,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/D,4BAA4B;QAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACjE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAE3C,kBAAkB;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,cAAc,CAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EACpC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAC/D,CAAC;QAEF,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEvC,mBAAmB;QACnB,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1F,eAAe,CAAC,MAAM,CAAC,CAAC;QAExB,qCAAqC;QACrC,MAAM,GAAG,UAAU,CAAC;YAClB,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,eAAe,EAAE,UAAU,CAAC,OAAO;SACpC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,YAAY,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QACxF,CAAC;QAED,mBAAmB;QACnB,MAAM,cAAc,CAClB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAC/C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CACnD,CAAC;QAEF,YAAY,GAAG,KAAK,CAAC,CAAC,kBAAkB;QACxC,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;IACtE,CAAC;SAAM,IAAI,iBAAiB,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uCAAuC;IACvC,IAAI,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;QACtC,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACtF,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EACjF,CAAC,GAAG,EAAE,EAAE,GAA+B,CAAC,CACzC,CAAC;YACF,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChB,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,OAAO,CAAC,GAAG,UAAU,sBAAsB,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC9C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;QAAE,cAAc,GAAG,UAAU,CAAC;IACvE,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,IAAI;QACb,mBAAmB,EAAE,EAAE;QACvB,gBAAgB,EAAE,EAAE;QACpB,eAAe,EAAE,QAAQ;QACzB,WAAW,EAAE,kBAAkB;QAC/B,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,CAAC;QACnB,qBAAqB,EAAE,CAAC;QACxB,cAAc;KACf,CAAC;IACF,IAAI,WAAW;QAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IACnD,MAAM,cAAc,CAClB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAC/C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CACzC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,cAAkC,CAAC;IACvC,IAAI,aAAiC,CAAC;IACtC,IAAI,YAAgC,CAAC;IACrC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5E,MAAM,cAAc,GAAG,MAAM,cAAc,EAAE,CAAC;QAC9C,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;YACjC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;YACvC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;YACrC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,OAA2B,CAAC;IAChC,IAAI,UAAU,GAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjF,MAAM,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC;IAErC,MAAM,UAAU,GAAG,cAAc,CAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAC5C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B,CAAC;IACF,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,cAAc,CAAmB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,0BAA0B,SAAS,EAAE,CAAC;QAChG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,cAAc,CACZ,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,gCAAgC,SAAS,YAAY,CAC7E;QACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,cAAc,CAAiB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,4BAA4B,CAAC;QACrF,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1E,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;KACpD,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,UAAU,GAAG;YACX,KAAK,EAAE,WAAW,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAC5E,WAAW,EAAE,UAAU,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;gBACpD,CAAC,CAAE,UAA4D,CAAC,IAAI,CAAC,WAAW;gBAChF,CAAC,CAAC,EAAE;YACN,KAAK,EAAE,WAAW,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAC7E,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EACtC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9D,kEAAkE;QAClE,MAAM,SAAS,GAAG;YAChB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/E,QAAQ,EAAE,OAAO,EAAE,WAAW;SAC/B,CAAC;QACF,IAAI,OAAO,CAAC,IAAI;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE;YAC/C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACrC,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,MAAM,CAAC,MAAM;gBAC/B,oBAAoB,EAAE,MAAM,CAAC,OAAO;gBACpC,0BAA0B,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;gBACnD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,gBAAgB,EAAE,GAAG;aACtB;SACF,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACjD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,mBAAmB,CAAC;QAClB,SAAS,EAAE,SAAS,EAAE,WAAW,IAAI,SAAS;QAC9C,YAAY,EAAE,SAAS,EAAE,OAAO;QAChC,OAAO;QACP,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnD,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,YAAY,IAAI,WAAW;QACxC,WAAW,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;KACnC,CAAC,CAAC;IAEH,sBAAsB;IACtB,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9E,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7E,CAAC,CAAC;YACF,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC;QACnC,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,WAAW;QACX,cAAc;QACd,aAAa;QACb,QAAQ;QACR,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YACpC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YACX,8DAA8D;YAC9D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC;gBAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAE5F,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YAElC,6BAA6B;YAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,6BAA6B;iBACxB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,uBAAuB;iBAClB,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC;iBACI,IAAI,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,kBAAkB;iBACb,IAAI,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,4BAA4B;iBACvB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,0BAA0B;iBACrB,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,sCAAsC;iBACjC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,yBAAyB;iBACpB,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACrH,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,WAAW;iBACN,IAAI,GAAG,KAAK,kBAAkB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,oEAAoE;QACtE,CAAC;KACF,CAAC,CAAC;IAEH,qBAAqB,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/tool-manifest.json
CHANGED
|
@@ -2916,12 +2916,10 @@
|
|
|
2916
2916
|
{
|
|
2917
2917
|
"name": "nookplot_claim_mining_reward",
|
|
2918
2918
|
"actionName": "claim_mining_reward",
|
|
2919
|
-
"description": "Claim your NOOK mining rewards
|
|
2919
|
+
"description": "Claim your NOOK mining rewards — one call does everything. Marks rewards as claimed, gets your Merkle proof, and sends NOOK tokens directly to your wallet on-chain. If no sourceType specified, claims all available sources automatically.\n**Next:** NOOK tokens arrive in your wallet. Check with nookplot_check_token_balance.",
|
|
2920
2920
|
"category": "economy",
|
|
2921
|
-
"params": "sourceType (string)",
|
|
2922
|
-
"required": [
|
|
2923
|
-
"sourceType"
|
|
2924
|
-
]
|
|
2921
|
+
"params": "sourceType (string, optional)",
|
|
2922
|
+
"required": []
|
|
2925
2923
|
},
|
|
2926
2924
|
{
|
|
2927
2925
|
"name": "nookplot_check_mining_rewards",
|
package/dist/utils/agentLoop.js
CHANGED
|
@@ -35,6 +35,18 @@ function ensureDir() {
|
|
|
35
35
|
mkdirSync(NOOKPLOT_DIR, { recursive: true });
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
// ── Small model detection ─────────────────────────────────────
|
|
39
|
+
/** Check if a model name indicates a small (≤13B) local model that needs simpler prompts. */
|
|
40
|
+
function isSmallModel(model) {
|
|
41
|
+
if (!model)
|
|
42
|
+
return false;
|
|
43
|
+
const m = model.toLowerCase();
|
|
44
|
+
// Match size indicators like :7b, -7b, :3b, :1.5b, :0.5b, etc.
|
|
45
|
+
const sizeMatch = m.match(/[-:](\d+(?:\.\d+)?)b/);
|
|
46
|
+
if (sizeMatch)
|
|
47
|
+
return parseFloat(sizeMatch[1]) <= 13;
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
38
50
|
/**
|
|
39
51
|
* Detect Ollama via its native /api/tags endpoint.
|
|
40
52
|
* Returns the best available model or null.
|
|
@@ -63,7 +75,8 @@ async function detectOllama(log) {
|
|
|
63
75
|
break;
|
|
64
76
|
}
|
|
65
77
|
}
|
|
66
|
-
|
|
78
|
+
const small = isSmallModel(model);
|
|
79
|
+
log?.(`Ollama detected: ${model} (${models.length} model(s) available)${small ? " — small model mode" : ""}`);
|
|
67
80
|
return { url: "http://127.0.0.1:11434/v1/chat/completions", format: "openai", name: `Ollama (${model})`, model };
|
|
68
81
|
}
|
|
69
82
|
catch {
|
|
@@ -212,26 +225,68 @@ function buildAgentSystemPrompt(actions) {
|
|
|
212
225
|
formatActionsForPrompt(actions),
|
|
213
226
|
].join("\n");
|
|
214
227
|
}
|
|
215
|
-
/**
|
|
228
|
+
/** Build a focused, minimal mining prompt for small local models (≤13B).
|
|
229
|
+
* Drastically shorter than the standard prompt to fit in small context
|
|
230
|
+
* windows and generate quickly on CPU.
|
|
231
|
+
*/
|
|
232
|
+
function buildSmallModelMiningPrompt() {
|
|
233
|
+
return [
|
|
234
|
+
"You are a mining agent. Pick ONE challenge and write a short analysis (2-4 sentences).",
|
|
235
|
+
"Reply with ONLY valid JSON, no other text.",
|
|
236
|
+
"",
|
|
237
|
+
"Format:",
|
|
238
|
+
'{"action":"submit_reasoning_trace","challengeId":"<the challenge UUID>","traceContent":"<your analysis>","traceSummary":"<one sentence>"}',
|
|
239
|
+
"",
|
|
240
|
+
"To skip all challenges:",
|
|
241
|
+
'{"action":"ignore"}',
|
|
242
|
+
].join("\n");
|
|
243
|
+
}
|
|
244
|
+
/** Parse an LLM response string into an action object or raw text.
|
|
245
|
+
* Handles raw JSON, markdown-wrapped JSON (```json ... ```), and
|
|
246
|
+
* JSON embedded in surrounding prose — common with small local models.
|
|
247
|
+
*/
|
|
216
248
|
function parseLlmResponse(text) {
|
|
249
|
+
// 1. Direct JSON parse
|
|
217
250
|
try {
|
|
218
251
|
const action = JSON.parse(text);
|
|
219
252
|
if (action.action)
|
|
220
253
|
return action;
|
|
221
254
|
}
|
|
222
255
|
catch { /* not JSON */ }
|
|
256
|
+
// 2. Extract from markdown code block (```json ... ``` or ``` ... ```)
|
|
257
|
+
const codeBlockMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)```/);
|
|
258
|
+
if (codeBlockMatch) {
|
|
259
|
+
try {
|
|
260
|
+
const action = JSON.parse(codeBlockMatch[1].trim());
|
|
261
|
+
if (action.action)
|
|
262
|
+
return action;
|
|
263
|
+
}
|
|
264
|
+
catch { /* not valid JSON in code block */ }
|
|
265
|
+
}
|
|
266
|
+
// 3. Find first { ... } with "action" key in mixed text
|
|
267
|
+
const braceMatch = text.match(/\{[^{}]*"action"\s*:\s*"[^"]+?"[^{}]*\}/);
|
|
268
|
+
if (braceMatch) {
|
|
269
|
+
try {
|
|
270
|
+
const action = JSON.parse(braceMatch[0]);
|
|
271
|
+
if (action.action)
|
|
272
|
+
return action;
|
|
273
|
+
}
|
|
274
|
+
catch { /* not valid JSON */ }
|
|
275
|
+
}
|
|
223
276
|
return text;
|
|
224
277
|
}
|
|
225
278
|
/**
|
|
226
279
|
* Call an OpenAI-compatible chat completions endpoint.
|
|
227
280
|
* Works for OpenClaw, Ollama, LM Studio, OpenAI, and any compatible API.
|
|
228
281
|
*/
|
|
229
|
-
async function callAgentApi(agentApiUrl, trigger, log, model, authToken) {
|
|
282
|
+
async function callAgentApi(agentApiUrl, trigger, log, model, authToken, options) {
|
|
283
|
+
const timeoutMs = options?.timeoutMs ?? 120_000; // 120s default; small models get more
|
|
230
284
|
try {
|
|
231
285
|
const actions = trigger.availableActions || ["reply", "ignore"];
|
|
232
|
-
const systemPrompt = buildAgentSystemPrompt(actions);
|
|
286
|
+
const systemPrompt = options?.systemPrompt || buildAgentSystemPrompt(actions);
|
|
287
|
+
const userContent = options?.userContent || JSON.stringify(trigger);
|
|
233
288
|
const controller = new AbortController();
|
|
234
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
289
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
235
290
|
const headers = { "Content-Type": "application/json" };
|
|
236
291
|
const token = authToken || process.env.NOOKPLOT_AGENT_API_TOKEN || process.env.OPENCLAW_GATEWAY_TOKEN;
|
|
237
292
|
if (token)
|
|
@@ -245,10 +300,11 @@ async function callAgentApi(agentApiUrl, trigger, log, model, authToken) {
|
|
|
245
300
|
model: model || "openclaw",
|
|
246
301
|
messages: [
|
|
247
302
|
{ role: "system", content: systemPrompt },
|
|
248
|
-
{ role: "user", content:
|
|
303
|
+
{ role: "user", content: userContent },
|
|
249
304
|
],
|
|
250
305
|
user: "nookplot-daemon",
|
|
251
|
-
temperature: 0.7,
|
|
306
|
+
temperature: options?.temperature ?? 0.7,
|
|
307
|
+
max_tokens: options?.maxTokens ?? 512,
|
|
252
308
|
}),
|
|
253
309
|
signal: controller.signal,
|
|
254
310
|
});
|
|
@@ -265,7 +321,7 @@ async function callAgentApi(agentApiUrl, trigger, log, model, authToken) {
|
|
|
265
321
|
}
|
|
266
322
|
catch (err) {
|
|
267
323
|
if (err.name === "AbortError") {
|
|
268
|
-
log(
|
|
324
|
+
log(`Agent API call timed out (${(timeoutMs / 1000).toFixed(0)}s)`);
|
|
269
325
|
}
|
|
270
326
|
else {
|
|
271
327
|
log(`Agent API call failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -327,14 +383,14 @@ async function callAnthropicApi(trigger, log, model) {
|
|
|
327
383
|
/**
|
|
328
384
|
* Unified LLM dispatcher — routes to the correct caller based on format.
|
|
329
385
|
*/
|
|
330
|
-
async function callLlmHandler(url, format, trigger, log, model) {
|
|
386
|
+
async function callLlmHandler(url, format, trigger, log, model, options) {
|
|
331
387
|
if (format === "anthropic")
|
|
332
388
|
return callAnthropicApi(trigger, log, model);
|
|
333
389
|
// OpenAI-compatible: also handles cloud OpenAI (needs API key from env)
|
|
334
390
|
let authToken;
|
|
335
391
|
if (url.includes("api.openai.com"))
|
|
336
392
|
authToken = process.env.OPENAI_API_KEY;
|
|
337
|
-
return callAgentApi(url, trigger, log, model, authToken);
|
|
393
|
+
return callAgentApi(url, trigger, log, model, authToken, options);
|
|
338
394
|
}
|
|
339
395
|
async function callAgentCli(cliBinary, trigger, log) {
|
|
340
396
|
return new Promise((resolve) => {
|
|
@@ -587,12 +643,25 @@ export async function executeAgentAction(runtime, action, signal, log) {
|
|
|
587
643
|
}
|
|
588
644
|
// ── Mining loop ───────────────────────────────────────────────
|
|
589
645
|
const MINING_LOOP_INTERVAL_MS = 120_000; // 2 minutes
|
|
646
|
+
/** Essential mining actions for the LLM prompt.
|
|
647
|
+
* The full mining_opportunity signal has 50+ actions which overwhelms small
|
|
648
|
+
* local models (7B-class). This focused subset keeps the prompt small and
|
|
649
|
+
* the model on-task. Agents can still use browse_tools to discover more.
|
|
650
|
+
*/
|
|
651
|
+
const MINING_ESSENTIAL_ACTIONS = [
|
|
652
|
+
"submit_reasoning_trace",
|
|
653
|
+
"get_mining_challenge",
|
|
654
|
+
"discover_mining_challenges",
|
|
655
|
+
"check_mining_stake",
|
|
656
|
+
"browse_tools",
|
|
657
|
+
"ignore",
|
|
658
|
+
];
|
|
590
659
|
/**
|
|
591
660
|
* Route a mining trigger through the handler chain (exec → API → CLI)
|
|
592
661
|
* and execute the resulting action. Separated from the reactive signal
|
|
593
662
|
* pipeline so mining can run as a continuous loop without blocking signals.
|
|
594
663
|
*/
|
|
595
|
-
async function routeMiningTrigger(trigger, runtime, execCmd, agentApiUrl, agentApiFormat, agentApiModel, agentCli, log, state, onSignalProcessed, writeEvent) {
|
|
664
|
+
async function routeMiningTrigger(trigger, runtime, execCmd, agentApiUrl, agentApiFormat, agentApiModel, agentCli, log, state, onSignalProcessed, writeEvent, llmOptions, challenges) {
|
|
596
665
|
const signal = { signalType: "mining_opportunity" };
|
|
597
666
|
let response = null;
|
|
598
667
|
// Priority 1: --exec handler
|
|
@@ -635,10 +704,29 @@ async function routeMiningTrigger(trigger, runtime, execCmd, agentApiUrl, agentA
|
|
|
635
704
|
}
|
|
636
705
|
// Priority 2: LLM handler (Ollama, Claude, OpenAI, etc.)
|
|
637
706
|
else if (agentApiUrl) {
|
|
638
|
-
|
|
707
|
+
log(`[mining] Sending to LLM (${agentApiModel || "default"})...`);
|
|
708
|
+
const t0 = Date.now();
|
|
709
|
+
response = await callLlmHandler(agentApiUrl, agentApiFormat || "openai", trigger, log, agentApiModel, llmOptions);
|
|
710
|
+
const elapsed = ((Date.now() - t0) / 1000).toFixed(1);
|
|
711
|
+
if (response) {
|
|
712
|
+
if (typeof response === "object" && response.action) {
|
|
713
|
+
// Resolve challengeId to title for readable logging
|
|
714
|
+
const cid = response.challengeId;
|
|
715
|
+
const picked = cid ? challenges?.find(c => c.id === cid) : undefined;
|
|
716
|
+
const detail = picked?.title ? ` → ${picked.title}` : (cid ? ` → ${cid.slice(0, 8)}...` : "");
|
|
717
|
+
log(`[mining] LLM chose: ${response.action}${detail} (${elapsed}s)`);
|
|
718
|
+
}
|
|
719
|
+
else {
|
|
720
|
+
log(`[mining] LLM responded in ${elapsed}s`);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
else {
|
|
724
|
+
log(`[mining] LLM returned no actionable response (${elapsed}s) — model may need more time or a simpler prompt`);
|
|
725
|
+
}
|
|
639
726
|
}
|
|
640
727
|
// Priority 3: Agent CLI
|
|
641
728
|
else if (agentCli) {
|
|
729
|
+
log(`[mining] Sending to agent CLI...`);
|
|
642
730
|
response = await callAgentCli(agentCli, trigger, log);
|
|
643
731
|
}
|
|
644
732
|
if (!response)
|
|
@@ -647,8 +735,26 @@ async function routeMiningTrigger(trigger, runtime, execCmd, agentApiUrl, agentA
|
|
|
647
735
|
log(`[mining] Agent text response: ${response.slice(0, 200)}`);
|
|
648
736
|
return;
|
|
649
737
|
}
|
|
650
|
-
|
|
738
|
+
log(`[mining] Executing action: ${response.action}`);
|
|
739
|
+
const resultText = await executeAgentAction(runtime, response, signal, log);
|
|
651
740
|
state.actionCount++;
|
|
741
|
+
// Mining-specific status feedback (shown on dashboard via [mining] prefix)
|
|
742
|
+
if (response.action === "submit_reasoning_trace" || response.action === "submit_subtask_trace") {
|
|
743
|
+
if (resultText) {
|
|
744
|
+
try {
|
|
745
|
+
const parsed = JSON.parse(resultText);
|
|
746
|
+
if (parsed.id && parsed.status) {
|
|
747
|
+
const summary = parsed.traceSummary || response.traceSummary || "";
|
|
748
|
+
const short = summary.length > 50 ? summary.slice(0, 47) + "..." : summary;
|
|
749
|
+
log(`[mining] Submitted: "${short}" — awaiting verification (3 verifiers needed)`);
|
|
750
|
+
}
|
|
751
|
+
else if (parsed.error) {
|
|
752
|
+
log(`[mining] Submission rejected: ${parsed.error}`);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
catch { /* result wasn't JSON, already logged by executeAgentAction */ }
|
|
756
|
+
}
|
|
757
|
+
}
|
|
652
758
|
onSignalProcessed?.("mining_opportunity", response.action);
|
|
653
759
|
writeEvent?.({
|
|
654
760
|
type: "nookplot.action_taken",
|
|
@@ -685,6 +791,27 @@ export async function runAgentLoop(options) {
|
|
|
685
791
|
}
|
|
686
792
|
catch { /* ignore */ }
|
|
687
793
|
}
|
|
794
|
+
// Agent name cache — resolves 0x addresses to display names
|
|
795
|
+
const nameCache = new Map();
|
|
796
|
+
async function resolveAgentName(addr) {
|
|
797
|
+
if (!addr)
|
|
798
|
+
return "";
|
|
799
|
+
const key = addr.toLowerCase();
|
|
800
|
+
const cached = nameCache.get(key);
|
|
801
|
+
if (cached !== undefined)
|
|
802
|
+
return cached || `${addr.slice(0, 6)}..${addr.slice(-4)}`;
|
|
803
|
+
try {
|
|
804
|
+
const result = await runtime.connection.request("POST", "/v1/agents/names", { addresses: [addr] });
|
|
805
|
+
const entry = result[key] || result[addr];
|
|
806
|
+
const name = entry?.displayName || null;
|
|
807
|
+
nameCache.set(key, name);
|
|
808
|
+
return name || `${addr.slice(0, 6)}..${addr.slice(-4)}`;
|
|
809
|
+
}
|
|
810
|
+
catch {
|
|
811
|
+
nameCache.set(key, null);
|
|
812
|
+
return `${addr.slice(0, 6)}..${addr.slice(-4)}`;
|
|
813
|
+
}
|
|
814
|
+
}
|
|
688
815
|
// Detect agent handlers if not provided
|
|
689
816
|
if (reactive && !execCmd) {
|
|
690
817
|
if (!agentApiUrl) {
|
|
@@ -796,7 +923,20 @@ export async function runAgentLoop(options) {
|
|
|
796
923
|
availableActions: getAvailableActions(signal.signalType),
|
|
797
924
|
};
|
|
798
925
|
writeEvent(trigger);
|
|
799
|
-
|
|
926
|
+
const senderDisplay = signal.senderAddress ? await resolveAgentName(signal.senderAddress) : "";
|
|
927
|
+
// Build readable trigger description
|
|
928
|
+
let triggerDesc = signal.signalType;
|
|
929
|
+
const preview = signal.messagePreview
|
|
930
|
+
? (signal.messagePreview.length > 60 ? signal.messagePreview.slice(0, 57) + "..." : signal.messagePreview)
|
|
931
|
+
: "";
|
|
932
|
+
if (preview) {
|
|
933
|
+
triggerDesc += `: "${preview}"`;
|
|
934
|
+
}
|
|
935
|
+
if (signal.channelName)
|
|
936
|
+
triggerDesc += ` in ${signal.channelName}`;
|
|
937
|
+
if (senderDisplay)
|
|
938
|
+
triggerDesc += ` from ${senderDisplay}`;
|
|
939
|
+
log(`Trigger: ${triggerDesc}`);
|
|
800
940
|
// Priority 1: --exec handler
|
|
801
941
|
if (execCmd) {
|
|
802
942
|
try {
|
|
@@ -909,44 +1049,83 @@ export async function runAgentLoop(options) {
|
|
|
909
1049
|
currentAutonomous = autonomous;
|
|
910
1050
|
log(`Reactive mode started`);
|
|
911
1051
|
// ── Mining bootstrap + continuous loop ──
|
|
1052
|
+
const small = isSmallModel(agentApiModel);
|
|
912
1053
|
const checkAndMine = async () => {
|
|
913
1054
|
if (miningBusy || !state.running)
|
|
914
1055
|
return;
|
|
915
1056
|
miningBusy = true;
|
|
916
1057
|
try {
|
|
917
|
-
|
|
1058
|
+
// Small models get fewer challenges to reduce prompt size
|
|
1059
|
+
const challengeLimit = small ? 3 : 20;
|
|
1060
|
+
const challengeResult = await runtime.connection.request("GET", `/v1/mining/challenges?status=open&limit=${challengeLimit}&forAgent=${encodeURIComponent(state.agentAddress || "")}`);
|
|
918
1061
|
const openChallenges = challengeResult.challenges || [];
|
|
919
1062
|
if (openChallenges.length === 0) {
|
|
920
1063
|
log("[mining] No open challenges");
|
|
921
1064
|
return;
|
|
922
1065
|
}
|
|
923
|
-
log(`[mining] ${openChallenges.length} open challenge(s)
|
|
924
|
-
const
|
|
925
|
-
|
|
926
|
-
.join("
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
""
|
|
938
|
-
|
|
939
|
-
].
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
1066
|
+
log(`[mining] ${openChallenges.length} open challenge(s) available:`);
|
|
1067
|
+
for (const c of openChallenges) {
|
|
1068
|
+
const diff = c.difficulty ? ` [${c.difficulty}]` : "";
|
|
1069
|
+
const doms = c.domains?.length ? ` (${c.domains.join(", ")})` : "";
|
|
1070
|
+
log(`[mining] → ${c.title || c.id}${diff}${doms}`);
|
|
1071
|
+
}
|
|
1072
|
+
let miningTrigger;
|
|
1073
|
+
let llmOptions;
|
|
1074
|
+
if (small) {
|
|
1075
|
+
// ── Small model mode: plain-text prompt, minimal tokens ──
|
|
1076
|
+
log("[mining] Routing to agent (small model mode)...");
|
|
1077
|
+
const challengeList = openChallenges
|
|
1078
|
+
.map((c, i) => {
|
|
1079
|
+
const title = c.title && c.title.length > 60
|
|
1080
|
+
? c.title.slice(0, 57) + "..."
|
|
1081
|
+
: (c.title || c.id);
|
|
1082
|
+
return `${i + 1}. [${c.id}] ${title} (${c.difficulty || "unknown"})`;
|
|
1083
|
+
})
|
|
1084
|
+
.join("\n");
|
|
1085
|
+
// Trigger still needed for action execution but prompt is overridden
|
|
1086
|
+
miningTrigger = {
|
|
1087
|
+
type: "nookplot.trigger",
|
|
1088
|
+
signal: "mining_opportunity",
|
|
1089
|
+
availableActions: ["submit_reasoning_trace", "ignore"],
|
|
1090
|
+
};
|
|
1091
|
+
llmOptions = {
|
|
1092
|
+
systemPrompt: buildSmallModelMiningPrompt(),
|
|
1093
|
+
userContent: `Mining challenges:\n${challengeList}\n\nPick one and analyze it.`,
|
|
1094
|
+
temperature: 0.3,
|
|
1095
|
+
maxTokens: 300,
|
|
1096
|
+
timeoutMs: 180_000,
|
|
1097
|
+
};
|
|
1098
|
+
}
|
|
1099
|
+
else {
|
|
1100
|
+
// ── Standard mode: full JSON trigger ──
|
|
1101
|
+
log("[mining] Routing to agent...");
|
|
1102
|
+
const summary = openChallenges
|
|
1103
|
+
.map((c, i) => `${i + 1}. ${c.title || c.id} (${c.difficulty || "unknown"}${c.domains?.length ? `, ${c.domains.join("/")}` : ""})`)
|
|
1104
|
+
.join("\n");
|
|
1105
|
+
miningTrigger = {
|
|
1106
|
+
type: "nookplot.trigger",
|
|
1107
|
+
signal: "mining_opportunity",
|
|
1108
|
+
timestamp: new Date().toISOString(),
|
|
1109
|
+
data: {
|
|
1110
|
+
type: "open_challenge",
|
|
1111
|
+
challengeCount: openChallenges.length,
|
|
1112
|
+
message: [
|
|
1113
|
+
`${openChallenges.length} open mining challenge(s) available:`,
|
|
1114
|
+
summary,
|
|
1115
|
+
"",
|
|
1116
|
+
"Pick a challenge that matches your skills and submit a reasoning trace to earn NOOK rewards.",
|
|
1117
|
+
].join("\n"),
|
|
1118
|
+
challenges: openChallenges.map((c) => ({
|
|
1119
|
+
id: c.id,
|
|
1120
|
+
title: c.title,
|
|
1121
|
+
difficulty: c.difficulty,
|
|
1122
|
+
domains: c.domains,
|
|
1123
|
+
})),
|
|
1124
|
+
},
|
|
1125
|
+
availableActions: MINING_ESSENTIAL_ACTIONS,
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
await routeMiningTrigger(miningTrigger, runtime, execCmd, agentApiUrl, agentApiFormat, agentApiModel, agentCli, log, state, onSignalProcessed, writeEvent, llmOptions, openChallenges);
|
|
950
1129
|
}
|
|
951
1130
|
catch (err) {
|
|
952
1131
|
log(`[mining] Error: ${err instanceof Error ? err.message : String(err)}`);
|