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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +67 -1
  3. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
  4. package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
  5. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
  6. package/dist/adapters/mech/adapter.d.ts +38 -2
  7. package/dist/adapters/mech/adapter.js +269 -62
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +17 -4
  10. package/dist/adapters/mech/contracts.js +8 -2
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +20 -0
  13. package/dist/adapters/mech/safe-revert.js +12 -4
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.d.ts +6 -2
  16. package/dist/adapters/mech/safe.js +32 -11
  17. package/dist/adapters/mech/safe.js.map +1 -1
  18. package/dist/adapters/mech/types.d.ts +6 -1
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.d.ts +1 -0
  21. package/dist/adapters/mech/verdict-code.js +18 -0
  22. package/dist/adapters/mech/verdict-code.js.map +1 -1
  23. package/dist/agent/operator-claude.js +8 -0
  24. package/dist/agent/operator-claude.js.map +1 -1
  25. package/dist/api/activity-events-endpoint.d.ts +14 -0
  26. package/dist/api/activity-events-endpoint.js +59 -0
  27. package/dist/api/activity-events-endpoint.js.map +1 -0
  28. package/dist/api/admin-endpoint.d.ts +15 -3
  29. package/dist/api/admin-endpoint.js +24 -2
  30. package/dist/api/admin-endpoint.js.map +1 -1
  31. package/dist/api/bootstrap-endpoint.d.ts +1 -2
  32. package/dist/api/bootstrap-endpoint.js +85 -18
  33. package/dist/api/bootstrap-endpoint.js.map +1 -1
  34. package/dist/api/codex-doctor-endpoint.d.ts +90 -0
  35. package/dist/api/codex-doctor-endpoint.js +296 -0
  36. package/dist/api/codex-doctor-endpoint.js.map +1 -0
  37. package/dist/api/discovery-endpoint.d.ts +1 -0
  38. package/dist/api/discovery-endpoint.js +26 -0
  39. package/dist/api/discovery-endpoint.js.map +1 -1
  40. package/dist/api/fleet-build.d.ts +1 -0
  41. package/dist/api/fleet-build.js +2 -1
  42. package/dist/api/fleet-build.js.map +1 -1
  43. package/dist/api/gather-status.d.ts +37 -0
  44. package/dist/api/gather-status.js +572 -19
  45. package/dist/api/gather-status.js.map +1 -1
  46. package/dist/api/hermes-doctor-endpoint.d.ts +128 -3
  47. package/dist/api/hermes-doctor-endpoint.js +265 -22
  48. package/dist/api/hermes-doctor-endpoint.js.map +1 -1
  49. package/dist/api/launcher-status.d.ts +25 -17
  50. package/dist/api/launcher-status.js +13 -11
  51. package/dist/api/launcher-status.js.map +1 -1
  52. package/dist/api/launcher-tasks.d.ts +1 -1
  53. package/dist/api/launcher-tasks.js +12 -8
  54. package/dist/api/launcher-tasks.js.map +1 -1
  55. package/dist/api/operator-artifacts-endpoint.js +73 -6
  56. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  57. package/dist/api/portfolio-v0-build.d.ts +10 -0
  58. package/dist/api/portfolio-v0-build.js +24 -5
  59. package/dist/api/portfolio-v0-build.js.map +1 -1
  60. package/dist/api/prediction-v1-build.d.ts +10 -0
  61. package/dist/api/prediction-v1-build.js +7 -1
  62. package/dist/api/prediction-v1-build.js.map +1 -1
  63. package/dist/api/server.d.ts +31 -1
  64. package/dist/api/server.js +95 -2
  65. package/dist/api/server.js.map +1 -1
  66. package/dist/api/setup-endpoints.d.ts +16 -0
  67. package/dist/api/setup-endpoints.js +89 -135
  68. package/dist/api/setup-endpoints.js.map +1 -1
  69. package/dist/api/setup-retry-endpoint.d.ts +19 -0
  70. package/dist/api/setup-retry-endpoint.js +32 -0
  71. package/dist/api/setup-retry-endpoint.js.map +1 -0
  72. package/dist/api/solvernets-endpoints.d.ts +8 -0
  73. package/dist/api/solvernets-endpoints.js +99 -60
  74. package/dist/api/solvernets-endpoints.js.map +1 -1
  75. package/dist/api/status-build.d.ts +168 -2
  76. package/dist/api/status-build.js +116 -27
  77. package/dist/api/status-build.js.map +1 -1
  78. package/dist/api/status-harness-rollup.d.ts +35 -0
  79. package/dist/api/status-harness-rollup.js +45 -0
  80. package/dist/api/status-harness-rollup.js.map +1 -0
  81. package/dist/api/task-run-routing.d.ts +7 -0
  82. package/dist/api/task-run-routing.js +12 -0
  83. package/dist/api/task-run-routing.js.map +1 -0
  84. package/dist/api/task-runs-build.d.ts +21 -0
  85. package/dist/api/task-runs-build.js +14 -1
  86. package/dist/api/task-runs-build.js.map +1 -1
  87. package/dist/build-info.json +4 -4
  88. package/dist/build-meta.json +1 -1
  89. package/dist/captures/live-publisher.js +24 -4
  90. package/dist/captures/live-publisher.js.map +1 -1
  91. package/dist/captures/publish.d.ts +1 -1
  92. package/dist/chain-read-errors.d.ts +10 -0
  93. package/dist/chain-read-errors.js +15 -0
  94. package/dist/chain-read-errors.js.map +1 -1
  95. package/dist/cli/commands/auth.js +1 -1
  96. package/dist/cli/commands/auth.js.map +1 -1
  97. package/dist/cli/commands/create.js +3 -2
  98. package/dist/cli/commands/create.js.map +1 -1
  99. package/dist/cli/commands/doctor.d.ts +2 -0
  100. package/dist/cli/commands/doctor.js +2 -0
  101. package/dist/cli/commands/doctor.js.map +1 -1
  102. package/dist/cli/commands/rewards.js +11 -7
  103. package/dist/cli/commands/rewards.js.map +1 -1
  104. package/dist/cli/commands/solver-nets.js +101 -15
  105. package/dist/cli/commands/solver-nets.js.map +1 -1
  106. package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
  107. package/dist/cli/commands/solver-plugins-block.js +118 -0
  108. package/dist/cli/commands/solver-plugins-block.js.map +1 -0
  109. package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
  110. package/dist/cli/commands/solver-plugins-feedback.js +262 -0
  111. package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
  112. package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
  113. package/dist/cli/commands/solver-plugins-read.js +259 -0
  114. package/dist/cli/commands/solver-plugins-read.js.map +1 -0
  115. package/dist/cli/commands/solver-plugins.d.ts +35 -0
  116. package/dist/cli/commands/solver-plugins.js +399 -2
  117. package/dist/cli/commands/solver-plugins.js.map +1 -1
  118. package/dist/cli/commands/status.js +1 -1
  119. package/dist/cli/commands/status.js.map +1 -1
  120. package/dist/cli/commands/tasks.js +101 -11
  121. package/dist/cli/commands/tasks.js.map +1 -1
  122. package/dist/cli/commands/update.d.ts +10 -0
  123. package/dist/cli/commands/update.js +36 -0
  124. package/dist/cli/commands/update.js.map +1 -1
  125. package/dist/cli/introspection-context.js +5 -0
  126. package/dist/cli/introspection-context.js.map +1 -1
  127. package/dist/cli/task-native-readiness.d.ts +10 -1
  128. package/dist/cli/task-native-readiness.js +30 -6
  129. package/dist/cli/task-native-readiness.js.map +1 -1
  130. package/dist/config.d.ts +273 -235
  131. package/dist/config.js +305 -114
  132. package/dist/config.js.map +1 -1
  133. package/dist/daemon/checkpoint-loop.d.ts +48 -0
  134. package/dist/daemon/checkpoint-loop.js +76 -0
  135. package/dist/daemon/checkpoint-loop.js.map +1 -0
  136. package/dist/daemon/creator.d.ts +1 -1
  137. package/dist/daemon/creator.js +7 -3
  138. package/dist/daemon/creator.js.map +1 -1
  139. package/dist/daemon/daemon.d.ts +22 -0
  140. package/dist/daemon/daemon.js +156 -23
  141. package/dist/daemon/daemon.js.map +1 -1
  142. package/dist/daemon/eviction-loop.d.ts +40 -0
  143. package/dist/daemon/eviction-loop.js +67 -0
  144. package/dist/daemon/eviction-loop.js.map +1 -0
  145. package/dist/daemon/gate-logger.d.ts +9 -0
  146. package/dist/daemon/gate-logger.js +2 -0
  147. package/dist/daemon/gate-logger.js.map +1 -0
  148. package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
  149. package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
  150. package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
  151. package/dist/daemon/jinn-claim-loop.d.ts +24 -17
  152. package/dist/daemon/jinn-claim-loop.js +77 -23
  153. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  154. package/dist/daemon/readiness-gate.d.ts +1 -4
  155. package/dist/daemon/readiness-gate.js.map +1 -1
  156. package/dist/daemon/skip-log-dedup.d.ts +69 -0
  157. package/dist/daemon/skip-log-dedup.js +106 -0
  158. package/dist/daemon/skip-log-dedup.js.map +1 -0
  159. package/dist/daemon/spend-cap-gate.d.ts +40 -0
  160. package/dist/daemon/spend-cap-gate.js +46 -0
  161. package/dist/daemon/spend-cap-gate.js.map +1 -0
  162. package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
  163. package/dist/dashboard/assets/index-DkTglWXU.js +345 -0
  164. package/dist/dashboard/index.html +2 -2
  165. package/dist/discovery/factory.d.ts +17 -5
  166. package/dist/discovery/factory.js +46 -18
  167. package/dist/discovery/factory.js.map +1 -1
  168. package/dist/discovery/http.js +216 -3
  169. package/dist/discovery/http.js.map +1 -1
  170. package/dist/discovery/onchain.d.ts +5 -0
  171. package/dist/discovery/onchain.js +418 -15
  172. package/dist/discovery/onchain.js.map +1 -1
  173. package/dist/discovery/types.d.ts +75 -1
  174. package/dist/discovery/types.js +8 -10
  175. package/dist/discovery/types.js.map +1 -1
  176. package/dist/discovery/with-fallback.d.ts +7 -0
  177. package/dist/discovery/with-fallback.js +20 -0
  178. package/dist/discovery/with-fallback.js.map +1 -1
  179. package/dist/earning/bootstrap.d.ts +100 -4
  180. package/dist/earning/bootstrap.js +221 -74
  181. package/dist/earning/bootstrap.js.map +1 -1
  182. package/dist/earning/contracts.d.ts +14 -0
  183. package/dist/earning/contracts.js +17 -5
  184. package/dist/earning/contracts.js.map +1 -1
  185. package/dist/earning/funding-plan.js +27 -18
  186. package/dist/earning/funding-plan.js.map +1 -1
  187. package/dist/earning/jinn-rewards.d.ts +46 -0
  188. package/dist/earning/jinn-rewards.js +32 -0
  189. package/dist/earning/jinn-rewards.js.map +1 -1
  190. package/dist/earning/safe-adapter.d.ts +2 -0
  191. package/dist/earning/safe-adapter.js +37 -11
  192. package/dist/earning/safe-adapter.js.map +1 -1
  193. package/dist/earning/store.d.ts +8 -0
  194. package/dist/earning/store.js.map +1 -1
  195. package/dist/earning/testnet-setup-migration.d.ts +12 -0
  196. package/dist/earning/testnet-setup-migration.js +27 -1
  197. package/dist/earning/testnet-setup-migration.js.map +1 -1
  198. package/dist/earning/types.d.ts +21 -6
  199. package/dist/earning/viem-clients.d.ts +11 -4
  200. package/dist/earning/viem-clients.js +14 -5
  201. package/dist/earning/viem-clients.js.map +1 -1
  202. package/dist/erc8004/identity.d.ts +19 -3
  203. package/dist/erc8004/identity.js +21 -6
  204. package/dist/erc8004/identity.js.map +1 -1
  205. package/dist/erc8004/index.d.ts +1 -1
  206. package/dist/erc8004/index.js.map +1 -1
  207. package/dist/erc8004/reputation.d.ts +8 -0
  208. package/dist/erc8004/reputation.js +22 -3
  209. package/dist/erc8004/reputation.js.map +1 -1
  210. package/dist/events/types.d.ts +2 -2
  211. package/dist/harnesses/cost-estimates.d.ts +145 -0
  212. package/dist/harnesses/cost-estimates.js +297 -0
  213. package/dist/harnesses/cost-estimates.js.map +1 -0
  214. package/dist/harnesses/engine/engine.d.ts +78 -0
  215. package/dist/harnesses/engine/engine.js +153 -11
  216. package/dist/harnesses/engine/engine.js.map +1 -1
  217. package/dist/harnesses/engine/persistence.d.ts +51 -1
  218. package/dist/harnesses/engine/persistence.js +118 -5
  219. package/dist/harnesses/engine/persistence.js.map +1 -1
  220. package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
  221. package/dist/harnesses/engine/work-dir-reaper.js +100 -0
  222. package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
  223. package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
  224. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  225. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
  226. package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
  227. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  228. package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
  229. package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
  230. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  231. package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
  232. package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
  233. package/dist/harnesses/impls/index.d.ts +7 -0
  234. package/dist/harnesses/impls/index.js +16 -1
  235. package/dist/harnesses/impls/index.js.map +1 -1
  236. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
  237. package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
  238. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  239. package/dist/harnesses/impls/learner/harness.d.ts +38 -4
  240. package/dist/harnesses/impls/learner/harness.js +96 -2
  241. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  242. package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
  243. package/dist/harnesses/impls/learner/harvest.js +23 -5
  244. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  245. package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
  246. package/dist/harnesses/impls/learner/plugin-path.js +35 -15
  247. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  248. package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
  249. package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
  250. package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
  251. package/dist/harnesses/impls/learner/types.d.ts +11 -0
  252. package/dist/harnesses/impls/stub.d.ts +58 -0
  253. package/dist/harnesses/impls/stub.js +89 -0
  254. package/dist/harnesses/impls/stub.js.map +1 -0
  255. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
  256. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
  257. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  258. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
  259. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
  260. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  261. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +88 -4
  262. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
  263. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  264. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
  265. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
  266. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  267. package/dist/harnesses/readiness-registry.d.ts +7 -0
  268. package/dist/harnesses/readiness-registry.js +18 -1
  269. package/dist/harnesses/readiness-registry.js.map +1 -1
  270. package/dist/main.js +419 -111
  271. package/dist/main.js.map +1 -1
  272. package/dist/observability/emit-event.d.ts +3 -2
  273. package/dist/observability/emit-event.js +22 -1
  274. package/dist/observability/emit-event.js.map +1 -1
  275. package/dist/operator-errors.d.ts +7 -0
  276. package/dist/operator-errors.js +13 -1
  277. package/dist/operator-errors.js.map +1 -1
  278. package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
  279. package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
  280. package/dist/plugins/learner/AGENTS.md +40 -0
  281. package/dist/plugins/learner/CLAUDE.md +33 -0
  282. package/dist/plugins/learner/README.md +59 -0
  283. package/dist/plugins/learner/hooks/hooks.json +16 -0
  284. package/dist/plugins/learner/hooks/session-start +38 -0
  285. package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
  286. package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
  287. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
  288. package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
  289. package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
  290. package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
  291. package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
  292. package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
  293. package/dist/preflight/rpc-network.d.ts +40 -0
  294. package/dist/preflight/rpc-network.js +67 -1
  295. package/dist/preflight/rpc-network.js.map +1 -1
  296. package/dist/restart-daemon.d.ts +90 -0
  297. package/dist/restart-daemon.js +95 -0
  298. package/dist/restart-daemon.js.map +1 -0
  299. package/dist/rpc/transport.d.ts +109 -0
  300. package/dist/rpc/transport.js +220 -0
  301. package/dist/rpc/transport.js.map +1 -0
  302. package/dist/scripts/donation-consumption-acceptance.js +7 -28
  303. package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
  304. package/dist/setup/halt-mode.d.ts +14 -0
  305. package/dist/setup/halt-mode.js +17 -0
  306. package/dist/setup/halt-mode.js.map +1 -0
  307. package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
  308. package/dist/solver-nets/prediction-operator-ux.js +90 -47
  309. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  310. package/dist/solver-nets/registry.d.ts +20 -1
  311. package/dist/solver-nets/registry.js +38 -25
  312. package/dist/solver-nets/registry.js.map +1 -1
  313. package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
  314. package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
  315. package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
  316. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
  317. package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
  318. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
  319. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
  320. package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
  321. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  322. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +94 -1
  323. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +305 -39
  324. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  325. package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
  326. package/dist/solver-types/swe-rebench-v2-auto.js +57 -20
  327. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  328. package/dist/solver-types/swe-rebench-v2.d.ts +18 -2
  329. package/dist/solver-types/swe-rebench-v2.js +310 -94
  330. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  331. package/dist/solvernets/daemon-init.d.ts +10 -2
  332. package/dist/solvernets/daemon-init.js +22 -2
  333. package/dist/solvernets/daemon-init.js.map +1 -1
  334. package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
  335. package/dist/solvernets/launched-record-dispatcher.js +44 -7
  336. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  337. package/dist/solvernets/store.d.ts +5 -0
  338. package/dist/solvernets/store.js +1 -0
  339. package/dist/solvernets/store.js.map +1 -1
  340. package/dist/spend/credential.d.ts +8 -0
  341. package/dist/spend/credential.js +30 -0
  342. package/dist/spend/credential.js.map +1 -0
  343. package/dist/spend/daemon-config.d.ts +13 -0
  344. package/dist/spend/daemon-config.js +24 -0
  345. package/dist/spend/daemon-config.js.map +1 -0
  346. package/dist/spend/pricing.d.ts +16 -0
  347. package/dist/spend/pricing.js +26 -0
  348. package/dist/spend/pricing.js.map +1 -0
  349. package/dist/spend/record.d.ts +13 -0
  350. package/dist/spend/record.js +30 -0
  351. package/dist/spend/record.js.map +1 -0
  352. package/dist/spend/usage.d.ts +27 -0
  353. package/dist/spend/usage.js +113 -0
  354. package/dist/spend/usage.js.map +1 -0
  355. package/dist/store/store.d.ts +61 -0
  356. package/dist/store/store.js +302 -7
  357. package/dist/store/store.js.map +1 -1
  358. package/dist/tasks/sources.d.ts +18 -1
  359. package/dist/tasks/sources.js +33 -5
  360. package/dist/tasks/sources.js.map +1 -1
  361. package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
  362. package/dist/tx-retry.d.ts +166 -19
  363. package/dist/tx-retry.js +310 -32
  364. package/dist/tx-retry.js.map +1 -1
  365. package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
  366. package/dist/types/payloads/prediction-v0.d.ts +5 -5
  367. package/dist/types/task-document.d.ts +392 -0
  368. package/dist/types/task-document.js +10 -0
  369. package/dist/types/task-document.js.map +1 -1
  370. package/dist/types/task.d.ts +28 -0
  371. package/dist/util/extract-tx-hash.d.ts +14 -0
  372. package/dist/util/extract-tx-hash.js +19 -0
  373. package/dist/util/extract-tx-hash.js.map +1 -0
  374. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
  375. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
  376. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
  377. package/package.json +36 -13
  378. package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
  379. package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
  380. package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
  381. package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
  382. package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
  383. package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
  384. package/plugins/swe-rebench-v2-runtime/README.md +6 -6
  385. package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
  386. package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +69 -0
  387. package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
  388. package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
  389. package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
  390. package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
@@ -18,7 +18,7 @@
18
18
  import { type SpawnOptions } from 'node:child_process';
19
19
  import type { EnableResult, Harness, HarnessContext, HarnessEnableContext, HarnessEnableMetadata, ReadyStatus, Solution } from '../../types.js';
20
20
  import type { Task } from '../../../types/task.js';
21
- import { uploadToIpfs } from '../../../adapters/mech/ipfs.js';
21
+ import { fetchFromIpfs, uploadToIpfs } from '../../../adapters/mech/ipfs.js';
22
22
  import { type EvalRunner, type HfFetcher } from './index.js';
23
23
  import { type PythonEvalRunnerOptions } from './eval-runner.js';
24
24
  import { type CommandResult } from '../../../solver-types/_swe-rebench-v2-substrate.js';
@@ -40,6 +40,8 @@ export interface SweRebenchV2EvaluatorHarnessOptions {
40
40
  implStateDir?: string;
41
41
  /** IPFS registry URL used to pin test logs. Defaults to Autonolas gateway. */
42
42
  ipfsRegistryUrl?: string;
43
+ /** IPFS gateway URL used to fetch launcher-published vetted pool artifacts. */
44
+ ipfsGatewayUrl?: string;
43
45
  /**
44
46
  * Test-only injection points. Production runs use Node's child_process
45
47
  * + node:fs + the bundled HFFetcher / PythonEvalRunner.
@@ -63,6 +65,7 @@ export interface SweRebenchV2EvaluatorHarnessOptions {
63
65
  */
64
66
  makeRunner?: (opts: PythonEvalRunnerOptions) => EvalRunner;
65
67
  uploadToIpfs?: typeof uploadToIpfs;
68
+ fetchFromIpfs?: typeof fetchFromIpfs;
66
69
  /**
67
70
  * Override the state directory used for the {@link ValidatedPoolStore}
68
71
  * substrate-recheck. Defaults to `JINN_SWE_REBENCH_V2_STATE_DIR` env
@@ -83,6 +86,7 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
83
86
  private readonly stub;
84
87
  private readonly implStateDir;
85
88
  private readonly ipfsRegistryUrl;
89
+ private readonly ipfsGatewayUrl;
86
90
  private readonly deps;
87
91
  /** The engine's claim-eligibility check calls `isReady()` per candidate
88
92
  * task per tick (~17 Hz potential). Cache the live `docker info` result
@@ -98,6 +102,9 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
98
102
  * call and the disk-budget bead (jinn-mono-uy6v.11) is a no-op.
99
103
  */
100
104
  private cachedRunner;
105
+ private cachedFetcher;
106
+ private cachedPool;
107
+ private readonly publishedPoolArtifactCache;
101
108
  constructor(opts?: SweRebenchV2EvaluatorHarnessOptions);
102
109
  /**
103
110
  * Resolve the {@link EvalRunner} used for a `run()` invocation. The
@@ -107,6 +114,9 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
107
114
  * tests that want a fresh mock per call.
108
115
  */
109
116
  private getRunner;
117
+ private getFetcher;
118
+ private loadPoolForRecheck;
119
+ private loadPublishedPoolArtifact;
110
120
  private isDockerReachable;
111
121
  supports(ctx: {
112
122
  solverType: string;
@@ -131,6 +141,7 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
131
141
  * Throws {@link SkippableError} on any mismatch — never fails open.
132
142
  */
133
143
  private recheckSubstrate;
144
+ private loadPublishedPoolRow;
134
145
  run(ctx: HarnessContext): Promise<Solution>;
135
146
  }
136
147
  declare function runCommand(bin: string, args: string[], opts?: SpawnOptions): Promise<CommandResult>;
@@ -23,14 +23,16 @@ import { join } from 'node:path';
23
23
  import { SweRebenchV2TaskSchema, SweRebenchV2SolutionPayloadSchema, } from '../../../vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js';
24
24
  import { REQUIRES_LIVE_DAEMON_READINESS, SkippableError } from '../../types.js';
25
25
  import { SignedEnvelopeSchema, normalizeEnvelopeRole } from '../../../types/envelope.js';
26
- import { uploadToIpfs } from '../../../adapters/mech/ipfs.js';
26
+ import { fetchFromIpfs, uploadToIpfs } from '../../../adapters/mech/ipfs.js';
27
27
  import { SweRebenchV2Evaluator } from './index.js';
28
28
  import { PythonEvalRunner, EvalCouldNotGradeError, } from './eval-runner.js';
29
29
  import { HttpHfFetcher } from './hf-fetcher.js';
30
- import { ValidatedPoolStore, EVAL_SEMANTICS_VERSION, } from '../../../solver-types/_swe-rebench-v2-validated-pool.js';
30
+ import { ValidatedPoolStore, EVAL_SEMANTICS_VERSION, hashVettedPoolArtifact, loadVettedPoolArtifactScorableEntries, parseVettedPoolArtifact, vettedPoolArtifactRefFromEligibility, } from '../../../solver-types/_swe-rebench-v2-validated-pool.js';
31
31
  import { computeRowHash, resolveImageDigest, } from '../../../solver-types/_swe-rebench-v2-substrate.js';
32
32
  import { defaultStateDir as defaultSolverTypeStateDir, loadSweRebenchV2Pool, } from '../../../solver-types/swe-rebench-v2.js';
33
+ import { PoolCacheStore, loadPoolWithCacheFallback, } from '../../../solver-types/_swe-rebench-v2-pool-cache.js';
33
34
  const DEFAULT_IPFS_REGISTRY_URL = 'https://registry.autonolas.tech';
35
+ const DEFAULT_IPFS_GATEWAY_URL = 'https://gateway.autonolas.tech';
34
36
  const UPSTREAM_REPO_URL = 'https://github.com/SWE-rebench/SWE-rebench-V2.git';
35
37
  const STATE_FILE = 'state.json';
36
38
  const ENABLE_CLI = 'jinn harnesses enable swe-rebench-v2-evaluator';
@@ -40,6 +42,7 @@ export class SweRebenchV2EvaluatorHarness {
40
42
  stub;
41
43
  implStateDir;
42
44
  ipfsRegistryUrl;
45
+ ipfsGatewayUrl;
43
46
  deps;
44
47
  /** The engine's claim-eligibility check calls `isReady()` per candidate
45
48
  * task per tick (~17 Hz potential). Cache the live `docker info` result
@@ -55,10 +58,14 @@ export class SweRebenchV2EvaluatorHarness {
55
58
  * call and the disk-budget bead (jinn-mono-uy6v.11) is a no-op.
56
59
  */
57
60
  cachedRunner;
61
+ cachedFetcher;
62
+ cachedPool;
63
+ publishedPoolArtifactCache = new Map();
58
64
  constructor(opts = {}) {
59
65
  this.stub = opts.stub ?? false;
60
66
  this.implStateDir = opts.implStateDir;
61
67
  this.ipfsRegistryUrl = opts.ipfsRegistryUrl ?? DEFAULT_IPFS_REGISTRY_URL;
68
+ this.ipfsGatewayUrl = opts.ipfsGatewayUrl ?? process.env['JINN_IPFS_GATEWAY_URL'] ?? DEFAULT_IPFS_GATEWAY_URL;
62
69
  this.deps = opts._testDeps ?? {};
63
70
  }
64
71
  /**
@@ -78,6 +85,72 @@ export class SweRebenchV2EvaluatorHarness {
78
85
  }
79
86
  return this.cachedRunner;
80
87
  }
88
+ getFetcher() {
89
+ if (this.deps.fetcher)
90
+ return this.deps.fetcher;
91
+ if (!this.cachedFetcher) {
92
+ this.cachedFetcher = new HttpHfFetcher();
93
+ }
94
+ return this.cachedFetcher;
95
+ }
96
+ loadPoolForRecheck(stateDir) {
97
+ if (!this.cachedPool || this.cachedPool.stateDir !== stateDir) {
98
+ const loadPool = this.deps.loadPool ?? loadSweRebenchV2Pool;
99
+ const promise = loadPoolWithCacheFallback({
100
+ loadPool,
101
+ cache: new PoolCacheStore({ stateDir }),
102
+ currentPool: [],
103
+ }).then((result) => {
104
+ if (result.pool.length > 0)
105
+ return result.pool;
106
+ if (result.error) {
107
+ throw new Error(result.error.message);
108
+ }
109
+ return result.pool;
110
+ });
111
+ this.cachedPool = { stateDir, promise };
112
+ }
113
+ const cached = this.cachedPool;
114
+ return cached.promise.catch((err) => {
115
+ if (this.cachedPool === cached) {
116
+ this.cachedPool = undefined;
117
+ }
118
+ throw err;
119
+ });
120
+ }
121
+ loadPublishedPoolArtifact(artifactCid) {
122
+ const cached = this.publishedPoolArtifactCache.get(artifactCid);
123
+ if (cached)
124
+ return cached;
125
+ const fetchArtifact = this.deps.fetchFromIpfs ?? fetchFromIpfs;
126
+ const promise = (async () => {
127
+ let rawArtifact;
128
+ try {
129
+ rawArtifact = await fetchArtifact(this.ipfsGatewayUrl, artifactCid);
130
+ }
131
+ catch (err) {
132
+ throw new SkippableError('vetted_pool_fetch_failed', `cannot fetch vetted pool artifact ${artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
133
+ }
134
+ try {
135
+ const artifact = parseVettedPoolArtifact(rawArtifact);
136
+ return {
137
+ evalSemanticsVersion: artifact.evalSemanticsVersion,
138
+ artifactHash: hashVettedPoolArtifact(artifact),
139
+ entries: loadVettedPoolArtifactScorableEntries(artifact),
140
+ };
141
+ }
142
+ catch (err) {
143
+ throw new SkippableError('vetted_pool_artifact_invalid', `invalid vetted pool artifact ${artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
144
+ }
145
+ })();
146
+ this.publishedPoolArtifactCache.set(artifactCid, promise);
147
+ promise.catch(() => {
148
+ if (this.publishedPoolArtifactCache.get(artifactCid) === promise) {
149
+ this.publishedPoolArtifactCache.delete(artifactCid);
150
+ }
151
+ });
152
+ return promise;
153
+ }
81
154
  async isDockerReachable(now = Date.now()) {
82
155
  const cached = this.dockerCheckCache;
83
156
  if (cached && now - cached.at < SweRebenchV2EvaluatorHarness.DOCKER_CHECK_TTL_MS) {
@@ -318,6 +391,48 @@ export class SweRebenchV2EvaluatorHarness {
318
391
  }
319
392
  return recheckRow;
320
393
  }
394
+ async loadPublishedPoolRow(task, runtimeTask, fetcher) {
395
+ let ref;
396
+ try {
397
+ ref = vettedPoolArtifactRefFromEligibility(runtimeTask.eligibility);
398
+ }
399
+ catch (err) {
400
+ throw new SkippableError('vetted_pool_ref_invalid', `invalid vetted pool ref: ${err instanceof Error ? err.message : String(err)}`);
401
+ }
402
+ if (!ref)
403
+ return null;
404
+ if (runtimeTask.solverNetManifestCid && ref.manifestCid !== runtimeTask.solverNetManifestCid) {
405
+ throw new SkippableError('vetted_pool_manifest_mismatch', `vetted pool ref manifestCid ${ref.manifestCid} does not match task manifestCid ${runtimeTask.solverNetManifestCid}`);
406
+ }
407
+ if (ref.evalSemanticsVersion !== EVAL_SEMANTICS_VERSION) {
408
+ throw new SkippableError('vetted_pool_semantics_mismatch', `vetted pool ref semanticsVersion=${ref.evalSemanticsVersion} does not match evaluator semanticsVersion=${EVAL_SEMANTICS_VERSION}`);
409
+ }
410
+ const artifact = await this.loadPublishedPoolArtifact(ref.artifactCid);
411
+ try {
412
+ if (artifact.evalSemanticsVersion !== ref.evalSemanticsVersion) {
413
+ throw new Error(`artifact semanticsVersion=${artifact.evalSemanticsVersion} does not match ref=${ref.evalSemanticsVersion}`);
414
+ }
415
+ if (artifact.artifactHash !== ref.artifactHash) {
416
+ throw new Error(`artifact hash ${artifact.artifactHash} does not match ref ${ref.artifactHash}`);
417
+ }
418
+ }
419
+ catch (err) {
420
+ throw new SkippableError('vetted_pool_artifact_invalid', `invalid vetted pool artifact ${ref.artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
421
+ }
422
+ if (!artifact.entries.byId.has(task.instance_id)) {
423
+ throw new SkippableError('vetted_pool_instance_missing_or_unscorable', `${task.instance_id} is not present as scorable in vetted pool artifact ${ref.artifactCid}`);
424
+ }
425
+ try {
426
+ return await fetcher.fetchTaskRow({
427
+ hf_dataset: task.hf_dataset,
428
+ hf_split: task.hf_split,
429
+ instance_id: task.instance_id,
430
+ });
431
+ }
432
+ catch (err) {
433
+ throw new SkippableError('hf_fetch_failed', `cannot load grading row after vetted-pool admission: ${err instanceof Error ? err.message : String(err)}`);
434
+ }
435
+ }
321
436
  async run(ctx) {
322
437
  if (this.stub) {
323
438
  throw new Error('swe-rebench-v2-evaluator: stub registry cannot run evaluation (requires live daemon)');
@@ -346,16 +461,15 @@ export class SweRebenchV2EvaluatorHarness {
346
461
  const stateDir = this.deps.stateDir ??
347
462
  process.env['JINN_SWE_REBENCH_V2_STATE_DIR'] ??
348
463
  defaultSolverTypeStateDir();
349
- const recheckFetcher = this.deps.fetcher ?? new HttpHfFetcher();
350
- const loadPool = this.deps.loadPool ?? loadSweRebenchV2Pool;
351
- const recheckRow = await this.recheckSubstrate(task, recheckFetcher, loadPool, stateDir);
464
+ const fetcher = this.getFetcher();
465
+ const publishedPoolRow = await this.loadPublishedPoolRow(task, ctx.task, fetcher);
466
+ const recheckRow = publishedPoolRow ?? await this.recheckSubstrate(task, fetcher, () => this.loadPoolForRecheck(stateDir), stateDir);
352
467
  // ── End substrate recheck ─────────────────────────────────────────────────
353
- const fetcher = this.deps.fetcher ?? new HttpHfFetcher();
354
468
  const runner = this.getRunner(state.upstreamRepoDir);
355
469
  const evaluator = new SweRebenchV2Evaluator({ fetcher, runner });
356
470
  let graded;
357
471
  try {
358
- graded = await evaluator.grade({ task, solutionPayload });
472
+ graded = await evaluator.grade({ task, solutionPayload, row: recheckRow });
359
473
  }
360
474
  catch (err) {
361
475
  if (err instanceof EvalCouldNotGradeError) {
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../../src/harnesses/impls/swe-rebench-v2-evaluator/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../../src/harnesses/impls/swe-rebench-v2-evaluator/harness.ts"],"names":[],"mappings":"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"}
@@ -19,19 +19,102 @@ export interface HttpHfFetcherOptions {
19
19
  /** Fetch implementation. Defaults to global fetch (allows test injection). */
20
20
  fetchImpl?: typeof fetch;
21
21
  /**
22
- * Per-page retry backoff schedule (ms) for transient HTTP 5xx or network
23
- * errors. Default: [200, 800, 3200]. Each entry is the delay before the
24
- * Nth retry; an empty array disables retries. Non-5xx responses (e.g.
25
- * 404) are not retried they're not transient.
22
+ * Per-page retry backoff schedule (ms) for transient HTTP 408/429/5xx
23
+ * responses. Default: {@link DEFAULT_RETRY_BACKOFF_MS}
24
+ * (`[1000, 2000, 4000, 8000]` see issue #578 for the rationale; HF's
25
+ * 429 wave was longer-lived than the prior 200/800/3200 schedule could
26
+ * clear). Each entry is the delay before the Nth retry; an empty array
27
+ * disables retries. Non-retryable 4xx (e.g. 404) is not retried.
26
28
  */
27
29
  retryBackoffMs?: number[];
30
+ /** Minimum spacing between HF HTTP requests. Defaults to {@link DEFAULT_MIN_REQUEST_INTERVAL_MS}. */
31
+ minRequestIntervalMs?: number;
32
+ /** Sleep implementation. Defaults to the shared tx-retry sleep (allows test injection). */
33
+ sleep?: (ms: number) => Promise<void>;
34
+ /** Shared request limiter. Defaults to the module-level HF limiter. */
35
+ limiter?: HfRequestLimiter;
36
+ /** Random source for jittered backoff. Defaults to `Math.random` (test injection). */
37
+ random?: () => number;
28
38
  }
39
+ /**
40
+ * Per-attempt backoff schedule for HF datasets-server fetches. Four retries
41
+ * (5 total attempts), jittered ±33%, max worst-case ≈15s extra latency per
42
+ * failing instance. Tuned for HF's 429 envelope per issue #578.
43
+ */
44
+ export declare const DEFAULT_RETRY_BACKOFF_MS: readonly number[];
45
+ /**
46
+ * Process-wide floor on the spacing between HF HTTP requests. Raised from
47
+ * 250ms after issue #578 — 250ms × 4 retries was insufficient to clear the
48
+ * 429 wave when validating ~700 instances in one pass. This is the AC3
49
+ * concurrency-cap surface: the shared limiter serialises requests at this
50
+ * granularity across the whole process. Tune via {@link HttpHfFetcherOptions.minRequestIntervalMs}
51
+ * or {@link FetchHfWithRetryOptions.minRequestIntervalMs}; see the design note
52
+ * at `docs/superpowers/specs/2026-05-26-issue-578-hf-429-retry-design.md`.
53
+ */
54
+ export declare const DEFAULT_MIN_REQUEST_INTERVAL_MS = 500;
55
+ export interface HfRequestLimiter {
56
+ schedule<T>(fn: () => Promise<T>, opts: {
57
+ minRequestIntervalMs: number;
58
+ sleep: (ms: number) => Promise<void>;
59
+ }): Promise<T>;
60
+ }
61
+ declare class SharedHfRequestLimiter implements HfRequestLimiter {
62
+ private tail;
63
+ private lastStartedAt;
64
+ schedule<T>(fn: () => Promise<T>, opts: {
65
+ minRequestIntervalMs: number;
66
+ sleep: (ms: number) => Promise<void>;
67
+ }): Promise<T>;
68
+ }
69
+ /**
70
+ * Module-level shared request limiter. Serialises HF requests across the
71
+ * whole process (every callsite that uses {@link fetchHfWithRetry} routes
72
+ * through this instance by default). AC3 from issue #578: this plus the
73
+ * raised {@link DEFAULT_MIN_REQUEST_INTERVAL_MS} *is* the concurrency-cap
74
+ * knob — no separate parallel-request cap is exposed.
75
+ */
76
+ export declare const sharedHfRequestLimiter: SharedHfRequestLimiter;
77
+ export interface FetchHfWithRetryOptions {
78
+ /** Fetch implementation. Defaults to `globalThis.fetch` bound to `globalThis`. */
79
+ fetchImpl?: typeof fetch;
80
+ /** Per-attempt backoff schedule (ms). Defaults to {@link DEFAULT_RETRY_BACKOFF_MS}. */
81
+ retryBackoffMs?: readonly number[];
82
+ /** Minimum spacing between requests. Defaults to {@link DEFAULT_MIN_REQUEST_INTERVAL_MS}. */
83
+ minRequestIntervalMs?: number;
84
+ /** Sleep implementation. Defaults to the shared tx-retry sleep. */
85
+ sleep?: (ms: number) => Promise<void>;
86
+ /** Shared request limiter. Defaults to {@link sharedHfRequestLimiter}. */
87
+ limiter?: HfRequestLimiter;
88
+ /** Random source for jittered backoff. Defaults to `Math.random` (test injection). */
89
+ random?: () => number;
90
+ }
91
+ /**
92
+ * Shared retry helper for HF datasets-server requests.
93
+ *
94
+ * - Retries on `408 | 429 | 5xx` per {@link isRetryableStatus}.
95
+ * - Sleeps the smaller of the `Retry-After` header (when present) or a
96
+ * jittered backoff drawn from `retryBackoffMs`.
97
+ * - Routes every attempt through the shared {@link HfRequestLimiter} so the
98
+ * process-wide min-interval is honoured.
99
+ * - On retry exhaustion against a non-OK response, throws
100
+ * `Object.assign(new Error('HF returned <status>'), { httpStatus })` so
101
+ * callers can branch on the status code (issue #578: the validated-pool
102
+ * pipeline keys off `httpStatus === 429` to classify transient failures).
103
+ *
104
+ * Non-retryable responses (e.g. 404) are returned to the caller untouched —
105
+ * caller decides how to fail.
106
+ */
107
+ export declare function fetchHfWithRetry(url: string, opts?: FetchHfWithRetryOptions): Promise<Response>;
29
108
  export declare class HttpHfFetcher implements HfFetcher {
30
109
  private readonly baseUrl;
31
110
  private readonly pageSize;
32
111
  private readonly maxRows;
33
112
  private readonly fetchImpl;
34
113
  private readonly retryBackoffMs;
114
+ private readonly minRequestIntervalMs;
115
+ private readonly sleep;
116
+ private readonly limiter;
117
+ private readonly random;
35
118
  constructor(opts?: HttpHfFetcherOptions);
36
119
  private fetchWithRetry;
37
120
  fetchTaskRow(args: {
@@ -40,3 +123,4 @@ export declare class HttpHfFetcher implements HfFetcher {
40
123
  instance_id: string;
41
124
  }): Promise<HfRow>;
42
125
  }
126
+ export {};
@@ -8,41 +8,132 @@
8
8
  * cap (default 1000 rows = 10 pages). The harness fails loud rather than
9
9
  * silently grading against a missing instance.
10
10
  */
11
+ import { sleep as defaultSleep } from '../../../tx-retry.js';
11
12
  const DEFAULT_BASE_URL = 'https://datasets-server.huggingface.co/rows';
12
- const DEFAULT_RETRY_BACKOFF_MS = [200, 800, 3200];
13
+ /**
14
+ * Per-attempt backoff schedule for HF datasets-server fetches. Four retries
15
+ * (5 total attempts), jittered ±33%, max worst-case ≈15s extra latency per
16
+ * failing instance. Tuned for HF's 429 envelope per issue #578.
17
+ */
18
+ export const DEFAULT_RETRY_BACKOFF_MS = [1000, 2000, 4000, 8000];
19
+ /**
20
+ * Process-wide floor on the spacing between HF HTTP requests. Raised from
21
+ * 250ms after issue #578 — 250ms × 4 retries was insufficient to clear the
22
+ * 429 wave when validating ~700 instances in one pass. This is the AC3
23
+ * concurrency-cap surface: the shared limiter serialises requests at this
24
+ * granularity across the whole process. Tune via {@link HttpHfFetcherOptions.minRequestIntervalMs}
25
+ * or {@link FetchHfWithRetryOptions.minRequestIntervalMs}; see the design note
26
+ * at `docs/superpowers/specs/2026-05-26-issue-578-hf-429-retry-design.md`.
27
+ */
28
+ export const DEFAULT_MIN_REQUEST_INTERVAL_MS = 500;
29
+ const JITTER_FACTOR = 0.33; // ±33% symmetric uniform jitter
30
+ class SharedHfRequestLimiter {
31
+ tail = Promise.resolve();
32
+ lastStartedAt = 0;
33
+ schedule(fn, opts) {
34
+ const run = this.tail.catch(() => undefined).then(async () => {
35
+ const elapsed = Date.now() - this.lastStartedAt;
36
+ const waitMs = Math.max(0, opts.minRequestIntervalMs - elapsed);
37
+ if (waitMs > 0) {
38
+ await opts.sleep(waitMs);
39
+ }
40
+ this.lastStartedAt = Date.now();
41
+ return fn();
42
+ });
43
+ this.tail = run.then(() => undefined, () => undefined);
44
+ return run;
45
+ }
46
+ }
47
+ /**
48
+ * Module-level shared request limiter. Serialises HF requests across the
49
+ * whole process (every callsite that uses {@link fetchHfWithRetry} routes
50
+ * through this instance by default). AC3 from issue #578: this plus the
51
+ * raised {@link DEFAULT_MIN_REQUEST_INTERVAL_MS} *is* the concurrency-cap
52
+ * knob — no separate parallel-request cap is exposed.
53
+ */
54
+ export const sharedHfRequestLimiter = new SharedHfRequestLimiter();
55
+ /**
56
+ * Shared retry helper for HF datasets-server requests.
57
+ *
58
+ * - Retries on `408 | 429 | 5xx` per {@link isRetryableStatus}.
59
+ * - Sleeps the smaller of the `Retry-After` header (when present) or a
60
+ * jittered backoff drawn from `retryBackoffMs`.
61
+ * - Routes every attempt through the shared {@link HfRequestLimiter} so the
62
+ * process-wide min-interval is honoured.
63
+ * - On retry exhaustion against a non-OK response, throws
64
+ * `Object.assign(new Error('HF returned <status>'), { httpStatus })` so
65
+ * callers can branch on the status code (issue #578: the validated-pool
66
+ * pipeline keys off `httpStatus === 429` to classify transient failures).
67
+ *
68
+ * Non-retryable responses (e.g. 404) are returned to the caller untouched —
69
+ * caller decides how to fail.
70
+ */
71
+ export async function fetchHfWithRetry(url, opts = {}) {
72
+ const fetchImpl = opts.fetchImpl ?? fetch.bind(globalThis);
73
+ const retryBackoffMs = opts.retryBackoffMs ?? DEFAULT_RETRY_BACKOFF_MS;
74
+ const minRequestIntervalMs = opts.minRequestIntervalMs ?? DEFAULT_MIN_REQUEST_INTERVAL_MS;
75
+ const sleep = opts.sleep ?? defaultSleep;
76
+ const limiter = opts.limiter ?? sharedHfRequestLimiter;
77
+ const random = opts.random ?? Math.random;
78
+ for (let attempt = 0; attempt <= retryBackoffMs.length; attempt += 1) {
79
+ let retryAfterMs;
80
+ try {
81
+ const res = await limiter.schedule(() => fetchImpl(url), { minRequestIntervalMs, sleep });
82
+ if (res.ok || !isRetryableStatus(res.status))
83
+ return res;
84
+ if (attempt >= retryBackoffMs.length) {
85
+ throw Object.assign(new Error(`HF returned ${res.status}`), { httpStatus: res.status });
86
+ }
87
+ retryAfterMs = retryAfterHeaderMs(res.headers.get('Retry-After'));
88
+ }
89
+ catch (err) {
90
+ // On the final attempt, surface the error (network failure or the
91
+ // synthetic `httpStatus`-tagged throw above). Otherwise fall through
92
+ // to the backoff sleep and retry.
93
+ if (attempt >= retryBackoffMs.length)
94
+ throw err;
95
+ }
96
+ const base = retryBackoffMs[attempt] ?? 0;
97
+ await sleep(retryAfterMs ?? withJitter(base, random));
98
+ }
99
+ // Unreachable: the loop returns or throws on every iteration. Kept to
100
+ // satisfy TS control-flow analysis.
101
+ throw new Error('HF fetch failed after retries');
102
+ }
103
+ function withJitter(baseMs, random) {
104
+ const jitter = (random() * 2 - 1) * JITTER_FACTOR;
105
+ return Math.round(baseMs * (1 + jitter));
106
+ }
13
107
  export class HttpHfFetcher {
14
108
  baseUrl;
15
109
  pageSize;
16
110
  maxRows;
17
111
  fetchImpl;
18
112
  retryBackoffMs;
113
+ minRequestIntervalMs;
114
+ sleep;
115
+ limiter;
116
+ random;
19
117
  constructor(opts = {}) {
20
118
  this.baseUrl = opts.baseUrl ?? DEFAULT_BASE_URL;
21
119
  this.pageSize = Math.min(opts.pageSize ?? 100, 100);
22
120
  this.maxRows = opts.maxRows ?? 1000;
23
121
  this.fetchImpl = opts.fetchImpl ?? fetch.bind(globalThis);
24
122
  this.retryBackoffMs = opts.retryBackoffMs ?? DEFAULT_RETRY_BACKOFF_MS;
123
+ this.minRequestIntervalMs = opts.minRequestIntervalMs ?? DEFAULT_MIN_REQUEST_INTERVAL_MS;
124
+ this.sleep = opts.sleep ?? defaultSleep;
125
+ this.limiter = opts.limiter ?? sharedHfRequestLimiter;
126
+ this.random = opts.random ?? Math.random;
25
127
  }
26
128
  async fetchWithRetry(url) {
27
- let lastErr = null;
28
- for (let attempt = 0; attempt <= this.retryBackoffMs.length; attempt += 1) {
29
- try {
30
- const res = await this.fetchImpl(url);
31
- if (res.ok || (res.status >= 400 && res.status < 500))
32
- return res;
33
- // 5xx → retry-eligible
34
- lastErr = new Error(`HF returned ${res.status}`);
35
- }
36
- catch (err) {
37
- lastErr = err;
38
- }
39
- if (attempt < this.retryBackoffMs.length) {
40
- await new Promise((r) => setTimeout(r, this.retryBackoffMs[attempt]));
41
- }
42
- }
43
- if (lastErr instanceof Error)
44
- throw lastErr;
45
- throw new Error('HF fetch failed after retries');
129
+ return fetchHfWithRetry(url, {
130
+ fetchImpl: this.fetchImpl,
131
+ retryBackoffMs: this.retryBackoffMs,
132
+ minRequestIntervalMs: this.minRequestIntervalMs,
133
+ sleep: this.sleep,
134
+ limiter: this.limiter,
135
+ random: this.random,
136
+ });
46
137
  }
47
138
  async fetchTaskRow(args) {
48
139
  let offset = 0;
@@ -53,9 +144,23 @@ export class HttpHfFetcher {
53
144
  url.searchParams.set('split', args.hf_split);
54
145
  url.searchParams.set('offset', String(offset));
55
146
  url.searchParams.set('length', String(this.pageSize));
56
- const res = await this.fetchWithRetry(url.toString());
147
+ let res;
148
+ try {
149
+ res = await this.fetchWithRetry(url.toString());
150
+ }
151
+ catch (err) {
152
+ // fetchHfWithRetry surfaces `httpStatus` on exhausted-retry errors.
153
+ // Re-shape the message to the dataset/split form callers expect, but
154
+ // preserve the `httpStatus` property so the validated-pool catch
155
+ // block can branch on it (issue #578).
156
+ const httpStatus = err?.httpStatus;
157
+ if (typeof httpStatus === 'number') {
158
+ throw Object.assign(new Error(`HF datasets-server returned ${httpStatus} for ${args.hf_dataset}/${args.hf_split}`), { httpStatus });
159
+ }
160
+ throw err;
161
+ }
57
162
  if (!res.ok) {
58
- throw new Error(`HF datasets-server returned ${res.status} for ${args.hf_dataset}/${args.hf_split}`);
163
+ throw Object.assign(new Error(`HF datasets-server returned ${res.status} for ${args.hf_dataset}/${args.hf_split}`), { httpStatus: res.status });
59
164
  }
60
165
  const body = (await res.json());
61
166
  const rows = (body.rows ?? []).map((r) => r.row ?? {});
@@ -117,4 +222,20 @@ function arrayOfStrings(v) {
117
222
  return [];
118
223
  return v.filter((s) => typeof s === 'string');
119
224
  }
225
+ function isRetryableStatus(status) {
226
+ return status === 408 || status === 429 || status >= 500;
227
+ }
228
+ function retryAfterHeaderMs(value) {
229
+ if (!value)
230
+ return undefined;
231
+ const seconds = Number(value);
232
+ if (Number.isFinite(seconds) && seconds >= 0) {
233
+ return seconds * 1000;
234
+ }
235
+ const dateMs = Date.parse(value);
236
+ if (!Number.isNaN(dateMs)) {
237
+ return Math.max(0, dateMs - Date.now());
238
+ }
239
+ return undefined;
240
+ }
120
241
  //# sourceMappingURL=hf-fetcher.js.map