@jinn-network/client 0.1.8 → 0.1.9-canary.144d87d2

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 (397) hide show
  1. package/README.md +6 -0
  2. package/dist/adapters/mech/adapter.d.ts +21 -1
  3. package/dist/adapters/mech/adapter.js +77 -10
  4. package/dist/adapters/mech/adapter.js.map +1 -1
  5. package/dist/adapters/mech/contracts.js +62 -28
  6. package/dist/adapters/mech/contracts.js.map +1 -1
  7. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  8. package/dist/adapters/mech/safe-revert.js +5 -1
  9. package/dist/adapters/mech/safe-revert.js.map +1 -1
  10. package/dist/adapters/mech/safe.js +5 -1
  11. package/dist/adapters/mech/safe.js.map +1 -1
  12. package/dist/adapters/mech/verdict-code.js +1 -1
  13. package/dist/adapters/mech/verdict-code.js.map +1 -1
  14. package/dist/api/bootstrap-endpoint.d.ts +1 -0
  15. package/dist/api/bootstrap-endpoint.js +1 -0
  16. package/dist/api/bootstrap-endpoint.js.map +1 -1
  17. package/dist/api/discovery-endpoint.d.ts +1 -0
  18. package/dist/api/discovery-endpoint.js +24 -0
  19. package/dist/api/discovery-endpoint.js.map +1 -1
  20. package/dist/api/fleet-build.d.ts +1 -7
  21. package/dist/api/fleet-build.js +0 -7
  22. package/dist/api/fleet-build.js.map +1 -1
  23. package/dist/api/gather-status.d.ts +8 -2
  24. package/dist/api/gather-status.js +29 -117
  25. package/dist/api/gather-status.js.map +1 -1
  26. package/dist/api/loop-completion-build.d.ts +79 -0
  27. package/dist/api/loop-completion-build.js +155 -0
  28. package/dist/api/loop-completion-build.js.map +1 -0
  29. package/dist/api/operator-artifacts-endpoint.js +1 -1
  30. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  31. package/dist/api/peers.js +2 -0
  32. package/dist/api/peers.js.map +1 -1
  33. package/dist/api/setup-endpoints.d.ts +32 -0
  34. package/dist/api/setup-endpoints.js +94 -24
  35. package/dist/api/setup-endpoints.js.map +1 -1
  36. package/dist/api/solvernets-endpoints.js +4 -1
  37. package/dist/api/solvernets-endpoints.js.map +1 -1
  38. package/dist/api/status-build.d.ts +43 -33
  39. package/dist/api/status-build.js +3 -26
  40. package/dist/api/status-build.js.map +1 -1
  41. package/dist/api/status-rollup-build.d.ts +0 -4
  42. package/dist/api/status-rollup-build.js +0 -4
  43. package/dist/api/status-rollup-build.js.map +1 -1
  44. package/dist/api/stop-hook.d.ts +1 -1
  45. package/dist/api/stop-hook.js +1 -1
  46. package/dist/api/stop-hook.js.map +1 -1
  47. package/dist/build-info.json +4 -4
  48. package/dist/build-meta.json +1 -1
  49. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  50. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  51. package/dist/cli/commands/doctor.d.ts +3 -0
  52. package/dist/cli/commands/doctor.js +37 -2
  53. package/dist/cli/commands/doctor.js.map +1 -1
  54. package/dist/cli/commands/eval.d.ts +87 -0
  55. package/dist/cli/commands/eval.js +481 -0
  56. package/dist/cli/commands/eval.js.map +1 -0
  57. package/dist/cli/commands/rewards.d.ts +2 -0
  58. package/dist/cli/commands/rewards.js +30 -3
  59. package/dist/cli/commands/rewards.js.map +1 -1
  60. package/dist/cli/commands/solver-nets.js +68 -0
  61. package/dist/cli/commands/solver-nets.js.map +1 -1
  62. package/dist/cli/commands/status.js +0 -1
  63. package/dist/cli/commands/status.js.map +1 -1
  64. package/dist/cli/index.js +2 -0
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/config.d.ts +102 -15
  67. package/dist/config.js +166 -19
  68. package/dist/config.js.map +1 -1
  69. package/dist/daemon/ai-units-gate.d.ts +6 -6
  70. package/dist/daemon/ai-units-gate.js +11 -10
  71. package/dist/daemon/ai-units-gate.js.map +1 -1
  72. package/dist/daemon/balance-topup-loop.js +3 -0
  73. package/dist/daemon/balance-topup-loop.js.map +1 -1
  74. package/dist/daemon/checkpoint-loop.js +2 -2
  75. package/dist/daemon/creator.d.ts +1 -0
  76. package/dist/daemon/creator.js +26 -14
  77. package/dist/daemon/creator.js.map +1 -1
  78. package/dist/daemon/daemon.d.ts +15 -0
  79. package/dist/daemon/daemon.js +78 -22
  80. package/dist/daemon/daemon.js.map +1 -1
  81. package/dist/daemon/eviction-loop.d.ts +7 -0
  82. package/dist/daemon/eviction-loop.js +19 -3
  83. package/dist/daemon/eviction-loop.js.map +1 -1
  84. package/dist/daemon/jinn-claim-loop.js +3 -0
  85. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  86. package/dist/daemon/join-applier.d.ts +35 -0
  87. package/dist/daemon/join-applier.js +49 -0
  88. package/dist/daemon/join-applier.js.map +1 -0
  89. package/dist/daemon/loop-heartbeat.d.ts +34 -0
  90. package/dist/daemon/loop-heartbeat.js +39 -0
  91. package/dist/daemon/loop-heartbeat.js.map +1 -0
  92. package/dist/daemon/reward-claim-loop.js +4 -1
  93. package/dist/daemon/reward-claim-loop.js.map +1 -1
  94. package/dist/daemon/watchdog-loop.d.ts +84 -0
  95. package/dist/daemon/watchdog-loop.js +91 -0
  96. package/dist/daemon/watchdog-loop.js.map +1 -0
  97. package/dist/dashboard/assets/index-8tAiMbUV.css +1 -0
  98. package/dist/dashboard/assets/index-D6a-DfaM.js +171 -0
  99. package/dist/dashboard/index.html +2 -2
  100. package/dist/discovery/http.d.ts +17 -0
  101. package/dist/discovery/http.js +295 -25
  102. package/dist/discovery/http.js.map +1 -1
  103. package/dist/discovery/onchain.js +155 -1
  104. package/dist/discovery/onchain.js.map +1 -1
  105. package/dist/discovery/types.d.ts +106 -0
  106. package/dist/discovery/types.js +40 -0
  107. package/dist/discovery/types.js.map +1 -1
  108. package/dist/discovery/with-fallback.js +14 -0
  109. package/dist/discovery/with-fallback.js.map +1 -1
  110. package/dist/earning/bootstrap.d.ts +25 -0
  111. package/dist/earning/bootstrap.js +79 -28
  112. package/dist/earning/bootstrap.js.map +1 -1
  113. package/dist/earning/faucet.d.ts +1 -1
  114. package/dist/earning/faucet.js +2 -2
  115. package/dist/earning/faucet.js.map +1 -1
  116. package/dist/earning/safe-adapter.js +11 -0
  117. package/dist/earning/safe-adapter.js.map +1 -1
  118. package/dist/earning/stolas-claim.js +5 -5
  119. package/dist/earning/types.d.ts +1 -1
  120. package/dist/earning/types.js +1 -1
  121. package/dist/earning/types.js.map +1 -1
  122. package/dist/eval/eval-harness-run.d.ts +63 -0
  123. package/dist/eval/eval-harness-run.js +123 -0
  124. package/dist/eval/eval-harness-run.js.map +1 -0
  125. package/dist/eval/orchestrator.d.ts +224 -0
  126. package/dist/eval/orchestrator.js +250 -0
  127. package/dist/eval/orchestrator.js.map +1 -0
  128. package/dist/eval/paired.d.ts +68 -0
  129. package/dist/eval/paired.js +93 -0
  130. package/dist/eval/paired.js.map +1 -0
  131. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  132. package/dist/eval/resolve-slate-tasks.js +56 -0
  133. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  134. package/dist/eval/screen-discovery.d.ts +22 -0
  135. package/dist/eval/screen-discovery.js +71 -0
  136. package/dist/eval/screen-discovery.js.map +1 -0
  137. package/dist/eval/screen-progress.d.ts +41 -0
  138. package/dist/eval/screen-progress.js +60 -0
  139. package/dist/eval/screen-progress.js.map +1 -0
  140. package/dist/eval/screen-runner.d.ts +30 -0
  141. package/dist/eval/screen-runner.js +289 -0
  142. package/dist/eval/screen-runner.js.map +1 -0
  143. package/dist/eval/screen.d.ts +107 -0
  144. package/dist/eval/screen.js +159 -0
  145. package/dist/eval/screen.js.map +1 -0
  146. package/dist/eval/slope.d.ts +29 -0
  147. package/dist/eval/slope.js +46 -0
  148. package/dist/eval/slope.js.map +1 -0
  149. package/dist/eval/train-sequence.d.ts +35 -0
  150. package/dist/eval/train-sequence.js +59 -0
  151. package/dist/eval/train-sequence.js.map +1 -0
  152. package/dist/eval/wilson.d.ts +45 -0
  153. package/dist/eval/wilson.js +48 -0
  154. package/dist/eval/wilson.js.map +1 -0
  155. package/dist/events/types.d.ts +1 -1
  156. package/dist/events/types.js +1 -1
  157. package/dist/events/types.js.map +1 -1
  158. package/dist/harnesses/engine/canonical-json.js +5 -3
  159. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  160. package/dist/harnesses/engine/engine.d.ts +24 -0
  161. package/dist/harnesses/engine/engine.js +72 -9
  162. package/dist/harnesses/engine/engine.js.map +1 -1
  163. package/dist/harnesses/engine/packaging.js +1 -1
  164. package/dist/harnesses/engine/packaging.js.map +1 -1
  165. package/dist/harnesses/engine/persistence.d.ts +17 -0
  166. package/dist/harnesses/engine/persistence.js +28 -0
  167. package/dist/harnesses/engine/persistence.js.map +1 -1
  168. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  169. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  170. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  171. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  172. package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
  173. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  174. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  175. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  176. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  177. package/dist/harnesses/impls/hermes-agent/harness.d.ts +17 -3
  178. package/dist/harnesses/impls/hermes-agent/harness.js +68 -5
  179. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  180. package/dist/harnesses/impls/index.d.ts +2 -0
  181. package/dist/harnesses/impls/index.js +9 -0
  182. package/dist/harnesses/impls/index.js.map +1 -1
  183. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  184. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  185. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  186. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  187. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  188. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  189. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  190. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  191. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  192. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  193. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  194. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  195. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  196. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  197. package/dist/harnesses/impls/learner/harness.d.ts +17 -1
  198. package/dist/harnesses/impls/learner/harness.js +51 -1
  199. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  200. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  201. package/dist/harnesses/impls/learner/harvest.js +51 -1
  202. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  203. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  204. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  205. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
  206. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  207. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  208. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  209. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  210. package/dist/harnesses/readiness-registry.d.ts +10 -0
  211. package/dist/harnesses/readiness-registry.js +13 -0
  212. package/dist/harnesses/readiness-registry.js.map +1 -1
  213. package/dist/harnesses/types.d.ts +14 -0
  214. package/dist/learner/revert-decision.d.ts +16 -1
  215. package/dist/learner/revert-decision.js +38 -18
  216. package/dist/learner/revert-decision.js.map +1 -1
  217. package/dist/learner/revert-stats.d.ts +14 -0
  218. package/dist/learner/revert-stats.js +42 -0
  219. package/dist/learner/revert-stats.js.map +1 -1
  220. package/dist/local-provider-url.d.ts +3 -0
  221. package/dist/local-provider-url.js +28 -0
  222. package/dist/local-provider-url.js.map +1 -0
  223. package/dist/main.js +94 -25
  224. package/dist/main.js.map +1 -1
  225. package/dist/mcp/operator-server.js +1 -1
  226. package/dist/mcp/operator-server.js.map +1 -1
  227. package/dist/mcp/server.js +1 -1
  228. package/dist/mcp/server.js.map +1 -1
  229. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  230. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  231. package/dist/plugins/learner/hooks/session-start +30 -1
  232. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  233. package/dist/preflight/deployment-readiness.d.ts +147 -0
  234. package/dist/preflight/deployment-readiness.js +366 -0
  235. package/dist/preflight/deployment-readiness.js.map +1 -0
  236. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  237. package/dist/preflight/pidfile-liveness.js +14 -0
  238. package/dist/preflight/pidfile-liveness.js.map +1 -1
  239. package/dist/rpc/transport.d.ts +43 -5
  240. package/dist/rpc/transport.js +131 -30
  241. package/dist/rpc/transport.js.map +1 -1
  242. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  243. package/dist/solver-nets/registry.d.ts +19 -0
  244. package/dist/solver-nets/registry.js +95 -66
  245. package/dist/solver-nets/registry.js.map +1 -1
  246. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  247. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  248. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  249. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  250. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  251. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  252. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  253. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  254. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  255. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  256. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  257. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  258. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
  259. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
  260. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  261. package/dist/solver-types/index.js +2 -0
  262. package/dist/solver-types/index.js.map +1 -1
  263. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  264. package/dist/solver-types/jinn-repo-admit.js +16 -0
  265. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  266. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  267. package/dist/solver-types/jinn-repo-auto.js +163 -0
  268. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  269. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  270. package/dist/solver-types/jinn-repo-definition.js +34 -0
  271. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  272. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  273. package/dist/solver-types/jinn-repo-extract.js +32 -0
  274. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  275. package/dist/solver-types/jinn-repo.d.ts +21 -0
  276. package/dist/solver-types/jinn-repo.js +23 -0
  277. package/dist/solver-types/jinn-repo.js.map +1 -0
  278. package/dist/solver-types/learner-loop-test.js +1 -1
  279. package/dist/solver-types/learner-loop-test.js.map +1 -1
  280. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  281. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  282. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  283. package/dist/solver-types/solver-type.d.ts +8 -0
  284. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  285. package/dist/solver-types/swe-rebench-v2.js +115 -10
  286. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  287. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  288. package/dist/solvernets/launched-record-dispatcher.js +8 -1
  289. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  290. package/dist/solvernets/registry-client-erc8004.js +29 -37
  291. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  292. package/dist/solvernets/registry-client.d.ts +6 -0
  293. package/dist/solvernets/store.d.ts +1 -1
  294. package/dist/solvernets/store.js +8 -3
  295. package/dist/solvernets/store.js.map +1 -1
  296. package/dist/spend/ai-units-config.d.ts +10 -0
  297. package/dist/spend/ai-units-config.js +7 -1
  298. package/dist/spend/ai-units-config.js.map +1 -1
  299. package/dist/spend/ai-units.d.ts +51 -0
  300. package/dist/spend/ai-units.js +73 -0
  301. package/dist/spend/ai-units.js.map +1 -1
  302. package/dist/spend/record.js +12 -5
  303. package/dist/spend/record.js.map +1 -1
  304. package/dist/store/store.d.ts +91 -5
  305. package/dist/store/store.js +170 -7
  306. package/dist/store/store.js.map +1 -1
  307. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  308. package/dist/trajectory/harness-bundle-schema.js +1 -1
  309. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  310. package/dist/trajectory/schema.d.ts +1 -1
  311. package/dist/trajectory/schema.js +1 -1
  312. package/dist/trajectory/schema.js.map +1 -1
  313. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  314. package/dist/trajectory/transcript-parsers/types.js +1 -1
  315. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  316. package/dist/types/envelope.d.ts +1 -1
  317. package/dist/types/envelope.js +1 -1
  318. package/dist/types/envelope.js.map +1 -1
  319. package/dist/types/payloads/index.d.ts +1 -1
  320. package/dist/types/payloads/index.js +7 -1
  321. package/dist/types/payloads/index.js.map +1 -1
  322. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  323. package/dist/types/payloads/portfolio-v0.js +1 -1
  324. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  325. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  326. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  327. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  328. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  329. package/dist/types/payloads/prediction-v0.js +1 -1
  330. package/dist/types/payloads/prediction-v0.js.map +1 -1
  331. package/dist/types/portfolio.d.ts +1 -1
  332. package/dist/types/portfolio.js +1 -1
  333. package/dist/types/portfolio.js.map +1 -1
  334. package/dist/types/prediction-apy.d.ts +1 -1
  335. package/dist/types/prediction-apy.js +1 -1
  336. package/dist/types/prediction-apy.js.map +1 -1
  337. package/dist/types/prediction.d.ts +1 -1
  338. package/dist/types/prediction.js +1 -1
  339. package/dist/types/prediction.js.map +1 -1
  340. package/dist/types/session-provenance.d.ts +1 -1
  341. package/dist/types/session-provenance.js +1 -1
  342. package/dist/types/session-provenance.js.map +1 -1
  343. package/dist/types/task-document.d.ts +1 -1
  344. package/dist/types/task-document.js +1 -1
  345. package/dist/types/task-document.js.map +1 -1
  346. package/dist/types/task.d.ts +1 -1
  347. package/dist/types/task.js +1 -1
  348. package/dist/types/task.js.map +1 -1
  349. package/dist/types/window.d.ts +1 -1
  350. package/dist/types/window.js +1 -1
  351. package/dist/types/window.js.map +1 -1
  352. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  353. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  354. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  355. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  356. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  357. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  358. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  359. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  360. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  361. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  362. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  363. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  364. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  365. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  366. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  367. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  368. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  369. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  370. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  371. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  372. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  373. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  374. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  375. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  376. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  377. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  378. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
  379. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
  380. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  381. package/docker-compose.yml +3 -2
  382. package/package.json +23 -20
  383. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  384. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  385. package/plugins/jinn-repo-runtime/README.md +27 -0
  386. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  387. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  388. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  389. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  390. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  391. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  392. package/plugins/learner/hooks/session-start +30 -1
  393. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  394. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  395. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  396. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  397. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
@@ -0,0 +1,22 @@
1
+ /**
2
+ * jinn-repo Solution + Verdict payload schemas.
3
+ *
4
+ * Solution: the unified-diff patch the Solver's harness produced for the
5
+ * jinn-repo instance (a real merged Jinn-Network/mono PR). Mirrors the
6
+ * swe-rebench-v2 Solution shape; trajectory provenance is pinned via the
7
+ * envelope, not the payload.
8
+ *
9
+ * Verdict: the repo-native test runner's pass/fail, with an optional log
10
+ * excerpt for human inspection. The full test log is surfaced via the
11
+ * envelope's `artifacts[]` rather than as a typed payload field.
12
+ */
13
+ import { z } from 'zod/v3';
14
+ export const JinnRepoSolutionPayloadSchema = z.object({
15
+ schemaVersion: z.literal('jinn-repo-solution.v1'),
16
+ patch: z.string().min(1),
17
+ });
18
+ export const JinnRepoVerdictPayloadSchema = z.object({
19
+ schemaVersion: z.literal('jinn-repo-verdict.v1'),
20
+ passed: z.boolean(),
21
+ test_log_excerpt: z.string().optional(),
22
+ });
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  export declare const PredictionV1RestorationPayloadSchema: z.ZodObject<{
3
3
  probabilityYes: z.ZodString;
4
4
  submittedAt: z.ZodString;
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  import { DecimalProbabilitySchema, IsoDateTimeSchema } from '../prediction-v1.js';
3
3
  const Sha256Schema = z.string().regex(/^[0-9a-f]{64}$/);
4
4
  const EnvelopeRefSchema = z.object({
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  export declare const SessionDerivedExpectedArtifactsSchema: z.ZodObject<{
3
3
  finalPatchRef: z.ZodOptional<z.ZodString>;
4
4
  testSuiteRef: z.ZodOptional<z.ZodString>;
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  const HexShaSchema = z.string().regex(/^[0-9a-f]{64}$/);
3
3
  export const SessionDerivedExpectedArtifactsSchema = z.object({
4
4
  finalPatchRef: z.string().min(1).optional(),
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.2
22
22
  */
23
- import { z } from 'zod';
23
+ import { z } from 'zod/v3';
24
24
  export declare const SweRebenchV2SolutionPayloadSchema: z.ZodObject<{
25
25
  schemaVersion: z.ZodLiteral<"swe-rebench-v2-solution.v1">;
26
26
  /** Unified diff patch (git-format). */
@@ -84,7 +84,7 @@ export declare const SweRebenchV2SolutionPayloadSchema: z.ZodObject<{
84
84
  } | undefined;
85
85
  }>;
86
86
  export type SweRebenchV2SolutionPayload = z.infer<typeof SweRebenchV2SolutionPayloadSchema>;
87
- export declare const SweRebenchV2VerdictPayloadSchema: z.ZodObject<{
87
+ export declare const SweRebenchV2VerdictV1PayloadSchema: z.ZodObject<{
88
88
  schemaVersion: z.ZodLiteral<"swe-rebench-v2-verdict.v1">;
89
89
  /** Pass@1 score: 1 if the test suite passed, 0 otherwise. */
90
90
  score: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
@@ -107,4 +107,111 @@ export declare const SweRebenchV2VerdictPayloadSchema: z.ZodObject<{
107
107
  passed_match: boolean;
108
108
  evaluator_cost_usd: number;
109
109
  }>;
110
+ /**
111
+ * v2 — additive graded signal (Lever A, #1019). Superset of v1: keeps the
112
+ * binary `score`/`passed_match` (the objective) and adds the per-test counts
113
+ * the grader already computes. `gradedScore = passedCount / totalCount` is
114
+ * derived downstream, never stored, to keep one source of truth.
115
+ */
116
+ export declare const SweRebenchV2VerdictV2PayloadSchema: z.ZodEffects<z.ZodObject<{
117
+ schemaVersion: z.ZodLiteral<"swe-rebench-v2-verdict.v2">;
118
+ score: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
119
+ passed_match: z.ZodBoolean;
120
+ evaluator_cost_usd: z.ZodNumber;
121
+ /** Count of individual tests that passed in this run. */
122
+ passedCount: z.ZodNumber;
123
+ /** Total gradeable tests in this run (FAIL_TO_PASS ∪ PASS_TO_PASS as the runner reported). */
124
+ totalCount: z.ZodNumber;
125
+ }, "strip", z.ZodTypeAny, {
126
+ schemaVersion: "swe-rebench-v2-verdict.v2";
127
+ score: 0 | 1;
128
+ passed_match: boolean;
129
+ evaluator_cost_usd: number;
130
+ passedCount: number;
131
+ totalCount: number;
132
+ }, {
133
+ schemaVersion: "swe-rebench-v2-verdict.v2";
134
+ score: 0 | 1;
135
+ passed_match: boolean;
136
+ evaluator_cost_usd: number;
137
+ passedCount: number;
138
+ totalCount: number;
139
+ }>, {
140
+ schemaVersion: "swe-rebench-v2-verdict.v2";
141
+ score: 0 | 1;
142
+ passed_match: boolean;
143
+ evaluator_cost_usd: number;
144
+ passedCount: number;
145
+ totalCount: number;
146
+ }, {
147
+ schemaVersion: "swe-rebench-v2-verdict.v2";
148
+ score: 0 | 1;
149
+ passed_match: boolean;
150
+ evaluator_cost_usd: number;
151
+ passedCount: number;
152
+ totalCount: number;
153
+ }>;
154
+ /** Accept either schema version on the read path. */
155
+ export declare const SweRebenchV2VerdictPayloadSchema: z.ZodUnion<[z.ZodObject<{
156
+ schemaVersion: z.ZodLiteral<"swe-rebench-v2-verdict.v1">;
157
+ /** Pass@1 score: 1 if the test suite passed, 0 otherwise. */
158
+ score: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
159
+ /**
160
+ * Whether the actual passed/failed test set matched the expected
161
+ * `FAIL_TO_PASS ∪ PASS_TO_PASS` exactly. False if extra tests passed
162
+ * or expected tests failed unexpectedly.
163
+ */
164
+ passed_match: z.ZodBoolean;
165
+ /** Cost of running the evaluator on this Solution (USDC-equivalent). */
166
+ evaluator_cost_usd: z.ZodNumber;
167
+ }, "strip", z.ZodTypeAny, {
168
+ schemaVersion: "swe-rebench-v2-verdict.v1";
169
+ score: 0 | 1;
170
+ passed_match: boolean;
171
+ evaluator_cost_usd: number;
172
+ }, {
173
+ schemaVersion: "swe-rebench-v2-verdict.v1";
174
+ score: 0 | 1;
175
+ passed_match: boolean;
176
+ evaluator_cost_usd: number;
177
+ }>, z.ZodEffects<z.ZodObject<{
178
+ schemaVersion: z.ZodLiteral<"swe-rebench-v2-verdict.v2">;
179
+ score: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
180
+ passed_match: z.ZodBoolean;
181
+ evaluator_cost_usd: z.ZodNumber;
182
+ /** Count of individual tests that passed in this run. */
183
+ passedCount: z.ZodNumber;
184
+ /** Total gradeable tests in this run (FAIL_TO_PASS ∪ PASS_TO_PASS as the runner reported). */
185
+ totalCount: z.ZodNumber;
186
+ }, "strip", z.ZodTypeAny, {
187
+ schemaVersion: "swe-rebench-v2-verdict.v2";
188
+ score: 0 | 1;
189
+ passed_match: boolean;
190
+ evaluator_cost_usd: number;
191
+ passedCount: number;
192
+ totalCount: number;
193
+ }, {
194
+ schemaVersion: "swe-rebench-v2-verdict.v2";
195
+ score: 0 | 1;
196
+ passed_match: boolean;
197
+ evaluator_cost_usd: number;
198
+ passedCount: number;
199
+ totalCount: number;
200
+ }>, {
201
+ schemaVersion: "swe-rebench-v2-verdict.v2";
202
+ score: 0 | 1;
203
+ passed_match: boolean;
204
+ evaluator_cost_usd: number;
205
+ passedCount: number;
206
+ totalCount: number;
207
+ }, {
208
+ schemaVersion: "swe-rebench-v2-verdict.v2";
209
+ score: 0 | 1;
210
+ passed_match: boolean;
211
+ evaluator_cost_usd: number;
212
+ passedCount: number;
213
+ totalCount: number;
214
+ }>]>;
215
+ export type SweRebenchV2VerdictV1Payload = z.infer<typeof SweRebenchV2VerdictV1PayloadSchema>;
216
+ export type SweRebenchV2VerdictV2Payload = z.infer<typeof SweRebenchV2VerdictV2PayloadSchema>;
110
217
  export type SweRebenchV2VerdictPayload = z.infer<typeof SweRebenchV2VerdictPayloadSchema>;
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.2
22
22
  */
23
- import { z } from 'zod';
23
+ import { z } from 'zod/v3';
24
24
  export const SweRebenchV2SolutionPayloadSchema = z.object({
25
25
  schemaVersion: z.literal('swe-rebench-v2-solution.v1'),
26
26
  /** Unified diff patch (git-format). */
@@ -43,7 +43,7 @@ export const SweRebenchV2SolutionPayloadSchema = z.object({
43
43
  })
44
44
  .optional(),
45
45
  });
46
- export const SweRebenchV2VerdictPayloadSchema = z.object({
46
+ export const SweRebenchV2VerdictV1PayloadSchema = z.object({
47
47
  schemaVersion: z.literal('swe-rebench-v2-verdict.v1'),
48
48
  /** Pass@1 score: 1 if the test suite passed, 0 otherwise. */
49
49
  score: z.union([z.literal(0), z.literal(1)]),
@@ -56,3 +56,27 @@ export const SweRebenchV2VerdictPayloadSchema = z.object({
56
56
  /** Cost of running the evaluator on this Solution (USDC-equivalent). */
57
57
  evaluator_cost_usd: z.number().nonnegative(),
58
58
  });
59
+ /**
60
+ * v2 — additive graded signal (Lever A, #1019). Superset of v1: keeps the
61
+ * binary `score`/`passed_match` (the objective) and adds the per-test counts
62
+ * the grader already computes. `gradedScore = passedCount / totalCount` is
63
+ * derived downstream, never stored, to keep one source of truth.
64
+ */
65
+ export const SweRebenchV2VerdictV2PayloadSchema = z.object({
66
+ schemaVersion: z.literal('swe-rebench-v2-verdict.v2'),
67
+ score: z.union([z.literal(0), z.literal(1)]),
68
+ passed_match: z.boolean(),
69
+ evaluator_cost_usd: z.number().nonnegative(),
70
+ // camelCase matches schemaVersion/totalUsd elsewhere in this file and the #1019 design.
71
+ /** Count of individual tests that passed in this run. */
72
+ passedCount: z.number().int().nonnegative(),
73
+ /** Total gradeable tests in this run (FAIL_TO_PASS ∪ PASS_TO_PASS as the runner reported). */
74
+ totalCount: z.number().int().nonnegative(),
75
+ }).refine((p) => p.passedCount <= p.totalCount, {
76
+ message: 'passedCount must not exceed totalCount',
77
+ });
78
+ /** Accept either schema version on the read path. */
79
+ export const SweRebenchV2VerdictPayloadSchema = z.union([
80
+ SweRebenchV2VerdictV1PayloadSchema,
81
+ SweRebenchV2VerdictV2PayloadSchema,
82
+ ]);
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  export declare const DecimalProbabilitySchema: z.ZodString;
3
3
  export declare const IsoDateTimeSchema: z.ZodString;
4
4
  export declare const PredictionV1ClaimPolicySchema: z.ZodObject<{
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  const WindowSchema = z.object({
3
3
  startTs: z.number().int().nonnegative(),
4
4
  endTs: z.number().int().nonnegative(),
@@ -0,0 +1,4 @@
1
+ export { JINN_REPO_SCHEMA_VERSION, JinnRepoTaskSchema, } from '../jinn-repo.js';
2
+ export type { JinnRepoTask } from '../jinn-repo.js';
3
+ export { JinnRepoSolutionPayloadSchema, JinnRepoVerdictPayloadSchema, } from '../payloads/jinn-repo.js';
4
+ export type { JinnRepoSolutionPayload, JinnRepoVerdictPayload, } from '../payloads/jinn-repo.js';
@@ -0,0 +1,2 @@
1
+ export { JINN_REPO_SCHEMA_VERSION, JinnRepoTaskSchema, } from '../jinn-repo.js';
2
+ export { JinnRepoSolutionPayloadSchema, JinnRepoVerdictPayloadSchema, } from '../payloads/jinn-repo.js';
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  import type { JsonSchema } from '../json-schema.js';
3
3
  declare const ContractRoleZ: z.ZodEnum<["creator", "solver", "evaluator"]>;
4
4
  declare const CredentialRequirementZ: z.ZodObject<{
@@ -13,7 +13,7 @@
13
13
  // - No `recommendedHarnesses`, no `requiredRuntimePlugins`, no `defaultRuntimePlugins`
14
14
  // - `evaluationFunction.implementation` is BINDING (canonical evaluator harness reference)
15
15
  // - `signature: { alg: 'eip-191'; signer: 0x...; value: 0x... }`
16
- import { z } from 'zod';
16
+ import { z } from 'zod/v3';
17
17
  // JSON Schema is opaque to this validator — manifests carry user-authored
18
18
  // schemas whose internal shape we do not constrain here. Manifest readers
19
19
  // validate payloads against these schemas at task/solution/verdict handling
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Held-out task slate for the swe-rebench-v2 RL eval harness (issue #817/#820).
3
+ *
4
+ * A slate is a versioned, content-addressed set of swe-rebench-v2
5
+ * `instance_id`s RESERVED from the training pool. #817 ships the canonical
6
+ * train-stream exclusion in `client/`; the indexer (this package's consumer)
7
+ * needs the same membership to slate-scope `frozenResolvedRate` (#820 AC#1),
8
+ * but the indexer cannot import from `client/` (see
9
+ * `packages/indexer/src/handlers.ts` header). So the membership is embedded
10
+ * here, in the SDK both the indexer and clients may depend on.
11
+ *
12
+ * The artifact is embedded (not read from disk) so the SDK stays a pure,
13
+ * bundler-friendly module with no `node:fs` runtime dependency. It carries a
14
+ * self-declared content hash: the loader recomputes a sha256 over the
15
+ * canonicalised, instance-id-sorted artifact and fails loud on mismatch. This
16
+ * preserves #817's fail-loud drift guard — a hand-edit that adds or removes an
17
+ * instance without re-deriving the hash throws. It is NOT a tamper-proof
18
+ * anchor (the declared hash lives beside the data it verifies); a deliberate
19
+ * edit that also re-derives the hash passes.
20
+ *
21
+ * The embedded `instanceIds` + `hash` are kept byte-identical to the client
22
+ * artifact (`client/src/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json`)
23
+ * by a cross-source drift test. Scores are only comparable WITHIN a version; a
24
+ * slate change is a distinct version (v2, ...), never an in-place edit.
25
+ *
26
+ * Hashing mirrors `_swe-rebench-v2-held-out-slate.ts` in `client/`:
27
+ * `sha256:` + sha256(RFC 8785 canonical JSON of the normalized artifact). The
28
+ * artifact shape is flat (string scalars + a string array), so a minimal
29
+ * inlined JCS canonicalizer reproduces the client's `canonicalize`-based hash
30
+ * exactly — verified by the drift test.
31
+ */
32
+ export declare const HELD_OUT_SLATE_SCHEMA_VERSION: "held-out-slate.v1";
33
+ export interface HeldOutSlateArtifact {
34
+ schemaVersion: typeof HELD_OUT_SLATE_SCHEMA_VERSION;
35
+ solverType: string;
36
+ version: string;
37
+ generatedAt: string;
38
+ instanceIds: string[];
39
+ /** Declared content hash (sha256 over the canonical, sorted artifact). */
40
+ hash: `sha256:${string}`;
41
+ }
42
+ export interface LoadedHeldOutSlate {
43
+ version: string;
44
+ hash: `sha256:${string}`;
45
+ instanceIds: Set<string>;
46
+ }
47
+ /**
48
+ * Embedded v1 slate. Byte-identical (sans the `comment` doc field, which is not
49
+ * part of the hashed artifact) to
50
+ * `client/src/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json`.
51
+ * Guarded against drift by `test/solvernets/swe-rebench-v2-held-out-slate-cross-source.test.ts`.
52
+ */
53
+ export declare const HELD_OUT_SLATE_V1: HeldOutSlateArtifact;
54
+ export declare function hashHeldOutSlateArtifact(artifact: HeldOutSlateArtifact): `sha256:${string}`;
55
+ /**
56
+ * Load the held-out slate membership for the swe-rebench-v2 solverType at
57
+ * `version`. Recomputes the content hash and fails loud on mismatch against the
58
+ * artifact's declared `hash` (catching accidental edit-without-rehash drift —
59
+ * not deliberate tampering; see the module header). Throws for an unknown
60
+ * version (scores are only comparable within a known version).
61
+ *
62
+ * `override` is for tests only — it lets the fail-loud guard be exercised
63
+ * against a tampered copy without mutating the canonical embedded artifact.
64
+ */
65
+ export declare function loadHeldOutSlate(version: string, override?: HeldOutSlateArtifact): LoadedHeldOutSlate;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Held-out task slate for the swe-rebench-v2 RL eval harness (issue #817/#820).
3
+ *
4
+ * A slate is a versioned, content-addressed set of swe-rebench-v2
5
+ * `instance_id`s RESERVED from the training pool. #817 ships the canonical
6
+ * train-stream exclusion in `client/`; the indexer (this package's consumer)
7
+ * needs the same membership to slate-scope `frozenResolvedRate` (#820 AC#1),
8
+ * but the indexer cannot import from `client/` (see
9
+ * `packages/indexer/src/handlers.ts` header). So the membership is embedded
10
+ * here, in the SDK both the indexer and clients may depend on.
11
+ *
12
+ * The artifact is embedded (not read from disk) so the SDK stays a pure,
13
+ * bundler-friendly module with no `node:fs` runtime dependency. It carries a
14
+ * self-declared content hash: the loader recomputes a sha256 over the
15
+ * canonicalised, instance-id-sorted artifact and fails loud on mismatch. This
16
+ * preserves #817's fail-loud drift guard — a hand-edit that adds or removes an
17
+ * instance without re-deriving the hash throws. It is NOT a tamper-proof
18
+ * anchor (the declared hash lives beside the data it verifies); a deliberate
19
+ * edit that also re-derives the hash passes.
20
+ *
21
+ * The embedded `instanceIds` + `hash` are kept byte-identical to the client
22
+ * artifact (`client/src/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json`)
23
+ * by a cross-source drift test. Scores are only comparable WITHIN a version; a
24
+ * slate change is a distinct version (v2, ...), never an in-place edit.
25
+ *
26
+ * Hashing mirrors `_swe-rebench-v2-held-out-slate.ts` in `client/`:
27
+ * `sha256:` + sha256(RFC 8785 canonical JSON of the normalized artifact). The
28
+ * artifact shape is flat (string scalars + a string array), so a minimal
29
+ * inlined JCS canonicalizer reproduces the client's `canonicalize`-based hash
30
+ * exactly — verified by the drift test.
31
+ */
32
+ /// <reference types="node" />
33
+ import { createHash } from 'node:crypto';
34
+ export const HELD_OUT_SLATE_SCHEMA_VERSION = 'held-out-slate.v1';
35
+ /**
36
+ * Embedded v1 slate. Byte-identical (sans the `comment` doc field, which is not
37
+ * part of the hashed artifact) to
38
+ * `client/src/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json`.
39
+ * Guarded against drift by `test/solvernets/swe-rebench-v2-held-out-slate-cross-source.test.ts`.
40
+ */
41
+ export const HELD_OUT_SLATE_V1 = {
42
+ schemaVersion: 'held-out-slate.v1',
43
+ solverType: 'swe-rebench-v2.v1',
44
+ version: 'v1',
45
+ generatedAt: '2026-05-29T00:00:00.000Z',
46
+ hash: 'sha256:2b029de15e271d5d2de35fe6477af98aef9fdc46f357e59139179edab1a42b15',
47
+ instanceIds: [
48
+ 'ASPP__pelita-863',
49
+ 'ASPP__pelita-875',
50
+ 'AbsaOSS__generate-release-notes-207',
51
+ 'All-Hands-AI__OpenHands-11914',
52
+ 'BQSKit__bqskit-337',
53
+ 'BerriAI__litellm-14715',
54
+ 'BerriAI__litellm-15753',
55
+ 'BrianPugh__cyclopts-609',
56
+ 'carsdotcom__skelebot-280',
57
+ 'pandas-dev__pandas-60736',
58
+ ],
59
+ };
60
+ const SLATES_BY_VERSION = {
61
+ v1: HELD_OUT_SLATE_V1,
62
+ };
63
+ /**
64
+ * Minimal RFC 8785 (JCS) serialization for the flat slate artifact: object keys
65
+ * sorted by UTF-16 code-unit order, string values JSON-escaped, arrays in
66
+ * order. Reproduces the client loader's `canonicalize`-based output for this
67
+ * shape exactly (the cross-source drift test locks this against the client
68
+ * artifact's declared hash).
69
+ */
70
+ function canonicalJson(value) {
71
+ if (typeof value === 'string')
72
+ return JSON.stringify(value);
73
+ if (Array.isArray(value))
74
+ return `[${value.map(canonicalJson).join(',')}]`;
75
+ if (value !== null && typeof value === 'object') {
76
+ const keys = Object.keys(value).sort();
77
+ return `{${keys
78
+ .map((k) => `${JSON.stringify(k)}:${canonicalJson(value[k])}`)
79
+ .join(',')}}`;
80
+ }
81
+ return JSON.stringify(value);
82
+ }
83
+ /**
84
+ * The hashed projection: schema/solver/version/generatedAt + the sorted
85
+ * instanceIds. Excludes the `hash` field itself (a hash never hashes itself).
86
+ */
87
+ function normalizeHeldOutSlateArtifact(artifact) {
88
+ return {
89
+ schemaVersion: HELD_OUT_SLATE_SCHEMA_VERSION,
90
+ solverType: artifact.solverType,
91
+ version: artifact.version,
92
+ generatedAt: artifact.generatedAt,
93
+ instanceIds: [...artifact.instanceIds].sort((a, b) => a.localeCompare(b)),
94
+ };
95
+ }
96
+ export function hashHeldOutSlateArtifact(artifact) {
97
+ const canonical = canonicalJson(normalizeHeldOutSlateArtifact(artifact));
98
+ return `sha256:${createHash('sha256').update(canonical).digest('hex')}`;
99
+ }
100
+ /**
101
+ * Load the held-out slate membership for the swe-rebench-v2 solverType at
102
+ * `version`. Recomputes the content hash and fails loud on mismatch against the
103
+ * artifact's declared `hash` (catching accidental edit-without-rehash drift —
104
+ * not deliberate tampering; see the module header). Throws for an unknown
105
+ * version (scores are only comparable within a known version).
106
+ *
107
+ * `override` is for tests only — it lets the fail-loud guard be exercised
108
+ * against a tampered copy without mutating the canonical embedded artifact.
109
+ */
110
+ export function loadHeldOutSlate(version, override) {
111
+ const artifact = override ?? SLATES_BY_VERSION[version];
112
+ if (!artifact) {
113
+ throw new Error(`held-out slate not found for swe-rebench-v2 version=${version}`);
114
+ }
115
+ if (artifact.version !== version) {
116
+ throw new Error(`held-out slate version mismatch: artifact declares ${artifact.version}, requested ${version}`);
117
+ }
118
+ const computed = hashHeldOutSlateArtifact(artifact);
119
+ if (artifact.hash !== computed) {
120
+ throw new Error(`held-out slate hash mismatch for swe-rebench-v2 ${version}: declared ${artifact.hash}, computed ${computed} (artifact was edited without re-deriving the hash)`);
121
+ }
122
+ return { version: artifact.version, hash: computed, instanceIds: new Set(artifact.instanceIds) };
123
+ }
@@ -1,4 +1,4 @@
1
1
  export { SweRebenchV2LanguageSchema, SweRebenchV2TaskSchema, } from '../swe-rebench-v2.js';
2
2
  export type { SweRebenchV2Task } from '../swe-rebench-v2.js';
3
- export { SweRebenchV2SolutionPayloadSchema, SweRebenchV2VerdictPayloadSchema, } from '../payloads/swe-rebench-v2.js';
4
- export type { SweRebenchV2SolutionPayload, SweRebenchV2VerdictPayload, } from '../payloads/swe-rebench-v2.js';
3
+ export { SweRebenchV2SolutionPayloadSchema, SweRebenchV2VerdictPayloadSchema, SweRebenchV2VerdictV2PayloadSchema, } from '../payloads/swe-rebench-v2.js';
4
+ export type { SweRebenchV2SolutionPayload, SweRebenchV2VerdictPayload, SweRebenchV2VerdictV2Payload, } from '../payloads/swe-rebench-v2.js';
@@ -1,2 +1,2 @@
1
1
  export { SweRebenchV2LanguageSchema, SweRebenchV2TaskSchema, } from '../swe-rebench-v2.js';
2
- export { SweRebenchV2SolutionPayloadSchema, SweRebenchV2VerdictPayloadSchema, } from '../payloads/swe-rebench-v2.js';
2
+ export { SweRebenchV2SolutionPayloadSchema, SweRebenchV2VerdictPayloadSchema, SweRebenchV2VerdictV2PayloadSchema, } from '../payloads/swe-rebench-v2.js';
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.3
7
7
  */
8
- import { z } from 'zod';
8
+ import { z } from 'zod/v3';
9
9
  export declare const SweRebenchV2LanguageSchema: z.ZodEnum<["python", "javascript", "typescript", "go", "c", "cpp", "cs", "java", "rust", "dart"]>;
10
10
  export declare const SweRebenchV2TaskSchema: z.ZodObject<{
11
11
  schemaVersion: z.ZodLiteral<"swe-rebench-v2.v1">;
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.3
7
7
  */
8
- import { z } from 'zod';
8
+ import { z } from 'zod/v3';
9
9
  export const SweRebenchV2LanguageSchema = z.enum([
10
10
  'python', 'javascript', 'typescript', 'go',
11
11
  'c', 'cpp', 'cs', 'java', 'rust', 'dart',
@@ -31,13 +31,21 @@
31
31
  "import": "./dist/solvernets/swe-rebench-v2.js",
32
32
  "types": "./dist/solvernets/swe-rebench-v2.d.ts"
33
33
  },
34
+ "./solvernets/jinn-repo": {
35
+ "import": "./dist/solvernets/jinn-repo.js",
36
+ "types": "./dist/solvernets/jinn-repo.d.ts"
37
+ },
38
+ "./solvernets/swe-rebench-v2-held-out-slate": {
39
+ "import": "./dist/solvernets/swe-rebench-v2-held-out-slate.js",
40
+ "types": "./dist/solvernets/swe-rebench-v2-held-out-slate.d.ts"
41
+ },
34
42
  "./checkpoint": {
35
43
  "import": "./dist/checkpoint.js",
36
44
  "types": "./dist/checkpoint.d.ts"
37
45
  }
38
46
  },
39
47
  "dependencies": {
40
- "zod": "^3.22.0",
48
+ "zod": "^4.4.3",
41
49
  "zod-to-json-schema": "^3.23.0"
42
50
  }
43
51
  }
@@ -33,8 +33,9 @@ services:
33
33
  volumes:
34
34
  # Persistent daemon state: database, keystore, and earning progress
35
35
  - jinn-data:/data
36
- # Persistent authentication state: stores Claude's OAuth token
37
- - jinn-claude-state:/root/.claude
36
+ # Persistent authentication state: stores Claude's OAuth token. The image
37
+ # now runs as the non-root `node` user, so file-auth lives at /home/node/.claude.
38
+ - jinn-claude-state:/home/node/.claude
38
39
  command: ["run"]
39
40
 
40
41
  volumes:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jinn-network/client",
3
- "version": "0.1.8",
3
+ "version": "0.1.9-canary.144d87d2",
4
4
  "description": "Jinn protocol client — headless daemon for the restoration training loop",
5
5
  "type": "module",
6
6
  "packageManager": "yarn@4.13.0",
@@ -41,14 +41,17 @@
41
41
  "scripts": {
42
42
  "postinstall": "node dist/scripts/fix-node-pty.mjs 2>/dev/null || node scripts/fix-node-pty.mjs 2>/dev/null || true",
43
43
  "e2e:cold-start-builder": "vitest run --config vitest.acceptance.config.ts",
44
- "e2e:full-cycle": "tsx test/e2e/learner-full-cycle.ts",
45
- "e2e:full-cycle-swe-rebench-v2": "tsx test/e2e/learner-full-cycle-swe-rebench-v2.ts",
44
+ "e2e:full-cycle": "yarn build:sdk && tsx test/e2e/learner-full-cycle.ts",
45
+ "e2e:full-cycle-swe-rebench-v2": "yarn build:sdk && tsx test/e2e/learner-full-cycle-swe-rebench-v2.ts",
46
+ "e2e:train-arm-slope": "tsx test/e2e/train-arm-slope-swe-rebench-v2.ts",
47
+ "e2e:train-arm-efficacy": "tsx test/e2e/train-arm-efficacy-swe-rebench-v2.ts",
46
48
  "jinn": "tsx src/bin/jinn.ts",
47
49
  "dev": "yarn build && node dist/bin/jinn.js",
48
50
  "build:sdk": "yarn --cwd ../packages/sdk install --immutable && yarn --cwd ../packages/sdk build",
49
- "build": "yarn build:sdk && yarn build:spa && tsc && chmod +x dist/bin/jinn.js && rm -rf dist/dashboard && mkdir -p dist/dashboard && cp -R src/dashboard/spa/dist/. dist/dashboard/ && rm -rf dist/templates && cp -R templates dist/templates && rm -rf dist/plugins/learner && mkdir -p dist/plugins && cp -R plugins/learner dist/plugins/learner && mkdir -p dist/scripts && cp scripts/fix-node-pty.mjs scripts/swe-rebench-v2-seed-pool.json scripts/swe-rebench-v2-known-bad.json scripts/swe-rebench-v2-pytest-missing.json dist/scripts/ && node scripts/vendor-sdk.mjs && node scripts/write-dist-build-meta.mjs",
51
+ "build": "yarn build:sdk && yarn build:spa && tsc && chmod +x dist/bin/jinn.js && rm -rf dist/dashboard && mkdir -p dist/dashboard && cp -R src/dashboard/spa/dist/. dist/dashboard/ && rm -rf dist/templates && cp -R templates dist/templates && rm -rf dist/plugins/learner && mkdir -p dist/plugins && cp -R plugins/learner dist/plugins/learner && mkdir -p dist/scripts && cp scripts/fix-node-pty.mjs scripts/swe-rebench-v2-seed-pool.json scripts/swe-rebench-v2-known-bad.json scripts/swe-rebench-v2-pytest-missing.json dist/scripts/ && mkdir -p dist/solver-types/slates && cp src/solver-types/slates/*.json dist/solver-types/slates/ && node scripts/vendor-sdk.mjs && node scripts/write-dist-build-meta.mjs",
50
52
  "typecheck": "yarn build:sdk && tsc --noEmit",
51
53
  "test": "yarn build:sdk && vitest run",
54
+ "test:hermetic": "yarn build:sdk && vitest run --config vitest.hermetic.config.ts",
52
55
  "lint:no-late-mount": "node scripts/check-no-late-route-mount.mjs",
53
56
  "test:watch": "vitest",
54
57
  "test:claude-prediction": "yarn build && JINN_TEST_CLAUDE_PREDICTION=1 vitest run test/harnesses/impls/claude-mcp-prediction/isolation.test.ts",
@@ -62,12 +65,10 @@
62
65
  "release:tier-1": "tsx scripts/release/run-tier-1.ts",
63
66
  "release:tier-1:T1.1": "vitest run --config vitest.release-tier-1.config.ts test/release/tier-1/T1.1-bootstrap-fresh-anvil.test.ts",
64
67
  "release:tier-1:T1.2": "vitest run --config vitest.release-tier-1.config.ts test/release/tier-1/T1.2-harness-readiness-contract.test.ts",
65
- "release:tier-1:T1.3": "vitest run test/release/tier-1/T1.3-indexer-round-trip.test.ts",
66
68
  "release:tier-1:T1.4": "playwright test --config=playwright.config.ts test/dashboard/release-prep/spa-route-smoke.e2e.test.ts",
67
69
  "release:tier-2": "tsx scripts/release/run-tier-2.ts",
68
70
  "release:tier-2:T2.1": "vitest run test/release/tier-2/T2.1-cross-op-donation.test.ts",
69
71
  "release:tier-2:T2.2": "vitest run test/release/tier-2/T2.2-producer-evaluator.test.ts",
70
- "release:tier-2:T2.3": "playwright test --config=playwright.config.ts test/dashboard/multi-op/launcher-join-flow.e2e.test.ts",
71
72
  "release:tier-3": "tsx scripts/release/run-tier-3.ts",
72
73
  "release:tier-3:T3.1": "JINN_T31_REAL=1 vitest run test/release/tier-3/T3.1-producer-evaluator-real.test.ts",
73
74
  "release:donation-consumption": "node dist/scripts/donation-consumption-acceptance.js",
@@ -103,6 +104,8 @@
103
104
  "dev:spa": "yarn workspace @jinn-network/operator-spa dev",
104
105
  "e2e:spa": "yarn build && playwright test --config=playwright.config.ts test/dashboard/spa.e2e.test.ts",
105
106
  "e2e:solvernet-flow": "yarn build && playwright test --config=playwright.config.ts test/dashboard/solvernet-flow.e2e.test.ts",
107
+ "e2e:join": "yarn build && playwright test --config=playwright.config.ts test/dashboard/join.e2e.test.ts",
108
+ "e2e:app-flow": "yarn build && playwright test --config=playwright.config.ts test/dashboard/solvernet-flow.e2e.test.ts test/dashboard/join.e2e.test.ts",
106
109
  "e2e:funding-sequence": "yarn build && playwright test --config=playwright.config.ts test/dashboard/funding-sequence.e2e.test.ts",
107
110
  "e2e:dashboard": "yarn build && playwright test --config=playwright.config.ts",
108
111
  "e2e:donation": "vitest run test/smoke/donation-mode-smoke.test.ts test/smoke/donation-ipfs-http-smoke.test.ts"
@@ -123,24 +126,24 @@
123
126
  "@opentelemetry/api": "^1.9.1",
124
127
  "@opentelemetry/core": "^2.7.1",
125
128
  "@opentelemetry/exporter-trace-otlp-grpc": "^0.218.0",
126
- "@opentelemetry/exporter-trace-otlp-http": "^0.217.0",
129
+ "@opentelemetry/exporter-trace-otlp-http": "^0.218.0",
127
130
  "@opentelemetry/resources": "^2.7.1",
128
- "@opentelemetry/sdk-node": "^0.217.0",
131
+ "@opentelemetry/sdk-node": "^0.219.0",
129
132
  "@opentelemetry/sdk-trace-base": "^2.7.1",
130
- "@safe-global/protocol-kit": "^6.1.2",
133
+ "@safe-global/protocol-kit": "^7.2.0",
131
134
  "@safe-global/types-kit": "^3.0.0",
132
- "@scure/bip32": "^1.7.0",
135
+ "@scure/bip32": "^2.2.0",
133
136
  "@scure/bip39": "^1.4.0",
134
137
  "@slicekit/erc8128": "^0.3.3",
135
- "@x402/core": "^2.9.0",
136
- "@x402/evm": "^2.9.0",
137
- "@x402/fetch": "^2.9.0",
138
- "@x402/hono": "^2.9.0",
138
+ "@x402/core": "^2.14.0",
139
+ "@x402/evm": "^2.14.0",
140
+ "@x402/fetch": "^2.14.0",
141
+ "@x402/hono": "^2.14.0",
139
142
  "ajv": "^8.20.0",
140
143
  "ajv-formats": "^3.0.1",
141
- "better-sqlite3": "^11.0.0",
144
+ "better-sqlite3": "^12.10.0",
142
145
  "bs58": "^6.0.0",
143
- "canonicalize": "^2.0.0",
146
+ "canonicalize": "^3.0.0",
144
147
  "chokidar": "^5.0.0",
145
148
  "dotenv": "^17.4.1",
146
149
  "hono": "^4.12.10",
@@ -151,7 +154,7 @@
151
154
  "viem": "^2.0.0",
152
155
  "ws": "^8.20.0",
153
156
  "yaml": "^2.8.4",
154
- "zod": "^3.22.0"
157
+ "zod": "^4.4.3"
155
158
  },
156
159
  "optionalDependencies": {
157
160
  "@coinbase/cdp-sdk": "^1.48.2"
@@ -160,11 +163,11 @@
160
163
  "@jinn-network/sdk": "portal:../packages/sdk",
161
164
  "@playwright/test": "^1.59.1",
162
165
  "@types/better-sqlite3": "^7.6.0",
163
- "@types/node": "^20.0.0",
166
+ "@types/node": "^25.9.1",
164
167
  "@types/semver": "^7.7.1",
165
168
  "@types/ws": "^8.18.1",
166
169
  "tsx": "^4.0.0",
167
- "typescript": "^5.5.0",
168
- "vitest": "^2.0.0"
170
+ "typescript": "^6.0.3",
171
+ "vitest": "^4.1.8"
169
172
  }
170
173
  }