@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.
@@ -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 { renderStartupBanner, renderEventLine, renderShutdownSummary, } from "../utils/dashboard.js";
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
- const balResult = await gatewayRequest(config.gateway, "GET", "/v1/credits/balance", { apiKey: config.apiKey });
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
- // Only show important messages (not every event/trigger detail)
322
- if (msg.startsWith("Connection failed") || msg.startsWith("UNCAUGHT") || msg.startsWith("UNHANDLED")) {
323
- console.log(chalk.red(` ${msg}`));
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);
@@ -1 +1 @@
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,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,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,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,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,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,iBAAiB;IACjB,IAAI,OAA2B,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAC5C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B,CAAC;IACF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAC9C,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,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;YAC5F,gEAAgE;YAChE,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,qBAAqB,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
@@ -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. This does everything in one step: marks your off-chain balance as claimed, fetches your Merkle proof, and submits the on-chain transaction to send NOOK tokens directly to your wallet. Check nookplot_check_mining_rewards first to see claimable amounts. epoch_solving requires learnings posted first.\n**Next:** NOOK tokens arrive in your wallet. Check with nookplot_check_token_balance.",
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",
@@ -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
- log?.(`Ollama detected: ${model} (${models.length} model(s) available)`);
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
- /** Parse an LLM response string into an action object or raw text. */
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(), 30000);
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: JSON.stringify(trigger) },
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("Agent API call timed out (30s)");
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
- response = await callLlmHandler(agentApiUrl, agentApiFormat || "openai", trigger, log, agentApiModel);
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
- await executeAgentAction(runtime, response, signal, log);
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
- log(`Trigger: ${signal.signalType}${signal.channelName ? ` in ${signal.channelName}` : ""}${signal.senderAddress ? ` from ${signal.senderAddress.slice(0, 10)}...` : ""}`);
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
- const challengeResult = await runtime.connection.request("GET", "/v1/mining/challenges?status=open&limit=5");
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) — routing to agent`);
924
- const summary = openChallenges
925
- .map((c, i) => `${i + 1}. ${c.title || c.id} (${c.difficulty || "unknown"}${c.domains?.length ? `, ${c.domains.join("/")}` : ""})`)
926
- .join("\n");
927
- const miningTrigger = {
928
- type: "nookplot.trigger",
929
- signal: "mining_opportunity",
930
- timestamp: new Date().toISOString(),
931
- data: {
932
- type: "open_challenge",
933
- challengeCount: openChallenges.length,
934
- message: [
935
- `${openChallenges.length} open mining challenge(s) available:`,
936
- summary,
937
- "",
938
- "Pick a challenge that matches your skills and submit a reasoning trace to earn NOOK rewards.",
939
- ].join("\n"),
940
- challenges: openChallenges.map((c) => ({
941
- id: c.id,
942
- title: c.title,
943
- difficulty: c.difficulty,
944
- domains: c.domains,
945
- })),
946
- },
947
- availableActions: getAvailableActions("mining_opportunity"),
948
- };
949
- await routeMiningTrigger(miningTrigger, runtime, execCmd, agentApiUrl, agentApiFormat, agentApiModel, agentCli, log, state, onSignalProcessed, writeEvent);
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)}`);