@jinn-network/client 0.1.8 → 0.1.9-canary.02befda9

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 (537) hide show
  1. package/README.md +6 -0
  2. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  3. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
  4. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
  5. package/dist/adapters/mech/adapter.d.ts +21 -1
  6. package/dist/adapters/mech/adapter.js +107 -52
  7. package/dist/adapters/mech/adapter.js.map +1 -1
  8. package/dist/adapters/mech/contracts.d.ts +174 -13
  9. package/dist/adapters/mech/contracts.js +99 -49
  10. package/dist/adapters/mech/contracts.js.map +1 -1
  11. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  12. package/dist/adapters/mech/safe-revert.js +5 -1
  13. package/dist/adapters/mech/safe-revert.js.map +1 -1
  14. package/dist/adapters/mech/safe.js +77 -1
  15. package/dist/adapters/mech/safe.js.map +1 -1
  16. package/dist/adapters/mech/types.d.ts +4 -42
  17. package/dist/adapters/mech/types.js +8 -20
  18. package/dist/adapters/mech/types.js.map +1 -1
  19. package/dist/adapters/mech/verdict-code.js +1 -1
  20. package/dist/adapters/mech/verdict-code.js.map +1 -1
  21. package/dist/api/bootstrap-endpoint.d.ts +1 -0
  22. package/dist/api/bootstrap-endpoint.js +1 -0
  23. package/dist/api/bootstrap-endpoint.js.map +1 -1
  24. package/dist/api/discovery-endpoint.d.ts +1 -0
  25. package/dist/api/discovery-endpoint.js +24 -0
  26. package/dist/api/discovery-endpoint.js.map +1 -1
  27. package/dist/api/fleet-build.d.ts +1 -7
  28. package/dist/api/fleet-build.js +0 -7
  29. package/dist/api/fleet-build.js.map +1 -1
  30. package/dist/api/gather-status.d.ts +26 -17
  31. package/dist/api/gather-status.js +57 -516
  32. package/dist/api/gather-status.js.map +1 -1
  33. package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
  34. package/dist/api/harness-auth-status-endpoint.js +17 -0
  35. package/dist/api/harness-auth-status-endpoint.js.map +1 -0
  36. package/dist/api/loop-completion-build.d.ts +79 -0
  37. package/dist/api/loop-completion-build.js +155 -0
  38. package/dist/api/loop-completion-build.js.map +1 -0
  39. package/dist/api/operator-artifacts-endpoint.js +1 -1
  40. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  41. package/dist/api/peers.js +2 -0
  42. package/dist/api/peers.js.map +1 -1
  43. package/dist/api/rewards-build.d.ts +8 -1
  44. package/dist/api/rewards-build.js +32 -4
  45. package/dist/api/rewards-build.js.map +1 -1
  46. package/dist/api/rewards-endpoint.d.ts +12 -0
  47. package/dist/api/rewards-endpoint.js +46 -0
  48. package/dist/api/rewards-endpoint.js.map +1 -0
  49. package/dist/api/server.d.ts +6 -16
  50. package/dist/api/server.js +29 -26
  51. package/dist/api/server.js.map +1 -1
  52. package/dist/api/setup-endpoints.d.ts +41 -0
  53. package/dist/api/setup-endpoints.js +258 -45
  54. package/dist/api/setup-endpoints.js.map +1 -1
  55. package/dist/api/solvernets-endpoints.js +4 -1
  56. package/dist/api/solvernets-endpoints.js.map +1 -1
  57. package/dist/api/status-build.d.ts +71 -94
  58. package/dist/api/status-build.js +11 -77
  59. package/dist/api/status-build.js.map +1 -1
  60. package/dist/api/status-rollup-build.d.ts +0 -4
  61. package/dist/api/status-rollup-build.js +0 -4
  62. package/dist/api/status-rollup-build.js.map +1 -1
  63. package/dist/api/stop-hook.d.ts +1 -1
  64. package/dist/api/stop-hook.js +1 -1
  65. package/dist/api/stop-hook.js.map +1 -1
  66. package/dist/build-info.json +4 -4
  67. package/dist/build-meta.json +1 -1
  68. package/dist/captures/live-publisher.d.ts +9 -0
  69. package/dist/captures/live-publisher.js +1 -0
  70. package/dist/captures/live-publisher.js.map +1 -1
  71. package/dist/captures/publish.d.ts +11 -0
  72. package/dist/captures/publish.js +15 -5
  73. package/dist/captures/publish.js.map +1 -1
  74. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  75. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  76. package/dist/cli/commands/doctor.d.ts +3 -0
  77. package/dist/cli/commands/doctor.js +36 -4
  78. package/dist/cli/commands/doctor.js.map +1 -1
  79. package/dist/cli/commands/eval.d.ts +87 -0
  80. package/dist/cli/commands/eval.js +481 -0
  81. package/dist/cli/commands/eval.js.map +1 -0
  82. package/dist/cli/commands/rewards.d.ts +2 -0
  83. package/dist/cli/commands/rewards.js +39 -10
  84. package/dist/cli/commands/rewards.js.map +1 -1
  85. package/dist/cli/commands/solver-nets.js +68 -0
  86. package/dist/cli/commands/solver-nets.js.map +1 -1
  87. package/dist/cli/commands/status.js +0 -1
  88. package/dist/cli/commands/status.js.map +1 -1
  89. package/dist/cli/commands/update.js +8 -0
  90. package/dist/cli/commands/update.js.map +1 -1
  91. package/dist/cli/commands/version.js +4 -0
  92. package/dist/cli/commands/version.js.map +1 -1
  93. package/dist/cli/index.js +2 -0
  94. package/dist/cli/index.js.map +1 -1
  95. package/dist/cli/introspection-context.js +0 -3
  96. package/dist/cli/introspection-context.js.map +1 -1
  97. package/dist/config.d.ts +158 -541
  98. package/dist/config.js +189 -196
  99. package/dist/config.js.map +1 -1
  100. package/dist/corpus/acquire.d.ts +7 -6
  101. package/dist/corpus/acquire.js +10 -10
  102. package/dist/corpus/acquire.js.map +1 -1
  103. package/dist/corpus/fetch-artifact.d.ts +21 -0
  104. package/dist/corpus/fetch-artifact.js +33 -0
  105. package/dist/corpus/fetch-artifact.js.map +1 -0
  106. package/dist/corpus/index.d.ts +2 -2
  107. package/dist/corpus/route-resolver.d.ts +3 -3
  108. package/dist/corpus/route-resolver.js +3 -3
  109. package/dist/daemon/ai-units-gate.d.ts +6 -6
  110. package/dist/daemon/ai-units-gate.js +11 -10
  111. package/dist/daemon/ai-units-gate.js.map +1 -1
  112. package/dist/daemon/balance-topup-loop.js +3 -0
  113. package/dist/daemon/balance-topup-loop.js.map +1 -1
  114. package/dist/daemon/checkpoint-loop.js +2 -2
  115. package/dist/daemon/creator.d.ts +1 -0
  116. package/dist/daemon/creator.js +26 -14
  117. package/dist/daemon/creator.js.map +1 -1
  118. package/dist/daemon/daemon.d.ts +15 -10
  119. package/dist/daemon/daemon.js +71 -39
  120. package/dist/daemon/daemon.js.map +1 -1
  121. package/dist/daemon/delivery-watcher.d.ts +9 -0
  122. package/dist/daemon/delivery-watcher.js +24 -1
  123. package/dist/daemon/delivery-watcher.js.map +1 -1
  124. package/dist/daemon/eviction-loop.d.ts +7 -0
  125. package/dist/daemon/eviction-loop.js +19 -3
  126. package/dist/daemon/eviction-loop.js.map +1 -1
  127. package/dist/daemon/join-applier.d.ts +35 -0
  128. package/dist/daemon/join-applier.js +49 -0
  129. package/dist/daemon/join-applier.js.map +1 -0
  130. package/dist/daemon/loop-heartbeat.d.ts +34 -0
  131. package/dist/daemon/loop-heartbeat.js +38 -0
  132. package/dist/daemon/loop-heartbeat.js.map +1 -0
  133. package/dist/daemon/reward-claim-loop.js +4 -1
  134. package/dist/daemon/reward-claim-loop.js.map +1 -1
  135. package/dist/daemon/skip-log-dedup.d.ts +1 -1
  136. package/dist/daemon/skip-log-dedup.js +3 -0
  137. package/dist/daemon/skip-log-dedup.js.map +1 -1
  138. package/dist/daemon/watchdog-loop.d.ts +84 -0
  139. package/dist/daemon/watchdog-loop.js +91 -0
  140. package/dist/daemon/watchdog-loop.js.map +1 -0
  141. package/dist/dashboard/assets/index-BsrAAmvC.js +171 -0
  142. package/dist/dashboard/assets/index-DQOWJ2SF.css +1 -0
  143. package/dist/dashboard/index.html +2 -2
  144. package/dist/discovery/http.d.ts +17 -0
  145. package/dist/discovery/http.js +295 -25
  146. package/dist/discovery/http.js.map +1 -1
  147. package/dist/discovery/onchain.js +158 -2
  148. package/dist/discovery/onchain.js.map +1 -1
  149. package/dist/discovery/types.d.ts +106 -0
  150. package/dist/discovery/types.js +40 -0
  151. package/dist/discovery/types.js.map +1 -1
  152. package/dist/discovery/with-fallback.js +14 -0
  153. package/dist/discovery/with-fallback.js.map +1 -1
  154. package/dist/earning/bootstrap.d.ts +25 -0
  155. package/dist/earning/bootstrap.js +79 -28
  156. package/dist/earning/bootstrap.js.map +1 -1
  157. package/dist/earning/contracts.d.ts +0 -229
  158. package/dist/earning/contracts.js +4 -184
  159. package/dist/earning/contracts.js.map +1 -1
  160. package/dist/earning/faucet-topup-store.d.ts +41 -0
  161. package/dist/earning/faucet-topup-store.js +89 -0
  162. package/dist/earning/faucet-topup-store.js.map +1 -0
  163. package/dist/earning/faucet.d.ts +1 -1
  164. package/dist/earning/faucet.js +2 -2
  165. package/dist/earning/faucet.js.map +1 -1
  166. package/dist/earning/safe-adapter.js +11 -0
  167. package/dist/earning/safe-adapter.js.map +1 -1
  168. package/dist/earning/stolas-claim.js +8 -8
  169. package/dist/earning/stolas-claim.js.map +1 -1
  170. package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
  171. package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
  172. package/dist/earning/stolas-staking.js.map +1 -0
  173. package/dist/earning/testnet-setup-migration.d.ts +1 -0
  174. package/dist/earning/testnet-setup-migration.js +7 -2
  175. package/dist/earning/testnet-setup-migration.js.map +1 -1
  176. package/dist/earning/types.d.ts +1 -1
  177. package/dist/earning/types.js +1 -1
  178. package/dist/earning/types.js.map +1 -1
  179. package/dist/earning/viem-clients.d.ts +3 -19
  180. package/dist/earning/viem-clients.js +4 -31
  181. package/dist/earning/viem-clients.js.map +1 -1
  182. package/dist/eval/eval-harness-run.d.ts +63 -0
  183. package/dist/eval/eval-harness-run.js +123 -0
  184. package/dist/eval/eval-harness-run.js.map +1 -0
  185. package/dist/eval/orchestrator.d.ts +224 -0
  186. package/dist/eval/orchestrator.js +250 -0
  187. package/dist/eval/orchestrator.js.map +1 -0
  188. package/dist/eval/paired.d.ts +68 -0
  189. package/dist/eval/paired.js +93 -0
  190. package/dist/eval/paired.js.map +1 -0
  191. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  192. package/dist/eval/resolve-slate-tasks.js +56 -0
  193. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  194. package/dist/eval/screen-discovery.d.ts +22 -0
  195. package/dist/eval/screen-discovery.js +71 -0
  196. package/dist/eval/screen-discovery.js.map +1 -0
  197. package/dist/eval/screen-progress.d.ts +41 -0
  198. package/dist/eval/screen-progress.js +60 -0
  199. package/dist/eval/screen-progress.js.map +1 -0
  200. package/dist/eval/screen-runner.d.ts +30 -0
  201. package/dist/eval/screen-runner.js +289 -0
  202. package/dist/eval/screen-runner.js.map +1 -0
  203. package/dist/eval/screen.d.ts +107 -0
  204. package/dist/eval/screen.js +159 -0
  205. package/dist/eval/screen.js.map +1 -0
  206. package/dist/eval/slope.d.ts +29 -0
  207. package/dist/eval/slope.js +46 -0
  208. package/dist/eval/slope.js.map +1 -0
  209. package/dist/eval/train-sequence.d.ts +35 -0
  210. package/dist/eval/train-sequence.js +59 -0
  211. package/dist/eval/train-sequence.js.map +1 -0
  212. package/dist/eval/wilson.d.ts +45 -0
  213. package/dist/eval/wilson.js +48 -0
  214. package/dist/eval/wilson.js.map +1 -0
  215. package/dist/events/types.d.ts +1 -1
  216. package/dist/events/types.js +1 -1
  217. package/dist/events/types.js.map +1 -1
  218. package/dist/harnesses/auth-source.d.ts +51 -0
  219. package/dist/harnesses/auth-source.js +155 -0
  220. package/dist/harnesses/auth-source.js.map +1 -0
  221. package/dist/harnesses/engine/canonical-json.js +5 -3
  222. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  223. package/dist/harnesses/engine/engine.d.ts +32 -0
  224. package/dist/harnesses/engine/engine.js +76 -9
  225. package/dist/harnesses/engine/engine.js.map +1 -1
  226. package/dist/harnesses/engine/packaging.js +5 -5
  227. package/dist/harnesses/engine/packaging.js.map +1 -1
  228. package/dist/harnesses/engine/persistence.d.ts +17 -0
  229. package/dist/harnesses/engine/persistence.js +28 -0
  230. package/dist/harnesses/engine/persistence.js.map +1 -1
  231. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  232. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  233. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  234. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  235. package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
  236. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  237. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  238. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  239. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  240. package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
  241. package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
  242. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  243. package/dist/harnesses/impls/index.d.ts +2 -0
  244. package/dist/harnesses/impls/index.js +10 -1
  245. package/dist/harnesses/impls/index.js.map +1 -1
  246. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  247. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  248. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  249. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  250. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  251. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  252. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  253. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  254. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  255. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  256. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  257. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  258. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  259. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  260. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +8 -0
  261. package/dist/harnesses/impls/learner/adapters/codex-code.js +91 -11
  262. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  263. package/dist/harnesses/impls/learner/harness.d.ts +29 -1
  264. package/dist/harnesses/impls/learner/harness.js +85 -1
  265. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  266. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  267. package/dist/harnesses/impls/learner/harvest.js +51 -1
  268. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  269. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  270. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  271. package/dist/harnesses/impls/stub.d.ts +2 -2
  272. package/dist/harnesses/impls/stub.js +2 -2
  273. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
  274. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  275. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  276. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  277. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  278. package/dist/harnesses/readiness-registry.d.ts +16 -0
  279. package/dist/harnesses/readiness-registry.js +28 -6
  280. package/dist/harnesses/readiness-registry.js.map +1 -1
  281. package/dist/harnesses/types.d.ts +26 -0
  282. package/dist/learner/revert-decision.d.ts +16 -1
  283. package/dist/learner/revert-decision.js +38 -18
  284. package/dist/learner/revert-decision.js.map +1 -1
  285. package/dist/learner/revert-stats.d.ts +14 -0
  286. package/dist/learner/revert-stats.js +42 -0
  287. package/dist/learner/revert-stats.js.map +1 -1
  288. package/dist/local-provider-url.d.ts +3 -0
  289. package/dist/local-provider-url.js +28 -0
  290. package/dist/local-provider-url.js.map +1 -0
  291. package/dist/main.js +125 -120
  292. package/dist/main.js.map +1 -1
  293. package/dist/mcp/acquire-artifact.d.ts +3 -3
  294. package/dist/mcp/acquire-artifact.js +3 -3
  295. package/dist/mcp/operator-server.js +1 -1
  296. package/dist/mcp/operator-server.js.map +1 -1
  297. package/dist/mcp/server.js +5 -6
  298. package/dist/mcp/server.js.map +1 -1
  299. package/dist/observability/emit-event.d.ts +1 -1
  300. package/dist/observability/emit-event.js +0 -4
  301. package/dist/observability/emit-event.js.map +1 -1
  302. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  303. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  304. package/dist/plugins/learner/hooks/session-start +30 -1
  305. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  306. package/dist/preflight/deployment-readiness.d.ts +127 -0
  307. package/dist/preflight/deployment-readiness.js +308 -0
  308. package/dist/preflight/deployment-readiness.js.map +1 -0
  309. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  310. package/dist/preflight/pidfile-liveness.js +14 -0
  311. package/dist/preflight/pidfile-liveness.js.map +1 -1
  312. package/dist/rpc/transport.d.ts +43 -5
  313. package/dist/rpc/transport.js +131 -30
  314. package/dist/rpc/transport.js.map +1 -1
  315. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  316. package/dist/solver-nets/registry.d.ts +19 -0
  317. package/dist/solver-nets/registry.js +95 -66
  318. package/dist/solver-nets/registry.js.map +1 -1
  319. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  320. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  321. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  322. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  323. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  324. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  325. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  326. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  327. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  328. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  329. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  330. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  331. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
  332. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
  333. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  334. package/dist/solver-types/index.js +2 -0
  335. package/dist/solver-types/index.js.map +1 -1
  336. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  337. package/dist/solver-types/jinn-repo-admit.js +16 -0
  338. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  339. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  340. package/dist/solver-types/jinn-repo-auto.js +163 -0
  341. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  342. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  343. package/dist/solver-types/jinn-repo-definition.js +34 -0
  344. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  345. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  346. package/dist/solver-types/jinn-repo-extract.js +32 -0
  347. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  348. package/dist/solver-types/jinn-repo.d.ts +21 -0
  349. package/dist/solver-types/jinn-repo.js +23 -0
  350. package/dist/solver-types/jinn-repo.js.map +1 -0
  351. package/dist/solver-types/learner-loop-test.js +1 -1
  352. package/dist/solver-types/learner-loop-test.js.map +1 -1
  353. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  354. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  355. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  356. package/dist/solver-types/solver-type.d.ts +8 -0
  357. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  358. package/dist/solver-types/swe-rebench-v2.js +115 -10
  359. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  360. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  361. package/dist/solvernets/launched-record-dispatcher.js +8 -1
  362. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  363. package/dist/solvernets/registry-client-erc8004.js +29 -37
  364. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  365. package/dist/solvernets/registry-client.d.ts +6 -0
  366. package/dist/solvernets/store.d.ts +1 -1
  367. package/dist/solvernets/store.js +8 -3
  368. package/dist/solvernets/store.js.map +1 -1
  369. package/dist/spend/ai-units-config.d.ts +10 -0
  370. package/dist/spend/ai-units-config.js +7 -1
  371. package/dist/spend/ai-units-config.js.map +1 -1
  372. package/dist/spend/ai-units.d.ts +51 -0
  373. package/dist/spend/ai-units.js +73 -0
  374. package/dist/spend/ai-units.js.map +1 -1
  375. package/dist/spend/record.js +12 -5
  376. package/dist/spend/record.js.map +1 -1
  377. package/dist/spend/usage.js +39 -3
  378. package/dist/spend/usage.js.map +1 -1
  379. package/dist/store/store.d.ts +92 -5
  380. package/dist/store/store.js +184 -7
  381. package/dist/store/store.js.map +1 -1
  382. package/dist/trajectory/emit.d.ts +6 -0
  383. package/dist/trajectory/emit.js +9 -1
  384. package/dist/trajectory/emit.js.map +1 -1
  385. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  386. package/dist/trajectory/harness-bundle-schema.js +1 -1
  387. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  388. package/dist/trajectory/schema.d.ts +1 -1
  389. package/dist/trajectory/schema.js +1 -1
  390. package/dist/trajectory/schema.js.map +1 -1
  391. package/dist/trajectory/scrub/build.d.ts +27 -0
  392. package/dist/trajectory/scrub/build.js +43 -0
  393. package/dist/trajectory/scrub/build.js.map +1 -0
  394. package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
  395. package/dist/trajectory/scrub/emit-scrub.js +88 -0
  396. package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
  397. package/dist/trajectory/scrub/key-policy.d.ts +20 -0
  398. package/dist/trajectory/scrub/key-policy.js +43 -0
  399. package/dist/trajectory/scrub/key-policy.js.map +1 -0
  400. package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
  401. package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
  402. package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
  403. package/dist/trajectory/scrub/openredaction-stage.d.ts +14 -0
  404. package/dist/trajectory/scrub/openredaction-stage.js +36 -0
  405. package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
  406. package/dist/trajectory/scrub/pii-build.d.ts +31 -0
  407. package/dist/trajectory/scrub/pii-build.js +64 -0
  408. package/dist/trajectory/scrub/pii-build.js.map +1 -0
  409. package/dist/trajectory/scrub/pipeline.d.ts +16 -0
  410. package/dist/trajectory/scrub/pipeline.js +26 -0
  411. package/dist/trajectory/scrub/pipeline.js.map +1 -0
  412. package/dist/trajectory/scrub/secretlint-stage.d.ts +13 -0
  413. package/dist/trajectory/scrub/secretlint-stage.js +121 -0
  414. package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
  415. package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
  416. package/dist/trajectory/scrub/transformers-detector.js +68 -0
  417. package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
  418. package/dist/trajectory/scrub/types.d.ts +25 -0
  419. package/dist/trajectory/scrub/types.js +2 -0
  420. package/dist/trajectory/scrub/types.js.map +1 -0
  421. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  422. package/dist/trajectory/transcript-parsers/types.js +1 -1
  423. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  424. package/dist/tx-retry.d.ts +12 -0
  425. package/dist/tx-retry.js +41 -12
  426. package/dist/tx-retry.js.map +1 -1
  427. package/dist/types/envelope.d.ts +1 -1
  428. package/dist/types/envelope.js +1 -1
  429. package/dist/types/envelope.js.map +1 -1
  430. package/dist/types/payloads/index.d.ts +1 -1
  431. package/dist/types/payloads/index.js +7 -1
  432. package/dist/types/payloads/index.js.map +1 -1
  433. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  434. package/dist/types/payloads/portfolio-v0.js +1 -1
  435. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  436. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  437. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  438. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  439. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  440. package/dist/types/payloads/prediction-v0.js +1 -1
  441. package/dist/types/payloads/prediction-v0.js.map +1 -1
  442. package/dist/types/portfolio.d.ts +1 -1
  443. package/dist/types/portfolio.js +1 -1
  444. package/dist/types/portfolio.js.map +1 -1
  445. package/dist/types/prediction-apy.d.ts +1 -1
  446. package/dist/types/prediction-apy.js +1 -1
  447. package/dist/types/prediction-apy.js.map +1 -1
  448. package/dist/types/prediction.d.ts +1 -1
  449. package/dist/types/prediction.js +1 -1
  450. package/dist/types/prediction.js.map +1 -1
  451. package/dist/types/session-provenance.d.ts +1 -1
  452. package/dist/types/session-provenance.js +1 -1
  453. package/dist/types/session-provenance.js.map +1 -1
  454. package/dist/types/task-document.d.ts +315 -1
  455. package/dist/types/task-document.js +9 -1
  456. package/dist/types/task-document.js.map +1 -1
  457. package/dist/types/task.d.ts +29 -1
  458. package/dist/types/task.js +1 -1
  459. package/dist/types/task.js.map +1 -1
  460. package/dist/types/window.d.ts +1 -1
  461. package/dist/types/window.js +1 -1
  462. package/dist/types/window.js.map +1 -1
  463. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  464. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  465. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  466. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  467. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  468. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  469. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  470. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  471. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  472. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  473. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  474. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  475. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  476. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  477. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  478. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  479. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  480. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  481. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  482. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  483. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  484. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  485. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  486. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  487. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  488. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  489. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
  490. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
  491. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  492. package/docker-compose.yml +3 -2
  493. package/package.json +36 -26
  494. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  495. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  496. package/plugins/jinn-repo-runtime/README.md +27 -0
  497. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  498. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  499. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  500. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  501. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  502. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  503. package/plugins/learner/hooks/session-start +30 -1
  504. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  505. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  506. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  507. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
  508. package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
  509. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
  510. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
  511. package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
  512. package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
  513. package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
  514. package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
  515. package/dist/daemon/jinn-claim-loop-mock.js +0 -122
  516. package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
  517. package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
  518. package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
  519. package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
  520. package/dist/daemon/jinn-claim-loop.d.ts +0 -130
  521. package/dist/daemon/jinn-claim-loop.js +0 -328
  522. package/dist/daemon/jinn-claim-loop.js.map +0 -1
  523. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  524. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
  525. package/dist/earning/jinn-rewards.js.map +0 -1
  526. package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
  527. package/dist/scripts/donation-consumption-acceptance.js +0 -1382
  528. package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
  529. package/dist/x402/acquire.d.ts +0 -17
  530. package/dist/x402/acquire.js +0 -49
  531. package/dist/x402/acquire.js.map +0 -1
  532. package/dist/x402/facilitator.d.ts +0 -11
  533. package/dist/x402/facilitator.js +0 -52
  534. package/dist/x402/facilitator.js.map +0 -1
  535. package/dist/x402/handler.d.ts +0 -27
  536. package/dist/x402/handler.js +0 -236
  537. package/dist/x402/handler.js.map +0 -1
@@ -0,0 +1,481 @@
1
+ /**
2
+ * `jinn eval <slate-version> --checkpoint <cid>` — run a held-out slate against
3
+ * a checkpoint in frozen mode and emit a resolved-rate comparison vs the parent
4
+ * checkpoint with a Wilson confidence interval (issue #818).
5
+ *
6
+ * The command is a thin shell over `runEval` (orchestrator.ts): a pure
7
+ * `createEvalCommand(deps)` factory tested directly, plus a default
8
+ * `CommandModule` that wires production deps. The orchestration itself
9
+ * (slate load -> resolve tasks -> runEval) is the injected `runPipeline` seam;
10
+ * the live Docker/IPFS wiring is completed in #819's thin slice.
11
+ *
12
+ * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md
13
+ */
14
+ import { existsSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ import { homedir } from 'node:os';
17
+ import { parseCommandArgs, COMMON_FLAGS } from '../command.js';
18
+ import { emitEnvelope } from '../../errors/envelope.js';
19
+ import { HarnessCheckpointManifestSchema, } from '../../vendor/@jinn-network/sdk/dist/checkpoint.js';
20
+ import { runEval, } from '../../eval/orchestrator.js';
21
+ import { resolveSlateTasks } from '../../eval/resolve-slate-tasks.js';
22
+ import { loadConfig } from '../../config.js';
23
+ import { Store } from '../../store/store.js';
24
+ import { fetchFromIpfs } from '../../adapters/mech/ipfs.js';
25
+ import { resolveRuntimePluginsForSolverType, runHarnessForEval, } from '../../eval/eval-harness-run.js';
26
+ import { DEFAULT_EXECUTION_DISCOVERY_FROM_BLOCK } from '../../corpus/onchain-query.js';
27
+ import { solverTypeFromJoinedContract } from '../../solver-nets/registry.js';
28
+ import { loadHeldOutSlate } from '../../solver-types/_swe-rebench-v2-held-out-slate.js';
29
+ import { loadSweRebenchV2Pool, defaultStateDir } from '../../solver-types/swe-rebench-v2.js';
30
+ import { PoolCacheStore, loadPoolWithCacheFallback } from '../../solver-types/_swe-rebench-v2-pool-cache.js';
31
+ import { LearnerHarness } from '../../harnesses/impls/learner/harness.js';
32
+ import { ClaudeCodeHarnessAdapter, } from '../../harnesses/impls/learner/adapters/claude-code.js';
33
+ import { CodexCodeHarnessAdapter } from '../../harnesses/impls/learner/adapters/codex-code.js';
34
+ import { CODEX_HARNESS, canonicalHarnessName, harnessStateDirName } from '../../harnesses/names.js';
35
+ import { SweRebenchV2Evaluator } from '../../harnesses/impls/swe-rebench-v2-evaluator/index.js';
36
+ import { HttpHfFetcher } from '../../harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js';
37
+ import { PythonEvalRunner } from '../../harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js';
38
+ import { readEnabledState } from '../../harnesses/impls/swe-rebench-v2-evaluator/harness.js';
39
+ import { JinnRepoEvaluator } from '../../harnesses/impls/jinn-repo-evaluator/evaluator.js';
40
+ import { loadJinnRepoPool, resolveJinnRepoSlate, solverView, } from '../../solver-types/_jinn-repo-pool.js';
41
+ export function selectEvalBackend(solverType) {
42
+ return solverType === 'jinn-repo' ? { kind: 'jinn-repo' } : { kind: 'swe-rebench-v2' };
43
+ }
44
+ const EXAMPLE = 'jinn eval v1 --checkpoint <cid> [--parent <cid>] [--solver-type swe-rebench-v2] [--json|--human]';
45
+ export function createEvalCommand(deps) {
46
+ return {
47
+ name: 'eval',
48
+ summary: 'Run a held-out slate against a checkpoint and compare its resolved rate vs the parent (#818)',
49
+ helpText: `Usage:
50
+ ${EXAMPLE}
51
+
52
+ Runs the held-out task slate for <slate-version> against the checkpoint in
53
+ FROZEN mode (the freeze-fence holds — no implStateDir mutation), writes per-task
54
+ pass/fail, and emits a resolved-rate comparison vs the parent checkpoint with a
55
+ Wilson confidence interval.
56
+
57
+ Arguments:
58
+ <slate-version> Held-out slate version, e.g. v1
59
+
60
+ Options:
61
+ --checkpoint <cid> Checkpoint to evaluate (required)
62
+ --parent <cid> Parent checkpoint to compare against
63
+ (default: manifest.parentCheckpointCid)
64
+ --solver-type <type> SolverType (default: swe-rebench-v2)
65
+ --impl-state-dir <dir> Local frozen impl-state to evaluate
66
+ (default: engine.implStateDirRoot/<implName> from config)
67
+ --config <path> Config file (default: ~/.jinn-client/config.json)
68
+ --json Emit JSON (perTask[] + comparison{child,parent,delta,verdict})
69
+ --human Emit a human-readable summary line
70
+
71
+ Scores are only comparable WITHIN a slate version. The parent must already have
72
+ been evaluated against the same slate version, else the command fails loud.`,
73
+ async run(ctx) {
74
+ let parsed;
75
+ try {
76
+ parsed = parseCommandArgs(ctx.argv, {
77
+ ...COMMON_FLAGS,
78
+ checkpoint: { type: 'string' },
79
+ parent: { type: 'string' },
80
+ 'solver-type': { type: 'string', default: 'swe-rebench-v2' },
81
+ 'impl-state-dir': { type: 'string' },
82
+ });
83
+ }
84
+ catch (err) {
85
+ emitEnvelope({
86
+ code: 'invalid_invocation',
87
+ message: err instanceof Error ? err.message : String(err),
88
+ exampleCli: EXAMPLE,
89
+ details: { field: 'flags' },
90
+ }, { writer: ctx.writer, exit: ctx.exit });
91
+ return;
92
+ }
93
+ const slateVersion = parsed.positionals[0];
94
+ const checkpointCid = parsed.values.checkpoint;
95
+ if (!slateVersion) {
96
+ emitEnvelope({ code: 'invalid_invocation', message: '<slate-version> positional is required', exampleCli: EXAMPLE, details: { field: 'slate-version' } }, { writer: ctx.writer, exit: ctx.exit });
97
+ return;
98
+ }
99
+ if (!checkpointCid) {
100
+ emitEnvelope({ code: 'invalid_invocation', message: '--checkpoint <cid> is required', exampleCli: EXAMPLE, details: { field: 'checkpoint' } }, { writer: ctx.writer, exit: ctx.exit });
101
+ return;
102
+ }
103
+ const manifest = await deps.fetchManifest(checkpointCid);
104
+ const parentCheckpointCid = parsed.values.parent ?? manifest.parentCheckpointCid;
105
+ if (!parentCheckpointCid) {
106
+ emitEnvelope({
107
+ code: 'invalid_invocation',
108
+ message: 'no parent checkpoint: manifest.parentCheckpointCid is null and --parent was not given',
109
+ exampleCli: EXAMPLE,
110
+ details: { field: 'parent' },
111
+ }, { writer: ctx.writer, exit: ctx.exit });
112
+ return;
113
+ }
114
+ const result = await deps.runPipeline({
115
+ checkpointCid,
116
+ checkpointManifest: manifest,
117
+ solverType: parsed.values['solver-type'] ?? 'swe-rebench-v2',
118
+ slateVersion,
119
+ parentCheckpointCid,
120
+ ...(parsed.values.config ? { configPath: parsed.values.config } : {}),
121
+ ...(parsed.values['impl-state-dir'] ? { implStateDir: parsed.values['impl-state-dir'] } : {}),
122
+ });
123
+ if (parsed.values.human) {
124
+ ctx.writer.write(renderHuman(result) + '\n');
125
+ }
126
+ else {
127
+ ctx.writer.write(JSON.stringify(result) + '\n');
128
+ }
129
+ },
130
+ };
131
+ }
132
+ function pct(p) {
133
+ return `${(p * 100).toFixed(1)}%`;
134
+ }
135
+ function ci(c) {
136
+ return `[${(c.lo * 100).toFixed(1)}, ${(c.hi * 100).toFixed(1)}]`;
137
+ }
138
+ function renderHuman(result) {
139
+ const { comparison: c } = result;
140
+ const passed = result.perTask.filter((t) => t.passed === true).length;
141
+ const scorable = result.perTask.filter((t) => !t.unscorable).length;
142
+ const unscorable = result.perTask.filter((t) => t.unscorable).length;
143
+ const deltaPp = (c.delta * 100).toFixed(1);
144
+ const sign = c.delta >= 0 ? '+' : '';
145
+ const verdict = c.verdict === 'trustworthy' ? 'trustworthy' : 'within noise';
146
+ const tail = unscorable > 0 ? ` (${unscorable} unscorable, excluded)` : '';
147
+ // Provenance (Legibility): the graded artifact is the operator's LOCAL frozen
148
+ // impl-state, verified == the named checkpoint — not a re-fetched checkpoint state.
149
+ const provenance = `evaluated local impl-state at ${result.evaluated.codeDigest}, verified == checkpoint`;
150
+ // Paired (matched-design) verdict — the correct, higher-power test for the
151
+ // same-slate before/after design; reported alongside the conservative marginal
152
+ // verdict above (DR-2026-06-02-b §2a).
153
+ const p = result.paired;
154
+ const pairedLine = p
155
+ ? `\npaired (McNemar): ${p.improved}↑ ${p.regressed}↓ of ${p.pairs} matched pairs · ` +
156
+ `p=${p.pValue.toFixed(3)} (${p.verdict === 'trustworthy' ? 'trustworthy' : 'within noise'})`
157
+ : '';
158
+ return (`resolved ${passed}/${scorable} = ${pct(c.child.p)} ${ci(c.child)} ` +
159
+ `vs parent ${pct(c.parent.p)} ${ci(c.parent)} · Δ ${sign}${deltaPp}pp (${verdict})${tail}` +
160
+ pairedLine +
161
+ '\n' +
162
+ provenance);
163
+ }
164
+ const DEFAULT_CONFIG_PATH = join(homedir(), '.jinn-client', 'config.json');
165
+ /** Default impl-state root when config does not set `engine.implStateDirRoot`. */
166
+ function implStateDirRoot(config) {
167
+ return config.engine?.implStateDirRoot ?? join(homedir(), '.jinn-client', 'engine', 'impl-state');
168
+ }
169
+ /**
170
+ * Keyless corpus endpoints for the learner adapter's bundled MCP server (record
171
+ * search / artifact inspection). Mirrors `main.ts`'s `corpusEnv` assembly so the
172
+ * eval agent runtime matches the daemon's. Sources every field from
173
+ * `loadConfig()` — there is no bootstrap state in the CLI path, so the identity
174
+ * registry falls back to the chain default for the resolved network.
175
+ */
176
+ export function corpusEnvFromConfig(config) {
177
+ const chainId = config.network === 'testnet' ? 84532 : 8453;
178
+ const fromBlock = Number(DEFAULT_EXECUTION_DISCOVERY_FROM_BLOCK[chainId] ?? 0n);
179
+ const discoveryUrl = config.discovery?.url?.trim() || '';
180
+ const identityRegistryAddress = config.identityRegistryAddress;
181
+ if (!discoveryUrl && !identityRegistryAddress)
182
+ return undefined;
183
+ return {
184
+ ...(discoveryUrl ? { discoveryUrl } : {}),
185
+ ipfsGatewayUrl: config.ipfsGatewayUrl,
186
+ rpcUrl: config.rpcUrl,
187
+ chainId,
188
+ ...(identityRegistryAddress ? { identityRegistryAddress } : {}),
189
+ ...(fromBlock > 0 ? { fromBlock } : {}),
190
+ };
191
+ }
192
+ /**
193
+ * Build the production `Harness` for a checkpoint. swe-rebench-v2 checkpoints
194
+ * are produced by the learner harness (claude-code or codex variant); the
195
+ * manifest's `harnessPackage.implName` selects which. Constructed standalone
196
+ * (no funded wallet) — a frozen-mode eval run never touches the chain; it only
197
+ * runs the agent against the local impl-state and harvests the diff.
198
+ *
199
+ * Mirrors `buildHarnesses` (harnesses/impls/index.ts): the adapter MUST receive
200
+ * `corpusEnv` and `daemonApiToken` (alongside storePath/daemonApiUrl) so the
201
+ * agent runtime matches the daemon's — otherwise the bundled MCP surface
202
+ * degrades and the agent cannot produce a gradeable patch.
203
+ */
204
+ function buildEvalHarness(implName, config) {
205
+ const canonical = canonicalHarnessName(implName);
206
+ const daemonApiToken = process.env['DAEMON_API_TOKEN']?.trim();
207
+ const corpusEnv = corpusEnvFromConfig(config);
208
+ const common = {
209
+ claudePath: config.claudePath ?? 'claude',
210
+ claudeModel: config.claudeModel,
211
+ storePath: config.dbPath,
212
+ daemonApiUrl: `http://127.0.0.1:${config.apiPort}`,
213
+ ...(daemonApiToken ? { daemonApiToken } : {}),
214
+ ...(corpusEnv ? { corpusEnv } : {}),
215
+ };
216
+ if (canonical === CODEX_HARNESS) {
217
+ return new LearnerHarness({
218
+ name: CODEX_HARNESS,
219
+ adapter: new CodexCodeHarnessAdapter({
220
+ ...common,
221
+ ...(config.codexPath !== undefined ? { codexPath: config.codexPath } : {}),
222
+ }),
223
+ claudePath: common.claudePath,
224
+ ...(config.codexPath !== undefined ? { codexPath: config.codexPath } : {}),
225
+ });
226
+ }
227
+ // Default: claude-code learner (LearnerHarness's own default name).
228
+ return new LearnerHarness({
229
+ adapter: new ClaudeCodeHarnessAdapter(common),
230
+ claudePath: common.claudePath,
231
+ });
232
+ }
233
+ /**
234
+ * Resolve the local frozen impl-state directory for the checkpoint. There is
235
+ * no production IPFS round-trip for a checkpoint's `implStateDir` (the
236
+ * checkpoint publish/install verbs are factory-only; the pin/fetch format is a
237
+ * future verification layer — spec §6.4, "Layer 4"). The realistic operator
238
+ * workflow (#824) evaluates the operator's OWN frozen state, which already
239
+ * lives on disk. Mirrors `codedigest-revert-check` (`--impl-state-dir`).
240
+ */
241
+ export function resolveLocalImplStateDir(explicit, implName, config) {
242
+ if (explicit)
243
+ return explicit;
244
+ // `implName` comes from the remote IPFS manifest (only `z.string().min(1)`),
245
+ // so constrain it before the path join — an unconstrained value like
246
+ // "../../.." would traverse out of engine.implStateDirRoot.
247
+ if (!/^[a-z0-9-]+$/.test(implName)) {
248
+ throw new Error(`invalid harness implName ${JSON.stringify(implName)} in checkpoint manifest: ` +
249
+ `expected /^[a-z0-9-]+$/ (refusing to derive an impl-state path that could ` +
250
+ `traverse outside engine.implStateDirRoot)`);
251
+ }
252
+ return join(implStateDirRoot(config), harnessStateDirName(implName));
253
+ }
254
+ /**
255
+ * Production `runHarnessOnce` for the eval orchestrator. Delegates to the
256
+ * shared {@link runHarnessForEval} helper, which builds the FULL
257
+ * daemon-equivalent HarnessContext — including `solverPluginRoots` from the
258
+ * SolverNet's `runtimePlugins` — so the agent gets the bundled MCP server
259
+ * (`submit_typed_payload`) and can produce a gradeable patch. The legacy
260
+ * hand-rolled body ran the agent WITHOUT plugins, leaving every task
261
+ * unscorable; this factory closes over the resolved `solverType` +
262
+ * `runtimePlugins` and surfaces the seam the orchestrator already drives.
263
+ */
264
+ export function makeEvalRunHarnessOnce(opts) {
265
+ return async ({ harness, implStateDir, mode, task }) => {
266
+ const resolvedTask = (task ?? {
267
+ id: 'eval-task',
268
+ description: '',
269
+ role: 'restoration',
270
+ window: { startTs: 0, endTs: Date.now() + 3_600_000 },
271
+ });
272
+ return runHarnessForEval({
273
+ harness,
274
+ task: resolvedTask,
275
+ solverType: opts.solverType,
276
+ runtimePlugins: opts.runtimePlugins,
277
+ implStateDir,
278
+ mode,
279
+ ...(opts.solverNetName ? { solverNetName: opts.solverNetName } : {}),
280
+ ...(opts.model ? { model: opts.model } : {}),
281
+ });
282
+ };
283
+ }
284
+ /**
285
+ * Resolve slate `instance_id`s to `{ task, row }` pairs. The slate stores only
286
+ * ids; the HF dataset+split per instance comes from the pool (cached, with a
287
+ * HF fallback — mirrors the evaluator harness's pool path). Instances are
288
+ * grouped by `(hf_dataset, hf_split)` so each group's row scan hits the right
289
+ * partition.
290
+ */
291
+ async function resolveSlateAgainstPool(args) {
292
+ const cacheResult = await loadPoolWithCacheFallback({
293
+ loadPool: loadSweRebenchV2Pool,
294
+ cache: new PoolCacheStore({ stateDir: args.stateDir }),
295
+ currentPool: [],
296
+ });
297
+ const pool = cacheResult.pool;
298
+ if (pool.length === 0) {
299
+ throw new Error(`cannot resolve held-out slate: SWE-rebench v2 pool is empty` +
300
+ (cacheResult.error ? ` (${cacheResult.error.message})` : ''));
301
+ }
302
+ const byId = new Map(pool.map((t) => [t.instance_id, t]));
303
+ // Group requested ids by (dataset, split), carrying the real pool task so the
304
+ // agent run gets the true problem_statement/base_commit (H1).
305
+ const groups = new Map();
306
+ for (const id of args.instanceIds) {
307
+ const poolTask = byId.get(id);
308
+ if (!poolTask) {
309
+ throw new Error(`held-out slate instance ${id} not present in the current pool`);
310
+ }
311
+ const key = `${poolTask.hf_dataset} ${poolTask.hf_split}`;
312
+ const group = groups.get(key) ?? { hf_dataset: poolTask.hf_dataset, hf_split: poolTask.hf_split, poolTasks: [] };
313
+ group.poolTasks.push(poolTask);
314
+ groups.set(key, group);
315
+ }
316
+ const out = [];
317
+ for (const group of groups.values()) {
318
+ const resolved = await resolveSlateTasks({
319
+ poolTasks: group.poolTasks,
320
+ hf_dataset: group.hf_dataset,
321
+ hf_split: group.hf_split,
322
+ fetcher: args.fetcher,
323
+ });
324
+ out.push(...resolved);
325
+ }
326
+ return out;
327
+ }
328
+ /**
329
+ * Adapt {@link JinnRepoEvaluator} onto the orchestrator's {@link SolutionEvaluator}.
330
+ * The orchestrator calls `grade({ task, solutionPayload, row })` and consumes a
331
+ * `{ passed_match, test_log }` verdict, signalling unscorable by THROWING (its
332
+ * catch records `unscorable`). The repo-native evaluator instead RETURNS
333
+ * `{ passed, unscorable, logExcerpt }`, so this adapter:
334
+ * - feeds the full pool item (`task`, which carries `gold_tests`) + the patch,
335
+ * - throws when the run is unscorable (preserving the orchestrator's contract:
336
+ * unscorable is never a graded FAIL — #476),
337
+ * - otherwise maps `passed` → `passed_match` and `logExcerpt` → `test_log`.
338
+ * `row` is unused (repo-native grading has no HF row).
339
+ */
340
+ function jinnRepoEvaluatorAdapter(evaluator) {
341
+ return {
342
+ async grade({ task, solutionPayload }) {
343
+ const verdict = await evaluator.grade({
344
+ task: task,
345
+ solution: { patch: solutionPayload.patch },
346
+ });
347
+ if (verdict.unscorable || verdict.passed === null) {
348
+ // Unscorable: the orchestrator records this instance as excluded, never
349
+ // as a graded fail. Throwing routes it through the orchestrator's
350
+ // unscorable catch (matches the swe-rebench evaluator's throw contract).
351
+ throw new Error(`jinn-repo eval unscorable: ${verdict.logExcerpt}`);
352
+ }
353
+ return { passed_match: verdict.passed, test_log: verdict.logExcerpt };
354
+ },
355
+ };
356
+ }
357
+ /**
358
+ * Build the jinn-repo `slateInstances` for the orchestrator. LEAK-CONTROL: the
359
+ * solver harness receives ONLY `solverView(item)` (no `gold_tests`, no
360
+ * `solution_patch`); the evaluator receives the full pool item via `gradeTask`.
361
+ */
362
+ function jinnRepoSlateInstances(items) {
363
+ return items.map((item) => {
364
+ const view = solverView(item);
365
+ return {
366
+ instance_id: item.instance_id,
367
+ // Solver-visible task: solverView ONLY — gold tests + reference solution
368
+ // never cross this boundary.
369
+ harnessTask: {
370
+ id: item.instance_id,
371
+ description: item.problem_statement,
372
+ role: 'restoration',
373
+ solverType: 'jinn-repo.v1',
374
+ spec: view,
375
+ window: { startTs: 0, endTs: Date.now() + 3_600_000 },
376
+ },
377
+ // Grade-side: the FULL pool item (the evaluator needs gold_tests).
378
+ gradeTask: item,
379
+ solutionSchemaVersion: 'jinn-repo-solution.v1',
380
+ };
381
+ });
382
+ }
383
+ const PRODUCTION_DEPS = {
384
+ async fetchManifest(cid) {
385
+ const config = loadConfig(DEFAULT_CONFIG_PATH);
386
+ const raw = await fetchFromIpfs(config.ipfsGatewayUrl, cid);
387
+ return HarnessCheckpointManifestSchema.parse(raw);
388
+ },
389
+ async runPipeline(args) {
390
+ const config = loadConfig(args.configPath ?? DEFAULT_CONFIG_PATH);
391
+ const manifest = args.checkpointManifest;
392
+ const implName = manifest.harnessPackage.implName;
393
+ // Frozen impl-state to evaluate (local; see resolveLocalImplStateDir).
394
+ const implStateDir = resolveLocalImplStateDir(args.implStateDir, implName, config);
395
+ if (!existsSync(implStateDir)) {
396
+ throw new Error(`impl-state directory not found: ${implStateDir} — ` +
397
+ `pass --impl-state-dir <dir> or set engine.implStateDirRoot in config`);
398
+ }
399
+ // Slate (instance ids) is backend-agnostic; how those ids resolve to
400
+ // run/grade payloads and which evaluator grades them is backend-specific.
401
+ const slate = loadHeldOutSlate(`${args.solverType}.v1`, args.slateVersion);
402
+ const backend = selectEvalBackend(args.solverType);
403
+ // Resolve the per-backend run/grade inputs:
404
+ // - tasksWithRows → swe-rebench-v2 default mapping (HF rows, Docker grade)
405
+ // - slateInstances → repo-native leak-controlled instances (solverView only)
406
+ let tasksWithRows;
407
+ let slateInstances;
408
+ let evaluator;
409
+ if (backend.kind === 'jinn-repo') {
410
+ // Repo-native: resolve the slate ids against the LOCAL jinn-repo pool. The
411
+ // evaluator (JinnRepoEvaluator) clones this repo @ base_commit, applies the
412
+ // candidate patch, overwrites gold tests, and runs the PR's own test.
413
+ const items = resolveJinnRepoSlate(loadJinnRepoPool(), slate.instanceIds);
414
+ slateInstances = jinnRepoSlateInstances(items);
415
+ evaluator = jinnRepoEvaluatorAdapter(new JinnRepoEvaluator());
416
+ }
417
+ else {
418
+ // swe-rebench-v2 (production): real HF fetcher; per-instance dataset/split
419
+ // from the pool.
420
+ const stateDir = process.env['JINN_SWE_REBENCH_V2_STATE_DIR'] ?? defaultStateDir();
421
+ const fetcher = new HttpHfFetcher();
422
+ tasksWithRows = await resolveSlateAgainstPool({
423
+ instanceIds: slate.instanceIds,
424
+ fetcher,
425
+ stateDir,
426
+ });
427
+ // Evaluator: the SWE-rebench v2 grading library — same construction the
428
+ // evaluator harness uses internally (HttpHfFetcher + PythonEvalRunner over
429
+ // the cloned upstream repo). Requires `jinn harnesses enable
430
+ // swe-rebench-v2-evaluator` to have cloned upstream + validated Docker.
431
+ const evaluatorImplStateDir = join(implStateDirRoot(config), 'swe-rebench-v2-evaluator');
432
+ const enabled = readEnabledState(evaluatorImplStateDir);
433
+ if (!enabled) {
434
+ throw new Error(`swe-rebench-v2 evaluator not enabled (no state at ${evaluatorImplStateDir}). ` +
435
+ `Run \`jinn harnesses enable swe-rebench-v2-evaluator\` first.`);
436
+ }
437
+ evaluator = new SweRebenchV2Evaluator({
438
+ fetcher,
439
+ runner: new PythonEvalRunner({ upstreamRepoDir: enabled.upstreamRepoDir }),
440
+ });
441
+ }
442
+ // The orchestrator runs each slate task under the full dispatch solverType
443
+ // (`<solver-type>.v1`). Resolve the SAME SolverNet runtime plugins the
444
+ // daemon would (fails LOUD if the operator hasn't joined the SolverNet /
445
+ // installed its plugins) — these carry the bundled MCP server the agent
446
+ // needs to emit a gradeable patch.
447
+ const dispatchSolverType = `${args.solverType}.v1`;
448
+ const runtimePlugins = await resolveRuntimePluginsForSolverType(dispatchSolverType, config.joinedSolverNets);
449
+ const joinedNet = Object.values(config.joinedSolverNets ?? {}).find((net) => solverTypeFromJoinedContract(net) === dispatchSolverType);
450
+ const harness = buildEvalHarness(implName, config);
451
+ const store = new Store(config.dbPath);
452
+ try {
453
+ return await runEval({
454
+ checkpointManifest: manifest,
455
+ checkpointCid: args.checkpointCid,
456
+ slate,
457
+ ...(slateInstances ? { slateInstances } : { tasksWithRows: tasksWithRows ?? [] }),
458
+ parentCheckpointCid: args.parentCheckpointCid,
459
+ implStateDir,
460
+ deps: {
461
+ harness,
462
+ fetchImplStateDirToLocal: async (_cid, targetDir) => targetDir,
463
+ evaluator,
464
+ runHarnessOnce: makeEvalRunHarnessOnce({
465
+ solverType: dispatchSolverType,
466
+ runtimePlugins,
467
+ ...(joinedNet?.name ? { solverNetName: joinedNet.name } : {}),
468
+ ...(config.claudeModel ? { model: config.claudeModel } : {}),
469
+ }),
470
+ store,
471
+ },
472
+ });
473
+ }
474
+ finally {
475
+ store.close?.();
476
+ }
477
+ },
478
+ };
479
+ const command = createEvalCommand(PRODUCTION_DEPS);
480
+ export default command;
481
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import type { CommandModule } from '../command.js';
2
2
  import { gatherIntrospectionRaw as defaultGatherIntrospectionRaw } from '../introspection-context.js';
3
3
  import { assembleRewardsV1 as defaultAssembleRewardsV1 } from '../../api/rewards-build.js';
4
+ import { sumPendingStakingRewards as defaultSumPendingStakingRewards } from '../../api/gather-status.js';
4
5
  export interface RewardsDeps {
5
6
  gatherIntrospectionRaw: typeof defaultGatherIntrospectionRaw;
6
7
  assembleRewardsV1: typeof defaultAssembleRewardsV1;
8
+ sumPendingStakingRewards: typeof defaultSumPendingStakingRewards;
7
9
  }
8
10
  export declare function createRewardsCommand(deps?: RewardsDeps): CommandModule;
9
11
  declare const command: CommandModule;
@@ -4,15 +4,16 @@ import { emitEnvelope } from '../../errors/envelope.js';
4
4
  import { emitResult } from '../output.js';
5
5
  import { gatherIntrospectionRaw as defaultGatherIntrospectionRaw } from '../introspection-context.js';
6
6
  import { assembleRewardsV1 as defaultAssembleRewardsV1 } from '../../api/rewards-build.js';
7
+ import { sumPendingStakingRewards as defaultSumPendingStakingRewards } from '../../api/gather-status.js';
8
+ import { loadConfig, getConfigPathFromArgs } from '../../config.js';
7
9
  const PRODUCTION_DEPS = {
8
10
  gatherIntrospectionRaw: defaultGatherIntrospectionRaw,
9
11
  assembleRewardsV1: defaultAssembleRewardsV1,
12
+ sumPendingStakingRewards: defaultSumPendingStakingRewards,
10
13
  };
11
14
  function formatRewardAmount(wei) {
12
15
  try {
13
- // stOLAS / JINN / OLAS all use 18 decimals. This command reports the
14
- // staking collector queue, not spendable operator tJINN.
15
- return `${formatUnits(BigInt(wei), 18)} collector-token`;
16
+ return `${formatUnits(BigInt(wei), 18)} OLAS`;
16
17
  }
17
18
  catch {
18
19
  return `${wei} wei`;
@@ -26,14 +27,18 @@ function humanRewards(payload) {
26
27
  else {
27
28
  const anyPending = payload.services.some((s) => s.pending !== '0');
28
29
  lines.push(anyPending
29
- ? 'Pending staking collector claims:'
30
- : 'Pending staking collector claims: none yet.');
30
+ ? 'Pending OLAS rewards:'
31
+ : 'Pending OLAS rewards: none yet.');
31
32
  for (const s of payload.services) {
32
33
  lines.push(` Service #${s.index}: ${formatRewardAmount(s.pending)} pending · ${formatRewardAmount(s.claimed)} claimed`);
33
34
  }
34
- lines.push('Operator tJINN/JINN earnings are reported from the Sepolia tJINN Safe balance, not this collector queue.');
35
+ if (payload.readState === 'error') {
36
+ lines.push(`Reward read unavailable: ${payload.error ?? 'unknown error'}`);
37
+ }
38
+ lines.push('Operator OLAS rewards accrue through staking and can be claimed when pending.');
35
39
  }
36
- lines.push(`Last claim tick: ${payload.lastClaimAt ?? 'never (daemon not yet run the claim loop)'}`);
40
+ lines.push(`Last successful claim: ${payload.lastClaimAt ?? 'never'}`);
41
+ lines.push(`Last claim tick: ${payload.lastClaimTickAt ?? 'never (daemon not yet run the claim loop)'}`);
37
42
  lines.push(`Next checkpoint: ${payload.nextCheckpointAt ?? 'not reported by the staking contract'}`);
38
43
  return lines.join('\n');
39
44
  }
@@ -43,9 +48,9 @@ export function createRewardsCommand(deps = PRODUCTION_DEPS) {
43
48
  summary: 'Staking collector queue per service; next checkpoint time',
44
49
  helpText: `Usage: jinn rewards [--human]
45
50
 
46
- Returns the current staking collector claim queue per service. This is
47
- the OLAS-style distributor maintenance path; operator tJINN/JINN earnings
48
- are the Sepolia tJINN Safe balance shown in status / the app.
51
+ Returns the current OLAS staking collector claim queue per service. This is
52
+ the OLAS staking distributor maintenance path; operator OLAS staking rewards
53
+ accumulate via the stOLAS curating-agent rail and are shown in status / the app.
49
54
 
50
55
  Examples:
51
56
  jinn rewards
@@ -74,6 +79,30 @@ Examples:
74
79
  return;
75
80
  }
76
81
  const raw = await deps.gatherIntrospectionRaw({ argv: ctx.argv });
82
+ // On-demand staking reward read — kept off the /v1/status hot path (#992).
83
+ // jinn rewards is the sanctioned ops-only surface for the OLAS staking
84
+ // collector queue. Resolve rpcUrl/network from config and read against
85
+ // the fleet that gather-status already loaded into `raw`.
86
+ if (raw.fleet && raw.rpc.ok) {
87
+ const configPath = getConfigPathFromArgs(ctx.argv ?? []) ?? getConfigPathFromArgs(process.argv.slice(2));
88
+ try {
89
+ const config = loadConfig(configPath);
90
+ const rpcUrl = Array.isArray(config.rpcUrl) ? config.rpcUrl[0] : config.rpcUrl;
91
+ const pr = await deps.sumPendingStakingRewards(rpcUrl, config.network, raw.fleet);
92
+ if ('sum' in pr) {
93
+ raw.pendingStakingRewardsWei = pr.sum;
94
+ raw.pendingByService = pr.pendingByService;
95
+ if (pr.nextCheckpointAt)
96
+ raw.nextCheckpointAt = pr.nextCheckpointAt;
97
+ }
98
+ else {
99
+ raw.pendingStakingRewardsError = pr.error;
100
+ }
101
+ }
102
+ catch (err) {
103
+ raw.pendingStakingRewardsError = err instanceof Error ? err.message : String(err);
104
+ }
105
+ }
77
106
  const payload = deps.assembleRewardsV1(raw);
78
107
  emitResult(payload, (v) => humanRewards(v), {
79
108
  json: Boolean(parsed.values.json),
@@ -1 +1 @@
1
- {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../../src/cli/commands/rewards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../../src/cli/commands/rewards.ts"],"names":[],"mappings":"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"}