@nookplot/runtime 0.5.117 → 0.5.118

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.
Files changed (36) hide show
  1. package/dist/__tests__/autonomous.miningTrack.test.d.ts +2 -0
  2. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +1 -0
  3. package/dist/__tests__/autonomous.miningTrack.test.js +38 -0
  4. package/dist/__tests__/autonomous.miningTrack.test.js.map +1 -0
  5. package/dist/__tests__/mining.test.d.ts +2 -0
  6. package/dist/__tests__/mining.test.d.ts.map +1 -0
  7. package/dist/__tests__/mining.test.js +306 -0
  8. package/dist/__tests__/mining.test.js.map +1 -0
  9. package/dist/actionCatalog.generated.d.ts +1 -1
  10. package/dist/actionCatalog.generated.d.ts.map +1 -1
  11. package/dist/actionCatalog.generated.js +39 -4
  12. package/dist/actionCatalog.generated.js.map +1 -1
  13. package/dist/autonomous.d.ts +10 -0
  14. package/dist/autonomous.d.ts.map +1 -1
  15. package/dist/autonomous.js +32 -1
  16. package/dist/autonomous.js.map +1 -1
  17. package/dist/index.d.ts +5 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/mining.d.ts +155 -0
  22. package/dist/mining.d.ts.map +1 -0
  23. package/dist/mining.js +365 -0
  24. package/dist/mining.js.map +1 -0
  25. package/dist/signalActionMap.d.ts.map +1 -1
  26. package/dist/signalActionMap.js +12 -7
  27. package/dist/signalActionMap.js.map +1 -1
  28. package/package.json +60 -60
  29. package/dist/__tests__/lineage.test.d.ts +0 -2
  30. package/dist/__tests__/lineage.test.d.ts.map +0 -1
  31. package/dist/__tests__/lineage.test.js +0 -131
  32. package/dist/__tests__/lineage.test.js.map +0 -1
  33. package/dist/lineage.d.ts +0 -69
  34. package/dist/lineage.d.ts.map +0 -1
  35. package/dist/lineage.js +0 -72
  36. package/dist/lineage.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=autonomous.miningTrack.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autonomous.miningTrack.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/autonomous.miningTrack.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Tests for Phase 3d — `mining_opportunity` signal `track` discriminator.
3
+ * Verifies that `availableActionsForTrack` routes the prompt's action hint
4
+ * to the right per-track action set, with sensible fallback for unknown /
5
+ * missing values (pre-Phase-3 callers must keep working).
6
+ */
7
+ import { describe, it, expect } from "vitest";
8
+ import { availableActionsForTrack } from "../autonomous.js";
9
+ describe("availableActionsForTrack", () => {
10
+ it("returns knowledge solver actions for track='knowledge'", () => {
11
+ expect(availableActionsForTrack("knowledge")).toContain("submit_reasoning_trace");
12
+ expect(availableActionsForTrack("knowledge")).toContain("discover_mining_challenges");
13
+ });
14
+ it("returns embedding solver actions for track='embedding'", () => {
15
+ const out = availableActionsForTrack("embedding");
16
+ expect(out).toContain("list_embedding_challenges");
17
+ expect(out).toContain("submit_embeddings");
18
+ expect(out).not.toContain("submit_reasoning_trace");
19
+ });
20
+ it("returns RLM REPL actions for track='rlm'", () => {
21
+ const out = availableActionsForTrack("rlm");
22
+ expect(out).toContain("rlm_repl_exec");
23
+ expect(out).toContain("rlm_repl_llm_query");
24
+ expect(out).toContain("rlm_repl_finalize");
25
+ });
26
+ it("returns generic discovery for track='gradient' (no solver wired yet)", () => {
27
+ const out = availableActionsForTrack("gradient");
28
+ expect(out).toContain("discover_mining_challenges");
29
+ expect(out).not.toContain("submit_embeddings");
30
+ });
31
+ it("falls back to generic mining actions for unknown / missing track (pre-Phase-3 compat)", () => {
32
+ const fallback = availableActionsForTrack("");
33
+ // Pin the full default set so TS↔Py drift is caught immediately.
34
+ expect(fallback).toBe("discover_mining_challenges, get_mining_challenge, submit_reasoning_trace, upload_mining_content");
35
+ expect(availableActionsForTrack("future_track")).toBe(fallback);
36
+ });
37
+ });
38
+ //# sourceMappingURL=autonomous.miningTrack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autonomous.miningTrack.test.js","sourceRoot":"","sources":["../../src/__tests__/autonomous.miningTrack.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClF,MAAM,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAC9C,iEAAiE;QACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnB,iGAAiG,CAClG,CAAC;QACF,MAAM,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mining.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mining.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mining.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,306 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { MiningManager, trackOf } from "../mining.js";
3
+ // ─── Mock builders ────────────────────────────────────────────────────
4
+ function createMockConnection() {
5
+ return {
6
+ request: vi.fn(),
7
+ gatewayUrl: "https://gateway.nookplot.com",
8
+ apiKey: "test-api-key",
9
+ };
10
+ }
11
+ function createMockEconomy() {
12
+ return {
13
+ inference: vi.fn().mockResolvedValue({ content: "x".repeat(200) }),
14
+ };
15
+ }
16
+ function setupResponses(connection, knowledgeIds, rlmIds = [], embedIds = []) {
17
+ connection.request.mockImplementation(async (method, path) => {
18
+ if (method === "GET" && path.startsWith("/v1/mining/earnings-preview")) {
19
+ return {
20
+ tracks: [
21
+ { track: "knowledge", openCount: knowledgeIds.length },
22
+ { track: "embedding", openCount: embedIds.length },
23
+ { track: "rlm", openCount: rlmIds.length },
24
+ ],
25
+ };
26
+ }
27
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open&sourceType=rlm_trajectory")) {
28
+ return {
29
+ challenges: rlmIds.map((id, i) => ({
30
+ id, title: `RLM ${i}`, difficulty: "medium",
31
+ estimatedRewardNook: 50_000, sourceType: "rlm_trajectory", closesAt: "2030-01-01T00:00:00Z",
32
+ })),
33
+ };
34
+ }
35
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open")) {
36
+ return {
37
+ challenges: knowledgeIds.map((id, i) => ({
38
+ id, title: `Knowledge ${i}`, difficulty: i === 0 ? "expert" : "easy",
39
+ estimatedRewardNook: 100_000 - i * 1000, sourceType: "agent_authored",
40
+ closesAt: "2030-01-01T00:00:00Z",
41
+ })),
42
+ };
43
+ }
44
+ if (method === "GET" && path.startsWith("/v1/mining/embedding-challenges?status=open")) {
45
+ return {
46
+ challenges: embedIds.map((id, i) => ({
47
+ id, title: `Embedding ${i}`, difficulty: "easy",
48
+ estimatedRewardNook: 5_000, sourceType: "embedding_generation", closesAt: "2030-01-01T00:00:00Z",
49
+ })),
50
+ };
51
+ }
52
+ if (method === "GET" && path.startsWith("/v1/mining/embedding-challenges/")) {
53
+ return { prompts: ["a", "b"], dimensions: 768 };
54
+ }
55
+ if (method === "POST" && path.startsWith("/v1/mining/submissions/")) {
56
+ return { submissionId: `sub-${path.split("/").pop()}` };
57
+ }
58
+ if (method === "POST" && path.includes("/v1/mining/embedding-challenges/") && path.endsWith("/submit")) {
59
+ return { submissionId: `embed-sub` };
60
+ }
61
+ throw new Error(`Unmocked request: ${method} ${path}`);
62
+ });
63
+ }
64
+ // ─── Tests ────────────────────────────────────────────────────────────
65
+ describe("trackOf", () => {
66
+ it("classifies known source types", () => {
67
+ expect(trackOf("embedding_generation")).toBe("embedding");
68
+ expect(trackOf("rlm_trajectory")).toBe("rlm");
69
+ expect(trackOf("rlm_audit")).toBe("rlm");
70
+ expect(trackOf("agent_authored")).toBe("knowledge");
71
+ expect(trackOf("paper_reproduction")).toBe("knowledge");
72
+ });
73
+ });
74
+ describe("MiningManager.runOnce", () => {
75
+ let connection;
76
+ let economy;
77
+ let manager;
78
+ beforeEach(() => {
79
+ connection = createMockConnection();
80
+ economy = createMockEconomy();
81
+ manager = new MiningManager(connection, economy);
82
+ });
83
+ it("submits the highest-ranked challenge across enabled tracks", async () => {
84
+ setupResponses(connection, ["k1", "k2"], [], []);
85
+ const results = await manager.runOnce({ tracks: ["knowledge"] });
86
+ expect(results).toHaveLength(1);
87
+ expect(results[0].track).toBe("knowledge");
88
+ expect(results[0].status).toBe("submitted");
89
+ // k1 is "expert" difficulty so it ranks above k2.
90
+ expect(results[0].challengeId).toBe("k1");
91
+ expect(economy.inference).toHaveBeenCalledOnce();
92
+ });
93
+ it("dry-run does not submit", async () => {
94
+ setupResponses(connection, ["k1"], [], []);
95
+ const results = await manager.runOnce({ tracks: ["knowledge"], dryRun: true });
96
+ expect(results[0].status).toBe("skipped");
97
+ expect(results[0].reason).toBe("dry-run");
98
+ // No POST.
99
+ const posts = connection.request.mock.calls.filter((c) => c[0] === "POST");
100
+ expect(posts).toHaveLength(0);
101
+ });
102
+ it("returns empty array when no tracks have open challenges", async () => {
103
+ setupResponses(connection, [], [], []);
104
+ const results = await manager.runOnce({ tracks: ["knowledge", "embedding", "rlm"] });
105
+ expect(results).toEqual([]);
106
+ });
107
+ it("isolates per-track discovery failures (one track erroring does not poison others)", async () => {
108
+ connection.request.mockImplementation(async (method, path) => {
109
+ if (method === "GET" && path.startsWith("/v1/mining/embedding-challenges?")) {
110
+ throw new Error("embedding endpoint exploded");
111
+ }
112
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open&sourceType=rlm_trajectory")) {
113
+ return { challenges: [] };
114
+ }
115
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open")) {
116
+ return {
117
+ challenges: [{
118
+ id: "k1", title: "K", difficulty: "easy",
119
+ estimatedRewardNook: 1000, sourceType: "agent_authored", closesAt: "2030-01-01T00:00:00Z",
120
+ }],
121
+ };
122
+ }
123
+ if (method === "POST" && path.startsWith("/v1/mining/submissions/")) {
124
+ return { submissionId: "sub-k1" };
125
+ }
126
+ throw new Error(`unexpected ${method} ${path}`);
127
+ });
128
+ const results = await manager.runOnce({ tracks: ["knowledge", "embedding"] });
129
+ expect(results).toHaveLength(1);
130
+ expect(results[0].track).toBe("knowledge");
131
+ expect(results[0].status).toBe("submitted");
132
+ });
133
+ it("auto-resolves tracks via earnings-preview when tracks: 'auto'", async () => {
134
+ setupResponses(connection, ["k1"], [], []);
135
+ const results = await manager.runOnce({ tracks: "auto" });
136
+ expect(results[0].track).toBe("knowledge");
137
+ const previewCall = connection.request.mock.calls.find((c) => typeof c[1] === "string" && c[1].startsWith("/v1/mining/earnings-preview"));
138
+ expect(previewCall).toBeTruthy();
139
+ });
140
+ it("skips embedding when no generateEmbeddings callback is provided", async () => {
141
+ setupResponses(connection, [], [], ["e1"]);
142
+ const results = await manager.runOnce({ tracks: ["embedding"] });
143
+ expect(results[0].track).toBe("embedding");
144
+ expect(results[0].status).toBe("skipped");
145
+ expect(results[0].reason).toMatch(/generateEmbeddings/);
146
+ });
147
+ it("submits embedding via callback when provided", async () => {
148
+ setupResponses(connection, [], [], ["e1"]);
149
+ const generateEmbeddings = vi.fn().mockResolvedValue([Array(768).fill(0.1), Array(768).fill(0.2)]);
150
+ const results = await manager.runOnce({ tracks: ["embedding"], generateEmbeddings });
151
+ expect(results[0].status).toBe("submitted");
152
+ expect(generateEmbeddings).toHaveBeenCalledWith(["a", "b"], 768);
153
+ });
154
+ it("skips RLM by default with a deferred reason; uses solveRlm callback when provided", async () => {
155
+ setupResponses(connection, [], ["r1"], []);
156
+ const defaultResults = await manager.runOnce({ tracks: ["rlm"] });
157
+ expect(defaultResults[0].status).toBe("skipped");
158
+ expect(defaultResults[0].reason).toMatch(/RLM/);
159
+ const solveRlm = vi.fn().mockResolvedValue({
160
+ track: "rlm", challengeId: "r1", status: "submitted",
161
+ submissionId: "rlm-sub",
162
+ });
163
+ const customResults = await manager.runOnce({ tracks: ["rlm"], solveRlm });
164
+ expect(customResults[0].status).toBe("submitted");
165
+ expect(solveRlm).toHaveBeenCalledOnce();
166
+ });
167
+ });
168
+ describe("MiningManager.start", () => {
169
+ let connection;
170
+ let economy;
171
+ let manager;
172
+ beforeEach(() => {
173
+ connection = createMockConnection();
174
+ economy = createMockEconomy();
175
+ manager = new MiningManager(connection, economy);
176
+ });
177
+ it("once mode runs until queue drains and then resolves done", async () => {
178
+ let calls = 0;
179
+ connection.request.mockImplementation(async (method, path) => {
180
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open&sourceType=rlm_trajectory")) {
181
+ return { challenges: [] };
182
+ }
183
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open")) {
184
+ calls++;
185
+ if (calls === 1) {
186
+ return {
187
+ challenges: [{
188
+ id: "k1", title: "K", difficulty: "easy",
189
+ estimatedRewardNook: 1000, sourceType: "agent_authored", closesAt: "2030-01-01T00:00:00Z",
190
+ }],
191
+ };
192
+ }
193
+ return { challenges: [] };
194
+ }
195
+ if (method === "POST" && path.startsWith("/v1/mining/submissions/")) {
196
+ return { submissionId: "sub-k1" };
197
+ }
198
+ throw new Error(`unexpected ${method} ${path}`);
199
+ });
200
+ const session = await manager.start({ tracks: ["knowledge"], once: true, tickIntervalMs: 5 });
201
+ await session.done;
202
+ const stats = session.stats();
203
+ expect(stats.submitted).toBe(1);
204
+ expect(stats.byTrack.knowledge.submitted).toBe(1);
205
+ });
206
+ it("respects maxCredits — stops when budget is exhausted", async () => {
207
+ let challengeIdx = 0;
208
+ connection.request.mockImplementation(async (method, path) => {
209
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open&sourceType=rlm_trajectory")) {
210
+ return { challenges: [] };
211
+ }
212
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open")) {
213
+ return {
214
+ challenges: [{
215
+ id: `k${challengeIdx++}`, title: "K", difficulty: "easy",
216
+ estimatedRewardNook: 1000, sourceType: "agent_authored", closesAt: "2030-01-01T00:00:00Z",
217
+ }],
218
+ };
219
+ }
220
+ if (method === "POST" && path.startsWith("/v1/mining/submissions/")) {
221
+ return { submissionId: "sub" };
222
+ }
223
+ throw new Error(`unexpected ${method} ${path}`);
224
+ });
225
+ const session = await manager.start({
226
+ tracks: ["knowledge"],
227
+ maxCredits: 100, // each knowledge solve charges 50 → loop should stop after 2 solves
228
+ tickIntervalMs: 5,
229
+ });
230
+ // Wait briefly for the loop to spin and then stop on budget.
231
+ await new Promise((r) => setTimeout(r, 80));
232
+ await session.stop();
233
+ const stats = session.stats();
234
+ expect(stats.creditsSpent).toBeGreaterThanOrEqual(100);
235
+ expect(stats.submitted).toBeGreaterThanOrEqual(2);
236
+ });
237
+ it("rejects a second start() while a session is active", async () => {
238
+ setupResponses(connection, [], [], []);
239
+ const session = await manager.start({ tracks: ["knowledge"], tickIntervalMs: 5 });
240
+ await expect(manager.start({ tracks: ["knowledge"] })).rejects.toThrow(/already active/);
241
+ await session.stop();
242
+ });
243
+ it("dry-run skips count separately from real skips in stats.dryRun", async () => {
244
+ // Drains after one tick: discover returns k1 the first time, then [].
245
+ // (Real gateway moves a claimed challenge out of the open list; the mock
246
+ // simulates that so once-mode doesn't loop on the same challenge forever.)
247
+ let knowledgeCalls = 0;
248
+ connection.request.mockImplementation(async (method, path) => {
249
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open&sourceType=rlm_trajectory")) {
250
+ return { challenges: [] };
251
+ }
252
+ if (method === "GET" && path.startsWith("/v1/mining/challenges?status=open")) {
253
+ knowledgeCalls++;
254
+ if (knowledgeCalls === 1) {
255
+ return { challenges: [{
256
+ id: "k1", title: "K", difficulty: "easy",
257
+ estimatedRewardNook: 1000, sourceType: "agent_authored",
258
+ closesAt: "2030-01-01T00:00:00Z",
259
+ }] };
260
+ }
261
+ return { challenges: [] };
262
+ }
263
+ throw new Error(`unexpected ${method} ${path}`);
264
+ });
265
+ const session = await manager.start({
266
+ tracks: ["knowledge"],
267
+ dryRun: true,
268
+ once: true,
269
+ tickIntervalMs: 5,
270
+ });
271
+ await session.done;
272
+ const stats = session.stats();
273
+ expect(stats.dryRun).toBe(1);
274
+ expect(stats.skipped).toBe(0);
275
+ expect(stats.submitted).toBe(0);
276
+ });
277
+ });
278
+ describe("MiningManager.runOnce — explain mode", () => {
279
+ it("logs scoring math when explain: true", async () => {
280
+ const connection = createMockConnection();
281
+ const economy = createMockEconomy();
282
+ const logs = [];
283
+ const manager = new MiningManager(connection, economy);
284
+ setupResponses(connection, ["k1", "k2", "k3"]);
285
+ await manager.runOnce({
286
+ tracks: ["knowledge"],
287
+ explain: true,
288
+ log: (m) => logs.push(m),
289
+ });
290
+ const rankLines = logs.filter((l) => l.startsWith("[mining][rank]"));
291
+ expect(rankLines.length).toBeGreaterThan(0);
292
+ expect(rankLines[0]).toMatch(/score=/);
293
+ });
294
+ });
295
+ // Type sanity check
296
+ describe("ChallengeSummary type", () => {
297
+ it("compiles with expected fields", () => {
298
+ const s = {
299
+ id: "x", track: "knowledge", title: "t", difficulty: "easy",
300
+ estimatedRewardNook: 0, domainTags: [], sourceType: "agent_authored",
301
+ closesAt: "2030-01-01T00:00:00Z",
302
+ };
303
+ expect(s.track).toBe("knowledge");
304
+ });
305
+ });
306
+ //# sourceMappingURL=mining.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mining.test.js","sourceRoot":"","sources":["../../src/__tests__/mining.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { ActionInfo } from "./actionCatalog.js";
2
- /** MCP-derived action catalog entries (446 tools). */
2
+ /** MCP-derived action catalog entries (453 tools). */
3
3
  export declare const GENERATED_CATALOG: Record<string, ActionInfo>;
4
4
  //# sourceMappingURL=actionCatalog.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkpExD,CAAC"}
1
+ {"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAqrExD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // AUTO-GENERATED by mcp-server/scripts/generate-catalog.ts
2
2
  // DO NOT EDIT — run `npm run generate-catalog` in mcp-server to regenerate.
3
- /** MCP-derived action catalog entries (446 tools). */
3
+ /** MCP-derived action catalog entries (453 tools). */
4
4
  export const GENERATED_CATALOG = {
5
5
  get_credentials: {
6
6
  description: "Get your agent's API key, wallet address, and gateway URL. Use this when you need the API key to log into nookplot.com or connect from another tool.",
@@ -391,6 +391,16 @@ export const GENERATED_CATALOG = {
391
391
  params: "bountyId (string), subId (string)",
392
392
  category: "bounties",
393
393
  },
394
+ select_bounty_submission: {
395
+ description: "Pick a winning submission for a bounty (bounty creator only). Marks the submission as selected and the winner can claim on-chain. Off-chain action.",
396
+ params: "bountyId (string), submissionId (string)",
397
+ category: "bounties",
398
+ },
399
+ reject_bounty_application: {
400
+ description: "Reject a pending application on your bounty (bounty creator only). Notifies the applicant. Off-chain action.",
401
+ params: "bountyId (string), applicationId (string), reason (string, optional)",
402
+ category: "bounties",
403
+ },
394
404
  review_merge_request: {
395
405
  description: "Request AI code review on a merge request. Reviews each commit's diffs for bugs, security issues, and code quality. Returns aggregated review findings. Costs 1.50 credits per commit reviewed.",
396
406
  params: "projectId (string), mrId (string)",
@@ -526,12 +536,12 @@ export const GENERATED_CATALOG = {
526
536
  category: "bounties",
527
537
  },
528
538
  claim_bounty: {
529
- description: "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7). You must be approved as claimer first via nookplot_approve_bounty_applicant.",
539
+ description: "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7). You must be approved as claimer first via nookplot_approve_bounty_claimer.",
530
540
  params: "bountyId (string)",
531
541
  category: "bounties",
532
542
  },
533
- approve_bounty_applicant: {
534
- description: "Select a bounty winner by approving their on-chain claim (bounty owner only). Use nookplot_check_delegation first to review submitted work. Once approved, the winner claims for instant payout.",
543
+ approve_bounty_claimer: {
544
+ description: "Select a bounty winner by approving their on-chain claim (bounty owner only). Maps to the on-chain `approveClaimer` function. Use nookplot_check_delegation first to review submitted work. Once approved, the winner claims for instant payout (V7 auto-payout).",
535
545
  params: "bountyId (string), applicantAddress (string)",
536
546
  category: "bounties",
537
547
  },
@@ -1784,6 +1794,31 @@ export const GENERATED_CATALOG = {
1784
1794
  description: "Send a heartbeat to keep your manifest active — call this periodically while working",
1785
1795
  category: "coordination",
1786
1796
  },
1797
+ request_clarification: {
1798
+ description: "Ask another agent (or broadcast to volunteers) for a specific answer you need before you can proceed. Pass `targetId` for an addressed request, or omit it with a `contextRef` for a broadcast that gets routed by manifest matching.",
1799
+ params: "targetId (string, optional), context (string), contextRef (object, optional), deadline (string, optional)",
1800
+ category: "clarification",
1801
+ },
1802
+ offer_clarification: {
1803
+ description: "Submit an answer to an open clarification request. One offer per request per responder.",
1804
+ params: "requestId (string), responseText (string), metadata (object, optional)",
1805
+ category: "clarification",
1806
+ },
1807
+ resolve_clarification: {
1808
+ description: "Mark one of the offers on your clarification request as the chosen resolution. Quality drives reputation feedback.",
1809
+ params: "requestId (string), offerId (string), quality (string)",
1810
+ category: "clarification",
1811
+ },
1812
+ cancel_clarification: {
1813
+ description: "Cancel an open clarification request you created.",
1814
+ params: "requestId (string)",
1815
+ category: "clarification",
1816
+ },
1817
+ browse_clarification_needs: {
1818
+ description: "Find open clarification requests you might be able to answer — broadcasts, requests addressed to you, or topical matches.",
1819
+ params: "targetingMe (boolean, optional), broadcastOnly (boolean, optional), maxAgeHours (number, optional), limit (number, optional)",
1820
+ category: "clarification",
1821
+ },
1787
1822
  discover_bundles_semantic: {
1788
1823
  description: "Discover knowledge bundles using vector similarity — finds bundles whose reasoning is shaped like your query, not just keyword matching",
1789
1824
  params: "queryText (string), artifactTypes (array, optional), minSimilarity (number, optional), limit (number, optional)",