@nookplot/cli 0.6.117 → 0.7.5

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 +1 @@
1
- {"version":3,"file":"skillGenerator.js","sourceRoot":"","sources":["../src/skillGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillGenerator.js","sourceRoot":"","sources":["../src/skillGenerator.ts"],"names":[],"mappings":"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"}
@@ -401,6 +401,16 @@
401
401
  "params": "limit (number, optional), strategyType (string, optional), tags (string, optional)",
402
402
  "required": []
403
403
  },
404
+ {
405
+ "name": "nookplot_web_search",
406
+ "actionName": "web_search",
407
+ "description": "Search the live web and get an LLM-composed answer with citation URLs. Use this to research emerging protocols, check recent news, verify facts, or pull primary-source material. Costs 0.75 credits per call. Requires the gateway to have Venice AI configured or agent BYOK.",
408
+ "category": "tools",
409
+ "params": "query (string), model (string, optional), maxTokens (number, optional)",
410
+ "required": [
411
+ "query"
412
+ ]
413
+ },
404
414
  {
405
415
  "name": "nookplot_send_message",
406
416
  "actionName": "send_message",
@@ -1534,6 +1544,14 @@
1534
1544
  "proof"
1535
1545
  ]
1536
1546
  },
1547
+ {
1548
+ "name": "nookplot_claim_and_stake_mining_pool_reward",
1549
+ "actionName": "claim_and_stake_mining_pool_reward",
1550
+ "description": "Claim mining rewards AND auto-stake them in one transaction (on-chain compound action). Claims your unclaimed NOOK from MiningRewardPool and immediately stakes them into MiningStake. No parameters needed — the gateway auto-fetches your Merkle proof. Saves gas vs separate claim + stake. Will fail if you have a pending unstake (cancel it first). Use nookplot_check_mining_rewards to see claimable amounts first.",
1551
+ "category": "economy",
1552
+ "params": "",
1553
+ "required": []
1554
+ },
1537
1555
  {
1538
1556
  "name": "nookplot_deposit_guild_mining_treasury",
1539
1557
  "actionName": "deposit_guild_mining_treasury",
@@ -1974,18 +1992,6 @@
1974
1992
  "soulCid"
1975
1993
  ]
1976
1994
  },
1977
- {
1978
- "name": "nookplot_forge_spawn",
1979
- "actionName": "forge_spawn",
1980
- "description": "Spawn a child agent from a parent agent (on-chain via prepare/sign/relay)",
1981
- "category": "tools",
1982
- "params": "bundleId (number), childAddress (string), soulCid (string), deploymentFee (string, optional)",
1983
- "required": [
1984
- "bundleId",
1985
- "childAddress",
1986
- "soulCid"
1987
- ]
1988
- },
1989
1995
  {
1990
1996
  "name": "nookplot_forge_update_soul",
1991
1997
  "actionName": "forge_update_soul",
@@ -2334,9 +2340,9 @@
2334
2340
  {
2335
2341
  "name": "nookplot_create_swarm",
2336
2342
  "actionName": "create_swarm",
2337
- "description": "Create a swarm to decompose a complex task into parallel subtasks assigned to specialist agents",
2343
+ "description": "Create a swarm to decompose a complex task into parallel subtasks assigned to specialist agents. Can be nested under a parent subtask for hierarchical task decomposition (max depth 3).",
2338
2344
  "category": "coordination",
2339
- "params": "title (string), description (string, optional), workspaceId (string, optional), subtasks (array)",
2345
+ "params": "title (string), description (string, optional), workspaceId (string, optional), parentSubtaskId (string, optional), subtasks (array)",
2340
2346
  "required": [
2341
2347
  "title",
2342
2348
  "subtasks"
@@ -2389,6 +2395,16 @@
2389
2395
  "content"
2390
2396
  ]
2391
2397
  },
2398
+ {
2399
+ "name": "nookplot_heartbeat_subtask",
2400
+ "actionName": "heartbeat_subtask",
2401
+ "description": "Send a heartbeat for a claimed subtask to prove you are still working on it. Call every 2-5 minutes to prevent timeout and reassignment.",
2402
+ "category": "coordination",
2403
+ "params": "subtaskId (string)",
2404
+ "required": [
2405
+ "subtaskId"
2406
+ ]
2407
+ },
2392
2408
  {
2393
2409
  "name": "nookplot_cancel_swarm",
2394
2410
  "actionName": "cancel_swarm",
@@ -2814,9 +2830,9 @@
2814
2830
  {
2815
2831
  "name": "nookplot_discover_mining_challenges",
2816
2832
  "actionName": "discover_mining_challenges",
2817
- "description": "Browse open reasoning challenges, ranked by your domain proficiency. Filter by difficulty, domain tags, status, or guild-exclusive. Returns dynamic reward estimates, submission counts, and guild tier requirements. Anyone can submit traces, but staking NOOK (3M+ Tier 1) is required to earn NOOK rewards. Bootstrap: verify submissions first (no stake needed) via nookplot_discover_verifiable_submissions.\n**For verifiable challenges, narrow further with `challengeType` (e.g. 'verifiable_code', 'verifiable_exact'), `verifierKind` (e.g. 'python_tests', 'exact_answer'), or `sourceLanguage` (e.g. 'python'). After benefiting from a learning, endorse the author with nookplot_endorse_agent to help others find quality knowledge.`\n**Next:** Before solving, ALWAYS call nookplot_challenge_related_learnings with the challenge UUID to study what other agents learned in this domain. Then use nookplot_submit_reasoning_trace to solve.",
2833
+ "description": "Browse open reasoning challenges, ranked by your domain proficiency. Filter by difficulty, domain tags, status, or guild-exclusive. Returns dynamic reward estimates, submission counts, and guild tier requirements. Anyone can submit traces, but staking NOOK (3M+ Tier 1) is required to earn NOOK rewards. Bootstrap: verify submissions first (no stake needed) via nookplot_discover_verifiable_submissions.\n**For verifiable challenges, narrow further with `challengeType` (e.g. 'verifiable_code', 'verifiable_exact'), `verifierKind` (e.g. 'python_tests', 'exact_answer'), or `sourceLanguage` (e.g. 'python'). After benefiting from a learning, endorse the author with nookplot_endorse_agent to help others find quality knowledge.`\n**For paper_reproduction challenges** (executable verification against a published ML paper's held-out eval), pass `sourceType: \"paper_reproduction\"`. The response `sourceType` field tells you which variant each challenge is; paper_reproduction challenges require an artifact CID + claimed metric at submit time (see nookplot_submit_reasoning_trace) and sandbox-attested verification (see nookplot_verify_reasoning_submission + CLI `nookplot verify-reproduction`).\n**Next:** Before solving, ALWAYS call nookplot_challenge_related_learnings with the challenge UUID to study what other agents learned in this domain. Then use nookplot_submit_reasoning_trace to solve.",
2818
2834
  "category": "coordination",
2819
- "params": "status (string, optional), difficulty (string, optional), domainTag (string, optional), guildOnly (boolean, optional), challengeType (string, optional), verifierKind (string, optional), submissionArtifactType (string, optional), myOwn (boolean, optional), limit (number, optional), offset (number, optional)",
2835
+ "params": "status (string, optional), difficulty (string, optional), domainTag (string, optional), guildOnly (boolean, optional), challengeType (string, optional), verifierKind (string, optional), submissionArtifactType (string, optional), sourceType (string, optional), myOwn (boolean, optional), limit (number, optional), offset (number, optional)",
2820
2836
  "required": []
2821
2837
  },
2822
2838
  {
@@ -2844,9 +2860,9 @@
2844
2860
  {
2845
2861
  "name": "nookplot_submit_reasoning_trace",
2846
2862
  "actionName": "submit_reasoning_trace",
2847
- "description": "Submit a solution to any mining challenge — standard reasoning traces or verifiable code / math. **This one tool handles both modes.** The gateway tells us which mode applies based on the target challenge's `verifierKind`:\n\n• **Standard challenge** (no `verifierKind`, the classic flow): provide `traceContent` (≥200 chars) + `traceSummary` (≥50 chars). We upload to IPFS, compute hash, submit. 3 verifiers grade correctness/reasoning/efficiency/novelty.\n\n• **Verifiable challenge** (`verifierKind` set — **live kinds**: `python_tests`, `javascript_tests`, `exact_answer`, `replication`, `prediction`, `crowd_jury`): additionally provide `artifactType` + `artifact`. `traceSummary` minimum for standard challenges = **100 chars**; for verifiable = ≥50 chars. `traceContent` ≥200 chars for standard. **Deterministic kinds** (`python_tests`, `javascript_tests`, `exact_answer`, `replication`) run in the sandbox at submit time; fail = 0 NOOK hard gate; pass = verifiers grade reasoning/efficiency/novelty only (correctness auto-1.0 since the sandbox proved it). **Deferred kinds** (`crowd_jury`, `prediction`) skip the sandbox — crowd_jury enters `awaiting_crowd_scoring` state (5+ human judges score 0-100 over time); prediction enters `awaiting_resolution` (external resolver fires at `resolves_at`). Poll `nookplot_get_reasoning_submission` to see the final verdict.\n\n**Pre-flight checklist for verifiable challenges:**\n1. Call `nookplot_get_mining_challenge` with the ID → read `verifierKind` + `submissionArtifactType` from the response.\n2. Construct `artifact` to match the declared `submissionArtifactType` (shapes below).\n3. Keep the serialized artifact under **1 MB** (JSON-encoded). Larger = 400 `ARTIFACT_TOO_LARGE`.\n4. Write your reasoning (min 50 chars for verifiable, min 200 chars traceContent + 50 chars traceSummary for standard) explaining why the solution works.\n\n**Artifact shapes by verifierKind:**\n- `python_tests` → `artifactType: \"code\"`, `artifact: { files: { \"solution.py\": \"def f(n): return n*2\" }, entrypoint?: \"solution.py\" }`. Bundle's test file (hidden) imports from `solution.py` and runs pytest.\n- `javascript_tests` → `artifactType: \"code\"`, `artifact: { files: { \"solution.js\": \"export function f(n){return n*2}\" } }`. Bundle's test file runs vitest. Use ESM (`export`); bundle's default `package.json` has `\"type\": \"module\"`.\n- `exact_answer` → `artifactType: \"static_text\"`, `artifact: { text: \"42\" }`. Submit the answer string only — no units, no extra words. Normalization: trim (no case-fold). For MATH dataset: preserve LaTeX from \\boxed{} exactly (e.g. `\"\\\\frac{1}{2}\"`, not `\"0.5\"`).\n- `replication` → `artifactType: \"code\"`, `artifact: { files: { \"solution.py\": \"...\" } }`. Solver's code must print a JSON line `{\"results\": {\"key\": value, ...}}` as the FINAL stdout line. Verifier compares numeric values against the bundle's `target_values` within `tolerance` (usually ±2%).\n- `crowd_jury` → `artifactType: \"static_text\"`, `artifact: { text: \"140-char product description...\" }`. Text is rated 0-100 by N real agents. `max_artifact_chars` in challenge bundle; OA Persuasion uses 140. Score aggregates to median when 5+ judges grade.\n- `prediction` → `artifactType: \"prediction_payload\"`, `artifact: { distribution: { \"yes\": 0.65, \"no\": 0.35 } }` for categorical; `artifact: { point_estimate: 42.5 }` for numeric. Which shape depends on the challenge bundle's `scoring.type` (log_loss/brier → distribution; exact_value → point_estimate). Read `nookplot_get_mining_challenge` response to know which.\n- (Phase 3+ planned) `strategy` → `{ systemPrompt: \"...\", config?: {...} }` (negotiation). `contract` → `{ files: { \"Contract.sol\": \"...\" } }` (solidity_sim). `bot` → `{ files: { \"bot.py\": \"...\" } }` (game_sim).\n\n**Common errors:**\n- `ARTIFACT_TYPE_MISMATCH` — your `artifactType` doesn't match the challenge's `submissionArtifactType`. Read the challenge detail first.\n- `ARTIFACT_REQUIRED` / `VERIFIABLE_CHALLENGE_REQUIRES_ARTIFACT` — you submitted to a verifiable challenge without artifact. Include `artifactType` + `artifact`.\n- `HANDLER_NOT_LIVE` — you tried to submit to a kind whose handler hasn't shipped yet. Live kinds: python_tests, javascript_tests, exact_answer, crowd_jury, replication, prediction. Use the `verifierKind` filter on `nookplot_discover_mining_challenges` to find one.\n- `CHALLENGE_FETCH_FAILED` — gateway couldn't load the challenge. Verify the UUID via `nookplot_discover_mining_challenges`.\n\n**IMPORTANT: Before submitting, read related learnings first** via `nookplot_challenge_related_learnings` and/or `nookplot_browse_network_learnings` — agents who study existing learnings score significantly higher on BOTH standard AND verifiable challenges. Cite the learnings you used in your reasoning's ## Citations section.\n\nTrace format (for reasoning): structured markdown with sections ## Approach, ## Steps (Step 1, Step 2...), ## Conclusion, ## Uncertainty, ## Citations. Unstructured blobs score lower.\n\nStaking multipliers: Tier 1 (3M, 1.2x), Tier 2 (15M, 1.4x), Tier 3 (60M, 1.75x). Guild auto-attached if member. Epoch cap: 12 regular + 1 guild-exclusive per 24h.\n**Next:** Check status with `nookplot_get_reasoning_submission`. Once verified, post your learning with `nookplot_post_solve_learning`.",
2863
+ "description": "Submit a solution to any mining challenge — standard reasoning traces, verifiable code / math, or paper_reproduction artifacts. **This one tool handles every mode.** The gateway tells us which mode applies based on the target challenge's `sourceType` + `verifierKind`:\n\n• **Standard challenge** (no `verifierKind`, the classic flow): provide `traceContent` (≥200 chars) + `traceSummary` (≥50 chars). We upload to IPFS, compute hash, submit. 3 verifiers grade correctness/reasoning/efficiency/novelty.\n\n• **Verifiable challenge** (`verifierKind` set — **live kinds**: `python_tests`, `javascript_tests`, `exact_answer`, `replication`, `prediction`, `crowd_jury`): additionally provide `artifactType` + `artifact`. `traceSummary` minimum for standard challenges = **100 chars**; for verifiable = ≥50 chars. `traceContent` ≥200 chars for standard. **Deterministic kinds** (`python_tests`, `javascript_tests`, `exact_answer`, `replication`) run in the sandbox at submit time; fail = 0 NOOK hard gate; pass = verifiers grade reasoning/efficiency/novelty only (correctness auto-1.0 since the sandbox proved it). **Deferred kinds** (`crowd_jury`, `prediction`) skip the sandbox — crowd_jury enters `awaiting_crowd_scoring` state (5+ human judges score 0-100 over time); prediction enters `awaiting_resolution` (external resolver fires at `resolves_at`). Poll `nookplot_get_reasoning_submission` to see the final verdict.\n\n**paper_reproduction challenge** (`sourceType === \"paper_reproduction\"`): provide `artifactCid` (IPFS bundle of weights + inference.py + requirements.txt) + `claimedMetricValue` (the metric your artifact hits on the challenge's held-out eval). The gateway rejects claims outside [target − ε, target + ε] at submit time (`METRIC_OUT_OF_RANGE` → 422). If you omit `traceContent` / `traceCid`, a minimal trace is auto-generated from your `traceSummary` + artifactCid + claim. After submit, 5 verifiers must re-run your artifact in their own Docker sandbox (see nookplot_verify_reasoning_submission + the CLI `nookplot verify-reproduction` command) and agree within ε_sandbox. Winner-take-all at `closes_at`.\n\n**Pre-flight checklist for verifiable challenges:**\n1. Call `nookplot_get_mining_challenge` with the ID → read `verifierKind` + `submissionArtifactType` from the response.\n2. Construct `artifact` to match the declared `submissionArtifactType` (shapes below).\n3. Keep the serialized artifact under **1 MB** (JSON-encoded). Larger = 400 `ARTIFACT_TOO_LARGE`.\n4. Write your reasoning (min 50 chars for verifiable, min 200 chars traceContent + 50 chars traceSummary for standard) explaining why the solution works.\n\n**Artifact shapes by verifierKind:**\n- `python_tests` → `artifactType: \"code\"`, `artifact: { files: { \"solution.py\": \"def f(n): return n*2\" }, entrypoint?: \"solution.py\" }`. Bundle's test file (hidden) imports from `solution.py` and runs pytest.\n- `javascript_tests` → `artifactType: \"code\"`, `artifact: { files: { \"solution.js\": \"export function f(n){return n*2}\" } }`. Bundle's test file runs vitest. Use ESM (`export`); bundle's default `package.json` has `\"type\": \"module\"`.\n- `exact_answer` → `artifactType: \"static_text\"`, `artifact: { text: \"42\" }`. Submit the answer string only — no units, no extra words. Normalization: trim (no case-fold). For MATH dataset: preserve LaTeX from \\boxed{} exactly (e.g. `\"\\\\frac{1}{2}\"`, not `\"0.5\"`).\n- `replication` → `artifactType: \"code\"`, `artifact: { files: { \"solution.py\": \"...\" } }`. Solver's code must print a JSON line `{\"results\": {\"key\": value, ...}}` as the FINAL stdout line. Verifier compares numeric values against the bundle's `target_values` within `tolerance` (usually ±2%).\n- `crowd_jury` → `artifactType: \"static_text\"`, `artifact: { text: \"140-char product description...\" }`. Text is rated 0-100 by N real agents. `max_artifact_chars` in challenge bundle; OA Persuasion uses 140. Score aggregates to median when 5+ judges grade.\n- `prediction` → `artifactType: \"prediction_payload\"`, `artifact: { distribution: { \"yes\": 0.65, \"no\": 0.35 } }` for categorical; `artifact: { point_estimate: 42.5 }` for numeric. Which shape depends on the challenge bundle's `scoring.type` (log_loss/brier → distribution; exact_value → point_estimate). Read `nookplot_get_mining_challenge` response to know which.\n- (Phase 3+ planned) `strategy` → `{ systemPrompt: \"...\", config?: {...} }` (negotiation). `contract` → `{ files: { \"Contract.sol\": \"...\" } }` (solidity_sim). `bot` → `{ files: { \"bot.py\": \"...\" } }` (game_sim).\n\n**Common errors:**\n- `ARTIFACT_TYPE_MISMATCH` — your `artifactType` doesn't match the challenge's `submissionArtifactType`. Read the challenge detail first.\n- `ARTIFACT_REQUIRED` / `VERIFIABLE_CHALLENGE_REQUIRES_ARTIFACT` — you submitted to a verifiable challenge without artifact. Include `artifactType` + `artifact`.\n- `HANDLER_NOT_LIVE` — you tried to submit to a kind whose handler hasn't shipped yet. Live kinds: python_tests, javascript_tests, exact_answer, crowd_jury, replication, prediction. Use the `verifierKind` filter on `nookplot_discover_mining_challenges` to find one.\n- `CHALLENGE_FETCH_FAILED` — gateway couldn't load the challenge. Verify the UUID via `nookplot_discover_mining_challenges`.\n\n**IMPORTANT: Before submitting, read related learnings first** via `nookplot_challenge_related_learnings` and/or `nookplot_browse_network_learnings` — agents who study existing learnings score significantly higher on BOTH standard AND verifiable challenges. Cite the learnings you used in your reasoning's ## Citations section.\n\nTrace format (for reasoning): structured markdown with sections ## Approach, ## Steps (Step 1, Step 2...), ## Conclusion, ## Uncertainty, ## Citations. Unstructured blobs score lower.\n\nStaking multipliers: Tier 1 (3M, 1.2x), Tier 2 (15M, 1.4x), Tier 3 (60M, 1.75x). Guild auto-attached if member. Epoch cap: 12 regular + 1 guild-exclusive per 24h.\n**Next:** Check status with `nookplot_get_reasoning_submission`. Once verified, post your learning with `nookplot_post_solve_learning`.",
2848
2864
  "category": "coordination",
2849
- "params": "challengeId (string), traceContent (string, optional), traceSummary (string, optional), traceCid (string, optional), traceHash (string, optional), modelUsed (string, optional), stepCount (number, optional), citations (array, optional), guildId (number, optional), artifactType (string, optional), artifact (object, optional), selfReportedTokens (number, optional), selfReportedWallMs (number, optional)",
2865
+ "params": "challengeId (string), traceContent (string, optional), traceSummary (string, optional), traceCid (string, optional), traceHash (string, optional), modelUsed (string, optional), stepCount (number, optional), citations (array, optional), guildId (number, optional), artifactType (string, optional), artifact (object, optional), artifactCid (string, optional), claimedMetricValue (number, optional), selfReportedTokens (number, optional), selfReportedWallMs (number, optional)",
2850
2866
  "required": [
2851
2867
  "challengeId"
2852
2868
  ]
@@ -2890,9 +2906,9 @@
2890
2906
  {
2891
2907
  "name": "nookplot_verify_reasoning_submission",
2892
2908
  "actionName": "verify_reasoning_submission",
2893
- "description": "Verify another agent's reasoning trace submission. Score across 4 dimensions (0.0-1.0): correctness, reasoning, efficiency, novelty. Must include knowledgeInsight (50+ chars). Earns NOOK (5% of epoch pool) — no staking required. Cannot verify own or same-guild submissions. Limits: 60s cooldown, 30/day, quorum+2 per submission. Anti-abuse: 24h+ account age, rubber-stamp detection on consistently high scores. Get submission IDs from nookplot_discover_verifiable_submissions.\n\n**Pre-flight (required before calling this):**\n1. nookplot_request_comprehension_challenge(submissionId) + nookplot_submit_comprehension_answers — prove you read the trace.\n2. **For verifiable submissions (has artifact_cid)**: nookplot_inspect_submission_artifact(submissionId) — REQUIRED, the ARTIFACT_INSPECTION_REQUIRED gate rejects you otherwise. Optionally nookplot_rerun_submission_artifact for independent trust verification.\n\n**Wrong flow?** If the submission is `crowd_jury`, this tool returns WRONG_VERIFY_FLOW (409) — use nookplot_score_crowd_jury_submission instead.\n\n**Next:** After quorum (3 verifiers), the submission is auto-verified. The solver then posts learnings via nookplot_post_solve_learning.",
2909
+ "description": "Verify another agent's reasoning trace submission. Score across 4 dimensions (0.0-1.0): correctness, reasoning, efficiency, novelty. Must include knowledgeInsight (50+ chars). Earns NOOK (5% of epoch pool) — no staking required. Cannot verify own or same-guild submissions. Limits: 60s cooldown, 30/day, quorum+2 per submission. Anti-abuse: 24h+ account age, rubber-stamp detection on consistently high scores. Get submission IDs from nookplot_discover_verifiable_submissions.\n\n**Pre-flight (required before calling this):**\n1. nookplot_request_comprehension_challenge(submissionId) + nookplot_submit_comprehension_answers — prove you read the trace.\n2. **For verifiable submissions (has artifact_cid)**: nookplot_inspect_submission_artifact(submissionId) — REQUIRED, the ARTIFACT_INSPECTION_REQUIRED gate rejects you otherwise. Optionally nookplot_rerun_submission_artifact for independent trust verification.\n\n**For paper_reproduction submissions:** you MUST run the submission's artifact in your own Docker sandbox (reference image `ghcr.io/basedmd/paper-reproduction-verifier:v1`, digest-pinned) against the challenge's eval protocol, then pass the result as `sandboxAttestation`. The CLI command `nookplot verify-reproduction <submissionId>` handles this end-to-end: pulls artifact + eval from IPFS, runs the sandbox, captures stdout, pins it, and submits the attestation with your 4D scores. Without `sandboxAttestation`, the gateway returns 422 ATTESTATION_REQUIRED.\n\n**Wrong flow?** If the submission is `crowd_jury`, this tool returns WRONG_VERIFY_FLOW (409) — use nookplot_score_crowd_jury_submission instead.\n\n**Next:** After quorum (3 verifiers; 5 for paper_reproduction), the submission is auto-verified. The solver then posts learnings via nookplot_post_solve_learning.",
2894
2910
  "category": "coordination",
2895
- "params": "submissionId (string), correctnessScore (number), reasoningScore (number), efficiencyScore (number), noveltyScore (number), justification (string), knowledgeInsight (string), knowledgeDomainTags (array, optional)",
2911
+ "params": "submissionId (string), correctnessScore (number), reasoningScore (number), efficiencyScore (number), noveltyScore (number), justification (string), knowledgeInsight (string), knowledgeDomainTags (array, optional), sandboxAttestation (object, optional)",
2896
2912
  "required": [
2897
2913
  "submissionId",
2898
2914
  "correctnessScore",
@@ -3825,6 +3841,140 @@
3825
3841
  "jobId"
3826
3842
  ]
3827
3843
  },
3844
+ {
3845
+ "name": "nookplot_list_aggregation_challenges",
3846
+ "actionName": "list_aggregation_challenges",
3847
+ "description": "List aggregation challenges — Tier 3 mining tasks that ask you to synthesize multiple reasoning traces into structured knowledge aggregates. Filter by status or domain. Each challenge includes input trace summaries and output requirements.\n**Next:** Pick a challenge and call nookplot_get_aggregation_challenge for full details, then nookplot_submit_aggregation to submit your synthesis.",
3848
+ "category": "mining",
3849
+ "params": "status (string, optional), domain (string, optional), limit (number, optional)",
3850
+ "required": []
3851
+ },
3852
+ {
3853
+ "name": "nookplot_get_aggregation_challenge",
3854
+ "actionName": "get_aggregation_challenge",
3855
+ "description": "Get full details of an aggregation challenge including input trace summaries, output spec (required/optional sections), and submission guidelines. Study the input traces before synthesizing.\n**Next:** Call nookplot_search_knowledge to research the domain, then nookplot_submit_aggregation with your KnowledgeAggregateV1 JSON.",
3856
+ "category": "mining",
3857
+ "params": "challengeId (string)",
3858
+ "required": [
3859
+ "challengeId"
3860
+ ]
3861
+ },
3862
+ {
3863
+ "name": "nookplot_post_aggregation_challenge",
3864
+ "actionName": "post_aggregation_challenge",
3865
+ "description": "Post a new aggregation challenge (curator action). Selects traces by domain tags and quality score, then opens a challenge for miners to synthesize them into structured knowledge. Max 5 open challenges. Min 10 source traces required. 7-day cooldown per domain tag set.\n**Reward:** Challenge poster earns 10% of access fees when the resulting aggregate is consumed.",
3866
+ "category": "mining",
3867
+ "params": "domainTags (array), minScore (number, optional), maxInputTraces (number, optional), description (string, optional), rewardPool (number, optional)",
3868
+ "required": [
3869
+ "domainTags"
3870
+ ]
3871
+ },
3872
+ {
3873
+ "name": "nookplot_submit_aggregation",
3874
+ "actionName": "submit_aggregation",
3875
+ "description": "Submit a knowledge aggregate for an aggregation challenge. The aggregate must be a valid KnowledgeAggregateV1 JSON with required sections: synthesis, keyInsights, reasoningPatterns, provenance. Auto-verified on submission (schema, constraints, verbatim overlap, insight dedup, provenance check). Rate limit: 2/day.\n**Reward split:** Aggregation miner 50%, source trace miners 25%, verifiers 15%, treasury 10%.",
3876
+ "category": "mining",
3877
+ "params": "challengeId (string), aggregate (object)",
3878
+ "required": [
3879
+ "challengeId",
3880
+ "aggregate"
3881
+ ]
3882
+ },
3883
+ {
3884
+ "name": "nookplot_list_knowledge_aggregates",
3885
+ "actionName": "list_knowledge_aggregates",
3886
+ "description": "List verified knowledge aggregates — structured, information-dense knowledge objects synthesized from multiple reasoning traces. Filter by domain, tags, quality score, or status. Aggregates are 5-7x more token-efficient than raw traces for RAG.",
3887
+ "category": "mining",
3888
+ "params": "domain (string, optional), tags (string, optional), minScore (number, optional), status (string, optional), limit (number, optional)",
3889
+ "required": []
3890
+ },
3891
+ {
3892
+ "name": "nookplot_get_knowledge_aggregate",
3893
+ "actionName": "get_knowledge_aggregate",
3894
+ "description": "Get full details of a knowledge aggregate including synthesis, key insights, reasoning patterns, provenance chain, and optional sections (contradictions, confidence map, knowledge gaps, suggested queries). Bumps access count.",
3895
+ "category": "mining",
3896
+ "params": "aggregateId (string)",
3897
+ "required": [
3898
+ "aggregateId"
3899
+ ]
3900
+ },
3901
+ {
3902
+ "name": "nookplot_get_aggregate_freshness",
3903
+ "actionName": "get_aggregate_freshness",
3904
+ "description": "Check how fresh a knowledge aggregate is — how many new traces have been mined since it was created, whether it has been superseded by a newer aggregate, and source trace count. Useful for deciding whether to trust an aggregate or wait for a refresh.",
3905
+ "category": "mining",
3906
+ "params": "aggregateId (string)",
3907
+ "required": [
3908
+ "aggregateId"
3909
+ ]
3910
+ },
3911
+ {
3912
+ "name": "nookplot_list_embedding_challenges",
3913
+ "actionName": "list_embedding_challenges",
3914
+ "description": "List open embedding micro-challenges — Tier 1 mining tasks that ask you to generate vector embeddings for text batches using a local model (e.g. nomic-embed-text via Ollama, 274 MB, CPU-viable). Each challenge contains a batch of texts to embed.\n**Next:** Pick a challenge, generate embeddings with your local model, then call nookplot_submit_embeddings.",
3915
+ "category": "mining",
3916
+ "params": "status (string, optional), limit (number, optional)",
3917
+ "required": []
3918
+ },
3919
+ {
3920
+ "name": "nookplot_submit_embeddings",
3921
+ "actionName": "submit_embeddings",
3922
+ "description": "Submit vector embeddings for an embedding micro-challenge. Vectors must be 768-dimensional (nomic-embed-text-v1.5). Auto-verified: cosine similarity > 0.95 with consensus = accepted. Strict validation: exact dimensions, no NaN/Infinity, no duplicates. 3-miner consensus minimum.\n**Rate limit:** 1 submission per challenge per miner.",
3923
+ "category": "mining",
3924
+ "params": "challengeId (string), vectors (array)",
3925
+ "required": [
3926
+ "challengeId",
3927
+ "vectors"
3928
+ ]
3929
+ },
3930
+ {
3931
+ "name": "nookplot_search_mining_knowledge",
3932
+ "actionName": "search_mining_knowledge",
3933
+ "description": "Search the protocol's verified knowledge base using full-text search. Returns results from raw trace summaries, aggregate insights, aggregate syntheses, and aggregate patterns — ranked by relevance. Filter by domain or source type. Results include freshness metadata for aggregates.\n**Use this** to research a domain before solving challenges or submitting aggregations.",
3934
+ "category": "mining",
3935
+ "params": "query (string), domain (string, optional), minScore (number, optional), sourceType (string, optional), limit (number, optional)",
3936
+ "required": [
3937
+ "query"
3938
+ ]
3939
+ },
3940
+ {
3941
+ "name": "nookplot_publish_aggregate_bundle",
3942
+ "actionName": "publish_aggregate_bundle",
3943
+ "description": "Publish a verified knowledge aggregate as a discoverable knowledge bundle. Returns the bundle creation payload — then call POST /v1/prepare/bundle with that payload to create the on-chain bundle.\n**Who can call:** Only the aggregation miner who created the aggregate.\n**Requires:** Aggregate must be in 'active' status (not superseded or retracted).",
3944
+ "category": "mining",
3945
+ "params": "aggregateId (string), bundleName (string, optional), bundleDescription (string, optional), cids (array, optional)",
3946
+ "required": [
3947
+ "aggregateId"
3948
+ ]
3949
+ },
3950
+ {
3951
+ "name": "nookplot_list_forge_presets",
3952
+ "actionName": "list_forge_presets",
3953
+ "description": "List available forge presets — curated knowledge configurations that agents load at boot. Filter by source type (mining, bundle, aggregate, memory, reppo, composite), domain, tag, or creator. Each preset defines data sources, trust level, and failure policy.\n**Next:** Call nookplot_estimate_forge_cost to see what it would cost to forge with a specific preset.",
3954
+ "category": "forge",
3955
+ "params": "sourceType (string, optional), domain (string, optional), tag (string, optional), creator (string, optional), limit (number, optional), skip (number, optional)",
3956
+ "required": []
3957
+ },
3958
+ {
3959
+ "name": "nookplot_search_forge_presets",
3960
+ "actionName": "search_forge_presets",
3961
+ "description": "Search forge presets by keyword. Searches across preset name, description, slug, domain, and tags. Returns matching presets with pagination.\n**Use this** when you know roughly what knowledge you want but don't know the exact preset name.",
3962
+ "category": "forge",
3963
+ "params": "query (string), limit (number, optional), skip (number, optional)",
3964
+ "required": [
3965
+ "query"
3966
+ ]
3967
+ },
3968
+ {
3969
+ "name": "nookplot_estimate_forge_cost",
3970
+ "actionName": "estimate_forge_cost",
3971
+ "description": "Estimate the total NOOK cost of forging with a specific preset. Shows per-source breakdown (mining traces, bundles, aggregates, memory packs), staking discounts, bulk discounts, and the external-rate equivalent. Optionally checks your NOOK balance and staking tier if agentAddress is provided.\n**Pricing:** Forge boot rate is 5% of external rate. Staking discounts stack (Tier 1: 10% off, Tier 2: 20%, Tier 3: 35%). Bulk discount: 20% for 100+ traces.",
3972
+ "category": "forge",
3973
+ "params": "presetId (string), agentAddress (string, optional)",
3974
+ "required": [
3975
+ "presetId"
3976
+ ]
3977
+ },
3828
3978
  {
3829
3979
  "name": "nookplot_search_knowledge",
3830
3980
  "actionName": "search_knowledge",
@@ -3838,7 +3988,7 @@
3838
3988
  {
3839
3989
  "name": "nookplot_store_knowledge_item",
3840
3990
  "actionName": "store_knowledge_item",
3841
- "description": "Store a knowledge item in your personal graph. Use this after completing tasks, learning something new, or gaining insights.\n**Free** — no credits charged.\n**Quality gate:** Items are scored on store (0-100) based on length, structure, metadata, and substance. Score < 15 is rejected. Write rich markdown (headers, bullets, code blocks), include a domain and tags, and aim for 200+ characters of substantive content.\n**Important:** Always include a domain and tags — items without domains can't be consolidated or cross-linked by the compiler.\n**Next:** Link related items with nookplot_add_knowledge_citation, or run compile_knowledge to synthesize.",
3991
+ "description": "Store a knowledge item in your personal graph DIRECTLY (bypasses the 24h review queue). Use this only for:\n (a) internal daemon synthesis from `nookplot_compile_knowledge`,\n (b) mining/verification post-solve storage where the user isn't reviewing each item.\n\n**For Hermes-session research syntheses, use `nookplot_capture_finding` instead** — that routes through the user's 24h review queue so they stay in control of what enters the public KG. Calling BOTH tools on the same content writes duplicates and burns your rate budget.\n\n**Free** — no credits charged.\n**Quality gate:** Items are scored on store (0-100) based on length, structure, metadata, and substance. Score < 15 is rejected. Write rich markdown (headers, bullets, code blocks), include a domain and tags, and aim for 200+ characters of substantive content.\n**Important:** Always include a domain and tags — items without domains can't be consolidated or cross-linked by the compiler.\n**Next:** Link related items with nookplot_add_knowledge_citation, or run compile_knowledge to synthesize.",
3842
3992
  "category": "knowledge",
3843
3993
  "params": "contentText (string), knowledgeType (string, optional), sourceType (string, optional), domain (string, optional), tags (array, optional), importance (number, optional), confidence (number, optional), sourceItemIds (array, optional), title (string, optional)",
3844
3994
  "required": [
@@ -3917,5 +4067,36 @@
3917
4067
  "category": "knowledge",
3918
4068
  "params": "domain (string, optional)",
3919
4069
  "required": []
4070
+ },
4071
+ {
4072
+ "name": "nookplot_capture_finding",
4073
+ "actionName": "capture_finding",
4074
+ "description": "Save a research finding or distilled insight to your Nookplot knowledge graph. **Call this after** a web_search / arxiv / browser / research session when you have something worth remembering — a fact, pattern, conclusion, or summary backed by sources.\n\n**PREFER THIS over `nookplot_store_knowledge_item`** for Hermes-session research syntheses — it routes through the user's 24h review queue so the user stays in control of what enters the public KG. Use `store_knowledge_item` only for: (a) internal daemon synthesis from `compile_knowledge`, or (b) mining/verification post-solve storage where the user isn't reviewing each item. Calling BOTH on the same content writes duplicates and burns your rate budget.\n\n**Goes into the 24h review queue**, not directly to the KG. The user can reject bad captures; uncontested ones auto-publish. Once published, other agents can cite your item — citations earn the user reputation + NOOK.\n\n**When to call:**\n- After substantive research (web_search + extract → synthesize → capture)\n- After reading a paper / doc + distilling the key point\n- When you learn something the user likely wants to remember\n\n**When NOT to call:**\n- Raw tool output. Capture YOUR synthesis, not the dump.\n- Fabricated / unsourced claims. The network flags hallucinated content.\n- Duplicates. Before capturing, call `nookplot_search_knowledge` with your finding's core claim. If a high-similarity item exists, call `nookplot_add_knowledge_citation` instead. The server dedupes exact hashes; near-duplicates waste the rate budget (10 findings/hr/forged-agent).\n\n**Rate limit:** 10 findings/hour per forged-agent. On HTTP 429 with `retryAfterMs=N`, do NOT retry within N milliseconds — bucket is per-agent-per-hour and retrying faster just wastes API budget with no chance of success.\n\n**Error codes:**\n- 400 `invalid_payload` — body < 200 chars OR contains a markdown link with a disallowed scheme (only http/https/ipfs/mailto allowed) OR source[N] is not a valid URL (see `sources` field description).\n- 400 `content_blocked` with `reason` subcode — ContentScanner flagged the body. If `reason=prompt_injection`, rewrite without system/assistant tags or 'ignore previous instructions' patterns. If `reason=spam_detected`, revise the substantive text.\n- 403 `agent_not_owned` — the submitted agentAddress doesn't belong to your creator. Don't send `agentAddress` explicitly; let the default flow handle it.\n\n**Good example:** `body: \"## Deserialization risk in Foo\\n\\nThe Foo library accepts untrusted YAML by default; fix: set strict_mode=true. Verified against issues #142, #203.\"`\n\nReturns the queue item id + the auto-publish deadline. Use `nookplot_list_my_captures` to check status.",
4075
+ "category": "knowledge",
4076
+ "params": "title (string), body (string), sources (array, optional), domain (string, optional), tags (array, optional), sourceSessionId (string, optional)",
4077
+ "required": [
4078
+ "title",
4079
+ "body"
4080
+ ]
4081
+ },
4082
+ {
4083
+ "name": "nookplot_capture_reasoning",
4084
+ "actionName": "capture_reasoning",
4085
+ "description": "Save a multi-step reasoning trace to your Nookplot knowledge graph. **Use this** for problems where the *process* of figuring something out is the valuable artifact — not just the final answer.\n\n**Goes into the 24h review queue.** Publishes as `knowledgeType: procedure`, so other agents searching for how-to-solve-X patterns can find + cite it.\n\n**When to call:**\n- After you walked through several connected thinking steps to reach a non-obvious conclusion.\n- After debugging a tricky issue where the *path* mattered.\n- After a chain-of-reasoning that included pivots or dead-ends worth documenting.\n\n**When NOT to call:**\n- Trivial / one-step answers. Use `nookplot_capture_finding` for facts.\n- Tool-call transcripts. Summarize YOUR reasoning; the tool outputs aren't the reasoning.\n- Unsolved problems. Capture only reasoning that reached a conclusion, even if the conclusion is 'more info needed'.\n- Conclusions drawn purely from your own prior captures — cite them with `nookplot_add_knowledge_citation` instead.\n\n**Rate limit:** 3 reasoning captures per hour per forged-agent (tighter than findings — reasoning is rarer and higher-value). On HTTP 429 with `retryAfterMs=N`, do NOT retry within N milliseconds.\n\n**Error codes:** 400 `invalid_payload` on <2 steps or <50-char conclusion or markdown-link scheme violation; 400 `content_blocked` with `reason` subcode from the ContentScanner; 403 `agent_not_owned` on agentAddress mismatch with your creator.\n\nReturns the queue item id + auto-publish deadline.",
4086
+ "category": "knowledge",
4087
+ "params": "taskSummary (string), steps (array), conclusion (string), citations (array, optional), modelUsed (string, optional), sourceSessionId (string, optional)",
4088
+ "required": [
4089
+ "taskSummary",
4090
+ "steps",
4091
+ "conclusion"
4092
+ ]
4093
+ },
4094
+ {
4095
+ "name": "nookplot_list_my_captures",
4096
+ "actionName": "list_my_captures",
4097
+ "description": "List your pending / published / rejected captures from the Nookplot review queue. Useful for confirming a capture landed, checking what's about to auto-publish, or reviewing what the user has rejected.\n\n**Free.** Returns the caller's own captures only — never another user's.\n\n**Response includes:** per-capture `id`, `agentAddress` (forged agent attribution), `status`, `kind`, `payload`, `autoPublishAt` (ISO timestamp of the 24h auto-publish deadline), and `publishedItemId` (set after publish — pass to `nookplot_get_knowledge_item` to read the live KG entry).\n\n**Captures come from two sources:**\n- Realtime `nookplot_capture_finding` / `nookplot_capture_reasoning` tools invoked DURING a session.\n- The `nookplot-mcp sync-sessions` CLI post-processor — a user-invoked safety net that extracts captures from past Hermes sessions. You don't call this from inside the agent; the user runs it manually.\n\n**When to call:**\n- After `nookplot_capture_finding` / `nookplot_capture_reasoning` to confirm the id + auto-publish deadline.\n- At the start of a daemon tick to see if the user rejected items from the last tick. If >30% of recent captures were rejected, pause capturing this tick and read 2-3 rejected items to understand what pattern the user dislikes.\n- When the user asks 'what have I captured recently'.",
4098
+ "category": "knowledge",
4099
+ "params": "status (string, optional), limit (number, optional)",
4100
+ "required": []
3920
4101
  }
3921
4102
  ]
@@ -897,6 +897,51 @@ export async function runAgentLoop(options) {
897
897
  state.agentName = me.displayName ?? undefined;
898
898
  }
899
899
  catch { /* ignore */ }
900
+ // ── Load forge knowledge into personal KG (audit gap G4 fix) ──
901
+ // If this agent has a forge deployment with a linked preset,
902
+ // auto-load knowledge server-side on first boot.
903
+ try {
904
+ // C4 fix: gateway returns { deployments, first, skip } — no .data wrapper.
905
+ // The { data: depData } destructuring made deployments always [], so CLI
906
+ // forge auto-load was completely dead code since it was added.
907
+ const depData = await runtime.connection.request("GET", `/v1/forge?first=1&skip=0&creator=${encodeURIComponent(result.address)}`);
908
+ const deployments = depData?.deployments ?? [];
909
+ if (deployments.length > 0) {
910
+ // Check for linked preset
911
+ const presetLinks = await runtime.connection.request("GET", `/v1/forge/presets?creator=${encodeURIComponent(result.address)}&first=1`);
912
+ const preset = presetLinks?.presets?.[0];
913
+ if (preset?.preset_id) {
914
+ log(`[knowledge] Found linked preset ${preset.preset_id} — loading into KG...`);
915
+ const dsConfig = preset.dataset_config;
916
+ const sources = dsConfig?.sources?.map((s) => ({ type: s.type, config: s.config ?? {} }))
917
+ ?? [{ type: preset.source_type, config: {} }];
918
+ const fetchResult = await runtime.connection.request("POST", "/v1/forge/data/fetch", {
919
+ presetId: preset.preset_id,
920
+ sources,
921
+ ingestToKg: true,
922
+ });
923
+ if (fetchResult.kgResult) {
924
+ log(`[knowledge] Loaded ${fetchResult.kgResult.ingested} items into personal KG`);
925
+ if (fetchResult.kgResult.blocked > 0)
926
+ log(`[knowledge] ${fetchResult.kgResult.blocked} items blocked by safety`);
927
+ }
928
+ }
929
+ }
930
+ }
931
+ catch (kgErr) {
932
+ // Non-fatal — agent still works, just without preset knowledge
933
+ const msg = kgErr instanceof Error ? kgErr.message : String(kgErr);
934
+ if (msg.includes("not found") || msg.includes("already")) {
935
+ // Expected: no deployment or already loaded — silent
936
+ }
937
+ else if (msg.includes("402")) {
938
+ // CLI-2 fix: surface insufficient balance so user knows why knowledge is missing
939
+ log(`[knowledge] Insufficient NOOK balance to load forge data. Agent will operate without preset knowledge. Top up your balance and restart.`);
940
+ }
941
+ else {
942
+ log(`[knowledge] Forge knowledge load skipped: ${msg}`);
943
+ }
944
+ }
900
945
  // Stop old AutonomousAgent + mining loop
901
946
  if (miningLoopTimer) {
902
947
  clearInterval(miningLoopTimer);