@jinn-network/client 0.1.8 → 0.1.9-canary.023faefb

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 (733) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/README.md +6 -0
  3. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  4. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
  5. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
  6. package/dist/adapters/mech/adapter.d.ts +31 -1
  7. package/dist/adapters/mech/adapter.js +126 -53
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +174 -13
  10. package/dist/adapters/mech/contracts.js +99 -49
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  13. package/dist/adapters/mech/safe-revert.js +5 -1
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.js +77 -1
  16. package/dist/adapters/mech/safe.js.map +1 -1
  17. package/dist/adapters/mech/types.d.ts +5 -130
  18. package/dist/adapters/mech/types.js +9 -65
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.js +1 -1
  21. package/dist/adapters/mech/verdict-code.js.map +1 -1
  22. package/dist/api/bootstrap-endpoint.d.ts +19 -3
  23. package/dist/api/bootstrap-endpoint.js +4 -0
  24. package/dist/api/bootstrap-endpoint.js.map +1 -1
  25. package/dist/api/discovery-endpoint.d.ts +1 -0
  26. package/dist/api/discovery-endpoint.js +24 -0
  27. package/dist/api/discovery-endpoint.js.map +1 -1
  28. package/dist/api/fleet-build.d.ts +1 -7
  29. package/dist/api/fleet-build.js +0 -7
  30. package/dist/api/fleet-build.js.map +1 -1
  31. package/dist/api/gather-status.d.ts +26 -17
  32. package/dist/api/gather-status.js +62 -520
  33. package/dist/api/gather-status.js.map +1 -1
  34. package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
  35. package/dist/api/harness-auth-status-endpoint.js +17 -0
  36. package/dist/api/harness-auth-status-endpoint.js.map +1 -0
  37. package/dist/api/launcher-endpoints.js +6 -1
  38. package/dist/api/launcher-endpoints.js.map +1 -1
  39. package/dist/api/launcher-status.d.ts +2 -0
  40. package/dist/api/launcher-status.js.map +1 -1
  41. package/dist/api/launcher-tasks.d.ts +47 -0
  42. package/dist/api/launcher-tasks.js +88 -3
  43. package/dist/api/launcher-tasks.js.map +1 -1
  44. package/dist/api/loop-completion-build.d.ts +79 -0
  45. package/dist/api/loop-completion-build.js +154 -0
  46. package/dist/api/loop-completion-build.js.map +1 -0
  47. package/dist/api/operator-artifacts-endpoint.js +1 -1
  48. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  49. package/dist/api/portfolio-v0-build.d.ts +2 -1
  50. package/dist/api/portfolio-v0-build.js +5 -7
  51. package/dist/api/portfolio-v0-build.js.map +1 -1
  52. package/dist/api/prediction-v1-build.d.ts +2 -2
  53. package/dist/api/prediction-v1-build.js +5 -7
  54. package/dist/api/prediction-v1-build.js.map +1 -1
  55. package/dist/api/rewards-build.d.ts +8 -1
  56. package/dist/api/rewards-build.js +32 -4
  57. package/dist/api/rewards-build.js.map +1 -1
  58. package/dist/api/rewards-endpoint.d.ts +12 -0
  59. package/dist/api/rewards-endpoint.js +46 -0
  60. package/dist/api/rewards-endpoint.js.map +1 -0
  61. package/dist/api/server.d.ts +6 -16
  62. package/dist/api/server.js +29 -26
  63. package/dist/api/server.js.map +1 -1
  64. package/dist/api/setup-endpoints.d.ts +45 -0
  65. package/dist/api/setup-endpoints.js +271 -52
  66. package/dist/api/setup-endpoints.js.map +1 -1
  67. package/dist/api/solvernets-endpoints.js +4 -1
  68. package/dist/api/solvernets-endpoints.js.map +1 -1
  69. package/dist/api/status-build.d.ts +71 -94
  70. package/dist/api/status-build.js +11 -77
  71. package/dist/api/status-build.js.map +1 -1
  72. package/dist/api/status-rollup-build.d.ts +0 -4
  73. package/dist/api/status-rollup-build.js +0 -4
  74. package/dist/api/status-rollup-build.js.map +1 -1
  75. package/dist/api/stop-hook.d.ts +1 -1
  76. package/dist/api/stop-hook.js +1 -1
  77. package/dist/api/stop-hook.js.map +1 -1
  78. package/dist/api/task-run-routing.d.ts +1 -1
  79. package/dist/api/task-runs-build.d.ts +2 -2
  80. package/dist/api/task-runs-build.js +5 -7
  81. package/dist/api/task-runs-build.js.map +1 -1
  82. package/dist/bin/jinn-distil-mcp.js +813 -0
  83. package/dist/bin/jinn-layer.js +12568 -0
  84. package/dist/build-info.json +4 -4
  85. package/dist/build-meta.json +1 -1
  86. package/dist/captures/distil-export.d.ts +54 -0
  87. package/dist/captures/distil-export.js +135 -0
  88. package/dist/captures/distil-export.js.map +1 -0
  89. package/dist/captures/ingest.d.ts +21 -0
  90. package/dist/captures/ingest.js +144 -0
  91. package/dist/captures/ingest.js.map +1 -0
  92. package/dist/captures/live-publisher.d.ts +9 -0
  93. package/dist/captures/live-publisher.js +5 -3
  94. package/dist/captures/live-publisher.js.map +1 -1
  95. package/dist/captures/publish.d.ts +15 -0
  96. package/dist/captures/publish.js +17 -7
  97. package/dist/captures/publish.js.map +1 -1
  98. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  99. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  100. package/dist/cli/commands/doctor.d.ts +3 -0
  101. package/dist/cli/commands/doctor.js +36 -4
  102. package/dist/cli/commands/doctor.js.map +1 -1
  103. package/dist/cli/commands/eval.d.ts +87 -0
  104. package/dist/cli/commands/eval.js +481 -0
  105. package/dist/cli/commands/eval.js.map +1 -0
  106. package/dist/cli/commands/rewards.d.ts +2 -0
  107. package/dist/cli/commands/rewards.js +39 -10
  108. package/dist/cli/commands/rewards.js.map +1 -1
  109. package/dist/cli/commands/solver-nets.js +68 -0
  110. package/dist/cli/commands/solver-nets.js.map +1 -1
  111. package/dist/cli/commands/status.js +0 -1
  112. package/dist/cli/commands/status.js.map +1 -1
  113. package/dist/cli/commands/update.js +8 -0
  114. package/dist/cli/commands/update.js.map +1 -1
  115. package/dist/cli/commands/version.js +4 -0
  116. package/dist/cli/commands/version.js.map +1 -1
  117. package/dist/cli/execution-context.js +2 -1
  118. package/dist/cli/execution-context.js.map +1 -1
  119. package/dist/cli/index.js +2 -0
  120. package/dist/cli/index.js.map +1 -1
  121. package/dist/cli/introspection-context.js +0 -3
  122. package/dist/cli/introspection-context.js.map +1 -1
  123. package/dist/config.d.ts +158 -541
  124. package/dist/config.js +190 -197
  125. package/dist/config.js.map +1 -1
  126. package/dist/contracts/abis.d.ts +100 -0
  127. package/dist/contracts/abis.js +58 -0
  128. package/dist/contracts/abis.js.map +1 -0
  129. package/dist/contracts/addresses.d.ts +36 -0
  130. package/dist/contracts/addresses.js +60 -0
  131. package/dist/contracts/addresses.js.map +1 -0
  132. package/dist/corpus/acquire.d.ts +7 -6
  133. package/dist/corpus/acquire.js +10 -10
  134. package/dist/corpus/acquire.js.map +1 -1
  135. package/dist/corpus/fetch-artifact.d.ts +21 -0
  136. package/dist/corpus/fetch-artifact.js +33 -0
  137. package/dist/corpus/fetch-artifact.js.map +1 -0
  138. package/dist/corpus/index.d.ts +2 -2
  139. package/dist/corpus/onchain-query.d.ts +0 -1
  140. package/dist/corpus/onchain-query.js +2 -5
  141. package/dist/corpus/onchain-query.js.map +1 -1
  142. package/dist/corpus/route-resolver.d.ts +3 -3
  143. package/dist/corpus/route-resolver.js +3 -3
  144. package/dist/daemon/ai-units-gate.d.ts +6 -6
  145. package/dist/daemon/ai-units-gate.js +11 -10
  146. package/dist/daemon/ai-units-gate.js.map +1 -1
  147. package/dist/daemon/balance-topup-loop.js +27 -9
  148. package/dist/daemon/balance-topup-loop.js.map +1 -1
  149. package/dist/daemon/checkpoint-loop.js +2 -2
  150. package/dist/daemon/creator.d.ts +1 -0
  151. package/dist/daemon/creator.js +39 -25
  152. package/dist/daemon/creator.js.map +1 -1
  153. package/dist/daemon/daemon.d.ts +15 -10
  154. package/dist/daemon/daemon.js +95 -41
  155. package/dist/daemon/daemon.js.map +1 -1
  156. package/dist/daemon/delivery-watcher.d.ts +9 -0
  157. package/dist/daemon/delivery-watcher.js +24 -1
  158. package/dist/daemon/delivery-watcher.js.map +1 -1
  159. package/dist/daemon/eviction-loop.d.ts +7 -0
  160. package/dist/daemon/eviction-loop.js +19 -3
  161. package/dist/daemon/eviction-loop.js.map +1 -1
  162. package/dist/daemon/join-applier.d.ts +35 -0
  163. package/dist/daemon/join-applier.js +49 -0
  164. package/dist/daemon/join-applier.js.map +1 -0
  165. package/dist/daemon/loop-heartbeat.d.ts +89 -0
  166. package/dist/daemon/loop-heartbeat.js +75 -0
  167. package/dist/daemon/loop-heartbeat.js.map +1 -0
  168. package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
  169. package/dist/daemon/peer-sync.js.map +1 -0
  170. package/dist/daemon/reward-claim-loop.js +28 -10
  171. package/dist/daemon/reward-claim-loop.js.map +1 -1
  172. package/dist/daemon/skip-log-dedup.d.ts +1 -1
  173. package/dist/daemon/skip-log-dedup.js +3 -0
  174. package/dist/daemon/skip-log-dedup.js.map +1 -1
  175. package/dist/daemon/spend-cap-gate.d.ts +0 -6
  176. package/dist/daemon/spend-cap-gate.js +1 -8
  177. package/dist/daemon/spend-cap-gate.js.map +1 -1
  178. package/dist/daemon/watchdog-loop.d.ts +84 -0
  179. package/dist/daemon/watchdog-loop.js +91 -0
  180. package/dist/daemon/watchdog-loop.js.map +1 -0
  181. package/dist/dashboard/assets/index-B_5Cb-ZH.js +161 -0
  182. package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
  183. package/dist/dashboard/index.html +2 -2
  184. package/dist/discovery/http.d.ts +17 -0
  185. package/dist/discovery/http.js +378 -26
  186. package/dist/discovery/http.js.map +1 -1
  187. package/dist/discovery/onchain.js +174 -10
  188. package/dist/discovery/onchain.js.map +1 -1
  189. package/dist/discovery/types.d.ts +149 -0
  190. package/dist/discovery/types.js +40 -0
  191. package/dist/discovery/types.js.map +1 -1
  192. package/dist/discovery/with-fallback.js +24 -0
  193. package/dist/discovery/with-fallback.js.map +1 -1
  194. package/dist/earning/bootstrap-run.d.ts +25 -0
  195. package/dist/earning/bootstrap-run.js +315 -0
  196. package/dist/earning/bootstrap-run.js.map +1 -0
  197. package/dist/earning/bootstrap.d.ts +31 -11
  198. package/dist/earning/bootstrap.js +123 -212
  199. package/dist/earning/bootstrap.js.map +1 -1
  200. package/dist/earning/contracts.d.ts +2 -232
  201. package/dist/earning/contracts.js +16 -205
  202. package/dist/earning/contracts.js.map +1 -1
  203. package/dist/earning/faucet-topup-store.d.ts +41 -0
  204. package/dist/earning/faucet-topup-store.js +89 -0
  205. package/dist/earning/faucet-topup-store.js.map +1 -0
  206. package/dist/earning/faucet.d.ts +1 -1
  207. package/dist/earning/faucet.js +2 -2
  208. package/dist/earning/faucet.js.map +1 -1
  209. package/dist/earning/safe-adapter.js +12 -45
  210. package/dist/earning/safe-adapter.js.map +1 -1
  211. package/dist/earning/steps/context.d.ts +42 -0
  212. package/dist/earning/steps/context.js +4 -0
  213. package/dist/earning/steps/context.js.map +1 -0
  214. package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
  215. package/dist/earning/steps/fleet-identity-register.js +65 -0
  216. package/dist/earning/steps/fleet-identity-register.js.map +1 -0
  217. package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
  218. package/dist/earning/steps/fleet-safe-deploy.js +62 -0
  219. package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
  220. package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
  221. package/dist/earning/steps/fleet-safe-predict.js +18 -0
  222. package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
  223. package/dist/earning/steps/receipt-parsing.d.ts +12 -0
  224. package/dist/earning/steps/receipt-parsing.js +71 -0
  225. package/dist/earning/steps/receipt-parsing.js.map +1 -0
  226. package/dist/earning/stolas-claim.js +8 -8
  227. package/dist/earning/stolas-claim.js.map +1 -1
  228. package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
  229. package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
  230. package/dist/earning/stolas-staking.js.map +1 -0
  231. package/dist/earning/testnet-setup-migration.d.ts +1 -0
  232. package/dist/earning/testnet-setup-migration.js +7 -2
  233. package/dist/earning/testnet-setup-migration.js.map +1 -1
  234. package/dist/earning/types.d.ts +1 -1
  235. package/dist/earning/types.js +1 -1
  236. package/dist/earning/types.js.map +1 -1
  237. package/dist/earning/viem-clients.d.ts +3 -19
  238. package/dist/earning/viem-clients.js +4 -31
  239. package/dist/earning/viem-clients.js.map +1 -1
  240. package/dist/erc8004/addresses.d.ts +6 -5
  241. package/dist/erc8004/addresses.js +7 -5
  242. package/dist/erc8004/addresses.js.map +1 -1
  243. package/dist/erc8004/identity.d.ts +12 -1
  244. package/dist/erc8004/identity.js +31 -0
  245. package/dist/erc8004/identity.js.map +1 -1
  246. package/dist/erc8004/index.d.ts +1 -1
  247. package/dist/erc8004/index.js +1 -1
  248. package/dist/erc8004/index.js.map +1 -1
  249. package/dist/eval/capability-slate.d.ts +54 -0
  250. package/dist/eval/capability-slate.js +116 -0
  251. package/dist/eval/capability-slate.js.map +1 -0
  252. package/dist/eval/capability-stats.d.ts +39 -0
  253. package/dist/eval/capability-stats.js +123 -0
  254. package/dist/eval/capability-stats.js.map +1 -0
  255. package/dist/eval/contested-band.d.ts +18 -0
  256. package/dist/eval/contested-band.js +19 -0
  257. package/dist/eval/contested-band.js.map +1 -0
  258. package/dist/eval/corpus-index.d.ts +21 -0
  259. package/dist/eval/corpus-index.js +55 -0
  260. package/dist/eval/corpus-index.js.map +1 -0
  261. package/dist/eval/disjointness.d.ts +26 -0
  262. package/dist/eval/disjointness.js +67 -0
  263. package/dist/eval/disjointness.js.map +1 -0
  264. package/dist/eval/eval-harness-run.d.ts +63 -0
  265. package/dist/eval/eval-harness-run.js +123 -0
  266. package/dist/eval/eval-harness-run.js.map +1 -0
  267. package/dist/eval/mcnemar-power.d.ts +14 -0
  268. package/dist/eval/mcnemar-power.js +40 -0
  269. package/dist/eval/mcnemar-power.js.map +1 -0
  270. package/dist/eval/orchestrator.d.ts +224 -0
  271. package/dist/eval/orchestrator.js +250 -0
  272. package/dist/eval/orchestrator.js.map +1 -0
  273. package/dist/eval/paired.d.ts +68 -0
  274. package/dist/eval/paired.js +93 -0
  275. package/dist/eval/paired.js.map +1 -0
  276. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  277. package/dist/eval/resolve-slate-tasks.js +56 -0
  278. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  279. package/dist/eval/screen-discovery.d.ts +22 -0
  280. package/dist/eval/screen-discovery.js +71 -0
  281. package/dist/eval/screen-discovery.js.map +1 -0
  282. package/dist/eval/screen-progress.d.ts +41 -0
  283. package/dist/eval/screen-progress.js +60 -0
  284. package/dist/eval/screen-progress.js.map +1 -0
  285. package/dist/eval/screen-runner.d.ts +30 -0
  286. package/dist/eval/screen-runner.js +289 -0
  287. package/dist/eval/screen-runner.js.map +1 -0
  288. package/dist/eval/screen.d.ts +107 -0
  289. package/dist/eval/screen.js +159 -0
  290. package/dist/eval/screen.js.map +1 -0
  291. package/dist/eval/slope.d.ts +29 -0
  292. package/dist/eval/slope.js +46 -0
  293. package/dist/eval/slope.js.map +1 -0
  294. package/dist/eval/train-sequence.d.ts +35 -0
  295. package/dist/eval/train-sequence.js +59 -0
  296. package/dist/eval/train-sequence.js.map +1 -0
  297. package/dist/eval/wilson.d.ts +45 -0
  298. package/dist/eval/wilson.js +48 -0
  299. package/dist/eval/wilson.js.map +1 -0
  300. package/dist/events/types.d.ts +1 -1
  301. package/dist/events/types.js +1 -1
  302. package/dist/events/types.js.map +1 -1
  303. package/dist/harnesses/auth-source.d.ts +51 -0
  304. package/dist/harnesses/auth-source.js +155 -0
  305. package/dist/harnesses/auth-source.js.map +1 -0
  306. package/dist/harnesses/engine/canonical-json.js +5 -3
  307. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  308. package/dist/harnesses/engine/engine.d.ts +34 -1
  309. package/dist/harnesses/engine/engine.js +91 -11
  310. package/dist/harnesses/engine/engine.js.map +1 -1
  311. package/dist/harnesses/engine/packaging.js +5 -5
  312. package/dist/harnesses/engine/packaging.js.map +1 -1
  313. package/dist/harnesses/engine/persistence.d.ts +19 -61
  314. package/dist/harnesses/engine/persistence.js +28 -0
  315. package/dist/harnesses/engine/persistence.js.map +1 -1
  316. package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
  317. package/dist/harnesses/impls/_evaluator-base.js +35 -0
  318. package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
  319. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  320. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  321. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  322. package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
  323. package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
  324. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
  325. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
  326. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
  327. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
  328. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
  329. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
  330. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
  331. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
  332. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
  333. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
  334. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
  335. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
  336. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
  337. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
  338. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
  339. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
  340. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
  341. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
  342. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
  343. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
  344. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
  345. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
  346. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  347. package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
  348. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  349. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  350. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  351. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  352. package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
  353. package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
  354. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  355. package/dist/harnesses/impls/index.d.ts +2 -0
  356. package/dist/harnesses/impls/index.js +10 -1
  357. package/dist/harnesses/impls/index.js.map +1 -1
  358. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  359. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  360. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  361. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  362. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  363. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  364. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  365. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  366. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  367. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  368. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  369. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  370. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  371. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  372. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
  373. package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
  374. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  375. package/dist/harnesses/impls/learner/harness.d.ts +29 -1
  376. package/dist/harnesses/impls/learner/harness.js +85 -1
  377. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  378. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  379. package/dist/harnesses/impls/learner/harvest.js +51 -1
  380. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  381. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  382. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  383. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +5 -15
  384. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
  385. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
  386. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
  387. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
  388. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  389. package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
  390. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
  391. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
  392. package/dist/harnesses/impls/stub.d.ts +2 -2
  393. package/dist/harnesses/impls/stub.js +2 -2
  394. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +8 -0
  395. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  396. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
  397. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  398. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  399. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  400. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  401. package/dist/harnesses/readiness-registry.d.ts +16 -0
  402. package/dist/harnesses/readiness-registry.js +28 -6
  403. package/dist/harnesses/readiness-registry.js.map +1 -1
  404. package/dist/harnesses/types.d.ts +26 -0
  405. package/dist/learner/revert-decision.d.ts +16 -1
  406. package/dist/learner/revert-decision.js +38 -18
  407. package/dist/learner/revert-decision.js.map +1 -1
  408. package/dist/learner/revert-stats.d.ts +14 -0
  409. package/dist/learner/revert-stats.js +42 -0
  410. package/dist/learner/revert-stats.js.map +1 -1
  411. package/dist/learner/verification-gate.d.ts +53 -0
  412. package/dist/learner/verification-gate.js +80 -0
  413. package/dist/learner/verification-gate.js.map +1 -0
  414. package/dist/local-provider-url.d.ts +3 -0
  415. package/dist/local-provider-url.js +28 -0
  416. package/dist/local-provider-url.js.map +1 -0
  417. package/dist/main.js +188 -566
  418. package/dist/main.js.map +1 -1
  419. package/dist/mcp/acquire-artifact.d.ts +3 -3
  420. package/dist/mcp/acquire-artifact.js +3 -3
  421. package/dist/mcp/operator-server.js +1 -1
  422. package/dist/mcp/operator-server.js.map +1 -1
  423. package/dist/mcp/server.js +5 -6
  424. package/dist/mcp/server.js.map +1 -1
  425. package/dist/monitoring/net-liveness.d.ts +143 -0
  426. package/dist/monitoring/net-liveness.js +301 -0
  427. package/dist/monitoring/net-liveness.js.map +1 -0
  428. package/dist/observability/emit-event.d.ts +1 -1
  429. package/dist/observability/emit-event.js +0 -4
  430. package/dist/observability/emit-event.js.map +1 -1
  431. package/dist/observability/progress.d.ts +11 -0
  432. package/dist/observability/progress.js +16 -0
  433. package/dist/observability/progress.js.map +1 -0
  434. package/dist/pilot/cost.d.ts +19 -0
  435. package/dist/pilot/cost.js +31 -0
  436. package/dist/pilot/cost.js.map +1 -0
  437. package/dist/pilot/instance.d.ts +20 -0
  438. package/dist/pilot/instance.js +19 -0
  439. package/dist/pilot/instance.js.map +1 -0
  440. package/dist/pilot/repo.d.ts +31 -0
  441. package/dist/pilot/repo.js +42 -0
  442. package/dist/pilot/repo.js.map +1 -0
  443. package/dist/pilot/solve.d.ts +22 -0
  444. package/dist/pilot/solve.js +37 -0
  445. package/dist/pilot/solve.js.map +1 -0
  446. package/dist/pilot/tally.d.ts +35 -0
  447. package/dist/pilot/tally.js +61 -0
  448. package/dist/pilot/tally.js.map +1 -0
  449. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  450. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  451. package/dist/plugins/learner/hooks/session-start +30 -1
  452. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  453. package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  454. package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  455. package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
  456. package/dist/plugins/local-trace-distiller/README.md +27 -0
  457. package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  458. package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  459. package/dist/preflight/deployment-readiness.d.ts +127 -0
  460. package/dist/preflight/deployment-readiness.js +308 -0
  461. package/dist/preflight/deployment-readiness.js.map +1 -0
  462. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  463. package/dist/preflight/pidfile-liveness.js +14 -0
  464. package/dist/preflight/pidfile-liveness.js.map +1 -1
  465. package/dist/preflight/rpc-network.d.ts +10 -3
  466. package/dist/preflight/rpc-network.js +46 -13
  467. package/dist/preflight/rpc-network.js.map +1 -1
  468. package/dist/preflight/stable-cwd.d.ts +29 -0
  469. package/dist/preflight/stable-cwd.js +98 -0
  470. package/dist/preflight/stable-cwd.js.map +1 -0
  471. package/dist/rpc/transport.d.ts +43 -5
  472. package/dist/rpc/transport.js +131 -30
  473. package/dist/rpc/transport.js.map +1 -1
  474. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  475. package/dist/solver-nets/registry.d.ts +19 -0
  476. package/dist/solver-nets/registry.js +95 -66
  477. package/dist/solver-nets/registry.js.map +1 -1
  478. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  479. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  480. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  481. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  482. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  483. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  484. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  485. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  486. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  487. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  488. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  489. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  490. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
  491. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
  492. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  493. package/dist/solver-types/index.js +2 -0
  494. package/dist/solver-types/index.js.map +1 -1
  495. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  496. package/dist/solver-types/jinn-repo-admit.js +16 -0
  497. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  498. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  499. package/dist/solver-types/jinn-repo-auto.js +163 -0
  500. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  501. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  502. package/dist/solver-types/jinn-repo-definition.js +34 -0
  503. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  504. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  505. package/dist/solver-types/jinn-repo-extract.js +32 -0
  506. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  507. package/dist/solver-types/jinn-repo.d.ts +21 -0
  508. package/dist/solver-types/jinn-repo.js +23 -0
  509. package/dist/solver-types/jinn-repo.js.map +1 -0
  510. package/dist/solver-types/learner-loop-test.js +1 -1
  511. package/dist/solver-types/learner-loop-test.js.map +1 -1
  512. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  513. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  514. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  515. package/dist/solver-types/solver-type.d.ts +8 -0
  516. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  517. package/dist/solver-types/swe-rebench-v2.js +115 -10
  518. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  519. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  520. package/dist/solvernets/launched-record-dispatcher.js +14 -1
  521. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  522. package/dist/solvernets/registry-client-erc8004.js +29 -37
  523. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  524. package/dist/solvernets/registry-client.d.ts +6 -0
  525. package/dist/solvernets/store.d.ts +1 -1
  526. package/dist/solvernets/store.js +8 -3
  527. package/dist/solvernets/store.js.map +1 -1
  528. package/dist/spend/ai-units-config.d.ts +10 -0
  529. package/dist/spend/ai-units-config.js +7 -1
  530. package/dist/spend/ai-units-config.js.map +1 -1
  531. package/dist/spend/ai-units.d.ts +51 -0
  532. package/dist/spend/ai-units.js +73 -0
  533. package/dist/spend/ai-units.js.map +1 -1
  534. package/dist/spend/credential.d.ts +2 -2
  535. package/dist/spend/credential.js +9 -3
  536. package/dist/spend/credential.js.map +1 -1
  537. package/dist/spend/record.js +12 -5
  538. package/dist/spend/record.js.map +1 -1
  539. package/dist/spend/spend-cap.d.ts +10 -0
  540. package/dist/spend/spend-cap.js +13 -0
  541. package/dist/spend/spend-cap.js.map +1 -0
  542. package/dist/spend/usage.js +39 -3
  543. package/dist/spend/usage.js.map +1 -1
  544. package/dist/store/store.d.ts +106 -5
  545. package/dist/store/store.js +194 -8
  546. package/dist/store/store.js.map +1 -1
  547. package/dist/trajectory/emit.d.ts +6 -0
  548. package/dist/trajectory/emit.js +9 -1
  549. package/dist/trajectory/emit.js.map +1 -1
  550. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  551. package/dist/trajectory/harness-bundle-schema.js +1 -1
  552. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  553. package/dist/trajectory/processors/identity-scrub.js +22 -3
  554. package/dist/trajectory/processors/identity-scrub.js.map +1 -1
  555. package/dist/trajectory/schema.d.ts +1 -1
  556. package/dist/trajectory/schema.js +1 -1
  557. package/dist/trajectory/schema.js.map +1 -1
  558. package/dist/trajectory/scrub/build.d.ts +46 -0
  559. package/dist/trajectory/scrub/build.js +76 -0
  560. package/dist/trajectory/scrub/build.js.map +1 -0
  561. package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
  562. package/dist/trajectory/scrub/emit-scrub.js +88 -0
  563. package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
  564. package/dist/trajectory/scrub/key-policy.d.ts +20 -0
  565. package/dist/trajectory/scrub/key-policy.js +43 -0
  566. package/dist/trajectory/scrub/key-policy.js.map +1 -0
  567. package/dist/trajectory/scrub/layer2.d.ts +23 -0
  568. package/dist/trajectory/scrub/layer2.js +33 -0
  569. package/dist/trajectory/scrub/layer2.js.map +1 -0
  570. package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
  571. package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
  572. package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
  573. package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
  574. package/dist/trajectory/scrub/openredaction-stage.js +269 -0
  575. package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
  576. package/dist/trajectory/scrub/pii-build.d.ts +31 -0
  577. package/dist/trajectory/scrub/pii-build.js +64 -0
  578. package/dist/trajectory/scrub/pii-build.js.map +1 -0
  579. package/dist/trajectory/scrub/pipeline.d.ts +37 -0
  580. package/dist/trajectory/scrub/pipeline.js +83 -0
  581. package/dist/trajectory/scrub/pipeline.js.map +1 -0
  582. package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
  583. package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
  584. package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
  585. package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
  586. package/dist/trajectory/scrub/secretlint-stage.js +250 -0
  587. package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
  588. package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
  589. package/dist/trajectory/scrub/transformers-detector.js +68 -0
  590. package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
  591. package/dist/trajectory/scrub/types.d.ts +25 -0
  592. package/dist/trajectory/scrub/types.js +2 -0
  593. package/dist/trajectory/scrub/types.js.map +1 -0
  594. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  595. package/dist/trajectory/transcript-parsers/types.js +1 -1
  596. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  597. package/dist/trajectory/transcript-watcher.d.ts +26 -0
  598. package/dist/trajectory/transcript-watcher.js +33 -0
  599. package/dist/trajectory/transcript-watcher.js.map +1 -1
  600. package/dist/tx-retry.d.ts +12 -0
  601. package/dist/tx-retry.js +41 -12
  602. package/dist/tx-retry.js.map +1 -1
  603. package/dist/types/envelope.d.ts +1 -1
  604. package/dist/types/envelope.js +1 -1
  605. package/dist/types/envelope.js.map +1 -1
  606. package/dist/types/payloads/index.d.ts +1 -1
  607. package/dist/types/payloads/index.js +7 -1
  608. package/dist/types/payloads/index.js.map +1 -1
  609. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  610. package/dist/types/payloads/portfolio-v0.js +1 -1
  611. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  612. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  613. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  614. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  615. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  616. package/dist/types/payloads/prediction-v0.js +1 -1
  617. package/dist/types/payloads/prediction-v0.js.map +1 -1
  618. package/dist/types/portfolio.d.ts +1 -1
  619. package/dist/types/portfolio.js +1 -1
  620. package/dist/types/portfolio.js.map +1 -1
  621. package/dist/types/prediction-apy.d.ts +1 -1
  622. package/dist/types/prediction-apy.js +1 -1
  623. package/dist/types/prediction-apy.js.map +1 -1
  624. package/dist/types/prediction.d.ts +1 -1
  625. package/dist/types/prediction.js +1 -1
  626. package/dist/types/prediction.js.map +1 -1
  627. package/dist/types/session-provenance.d.ts +1 -1
  628. package/dist/types/session-provenance.js +1 -1
  629. package/dist/types/session-provenance.js.map +1 -1
  630. package/dist/types/skill-artifact.d.ts +442 -0
  631. package/dist/types/skill-artifact.js +137 -0
  632. package/dist/types/skill-artifact.js.map +1 -0
  633. package/dist/types/task-document.d.ts +315 -1
  634. package/dist/types/task-document.js +9 -1
  635. package/dist/types/task-document.js.map +1 -1
  636. package/dist/types/task-run-read-model.d.ts +21 -0
  637. package/dist/types/task-run-read-model.js +2 -0
  638. package/dist/types/task-run-read-model.js.map +1 -0
  639. package/dist/types/task-run.d.ts +75 -0
  640. package/dist/types/task-run.js +2 -0
  641. package/dist/types/task-run.js.map +1 -0
  642. package/dist/types/task.d.ts +29 -1
  643. package/dist/types/task.js +1 -1
  644. package/dist/types/task.js.map +1 -1
  645. package/dist/types/window.d.ts +1 -1
  646. package/dist/types/window.js +1 -1
  647. package/dist/types/window.js.map +1 -1
  648. package/dist/util/redact-rpc-urls.d.ts +1 -1
  649. package/dist/util/redact-rpc-urls.js +57 -2
  650. package/dist/util/redact-rpc-urls.js.map +1 -1
  651. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  652. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  653. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  654. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  655. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  656. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  657. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  658. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  659. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  660. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  661. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  662. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  663. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  664. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  665. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  666. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  667. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  668. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  669. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  670. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  671. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  672. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  673. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  674. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  675. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  676. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  677. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
  678. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
  679. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  680. package/docker-compose.yml +3 -2
  681. package/package.json +43 -28
  682. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  683. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  684. package/plugins/jinn-repo-runtime/README.md +27 -0
  685. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  686. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  687. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  688. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  689. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  690. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  691. package/plugins/learner/hooks/session-start +30 -1
  692. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  693. package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  694. package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  695. package/plugins/local-trace-distiller/.mcp.json +8 -0
  696. package/plugins/local-trace-distiller/README.md +27 -0
  697. package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  698. package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  699. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  700. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  701. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
  702. package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
  703. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
  704. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
  705. package/dist/api/peers.js.map +0 -1
  706. package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
  707. package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
  708. package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
  709. package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
  710. package/dist/daemon/jinn-claim-loop-mock.js +0 -122
  711. package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
  712. package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
  713. package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
  714. package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
  715. package/dist/daemon/jinn-claim-loop.d.ts +0 -130
  716. package/dist/daemon/jinn-claim-loop.js +0 -328
  717. package/dist/daemon/jinn-claim-loop.js.map +0 -1
  718. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  719. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
  720. package/dist/earning/jinn-rewards.js.map +0 -1
  721. package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
  722. package/dist/scripts/donation-consumption-acceptance.js +0 -1382
  723. package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
  724. package/dist/x402/acquire.d.ts +0 -17
  725. package/dist/x402/acquire.js +0 -49
  726. package/dist/x402/acquire.js.map +0 -1
  727. package/dist/x402/facilitator.d.ts +0 -11
  728. package/dist/x402/facilitator.js +0 -52
  729. package/dist/x402/facilitator.js.map +0 -1
  730. package/dist/x402/handler.d.ts +0 -27
  731. package/dist/x402/handler.js +0 -236
  732. package/dist/x402/handler.js.map +0 -1
  733. /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
package/CONTRIBUTING.md CHANGED
@@ -74,7 +74,7 @@ The `files` field in `package.json` ensures only `dist/`, `deployments/`, `READM
74
74
 
75
75
  ## Releases
76
76
 
77
- Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the cross-operator donation consumption gate (`yarn release:donation-consumption`), the contracts release gate (`cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant`), and the manual Docker-first real testnet acceptance gate (`yarn release:testnet-acceptance`) that must pass on the exact stable release commit. The dedicated Docker acceptance environment and evidence expectations are documented in [TESTNET_ACCEPTANCE.md](./TESTNET_ACCEPTANCE.md).
77
+ Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the OLAS rails smoke gate (`yarn release:olas-rails-smoke`), the contracts release gate (`cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant`), and the manual Docker-first real testnet acceptance gate (`yarn release:testnet-acceptance`) that must pass on the exact stable release commit. The dedicated Docker acceptance environment and evidence expectations are documented in [TESTNET_ACCEPTANCE.md](./TESTNET_ACCEPTANCE.md).
78
78
 
79
79
  ## Updating deployment artifacts
80
80
 
@@ -98,7 +98,7 @@ This copies the 4 deployment JSON files from `contracts/` into `client/deploymen
98
98
  | `yarn staking` | Earning bootstrap validation on Anvil fork |
99
99
  | `yarn pack:smoke` | Pack tarball and run smoke tests |
100
100
  | `yarn release:operator-gate` | Run the stable-release operator gate (`staking` then `e2e`) |
101
- | `yarn release:donation-consumption` | Prove two isolated operators can consume donated SWE execution data through real testnet on-chain/IPFS/MCP paths |
101
+ | `yarn release:olas-rails-smoke` | Dry-run by default: writes a prediction.v1 smoke spec and evidence plan; pass `--execute` for live Base Sepolia OLAS rails proof |
102
102
  | `cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant` | Run the contracts release gate |
103
103
  | `yarn release:testnet-acceptance` | Run the manual Docker-first real testnet acceptance harness |
104
104
  | `yarn setup:testnet-acceptance-operator` | First-time Docker acceptance setup + bootstrap/funding helper (`TESTNET_ACCEPTANCE.md`) |
package/README.md CHANGED
@@ -184,6 +184,12 @@ returns `waiting_for_external_action` with the URL and the exact command to
184
184
  rerun next. Agents with the `jinn-operator` skill installed know how to walk an
185
185
  operator through a SolverNet automatically.
186
186
 
187
+ Each Harness reads its **own** auth store (the daemon only forwards an
188
+ allowlisted set of env vars — it does not hold your provider keys). For the
189
+ per-harness auth store, the canonical rotate command/file, and why `client/.env`
190
+ must not be used to set provider keys at runtime, see
191
+ [`docs/operator/rotating-harness-keys.md`](../docs/operator/rotating-harness-keys.md).
192
+
187
193
  **Safety net:** before spending gas on a claim, the daemon checks whether the
188
194
  responsible Harness is actually ready. If a portfolio.v0 request arrives and your
189
195
  api-wallet isn't approved, the daemon records the Task as FAILED locally
@@ -2,7 +2,7 @@
2
2
  "network": "baseSepolia",
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
- "deployedAt": "2026-04-09T13:21:20.747Z",
5
+ "deployedAt": "2026-06-30T16:18:56.618Z",
6
6
  "config": {
7
7
  "timingProfile": "fast-test",
8
8
  "fee": 0,
@@ -18,9 +18,9 @@
18
18
  "mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
19
19
  "balanceTracker": "0xDbeEF1947F7BB3657f984aA6b230a0ca6578229D",
20
20
  "mechFactory": "0x206183F35B2450Ca15A906BB923E74d945F78d67",
21
- "jinnRouter": "0x13dae57a54A7DF862113BcA8Ee2fd3dEf6a6A94A",
21
+ "jinnRouter": "0x6059Dd37eB0FD3a55BCe7A3C1fA86AB84F2d9675",
22
22
  "serviceRegistry": "0x31D3202d8744B16A120117A053459DDFAE93c855",
23
23
  "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
24
- "stakingToken": "0x24e34E5037956a5Feca1AAAfaA30297084C228B8"
24
+ "stakingToken": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39"
25
25
  }
26
26
  }
@@ -2,10 +2,10 @@
2
2
  "network": "baseSepolia",
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
- "deployedAt": "2026-04-10T16:46:00.888Z",
5
+ "deployedAt": "2026-06-30T16:18:56.618Z",
6
6
  "config": {
7
7
  "l2Jinn": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
8
- "stakingContract": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
8
+ "stakingContract": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
9
9
  "l1DepositProcessor": "0x494FBcd686C895fD6265e852086B53Abf15cb076",
10
10
  "l1DistributorProxy": "0x12F14eF5b4881a932BE3F334599cB9473aBE987A",
11
11
  "l1TreasuryProxy": "0xa87c117cB54d9C6C8a8e0aA0b336a1125E485Cb7",
@@ -31,5 +31,25 @@
31
31
  "stakingManagerImpl": "0xFb0B086D3f7C03f1F671C6ccD5D16CC779B25Af9",
32
32
  "stakingManager": "0x5edCd012C581b946E06a74e1906a5f29D588403e",
33
33
  "baseStakingProcessorL2": "0x23a063f600e9938405D0367a137f1bE2F0B4D0D2"
34
- }
34
+ },
35
+ "rewires": [
36
+ {
37
+ "rewiredAt": "2026-06-29T14:53:46.226Z",
38
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
39
+ "legacyStakingProxy": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
40
+ "freshStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
41
+ "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
42
+ "packedConfig": "2199023257600001",
43
+ "fundWei": "100000000000000000000"
44
+ },
45
+ {
46
+ "rewiredAt": "2026-06-30T16:18:56.618Z",
47
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
48
+ "legacyStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
49
+ "freshStakingProxy": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
50
+ "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
51
+ "packedConfig": "2199023257600001",
52
+ "fundWei": "100000000000000000000"
53
+ }
54
+ ]
35
55
  }
@@ -3,7 +3,7 @@
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
5
  "owner": "0x15e78734481bD31F6e183dad05225505a45ACd07",
6
- "deployedAt": "2026-05-02T12:27:26.420Z",
6
+ "deployedAt": "2026-06-29T14:52:46.003Z",
7
7
  "config": {
8
8
  "timingProfile": "fast-test",
9
9
  "mechMarketplaceSource": "deployment-phase1b-mech-baseSepolia-fast.json",
@@ -11,13 +11,13 @@
11
11
  "coordinatorInitialOwner": "0x15e78734481bD31F6e183dad05225505a45ACd07"
12
12
  },
13
13
  "contracts": {
14
- "taskCoordinatorImpl": "0x830bFdBdA48D599e414c51888c8CDA6c84e67B18",
15
- "taskCoordinator": "0x9ce736d3CB367cC5Db538B7962bdf416EbD7451B",
16
- "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
17
- "jinnRouterV3": "0xdC9BCcEB7aca21Ad4Ca2Fc5B4d7aea6b4F6CedD9",
14
+ "taskCoordinatorImpl": "0xC756D4A5b7a6a7C2F74Fa4Ce4fd84E7b82D223ca",
15
+ "taskCoordinator": "0x8a34793e10595c89B7e41Cc7Ff0F76850F44AD98",
16
+ "jinnRouterV3Impl": "0x2521e932B2508B2589cCc35F8cfB8B29f0e086D5",
17
+ "jinnRouterV3": "0x6f47863Ac4120A5a97Af224a5e30C3Ec2c9eA247",
18
18
  "mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
19
19
  "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
20
- "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
20
+ "activityCheckerImpl": "0x3f061273348264b2a1Ae584eCC614185748832a8"
21
21
  },
22
22
  "upgrades": [
23
23
  {
@@ -33,6 +33,34 @@
33
33
  "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
34
34
  "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
35
35
  }
36
+ },
37
+ {
38
+ "upgradedAt": "2026-05-06T13:41:14.651Z",
39
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
40
+ "previous": {
41
+ "taskCoordinatorImpl": "0x830bFdBdA48D599e414c51888c8CDA6c84e67B18",
42
+ "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
43
+ "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
44
+ },
45
+ "current": {
46
+ "taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
47
+ "jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
48
+ "activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
49
+ }
50
+ },
51
+ {
52
+ "upgradedAt": "2026-06-29T14:52:46.003Z",
53
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
54
+ "previous": {
55
+ "taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
56
+ "jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
57
+ "activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
58
+ },
59
+ "current": {
60
+ "taskCoordinatorImpl": "0x69f857b222D970460202e9C94c6205Be87582610",
61
+ "jinnRouterV3Impl": "0x7c1F768E92c7Fd84e789CB7748B70340B876E25d",
62
+ "activityCheckerImpl": "0x916027798716518a601824ea1A6f09105a152C36"
63
+ }
36
64
  }
37
65
  ]
38
66
  }
@@ -52,7 +52,26 @@ export declare class MechAdapter implements ExecutionAdapter {
52
52
  constructor(config: MechAdapterConfig, store?: Store);
53
53
  initialize(): Promise<void>;
54
54
  private recoverPendingState;
55
- private onchainTaskDiscoveryFromBlock;
55
+ /**
56
+ * The gh #300 scorability admission floor: tasks created before this block are
57
+ * "ghosts" from a prior eval-semantics regime and are rejected — including on
58
+ * the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
59
+ * `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
60
+ * (the daemon claims nothing, so there is no floor to apply).
61
+ *
62
+ * This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
63
+ * Bounding the scan for RPC cost must never narrow which tasks are admitted.
64
+ */
65
+ private taskAdmissionFloorBlock;
66
+ /**
67
+ * Start block for the on-chain TaskCreated backlog scan (the secondary backstop
68
+ * behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
69
+ * window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
70
+ * floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
71
+ * `onchainFromBlock` override pins an absolute start, honored as the operator's
72
+ * choice. Returns `undefined` when no SolverNet is joined.
73
+ */
74
+ private onchainScanFromBlock;
56
75
  private joinedManifestDigestSet;
57
76
  private allowedDiscoveryTaskIds;
58
77
  private isDiscoveryTaskAllowed;
@@ -89,6 +108,16 @@ export declare class MechAdapter implements ExecutionAdapter {
89
108
  private buildEvaluationTask;
90
109
  private restorationAnnouncementForTaskId;
91
110
  private restorationAnnouncementFromDigest;
111
+ /**
112
+ * #1412: a task's execution window (task.window.endTs) is only known after
113
+ * IPFS hydration, not from any on-chain/discovery candidate shape. The
114
+ * engine kills the harness subprocess the instant this window is in the
115
+ * past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
116
+ * claiming an already-expired task always fails with no chance of a real
117
+ * solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
118
+ * backlog scan) must skip these before spending a claim tx on a doomed run.
119
+ */
120
+ private hasExpiredExecutionWindow;
92
121
  private discoverSubgraphRestorationTasks;
93
122
  /**
94
123
  * Look up the Deliver-event envelope CID for a pending evaluation solution.
@@ -118,6 +147,7 @@ export declare class MechAdapter implements ExecutionAdapter {
118
147
  submitSolutionDelivery(requestId: RequestId, solutionDigest: Hex): Promise<void>;
119
148
  submitVerdictDelivery(requestId: RequestId, verdictDigest: Hex, verdictCode: VerdictCode): Promise<void>;
120
149
  private deliveryClaimForDelivery;
150
+ private verdictCodeFromEnvelopePayload;
121
151
  private ensureDeliveryClaimed;
122
152
  /**
123
153
  * Paginate `getLogs` over `[deliveryBlockCursor+1, currentBlock]` chunked by
@@ -1,4 +1,4 @@
1
- import { getAddress, zeroAddress } from 'viem';
1
+ import { getAddress } from 'viem';
2
2
  import { keccak256, toBytes } from 'viem';
3
3
  import { privateKeyToAccount } from 'viem/accounts';
4
4
  import { base, baseSepolia } from 'viem/chains';
@@ -16,10 +16,11 @@ function rpcUrlForDisplay(rpcUrl) {
16
16
  import { buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, fetchSignedTaskFromIpfs, fetchSignedEnvelopeFromIpfs, } from './ipfs.js';
17
17
  import { canonicalJson } from '../../harnesses/engine/canonical-json.js';
18
18
  import { normalizeEnvelopeRole, SignedEnvelopeSchema } from '../../types/envelope.js';
19
- import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
19
+ import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, ROUTER_DISCOVERY_EVENTS, MECH_DELIVER_EVENT, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
20
20
  import { SafeInnerRevertError, formatDecodedRevert, isNonRecoverableInnerRevert, } from './safe-revert.js';
21
- import { verdictCodeFromValue } from './verdict-code.js';
21
+ import { VerdictCode, verdictCodeFromValue } from './verdict-code.js';
22
22
  import { manifestDigestForCid } from './digest.js';
23
+ import { recordLoopTick } from '../../daemon/loop-heartbeat.js';
23
24
  import { emitStructured } from '../../events/emitter.js';
24
25
  import { withRecoverableRetry } from '../../tx-retry.js';
25
26
  import { formatRpcError } from '../../rpc-error-context.js';
@@ -64,6 +65,20 @@ function isTerminalEvaluationReason(revertName) {
64
65
  return isNonRecoverableInnerRevert(revertName);
65
66
  }
66
67
  const DEFAULT_ROUTER_LOG_CHUNK_BLOCKS = 9999n;
68
+ /**
69
+ * Default rolling-window size for the on-chain TaskCreated backlog scan (#801).
70
+ *
71
+ * The scan is a *backstop* behind `DiscoveryAPI.findClaimableTasks` (the indexer
72
+ * on testnet, the newest-first RPC floor on mainnet), which is the primary
73
+ * discovery path on every chain. Without a bound the scan replays from the fixed
74
+ * admission floor to head on *every* restart, a range that grows monotonically
75
+ * with the chain — the startup-stall regression #801 documents. Bounding it to
76
+ * `head − N` makes restart cost fixed regardless of chain age while still
77
+ * re-observing a generous recent window (~28h on Base at ~2s/block) for tasks
78
+ * and SolutionDeliveryClaimed events the indexer might have lagged on. Operators
79
+ * who want a wider net pin an absolute start via `taskDiscoveryOnchainFromBlock`.
80
+ */
81
+ const DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS = 50000n;
67
82
  /**
68
83
  * Floor block for the on-chain TaskCreated backlog scan, per chain.
69
84
  *
@@ -173,7 +188,7 @@ export class MechAdapter {
173
188
  await this.recoverPendingState(blockNumber);
174
189
  }
175
190
  else {
176
- const fromBlock = this.onchainTaskDiscoveryFromBlock();
191
+ const fromBlock = this.onchainScanFromBlock(blockNumber);
177
192
  if (fromBlock && fromBlock <= blockNumber) {
178
193
  this.requestBlockCursor = fromBlock - 1n;
179
194
  }
@@ -193,17 +208,27 @@ export class MechAdapter {
193
208
  if (routerFromBlock < currentBlock) {
194
209
  this.requestBlockCursor = routerFromBlock;
195
210
  }
196
- const scanFromBlock = this.onchainTaskDiscoveryFromBlock();
211
+ const scanFromBlock = this.onchainScanFromBlock(currentBlock);
197
212
  if (scanFromBlock && scanFromBlock <= currentBlock) {
198
213
  const canonicalCursor = scanFromBlock - 1n;
199
214
  if (canonicalCursor < this.requestBlockCursor) {
200
215
  this.requestBlockCursor = canonicalCursor;
201
216
  }
202
- console.error(`[mech] TaskCreated canonical backlog scan enabled from block ${scanFromBlock}; ` +
203
- 'subgraph discovery is optional acceleration only');
217
+ console.error(`[mech] TaskCreated backlog scan (bounded backstop) enabled from block ${scanFromBlock}; ` +
218
+ 'DiscoveryAPI.findClaimableTasks is the primary discovery path');
204
219
  }
205
220
  }
206
- onchainTaskDiscoveryFromBlock() {
221
+ /**
222
+ * The gh #300 scorability admission floor: tasks created before this block are
223
+ * "ghosts" from a prior eval-semantics regime and are rejected — including on
224
+ * the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
225
+ * `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
226
+ * (the daemon claims nothing, so there is no floor to apply).
227
+ *
228
+ * This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
229
+ * Bounding the scan for RPC cost must never narrow which tasks are admitted.
230
+ */
231
+ taskAdmissionFloorBlock() {
207
232
  const discovery = this.config.taskDiscovery;
208
233
  const hasJoinedSolverNet = (discovery?.solverNetManifestCids?.length ?? 0) > 0;
209
234
  if (!hasJoinedSolverNet)
@@ -215,6 +240,24 @@ export class MechAdapter {
215
240
  }
216
241
  return DEFAULT_TASK_DISCOVERY_FROM_BLOCK[this.config.chainId];
217
242
  }
243
+ /**
244
+ * Start block for the on-chain TaskCreated backlog scan (the secondary backstop
245
+ * behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
246
+ * window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
247
+ * floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
248
+ * `onchainFromBlock` override pins an absolute start, honored as the operator's
249
+ * choice. Returns `undefined` when no SolverNet is joined.
250
+ */
251
+ onchainScanFromBlock(head) {
252
+ const floor = this.taskAdmissionFloorBlock();
253
+ if (floor === undefined)
254
+ return undefined;
255
+ // An explicit override is reflected verbatim in `floor`; honor it as the pin.
256
+ if (this.config.taskDiscovery?.onchainFromBlock !== undefined)
257
+ return floor;
258
+ const window = head - DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS;
259
+ return window > floor ? window : floor;
260
+ }
218
261
  joinedManifestDigestSet() {
219
262
  const cids = this.config.taskDiscovery?.solverNetManifestCids ?? [];
220
263
  return new Set(cids
@@ -236,8 +279,13 @@ export class MechAdapter {
236
279
  const end = start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > toBlock
237
280
  ? toBlock
238
281
  : start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
282
+ // #116: filter server-side to the two router events the poll loop decodes
283
+ // (TaskCreated + SolutionDeliveryClaimed) via an OR-of-topic0, instead of an
284
+ // address-only scan that decode-discards the rest. Chunking is unchanged —
285
+ // a topic filter shrinks the result set, not the permitted block range.
239
286
  logs.push(...await this.publicClient.getLogs({
240
287
  address: this.config.routerAddress,
288
+ events: ROUTER_DISCOVERY_EVENTS,
241
289
  fromBlock: start,
242
290
  toBlock: end,
243
291
  }));
@@ -481,45 +529,25 @@ export class MechAdapter {
481
529
  return signTaskV1(taskDoc, this.config.agentEoaPrivateKey);
482
530
  }
483
531
  contractPolicyForTask(state) {
484
- const nowSeconds = Math.floor(Date.now() / 1000);
532
+ // Tokenless-OLAS pivot: the on-chain TaskCoordinator.TaskPolicy is the
533
+ // launcher-funded attempt count (`maxClaims`) plus the self-evaluation gate
534
+ // (`allowSolverSelfEvaluation`). Windows, lease, and quorum do NOT cross the
535
+ // wire — that off-chain scheduling intent stays in the task.v1 `claimPolicy`
536
+ // field (still carried on the signed task document and read by the local
537
+ // scheduler).
538
+ //
539
+ // `allowSolverSelfEvaluation` comes from the off-chain `claimPolicy` when it
540
+ // sets the flag explicitly; that explicit value always wins. When it is
541
+ // absent (the common case — the auto-generators do not set it) the default
542
+ // is network-keyed: TRUE on testnet (Base Sepolia, 84532) so a single
543
+ // operator can solve + self-evaluate + close the loop solo for dogfooding,
544
+ // and FALSE on mainnet to preserve the independent-evaluation invariant (the
545
+ // coordinator rejects a verdict whose evaluator is the attempt's solver).
485
546
  const claimPolicy = state.claimPolicy ?? DEFAULT_MECH_CLAIM_POLICY;
486
- const normalizeTs = (value, fallback) => {
487
- const raw = value ?? fallback;
488
- return BigInt(raw > 10_000_000_000 ? Math.floor(raw / 1000) : raw);
489
- };
490
- const claimWindowStart = normalizeTs(claimPolicy.claimWindowStartTs ?? state.window?.startTs, nowSeconds);
491
- const claimWindowEnd = normalizeTs(claimPolicy.claimWindowEndTs ?? state.window?.endTs, nowSeconds + 30 * 60);
492
- const submissionDeadline = normalizeTs(claimPolicy.submissionDeadlineTs, Number(claimWindowEnd) + claimPolicy.claimLeaseTtlSeconds);
547
+ const isTestnet = this.config.chainId === 84532;
493
548
  return {
494
- claimWindowStart,
495
- claimWindowEnd,
496
- submissionDeadline,
497
- claimLeaseTtlSeconds: claimPolicy.claimLeaseTtlSeconds,
498
549
  maxClaims: claimPolicy.maxClaims,
499
- maxClaimsPerOperator: claimPolicy.maxClaimsPerOperator,
500
- policyHook: (claimPolicy.policyHook ?? zeroAddress),
501
- evaluationPolicy: {
502
- // `requiredVerdicts` defaults to 1 but is overridable via the task's
503
- // claim policy. A value > 1 opens additional verdict claim slots per
504
- // attempt; combined with the per-evaluator cap below (1), it
505
- // guarantees an honest evaluator can still claim and deliver a slot
506
- // even when other evaluators have squatted some — the structural fix
507
- // for a shared/adversarial testnet where a non-delivering claimer
508
- // would otherwise permanently lock a single-slot attempt.
509
- requiredVerdicts: claimPolicy.requiredVerdicts ?? 1,
510
- passThreshold: 1,
511
- evaluationDeadline: submissionDeadline + BigInt(claimPolicy.claimLeaseTtlSeconds),
512
- maxVerdictsPerEvaluator: 1,
513
- // Allow the same operator to evaluate its own Solution on Base Sepolia
514
- // (84532) so a single dogfood daemon can close the full
515
- // post→claim→solve→grade→settle loop without standing up a second
516
- // operator. Mainnet (8453) keeps the protocol-level protection.
517
- // TODO: revert to unconditional `true` before mainnet launch, OR move
518
- // this to a per-SolverNet manifest field so individual launchers can
519
- // opt in to single-operator dogfood while the protocol default stays
520
- // strict.
521
- disallowSolverSelfEvaluation: this.config.chainId !== 84532,
522
- },
550
+ allowSolverSelfEvaluation: claimPolicy.allowSolverSelfEvaluation ?? isTestnet,
523
551
  };
524
552
  }
525
553
  buildEvaluationTask(params) {
@@ -576,6 +604,19 @@ export class MechAdapter {
576
604
  this.observedTasks.set(params.taskId, announcement);
577
605
  return announcement;
578
606
  }
607
+ /**
608
+ * #1412: a task's execution window (task.window.endTs) is only known after
609
+ * IPFS hydration, not from any on-chain/discovery candidate shape. The
610
+ * engine kills the harness subprocess the instant this window is in the
611
+ * past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
612
+ * claiming an already-expired task always fails with no chance of a real
613
+ * solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
614
+ * backlog scan) must skip these before spending a claim tx on a doomed run.
615
+ */
616
+ hasExpiredExecutionWindow(announcement) {
617
+ const windowEndTs = announcement.task.window?.endTs;
618
+ return windowEndTs !== undefined && windowEndTs <= Date.now();
619
+ }
579
620
  async *discoverSubgraphRestorationTasks() {
580
621
  const discovery = this.config.taskDiscovery;
581
622
  const discoveryApi = discovery?.discoveryApi;
@@ -598,7 +639,7 @@ export class MechAdapter {
598
639
  console.error('[mech] task discovery (DiscoveryAPI) failed:', err instanceof Error ? err.message : err);
599
640
  return;
600
641
  }
601
- const discoveryFloorBlock = this.onchainTaskDiscoveryFromBlock();
642
+ const discoveryFloorBlock = this.taskAdmissionFloorBlock();
602
643
  for (const candidate of candidates) {
603
644
  if (!this.isDiscoveryTaskAllowed(candidate.taskId))
604
645
  continue;
@@ -636,12 +677,15 @@ export class MechAdapter {
636
677
  // cycle we let the engine apply its gate to each one, preserving the
637
678
  // round-robin fairness across joined SolverNets. See task 212 live
638
679
  // verification in the fix's commit body.
639
- yield await this.restorationAnnouncementFromDigest({
680
+ const announcement = await this.restorationAnnouncementFromDigest({
640
681
  taskId: candidate.taskId,
641
682
  taskCidDigest: candidate.taskCidDigest,
642
683
  transactionHash: candidate.createdAtTx,
643
684
  blockNumber: candidate.createdAtBlock,
644
685
  });
686
+ if (this.hasExpiredExecutionWindow(announcement))
687
+ continue;
688
+ yield announcement;
645
689
  }
646
690
  catch (err) {
647
691
  console.error(`[mech] failed to hydrate subgraph task ${candidate.taskId}:`, err instanceof Error ? err.message : err);
@@ -794,10 +838,6 @@ export class MechAdapter {
794
838
  for (const solution of submittedSolutions) {
795
839
  this.rememberPendingEvaluationSolution(solution);
796
840
  }
797
- this.requestBlockCursor = currentBlock;
798
- if (this.store) {
799
- this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
800
- }
801
841
  const joinedManifestDigests = this.joinedManifestDigestSet();
802
842
  const createdTasks = decodeTaskCreatedLogs(logs);
803
843
  for (const { taskId, taskCidDigest, manifestDigest, transactionHash, blockNumber } of createdTasks) {
@@ -817,6 +857,8 @@ export class MechAdapter {
817
857
  transactionHash,
818
858
  blockNumber,
819
859
  });
860
+ if (this.hasExpiredExecutionWindow(announcement))
861
+ continue;
820
862
  yield announcement;
821
863
  }
822
864
  catch (err) {
@@ -826,6 +868,10 @@ export class MechAdapter {
826
868
  for await (const announcement of this.retryPendingEvaluationSolutions()) {
827
869
  yield announcement;
828
870
  }
871
+ this.requestBlockCursor = currentBlock;
872
+ if (this.store) {
873
+ this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
874
+ }
829
875
  }
830
876
  }
831
877
  catch (err) {
@@ -837,6 +883,10 @@ export class MechAdapter {
837
883
  fromBlock: this.requestBlockCursor + 1n,
838
884
  }));
839
885
  }
886
+ // #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
887
+ // nothing was yielded) so an idle-but-polling loop never looks stale.
888
+ if (this.store)
889
+ recordLoopTick(this.store, 'engine-watcher');
840
890
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
841
891
  }
842
892
  }
@@ -930,15 +980,31 @@ export class MechAdapter {
930
980
  }
931
981
  const kind = role === 'verdict' ? 'verdict' : 'solution';
932
982
  const payload = rawSigned['payload'];
933
- const rawVerdict = payload != null && typeof payload === 'object'
934
- ? payload['verdict']
983
+ const verdictCode = kind === 'verdict'
984
+ ? this.verdictCodeFromEnvelopePayload(parsed.solverType, payload)
935
985
  : undefined;
936
986
  return {
937
987
  evidenceHash: recomputed,
938
988
  kind,
939
- verdictCode: kind === 'verdict' ? verdictCodeFromValue(rawVerdict) : undefined,
989
+ verdictCode,
940
990
  };
941
991
  }
992
+ verdictCodeFromEnvelopePayload(solverType, payload) {
993
+ if (payload == null || typeof payload !== 'object') {
994
+ throw new Error(`missing verdict payload for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
995
+ }
996
+ const record = payload;
997
+ const rawVerdict = record['verdict'];
998
+ if (rawVerdict !== undefined)
999
+ return verdictCodeFromValue(rawVerdict);
1000
+ if (solverType === 'swe-rebench-v2.v1') {
1001
+ const passedMatch = record['passed_match'];
1002
+ if (typeof passedMatch === 'boolean') {
1003
+ return passedMatch ? VerdictCode.Pass : VerdictCode.Fail;
1004
+ }
1005
+ }
1006
+ throw new Error(`missing verdict signal for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
1007
+ }
942
1008
  async ensureDeliveryClaimed(requestId, deliveryDataHex) {
943
1009
  let claimOptions;
944
1010
  try {
@@ -1001,8 +1067,11 @@ export class MechAdapter {
1001
1067
  const chunkEnd = chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > currentBlock
1002
1068
  ? currentBlock
1003
1069
  : chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
1070
+ // #116: pin the mech `Deliver` topic server-side rather than fetching the
1071
+ // whole address and decode-discarding. Range/chunking unchanged.
1004
1072
  const logs = await this.publicClient.getLogs({
1005
1073
  address: this.config.mechContractAddress,
1074
+ event: MECH_DELIVER_EVENT,
1006
1075
  fromBlock: chunkStart,
1007
1076
  toBlock: chunkEnd,
1008
1077
  });
@@ -1114,6 +1183,10 @@ export class MechAdapter {
1114
1183
  }
1115
1184
  // Cursor persistence is per-chunk inside the loop above (#552). A poll
1116
1185
  // that did no chunked work has no progress to persist.
1186
+ // #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
1187
+ // nothing was yielded) so an idle-but-polling loop never looks stale.
1188
+ if (this.store)
1189
+ recordLoopTick(this.store, 'delivery-watcher');
1117
1190
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
1118
1191
  }
1119
1192
  }