@nookplot/cli 0.7.15 → 0.7.16

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.
@@ -1,220 +0,0 @@
1
- /**
2
- * `nookplot mine` — Unified mining loop across all enabled tracks.
3
- *
4
- * Auto-detects local capabilities (env vars / Ollama / Python / GPU), shows an
5
- * earnings-preview banner per track, then runs `np.mining.start()` until
6
- * Ctrl+C / once-mode completion / budget exhaustion.
7
- *
8
- * Examples:
9
- * nookplot mine # auto-detect + run
10
- * nookplot mine --tracks knowledge,rlm
11
- * nookplot mine --once # solve open queue, then exit
12
- * nookplot mine --max-credits 5000
13
- * nookplot mine --guild <guildId>
14
- * nookplot mine --dry-run # log decisions, no submissions
15
- * nookplot mine --explain # print scoring math
16
- *
17
- * @module commands/mine
18
- */
19
- import chalk from "chalk";
20
- import ora from "ora";
21
- import { NookplotRuntime } from "@nookplot/runtime";
22
- import { loadConfig, validateConfig } from "../config.js";
23
- import { CAPABILITY_REFRESH_INTERVAL_MS, detectCapabilities, enabledTracks, } from "../utils/miningCapabilities.js";
24
- const VALID_TRACKS = ["knowledge", "embedding", "rlm", "gradient"];
25
- /** Register `nookplot mine` on the commander program. */
26
- export function registerMineCommand(program) {
27
- program
28
- .command("mine")
29
- .description("Run a unified mining loop across all enabled tracks")
30
- .option("--tracks <list>", "Comma-separated subset of tracks to mine (default: auto-detect)")
31
- .option("--once", "Solve all currently-open challenges, then exit")
32
- .option("--max-credits <n>", "Total credit budget for this session (default: 5000)")
33
- .option("--guild <id>", "Submit through a guild for tier boost")
34
- .option("--dry-run", "Show what would happen without submitting")
35
- .option("--explain", "Print scoring math for ranked challenges")
36
- .option("--tick-interval <ms>", "Loop tick interval in ms (default: 60000)")
37
- .action(async (opts) => {
38
- try {
39
- await runMine(program.opts(), opts);
40
- }
41
- catch (err) {
42
- const msg = err instanceof Error ? err.message : String(err);
43
- console.error(chalk.red(`\nMine failed: ${msg}`));
44
- process.exit(1);
45
- }
46
- });
47
- }
48
- async function runMine(globalOpts, opts) {
49
- const config = loadConfig({
50
- configPath: globalOpts.config,
51
- gatewayOverride: globalOpts.gateway,
52
- apiKeyOverride: globalOpts.apiKey,
53
- });
54
- const errors = validateConfig(config);
55
- if (errors.length > 0) {
56
- for (const e of errors)
57
- console.error(chalk.red(` ✗ ${e}`));
58
- process.exit(1);
59
- }
60
- // ── 1. Detect capabilities ─────────────────────────────────────────
61
- const detectSpinner = ora("Detecting mining capabilities...").start();
62
- let caps = await detectCapabilities();
63
- detectSpinner.stop();
64
- // ── 2. Filter to user-requested tracks (if any) ───────────────────
65
- let tracks;
66
- if (opts.tracks) {
67
- const requested = opts.tracks
68
- .split(",")
69
- .map((s) => s.trim().toLowerCase())
70
- .filter((s) => VALID_TRACKS.includes(s));
71
- if (requested.length === 0) {
72
- console.error(chalk.red(` ✗ No valid tracks in --tracks. Allowed: ${VALID_TRACKS.join(", ")}`));
73
- process.exit(1);
74
- }
75
- tracks = enabledTracks(caps).filter((t) => requested.includes(t));
76
- if (tracks.length === 0) {
77
- console.error(chalk.red(` ✗ None of the requested tracks (${requested.join(", ")}) are enabled locally.`));
78
- printCapabilityBanner(caps);
79
- process.exit(1);
80
- }
81
- }
82
- else {
83
- tracks = enabledTracks(caps);
84
- }
85
- if (tracks.length === 0) {
86
- console.error(chalk.red(" ✗ No mining tracks are enabled. Set up at least one of:"));
87
- printCapabilityBanner(caps);
88
- process.exit(1);
89
- }
90
- // ── 3. Show earnings preview banner ────────────────────────────────
91
- const runtime = new NookplotRuntime({
92
- gatewayUrl: config.gateway,
93
- apiKey: config.apiKey,
94
- privateKey: config.privateKey || undefined,
95
- });
96
- const previewSpinner = ora("Fetching earnings preview...").start();
97
- let preview = [];
98
- try {
99
- const res = await runtime.connection.request("GET", `/v1/mining/earnings-preview?capabilities=${tracks.join(",")}`);
100
- preview = res.tracks;
101
- previewSpinner.stop();
102
- }
103
- catch (err) {
104
- previewSpinner.warn("Earnings preview unavailable — proceeding without estimates");
105
- }
106
- printCapabilityBanner(caps, preview);
107
- // ── 4. Build and start the mining session ─────────────────────────
108
- await runtime.connect().catch((err) => {
109
- console.error(chalk.red(` ✗ Connect failed: ${err instanceof Error ? err.message : String(err)}`));
110
- process.exit(1);
111
- });
112
- const maxCredits = opts.maxCredits ? parseInt(opts.maxCredits, 10) : 5000;
113
- const tickIntervalMs = opts.tickInterval ? parseInt(opts.tickInterval, 10) : 60_000;
114
- const guildId = opts.guild;
115
- // Always surface error-tagged lines; `--explain` opts in to all loop chatter.
116
- // Runtime mining loop uses `[mining][error] ...` for failures and other
117
- // `[mining] ...` / `[mining][rank] ...` tags for trace-level info.
118
- const log = (msg) => {
119
- if (opts.explain || msg.startsWith("[mining][error]"))
120
- console.log(chalk.dim(msg));
121
- };
122
- const generateEmbeddings = makeOllamaEmbedder();
123
- console.log(chalk.green(`\n Starting mining loop... press Ctrl+C to stop.\n`));
124
- const session = await runtime.mining.start({
125
- tracks,
126
- maxCredits,
127
- guildId,
128
- once: opts.once,
129
- dryRun: opts.dryRun,
130
- explain: opts.explain,
131
- tickIntervalMs,
132
- generateEmbeddings,
133
- log,
134
- });
135
- // ── 5. Schedule periodic capability re-detect (1h cadence) + SIGHUP refresh
136
- const refreshTimer = setInterval(async () => {
137
- caps = await detectCapabilities();
138
- if (opts.explain) {
139
- console.log(chalk.dim(`[mine] capabilities refreshed — ${caps.filter((c) => c.enabled).map((c) => c.track).join(", ")}`));
140
- }
141
- }, CAPABILITY_REFRESH_INTERVAL_MS);
142
- process.on("SIGHUP", async () => {
143
- caps = await detectCapabilities();
144
- console.log(chalk.dim(`[mine] SIGHUP — capabilities re-detected: ${caps.filter((c) => c.enabled).map((c) => c.track).join(", ")}`));
145
- });
146
- // ── 6. Graceful shutdown on SIGINT ─────────────────────────────────
147
- const shutdown = async () => {
148
- clearInterval(refreshTimer);
149
- await session.stop();
150
- const stats = session.stats();
151
- const dryRunNote = stats.dryRun > 0 ? ` Dry-run ${stats.dryRun}.` : "";
152
- console.log(chalk.dim(`\n Mined ${stats.submitted} submissions in ${stats.ticks} ticks.`
153
- + ` Skipped ${stats.skipped}.${dryRunNote} Errors ${stats.errors}.`
154
- + ` Spent ${stats.creditsSpent} credits (estimate).`));
155
- await runtime.disconnect().catch(() => undefined);
156
- };
157
- process.on("SIGINT", () => { void shutdown().then(() => process.exit(0)); });
158
- await session.done;
159
- await shutdown();
160
- }
161
- // ─── Capability banner ─────────────────────────────────────────────────
162
- function printCapabilityBanner(caps, preview) {
163
- const lookup = new Map(preview?.map((p) => [p.track, p]));
164
- let total = 0;
165
- for (const c of caps) {
166
- const mark = c.enabled ? chalk.green("✓") : chalk.red("✗");
167
- const provider = c.provider ? chalk.dim(` ${c.provider}`) : "";
168
- const reason = c.reason ? chalk.dim(` ${c.reason}`) : "";
169
- const trackLabel = c.track.padEnd(11);
170
- const p = lookup.get(c.track);
171
- const estStr = p && c.enabled
172
- ? chalk.cyan(` ~${p.estNookPerHour.toLocaleString()} NOOK/hr (${p.openCount} open, ${(p.successRate * 100).toFixed(0)}% success)`)
173
- : "";
174
- console.log(` ${mark} ${trackLabel}${provider || reason}${estStr}`);
175
- if (c.enabled && p)
176
- total += p.estNookPerHour;
177
- }
178
- if (total > 0) {
179
- console.log(chalk.bold(` Total expected: ~${total.toLocaleString()} NOOK/hr`));
180
- }
181
- }
182
- // ─── Embedding callback (local Ollama) ─────────────────────────────────
183
- /**
184
- * Native dimension of the only Ollama model the CLI knows how to call. The
185
- * embedding track will skip any challenge with a different `dimensions` ask
186
- * — no silent vector-count mismatch, no fallback to a similar-but-wrong
187
- * embedder. Future work: route to a different model when the challenge
188
- * specifies one.
189
- */
190
- const OLLAMA_NOMIC_DIM = 768;
191
- function makeOllamaEmbedder() {
192
- return async (prompts, dimensions) => {
193
- if (dimensions !== OLLAMA_NOMIC_DIM) {
194
- throw new Error(`Ollama embedder only supports nomic-embed-text (${OLLAMA_NOMIC_DIM}-d), `
195
- + `but challenge requested ${dimensions}-d vectors`);
196
- }
197
- const out = [];
198
- for (const prompt of prompts) {
199
- try {
200
- const res = await fetch("http://127.0.0.1:11434/api/embeddings", {
201
- method: "POST",
202
- headers: { "Content-Type": "application/json" },
203
- body: JSON.stringify({ model: "nomic-embed-text", prompt }),
204
- });
205
- if (!res.ok)
206
- throw new Error(`ollama HTTP ${res.status}`);
207
- const data = (await res.json());
208
- if (!data.embedding || data.embedding.length !== OLLAMA_NOMIC_DIM) {
209
- throw new Error(`ollama returned ${data.embedding?.length ?? 0}-d embedding, expected ${OLLAMA_NOMIC_DIM}-d`);
210
- }
211
- out.push(data.embedding);
212
- }
213
- catch (err) {
214
- throw new Error(`Embedding failed: ${err instanceof Error ? err.message : String(err)}`);
215
- }
216
- }
217
- return out;
218
- };
219
- }
220
- //# sourceMappingURL=mine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mine.js","sourceRoot":"","sources":["../../src/commands/mine.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * `nookplot profile` — per-forged-agent profile management.
3
- *
4
- * Each forged agent gets its own profile at
5
- * `~/.nookplot/profiles/<name>/profile.json`. The shared API key lives
6
- * at `~/.nookplot/credentials.json` (stable, unchanged by profiles).
7
- * Switching profiles is just setting `NOOKPLOT_PROFILE` env — or using
8
- * `nookplot profile use <name>` to set a sticky default.
9
- *
10
- * Subcommands (mirror Hermes's `hermes profile` UX):
11
- * nookplot profile list — show all profiles with scope + default
12
- * nookplot profile current — which profile is active right now?
13
- * nookplot profile use <name> — set sticky default (writes ~/.nookplot/active-profile)
14
- * nookplot profile use --clear — back to unscoped (creator-direct) mode
15
- * nookplot profile create <name> <addr> — register a new profile manually
16
- * nookplot profile delete <name> — remove a profile (creds untouched)
17
- * nookplot profile show <name> — inspect one profile's details
18
- *
19
- * @module commands/profile
20
- */
21
- import type { Command } from "commander";
22
- export declare function registerProfileCommand(program: Command): void;
23
- /**
24
- * Helper exposed to other commands — returns the active profile's scope
25
- * (or null if no profile is active). Used by commands that want to honor
26
- * `--profile <name>` / NOOKPLOT_PROFILE / sticky default.
27
- */
28
- export declare function getActiveProfileScope(opts?: {
29
- explicitProfile?: string;
30
- }): {
31
- profileName: string;
32
- scopedAgentAddress: string;
33
- } | null;