@jinn-network/client 0.1.6 → 0.1.7-canary.0a586ca9

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 (434) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +67 -1
  3. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
  4. package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
  5. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
  6. package/dist/adapters/mech/adapter.d.ts +57 -2
  7. package/dist/adapters/mech/adapter.js +366 -63
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +17 -4
  10. package/dist/adapters/mech/contracts.js +19 -4
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +20 -0
  13. package/dist/adapters/mech/safe-revert.js +12 -4
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.d.ts +6 -2
  16. package/dist/adapters/mech/safe.js +32 -11
  17. package/dist/adapters/mech/safe.js.map +1 -1
  18. package/dist/adapters/mech/types.d.ts +6 -1
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.d.ts +1 -0
  21. package/dist/adapters/mech/verdict-code.js +18 -0
  22. package/dist/adapters/mech/verdict-code.js.map +1 -1
  23. package/dist/agent/operator-claude.js +8 -0
  24. package/dist/agent/operator-claude.js.map +1 -1
  25. package/dist/api/activity-events-endpoint.d.ts +14 -0
  26. package/dist/api/activity-events-endpoint.js +59 -0
  27. package/dist/api/activity-events-endpoint.js.map +1 -0
  28. package/dist/api/admin-endpoint.d.ts +15 -3
  29. package/dist/api/admin-endpoint.js +24 -2
  30. package/dist/api/admin-endpoint.js.map +1 -1
  31. package/dist/api/bootstrap-endpoint.d.ts +1 -2
  32. package/dist/api/bootstrap-endpoint.js +85 -18
  33. package/dist/api/bootstrap-endpoint.js.map +1 -1
  34. package/dist/api/codex-doctor-endpoint.d.ts +90 -0
  35. package/dist/api/codex-doctor-endpoint.js +296 -0
  36. package/dist/api/codex-doctor-endpoint.js.map +1 -0
  37. package/dist/api/discovery-endpoint.d.ts +1 -0
  38. package/dist/api/discovery-endpoint.js +26 -0
  39. package/dist/api/discovery-endpoint.js.map +1 -1
  40. package/dist/api/fleet-build.d.ts +1 -0
  41. package/dist/api/fleet-build.js +2 -1
  42. package/dist/api/fleet-build.js.map +1 -1
  43. package/dist/api/gather-status.d.ts +37 -0
  44. package/dist/api/gather-status.js +572 -19
  45. package/dist/api/gather-status.js.map +1 -1
  46. package/dist/api/hermes-doctor-endpoint.d.ts +128 -3
  47. package/dist/api/hermes-doctor-endpoint.js +265 -22
  48. package/dist/api/hermes-doctor-endpoint.js.map +1 -1
  49. package/dist/api/launcher-status.d.ts +24 -17
  50. package/dist/api/launcher-status.js +13 -11
  51. package/dist/api/launcher-status.js.map +1 -1
  52. package/dist/api/launcher-tasks.d.ts +1 -1
  53. package/dist/api/launcher-tasks.js +12 -8
  54. package/dist/api/launcher-tasks.js.map +1 -1
  55. package/dist/api/operator-artifacts-endpoint.js +73 -6
  56. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  57. package/dist/api/portfolio-v0-build.d.ts +10 -0
  58. package/dist/api/portfolio-v0-build.js +24 -5
  59. package/dist/api/portfolio-v0-build.js.map +1 -1
  60. package/dist/api/prediction-v1-build.d.ts +10 -0
  61. package/dist/api/prediction-v1-build.js +7 -1
  62. package/dist/api/prediction-v1-build.js.map +1 -1
  63. package/dist/api/server.d.ts +31 -1
  64. package/dist/api/server.js +95 -2
  65. package/dist/api/server.js.map +1 -1
  66. package/dist/api/setup-endpoints.d.ts +7 -0
  67. package/dist/api/setup-endpoints.js +67 -135
  68. package/dist/api/setup-endpoints.js.map +1 -1
  69. package/dist/api/setup-retry-endpoint.d.ts +19 -0
  70. package/dist/api/setup-retry-endpoint.js +32 -0
  71. package/dist/api/setup-retry-endpoint.js.map +1 -0
  72. package/dist/api/solvernets-endpoints.d.ts +8 -0
  73. package/dist/api/solvernets-endpoints.js +100 -105
  74. package/dist/api/solvernets-endpoints.js.map +1 -1
  75. package/dist/api/status-build.d.ts +167 -2
  76. package/dist/api/status-build.js +118 -27
  77. package/dist/api/status-build.js.map +1 -1
  78. package/dist/api/status-harness-rollup.d.ts +35 -0
  79. package/dist/api/status-harness-rollup.js +45 -0
  80. package/dist/api/status-harness-rollup.js.map +1 -0
  81. package/dist/api/task-run-routing.d.ts +7 -0
  82. package/dist/api/task-run-routing.js +12 -0
  83. package/dist/api/task-run-routing.js.map +1 -0
  84. package/dist/api/task-runs-build.d.ts +21 -0
  85. package/dist/api/task-runs-build.js +14 -1
  86. package/dist/api/task-runs-build.js.map +1 -1
  87. package/dist/build-info.json +4 -4
  88. package/dist/build-meta.json +1 -1
  89. package/dist/captures/live-publisher.js +24 -4
  90. package/dist/captures/live-publisher.js.map +1 -1
  91. package/dist/captures/publish.d.ts +1 -1
  92. package/dist/chain-read-errors.d.ts +22 -0
  93. package/dist/chain-read-errors.js +41 -1
  94. package/dist/chain-read-errors.js.map +1 -1
  95. package/dist/cli/commands/auth.js +1 -1
  96. package/dist/cli/commands/auth.js.map +1 -1
  97. package/dist/cli/commands/codedigest-revert-check.d.ts +33 -0
  98. package/dist/cli/commands/codedigest-revert-check.js +249 -0
  99. package/dist/cli/commands/codedigest-revert-check.js.map +1 -0
  100. package/dist/cli/commands/create.js +3 -2
  101. package/dist/cli/commands/create.js.map +1 -1
  102. package/dist/cli/commands/doctor.d.ts +2 -0
  103. package/dist/cli/commands/doctor.js +2 -0
  104. package/dist/cli/commands/doctor.js.map +1 -1
  105. package/dist/cli/commands/rewards.js +11 -7
  106. package/dist/cli/commands/rewards.js.map +1 -1
  107. package/dist/cli/commands/solver-nets.d.ts +1 -0
  108. package/dist/cli/commands/solver-nets.js +179 -16
  109. package/dist/cli/commands/solver-nets.js.map +1 -1
  110. package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
  111. package/dist/cli/commands/solver-plugins-block.js +118 -0
  112. package/dist/cli/commands/solver-plugins-block.js.map +1 -0
  113. package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
  114. package/dist/cli/commands/solver-plugins-feedback.js +262 -0
  115. package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
  116. package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
  117. package/dist/cli/commands/solver-plugins-read.js +259 -0
  118. package/dist/cli/commands/solver-plugins-read.js.map +1 -0
  119. package/dist/cli/commands/solver-plugins.d.ts +35 -0
  120. package/dist/cli/commands/solver-plugins.js +399 -2
  121. package/dist/cli/commands/solver-plugins.js.map +1 -1
  122. package/dist/cli/commands/status.js +1 -1
  123. package/dist/cli/commands/status.js.map +1 -1
  124. package/dist/cli/commands/tasks.js +101 -11
  125. package/dist/cli/commands/tasks.js.map +1 -1
  126. package/dist/cli/commands/update.d.ts +10 -0
  127. package/dist/cli/commands/update.js +36 -0
  128. package/dist/cli/commands/update.js.map +1 -1
  129. package/dist/cli/index.js +2 -0
  130. package/dist/cli/index.js.map +1 -1
  131. package/dist/cli/introspection-context.js +5 -0
  132. package/dist/cli/introspection-context.js.map +1 -1
  133. package/dist/cli/task-native-readiness.d.ts +10 -1
  134. package/dist/cli/task-native-readiness.js +30 -6
  135. package/dist/cli/task-native-readiness.js.map +1 -1
  136. package/dist/config.d.ts +287 -235
  137. package/dist/config.js +318 -114
  138. package/dist/config.js.map +1 -1
  139. package/dist/daemon/checkpoint-loop.d.ts +48 -0
  140. package/dist/daemon/checkpoint-loop.js +76 -0
  141. package/dist/daemon/checkpoint-loop.js.map +1 -0
  142. package/dist/daemon/creator.d.ts +1 -1
  143. package/dist/daemon/creator.js +20 -3
  144. package/dist/daemon/creator.js.map +1 -1
  145. package/dist/daemon/daemon.d.ts +22 -0
  146. package/dist/daemon/daemon.js +174 -31
  147. package/dist/daemon/daemon.js.map +1 -1
  148. package/dist/daemon/eviction-loop.d.ts +40 -0
  149. package/dist/daemon/eviction-loop.js +67 -0
  150. package/dist/daemon/eviction-loop.js.map +1 -0
  151. package/dist/daemon/gate-logger.d.ts +9 -0
  152. package/dist/daemon/gate-logger.js +2 -0
  153. package/dist/daemon/gate-logger.js.map +1 -0
  154. package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
  155. package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
  156. package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
  157. package/dist/daemon/jinn-claim-loop.d.ts +24 -17
  158. package/dist/daemon/jinn-claim-loop.js +77 -23
  159. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  160. package/dist/daemon/readiness-gate.d.ts +1 -4
  161. package/dist/daemon/readiness-gate.js.map +1 -1
  162. package/dist/daemon/skip-log-dedup.d.ts +69 -0
  163. package/dist/daemon/skip-log-dedup.js +106 -0
  164. package/dist/daemon/skip-log-dedup.js.map +1 -0
  165. package/dist/daemon/spend-cap-gate.d.ts +40 -0
  166. package/dist/daemon/spend-cap-gate.js +46 -0
  167. package/dist/daemon/spend-cap-gate.js.map +1 -0
  168. package/dist/dashboard/assets/index-BNs_ewI6.js +345 -0
  169. package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
  170. package/dist/dashboard/index.html +2 -2
  171. package/dist/discovery/factory.d.ts +17 -5
  172. package/dist/discovery/factory.js +46 -18
  173. package/dist/discovery/factory.js.map +1 -1
  174. package/dist/discovery/http.js +469 -3
  175. package/dist/discovery/http.js.map +1 -1
  176. package/dist/discovery/onchain.d.ts +5 -0
  177. package/dist/discovery/onchain.js +448 -18
  178. package/dist/discovery/onchain.js.map +1 -1
  179. package/dist/discovery/types.d.ts +174 -1
  180. package/dist/discovery/types.js +8 -10
  181. package/dist/discovery/types.js.map +1 -1
  182. package/dist/discovery/with-fallback.d.ts +7 -0
  183. package/dist/discovery/with-fallback.js +37 -0
  184. package/dist/discovery/with-fallback.js.map +1 -1
  185. package/dist/earning/bootstrap.d.ts +100 -4
  186. package/dist/earning/bootstrap.js +239 -76
  187. package/dist/earning/bootstrap.js.map +1 -1
  188. package/dist/earning/contracts.d.ts +14 -0
  189. package/dist/earning/contracts.js +17 -5
  190. package/dist/earning/contracts.js.map +1 -1
  191. package/dist/earning/funding-plan.js +27 -18
  192. package/dist/earning/funding-plan.js.map +1 -1
  193. package/dist/earning/jinn-rewards.d.ts +46 -0
  194. package/dist/earning/jinn-rewards.js +32 -0
  195. package/dist/earning/jinn-rewards.js.map +1 -1
  196. package/dist/earning/safe-adapter.d.ts +2 -0
  197. package/dist/earning/safe-adapter.js +37 -11
  198. package/dist/earning/safe-adapter.js.map +1 -1
  199. package/dist/earning/store.d.ts +8 -0
  200. package/dist/earning/store.js.map +1 -1
  201. package/dist/earning/testnet-setup-migration.d.ts +12 -0
  202. package/dist/earning/testnet-setup-migration.js +27 -1
  203. package/dist/earning/testnet-setup-migration.js.map +1 -1
  204. package/dist/earning/types.d.ts +21 -6
  205. package/dist/earning/viem-clients.d.ts +11 -4
  206. package/dist/earning/viem-clients.js +14 -5
  207. package/dist/earning/viem-clients.js.map +1 -1
  208. package/dist/erc8004/identity.d.ts +19 -3
  209. package/dist/erc8004/identity.js +21 -6
  210. package/dist/erc8004/identity.js.map +1 -1
  211. package/dist/erc8004/index.d.ts +1 -1
  212. package/dist/erc8004/index.js.map +1 -1
  213. package/dist/erc8004/reputation.d.ts +8 -0
  214. package/dist/erc8004/reputation.js +22 -3
  215. package/dist/erc8004/reputation.js.map +1 -1
  216. package/dist/events/types.d.ts +2 -2
  217. package/dist/harnesses/cost-estimates.d.ts +124 -0
  218. package/dist/harnesses/cost-estimates.js +265 -0
  219. package/dist/harnesses/cost-estimates.js.map +1 -0
  220. package/dist/harnesses/engine/engine.d.ts +78 -0
  221. package/dist/harnesses/engine/engine.js +153 -11
  222. package/dist/harnesses/engine/engine.js.map +1 -1
  223. package/dist/harnesses/engine/persistence.d.ts +51 -1
  224. package/dist/harnesses/engine/persistence.js +118 -5
  225. package/dist/harnesses/engine/persistence.js.map +1 -1
  226. package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
  227. package/dist/harnesses/engine/work-dir-reaper.js +100 -0
  228. package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
  229. package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
  230. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  231. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
  232. package/dist/harnesses/impls/hermes-agent/bootstrap.js +44 -8
  233. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  234. package/dist/harnesses/impls/hermes-agent/config-builder.d.ts +1 -1
  235. package/dist/harnesses/impls/hermes-agent/config-builder.js +4 -2
  236. package/dist/harnesses/impls/hermes-agent/config-builder.js.map +1 -1
  237. package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
  238. package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
  239. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  240. package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
  241. package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
  242. package/dist/harnesses/impls/index.d.ts +7 -0
  243. package/dist/harnesses/impls/index.js +16 -1
  244. package/dist/harnesses/impls/index.js.map +1 -1
  245. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
  246. package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
  247. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  248. package/dist/harnesses/impls/learner/harness.d.ts +47 -4
  249. package/dist/harnesses/impls/learner/harness.js +105 -2
  250. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  251. package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
  252. package/dist/harnesses/impls/learner/harvest.js +23 -5
  253. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  254. package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
  255. package/dist/harnesses/impls/learner/plugin-path.js +35 -15
  256. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  257. package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
  258. package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
  259. package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
  260. package/dist/harnesses/impls/learner/types.d.ts +11 -0
  261. package/dist/harnesses/impls/stub.d.ts +58 -0
  262. package/dist/harnesses/impls/stub.js +89 -0
  263. package/dist/harnesses/impls/stub.js.map +1 -0
  264. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
  265. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +199 -94
  266. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  267. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
  268. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
  269. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  270. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +88 -4
  271. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
  272. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  273. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
  274. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
  275. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  276. package/dist/harnesses/readiness-registry.d.ts +7 -0
  277. package/dist/harnesses/readiness-registry.js +18 -1
  278. package/dist/harnesses/readiness-registry.js.map +1 -1
  279. package/dist/learner/revert-decision.d.ts +59 -0
  280. package/dist/learner/revert-decision.js +53 -0
  281. package/dist/learner/revert-decision.js.map +1 -0
  282. package/dist/learner/revert-stats.d.ts +24 -0
  283. package/dist/learner/revert-stats.js +44 -0
  284. package/dist/learner/revert-stats.js.map +1 -0
  285. package/dist/main.js +470 -142
  286. package/dist/main.js.map +1 -1
  287. package/dist/mcp/get-codedigest-reward.d.ts +13 -0
  288. package/dist/mcp/get-codedigest-reward.js +23 -0
  289. package/dist/mcp/get-codedigest-reward.js.map +1 -0
  290. package/dist/mcp/server.js +23 -0
  291. package/dist/mcp/server.js.map +1 -1
  292. package/dist/observability/emit-event.d.ts +3 -2
  293. package/dist/observability/emit-event.js +22 -1
  294. package/dist/observability/emit-event.js.map +1 -1
  295. package/dist/operator-errors.d.ts +7 -0
  296. package/dist/operator-errors.js +13 -1
  297. package/dist/operator-errors.js.map +1 -1
  298. package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
  299. package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
  300. package/dist/plugins/learner/AGENTS.md +40 -0
  301. package/dist/plugins/learner/CLAUDE.md +33 -0
  302. package/dist/plugins/learner/README.md +59 -0
  303. package/dist/plugins/learner/hooks/hooks.json +16 -0
  304. package/dist/plugins/learner/hooks/session-start +38 -0
  305. package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
  306. package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
  307. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +111 -0
  308. package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
  309. package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
  310. package/dist/plugins/learner/skills/learn/promoter-prompt.md +184 -0
  311. package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
  312. package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
  313. package/dist/preflight/pidfile-liveness.d.ts +44 -0
  314. package/dist/preflight/pidfile-liveness.js +103 -0
  315. package/dist/preflight/pidfile-liveness.js.map +1 -0
  316. package/dist/preflight/rpc-network.d.ts +40 -0
  317. package/dist/preflight/rpc-network.js +67 -1
  318. package/dist/preflight/rpc-network.js.map +1 -1
  319. package/dist/restart-daemon.d.ts +90 -0
  320. package/dist/restart-daemon.js +95 -0
  321. package/dist/restart-daemon.js.map +1 -0
  322. package/dist/rpc/transport.d.ts +109 -0
  323. package/dist/rpc/transport.js +220 -0
  324. package/dist/rpc/transport.js.map +1 -0
  325. package/dist/scripts/donation-consumption-acceptance.js +7 -28
  326. package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
  327. package/dist/scripts/swe-rebench-v2-pytest-missing.json +16 -0
  328. package/dist/setup/halt-mode.d.ts +14 -0
  329. package/dist/setup/halt-mode.js +17 -0
  330. package/dist/setup/halt-mode.js.map +1 -0
  331. package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
  332. package/dist/solver-nets/prediction-operator-ux.js +90 -47
  333. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  334. package/dist/solver-nets/registry.d.ts +20 -1
  335. package/dist/solver-nets/registry.js +38 -25
  336. package/dist/solver-nets/registry.js.map +1 -1
  337. package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
  338. package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
  339. package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
  340. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
  341. package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
  342. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
  343. package/dist/solver-types/_swe-rebench-v2-state.d.ts +15 -0
  344. package/dist/solver-types/_swe-rebench-v2-state.js +19 -0
  345. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  346. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
  347. package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
  348. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  349. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +145 -2
  350. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +482 -44
  351. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  352. package/dist/solver-types/swe-rebench-v2-auto.d.ts +38 -14
  353. package/dist/solver-types/swe-rebench-v2-auto.js +87 -28
  354. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  355. package/dist/solver-types/swe-rebench-v2.d.ts +19 -2
  356. package/dist/solver-types/swe-rebench-v2.js +351 -96
  357. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  358. package/dist/solvernets/daemon-init.d.ts +10 -2
  359. package/dist/solvernets/daemon-init.js +22 -2
  360. package/dist/solvernets/daemon-init.js.map +1 -1
  361. package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
  362. package/dist/solvernets/launched-record-dispatcher.js +41 -7
  363. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  364. package/dist/solvernets/registry-client-erc8004.js +11 -0
  365. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  366. package/dist/solvernets/store.d.ts +7 -2
  367. package/dist/solvernets/store.js +1 -0
  368. package/dist/solvernets/store.js.map +1 -1
  369. package/dist/spend/cost-surface-status.d.ts +10 -0
  370. package/dist/spend/cost-surface-status.js +22 -0
  371. package/dist/spend/cost-surface-status.js.map +1 -0
  372. package/dist/spend/credential.d.ts +8 -0
  373. package/dist/spend/credential.js +30 -0
  374. package/dist/spend/credential.js.map +1 -0
  375. package/dist/spend/daemon-config.d.ts +13 -0
  376. package/dist/spend/daemon-config.js +24 -0
  377. package/dist/spend/daemon-config.js.map +1 -0
  378. package/dist/spend/pricing.d.ts +16 -0
  379. package/dist/spend/pricing.js +26 -0
  380. package/dist/spend/pricing.js.map +1 -0
  381. package/dist/spend/record.d.ts +13 -0
  382. package/dist/spend/record.js +30 -0
  383. package/dist/spend/record.js.map +1 -0
  384. package/dist/spend/usage.d.ts +27 -0
  385. package/dist/spend/usage.js +113 -0
  386. package/dist/spend/usage.js.map +1 -0
  387. package/dist/store/store.d.ts +61 -0
  388. package/dist/store/store.js +302 -7
  389. package/dist/store/store.js.map +1 -1
  390. package/dist/tasks/sources.d.ts +18 -1
  391. package/dist/tasks/sources.js +33 -5
  392. package/dist/tasks/sources.js.map +1 -1
  393. package/dist/trajectory/transcript-parsers/codex-session.d.ts +12 -6
  394. package/dist/trajectory/transcript-parsers/codex-session.js +114 -13
  395. package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -1
  396. package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
  397. package/dist/trajectory/transcript-session-dirs.d.ts +18 -0
  398. package/dist/trajectory/transcript-session-dirs.js +85 -0
  399. package/dist/trajectory/transcript-session-dirs.js.map +1 -0
  400. package/dist/trajectory/transcript-watcher.d.ts +20 -1
  401. package/dist/trajectory/transcript-watcher.js +98 -32
  402. package/dist/trajectory/transcript-watcher.js.map +1 -1
  403. package/dist/tx-retry.d.ts +166 -19
  404. package/dist/tx-retry.js +310 -32
  405. package/dist/tx-retry.js.map +1 -1
  406. package/dist/types/payloads/portfolio-v0.d.ts +3 -3
  407. package/dist/types/payloads/prediction-apy-v0.d.ts +8 -8
  408. package/dist/types/payloads/prediction-v0.d.ts +17 -17
  409. package/dist/types/task-document.d.ts +392 -0
  410. package/dist/types/task-document.js +10 -0
  411. package/dist/types/task-document.js.map +1 -1
  412. package/dist/types/task.d.ts +28 -0
  413. package/dist/util/extract-tx-hash.d.ts +14 -0
  414. package/dist/util/extract-tx-hash.js +19 -0
  415. package/dist/util/extract-tx-hash.js.map +1 -0
  416. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
  417. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
  418. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
  419. package/package.json +37 -13
  420. package/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
  421. package/plugins/learner/skills/learn/promoter-prompt.md +72 -1
  422. package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
  423. package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
  424. package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
  425. package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
  426. package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
  427. package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
  428. package/plugins/swe-rebench-v2-runtime/README.md +6 -6
  429. package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
  430. package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +69 -0
  431. package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
  432. package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
  433. package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
  434. package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
package/dist/config.d.ts CHANGED
@@ -15,45 +15,6 @@
15
15
  */
16
16
  import { z } from 'zod';
17
17
  import type { Task } from './types/task.js';
18
- export interface DefaultSolverNetConfig extends Record<string, unknown> {
19
- enabled?: boolean;
20
- solverType: string;
21
- /**
22
- * Operator-selected roles for this SolverNet. A non-empty subset of
23
- * `['solving', 'evaluating']`. Multiple roles can run concurrently — the
24
- * daemon enforces `disallowSolverSelfEvaluation` on-chain so the operator
25
- * never evaluates its own Solutions, and the on-chain
26
- * TaskActivityCheckerV3 keeps `solutionDeliveryWeight` and
27
- * `verdictDeliveryWeight` as independent additive counters.
28
- *
29
- * Launcher-side flagging is no longer expressed as an operator role —
30
- * launcher ownership is determined by the launched-record subsystem
31
- * (spec/2026-05-05-solvernet-creation-and-launch.md §11). Operator config
32
- * carries only the participation roles.
33
- *
34
- * Legacy `role: 'solving' | 'evaluating'` configs are auto-migrated to
35
- * `roles: [<role>]` by the loader (zod preprocessor on solverNets[*]).
36
- */
37
- roles?: Array<'solving' | 'evaluating'>;
38
- harness?: string;
39
- model?: string;
40
- plugins?: Array<string | {
41
- name?: string;
42
- source: string;
43
- version?: string;
44
- }>;
45
- taskGenerator?: {
46
- enabled?: boolean;
47
- };
48
- }
49
- /**
50
- * Default `solverNets` is empty per Decision 5 of
51
- * spec/2026-05-05-solvernet-creation-and-launch.md — pre-release, no
52
- * migration burden. Fresh installs no longer seed the `prediction` entry;
53
- * the operator joins SolverNets through the registry (Task 21's
54
- * `joinedSolverNets` block).
55
- */
56
- export declare const DEFAULT_SOLVER_NETS: Record<string, DefaultSolverNetConfig>;
57
18
  export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
58
19
  /**
59
20
  * Network to connect to.
@@ -64,19 +25,24 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
64
25
  */
65
26
  network: z.ZodDefault<z.ZodEnum<["mainnet", "testnet"]>>;
66
27
  /**
67
- * Base RPC endpoint.
68
- * Defaults to https://mainnet.base.org for 'mainnet' and
69
- * https://sepolia.base.org for 'testnet'. Set explicitly to override.
28
+ * Base RPC endpoint(s). Accepts either a single URL string or an array of
29
+ * URLs. When an array (or a comma-separated env var) is supplied, the
30
+ * daemon builds a viem `fallback()` chain in slot order (primary first).
31
+ * See `client/src/rpc/transport.ts` for the wrapper. Defaults to the
32
+ * publicnode+sepolia.base.org two-provider chain on testnet and the public
33
+ * `mainnet.base.org` on mainnet. Set explicitly to override.
34
+ *
35
+ * Env: JINN_RPC_URL / BASE_SEPOLIA_RPC_URL / BASE_RPC_URL (comma-separated).
70
36
  */
71
- rpcUrl: z.ZodOptional<z.ZodString>;
72
- archiveRpcUrl: z.ZodOptional<z.ZodString>;
37
+ rpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
38
+ archiveRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
73
39
  /**
74
- * Optional L2 proof/archive RPC endpoint for canonical cross-chain canaries.
40
+ * Optional L2 proof/archive RPC endpoint(s) for canonical cross-chain canaries.
75
41
  * The daemon can use its normal rpcUrl for writes while proof construction
76
42
  * uses this endpoint for historical eth_getProof at OP dispute-game blocks.
77
- * Env: JINN_L2_PROOF_RPC_URL.
43
+ * Accepts string or array form (see rpcUrl). Env: JINN_L2_PROOF_RPC_URL.
78
44
  */
79
- l2ProofRpcUrl: z.ZodOptional<z.ZodString>;
45
+ l2ProofRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
80
46
  /** Earning state directory */
81
47
  earningDir: z.ZodDefault<z.ZodString>;
82
48
  /** SQLite database path */
@@ -96,6 +62,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
96
62
  * Set to 0 to disable. Env: JINN_BALANCE_TOPUP_INTERVAL_MS
97
63
  */
98
64
  balanceTopupIntervalMs: z.ZodDefault<z.ZodNumber>;
65
+ /**
66
+ * Interval between eviction-state polls for the staking proxy (ms).
67
+ * Default 60000 (1 min). Set to 0 to disable. Env: JINN_EVICTION_CHECK_INTERVAL_MS
68
+ */
69
+ evictionCheckIntervalMs: z.ZodDefault<z.ZodNumber>;
70
+ /**
71
+ * Interval between proactive `checkpoint()` tx calls to each staked
72
+ * proxy (ms). Keeps `tsCheckpoint` advancing so the activity-rate window
73
+ * stays narrow — without it operators silently fail liveness on realistic
74
+ * cadence (issue #505). Default 300_000 (5 min), matching the standard
75
+ * `livenessPeriod` on stOLAS staking proxies. Set to 0 to disable.
76
+ * Env: JINN_CHECKPOINT_INTERVAL_MS.
77
+ */
78
+ checkpointIntervalMs: z.ZodDefault<z.ZodNumber>;
99
79
  /** HTTP API port */
100
80
  apiPort: z.ZodDefault<z.ZodNumber>;
101
81
  /**
@@ -123,6 +103,13 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
123
103
  * Default 30 000 ms. Env: JINN_HERMES_DOCTOR_TIMEOUT_MS.
124
104
  */
125
105
  hermesDoctorTimeoutMs: z.ZodDefault<z.ZodNumber>;
106
+ /** Path to the `codex` executable. Defaults to `codex` when unset. */
107
+ codexPath: z.ZodOptional<z.ZodString>;
108
+ /**
109
+ * Timeout in ms for `codex --version` health-check runs.
110
+ * Default 30 000 ms. Env: JINN_CODEX_DOCTOR_TIMEOUT_MS.
111
+ */
112
+ codexDoctorTimeoutMs: z.ZodDefault<z.ZodNumber>;
126
113
  /**
127
114
  * How the operator runs the daemon. Set once by app-guided setup or the
128
115
  * legacy `jinn auth` compatibility command, then read by every command that
@@ -172,6 +159,16 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
172
159
  * backlog while proving one fresh task path.
173
160
  */
174
161
  taskDiscoveryAllowedTaskIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
162
+ /**
163
+ * Opt-in lower bound (L2 block number) for the mech adapter's canonical
164
+ * on-chain TaskCreated backlog scan. Unset → the adapter's per-chain default
165
+ * (DEFAULT_TASK_DISCOVERY_FROM_BLOCK) flows through (see gh #300). Set this to
166
+ * a recent block to bound the scan to a small recent window so the indexer
167
+ * (DiscoveryAPI.findClaimableTasks) carries the bulk of discovery — the
168
+ * canonical getLogs scan over a large/bloated history parses huge responses
169
+ * on the main thread and can stall the event loop. Env: JINN_TASK_DISCOVERY_FROM_BLOCK.
170
+ */
171
+ taskDiscoveryOnchainFromBlock: z.ZodOptional<z.ZodNumber>;
175
172
  /** This node's public HTTP endpoint (for 8004 registration) */
176
173
  nodeEndpoint: z.ZodOptional<z.ZodString>;
177
174
  /** Tasks to create and solve. Empty by default; enabled SolverNet generators fill the loop. */
@@ -208,6 +205,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
208
205
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
209
206
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
210
207
  policyHook: z.ZodOptional<z.ZodString>;
208
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
211
209
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
212
210
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
213
211
  maxClaims: z.ZodNumber;
@@ -217,6 +215,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
217
215
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
218
216
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
219
217
  policyHook: z.ZodOptional<z.ZodString>;
218
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
220
219
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
221
220
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
222
221
  maxClaims: z.ZodNumber;
@@ -226,6 +225,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
226
225
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
227
226
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
228
227
  policyHook: z.ZodOptional<z.ZodString>;
228
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
229
229
  }, z.ZodTypeAny, "passthrough">>>;
230
230
  signedTask: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodObject<{
231
231
  signature: z.ZodObject<{
@@ -273,6 +273,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
273
273
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
274
274
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
275
275
  policyHook: z.ZodOptional<z.ZodString>;
276
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
276
277
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
277
278
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
278
279
  maxClaims: z.ZodNumber;
@@ -282,6 +283,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
282
283
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
283
284
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
284
285
  policyHook: z.ZodOptional<z.ZodString>;
286
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
285
287
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
286
288
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
287
289
  maxClaims: z.ZodNumber;
@@ -291,6 +293,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
291
293
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
292
294
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
293
295
  policyHook: z.ZodOptional<z.ZodString>;
296
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
294
297
  }, z.ZodTypeAny, "passthrough">>;
295
298
  creator: z.ZodObject<{
296
299
  safeAddress: z.ZodString;
@@ -349,6 +352,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
349
352
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
350
353
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
351
354
  policyHook: z.ZodOptional<z.ZodString>;
355
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
352
356
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
353
357
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
354
358
  maxClaims: z.ZodNumber;
@@ -358,6 +362,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
358
362
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
359
363
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
360
364
  policyHook: z.ZodOptional<z.ZodString>;
365
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
361
366
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
362
367
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
363
368
  maxClaims: z.ZodNumber;
@@ -367,6 +372,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
367
372
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
368
373
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
369
374
  policyHook: z.ZodOptional<z.ZodString>;
375
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
370
376
  }, z.ZodTypeAny, "passthrough">>;
371
377
  creator: z.ZodObject<{
372
378
  safeAddress: z.ZodString;
@@ -425,6 +431,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
425
431
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
426
432
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
427
433
  policyHook: z.ZodOptional<z.ZodString>;
434
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
428
435
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
429
436
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
430
437
  maxClaims: z.ZodNumber;
@@ -434,6 +441,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
434
441
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
435
442
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
436
443
  policyHook: z.ZodOptional<z.ZodString>;
444
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
437
445
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
438
446
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
439
447
  maxClaims: z.ZodNumber;
@@ -443,6 +451,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
443
451
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
444
452
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
445
453
  policyHook: z.ZodOptional<z.ZodString>;
454
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
446
455
  }, z.ZodTypeAny, "passthrough">>;
447
456
  creator: z.ZodObject<{
448
457
  safeAddress: z.ZodString;
@@ -501,6 +510,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
501
510
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
502
511
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
503
512
  policyHook: z.ZodOptional<z.ZodString>;
513
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
504
514
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
505
515
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
506
516
  maxClaims: z.ZodNumber;
@@ -510,6 +520,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
510
520
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
511
521
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
512
522
  policyHook: z.ZodOptional<z.ZodString>;
523
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
513
524
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
514
525
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
515
526
  maxClaims: z.ZodNumber;
@@ -519,6 +530,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
519
530
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
520
531
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
521
532
  policyHook: z.ZodOptional<z.ZodString>;
533
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
522
534
  }, z.ZodTypeAny, "passthrough">>;
523
535
  creator: z.ZodObject<{
524
536
  safeAddress: z.ZodString;
@@ -577,6 +589,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
577
589
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
578
590
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
579
591
  policyHook: z.ZodOptional<z.ZodString>;
592
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
580
593
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
581
594
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
582
595
  maxClaims: z.ZodNumber;
@@ -586,6 +599,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
586
599
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
587
600
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
588
601
  policyHook: z.ZodOptional<z.ZodString>;
602
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
589
603
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
590
604
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
591
605
  maxClaims: z.ZodNumber;
@@ -595,6 +609,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
595
609
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
596
610
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
597
611
  policyHook: z.ZodOptional<z.ZodString>;
612
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
598
613
  }, z.ZodTypeAny, "passthrough">>;
599
614
  creator: z.ZodObject<{
600
615
  safeAddress: z.ZodString;
@@ -637,6 +652,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
637
652
  claimWindowEndTs?: number | undefined;
638
653
  submissionDeadlineTs?: number | undefined;
639
654
  policyHook?: string | undefined;
655
+ requiredVerdicts?: number | undefined;
640
656
  } & {
641
657
  [k: string]: unknown;
642
658
  };
@@ -691,6 +707,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
691
707
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
692
708
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
693
709
  policyHook: z.ZodOptional<z.ZodString>;
710
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
694
711
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
695
712
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
696
713
  maxClaims: z.ZodNumber;
@@ -700,6 +717,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
700
717
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
701
718
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
702
719
  policyHook: z.ZodOptional<z.ZodString>;
720
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
703
721
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
704
722
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
705
723
  maxClaims: z.ZodNumber;
@@ -709,6 +727,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
709
727
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
710
728
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
711
729
  policyHook: z.ZodOptional<z.ZodString>;
730
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
712
731
  }, z.ZodTypeAny, "passthrough">>;
713
732
  creator: z.ZodObject<{
714
733
  safeAddress: z.ZodString;
@@ -745,6 +764,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
745
764
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
746
765
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
747
766
  policyHook: z.ZodOptional<z.ZodString>;
767
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
748
768
  }, z.ZodTypeAny, "passthrough"> | undefined;
749
769
  context?: Record<string, unknown> | undefined;
750
770
  attemptId?: string | undefined;
@@ -780,6 +800,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
780
800
  claimWindowEndTs?: number | undefined;
781
801
  submissionDeadlineTs?: number | undefined;
782
802
  policyHook?: string | undefined;
803
+ requiredVerdicts?: number | undefined;
783
804
  } & {
784
805
  [k: string]: unknown;
785
806
  };
@@ -812,6 +833,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
812
833
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
813
834
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
814
835
  policyHook: z.ZodOptional<z.ZodString>;
836
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
815
837
  }, z.ZodTypeAny, "passthrough"> | undefined;
816
838
  context?: Record<string, unknown> | undefined;
817
839
  attemptId?: string | undefined;
@@ -863,6 +885,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
863
885
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
864
886
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
865
887
  policyHook: z.ZodOptional<z.ZodString>;
888
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
866
889
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
867
890
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
868
891
  maxClaims: z.ZodNumber;
@@ -872,6 +895,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
872
895
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
873
896
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
874
897
  policyHook: z.ZodOptional<z.ZodString>;
898
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
875
899
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
876
900
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
877
901
  maxClaims: z.ZodNumber;
@@ -881,6 +905,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
881
905
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
882
906
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
883
907
  policyHook: z.ZodOptional<z.ZodString>;
908
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
884
909
  }, z.ZodTypeAny, "passthrough">>;
885
910
  creator: z.ZodObject<{
886
911
  safeAddress: z.ZodString;
@@ -921,17 +946,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
921
946
  */
922
947
  jinnMviL2DeploymentPath: z.ZodOptional<z.ZodString>;
923
948
  /**
924
- * RPC endpoint for the L1 governance chain (Ethereum / Sepolia) where the
925
- * JinnDistributor lives. Required when jinnDistributorAddress is set.
926
- * Env: JINN_ETHEREUM_RPC_URL.
949
+ * RPC endpoint(s) for the L1 governance chain (Ethereum / Sepolia) where
950
+ * the JinnDistributor lives. Accepts string or array form (see rpcUrl) and
951
+ * supports comma-separated env values. Testnet defaults to a public Sepolia
952
+ * RPC; mainnet requires an operator override when L1 submit mode is
953
+ * configured. Env: JINN_ETHEREUM_RPC_URL.
927
954
  */
928
- ethereumRpcUrl: z.ZodOptional<z.ZodString>;
955
+ ethereumRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
929
956
  /**
930
- * Optional archive RPC endpoint for the L1 governance chain. Used for
931
- * historical block lookups when constructing canonical-mode proofs.
932
- * Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
957
+ * Optional archive RPC endpoint(s) for the L1 governance chain. Used for
958
+ * historical block lookups when constructing canonical-mode proofs. Accepts
959
+ * string or array form. Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
933
960
  */
934
- ethereumArchiveRpcUrl: z.ZodOptional<z.ZodString>;
961
+ ethereumArchiveRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
935
962
  /**
936
963
  * L1 network used by the cross-chain claim loop. 'sepolia' tracks Base
937
964
  * Sepolia testnet; 'ethereum' tracks Base mainnet. Defaults to 'sepolia'
@@ -939,10 +966,10 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
939
966
  */
940
967
  jinnL1Network: z.ZodDefault<z.ZodEnum<["sepolia", "ethereum"]>>;
941
968
  /**
942
- * JinnDistributor address on the L1 governance chain. Setting this enables
943
- * the cross-chain claim loop. When set, ethereumRpcUrl MUST also be set.
944
- * Resolved from jinnMviL1DeploymentPath when omitted; otherwise a manual
945
- * override. Env: JINN_DISTRIBUTOR_ADDRESS.
969
+ * JinnDistributor address on the L1 governance chain. Required for
970
+ * jinnClaimSubmissionMode='submit'. When set for submit mode, ethereumRpcUrl
971
+ * MUST also be set. Resolved from jinnMviL1DeploymentPath when omitted;
972
+ * otherwise a manual override. Env: JINN_DISTRIBUTOR_ADDRESS.
946
973
  */
947
974
  jinnDistributorAddress: z.ZodOptional<z.ZodString>;
948
975
  /**
@@ -967,6 +994,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
967
994
  * Env: JINN_MESSENGER_MODE.
968
995
  */
969
996
  jinnMessengerMode: z.ZodDefault<z.ZodEnum<["canonical", "mock"]>>;
997
+ /**
998
+ * Claim submission mode. `emit-only` only submits TaskClaimEmitter.emitClaim
999
+ * on L2 and records the resulting ticket. `submit` continues into the L1
1000
+ * messenger/distributor path.
1001
+ * Env: JINN_CLAIM_SUBMISSION_MODE.
1002
+ */
1003
+ jinnClaimSubmissionMode: z.ZodDefault<z.ZodEnum<["emit-only", "submit"]>>;
1004
+ /**
1005
+ * Explicit operator gate for the cross-chain JINN claim loop. The schema
1006
+ * default stays off for mainnet/unknown networks; loadConfig defaults this
1007
+ * on for testnet now that the emitter and standing relayer are live.
1008
+ * Env: JINN_CLAIM_LOOP_ENABLED=1|true|yes.
1009
+ */
1010
+ jinnClaimLoopEnabled: z.ZodDefault<z.ZodBoolean>;
970
1011
  /**
971
1012
  * How often the daemon ticks the cross-chain JINN claim loop (ms). Default
972
1013
  * 3 600 000 (1 hour) — well below mainnet challenge windows while
@@ -1073,97 +1114,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1073
1114
  mode?: "train" | "frozen" | undefined;
1074
1115
  }>>;
1075
1116
  /**
1076
- * SolverNet activation, Harness selection, and operator-configured runtime plugins.
1077
- *
1078
- * Each entry's `roles` is a non-empty subset of `['solving', 'evaluating']`.
1079
- * Multiple roles can run concurrently for the same SolverNet; the
1080
- * protocol-level `disallowSolverSelfEvaluation` flag prevents the operator
1081
- * from evaluating its own Solutions and the on-chain
1082
- * TaskActivityCheckerV3 tracks Solution and Verdict counters independently
1083
- * (additive into `eligibleActivityWeight`).
1084
- *
1085
- * Launcher ownership lives in the launched-record subsystem
1086
- * (spec/2026-05-05-solvernet-creation-and-launch.md §11), not in operator
1087
- * config — there is no `'launching'` operator role. Legacy entries that
1088
- * include `'launching'` in `roles` have it stripped by the preprocessor so
1089
- * older config files keep loading.
1090
- *
1091
- * Backwards-compat: a legacy `role: 'solving' | 'evaluating'` field is
1092
- * auto-promoted to `roles: [<role>]` by the zod preprocessor below so
1093
- * existing `~/.jinn-client/config.json` files keep loading without an
1094
- * operator migration step.
1095
- */
1096
- solverNets: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
1097
- enabled: z.ZodDefault<z.ZodBoolean>;
1098
- solverType: z.ZodString;
1099
- roles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["solving", "evaluating"]>, "many">>, ("solving" | "evaluating")[], ("solving" | "evaluating")[] | undefined>;
1100
- harness: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
1101
- model: z.ZodOptional<z.ZodString>;
1102
- plugins: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
1103
- name: z.ZodOptional<z.ZodString>;
1104
- source: z.ZodString;
1105
- version: z.ZodOptional<z.ZodString>;
1106
- }, "strip", z.ZodTypeAny, {
1107
- source: string;
1108
- name?: string | undefined;
1109
- version?: string | undefined;
1110
- }, {
1111
- source: string;
1112
- name?: string | undefined;
1113
- version?: string | undefined;
1114
- }>]>, "many">>;
1115
- taskGenerator: z.ZodDefault<z.ZodObject<{
1116
- enabled: z.ZodDefault<z.ZodBoolean>;
1117
- }, "strip", z.ZodTypeAny, {
1118
- enabled: boolean;
1119
- }, {
1120
- enabled?: boolean | undefined;
1121
- }>>;
1122
- }, "strip", z.ZodTypeAny, {
1123
- solverType: string;
1124
- enabled: boolean;
1125
- roles: ("solving" | "evaluating")[];
1126
- harness: string;
1127
- plugins: (string | {
1128
- source: string;
1129
- name?: string | undefined;
1130
- version?: string | undefined;
1131
- })[];
1132
- taskGenerator: {
1133
- enabled: boolean;
1134
- };
1135
- model?: string | undefined;
1136
- }, {
1137
- solverType: string;
1138
- enabled?: boolean | undefined;
1139
- roles?: ("solving" | "evaluating")[] | undefined;
1140
- harness?: string | undefined;
1141
- model?: string | undefined;
1142
- plugins?: (string | {
1143
- source: string;
1144
- name?: string | undefined;
1145
- version?: string | undefined;
1146
- })[] | undefined;
1147
- taskGenerator?: {
1148
- enabled?: boolean | undefined;
1149
- } | undefined;
1150
- }>, {
1151
- solverType: string;
1152
- enabled: boolean;
1153
- roles: ("solving" | "evaluating")[];
1154
- harness: string;
1155
- plugins: (string | {
1156
- source: string;
1157
- name?: string | undefined;
1158
- version?: string | undefined;
1159
- })[];
1160
- taskGenerator: {
1161
- enabled: boolean;
1162
- };
1163
- model?: string | undefined;
1164
- }, unknown>>>;
1165
- /**
1166
- * Manifest-keyed joined SolverNets (Task 21).
1117
+ * Manifest-keyed joined SolverNets.
1167
1118
  *
1168
1119
  * Spec: spec/2026-05-05-solvernet-creation-and-launch.md §12.
1169
1120
  *
@@ -1172,10 +1123,10 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1172
1123
  * (CIDv0 / CIDv1) — the only stable identifier that maps back to a
1173
1124
  * launched-instance authority across launchers.
1174
1125
  *
1175
- * Kept structurally separate from legacy `solverNets` for now. The daemon
1176
- * narrows this block into runtime SolverNet registry entries on restart, and
1177
- * Task 22 collapses both branches into a single manifest-keyed shape once
1178
- * the legacy block is fully drained.
1126
+ * The daemon narrows this block into runtime SolverNet registry entries on
1127
+ * restart. Legacy short-name-keyed `solverNets` blocks on operator config
1128
+ * files are auto-migrated into synthetic `legacy:<short-name>`-keyed
1129
+ * entries at load time (see `migrateLegacySolverNets`).
1179
1130
  */
1180
1131
  joinedSolverNets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1181
1132
  manifestCid: z.ZodString;
@@ -1196,28 +1147,28 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1196
1147
  plugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1197
1148
  disabledDefaultPlugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1198
1149
  }, "strip", z.ZodTypeAny, {
1150
+ manifestCid: string;
1199
1151
  roles: ("solver" | "evaluator")[];
1200
1152
  plugins: string[];
1201
- manifestCid: string;
1202
1153
  disabledDefaultPlugins: string[];
1203
1154
  name?: string | undefined;
1204
1155
  harness?: string | undefined;
1205
- model?: string | undefined;
1206
1156
  contract?: {
1207
1157
  id: string;
1208
1158
  version: string;
1209
1159
  } | undefined;
1160
+ model?: string | undefined;
1210
1161
  }, {
1211
- roles: ("solver" | "evaluator")[];
1212
1162
  manifestCid: string;
1163
+ roles: ("solver" | "evaluator")[];
1213
1164
  name?: string | undefined;
1214
1165
  harness?: string | undefined;
1215
- model?: string | undefined;
1216
- plugins?: string[] | undefined;
1217
1166
  contract?: {
1218
1167
  id: string;
1219
1168
  version: string;
1220
1169
  } | undefined;
1170
+ model?: string | undefined;
1171
+ plugins?: string[] | undefined;
1221
1172
  disabledDefaultPlugins?: string[] | undefined;
1222
1173
  }>>>;
1223
1174
  /**
@@ -1374,20 +1325,49 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1374
1325
  * Env: JINN_REPUTATION_ENABLED
1375
1326
  */
1376
1327
  reputationEnabled: z.ZodDefault<z.ZodBoolean>;
1328
+ /**
1329
+ * Per-credential daily spend caps (USD). Keys are credential identifiers
1330
+ * (e.g. `'anthropic:api-key'`); values are positive numbers representing
1331
+ * the maximum USD spend per day for that credential.
1332
+ *
1333
+ * `JINN_SPEND_CAP_USD` (env-only, consumed directly by the spend-budget
1334
+ * subsystem in Task 9) is tracked for provenance in TRACKED_ENV_VARS below
1335
+ * but is NOT a config-file field and has no entry in this schema.
1336
+ */
1337
+ spendCaps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1338
+ /**
1339
+ * Operator-local SolverPlugin trust state.
1340
+ *
1341
+ * `blockedCids` is the list of plug-in CIDs the operator has chosen to
1342
+ * refuse to load — populated by `jinn solver-plugins block <cid>` and read
1343
+ * at daemon startup. The block list complements the on-chain
1344
+ * `giveFeedback(score=0)` write (which is the public-trust signal); the
1345
+ * local list is the operator's own refusal to execute, applied even when
1346
+ * the network write fails. File-managed only — no env override.
1347
+ *
1348
+ * See spec/2026-05-26-117-design.md "Failure modes" and "Local-only effects".
1349
+ */
1350
+ solverPlugins: z.ZodDefault<z.ZodObject<{
1351
+ blockedCids: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1352
+ }, "strip", z.ZodTypeAny, {
1353
+ blockedCids: string[];
1354
+ }, {
1355
+ blockedCids?: string[] | undefined;
1356
+ }>>;
1377
1357
  }, "strip", z.ZodTypeAny, {
1378
- harness: {
1379
- mode: "train" | "frozen";
1380
- };
1381
1358
  network: "testnet" | "mainnet";
1382
1359
  earningDir: string;
1383
1360
  dbPath: string;
1384
1361
  pollIntervalMs: number;
1385
1362
  rewardClaimIntervalMs: number;
1386
1363
  balanceTopupIntervalMs: number;
1364
+ evictionCheckIntervalMs: number;
1365
+ checkpointIntervalMs: number;
1387
1366
  apiPort: number;
1388
1367
  claudePath: string;
1389
1368
  claudeModel: string;
1390
1369
  hermesDoctorTimeoutMs: number;
1370
+ codexDoctorTimeoutMs: number;
1391
1371
  peers: string[];
1392
1372
  tasks: {
1393
1373
  id?: string | undefined;
@@ -1412,6 +1392,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1412
1392
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1413
1393
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1414
1394
  policyHook: z.ZodOptional<z.ZodString>;
1395
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1415
1396
  }, z.ZodTypeAny, "passthrough"> | undefined;
1416
1397
  context?: Record<string, unknown> | undefined;
1417
1398
  attemptId?: string | undefined;
@@ -1447,6 +1428,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1447
1428
  claimWindowEndTs?: number | undefined;
1448
1429
  submissionDeadlineTs?: number | undefined;
1449
1430
  policyHook?: string | undefined;
1431
+ requiredVerdicts?: number | undefined;
1450
1432
  } & {
1451
1433
  [k: string]: unknown;
1452
1434
  };
@@ -1461,25 +1443,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1461
1443
  ipfsGatewayUrl: string;
1462
1444
  jinnL1Network: "sepolia" | "ethereum";
1463
1445
  jinnMessengerMode: "canonical" | "mock";
1446
+ jinnClaimSubmissionMode: "emit-only" | "submit";
1447
+ jinnClaimLoopEnabled: boolean;
1464
1448
  jinnClaimLoopIntervalMs: number;
1465
1449
  stakingMode: "standard" | "self-bond";
1466
1450
  targetServices: number;
1467
1451
  debug: boolean;
1468
- solverNets: Record<string, {
1469
- solverType: string;
1470
- enabled: boolean;
1471
- roles: ("solving" | "evaluating")[];
1472
- harness: string;
1473
- plugins: (string | {
1474
- source: string;
1475
- name?: string | undefined;
1476
- version?: string | undefined;
1477
- })[];
1478
- taskGenerator: {
1479
- enabled: boolean;
1480
- };
1481
- model?: string | undefined;
1482
- }>;
1452
+ harness: {
1453
+ mode: "train" | "frozen";
1454
+ };
1483
1455
  captures: {
1484
1456
  llmProxy: {
1485
1457
  enabled: boolean;
@@ -1488,13 +1460,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1488
1460
  };
1489
1461
  runLegacyMigrations: boolean;
1490
1462
  reputationEnabled: boolean;
1491
- rpcUrl?: string | undefined;
1492
- archiveRpcUrl?: string | undefined;
1493
- l2ProofRpcUrl?: string | undefined;
1463
+ solverPlugins: {
1464
+ blockedCids: string[];
1465
+ };
1466
+ rpcUrl?: string | string[] | undefined;
1467
+ archiveRpcUrl?: string | string[] | undefined;
1468
+ l2ProofRpcUrl?: string | string[] | undefined;
1494
1469
  apiBindHost?: string | undefined;
1495
1470
  hermesPath?: string | undefined;
1496
1471
  hermesModel?: string | undefined;
1497
1472
  hermesProvider?: string | undefined;
1473
+ codexPath?: string | undefined;
1498
1474
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1499
1475
  discovery?: {
1500
1476
  mode?: "http" | "embedded" | "onchain" | undefined;
@@ -1502,6 +1478,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1502
1478
  fallbackToOnchain?: boolean | undefined;
1503
1479
  } | undefined;
1504
1480
  taskDiscoveryAllowedTaskIds?: string[] | undefined;
1481
+ taskDiscoveryOnchainFromBlock?: number | undefined;
1505
1482
  nodeEndpoint?: string | undefined;
1506
1483
  testnetL2DeploymentPath?: string | undefined;
1507
1484
  testnetL2TokenDeploymentPath?: string | undefined;
@@ -1509,8 +1486,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1509
1486
  testnetStolasDeploymentPath?: string | undefined;
1510
1487
  jinnMviL1DeploymentPath?: string | undefined;
1511
1488
  jinnMviL2DeploymentPath?: string | undefined;
1512
- ethereumRpcUrl?: string | undefined;
1513
- ethereumArchiveRpcUrl?: string | undefined;
1489
+ ethereumRpcUrl?: string | string[] | undefined;
1490
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1514
1491
  jinnDistributorAddress?: string | undefined;
1515
1492
  jinnClaimEmitterAddress?: string | undefined;
1516
1493
  jinnMessengerAddress?: string | undefined;
@@ -1528,17 +1505,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1528
1505
  }[] | undefined;
1529
1506
  } | undefined;
1530
1507
  joinedSolverNets?: Record<string, {
1508
+ manifestCid: string;
1531
1509
  roles: ("solver" | "evaluator")[];
1532
1510
  plugins: string[];
1533
- manifestCid: string;
1534
1511
  disabledDefaultPlugins: string[];
1535
1512
  name?: string | undefined;
1536
1513
  harness?: string | undefined;
1537
- model?: string | undefined;
1538
1514
  contract?: {
1539
1515
  id: string;
1540
1516
  version: string;
1541
1517
  } | undefined;
1518
+ model?: string | undefined;
1542
1519
  }> | undefined;
1543
1520
  trustedImplSigners?: {
1544
1521
  publicKey: string;
@@ -1559,19 +1536,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1559
1536
  } | undefined;
1560
1537
  identityRegistryAddress?: string | undefined;
1561
1538
  validationRegistryAddress?: string | undefined;
1539
+ spendCaps?: Record<string, number> | undefined;
1562
1540
  }, {
1563
- harness?: {
1564
- mode?: "train" | "frozen" | undefined;
1565
- } | undefined;
1566
1541
  network?: "testnet" | "mainnet" | undefined;
1567
- rpcUrl?: string | undefined;
1568
- archiveRpcUrl?: string | undefined;
1569
- l2ProofRpcUrl?: string | undefined;
1542
+ rpcUrl?: string | string[] | undefined;
1543
+ archiveRpcUrl?: string | string[] | undefined;
1544
+ l2ProofRpcUrl?: string | string[] | undefined;
1570
1545
  earningDir?: string | undefined;
1571
1546
  dbPath?: string | undefined;
1572
1547
  pollIntervalMs?: number | undefined;
1573
1548
  rewardClaimIntervalMs?: number | undefined;
1574
1549
  balanceTopupIntervalMs?: number | undefined;
1550
+ evictionCheckIntervalMs?: number | undefined;
1551
+ checkpointIntervalMs?: number | undefined;
1575
1552
  apiPort?: number | undefined;
1576
1553
  apiBindHost?: string | undefined;
1577
1554
  claudePath?: string | undefined;
@@ -1580,6 +1557,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1580
1557
  hermesModel?: string | undefined;
1581
1558
  hermesProvider?: string | undefined;
1582
1559
  hermesDoctorTimeoutMs?: number | undefined;
1560
+ codexPath?: string | undefined;
1561
+ codexDoctorTimeoutMs?: number | undefined;
1583
1562
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1584
1563
  peers?: string | string[] | undefined;
1585
1564
  discovery?: {
@@ -1588,6 +1567,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1588
1567
  fallbackToOnchain?: boolean | undefined;
1589
1568
  } | undefined;
1590
1569
  taskDiscoveryAllowedTaskIds?: string[] | undefined;
1570
+ taskDiscoveryOnchainFromBlock?: number | undefined;
1591
1571
  nodeEndpoint?: string | undefined;
1592
1572
  tasks?: {
1593
1573
  id?: string | undefined;
@@ -1612,6 +1592,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1612
1592
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1613
1593
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1614
1594
  policyHook: z.ZodOptional<z.ZodString>;
1595
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1615
1596
  }, z.ZodTypeAny, "passthrough"> | undefined;
1616
1597
  context?: Record<string, unknown> | undefined;
1617
1598
  attemptId?: string | undefined;
@@ -1663,6 +1644,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1663
1644
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1664
1645
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1665
1646
  policyHook: z.ZodOptional<z.ZodString>;
1647
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1666
1648
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1667
1649
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
1668
1650
  maxClaims: z.ZodNumber;
@@ -1672,6 +1654,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1672
1654
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1673
1655
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1674
1656
  policyHook: z.ZodOptional<z.ZodString>;
1657
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1675
1658
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1676
1659
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
1677
1660
  maxClaims: z.ZodNumber;
@@ -1681,6 +1664,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1681
1664
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1682
1665
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1683
1666
  policyHook: z.ZodOptional<z.ZodString>;
1667
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1684
1668
  }, z.ZodTypeAny, "passthrough">>;
1685
1669
  creator: z.ZodObject<{
1686
1670
  safeAddress: z.ZodString;
@@ -1703,13 +1687,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1703
1687
  testnetStolasDeploymentPath?: string | undefined;
1704
1688
  jinnMviL1DeploymentPath?: string | undefined;
1705
1689
  jinnMviL2DeploymentPath?: string | undefined;
1706
- ethereumRpcUrl?: string | undefined;
1707
- ethereumArchiveRpcUrl?: string | undefined;
1690
+ ethereumRpcUrl?: string | string[] | undefined;
1691
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1708
1692
  jinnL1Network?: "sepolia" | "ethereum" | undefined;
1709
1693
  jinnDistributorAddress?: string | undefined;
1710
1694
  jinnClaimEmitterAddress?: string | undefined;
1711
1695
  jinnMessengerAddress?: string | undefined;
1712
1696
  jinnMessengerMode?: "canonical" | "mock" | undefined;
1697
+ jinnClaimSubmissionMode?: "emit-only" | "submit" | undefined;
1698
+ jinnClaimLoopEnabled?: boolean | undefined;
1713
1699
  jinnClaimLoopIntervalMs?: number | undefined;
1714
1700
  stakingMode?: "standard" | "self-bond" | undefined;
1715
1701
  targetServices?: number | undefined;
@@ -1727,18 +1713,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1727
1713
  version?: string | undefined;
1728
1714
  }[] | undefined;
1729
1715
  } | undefined;
1730
- solverNets?: Record<string, unknown> | undefined;
1716
+ harness?: {
1717
+ mode?: "train" | "frozen" | undefined;
1718
+ } | undefined;
1731
1719
  joinedSolverNets?: Record<string, {
1732
- roles: ("solver" | "evaluator")[];
1733
1720
  manifestCid: string;
1721
+ roles: ("solver" | "evaluator")[];
1734
1722
  name?: string | undefined;
1735
1723
  harness?: string | undefined;
1736
- model?: string | undefined;
1737
- plugins?: string[] | undefined;
1738
1724
  contract?: {
1739
1725
  id: string;
1740
1726
  version: string;
1741
1727
  } | undefined;
1728
+ model?: string | undefined;
1729
+ plugins?: string[] | undefined;
1742
1730
  disabledDefaultPlugins?: string[] | undefined;
1743
1731
  }> | undefined;
1744
1732
  trustedImplSigners?: {
@@ -1768,20 +1756,24 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1768
1756
  identityRegistryAddress?: string | undefined;
1769
1757
  validationRegistryAddress?: string | undefined;
1770
1758
  reputationEnabled?: boolean | undefined;
1759
+ spendCaps?: Record<string, number> | undefined;
1760
+ solverPlugins?: {
1761
+ blockedCids?: string[] | undefined;
1762
+ } | undefined;
1771
1763
  }>, {
1772
- harness: {
1773
- mode: "train" | "frozen";
1774
- };
1775
1764
  network: "testnet" | "mainnet";
1776
1765
  earningDir: string;
1777
1766
  dbPath: string;
1778
1767
  pollIntervalMs: number;
1779
1768
  rewardClaimIntervalMs: number;
1780
1769
  balanceTopupIntervalMs: number;
1770
+ evictionCheckIntervalMs: number;
1771
+ checkpointIntervalMs: number;
1781
1772
  apiPort: number;
1782
1773
  claudePath: string;
1783
1774
  claudeModel: string;
1784
1775
  hermesDoctorTimeoutMs: number;
1776
+ codexDoctorTimeoutMs: number;
1785
1777
  peers: string[];
1786
1778
  tasks: {
1787
1779
  id?: string | undefined;
@@ -1806,6 +1798,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1806
1798
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1807
1799
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1808
1800
  policyHook: z.ZodOptional<z.ZodString>;
1801
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1809
1802
  }, z.ZodTypeAny, "passthrough"> | undefined;
1810
1803
  context?: Record<string, unknown> | undefined;
1811
1804
  attemptId?: string | undefined;
@@ -1841,6 +1834,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1841
1834
  claimWindowEndTs?: number | undefined;
1842
1835
  submissionDeadlineTs?: number | undefined;
1843
1836
  policyHook?: string | undefined;
1837
+ requiredVerdicts?: number | undefined;
1844
1838
  } & {
1845
1839
  [k: string]: unknown;
1846
1840
  };
@@ -1855,25 +1849,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1855
1849
  ipfsGatewayUrl: string;
1856
1850
  jinnL1Network: "sepolia" | "ethereum";
1857
1851
  jinnMessengerMode: "canonical" | "mock";
1852
+ jinnClaimSubmissionMode: "emit-only" | "submit";
1853
+ jinnClaimLoopEnabled: boolean;
1858
1854
  jinnClaimLoopIntervalMs: number;
1859
1855
  stakingMode: "standard" | "self-bond";
1860
1856
  targetServices: number;
1861
1857
  debug: boolean;
1862
- solverNets: Record<string, {
1863
- solverType: string;
1864
- enabled: boolean;
1865
- roles: ("solving" | "evaluating")[];
1866
- harness: string;
1867
- plugins: (string | {
1868
- source: string;
1869
- name?: string | undefined;
1870
- version?: string | undefined;
1871
- })[];
1872
- taskGenerator: {
1873
- enabled: boolean;
1874
- };
1875
- model?: string | undefined;
1876
- }>;
1858
+ harness: {
1859
+ mode: "train" | "frozen";
1860
+ };
1877
1861
  captures: {
1878
1862
  llmProxy: {
1879
1863
  enabled: boolean;
@@ -1882,13 +1866,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1882
1866
  };
1883
1867
  runLegacyMigrations: boolean;
1884
1868
  reputationEnabled: boolean;
1885
- rpcUrl?: string | undefined;
1886
- archiveRpcUrl?: string | undefined;
1887
- l2ProofRpcUrl?: string | undefined;
1869
+ solverPlugins: {
1870
+ blockedCids: string[];
1871
+ };
1872
+ rpcUrl?: string | string[] | undefined;
1873
+ archiveRpcUrl?: string | string[] | undefined;
1874
+ l2ProofRpcUrl?: string | string[] | undefined;
1888
1875
  apiBindHost?: string | undefined;
1889
1876
  hermesPath?: string | undefined;
1890
1877
  hermesModel?: string | undefined;
1891
1878
  hermesProvider?: string | undefined;
1879
+ codexPath?: string | undefined;
1892
1880
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1893
1881
  discovery?: {
1894
1882
  mode?: "http" | "embedded" | "onchain" | undefined;
@@ -1896,6 +1884,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1896
1884
  fallbackToOnchain?: boolean | undefined;
1897
1885
  } | undefined;
1898
1886
  taskDiscoveryAllowedTaskIds?: string[] | undefined;
1887
+ taskDiscoveryOnchainFromBlock?: number | undefined;
1899
1888
  nodeEndpoint?: string | undefined;
1900
1889
  testnetL2DeploymentPath?: string | undefined;
1901
1890
  testnetL2TokenDeploymentPath?: string | undefined;
@@ -1903,8 +1892,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1903
1892
  testnetStolasDeploymentPath?: string | undefined;
1904
1893
  jinnMviL1DeploymentPath?: string | undefined;
1905
1894
  jinnMviL2DeploymentPath?: string | undefined;
1906
- ethereumRpcUrl?: string | undefined;
1907
- ethereumArchiveRpcUrl?: string | undefined;
1895
+ ethereumRpcUrl?: string | string[] | undefined;
1896
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1908
1897
  jinnDistributorAddress?: string | undefined;
1909
1898
  jinnClaimEmitterAddress?: string | undefined;
1910
1899
  jinnMessengerAddress?: string | undefined;
@@ -1922,17 +1911,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1922
1911
  }[] | undefined;
1923
1912
  } | undefined;
1924
1913
  joinedSolverNets?: Record<string, {
1914
+ manifestCid: string;
1925
1915
  roles: ("solver" | "evaluator")[];
1926
1916
  plugins: string[];
1927
- manifestCid: string;
1928
1917
  disabledDefaultPlugins: string[];
1929
1918
  name?: string | undefined;
1930
1919
  harness?: string | undefined;
1931
- model?: string | undefined;
1932
1920
  contract?: {
1933
1921
  id: string;
1934
1922
  version: string;
1935
1923
  } | undefined;
1924
+ model?: string | undefined;
1936
1925
  }> | undefined;
1937
1926
  trustedImplSigners?: {
1938
1927
  publicKey: string;
@@ -1953,19 +1942,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1953
1942
  } | undefined;
1954
1943
  identityRegistryAddress?: string | undefined;
1955
1944
  validationRegistryAddress?: string | undefined;
1945
+ spendCaps?: Record<string, number> | undefined;
1956
1946
  }, {
1957
- harness?: {
1958
- mode?: "train" | "frozen" | undefined;
1959
- } | undefined;
1960
1947
  network?: "testnet" | "mainnet" | undefined;
1961
- rpcUrl?: string | undefined;
1962
- archiveRpcUrl?: string | undefined;
1963
- l2ProofRpcUrl?: string | undefined;
1948
+ rpcUrl?: string | string[] | undefined;
1949
+ archiveRpcUrl?: string | string[] | undefined;
1950
+ l2ProofRpcUrl?: string | string[] | undefined;
1964
1951
  earningDir?: string | undefined;
1965
1952
  dbPath?: string | undefined;
1966
1953
  pollIntervalMs?: number | undefined;
1967
1954
  rewardClaimIntervalMs?: number | undefined;
1968
1955
  balanceTopupIntervalMs?: number | undefined;
1956
+ evictionCheckIntervalMs?: number | undefined;
1957
+ checkpointIntervalMs?: number | undefined;
1969
1958
  apiPort?: number | undefined;
1970
1959
  apiBindHost?: string | undefined;
1971
1960
  claudePath?: string | undefined;
@@ -1974,6 +1963,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1974
1963
  hermesModel?: string | undefined;
1975
1964
  hermesProvider?: string | undefined;
1976
1965
  hermesDoctorTimeoutMs?: number | undefined;
1966
+ codexPath?: string | undefined;
1967
+ codexDoctorTimeoutMs?: number | undefined;
1977
1968
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1978
1969
  peers?: string | string[] | undefined;
1979
1970
  discovery?: {
@@ -1982,6 +1973,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1982
1973
  fallbackToOnchain?: boolean | undefined;
1983
1974
  } | undefined;
1984
1975
  taskDiscoveryAllowedTaskIds?: string[] | undefined;
1976
+ taskDiscoveryOnchainFromBlock?: number | undefined;
1985
1977
  nodeEndpoint?: string | undefined;
1986
1978
  tasks?: {
1987
1979
  id?: string | undefined;
@@ -2006,6 +1998,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2006
1998
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2007
1999
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2008
2000
  policyHook: z.ZodOptional<z.ZodString>;
2001
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2009
2002
  }, z.ZodTypeAny, "passthrough"> | undefined;
2010
2003
  context?: Record<string, unknown> | undefined;
2011
2004
  attemptId?: string | undefined;
@@ -2057,6 +2050,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2057
2050
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2058
2051
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2059
2052
  policyHook: z.ZodOptional<z.ZodString>;
2053
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2060
2054
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2061
2055
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
2062
2056
  maxClaims: z.ZodNumber;
@@ -2066,6 +2060,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2066
2060
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2067
2061
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2068
2062
  policyHook: z.ZodOptional<z.ZodString>;
2063
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2069
2064
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2070
2065
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
2071
2066
  maxClaims: z.ZodNumber;
@@ -2075,6 +2070,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2075
2070
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2076
2071
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2077
2072
  policyHook: z.ZodOptional<z.ZodString>;
2073
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2078
2074
  }, z.ZodTypeAny, "passthrough">>;
2079
2075
  creator: z.ZodObject<{
2080
2076
  safeAddress: z.ZodString;
@@ -2097,13 +2093,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2097
2093
  testnetStolasDeploymentPath?: string | undefined;
2098
2094
  jinnMviL1DeploymentPath?: string | undefined;
2099
2095
  jinnMviL2DeploymentPath?: string | undefined;
2100
- ethereumRpcUrl?: string | undefined;
2101
- ethereumArchiveRpcUrl?: string | undefined;
2096
+ ethereumRpcUrl?: string | string[] | undefined;
2097
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
2102
2098
  jinnL1Network?: "sepolia" | "ethereum" | undefined;
2103
2099
  jinnDistributorAddress?: string | undefined;
2104
2100
  jinnClaimEmitterAddress?: string | undefined;
2105
2101
  jinnMessengerAddress?: string | undefined;
2106
2102
  jinnMessengerMode?: "canonical" | "mock" | undefined;
2103
+ jinnClaimSubmissionMode?: "emit-only" | "submit" | undefined;
2104
+ jinnClaimLoopEnabled?: boolean | undefined;
2107
2105
  jinnClaimLoopIntervalMs?: number | undefined;
2108
2106
  stakingMode?: "standard" | "self-bond" | undefined;
2109
2107
  targetServices?: number | undefined;
@@ -2121,18 +2119,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2121
2119
  version?: string | undefined;
2122
2120
  }[] | undefined;
2123
2121
  } | undefined;
2124
- solverNets?: Record<string, unknown> | undefined;
2122
+ harness?: {
2123
+ mode?: "train" | "frozen" | undefined;
2124
+ } | undefined;
2125
2125
  joinedSolverNets?: Record<string, {
2126
- roles: ("solver" | "evaluator")[];
2127
2126
  manifestCid: string;
2127
+ roles: ("solver" | "evaluator")[];
2128
2128
  name?: string | undefined;
2129
2129
  harness?: string | undefined;
2130
- model?: string | undefined;
2131
- plugins?: string[] | undefined;
2132
2130
  contract?: {
2133
2131
  id: string;
2134
2132
  version: string;
2135
2133
  } | undefined;
2134
+ model?: string | undefined;
2135
+ plugins?: string[] | undefined;
2136
2136
  disabledDefaultPlugins?: string[] | undefined;
2137
2137
  }> | undefined;
2138
2138
  trustedImplSigners?: {
@@ -2162,10 +2162,33 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2162
2162
  identityRegistryAddress?: string | undefined;
2163
2163
  validationRegistryAddress?: string | undefined;
2164
2164
  reputationEnabled?: boolean | undefined;
2165
+ spendCaps?: Record<string, number> | undefined;
2166
+ solverPlugins?: {
2167
+ blockedCids?: string[] | undefined;
2168
+ } | undefined;
2165
2169
  }>;
2166
- /** JinnConfig with rpcUrl guaranteed to be resolved (never undefined) and tasks with id always assigned. */
2167
- export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl' | 'tasks' | 'engine'> & {
2170
+ /**
2171
+ * JinnConfig with rpcUrl guaranteed to be resolved (never undefined) and tasks
2172
+ * with id always assigned.
2173
+ *
2174
+ * `rpcUrl` is the head of the fallback chain (the slot-0 URL) and is kept as
2175
+ * a `string` for display continuity — the ~30 places that log/display
2176
+ * `config.rpcUrl` (provenance, error formatting, `[main] daemon starting on …`)
2177
+ * keep working unchanged. The full chain lives in `rpcUrls: readonly string[]`,
2178
+ * which is what `buildFallbackTransport()` consumes. Same shape for the L1
2179
+ * (ethereum) and optional archive/proof variants.
2180
+ */
2181
+ export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl' | 'archiveRpcUrl' | 'l2ProofRpcUrl' | 'ethereumRpcUrl' | 'ethereumArchiveRpcUrl' | 'tasks' | 'engine'> & {
2168
2182
  rpcUrl: string;
2183
+ rpcUrls: readonly string[];
2184
+ archiveRpcUrl?: string;
2185
+ archiveRpcUrls?: readonly string[];
2186
+ l2ProofRpcUrl?: string;
2187
+ l2ProofRpcUrls?: readonly string[];
2188
+ ethereumRpcUrl?: string;
2189
+ ethereumRpcUrls?: readonly string[];
2190
+ ethereumArchiveRpcUrl?: string;
2191
+ ethereumArchiveRpcUrls?: readonly string[];
2169
2192
  tasks: Task[];
2170
2193
  engine: {
2171
2194
  workingDirRoot: string;
@@ -2181,12 +2204,41 @@ export declare const DEFAULT_CONFIG_PATH: string;
2181
2204
  * historical sync — see ponder.config.ts).
2182
2205
  */
2183
2206
  export declare const DEFAULT_TESTNET_DISCOVERY_URL = "https://jinn-indexer-production.up.railway.app";
2207
+ export declare const DEFAULT_TESTNET_ETHEREUM_RPC_URL = "https://ethereum-sepolia-rpc.publicnode.com";
2208
+ /**
2209
+ * Default fallback chain for the L2 measurement chain (Base Sepolia) on
2210
+ * testnet. Per AC2 of issue #592:
2211
+ * slot 0 — `https://base-sepolia.publicnode.com` (no-auth, 50k-block
2212
+ * getLogs cap, no shared-quota cliff).
2213
+ * slot 1 — `https://sepolia.base.org` (free public Coinbase endpoint,
2214
+ * 2k-block cap; last-resort backup).
2215
+ * Operators are encouraged to prepend a paid primary key (Alchemy, Tenderly,
2216
+ * etc.) via `rpcUrl` config or `JINN_RPC_URL` / `BASE_SEPOLIA_RPC_URL` env.
2217
+ */
2218
+ export declare const DEFAULT_TESTNET_RPC_URLS: readonly string[];
2184
2219
  export type ConfigLoadErrorCode = 'config_file_not_found' | 'config_json_invalid' | 'tasks_file_not_found' | 'tasks_json_invalid' | 'config_invalid';
2185
2220
  export declare class ConfigLoadError extends Error {
2186
2221
  readonly code: ConfigLoadErrorCode;
2187
2222
  readonly details?: Record<string, unknown>;
2188
2223
  constructor(code: ConfigLoadErrorCode, message: string, details?: Record<string, unknown>);
2189
2224
  }
2225
+ /**
2226
+ * Translate any legacy short-name-keyed `solverNets` block on the raw parsed
2227
+ * config into manifest-keyed `joinedSolverNets` entries with synthetic
2228
+ * `legacy:<short-name>` keys.
2229
+ *
2230
+ * This is the auto-migration path for operators upgrading past issue #421.
2231
+ * The runtime claim filter remains manifest-digest gated, so synthetic-keyed
2232
+ * entries don't change task eligibility — they exist purely so the diagnostic
2233
+ * surfaces (Overview SOLVING-ON eyebrow, prediction-operator-status) keep
2234
+ * showing the operator's previous SolverNets until they re-join via the SPA.
2235
+ *
2236
+ * Returns the number of legacy entries migrated. Idempotent — calling on an
2237
+ * already-migrated raw config is a no-op.
2238
+ *
2239
+ * @param raw — the JSON-parsed config file contents (mutated in place).
2240
+ */
2241
+ export declare function migrateLegacySolverNets(raw: Record<string, unknown>): number;
2190
2242
  /**
2191
2243
  * Load config with resolution: env > config file > defaults.
2192
2244
  *