@jinn-network/client 0.1.6 → 0.1.7-canary.08ebd916

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 (390) 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 +38 -2
  7. package/dist/adapters/mech/adapter.js +269 -62
  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 +8 -2
  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 +25 -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 +16 -0
  67. package/dist/api/setup-endpoints.js +89 -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 +99 -60
  74. package/dist/api/solvernets-endpoints.js.map +1 -1
  75. package/dist/api/status-build.d.ts +168 -2
  76. package/dist/api/status-build.js +116 -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 +10 -0
  93. package/dist/chain-read-errors.js +15 -0
  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/create.js +3 -2
  98. package/dist/cli/commands/create.js.map +1 -1
  99. package/dist/cli/commands/doctor.d.ts +2 -0
  100. package/dist/cli/commands/doctor.js +2 -0
  101. package/dist/cli/commands/doctor.js.map +1 -1
  102. package/dist/cli/commands/rewards.js +11 -7
  103. package/dist/cli/commands/rewards.js.map +1 -1
  104. package/dist/cli/commands/solver-nets.js +101 -15
  105. package/dist/cli/commands/solver-nets.js.map +1 -1
  106. package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
  107. package/dist/cli/commands/solver-plugins-block.js +118 -0
  108. package/dist/cli/commands/solver-plugins-block.js.map +1 -0
  109. package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
  110. package/dist/cli/commands/solver-plugins-feedback.js +262 -0
  111. package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
  112. package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
  113. package/dist/cli/commands/solver-plugins-read.js +259 -0
  114. package/dist/cli/commands/solver-plugins-read.js.map +1 -0
  115. package/dist/cli/commands/solver-plugins.d.ts +35 -0
  116. package/dist/cli/commands/solver-plugins.js +399 -2
  117. package/dist/cli/commands/solver-plugins.js.map +1 -1
  118. package/dist/cli/commands/status.js +1 -1
  119. package/dist/cli/commands/status.js.map +1 -1
  120. package/dist/cli/commands/tasks.js +101 -11
  121. package/dist/cli/commands/tasks.js.map +1 -1
  122. package/dist/cli/commands/update.d.ts +10 -0
  123. package/dist/cli/commands/update.js +36 -0
  124. package/dist/cli/commands/update.js.map +1 -1
  125. package/dist/cli/introspection-context.js +5 -0
  126. package/dist/cli/introspection-context.js.map +1 -1
  127. package/dist/cli/task-native-readiness.d.ts +10 -1
  128. package/dist/cli/task-native-readiness.js +30 -6
  129. package/dist/cli/task-native-readiness.js.map +1 -1
  130. package/dist/config.d.ts +273 -235
  131. package/dist/config.js +305 -114
  132. package/dist/config.js.map +1 -1
  133. package/dist/daemon/checkpoint-loop.d.ts +48 -0
  134. package/dist/daemon/checkpoint-loop.js +76 -0
  135. package/dist/daemon/checkpoint-loop.js.map +1 -0
  136. package/dist/daemon/creator.d.ts +1 -1
  137. package/dist/daemon/creator.js +7 -3
  138. package/dist/daemon/creator.js.map +1 -1
  139. package/dist/daemon/daemon.d.ts +22 -0
  140. package/dist/daemon/daemon.js +156 -23
  141. package/dist/daemon/daemon.js.map +1 -1
  142. package/dist/daemon/eviction-loop.d.ts +40 -0
  143. package/dist/daemon/eviction-loop.js +67 -0
  144. package/dist/daemon/eviction-loop.js.map +1 -0
  145. package/dist/daemon/gate-logger.d.ts +9 -0
  146. package/dist/daemon/gate-logger.js +2 -0
  147. package/dist/daemon/gate-logger.js.map +1 -0
  148. package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
  149. package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
  150. package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
  151. package/dist/daemon/jinn-claim-loop.d.ts +24 -17
  152. package/dist/daemon/jinn-claim-loop.js +77 -23
  153. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  154. package/dist/daemon/readiness-gate.d.ts +1 -4
  155. package/dist/daemon/readiness-gate.js.map +1 -1
  156. package/dist/daemon/skip-log-dedup.d.ts +69 -0
  157. package/dist/daemon/skip-log-dedup.js +106 -0
  158. package/dist/daemon/skip-log-dedup.js.map +1 -0
  159. package/dist/daemon/spend-cap-gate.d.ts +40 -0
  160. package/dist/daemon/spend-cap-gate.js +46 -0
  161. package/dist/daemon/spend-cap-gate.js.map +1 -0
  162. package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
  163. package/dist/dashboard/assets/index-DkTglWXU.js +345 -0
  164. package/dist/dashboard/index.html +2 -2
  165. package/dist/discovery/factory.d.ts +17 -5
  166. package/dist/discovery/factory.js +46 -18
  167. package/dist/discovery/factory.js.map +1 -1
  168. package/dist/discovery/http.js +216 -3
  169. package/dist/discovery/http.js.map +1 -1
  170. package/dist/discovery/onchain.d.ts +5 -0
  171. package/dist/discovery/onchain.js +418 -15
  172. package/dist/discovery/onchain.js.map +1 -1
  173. package/dist/discovery/types.d.ts +75 -1
  174. package/dist/discovery/types.js +8 -10
  175. package/dist/discovery/types.js.map +1 -1
  176. package/dist/discovery/with-fallback.d.ts +7 -0
  177. package/dist/discovery/with-fallback.js +20 -0
  178. package/dist/discovery/with-fallback.js.map +1 -1
  179. package/dist/earning/bootstrap.d.ts +100 -4
  180. package/dist/earning/bootstrap.js +221 -74
  181. package/dist/earning/bootstrap.js.map +1 -1
  182. package/dist/earning/contracts.d.ts +14 -0
  183. package/dist/earning/contracts.js +17 -5
  184. package/dist/earning/contracts.js.map +1 -1
  185. package/dist/earning/funding-plan.js +27 -18
  186. package/dist/earning/funding-plan.js.map +1 -1
  187. package/dist/earning/jinn-rewards.d.ts +46 -0
  188. package/dist/earning/jinn-rewards.js +32 -0
  189. package/dist/earning/jinn-rewards.js.map +1 -1
  190. package/dist/earning/safe-adapter.d.ts +2 -0
  191. package/dist/earning/safe-adapter.js +37 -11
  192. package/dist/earning/safe-adapter.js.map +1 -1
  193. package/dist/earning/store.d.ts +8 -0
  194. package/dist/earning/store.js.map +1 -1
  195. package/dist/earning/testnet-setup-migration.d.ts +12 -0
  196. package/dist/earning/testnet-setup-migration.js +27 -1
  197. package/dist/earning/testnet-setup-migration.js.map +1 -1
  198. package/dist/earning/types.d.ts +21 -6
  199. package/dist/earning/viem-clients.d.ts +11 -4
  200. package/dist/earning/viem-clients.js +14 -5
  201. package/dist/earning/viem-clients.js.map +1 -1
  202. package/dist/erc8004/identity.d.ts +19 -3
  203. package/dist/erc8004/identity.js +21 -6
  204. package/dist/erc8004/identity.js.map +1 -1
  205. package/dist/erc8004/index.d.ts +1 -1
  206. package/dist/erc8004/index.js.map +1 -1
  207. package/dist/erc8004/reputation.d.ts +8 -0
  208. package/dist/erc8004/reputation.js +22 -3
  209. package/dist/erc8004/reputation.js.map +1 -1
  210. package/dist/events/types.d.ts +2 -2
  211. package/dist/harnesses/cost-estimates.d.ts +145 -0
  212. package/dist/harnesses/cost-estimates.js +297 -0
  213. package/dist/harnesses/cost-estimates.js.map +1 -0
  214. package/dist/harnesses/engine/engine.d.ts +78 -0
  215. package/dist/harnesses/engine/engine.js +153 -11
  216. package/dist/harnesses/engine/engine.js.map +1 -1
  217. package/dist/harnesses/engine/persistence.d.ts +51 -1
  218. package/dist/harnesses/engine/persistence.js +118 -5
  219. package/dist/harnesses/engine/persistence.js.map +1 -1
  220. package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
  221. package/dist/harnesses/engine/work-dir-reaper.js +100 -0
  222. package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
  223. package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
  224. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  225. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
  226. package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
  227. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  228. package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
  229. package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
  230. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  231. package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
  232. package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
  233. package/dist/harnesses/impls/index.d.ts +7 -0
  234. package/dist/harnesses/impls/index.js +16 -1
  235. package/dist/harnesses/impls/index.js.map +1 -1
  236. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
  237. package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
  238. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  239. package/dist/harnesses/impls/learner/harness.d.ts +38 -4
  240. package/dist/harnesses/impls/learner/harness.js +96 -2
  241. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  242. package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
  243. package/dist/harnesses/impls/learner/harvest.js +23 -5
  244. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  245. package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
  246. package/dist/harnesses/impls/learner/plugin-path.js +35 -15
  247. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  248. package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
  249. package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
  250. package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
  251. package/dist/harnesses/impls/learner/types.d.ts +11 -0
  252. package/dist/harnesses/impls/stub.d.ts +58 -0
  253. package/dist/harnesses/impls/stub.js +89 -0
  254. package/dist/harnesses/impls/stub.js.map +1 -0
  255. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
  256. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
  257. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  258. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
  259. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
  260. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  261. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +88 -4
  262. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
  263. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  264. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
  265. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
  266. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  267. package/dist/harnesses/readiness-registry.d.ts +7 -0
  268. package/dist/harnesses/readiness-registry.js +18 -1
  269. package/dist/harnesses/readiness-registry.js.map +1 -1
  270. package/dist/main.js +419 -111
  271. package/dist/main.js.map +1 -1
  272. package/dist/observability/emit-event.d.ts +3 -2
  273. package/dist/observability/emit-event.js +22 -1
  274. package/dist/observability/emit-event.js.map +1 -1
  275. package/dist/operator-errors.d.ts +7 -0
  276. package/dist/operator-errors.js +13 -1
  277. package/dist/operator-errors.js.map +1 -1
  278. package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
  279. package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
  280. package/dist/plugins/learner/AGENTS.md +40 -0
  281. package/dist/plugins/learner/CLAUDE.md +33 -0
  282. package/dist/plugins/learner/README.md +59 -0
  283. package/dist/plugins/learner/hooks/hooks.json +16 -0
  284. package/dist/plugins/learner/hooks/session-start +38 -0
  285. package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
  286. package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
  287. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
  288. package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
  289. package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
  290. package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
  291. package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
  292. package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
  293. package/dist/preflight/rpc-network.d.ts +40 -0
  294. package/dist/preflight/rpc-network.js +67 -1
  295. package/dist/preflight/rpc-network.js.map +1 -1
  296. package/dist/restart-daemon.d.ts +90 -0
  297. package/dist/restart-daemon.js +95 -0
  298. package/dist/restart-daemon.js.map +1 -0
  299. package/dist/rpc/transport.d.ts +109 -0
  300. package/dist/rpc/transport.js +220 -0
  301. package/dist/rpc/transport.js.map +1 -0
  302. package/dist/scripts/donation-consumption-acceptance.js +7 -28
  303. package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
  304. package/dist/setup/halt-mode.d.ts +14 -0
  305. package/dist/setup/halt-mode.js +17 -0
  306. package/dist/setup/halt-mode.js.map +1 -0
  307. package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
  308. package/dist/solver-nets/prediction-operator-ux.js +90 -47
  309. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  310. package/dist/solver-nets/registry.d.ts +20 -1
  311. package/dist/solver-nets/registry.js +38 -25
  312. package/dist/solver-nets/registry.js.map +1 -1
  313. package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
  314. package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
  315. package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
  316. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
  317. package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
  318. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
  319. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
  320. package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
  321. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  322. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +94 -1
  323. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +305 -39
  324. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  325. package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
  326. package/dist/solver-types/swe-rebench-v2-auto.js +57 -20
  327. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  328. package/dist/solver-types/swe-rebench-v2.d.ts +18 -2
  329. package/dist/solver-types/swe-rebench-v2.js +310 -94
  330. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  331. package/dist/solvernets/daemon-init.d.ts +10 -2
  332. package/dist/solvernets/daemon-init.js +22 -2
  333. package/dist/solvernets/daemon-init.js.map +1 -1
  334. package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
  335. package/dist/solvernets/launched-record-dispatcher.js +44 -7
  336. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  337. package/dist/solvernets/store.d.ts +5 -0
  338. package/dist/solvernets/store.js +1 -0
  339. package/dist/solvernets/store.js.map +1 -1
  340. package/dist/spend/credential.d.ts +8 -0
  341. package/dist/spend/credential.js +30 -0
  342. package/dist/spend/credential.js.map +1 -0
  343. package/dist/spend/daemon-config.d.ts +13 -0
  344. package/dist/spend/daemon-config.js +24 -0
  345. package/dist/spend/daemon-config.js.map +1 -0
  346. package/dist/spend/pricing.d.ts +16 -0
  347. package/dist/spend/pricing.js +26 -0
  348. package/dist/spend/pricing.js.map +1 -0
  349. package/dist/spend/record.d.ts +13 -0
  350. package/dist/spend/record.js +30 -0
  351. package/dist/spend/record.js.map +1 -0
  352. package/dist/spend/usage.d.ts +27 -0
  353. package/dist/spend/usage.js +113 -0
  354. package/dist/spend/usage.js.map +1 -0
  355. package/dist/store/store.d.ts +61 -0
  356. package/dist/store/store.js +302 -7
  357. package/dist/store/store.js.map +1 -1
  358. package/dist/tasks/sources.d.ts +18 -1
  359. package/dist/tasks/sources.js +33 -5
  360. package/dist/tasks/sources.js.map +1 -1
  361. package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
  362. package/dist/tx-retry.d.ts +166 -19
  363. package/dist/tx-retry.js +310 -32
  364. package/dist/tx-retry.js.map +1 -1
  365. package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
  366. package/dist/types/payloads/prediction-v0.d.ts +5 -5
  367. package/dist/types/task-document.d.ts +392 -0
  368. package/dist/types/task-document.js +10 -0
  369. package/dist/types/task-document.js.map +1 -1
  370. package/dist/types/task.d.ts +28 -0
  371. package/dist/util/extract-tx-hash.d.ts +14 -0
  372. package/dist/util/extract-tx-hash.js +19 -0
  373. package/dist/util/extract-tx-hash.js.map +1 -0
  374. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
  375. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
  376. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
  377. package/package.json +36 -13
  378. package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
  379. package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
  380. package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
  381. package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
  382. package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
  383. package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
  384. package/plugins/swe-rebench-v2-runtime/README.md +6 -6
  385. package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
  386. package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +69 -0
  387. package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
  388. package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
  389. package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
  390. 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
@@ -208,6 +195,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
208
195
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
209
196
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
210
197
  policyHook: z.ZodOptional<z.ZodString>;
198
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
211
199
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
212
200
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
213
201
  maxClaims: z.ZodNumber;
@@ -217,6 +205,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
217
205
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
218
206
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
219
207
  policyHook: z.ZodOptional<z.ZodString>;
208
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
220
209
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
221
210
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
222
211
  maxClaims: z.ZodNumber;
@@ -226,6 +215,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
226
215
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
227
216
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
228
217
  policyHook: z.ZodOptional<z.ZodString>;
218
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
229
219
  }, z.ZodTypeAny, "passthrough">>>;
230
220
  signedTask: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodObject<{
231
221
  signature: z.ZodObject<{
@@ -273,6 +263,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
273
263
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
274
264
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
275
265
  policyHook: z.ZodOptional<z.ZodString>;
266
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
276
267
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
277
268
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
278
269
  maxClaims: z.ZodNumber;
@@ -282,6 +273,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
282
273
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
283
274
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
284
275
  policyHook: z.ZodOptional<z.ZodString>;
276
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
285
277
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
286
278
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
287
279
  maxClaims: z.ZodNumber;
@@ -291,6 +283,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
291
283
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
292
284
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
293
285
  policyHook: z.ZodOptional<z.ZodString>;
286
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
294
287
  }, z.ZodTypeAny, "passthrough">>;
295
288
  creator: z.ZodObject<{
296
289
  safeAddress: z.ZodString;
@@ -349,6 +342,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
349
342
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
350
343
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
351
344
  policyHook: z.ZodOptional<z.ZodString>;
345
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
352
346
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
353
347
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
354
348
  maxClaims: z.ZodNumber;
@@ -358,6 +352,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
358
352
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
359
353
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
360
354
  policyHook: z.ZodOptional<z.ZodString>;
355
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
361
356
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
362
357
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
363
358
  maxClaims: z.ZodNumber;
@@ -367,6 +362,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
367
362
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
368
363
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
369
364
  policyHook: z.ZodOptional<z.ZodString>;
365
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
370
366
  }, z.ZodTypeAny, "passthrough">>;
371
367
  creator: z.ZodObject<{
372
368
  safeAddress: z.ZodString;
@@ -425,6 +421,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
425
421
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
426
422
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
427
423
  policyHook: z.ZodOptional<z.ZodString>;
424
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
428
425
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
429
426
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
430
427
  maxClaims: z.ZodNumber;
@@ -434,6 +431,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
434
431
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
435
432
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
436
433
  policyHook: z.ZodOptional<z.ZodString>;
434
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
437
435
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
438
436
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
439
437
  maxClaims: z.ZodNumber;
@@ -443,6 +441,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
443
441
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
444
442
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
445
443
  policyHook: z.ZodOptional<z.ZodString>;
444
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
446
445
  }, z.ZodTypeAny, "passthrough">>;
447
446
  creator: z.ZodObject<{
448
447
  safeAddress: z.ZodString;
@@ -501,6 +500,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
501
500
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
502
501
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
503
502
  policyHook: z.ZodOptional<z.ZodString>;
503
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
504
504
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
505
505
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
506
506
  maxClaims: z.ZodNumber;
@@ -510,6 +510,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
510
510
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
511
511
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
512
512
  policyHook: z.ZodOptional<z.ZodString>;
513
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
513
514
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
514
515
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
515
516
  maxClaims: z.ZodNumber;
@@ -519,6 +520,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
519
520
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
520
521
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
521
522
  policyHook: z.ZodOptional<z.ZodString>;
523
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
522
524
  }, z.ZodTypeAny, "passthrough">>;
523
525
  creator: z.ZodObject<{
524
526
  safeAddress: z.ZodString;
@@ -577,6 +579,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
577
579
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
578
580
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
579
581
  policyHook: z.ZodOptional<z.ZodString>;
582
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
580
583
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
581
584
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
582
585
  maxClaims: z.ZodNumber;
@@ -586,6 +589,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
586
589
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
587
590
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
588
591
  policyHook: z.ZodOptional<z.ZodString>;
592
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
589
593
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
590
594
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
591
595
  maxClaims: z.ZodNumber;
@@ -595,6 +599,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
595
599
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
596
600
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
597
601
  policyHook: z.ZodOptional<z.ZodString>;
602
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
598
603
  }, z.ZodTypeAny, "passthrough">>;
599
604
  creator: z.ZodObject<{
600
605
  safeAddress: z.ZodString;
@@ -637,6 +642,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
637
642
  claimWindowEndTs?: number | undefined;
638
643
  submissionDeadlineTs?: number | undefined;
639
644
  policyHook?: string | undefined;
645
+ requiredVerdicts?: number | undefined;
640
646
  } & {
641
647
  [k: string]: unknown;
642
648
  };
@@ -691,6 +697,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
691
697
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
692
698
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
693
699
  policyHook: z.ZodOptional<z.ZodString>;
700
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
694
701
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
695
702
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
696
703
  maxClaims: z.ZodNumber;
@@ -700,6 +707,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
700
707
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
701
708
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
702
709
  policyHook: z.ZodOptional<z.ZodString>;
710
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
703
711
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
704
712
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
705
713
  maxClaims: z.ZodNumber;
@@ -709,6 +717,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
709
717
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
710
718
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
711
719
  policyHook: z.ZodOptional<z.ZodString>;
720
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
712
721
  }, z.ZodTypeAny, "passthrough">>;
713
722
  creator: z.ZodObject<{
714
723
  safeAddress: z.ZodString;
@@ -745,6 +754,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
745
754
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
746
755
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
747
756
  policyHook: z.ZodOptional<z.ZodString>;
757
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
748
758
  }, z.ZodTypeAny, "passthrough"> | undefined;
749
759
  context?: Record<string, unknown> | undefined;
750
760
  attemptId?: string | undefined;
@@ -780,6 +790,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
780
790
  claimWindowEndTs?: number | undefined;
781
791
  submissionDeadlineTs?: number | undefined;
782
792
  policyHook?: string | undefined;
793
+ requiredVerdicts?: number | undefined;
783
794
  } & {
784
795
  [k: string]: unknown;
785
796
  };
@@ -812,6 +823,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
812
823
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
813
824
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
814
825
  policyHook: z.ZodOptional<z.ZodString>;
826
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
815
827
  }, z.ZodTypeAny, "passthrough"> | undefined;
816
828
  context?: Record<string, unknown> | undefined;
817
829
  attemptId?: string | undefined;
@@ -863,6 +875,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
863
875
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
864
876
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
865
877
  policyHook: z.ZodOptional<z.ZodString>;
878
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
866
879
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
867
880
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
868
881
  maxClaims: z.ZodNumber;
@@ -872,6 +885,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
872
885
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
873
886
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
874
887
  policyHook: z.ZodOptional<z.ZodString>;
888
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
875
889
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
876
890
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
877
891
  maxClaims: z.ZodNumber;
@@ -881,6 +895,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
881
895
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
882
896
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
883
897
  policyHook: z.ZodOptional<z.ZodString>;
898
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
884
899
  }, z.ZodTypeAny, "passthrough">>;
885
900
  creator: z.ZodObject<{
886
901
  safeAddress: z.ZodString;
@@ -921,17 +936,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
921
936
  */
922
937
  jinnMviL2DeploymentPath: z.ZodOptional<z.ZodString>;
923
938
  /**
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.
939
+ * RPC endpoint(s) for the L1 governance chain (Ethereum / Sepolia) where
940
+ * the JinnDistributor lives. Accepts string or array form (see rpcUrl) and
941
+ * supports comma-separated env values. Testnet defaults to a public Sepolia
942
+ * RPC; mainnet requires an operator override when L1 submit mode is
943
+ * configured. Env: JINN_ETHEREUM_RPC_URL.
927
944
  */
928
- ethereumRpcUrl: z.ZodOptional<z.ZodString>;
945
+ ethereumRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
929
946
  /**
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.
947
+ * Optional archive RPC endpoint(s) for the L1 governance chain. Used for
948
+ * historical block lookups when constructing canonical-mode proofs. Accepts
949
+ * string or array form. Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
933
950
  */
934
- ethereumArchiveRpcUrl: z.ZodOptional<z.ZodString>;
951
+ ethereumArchiveRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
935
952
  /**
936
953
  * L1 network used by the cross-chain claim loop. 'sepolia' tracks Base
937
954
  * Sepolia testnet; 'ethereum' tracks Base mainnet. Defaults to 'sepolia'
@@ -939,10 +956,10 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
939
956
  */
940
957
  jinnL1Network: z.ZodDefault<z.ZodEnum<["sepolia", "ethereum"]>>;
941
958
  /**
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.
959
+ * JinnDistributor address on the L1 governance chain. Required for
960
+ * jinnClaimSubmissionMode='submit'. When set for submit mode, ethereumRpcUrl
961
+ * MUST also be set. Resolved from jinnMviL1DeploymentPath when omitted;
962
+ * otherwise a manual override. Env: JINN_DISTRIBUTOR_ADDRESS.
946
963
  */
947
964
  jinnDistributorAddress: z.ZodOptional<z.ZodString>;
948
965
  /**
@@ -967,6 +984,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
967
984
  * Env: JINN_MESSENGER_MODE.
968
985
  */
969
986
  jinnMessengerMode: z.ZodDefault<z.ZodEnum<["canonical", "mock"]>>;
987
+ /**
988
+ * Claim submission mode. `emit-only` only submits TaskClaimEmitter.emitClaim
989
+ * on L2 and records the resulting ticket. `submit` continues into the L1
990
+ * messenger/distributor path.
991
+ * Env: JINN_CLAIM_SUBMISSION_MODE.
992
+ */
993
+ jinnClaimSubmissionMode: z.ZodDefault<z.ZodEnum<["emit-only", "submit"]>>;
994
+ /**
995
+ * Explicit operator gate for the cross-chain JINN claim loop. The schema
996
+ * default stays off for mainnet/unknown networks; loadConfig defaults this
997
+ * on for testnet now that the emitter and standing relayer are live.
998
+ * Env: JINN_CLAIM_LOOP_ENABLED=1|true|yes.
999
+ */
1000
+ jinnClaimLoopEnabled: z.ZodDefault<z.ZodBoolean>;
970
1001
  /**
971
1002
  * How often the daemon ticks the cross-chain JINN claim loop (ms). Default
972
1003
  * 3 600 000 (1 hour) — well below mainnet challenge windows while
@@ -1073,97 +1104,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1073
1104
  mode?: "train" | "frozen" | undefined;
1074
1105
  }>>;
1075
1106
  /**
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).
1107
+ * Manifest-keyed joined SolverNets.
1167
1108
  *
1168
1109
  * Spec: spec/2026-05-05-solvernet-creation-and-launch.md §12.
1169
1110
  *
@@ -1172,10 +1113,10 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1172
1113
  * (CIDv0 / CIDv1) — the only stable identifier that maps back to a
1173
1114
  * launched-instance authority across launchers.
1174
1115
  *
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.
1116
+ * The daemon narrows this block into runtime SolverNet registry entries on
1117
+ * restart. Legacy short-name-keyed `solverNets` blocks on operator config
1118
+ * files are auto-migrated into synthetic `legacy:<short-name>`-keyed
1119
+ * entries at load time (see `migrateLegacySolverNets`).
1179
1120
  */
1180
1121
  joinedSolverNets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1181
1122
  manifestCid: z.ZodString;
@@ -1196,28 +1137,28 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1196
1137
  plugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1197
1138
  disabledDefaultPlugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1198
1139
  }, "strip", z.ZodTypeAny, {
1140
+ manifestCid: string;
1199
1141
  roles: ("solver" | "evaluator")[];
1200
1142
  plugins: string[];
1201
- manifestCid: string;
1202
1143
  disabledDefaultPlugins: string[];
1203
1144
  name?: string | undefined;
1204
1145
  harness?: string | undefined;
1205
- model?: string | undefined;
1206
1146
  contract?: {
1207
1147
  id: string;
1208
1148
  version: string;
1209
1149
  } | undefined;
1150
+ model?: string | undefined;
1210
1151
  }, {
1211
- roles: ("solver" | "evaluator")[];
1212
1152
  manifestCid: string;
1153
+ roles: ("solver" | "evaluator")[];
1213
1154
  name?: string | undefined;
1214
1155
  harness?: string | undefined;
1215
- model?: string | undefined;
1216
- plugins?: string[] | undefined;
1217
1156
  contract?: {
1218
1157
  id: string;
1219
1158
  version: string;
1220
1159
  } | undefined;
1160
+ model?: string | undefined;
1161
+ plugins?: string[] | undefined;
1221
1162
  disabledDefaultPlugins?: string[] | undefined;
1222
1163
  }>>>;
1223
1164
  /**
@@ -1374,20 +1315,49 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1374
1315
  * Env: JINN_REPUTATION_ENABLED
1375
1316
  */
1376
1317
  reputationEnabled: z.ZodDefault<z.ZodBoolean>;
1318
+ /**
1319
+ * Per-credential daily spend caps (USD). Keys are credential identifiers
1320
+ * (e.g. `'anthropic:api-key'`); values are positive numbers representing
1321
+ * the maximum USD spend per day for that credential.
1322
+ *
1323
+ * `JINN_SPEND_CAP_USD` (env-only, consumed directly by the spend-budget
1324
+ * subsystem in Task 9) is tracked for provenance in TRACKED_ENV_VARS below
1325
+ * but is NOT a config-file field and has no entry in this schema.
1326
+ */
1327
+ spendCaps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1328
+ /**
1329
+ * Operator-local SolverPlugin trust state.
1330
+ *
1331
+ * `blockedCids` is the list of plug-in CIDs the operator has chosen to
1332
+ * refuse to load — populated by `jinn solver-plugins block <cid>` and read
1333
+ * at daemon startup. The block list complements the on-chain
1334
+ * `giveFeedback(score=0)` write (which is the public-trust signal); the
1335
+ * local list is the operator's own refusal to execute, applied even when
1336
+ * the network write fails. File-managed only — no env override.
1337
+ *
1338
+ * See spec/2026-05-26-117-design.md "Failure modes" and "Local-only effects".
1339
+ */
1340
+ solverPlugins: z.ZodDefault<z.ZodObject<{
1341
+ blockedCids: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1342
+ }, "strip", z.ZodTypeAny, {
1343
+ blockedCids: string[];
1344
+ }, {
1345
+ blockedCids?: string[] | undefined;
1346
+ }>>;
1377
1347
  }, "strip", z.ZodTypeAny, {
1378
- harness: {
1379
- mode: "train" | "frozen";
1380
- };
1381
1348
  network: "testnet" | "mainnet";
1382
1349
  earningDir: string;
1383
1350
  dbPath: string;
1384
1351
  pollIntervalMs: number;
1385
1352
  rewardClaimIntervalMs: number;
1386
1353
  balanceTopupIntervalMs: number;
1354
+ evictionCheckIntervalMs: number;
1355
+ checkpointIntervalMs: number;
1387
1356
  apiPort: number;
1388
1357
  claudePath: string;
1389
1358
  claudeModel: string;
1390
1359
  hermesDoctorTimeoutMs: number;
1360
+ codexDoctorTimeoutMs: number;
1391
1361
  peers: string[];
1392
1362
  tasks: {
1393
1363
  id?: string | undefined;
@@ -1412,6 +1382,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1412
1382
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1413
1383
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1414
1384
  policyHook: z.ZodOptional<z.ZodString>;
1385
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1415
1386
  }, z.ZodTypeAny, "passthrough"> | undefined;
1416
1387
  context?: Record<string, unknown> | undefined;
1417
1388
  attemptId?: string | undefined;
@@ -1447,6 +1418,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1447
1418
  claimWindowEndTs?: number | undefined;
1448
1419
  submissionDeadlineTs?: number | undefined;
1449
1420
  policyHook?: string | undefined;
1421
+ requiredVerdicts?: number | undefined;
1450
1422
  } & {
1451
1423
  [k: string]: unknown;
1452
1424
  };
@@ -1461,25 +1433,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1461
1433
  ipfsGatewayUrl: string;
1462
1434
  jinnL1Network: "sepolia" | "ethereum";
1463
1435
  jinnMessengerMode: "canonical" | "mock";
1436
+ jinnClaimSubmissionMode: "emit-only" | "submit";
1437
+ jinnClaimLoopEnabled: boolean;
1464
1438
  jinnClaimLoopIntervalMs: number;
1465
1439
  stakingMode: "standard" | "self-bond";
1466
1440
  targetServices: number;
1467
1441
  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
- }>;
1442
+ harness: {
1443
+ mode: "train" | "frozen";
1444
+ };
1483
1445
  captures: {
1484
1446
  llmProxy: {
1485
1447
  enabled: boolean;
@@ -1488,13 +1450,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1488
1450
  };
1489
1451
  runLegacyMigrations: boolean;
1490
1452
  reputationEnabled: boolean;
1491
- rpcUrl?: string | undefined;
1492
- archiveRpcUrl?: string | undefined;
1493
- l2ProofRpcUrl?: string | undefined;
1453
+ solverPlugins: {
1454
+ blockedCids: string[];
1455
+ };
1456
+ rpcUrl?: string | string[] | undefined;
1457
+ archiveRpcUrl?: string | string[] | undefined;
1458
+ l2ProofRpcUrl?: string | string[] | undefined;
1494
1459
  apiBindHost?: string | undefined;
1495
1460
  hermesPath?: string | undefined;
1496
1461
  hermesModel?: string | undefined;
1497
1462
  hermesProvider?: string | undefined;
1463
+ codexPath?: string | undefined;
1498
1464
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1499
1465
  discovery?: {
1500
1466
  mode?: "http" | "embedded" | "onchain" | undefined;
@@ -1509,8 +1475,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1509
1475
  testnetStolasDeploymentPath?: string | undefined;
1510
1476
  jinnMviL1DeploymentPath?: string | undefined;
1511
1477
  jinnMviL2DeploymentPath?: string | undefined;
1512
- ethereumRpcUrl?: string | undefined;
1513
- ethereumArchiveRpcUrl?: string | undefined;
1478
+ ethereumRpcUrl?: string | string[] | undefined;
1479
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1514
1480
  jinnDistributorAddress?: string | undefined;
1515
1481
  jinnClaimEmitterAddress?: string | undefined;
1516
1482
  jinnMessengerAddress?: string | undefined;
@@ -1528,17 +1494,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1528
1494
  }[] | undefined;
1529
1495
  } | undefined;
1530
1496
  joinedSolverNets?: Record<string, {
1497
+ manifestCid: string;
1531
1498
  roles: ("solver" | "evaluator")[];
1532
1499
  plugins: string[];
1533
- manifestCid: string;
1534
1500
  disabledDefaultPlugins: string[];
1535
1501
  name?: string | undefined;
1536
1502
  harness?: string | undefined;
1537
- model?: string | undefined;
1538
1503
  contract?: {
1539
1504
  id: string;
1540
1505
  version: string;
1541
1506
  } | undefined;
1507
+ model?: string | undefined;
1542
1508
  }> | undefined;
1543
1509
  trustedImplSigners?: {
1544
1510
  publicKey: string;
@@ -1559,19 +1525,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1559
1525
  } | undefined;
1560
1526
  identityRegistryAddress?: string | undefined;
1561
1527
  validationRegistryAddress?: string | undefined;
1528
+ spendCaps?: Record<string, number> | undefined;
1562
1529
  }, {
1563
- harness?: {
1564
- mode?: "train" | "frozen" | undefined;
1565
- } | undefined;
1566
1530
  network?: "testnet" | "mainnet" | undefined;
1567
- rpcUrl?: string | undefined;
1568
- archiveRpcUrl?: string | undefined;
1569
- l2ProofRpcUrl?: string | undefined;
1531
+ rpcUrl?: string | string[] | undefined;
1532
+ archiveRpcUrl?: string | string[] | undefined;
1533
+ l2ProofRpcUrl?: string | string[] | undefined;
1570
1534
  earningDir?: string | undefined;
1571
1535
  dbPath?: string | undefined;
1572
1536
  pollIntervalMs?: number | undefined;
1573
1537
  rewardClaimIntervalMs?: number | undefined;
1574
1538
  balanceTopupIntervalMs?: number | undefined;
1539
+ evictionCheckIntervalMs?: number | undefined;
1540
+ checkpointIntervalMs?: number | undefined;
1575
1541
  apiPort?: number | undefined;
1576
1542
  apiBindHost?: string | undefined;
1577
1543
  claudePath?: string | undefined;
@@ -1580,6 +1546,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1580
1546
  hermesModel?: string | undefined;
1581
1547
  hermesProvider?: string | undefined;
1582
1548
  hermesDoctorTimeoutMs?: number | undefined;
1549
+ codexPath?: string | undefined;
1550
+ codexDoctorTimeoutMs?: number | undefined;
1583
1551
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1584
1552
  peers?: string | string[] | undefined;
1585
1553
  discovery?: {
@@ -1612,6 +1580,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1612
1580
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1613
1581
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1614
1582
  policyHook: z.ZodOptional<z.ZodString>;
1583
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1615
1584
  }, z.ZodTypeAny, "passthrough"> | undefined;
1616
1585
  context?: Record<string, unknown> | undefined;
1617
1586
  attemptId?: string | undefined;
@@ -1663,6 +1632,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1663
1632
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1664
1633
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1665
1634
  policyHook: z.ZodOptional<z.ZodString>;
1635
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1666
1636
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1667
1637
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
1668
1638
  maxClaims: z.ZodNumber;
@@ -1672,6 +1642,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1672
1642
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1673
1643
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1674
1644
  policyHook: z.ZodOptional<z.ZodString>;
1645
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1675
1646
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1676
1647
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
1677
1648
  maxClaims: z.ZodNumber;
@@ -1681,6 +1652,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1681
1652
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1682
1653
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1683
1654
  policyHook: z.ZodOptional<z.ZodString>;
1655
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1684
1656
  }, z.ZodTypeAny, "passthrough">>;
1685
1657
  creator: z.ZodObject<{
1686
1658
  safeAddress: z.ZodString;
@@ -1703,13 +1675,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1703
1675
  testnetStolasDeploymentPath?: string | undefined;
1704
1676
  jinnMviL1DeploymentPath?: string | undefined;
1705
1677
  jinnMviL2DeploymentPath?: string | undefined;
1706
- ethereumRpcUrl?: string | undefined;
1707
- ethereumArchiveRpcUrl?: string | undefined;
1678
+ ethereumRpcUrl?: string | string[] | undefined;
1679
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1708
1680
  jinnL1Network?: "sepolia" | "ethereum" | undefined;
1709
1681
  jinnDistributorAddress?: string | undefined;
1710
1682
  jinnClaimEmitterAddress?: string | undefined;
1711
1683
  jinnMessengerAddress?: string | undefined;
1712
1684
  jinnMessengerMode?: "canonical" | "mock" | undefined;
1685
+ jinnClaimSubmissionMode?: "emit-only" | "submit" | undefined;
1686
+ jinnClaimLoopEnabled?: boolean | undefined;
1713
1687
  jinnClaimLoopIntervalMs?: number | undefined;
1714
1688
  stakingMode?: "standard" | "self-bond" | undefined;
1715
1689
  targetServices?: number | undefined;
@@ -1727,18 +1701,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1727
1701
  version?: string | undefined;
1728
1702
  }[] | undefined;
1729
1703
  } | undefined;
1730
- solverNets?: Record<string, unknown> | undefined;
1704
+ harness?: {
1705
+ mode?: "train" | "frozen" | undefined;
1706
+ } | undefined;
1731
1707
  joinedSolverNets?: Record<string, {
1732
- roles: ("solver" | "evaluator")[];
1733
1708
  manifestCid: string;
1709
+ roles: ("solver" | "evaluator")[];
1734
1710
  name?: string | undefined;
1735
1711
  harness?: string | undefined;
1736
- model?: string | undefined;
1737
- plugins?: string[] | undefined;
1738
1712
  contract?: {
1739
1713
  id: string;
1740
1714
  version: string;
1741
1715
  } | undefined;
1716
+ model?: string | undefined;
1717
+ plugins?: string[] | undefined;
1742
1718
  disabledDefaultPlugins?: string[] | undefined;
1743
1719
  }> | undefined;
1744
1720
  trustedImplSigners?: {
@@ -1768,20 +1744,24 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1768
1744
  identityRegistryAddress?: string | undefined;
1769
1745
  validationRegistryAddress?: string | undefined;
1770
1746
  reputationEnabled?: boolean | undefined;
1747
+ spendCaps?: Record<string, number> | undefined;
1748
+ solverPlugins?: {
1749
+ blockedCids?: string[] | undefined;
1750
+ } | undefined;
1771
1751
  }>, {
1772
- harness: {
1773
- mode: "train" | "frozen";
1774
- };
1775
1752
  network: "testnet" | "mainnet";
1776
1753
  earningDir: string;
1777
1754
  dbPath: string;
1778
1755
  pollIntervalMs: number;
1779
1756
  rewardClaimIntervalMs: number;
1780
1757
  balanceTopupIntervalMs: number;
1758
+ evictionCheckIntervalMs: number;
1759
+ checkpointIntervalMs: number;
1781
1760
  apiPort: number;
1782
1761
  claudePath: string;
1783
1762
  claudeModel: string;
1784
1763
  hermesDoctorTimeoutMs: number;
1764
+ codexDoctorTimeoutMs: number;
1785
1765
  peers: string[];
1786
1766
  tasks: {
1787
1767
  id?: string | undefined;
@@ -1806,6 +1786,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1806
1786
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
1807
1787
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
1808
1788
  policyHook: z.ZodOptional<z.ZodString>;
1789
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
1809
1790
  }, z.ZodTypeAny, "passthrough"> | undefined;
1810
1791
  context?: Record<string, unknown> | undefined;
1811
1792
  attemptId?: string | undefined;
@@ -1841,6 +1822,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1841
1822
  claimWindowEndTs?: number | undefined;
1842
1823
  submissionDeadlineTs?: number | undefined;
1843
1824
  policyHook?: string | undefined;
1825
+ requiredVerdicts?: number | undefined;
1844
1826
  } & {
1845
1827
  [k: string]: unknown;
1846
1828
  };
@@ -1855,25 +1837,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1855
1837
  ipfsGatewayUrl: string;
1856
1838
  jinnL1Network: "sepolia" | "ethereum";
1857
1839
  jinnMessengerMode: "canonical" | "mock";
1840
+ jinnClaimSubmissionMode: "emit-only" | "submit";
1841
+ jinnClaimLoopEnabled: boolean;
1858
1842
  jinnClaimLoopIntervalMs: number;
1859
1843
  stakingMode: "standard" | "self-bond";
1860
1844
  targetServices: number;
1861
1845
  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
- }>;
1846
+ harness: {
1847
+ mode: "train" | "frozen";
1848
+ };
1877
1849
  captures: {
1878
1850
  llmProxy: {
1879
1851
  enabled: boolean;
@@ -1882,13 +1854,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1882
1854
  };
1883
1855
  runLegacyMigrations: boolean;
1884
1856
  reputationEnabled: boolean;
1885
- rpcUrl?: string | undefined;
1886
- archiveRpcUrl?: string | undefined;
1887
- l2ProofRpcUrl?: string | undefined;
1857
+ solverPlugins: {
1858
+ blockedCids: string[];
1859
+ };
1860
+ rpcUrl?: string | string[] | undefined;
1861
+ archiveRpcUrl?: string | string[] | undefined;
1862
+ l2ProofRpcUrl?: string | string[] | undefined;
1888
1863
  apiBindHost?: string | undefined;
1889
1864
  hermesPath?: string | undefined;
1890
1865
  hermesModel?: string | undefined;
1891
1866
  hermesProvider?: string | undefined;
1867
+ codexPath?: string | undefined;
1892
1868
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1893
1869
  discovery?: {
1894
1870
  mode?: "http" | "embedded" | "onchain" | undefined;
@@ -1903,8 +1879,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1903
1879
  testnetStolasDeploymentPath?: string | undefined;
1904
1880
  jinnMviL1DeploymentPath?: string | undefined;
1905
1881
  jinnMviL2DeploymentPath?: string | undefined;
1906
- ethereumRpcUrl?: string | undefined;
1907
- ethereumArchiveRpcUrl?: string | undefined;
1882
+ ethereumRpcUrl?: string | string[] | undefined;
1883
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
1908
1884
  jinnDistributorAddress?: string | undefined;
1909
1885
  jinnClaimEmitterAddress?: string | undefined;
1910
1886
  jinnMessengerAddress?: string | undefined;
@@ -1922,17 +1898,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1922
1898
  }[] | undefined;
1923
1899
  } | undefined;
1924
1900
  joinedSolverNets?: Record<string, {
1901
+ manifestCid: string;
1925
1902
  roles: ("solver" | "evaluator")[];
1926
1903
  plugins: string[];
1927
- manifestCid: string;
1928
1904
  disabledDefaultPlugins: string[];
1929
1905
  name?: string | undefined;
1930
1906
  harness?: string | undefined;
1931
- model?: string | undefined;
1932
1907
  contract?: {
1933
1908
  id: string;
1934
1909
  version: string;
1935
1910
  } | undefined;
1911
+ model?: string | undefined;
1936
1912
  }> | undefined;
1937
1913
  trustedImplSigners?: {
1938
1914
  publicKey: string;
@@ -1953,19 +1929,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1953
1929
  } | undefined;
1954
1930
  identityRegistryAddress?: string | undefined;
1955
1931
  validationRegistryAddress?: string | undefined;
1932
+ spendCaps?: Record<string, number> | undefined;
1956
1933
  }, {
1957
- harness?: {
1958
- mode?: "train" | "frozen" | undefined;
1959
- } | undefined;
1960
1934
  network?: "testnet" | "mainnet" | undefined;
1961
- rpcUrl?: string | undefined;
1962
- archiveRpcUrl?: string | undefined;
1963
- l2ProofRpcUrl?: string | undefined;
1935
+ rpcUrl?: string | string[] | undefined;
1936
+ archiveRpcUrl?: string | string[] | undefined;
1937
+ l2ProofRpcUrl?: string | string[] | undefined;
1964
1938
  earningDir?: string | undefined;
1965
1939
  dbPath?: string | undefined;
1966
1940
  pollIntervalMs?: number | undefined;
1967
1941
  rewardClaimIntervalMs?: number | undefined;
1968
1942
  balanceTopupIntervalMs?: number | undefined;
1943
+ evictionCheckIntervalMs?: number | undefined;
1944
+ checkpointIntervalMs?: number | undefined;
1969
1945
  apiPort?: number | undefined;
1970
1946
  apiBindHost?: string | undefined;
1971
1947
  claudePath?: string | undefined;
@@ -1974,6 +1950,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
1974
1950
  hermesModel?: string | undefined;
1975
1951
  hermesProvider?: string | undefined;
1976
1952
  hermesDoctorTimeoutMs?: number | undefined;
1953
+ codexPath?: string | undefined;
1954
+ codexDoctorTimeoutMs?: number | undefined;
1977
1955
  runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
1978
1956
  peers?: string | string[] | undefined;
1979
1957
  discovery?: {
@@ -2006,6 +1984,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2006
1984
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2007
1985
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2008
1986
  policyHook: z.ZodOptional<z.ZodString>;
1987
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2009
1988
  }, z.ZodTypeAny, "passthrough"> | undefined;
2010
1989
  context?: Record<string, unknown> | undefined;
2011
1990
  attemptId?: string | undefined;
@@ -2057,6 +2036,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2057
2036
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2058
2037
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2059
2038
  policyHook: z.ZodOptional<z.ZodString>;
2039
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2060
2040
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2061
2041
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
2062
2042
  maxClaims: z.ZodNumber;
@@ -2066,6 +2046,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2066
2046
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2067
2047
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2068
2048
  policyHook: z.ZodOptional<z.ZodString>;
2049
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2069
2050
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2070
2051
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
2071
2052
  maxClaims: z.ZodNumber;
@@ -2075,6 +2056,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2075
2056
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
2076
2057
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
2077
2058
  policyHook: z.ZodOptional<z.ZodString>;
2059
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
2078
2060
  }, z.ZodTypeAny, "passthrough">>;
2079
2061
  creator: z.ZodObject<{
2080
2062
  safeAddress: z.ZodString;
@@ -2097,13 +2079,15 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2097
2079
  testnetStolasDeploymentPath?: string | undefined;
2098
2080
  jinnMviL1DeploymentPath?: string | undefined;
2099
2081
  jinnMviL2DeploymentPath?: string | undefined;
2100
- ethereumRpcUrl?: string | undefined;
2101
- ethereumArchiveRpcUrl?: string | undefined;
2082
+ ethereumRpcUrl?: string | string[] | undefined;
2083
+ ethereumArchiveRpcUrl?: string | string[] | undefined;
2102
2084
  jinnL1Network?: "sepolia" | "ethereum" | undefined;
2103
2085
  jinnDistributorAddress?: string | undefined;
2104
2086
  jinnClaimEmitterAddress?: string | undefined;
2105
2087
  jinnMessengerAddress?: string | undefined;
2106
2088
  jinnMessengerMode?: "canonical" | "mock" | undefined;
2089
+ jinnClaimSubmissionMode?: "emit-only" | "submit" | undefined;
2090
+ jinnClaimLoopEnabled?: boolean | undefined;
2107
2091
  jinnClaimLoopIntervalMs?: number | undefined;
2108
2092
  stakingMode?: "standard" | "self-bond" | undefined;
2109
2093
  targetServices?: number | undefined;
@@ -2121,18 +2105,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2121
2105
  version?: string | undefined;
2122
2106
  }[] | undefined;
2123
2107
  } | undefined;
2124
- solverNets?: Record<string, unknown> | undefined;
2108
+ harness?: {
2109
+ mode?: "train" | "frozen" | undefined;
2110
+ } | undefined;
2125
2111
  joinedSolverNets?: Record<string, {
2126
- roles: ("solver" | "evaluator")[];
2127
2112
  manifestCid: string;
2113
+ roles: ("solver" | "evaluator")[];
2128
2114
  name?: string | undefined;
2129
2115
  harness?: string | undefined;
2130
- model?: string | undefined;
2131
- plugins?: string[] | undefined;
2132
2116
  contract?: {
2133
2117
  id: string;
2134
2118
  version: string;
2135
2119
  } | undefined;
2120
+ model?: string | undefined;
2121
+ plugins?: string[] | undefined;
2136
2122
  disabledDefaultPlugins?: string[] | undefined;
2137
2123
  }> | undefined;
2138
2124
  trustedImplSigners?: {
@@ -2162,10 +2148,33 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
2162
2148
  identityRegistryAddress?: string | undefined;
2163
2149
  validationRegistryAddress?: string | undefined;
2164
2150
  reputationEnabled?: boolean | undefined;
2151
+ spendCaps?: Record<string, number> | undefined;
2152
+ solverPlugins?: {
2153
+ blockedCids?: string[] | undefined;
2154
+ } | undefined;
2165
2155
  }>;
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'> & {
2156
+ /**
2157
+ * JinnConfig with rpcUrl guaranteed to be resolved (never undefined) and tasks
2158
+ * with id always assigned.
2159
+ *
2160
+ * `rpcUrl` is the head of the fallback chain (the slot-0 URL) and is kept as
2161
+ * a `string` for display continuity — the ~30 places that log/display
2162
+ * `config.rpcUrl` (provenance, error formatting, `[main] daemon starting on …`)
2163
+ * keep working unchanged. The full chain lives in `rpcUrls: readonly string[]`,
2164
+ * which is what `buildFallbackTransport()` consumes. Same shape for the L1
2165
+ * (ethereum) and optional archive/proof variants.
2166
+ */
2167
+ export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl' | 'archiveRpcUrl' | 'l2ProofRpcUrl' | 'ethereumRpcUrl' | 'ethereumArchiveRpcUrl' | 'tasks' | 'engine'> & {
2168
2168
  rpcUrl: string;
2169
+ rpcUrls: readonly string[];
2170
+ archiveRpcUrl?: string;
2171
+ archiveRpcUrls?: readonly string[];
2172
+ l2ProofRpcUrl?: string;
2173
+ l2ProofRpcUrls?: readonly string[];
2174
+ ethereumRpcUrl?: string;
2175
+ ethereumRpcUrls?: readonly string[];
2176
+ ethereumArchiveRpcUrl?: string;
2177
+ ethereumArchiveRpcUrls?: readonly string[];
2169
2178
  tasks: Task[];
2170
2179
  engine: {
2171
2180
  workingDirRoot: string;
@@ -2181,12 +2190,41 @@ export declare const DEFAULT_CONFIG_PATH: string;
2181
2190
  * historical sync — see ponder.config.ts).
2182
2191
  */
2183
2192
  export declare const DEFAULT_TESTNET_DISCOVERY_URL = "https://jinn-indexer-production.up.railway.app";
2193
+ export declare const DEFAULT_TESTNET_ETHEREUM_RPC_URL = "https://ethereum-sepolia-rpc.publicnode.com";
2194
+ /**
2195
+ * Default fallback chain for the L2 measurement chain (Base Sepolia) on
2196
+ * testnet. Per AC2 of issue #592:
2197
+ * slot 0 — `https://base-sepolia.publicnode.com` (no-auth, 50k-block
2198
+ * getLogs cap, no shared-quota cliff).
2199
+ * slot 1 — `https://sepolia.base.org` (free public Coinbase endpoint,
2200
+ * 2k-block cap; last-resort backup).
2201
+ * Operators are encouraged to prepend a paid primary key (Alchemy, Tenderly,
2202
+ * etc.) via `rpcUrl` config or `JINN_RPC_URL` / `BASE_SEPOLIA_RPC_URL` env.
2203
+ */
2204
+ export declare const DEFAULT_TESTNET_RPC_URLS: readonly string[];
2184
2205
  export type ConfigLoadErrorCode = 'config_file_not_found' | 'config_json_invalid' | 'tasks_file_not_found' | 'tasks_json_invalid' | 'config_invalid';
2185
2206
  export declare class ConfigLoadError extends Error {
2186
2207
  readonly code: ConfigLoadErrorCode;
2187
2208
  readonly details?: Record<string, unknown>;
2188
2209
  constructor(code: ConfigLoadErrorCode, message: string, details?: Record<string, unknown>);
2189
2210
  }
2211
+ /**
2212
+ * Translate any legacy short-name-keyed `solverNets` block on the raw parsed
2213
+ * config into manifest-keyed `joinedSolverNets` entries with synthetic
2214
+ * `legacy:<short-name>` keys.
2215
+ *
2216
+ * This is the auto-migration path for operators upgrading past issue #421.
2217
+ * The runtime claim filter remains manifest-digest gated, so synthetic-keyed
2218
+ * entries don't change task eligibility — they exist purely so the diagnostic
2219
+ * surfaces (Overview SOLVING-ON eyebrow, prediction-operator-status) keep
2220
+ * showing the operator's previous SolverNets until they re-join via the SPA.
2221
+ *
2222
+ * Returns the number of legacy entries migrated. Idempotent — calling on an
2223
+ * already-migrated raw config is a no-op.
2224
+ *
2225
+ * @param raw — the JSON-parsed config file contents (mutated in place).
2226
+ */
2227
+ export declare function migrateLegacySolverNets(raw: Record<string, unknown>): number;
2190
2228
  /**
2191
2229
  * Load config with resolution: env > config file > defaults.
2192
2230
  *