@jinn-network/client 0.1.6 → 0.1.7-canary.17a8ecb8

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 (351) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +67 -1
  3. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
  4. package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
  5. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
  6. package/dist/adapters/mech/adapter.d.ts +38 -1
  7. package/dist/adapters/mech/adapter.js +268 -57
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +17 -4
  10. package/dist/adapters/mech/contracts.js +8 -2
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +20 -0
  13. package/dist/adapters/mech/safe-revert.js +12 -4
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.d.ts +6 -2
  16. package/dist/adapters/mech/safe.js +32 -11
  17. package/dist/adapters/mech/safe.js.map +1 -1
  18. package/dist/adapters/mech/types.d.ts +6 -1
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.d.ts +1 -0
  21. package/dist/adapters/mech/verdict-code.js +18 -0
  22. package/dist/adapters/mech/verdict-code.js.map +1 -1
  23. package/dist/api/activity-events-endpoint.d.ts +14 -0
  24. package/dist/api/activity-events-endpoint.js +59 -0
  25. package/dist/api/activity-events-endpoint.js.map +1 -0
  26. package/dist/api/admin-endpoint.d.ts +15 -3
  27. package/dist/api/admin-endpoint.js +24 -2
  28. package/dist/api/admin-endpoint.js.map +1 -1
  29. package/dist/api/bootstrap-endpoint.d.ts +1 -2
  30. package/dist/api/bootstrap-endpoint.js +49 -1
  31. package/dist/api/bootstrap-endpoint.js.map +1 -1
  32. package/dist/api/codex-doctor-endpoint.d.ts +73 -0
  33. package/dist/api/codex-doctor-endpoint.js +177 -0
  34. package/dist/api/codex-doctor-endpoint.js.map +1 -0
  35. package/dist/api/discovery-endpoint.d.ts +1 -0
  36. package/dist/api/discovery-endpoint.js +26 -0
  37. package/dist/api/discovery-endpoint.js.map +1 -1
  38. package/dist/api/fleet-build.d.ts +1 -0
  39. package/dist/api/fleet-build.js +2 -1
  40. package/dist/api/fleet-build.js.map +1 -1
  41. package/dist/api/gather-status.d.ts +14 -0
  42. package/dist/api/gather-status.js +494 -19
  43. package/dist/api/gather-status.js.map +1 -1
  44. package/dist/api/hermes-doctor-endpoint.d.ts +117 -0
  45. package/dist/api/hermes-doctor-endpoint.js +229 -23
  46. package/dist/api/hermes-doctor-endpoint.js.map +1 -1
  47. package/dist/api/launcher-status.d.ts +22 -17
  48. package/dist/api/launcher-status.js +13 -11
  49. package/dist/api/launcher-status.js.map +1 -1
  50. package/dist/api/launcher-tasks.d.ts +1 -1
  51. package/dist/api/launcher-tasks.js +12 -8
  52. package/dist/api/launcher-tasks.js.map +1 -1
  53. package/dist/api/portfolio-v0-build.d.ts +10 -0
  54. package/dist/api/portfolio-v0-build.js +24 -5
  55. package/dist/api/portfolio-v0-build.js.map +1 -1
  56. package/dist/api/prediction-v1-build.d.ts +10 -0
  57. package/dist/api/prediction-v1-build.js +7 -1
  58. package/dist/api/prediction-v1-build.js.map +1 -1
  59. package/dist/api/server.d.ts +31 -1
  60. package/dist/api/server.js +72 -1
  61. package/dist/api/server.js.map +1 -1
  62. package/dist/api/setup-endpoints.d.ts +16 -0
  63. package/dist/api/setup-endpoints.js +89 -135
  64. package/dist/api/setup-endpoints.js.map +1 -1
  65. package/dist/api/setup-retry-endpoint.d.ts +19 -0
  66. package/dist/api/setup-retry-endpoint.js +32 -0
  67. package/dist/api/setup-retry-endpoint.js.map +1 -0
  68. package/dist/api/solvernets-endpoints.d.ts +8 -0
  69. package/dist/api/solvernets-endpoints.js +71 -43
  70. package/dist/api/solvernets-endpoints.js.map +1 -1
  71. package/dist/api/status-build.d.ts +112 -0
  72. package/dist/api/status-build.js +98 -18
  73. package/dist/api/status-build.js.map +1 -1
  74. package/dist/api/task-run-routing.d.ts +7 -0
  75. package/dist/api/task-run-routing.js +12 -0
  76. package/dist/api/task-run-routing.js.map +1 -0
  77. package/dist/api/task-runs-build.d.ts +21 -0
  78. package/dist/api/task-runs-build.js +14 -1
  79. package/dist/api/task-runs-build.js.map +1 -1
  80. package/dist/build-info.json +4 -4
  81. package/dist/build-meta.json +1 -1
  82. package/dist/chain-read-errors.d.ts +10 -0
  83. package/dist/chain-read-errors.js +15 -0
  84. package/dist/chain-read-errors.js.map +1 -1
  85. package/dist/cli/commands/auth.js +1 -1
  86. package/dist/cli/commands/auth.js.map +1 -1
  87. package/dist/cli/commands/create.js +3 -2
  88. package/dist/cli/commands/create.js.map +1 -1
  89. package/dist/cli/commands/doctor.d.ts +2 -0
  90. package/dist/cli/commands/doctor.js +2 -0
  91. package/dist/cli/commands/doctor.js.map +1 -1
  92. package/dist/cli/commands/rewards.js +11 -7
  93. package/dist/cli/commands/rewards.js.map +1 -1
  94. package/dist/cli/commands/solver-nets.js +101 -15
  95. package/dist/cli/commands/solver-nets.js.map +1 -1
  96. package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
  97. package/dist/cli/commands/solver-plugins-block.js +118 -0
  98. package/dist/cli/commands/solver-plugins-block.js.map +1 -0
  99. package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
  100. package/dist/cli/commands/solver-plugins-feedback.js +262 -0
  101. package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
  102. package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
  103. package/dist/cli/commands/solver-plugins-read.js +259 -0
  104. package/dist/cli/commands/solver-plugins-read.js.map +1 -0
  105. package/dist/cli/commands/solver-plugins.d.ts +35 -0
  106. package/dist/cli/commands/solver-plugins.js +399 -2
  107. package/dist/cli/commands/solver-plugins.js.map +1 -1
  108. package/dist/cli/commands/status.js +1 -1
  109. package/dist/cli/commands/status.js.map +1 -1
  110. package/dist/cli/commands/tasks.js +101 -11
  111. package/dist/cli/commands/tasks.js.map +1 -1
  112. package/dist/cli/commands/update.d.ts +10 -0
  113. package/dist/cli/commands/update.js +36 -0
  114. package/dist/cli/commands/update.js.map +1 -1
  115. package/dist/cli/introspection-context.js +5 -0
  116. package/dist/cli/introspection-context.js.map +1 -1
  117. package/dist/cli/task-native-readiness.d.ts +10 -1
  118. package/dist/cli/task-native-readiness.js +30 -6
  119. package/dist/cli/task-native-readiness.js.map +1 -1
  120. package/dist/config.d.ts +273 -235
  121. package/dist/config.js +305 -114
  122. package/dist/config.js.map +1 -1
  123. package/dist/daemon/checkpoint-loop.d.ts +48 -0
  124. package/dist/daemon/checkpoint-loop.js +76 -0
  125. package/dist/daemon/checkpoint-loop.js.map +1 -0
  126. package/dist/daemon/creator.d.ts +1 -1
  127. package/dist/daemon/creator.js +7 -3
  128. package/dist/daemon/creator.js.map +1 -1
  129. package/dist/daemon/daemon.d.ts +22 -0
  130. package/dist/daemon/daemon.js +156 -23
  131. package/dist/daemon/daemon.js.map +1 -1
  132. package/dist/daemon/eviction-loop.d.ts +40 -0
  133. package/dist/daemon/eviction-loop.js +67 -0
  134. package/dist/daemon/eviction-loop.js.map +1 -0
  135. package/dist/daemon/gate-logger.d.ts +9 -0
  136. package/dist/daemon/gate-logger.js +2 -0
  137. package/dist/daemon/gate-logger.js.map +1 -0
  138. package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
  139. package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
  140. package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
  141. package/dist/daemon/jinn-claim-loop.d.ts +24 -17
  142. package/dist/daemon/jinn-claim-loop.js +77 -23
  143. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  144. package/dist/daemon/readiness-gate.d.ts +1 -4
  145. package/dist/daemon/readiness-gate.js.map +1 -1
  146. package/dist/daemon/skip-log-dedup.d.ts +69 -0
  147. package/dist/daemon/skip-log-dedup.js +106 -0
  148. package/dist/daemon/skip-log-dedup.js.map +1 -0
  149. package/dist/daemon/spend-cap-gate.d.ts +40 -0
  150. package/dist/daemon/spend-cap-gate.js +46 -0
  151. package/dist/daemon/spend-cap-gate.js.map +1 -0
  152. package/dist/dashboard/assets/index-8yHQgi7p.js +345 -0
  153. package/dist/dashboard/assets/index-BOBhJ76-.css +32 -0
  154. package/dist/dashboard/index.html +2 -2
  155. package/dist/discovery/factory.d.ts +17 -5
  156. package/dist/discovery/factory.js +46 -18
  157. package/dist/discovery/factory.js.map +1 -1
  158. package/dist/discovery/http.js +142 -3
  159. package/dist/discovery/http.js.map +1 -1
  160. package/dist/discovery/onchain.d.ts +5 -0
  161. package/dist/discovery/onchain.js +407 -15
  162. package/dist/discovery/onchain.js.map +1 -1
  163. package/dist/discovery/types.d.ts +45 -1
  164. package/dist/discovery/types.js +8 -10
  165. package/dist/discovery/types.js.map +1 -1
  166. package/dist/discovery/with-fallback.d.ts +7 -0
  167. package/dist/discovery/with-fallback.js +10 -0
  168. package/dist/discovery/with-fallback.js.map +1 -1
  169. package/dist/earning/bootstrap.d.ts +92 -1
  170. package/dist/earning/bootstrap.js +203 -63
  171. package/dist/earning/bootstrap.js.map +1 -1
  172. package/dist/earning/contracts.d.ts +14 -0
  173. package/dist/earning/contracts.js +17 -5
  174. package/dist/earning/contracts.js.map +1 -1
  175. package/dist/earning/funding-plan.js +27 -18
  176. package/dist/earning/funding-plan.js.map +1 -1
  177. package/dist/earning/jinn-rewards.d.ts +46 -0
  178. package/dist/earning/jinn-rewards.js +32 -0
  179. package/dist/earning/jinn-rewards.js.map +1 -1
  180. package/dist/earning/safe-adapter.d.ts +2 -0
  181. package/dist/earning/safe-adapter.js +37 -11
  182. package/dist/earning/safe-adapter.js.map +1 -1
  183. package/dist/earning/store.d.ts +8 -0
  184. package/dist/earning/store.js.map +1 -1
  185. package/dist/earning/testnet-setup-migration.d.ts +12 -0
  186. package/dist/earning/testnet-setup-migration.js +27 -1
  187. package/dist/earning/testnet-setup-migration.js.map +1 -1
  188. package/dist/earning/types.d.ts +21 -6
  189. package/dist/earning/viem-clients.d.ts +11 -4
  190. package/dist/earning/viem-clients.js +14 -5
  191. package/dist/earning/viem-clients.js.map +1 -1
  192. package/dist/erc8004/reputation.d.ts +8 -0
  193. package/dist/erc8004/reputation.js +22 -3
  194. package/dist/erc8004/reputation.js.map +1 -1
  195. package/dist/events/types.d.ts +2 -2
  196. package/dist/harnesses/cost-estimates.d.ts +145 -0
  197. package/dist/harnesses/cost-estimates.js +297 -0
  198. package/dist/harnesses/cost-estimates.js.map +1 -0
  199. package/dist/harnesses/engine/engine.d.ts +72 -0
  200. package/dist/harnesses/engine/engine.js +118 -8
  201. package/dist/harnesses/engine/engine.js.map +1 -1
  202. package/dist/harnesses/engine/persistence.d.ts +51 -1
  203. package/dist/harnesses/engine/persistence.js +118 -5
  204. package/dist/harnesses/engine/persistence.js.map +1 -1
  205. package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
  206. package/dist/harnesses/engine/work-dir-reaper.js +100 -0
  207. package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
  208. package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
  209. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  210. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
  211. package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
  212. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  213. package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
  214. package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
  215. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  216. package/dist/harnesses/impls/index.d.ts +7 -0
  217. package/dist/harnesses/impls/index.js +16 -1
  218. package/dist/harnesses/impls/index.js.map +1 -1
  219. package/dist/harnesses/impls/learner/harness.d.ts +38 -4
  220. package/dist/harnesses/impls/learner/harness.js +96 -2
  221. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  222. package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
  223. package/dist/harnesses/impls/learner/plugin-path.js +35 -15
  224. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  225. package/dist/harnesses/impls/learner/types.d.ts +11 -0
  226. package/dist/harnesses/impls/stub.d.ts +58 -0
  227. package/dist/harnesses/impls/stub.js +89 -0
  228. package/dist/harnesses/impls/stub.js.map +1 -0
  229. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
  230. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
  231. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  232. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
  233. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
  234. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  235. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +88 -4
  236. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
  237. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  238. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
  239. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
  240. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  241. package/dist/harnesses/readiness-registry.js +9 -1
  242. package/dist/harnesses/readiness-registry.js.map +1 -1
  243. package/dist/main.js +413 -111
  244. package/dist/main.js.map +1 -1
  245. package/dist/observability/emit-event.d.ts +3 -2
  246. package/dist/observability/emit-event.js +22 -1
  247. package/dist/observability/emit-event.js.map +1 -1
  248. package/dist/operator-errors.d.ts +7 -0
  249. package/dist/operator-errors.js +13 -1
  250. package/dist/operator-errors.js.map +1 -1
  251. package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
  252. package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
  253. package/dist/plugins/learner/AGENTS.md +40 -0
  254. package/dist/plugins/learner/CLAUDE.md +33 -0
  255. package/dist/plugins/learner/README.md +59 -0
  256. package/dist/plugins/learner/hooks/hooks.json +16 -0
  257. package/dist/plugins/learner/hooks/session-start +38 -0
  258. package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
  259. package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
  260. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
  261. package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
  262. package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
  263. package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
  264. package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
  265. package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
  266. package/dist/preflight/rpc-network.d.ts +40 -0
  267. package/dist/preflight/rpc-network.js +67 -1
  268. package/dist/preflight/rpc-network.js.map +1 -1
  269. package/dist/restart-daemon.d.ts +90 -0
  270. package/dist/restart-daemon.js +95 -0
  271. package/dist/restart-daemon.js.map +1 -0
  272. package/dist/rpc/transport.d.ts +109 -0
  273. package/dist/rpc/transport.js +220 -0
  274. package/dist/rpc/transport.js.map +1 -0
  275. package/dist/scripts/donation-consumption-acceptance.js +7 -28
  276. package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
  277. package/dist/setup/halt-mode.d.ts +14 -0
  278. package/dist/setup/halt-mode.js +17 -0
  279. package/dist/setup/halt-mode.js.map +1 -0
  280. package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
  281. package/dist/solver-nets/prediction-operator-ux.js +90 -47
  282. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  283. package/dist/solver-nets/registry.d.ts +20 -1
  284. package/dist/solver-nets/registry.js +38 -25
  285. package/dist/solver-nets/registry.js.map +1 -1
  286. package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
  287. package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
  288. package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
  289. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
  290. package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
  291. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
  292. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
  293. package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
  294. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  295. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +94 -1
  296. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +305 -39
  297. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  298. package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
  299. package/dist/solver-types/swe-rebench-v2-auto.js +45 -20
  300. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  301. package/dist/solver-types/swe-rebench-v2.d.ts +13 -2
  302. package/dist/solver-types/swe-rebench-v2.js +237 -95
  303. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  304. package/dist/solvernets/daemon-init.d.ts +10 -2
  305. package/dist/solvernets/daemon-init.js +22 -2
  306. package/dist/solvernets/daemon-init.js.map +1 -1
  307. package/dist/solvernets/launched-record-dispatcher.js +35 -7
  308. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  309. package/dist/solvernets/store.d.ts +5 -0
  310. package/dist/solvernets/store.js +1 -0
  311. package/dist/solvernets/store.js.map +1 -1
  312. package/dist/spend/credential.d.ts +8 -0
  313. package/dist/spend/credential.js +30 -0
  314. package/dist/spend/credential.js.map +1 -0
  315. package/dist/spend/daemon-config.d.ts +13 -0
  316. package/dist/spend/daemon-config.js +24 -0
  317. package/dist/spend/daemon-config.js.map +1 -0
  318. package/dist/spend/pricing.d.ts +16 -0
  319. package/dist/spend/pricing.js +26 -0
  320. package/dist/spend/pricing.js.map +1 -0
  321. package/dist/spend/record.d.ts +13 -0
  322. package/dist/spend/record.js +30 -0
  323. package/dist/spend/record.js.map +1 -0
  324. package/dist/spend/usage.d.ts +27 -0
  325. package/dist/spend/usage.js +113 -0
  326. package/dist/spend/usage.js.map +1 -0
  327. package/dist/store/store.d.ts +43 -0
  328. package/dist/store/store.js +236 -7
  329. package/dist/store/store.js.map +1 -1
  330. package/dist/tasks/sources.d.ts +18 -1
  331. package/dist/tasks/sources.js +33 -5
  332. package/dist/tasks/sources.js.map +1 -1
  333. package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
  334. package/dist/tx-retry.d.ts +166 -19
  335. package/dist/tx-retry.js +310 -32
  336. package/dist/tx-retry.js.map +1 -1
  337. package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
  338. package/dist/types/payloads/prediction-v0.d.ts +5 -5
  339. package/dist/types/task-document.d.ts +392 -0
  340. package/dist/types/task-document.js +10 -0
  341. package/dist/types/task-document.js.map +1 -1
  342. package/dist/types/task.d.ts +28 -0
  343. package/dist/util/extract-tx-hash.d.ts +14 -0
  344. package/dist/util/extract-tx-hash.js +19 -0
  345. package/dist/util/extract-tx-hash.js.map +1 -0
  346. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
  347. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
  348. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
  349. package/package.json +30 -12
  350. package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
  351. package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
@@ -49,6 +49,26 @@ export interface LoadedSolverNet {
49
49
  };
50
50
  }
51
51
  export declare function taskRoleForOperatorRole(role: SolverNetOperatorRole): SolverNetTaskRole | undefined;
52
+ export declare function rolesFromJoinedConfig(net: JoinedSolverNetConfig): SolverNetOperatorRole[];
53
+ /**
54
+ * Format a joined-entry contract back into the `<id>.<version>` solverType
55
+ * string the runtime uses for dispatch. Returns `undefined` when the joined
56
+ * entry has no contract (mid-migration synthesized entries can land here).
57
+ */
58
+ export declare function solverTypeFromJoinedContract(net: Pick<JoinedSolverNetConfig, 'contract'>): string | undefined;
59
+ /**
60
+ * Operator-facing display name for a joined SolverNet — the registry
61
+ * `name` field if present, otherwise the manifest CID. Mirrors the same
62
+ * resolution the registry uses when registering entries.
63
+ */
64
+ export declare function joinedDisplayName(cid: string, net: Pick<JoinedSolverNetConfig, 'name'>): string;
65
+ /**
66
+ * Find a joined SolverNet entry by its operator-facing display name. The
67
+ * lookup also matches against the manifest CID so callers that resolve a
68
+ * net by either identifier (legacy short-name or post-join CID) keep
69
+ * working. Returns the matched entry, or `undefined` if no match.
70
+ */
71
+ export declare function findJoinedByName(joinedSolverNets: Record<string, JoinedSolverNetConfig> | undefined, needle: string): JoinedSolverNetConfig | undefined;
52
72
  export declare class SolverNetRegistry {
53
73
  private readonly nets;
54
74
  register(net: LoadedSolverNet): void;
@@ -59,6 +79,5 @@ export declare class SolverNetRegistry {
59
79
  claudeModelSelections(): Record<string, string>;
60
80
  }
61
81
  export declare function loadSolverNets(config: {
62
- solverNets: Record<string, SolverNetConfig>;
63
82
  joinedSolverNets?: Record<string, JoinedSolverNetConfig>;
64
83
  }): Promise<SolverNetRegistry>;
@@ -20,7 +20,7 @@ function rolesFromConfig(net) {
20
20
  return Array.from(new Set(net.roles));
21
21
  return ['solving'];
22
22
  }
23
- function rolesFromJoinedConfig(net) {
23
+ export function rolesFromJoinedConfig(net) {
24
24
  const roles = [];
25
25
  for (const role of net.roles) {
26
26
  if (role === 'solver')
@@ -30,6 +30,41 @@ function rolesFromJoinedConfig(net) {
30
30
  }
31
31
  return Array.from(new Set(roles));
32
32
  }
33
+ /**
34
+ * Format a joined-entry contract back into the `<id>.<version>` solverType
35
+ * string the runtime uses for dispatch. Returns `undefined` when the joined
36
+ * entry has no contract (mid-migration synthesized entries can land here).
37
+ */
38
+ export function solverTypeFromJoinedContract(net) {
39
+ if (!net.contract)
40
+ return undefined;
41
+ return `${net.contract.id}.${net.contract.version}`;
42
+ }
43
+ /**
44
+ * Operator-facing display name for a joined SolverNet — the registry
45
+ * `name` field if present, otherwise the manifest CID. Mirrors the same
46
+ * resolution the registry uses when registering entries.
47
+ */
48
+ export function joinedDisplayName(cid, net) {
49
+ return net.name ?? cid;
50
+ }
51
+ /**
52
+ * Find a joined SolverNet entry by its operator-facing display name. The
53
+ * lookup also matches against the manifest CID so callers that resolve a
54
+ * net by either identifier (legacy short-name or post-join CID) keep
55
+ * working. Returns the matched entry, or `undefined` if no match.
56
+ */
57
+ export function findJoinedByName(joinedSolverNets, needle) {
58
+ if (!joinedSolverNets)
59
+ return undefined;
60
+ for (const [cid, entry] of Object.entries(joinedSolverNets)) {
61
+ if (joinedDisplayName(cid, entry) === needle)
62
+ return entry;
63
+ if (entry.manifestCid === needle)
64
+ return entry;
65
+ }
66
+ return undefined;
67
+ }
33
68
  function defaultRuntimePluginsForSolverType(solverType) {
34
69
  if (solverType === 'swe-rebench-v2.v1') {
35
70
  return ['bundled:swe-rebench-v2-runtime'];
@@ -120,30 +155,11 @@ export class SolverNetRegistry {
120
155
  return out;
121
156
  }
122
157
  }
123
- /**
124
- * Parse the legacy operator-config `solverType` string (`'<id>.<version>'`)
125
- * into a `{ id, version }` ref so we can call the contract registry's
126
- * non-deprecated lookup signature. The operator config field itself is
127
- * carried forward for now (Task 8 of
128
- * `spec/2026-05-05-solvernet-creation-and-launch.md` — internal dispatch
129
- * keeps `solverType` as a routing alias; Task 30 removes it).
130
- */
131
- function parseSolverTypeRef(solverType) {
132
- const dot = solverType.lastIndexOf('.');
133
- if (dot <= 0 || dot === solverType.length - 1)
134
- return undefined;
135
- return { id: solverType.slice(0, dot), version: solverType.slice(dot + 1) };
136
- }
137
158
  export async function loadSolverNets(config) {
138
159
  const registry = new SolverNetRegistry();
139
- async function registerFromConfig(name, net) {
160
+ async function registerFromConfig(name, net, contract) {
140
161
  if (!net.enabled)
141
162
  return;
142
- const ref = parseSolverTypeRef(net.solverType);
143
- const contract = ref ? getSolverNetContract(ref) : undefined;
144
- if (!contract) {
145
- throw new Error(`SolverNet ${name} has no registered SolverNetContract for ${net.solverType}`);
146
- }
147
163
  const runtimePlugins = [];
148
164
  const seenSources = new Set();
149
165
  const seenNames = new Set();
@@ -208,10 +224,7 @@ export async function loadSolverNets(config) {
208
224
  ...(joined.model ? { model: joined.model } : {}),
209
225
  plugins: [...defaultPlugins, ...(joined.plugins ?? [])],
210
226
  taskGenerator: { enabled: false },
211
- });
212
- }
213
- for (const [name, net] of Object.entries(config.solverNets)) {
214
- await registerFromConfig(name, net);
227
+ }, contract);
215
228
  }
216
229
  return registry;
217
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/solver-nets/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAA0B,MAAM,gBAAgB,CAAC;AAE9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAgC,CAAC;AA6C1E,MAAM,UAAU,uBAAuB,CAAC,IAA2B;IACjE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IAC7C,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,GAAoB;IAC3C,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,GAA0B;IACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kCAAkC,CAAC,UAAkB;IAC5D,IAAI,UAAU,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAyB,EAAE,QAAkB;IAC1E,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;QAC1C,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtF,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,+BAA+B,CAAC,QAA2B;IAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,kBAAkB,CAAC,cAAc,CAAC;IAClE,IAAI,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAC3F,IAAI,cAAc,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAAE,OAAO,yBAAyB,CAAC;IACzF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAuD,EACvD,UAAuC;IAEvC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,MAAuD;IAC9E,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,OAAO,iBAAiB;IACX,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE3D,QAAQ,CAAC,GAAoB;QAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,QAA4B;QAC5D,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,OAAO;YACX,GAAG,CAAC,UAAU,KAAK,UAAU;YAC7B,CAAC,QAAQ,KAAK,SAAS;gBACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACnB,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;oBACtC,OAAO,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,QAAQ,CAAC;gBAC7C,CAAC,CAAC,CAAC,CACN,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,iBAAiB;QACf,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;QACnB,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACrG,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAGC;IAED,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACzC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAoB;QAClE,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,4CAA4C,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,UAAU,gBAAgB,CAC7B,KAAwB,EACxB,UAAuC;YAEvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;YACzE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,mBAAmB,MAAM,CAAC,IAAI,gCAAgC,GAAG,CAAC,UAAU,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7I,CAAC;YACJ,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3D,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,uEAAuE;QACvE,4DAA4D;QAC5D,uEAAuE;QACvE,mDAAmD;QACnD,KAAK,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAChD,MAAM,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC;YAChB,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC;YAC3B,QAAQ;YACR,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,cAAc;YACd,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,SAAS;QAC/B,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;QAC7D,MAAM,cAAc,GAAG,kCAAkC,CAAC,UAAU,CAAC;aAClE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,mBAAmB;YACvC,CAAC,CAAC,+BAA+B,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC;QACvF,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE;YAC3C,OAAO,EAAE,IAAI;YACb,UAAU;YACV,KAAK;YACL,OAAO;YACP,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACvD,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/solver-nets/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Disk cache for the swe-rebench-v2 task pool. The pool is sourced from the
3
+ * HuggingFace datasets-server; this cache lets the generator keep posting
4
+ * tasks across HF outages instead of silently going idle (#466).
5
+ *
6
+ * Stored at `<stateDir>/pool-cache.json`, alongside `generator-state.json`
7
+ * and `validated-pool.json`. Mirrors the GeneratorStateStore persistence
8
+ * pattern in `_swe-rebench-v2-state.ts`.
9
+ */
10
+ import type { PoolTask } from './_swe-rebench-v2-pool.js';
11
+ /** A pool read back from disk. */
12
+ export interface CachedPool {
13
+ tasks: PoolTask[];
14
+ /** ISO timestamp the cache was written. */
15
+ savedAt: string;
16
+ }
17
+ export declare class PoolCacheStore {
18
+ private cacheFile;
19
+ constructor(opts: {
20
+ stateDir: string;
21
+ });
22
+ /** Persist the pool. Creates the state dir if missing. */
23
+ write(tasks: PoolTask[]): Promise<void>;
24
+ /**
25
+ * Read the cached pool. Returns null when the file is absent, unparseable,
26
+ * or carries an unrecognised schema — never throws, so a corrupt cache
27
+ * degrades to "no cache" rather than crashing the generator.
28
+ */
29
+ read(): Promise<CachedPool | null>;
30
+ }
31
+ /** Outcome of an HF pool load attempt with cache fallback. */
32
+ export interface PoolLoadResult {
33
+ /** The pool to use. May be empty only when HF failed and no cache exists. */
34
+ pool: PoolTask[];
35
+ /** True when `pool` was served from the disk cache rather than a live load. */
36
+ fromCache: boolean;
37
+ /** Set when the live HF load failed (even if a fallback pool was found). */
38
+ error?: {
39
+ message: string;
40
+ at: string;
41
+ };
42
+ }
43
+ /**
44
+ * Load the pool from HF, falling back to the disk cache on failure.
45
+ *
46
+ * - load succeeds -> return it, persist it to the cache.
47
+ * - load fails, pool held -> keep the in-memory pool (no cache read needed).
48
+ * - load fails, no pool, cache present -> serve the cache (`fromCache: true`).
49
+ * - load fails, no pool, no cache -> empty pool (generator idle).
50
+ *
51
+ * Pure orchestration: the loader and cache are injected so every branch is
52
+ * unit-testable. Never throws.
53
+ */
54
+ export declare function loadPoolWithCacheFallback(args: {
55
+ loadPool: () => Promise<PoolTask[]>;
56
+ cache: PoolCacheStore;
57
+ currentPool: PoolTask[];
58
+ }): Promise<PoolLoadResult>;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Disk cache for the swe-rebench-v2 task pool. The pool is sourced from the
3
+ * HuggingFace datasets-server; this cache lets the generator keep posting
4
+ * tasks across HF outages instead of silently going idle (#466).
5
+ *
6
+ * Stored at `<stateDir>/pool-cache.json`, alongside `generator-state.json`
7
+ * and `validated-pool.json`. Mirrors the GeneratorStateStore persistence
8
+ * pattern in `_swe-rebench-v2-state.ts`.
9
+ */
10
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
11
+ import { join, dirname } from 'node:path';
12
+ const SCHEMA_VERSION = 'swe-rebench-v2-pool-cache.v1';
13
+ export class PoolCacheStore {
14
+ cacheFile;
15
+ constructor(opts) {
16
+ this.cacheFile = join(opts.stateDir, 'pool-cache.json');
17
+ }
18
+ /** Persist the pool. Creates the state dir if missing. */
19
+ async write(tasks) {
20
+ const payload = {
21
+ schemaVersion: SCHEMA_VERSION,
22
+ savedAt: new Date().toISOString(),
23
+ tasks,
24
+ };
25
+ await mkdir(dirname(this.cacheFile), { recursive: true });
26
+ await writeFile(this.cacheFile, JSON.stringify(payload, null, 2));
27
+ }
28
+ /**
29
+ * Read the cached pool. Returns null when the file is absent, unparseable,
30
+ * or carries an unrecognised schema — never throws, so a corrupt cache
31
+ * degrades to "no cache" rather than crashing the generator.
32
+ */
33
+ async read() {
34
+ let raw;
35
+ try {
36
+ raw = await readFile(this.cacheFile, 'utf8');
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ try {
42
+ const parsed = JSON.parse(raw);
43
+ if (parsed.schemaVersion !== SCHEMA_VERSION ||
44
+ typeof parsed.savedAt !== 'string' ||
45
+ !Array.isArray(parsed.tasks)) {
46
+ return null;
47
+ }
48
+ return { tasks: parsed.tasks, savedAt: parsed.savedAt };
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ }
55
+ /**
56
+ * Load the pool from HF, falling back to the disk cache on failure.
57
+ *
58
+ * - load succeeds -> return it, persist it to the cache.
59
+ * - load fails, pool held -> keep the in-memory pool (no cache read needed).
60
+ * - load fails, no pool, cache present -> serve the cache (`fromCache: true`).
61
+ * - load fails, no pool, no cache -> empty pool (generator idle).
62
+ *
63
+ * Pure orchestration: the loader and cache are injected so every branch is
64
+ * unit-testable. Never throws.
65
+ */
66
+ export async function loadPoolWithCacheFallback(args) {
67
+ try {
68
+ const pool = await args.loadPool();
69
+ await args.cache.write(pool);
70
+ return { pool, fromCache: false };
71
+ }
72
+ catch (err) {
73
+ const error = {
74
+ message: err instanceof Error ? err.message : String(err),
75
+ at: new Date().toISOString(),
76
+ };
77
+ if (args.currentPool.length > 0) {
78
+ return { pool: args.currentPool, fromCache: false, error };
79
+ }
80
+ const cached = await args.cache.read();
81
+ if (cached && cached.tasks.length > 0) {
82
+ return { pool: cached.tasks, fromCache: true, error };
83
+ }
84
+ return { pool: [], fromCache: false, error };
85
+ }
86
+ }
87
+ //# sourceMappingURL=_swe-rebench-v2-pool-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_swe-rebench-v2-pool-cache.js","sourceRoot":"","sources":["../../src/solver-types/_swe-rebench-v2-pool-cache.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.6
7
7
  * DR: log/decisions/2026-05-06-task-generator-success-cap.md
8
8
  */
9
+ import { type FetchHfWithRetryOptions } from '../harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js';
9
10
  export interface PoolTask {
10
11
  instance_id: string;
11
12
  hf_dataset: string;
@@ -43,9 +44,15 @@ export interface BuildPoolArgs {
43
44
  * partitions are kept only from the earliest partition (first-seen wins).
44
45
  */
45
46
  export declare function buildHistoricalPool(args: BuildPoolArgs): Promise<PoolTask[]>;
46
- /** HTTP fetcher for HF datasets-server rows API. Use as fetchSplit in production. */
47
+ /**
48
+ * HTTP fetcher for HF datasets-server rows API. Use as `fetchSplit` in
49
+ * production. Routes through {@link fetchHfWithRetry} so 408/429/5xx are
50
+ * retried with jittered backoff and the process-wide HF min-interval is
51
+ * honoured (issue #578). Throws on non-2xx after retry exhaustion —
52
+ * previously returned `[]` silently, which is what hid the 290 lost tasks.
53
+ */
47
54
  export declare function fetchHfSplit(args: {
48
55
  dataset: string;
49
56
  split: string;
50
57
  limit?: number;
51
- }): Promise<any[]>;
58
+ }, opts?: FetchHfWithRetryOptions): Promise<any[]>;
@@ -6,7 +6,7 @@
6
6
  * Spec: docs/superpowers/specs/2026-05-06-agent-harness-solvernet-design.md §3.6
7
7
  * DR: log/decisions/2026-05-06-task-generator-success-cap.md
8
8
  */
9
- import { request } from 'node:https';
9
+ import { fetchHfWithRetry, } from '../harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js';
10
10
  /** Filter dataset split names to only the YYYY_MM monthly partitions. */
11
11
  export function listMonthlyPartitions(splits) {
12
12
  return splits
@@ -43,30 +43,25 @@ export async function buildHistoricalPool(args) {
43
43
  }
44
44
  return pool;
45
45
  }
46
- /** HTTP fetcher for HF datasets-server rows API. Use as fetchSplit in production. */
47
- export async function fetchHfSplit(args) {
46
+ /**
47
+ * HTTP fetcher for HF datasets-server rows API. Use as `fetchSplit` in
48
+ * production. Routes through {@link fetchHfWithRetry} so 408/429/5xx are
49
+ * retried with jittered backoff and the process-wide HF min-interval is
50
+ * honoured (issue #578). Throws on non-2xx after retry exhaustion —
51
+ * previously returned `[]` silently, which is what hid the 290 lost tasks.
52
+ */
53
+ export async function fetchHfSplit(args, opts = {}) {
48
54
  const url = new URL('https://datasets-server.huggingface.co/rows');
49
55
  url.searchParams.set('dataset', args.dataset);
50
56
  url.searchParams.set('config', 'default');
51
57
  url.searchParams.set('split', args.split);
52
58
  url.searchParams.set('offset', '0');
53
59
  url.searchParams.set('length', String(args.limit ?? 100));
54
- return new Promise((resolve, reject) => {
55
- const req = request(url, { method: 'GET' }, (res) => {
56
- let body = '';
57
- res.on('data', (d) => { body += d; });
58
- res.on('end', () => {
59
- try {
60
- const parsed = JSON.parse(body);
61
- resolve((parsed.rows ?? []).map((r) => r.row));
62
- }
63
- catch (e) {
64
- reject(e);
65
- }
66
- });
67
- });
68
- req.on('error', reject);
69
- req.end();
70
- });
60
+ const res = await fetchHfWithRetry(url.toString(), opts);
61
+ if (!res.ok) {
62
+ throw Object.assign(new Error(`HF datasets-server returned ${res.status} for ${args.dataset}/${args.split}`), { httpStatus: res.status });
63
+ }
64
+ const json = (await res.json());
65
+ return (json.rows ?? []).map((r) => r.row);
71
66
  }
72
67
  //# sourceMappingURL=_swe-rebench-v2-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_swe-rebench-v2-pool.js","sourceRoot":"","sources":["../../src/solver-types/_swe-rebench-v2-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_swe-rebench-v2-pool.js","sourceRoot":"","sources":["../../src/solver-types/_swe-rebench-v2-pool.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ export interface CommandResult {
39
39
  export type CommandRunner = (bin: string, args: string[], opts?: {
40
40
  cwd?: string;
41
41
  }) => Promise<CommandResult>;
42
+ export declare const defaultCommandRunner: CommandRunner;
42
43
  /**
43
44
  * Resolve the digest of a local Docker image via `docker image inspect`.
44
45
  * Returns null when docker fails or the image has no RepoDigests entry
@@ -8,6 +8,7 @@
8
8
  * evaluator harness.
9
9
  */
10
10
  import { createHash } from 'node:crypto';
11
+ import { spawn } from 'node:child_process';
11
12
  /**
12
13
  * Canonical-JSON SHA-256 over the HF row fields that affect grading.
13
14
  * Keys are sorted recursively so field-reorder produces the same hash.
@@ -29,6 +30,15 @@ function sortedKeys(_key, value) {
29
30
  }
30
31
  return value;
31
32
  }
33
+ export const defaultCommandRunner = (bin, args, opts) => new Promise((resolve, reject) => {
34
+ const child = spawn(bin, args, { ...(opts ?? {}), stdio: ['ignore', 'pipe', 'pipe'] });
35
+ let stdout = '';
36
+ let stderr = '';
37
+ child.stdout?.on('data', (d) => { stdout += d.toString(); });
38
+ child.stderr?.on('data', (d) => { stderr += d.toString(); });
39
+ child.on('error', reject);
40
+ child.on('close', (code) => resolve({ exitCode: code ?? 1, stdout, stderr }));
41
+ });
32
42
  /**
33
43
  * Resolve the digest of a local Docker image via `docker image inspect`.
34
44
  * Returns null when docker fails or the image has no RepoDigests entry
@@ -1 +1 @@
1
- {"version":3,"file":"_swe-rebench-v2-substrate.js","sourceRoot":"","sources":["../../src/solver-types/_swe-rebench-v2-substrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBzC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,UAAU,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAc;IAC9C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAaD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE;QACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB;KACnE,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,mEAAmE;IACnE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnC,2EAA2E;IAC3E,0EAA0E;IAC1E,gEAAgE;IAChE,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,eAAuB,EACvB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"_swe-rebench-v2-substrate.js","sourceRoot":"","sources":["../../src/solver-types/_swe-rebench-v2-substrate.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,22 @@ import { type CommandRunner } from './_swe-rebench-v2-substrate.js';
36
36
  * import/setup failures) — jinn-mono-fufn.
37
37
  */
38
38
  export declare const EVAL_SEMANTICS_VERSION = "3";
39
+ export declare const SWE_REBENCH_V2_VETTED_POOL_ARTIFACT_TYPE: "swe-rebench-v2-vetted-pool.v1";
40
+ export declare const SOLVERNET_ARTIFACT_REF_SCHEMA_VERSION: "solvernet.artifact-ref.v1";
41
+ export declare const VETTED_POOL_REF_ELIGIBILITY_KEY: "vettedPoolRef";
42
+ declare const PUBLICATION_SCHEMA_VERSION: "swe-rebench-v2-vetted-pool-publication.v1";
39
43
  export interface ValidatedPoolEntry {
40
44
  scorable: boolean;
41
- /** Why scorable/unscorable — `'gold-patch-resolves'`, `'ungradeable:<reason>'`, etc. */
45
+ /**
46
+ * Why scorable/unscorable — `'gold-patch-resolves'`, `'ungradeable:<reason>'`,
47
+ * `'transient:HF-429:<msg>'`, `'error:HF-429-permanent-after-5-passes'`, etc.
48
+ *
49
+ * Reason prefixes:
50
+ * - `transient:` — non-terminal; the next `validatePoolInstances` pass
51
+ * re-processes the entry until `transientRetryCount` hits {@link MAX_TRANSIENT_PASSES}.
52
+ * - everything else (including `error:`, `ungradeable:`, etc.) — terminal
53
+ * under the skip-check; only re-processed when `opts.force` is set.
54
+ */
42
55
  reason: string;
43
56
  checkedAt: string;
44
57
  /** Canonical-JSON SHA-256 over the HF row fields used for grading. v3+. */
@@ -49,7 +62,68 @@ export interface ValidatedPoolEntry {
49
62
  imageDigest?: string;
50
63
  /** `git rev-parse HEAD` of the enabled upstream SWE-rebench repo at validation time. v3+. */
51
64
  upstreamEvalCommit?: string;
65
+ /**
66
+ * Number of consecutive `validatePoolInstances` passes that have recorded a
67
+ * `transient:` reason for this instance under this `evalSemanticsVersion`.
68
+ * Bumped on each pass; flips the reason to `error:HF-429-permanent-after-5-passes`
69
+ * once it hits {@link MAX_TRANSIENT_PASSES} (issue #578). Undefined for
70
+ * non-transient entries (treated as `0` on read).
71
+ */
72
+ transientRetryCount?: number;
73
+ /** ISO timestamp of the most recent transient pass. Undefined for non-transient entries. */
74
+ lastTransientAt?: string;
52
75
  }
76
+ /**
77
+ * Cap on consecutive transient passes before an instance flips to the
78
+ * terminal `error:HF-429-permanent-after-5-passes` reason. Issue #578: the
79
+ * AC says "the failure is still recorded for visibility, but the validation
80
+ * pipeline distinguishes transient from permanent so the next run reprocesses
81
+ * these instances"; this is the convergence boundary that keeps a
82
+ * permanently-broken split from churning forever.
83
+ */
84
+ export declare const MAX_TRANSIENT_PASSES = 5;
85
+ export interface SweRebenchV2VettedPoolArtifactEntry extends ValidatedPoolEntry {
86
+ instance_id: string;
87
+ scorable: true;
88
+ }
89
+ export interface SweRebenchV2VettedPoolArtifact {
90
+ schemaVersion: typeof SWE_REBENCH_V2_VETTED_POOL_ARTIFACT_TYPE;
91
+ evalSemanticsVersion: string;
92
+ generatedAt: string;
93
+ entries: SweRebenchV2VettedPoolArtifactEntry[];
94
+ }
95
+ export interface SolverNetArtifactRef {
96
+ schemaVersion: typeof SOLVERNET_ARTIFACT_REF_SCHEMA_VERSION;
97
+ manifestCid: string;
98
+ artifactType: typeof SWE_REBENCH_V2_VETTED_POOL_ARTIFACT_TYPE;
99
+ artifactCid: string;
100
+ artifactHash: `sha256:${string}`;
101
+ evalSemanticsVersion: string;
102
+ publishedAt: string;
103
+ }
104
+ export interface VettedPoolArtifactPublication {
105
+ schemaVersion: typeof PUBLICATION_SCHEMA_VERSION;
106
+ updatedAt: string;
107
+ ref: SolverNetArtifactRef;
108
+ artifact: SweRebenchV2VettedPoolArtifact;
109
+ }
110
+ export interface ScorableVettedPoolArtifactEntries {
111
+ ids: Set<string>;
112
+ byId: Map<string, SweRebenchV2VettedPoolArtifactEntry>;
113
+ }
114
+ export declare function parseVettedPoolArtifact(raw: unknown): SweRebenchV2VettedPoolArtifact;
115
+ export declare function hashVettedPoolArtifact(artifact: SweRebenchV2VettedPoolArtifact): `sha256:${string}`;
116
+ export declare function loadVettedPoolArtifactScorableEntries(raw: unknown): ScorableVettedPoolArtifactEntries;
117
+ export declare function createVettedPoolArtifactRef(args: {
118
+ manifestCid: string;
119
+ artifactCid: string;
120
+ artifactHash: `sha256:${string}`;
121
+ evalSemanticsVersion: string;
122
+ publishedAt: string;
123
+ }): SolverNetArtifactRef;
124
+ export declare function sweRebenchV2VettedPoolArtifactMetadataKey(manifestCid: string): string;
125
+ export declare function parseVettedPoolArtifactRef(raw: unknown): SolverNetArtifactRef;
126
+ export declare function vettedPoolArtifactRefFromEligibility(eligibility: Record<string, unknown> | undefined): SolverNetArtifactRef | null;
53
127
  export declare class ValidatedPoolStore {
54
128
  private readonly file;
55
129
  private cache;
@@ -68,10 +142,28 @@ export declare class ValidatedPoolStore {
68
142
  * on-disk file is absent or built for a different version). Memoised by
69
143
  * mtime so the generator's tick doesn't re-parse the JSON every poll. */
70
144
  getScorableIds(evalSemanticsVersion: string): Promise<Set<string> | null>;
145
+ getScorableEntries(evalSemanticsVersion: string): Promise<{
146
+ entries: Record<string, ValidatedPoolEntry>;
147
+ updatedAt: string;
148
+ } | null>;
71
149
  /** The entry for `instanceId`, or `null` if not validated for this semantics version. */
72
150
  getEntry(instanceId: string, evalSemanticsVersion: string): Promise<ValidatedPoolEntry | null>;
73
151
  record(instanceId: string, entry: ValidatedPoolEntry, evalSemanticsVersion: string): Promise<void>;
74
152
  }
153
+ export declare function exportScorableVettedPoolArtifact(store: ValidatedPoolStore, evalSemanticsVersion: string, opts?: {
154
+ generatedAt?: string;
155
+ }): Promise<SweRebenchV2VettedPoolArtifact | null>;
156
+ export declare function readVettedPoolArtifactPublication(args: {
157
+ stateDir: string;
158
+ manifestCid?: string;
159
+ evalSemanticsVersion?: string;
160
+ }): Promise<VettedPoolArtifactPublication | null>;
161
+ export declare function writeVettedPoolArtifactPublication(args: {
162
+ stateDir: string;
163
+ ref: SolverNetArtifactRef;
164
+ artifact: SweRebenchV2VettedPoolArtifact;
165
+ updatedAt?: string;
166
+ }): Promise<VettedPoolArtifactPublication>;
75
167
  export type AdmissionMode = 'required' | 'python-floor';
76
168
  /**
77
169
  * Restrict the generator's posting pool.
@@ -120,3 +212,4 @@ export declare function validatePoolInstances(pool: PoolTask[], deps: ValidatePo
120
212
  limit?: number;
121
213
  force?: boolean;
122
214
  }): Promise<ValidatePoolSummary>;
215
+ export {};