@jinn-network/client 0.1.2 → 0.1.3-canary.216cf7e6

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 (1461) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/CONTRIBUTING.md +9 -2
  3. package/README.md +67 -47
  4. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +36 -0
  5. package/deployments/deployment-jinn-mvi-l1-sepolia.json +36 -0
  6. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +12 -0
  7. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  8. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +1 -1
  9. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +38 -0
  10. package/dist/adapters/adapter.d.ts +19 -8
  11. package/dist/adapters/local/adapter.d.ts +10 -9
  12. package/dist/adapters/local/adapter.js +52 -79
  13. package/dist/adapters/local/adapter.js.map +1 -1
  14. package/dist/adapters/mech/adapter.d.ts +41 -15
  15. package/dist/adapters/mech/adapter.js +623 -362
  16. package/dist/adapters/mech/adapter.js.map +1 -1
  17. package/dist/adapters/mech/contracts.d.ts +82 -20
  18. package/dist/adapters/mech/contracts.js +374 -100
  19. package/dist/adapters/mech/contracts.js.map +1 -1
  20. package/dist/adapters/mech/ipfs.d.ts +66 -12
  21. package/dist/adapters/mech/ipfs.js +165 -30
  22. package/dist/adapters/mech/ipfs.js.map +1 -1
  23. package/dist/adapters/mech/safe-revert.d.ts +40 -0
  24. package/dist/adapters/mech/safe-revert.js +261 -0
  25. package/dist/adapters/mech/safe-revert.js.map +1 -0
  26. package/dist/adapters/mech/safe.js +48 -22
  27. package/dist/adapters/mech/safe.js.map +1 -1
  28. package/dist/adapters/mech/task-subgraph.d.ts +23 -0
  29. package/dist/adapters/mech/task-subgraph.js +157 -0
  30. package/dist/adapters/mech/task-subgraph.js.map +1 -0
  31. package/dist/adapters/mech/types.d.ts +263 -84
  32. package/dist/adapters/mech/types.js +125 -50
  33. package/dist/adapters/mech/types.js.map +1 -1
  34. package/dist/agent/agent-ws.d.ts +57 -0
  35. package/dist/agent/agent-ws.js +301 -0
  36. package/dist/agent/agent-ws.js.map +1 -0
  37. package/dist/agent/auto-mode-detect.d.ts +6 -0
  38. package/dist/agent/auto-mode-detect.js +44 -0
  39. package/dist/agent/auto-mode-detect.js.map +1 -0
  40. package/dist/agent/operator-claude.d.ts +22 -0
  41. package/dist/agent/operator-claude.js +176 -0
  42. package/dist/agent/operator-claude.js.map +1 -0
  43. package/dist/api/admin-endpoint.d.ts +12 -0
  44. package/dist/api/admin-endpoint.js +71 -0
  45. package/dist/api/admin-endpoint.js.map +1 -0
  46. package/dist/api/agent-binding-endpoint.d.ts +26 -0
  47. package/dist/api/agent-binding-endpoint.js +28 -0
  48. package/dist/api/agent-binding-endpoint.js.map +1 -0
  49. package/dist/api/bootstrap-endpoint.d.ts +25 -0
  50. package/dist/api/bootstrap-endpoint.js +104 -0
  51. package/dist/api/bootstrap-endpoint.js.map +1 -0
  52. package/dist/api/captures.d.ts +22 -0
  53. package/dist/api/captures.js +88 -0
  54. package/dist/api/captures.js.map +1 -0
  55. package/dist/api/events-endpoint.d.ts +9 -0
  56. package/dist/api/events-endpoint.js +46 -0
  57. package/dist/api/events-endpoint.js.map +1 -0
  58. package/dist/api/fleet-build.d.ts +1 -1
  59. package/dist/api/fleet-build.js +17 -8
  60. package/dist/api/fleet-build.js.map +1 -1
  61. package/dist/api/gather-status.d.ts +16 -1
  62. package/dist/api/gather-status.js +194 -3
  63. package/dist/api/gather-status.js.map +1 -1
  64. package/dist/api/handshake.d.ts +17 -0
  65. package/dist/api/handshake.js +28 -0
  66. package/dist/api/handshake.js.map +1 -0
  67. package/dist/api/harness-status-endpoint.d.ts +20 -0
  68. package/dist/api/harness-status-endpoint.js +13 -0
  69. package/dist/api/harness-status-endpoint.js.map +1 -0
  70. package/dist/api/history-build.d.ts +2 -2
  71. package/dist/api/history-build.js +3 -3
  72. package/dist/api/history-build.js.map +1 -1
  73. package/dist/api/launcher-endpoints.d.ts +43 -0
  74. package/dist/api/launcher-endpoints.js +50 -0
  75. package/dist/api/launcher-endpoints.js.map +1 -0
  76. package/dist/api/launcher-status.d.ts +93 -0
  77. package/dist/api/launcher-status.js +84 -0
  78. package/dist/api/launcher-status.js.map +1 -0
  79. package/dist/api/launcher-tasks.d.ts +76 -0
  80. package/dist/api/launcher-tasks.js +127 -0
  81. package/dist/api/launcher-tasks.js.map +1 -0
  82. package/dist/api/leaderboard-api.d.ts +20 -0
  83. package/dist/api/leaderboard-api.js +18 -0
  84. package/dist/api/leaderboard-api.js.map +1 -0
  85. package/dist/api/operator-artifacts-endpoint.d.ts +19 -0
  86. package/dist/api/operator-artifacts-endpoint.js +271 -0
  87. package/dist/api/operator-artifacts-endpoint.js.map +1 -0
  88. package/dist/api/peers.js +21 -6
  89. package/dist/api/peers.js.map +1 -1
  90. package/dist/api/portfolio-v0-build.d.ts +16 -10
  91. package/dist/api/portfolio-v0-build.js +36 -31
  92. package/dist/api/portfolio-v0-build.js.map +1 -1
  93. package/dist/api/portfolio-v0-doctor.js +1 -1
  94. package/dist/api/portfolio-v0-doctor.js.map +1 -1
  95. package/dist/api/prediction-v1-build.d.ts +65 -0
  96. package/dist/api/prediction-v1-build.js +73 -0
  97. package/dist/api/prediction-v1-build.js.map +1 -0
  98. package/dist/api/rewards-build.js +3 -8
  99. package/dist/api/rewards-build.js.map +1 -1
  100. package/dist/api/server.d.ts +106 -1
  101. package/dist/api/server.js +418 -17
  102. package/dist/api/server.js.map +1 -1
  103. package/dist/api/setup-endpoints.d.ts +62 -0
  104. package/dist/api/setup-endpoints.js +752 -0
  105. package/dist/api/setup-endpoints.js.map +1 -0
  106. package/dist/api/solvernets-catalog-build.d.ts +47 -0
  107. package/dist/api/solvernets-catalog-build.js +19 -0
  108. package/dist/api/solvernets-catalog-build.js.map +1 -0
  109. package/dist/api/solvernets-endpoint.d.ts +15 -0
  110. package/dist/api/solvernets-endpoint.js +5 -0
  111. package/dist/api/solvernets-endpoint.js.map +1 -0
  112. package/dist/api/solvernets-endpoints.d.ts +104 -0
  113. package/dist/api/solvernets-endpoints.js +1121 -0
  114. package/dist/api/solvernets-endpoints.js.map +1 -0
  115. package/dist/api/status-build.d.ts +26 -2
  116. package/dist/api/status-build.js +46 -9
  117. package/dist/api/status-build.js.map +1 -1
  118. package/dist/api/status-rollup-build.d.ts +46 -1
  119. package/dist/api/status-rollup-build.js +174 -8
  120. package/dist/api/status-rollup-build.js.map +1 -1
  121. package/dist/api/stop-hook.d.ts +36 -0
  122. package/dist/api/stop-hook.js +77 -0
  123. package/dist/api/stop-hook.js.map +1 -0
  124. package/dist/api/task-runs-build.d.ts +29 -0
  125. package/dist/api/task-runs-build.js +50 -0
  126. package/dist/api/task-runs-build.js.map +1 -0
  127. package/dist/api/ui-token.d.ts +5 -0
  128. package/dist/api/ui-token.js +36 -0
  129. package/dist/api/ui-token.js.map +1 -0
  130. package/dist/bin/jinn-stop-hook.d.ts +9 -0
  131. package/dist/bin/jinn-stop-hook.js +52 -0
  132. package/dist/bin/jinn-stop-hook.js.map +1 -0
  133. package/dist/build-info.d.ts +32 -0
  134. package/dist/build-info.js +69 -0
  135. package/dist/build-info.js.map +1 -0
  136. package/dist/build-info.json +6 -0
  137. package/dist/build-meta.json +1 -1
  138. package/dist/captures/dedup.d.ts +27 -0
  139. package/dist/captures/dedup.js +48 -0
  140. package/dist/captures/dedup.js.map +1 -0
  141. package/dist/captures/index.d.ts +4 -0
  142. package/dist/captures/index.js +5 -0
  143. package/dist/captures/index.js.map +1 -0
  144. package/dist/captures/live-publisher.d.ts +33 -0
  145. package/dist/captures/live-publisher.js +101 -0
  146. package/dist/captures/live-publisher.js.map +1 -0
  147. package/dist/captures/publish.d.ts +83 -0
  148. package/dist/captures/publish.js +212 -0
  149. package/dist/captures/publish.js.map +1 -0
  150. package/dist/captures/rate-limit.d.ts +39 -0
  151. package/dist/captures/rate-limit.js +79 -0
  152. package/dist/captures/rate-limit.js.map +1 -0
  153. package/dist/cli/command.d.ts +9 -0
  154. package/dist/cli/commands/auth.js +6 -3
  155. package/dist/cli/commands/auth.js.map +1 -1
  156. package/dist/cli/commands/balance.d.ts +7 -0
  157. package/dist/cli/commands/balance.js +38 -32
  158. package/dist/cli/commands/balance.js.map +1 -1
  159. package/dist/cli/commands/bootstrap.d.ts +13 -1
  160. package/dist/cli/commands/bootstrap.js +150 -133
  161. package/dist/cli/commands/bootstrap.js.map +1 -1
  162. package/dist/cli/commands/capture.d.ts +33 -0
  163. package/dist/cli/commands/capture.js +345 -0
  164. package/dist/cli/commands/capture.js.map +1 -0
  165. package/dist/cli/commands/checkpoint.d.ts +85 -0
  166. package/dist/cli/commands/checkpoint.js +75 -0
  167. package/dist/cli/commands/checkpoint.js.map +1 -0
  168. package/dist/cli/commands/claim-rewards.js +14 -2
  169. package/dist/cli/commands/claim-rewards.js.map +1 -1
  170. package/dist/cli/commands/conformance.d.ts +12 -0
  171. package/dist/cli/commands/conformance.js +140 -0
  172. package/dist/cli/commands/conformance.js.map +1 -0
  173. package/dist/cli/commands/create.d.ts +22 -0
  174. package/dist/cli/commands/create.js +226 -0
  175. package/dist/cli/commands/create.js.map +1 -0
  176. package/dist/cli/commands/doctor.d.ts +49 -1
  177. package/dist/cli/commands/doctor.js +162 -134
  178. package/dist/cli/commands/doctor.js.map +1 -1
  179. package/dist/cli/commands/fleet-scale.d.ts +19 -1
  180. package/dist/cli/commands/fleet-scale.js +378 -361
  181. package/dist/cli/commands/fleet-scale.js.map +1 -1
  182. package/dist/cli/commands/fleet.d.ts +7 -0
  183. package/dist/cli/commands/fleet.js +39 -33
  184. package/dist/cli/commands/fleet.js.map +1 -1
  185. package/dist/cli/commands/fund-requirements.d.ts +14 -1
  186. package/dist/cli/commands/fund-requirements.js +182 -174
  187. package/dist/cli/commands/fund-requirements.js.map +1 -1
  188. package/dist/cli/commands/harnesses.d.ts +38 -0
  189. package/dist/cli/commands/harnesses.js +376 -0
  190. package/dist/cli/commands/harnesses.js.map +1 -0
  191. package/dist/cli/commands/history.d.ts +10 -1
  192. package/dist/cli/commands/history.js +68 -59
  193. package/dist/cli/commands/history.js.map +1 -1
  194. package/dist/cli/commands/init.js +4 -1
  195. package/dist/cli/commands/init.js.map +1 -1
  196. package/dist/cli/commands/integrations.d.ts +13 -0
  197. package/dist/cli/commands/integrations.js +1010 -0
  198. package/dist/cli/commands/integrations.js.map +1 -0
  199. package/dist/cli/commands/logs.d.ts +6 -1
  200. package/dist/cli/commands/logs.js +77 -70
  201. package/dist/cli/commands/logs.js.map +1 -1
  202. package/dist/cli/commands/migrate-agent-id.d.ts +26 -0
  203. package/dist/cli/commands/migrate-agent-id.js +164 -0
  204. package/dist/cli/commands/migrate-agent-id.js.map +1 -0
  205. package/dist/cli/commands/prediction-scoreboard.d.ts +10 -0
  206. package/dist/cli/commands/prediction-scoreboard.js +136 -0
  207. package/dist/cli/commands/prediction-scoreboard.js.map +1 -0
  208. package/dist/cli/commands/quickstart.d.ts +51 -1
  209. package/dist/cli/commands/quickstart.js +514 -296
  210. package/dist/cli/commands/quickstart.js.map +1 -1
  211. package/dist/cli/commands/rewards.d.ts +7 -0
  212. package/dist/cli/commands/rewards.js +46 -40
  213. package/dist/cli/commands/rewards.js.map +1 -1
  214. package/dist/cli/commands/run.d.ts +14 -1
  215. package/dist/cli/commands/run.js +243 -91
  216. package/dist/cli/commands/run.js.map +1 -1
  217. package/dist/cli/commands/solver-nets.js +231 -0
  218. package/dist/cli/commands/solver-nets.js.map +1 -0
  219. package/dist/cli/commands/solver-plugins.d.ts +9 -0
  220. package/dist/cli/commands/solver-plugins.js +186 -0
  221. package/dist/cli/commands/solver-plugins.js.map +1 -0
  222. package/dist/cli/commands/status.d.ts +13 -0
  223. package/dist/cli/commands/status.js +105 -34
  224. package/dist/cli/commands/status.js.map +1 -1
  225. package/dist/cli/commands/stop.js +87 -14
  226. package/dist/cli/commands/stop.js.map +1 -1
  227. package/dist/cli/commands/tasks.js +405 -0
  228. package/dist/cli/commands/tasks.js.map +1 -0
  229. package/dist/cli/commands/ui.d.ts +3 -0
  230. package/dist/cli/commands/ui.js +45 -0
  231. package/dist/cli/commands/ui.js.map +1 -0
  232. package/dist/cli/commands/update.d.ts +12 -0
  233. package/dist/cli/commands/update.js +321 -91
  234. package/dist/cli/commands/update.js.map +1 -1
  235. package/dist/cli/commands/version.js +3 -2
  236. package/dist/cli/commands/version.js.map +1 -1
  237. package/dist/cli/commands/withdraw.d.ts +21 -1
  238. package/dist/cli/commands/withdraw.js +175 -159
  239. package/dist/cli/commands/withdraw.js.map +1 -1
  240. package/dist/cli/deployment-digest.js +0 -5
  241. package/dist/cli/deployment-digest.js.map +1 -1
  242. package/dist/cli/execution-context.d.ts +1 -1
  243. package/dist/cli/execution-context.js +4 -4
  244. package/dist/cli/execution-context.js.map +1 -1
  245. package/dist/cli/help.js +8 -1
  246. package/dist/cli/help.js.map +1 -1
  247. package/dist/cli/index.d.ts +7 -0
  248. package/dist/cli/index.js +28 -6
  249. package/dist/cli/index.js.map +1 -1
  250. package/dist/cli/introspection-context.js +0 -1
  251. package/dist/cli/introspection-context.js.map +1 -1
  252. package/dist/cli/open-browser.d.ts +1 -0
  253. package/dist/cli/open-browser.js +18 -0
  254. package/dist/cli/open-browser.js.map +1 -0
  255. package/dist/cli/password.d.ts +3 -3
  256. package/dist/cli/password.js +6 -6
  257. package/dist/cli/password.js.map +1 -1
  258. package/dist/cli/task-native-readiness.d.ts +27 -0
  259. package/dist/cli/task-native-readiness.js +170 -0
  260. package/dist/cli/task-native-readiness.js.map +1 -0
  261. package/dist/config.d.ts +1907 -60
  262. package/dist/config.js +608 -33
  263. package/dist/config.js.map +1 -1
  264. package/dist/conformance/checks/artifacts.d.ts +37 -0
  265. package/dist/conformance/checks/artifacts.js +110 -0
  266. package/dist/conformance/checks/artifacts.js.map +1 -0
  267. package/dist/conformance/checks/envelope-schema.d.ts +17 -0
  268. package/dist/conformance/checks/envelope-schema.js +36 -0
  269. package/dist/conformance/checks/envelope-schema.js.map +1 -0
  270. package/dist/conformance/checks/hash-signature.d.ts +26 -0
  271. package/dist/conformance/checks/hash-signature.js +70 -0
  272. package/dist/conformance/checks/hash-signature.js.map +1 -0
  273. package/dist/conformance/checks/payload.d.ts +19 -0
  274. package/dist/conformance/checks/payload.js +52 -0
  275. package/dist/conformance/checks/payload.js.map +1 -0
  276. package/dist/conformance/checks/secret-scrub.d.ts +33 -0
  277. package/dist/conformance/checks/secret-scrub.js +118 -0
  278. package/dist/conformance/checks/secret-scrub.js.map +1 -0
  279. package/dist/conformance/checks/source-runtime.d.ts +43 -0
  280. package/dist/conformance/checks/source-runtime.js +68 -0
  281. package/dist/conformance/checks/source-runtime.js.map +1 -0
  282. package/dist/conformance/checks/source-static.d.ts +61 -0
  283. package/dist/conformance/checks/source-static.js +311 -0
  284. package/dist/conformance/checks/source-static.js.map +1 -0
  285. package/dist/conformance/checks/trajectory-chain.d.ts +18 -0
  286. package/dist/conformance/checks/trajectory-chain.js +51 -0
  287. package/dist/conformance/checks/trajectory-chain.js.map +1 -0
  288. package/dist/conformance/checks/trajectory-profile.d.ts +17 -0
  289. package/dist/conformance/checks/trajectory-profile.js +51 -0
  290. package/dist/conformance/checks/trajectory-profile.js.map +1 -0
  291. package/dist/conformance/checks/trajectory-schema.d.ts +20 -0
  292. package/dist/conformance/checks/trajectory-schema.js +40 -0
  293. package/dist/conformance/checks/trajectory-schema.js.map +1 -0
  294. package/dist/conformance/checks/verdict.d.ts +44 -0
  295. package/dist/conformance/checks/verdict.js +122 -0
  296. package/dist/conformance/checks/verdict.js.map +1 -0
  297. package/dist/conformance/harness.d.ts +32 -0
  298. package/dist/conformance/harness.js +227 -0
  299. package/dist/conformance/harness.js.map +1 -0
  300. package/dist/conformance/types.d.ts +88 -0
  301. package/dist/conformance/types.js +31 -0
  302. package/dist/conformance/types.js.map +1 -0
  303. package/dist/corpus/acquire.d.ts +42 -0
  304. package/dist/corpus/acquire.js +213 -0
  305. package/dist/corpus/acquire.js.map +1 -0
  306. package/dist/corpus/cache.d.ts +14 -0
  307. package/dist/corpus/cache.js +18 -0
  308. package/dist/corpus/cache.js.map +1 -0
  309. package/dist/corpus/envelope-projection.d.ts +12 -0
  310. package/dist/corpus/envelope-projection.js +110 -0
  311. package/dist/corpus/envelope-projection.js.map +1 -0
  312. package/dist/corpus/fetch.d.ts +9 -0
  313. package/dist/corpus/fetch.js +24 -0
  314. package/dist/corpus/fetch.js.map +1 -0
  315. package/dist/corpus/index.d.ts +19 -0
  316. package/dist/corpus/index.js +118 -0
  317. package/dist/corpus/index.js.map +1 -0
  318. package/dist/corpus/onchain-query.d.ts +13 -0
  319. package/dist/corpus/onchain-query.js +165 -0
  320. package/dist/corpus/onchain-query.js.map +1 -0
  321. package/dist/corpus/prediction-brier-scoreboard-report.d.ts +17 -0
  322. package/dist/corpus/prediction-brier-scoreboard-report.js +148 -0
  323. package/dist/corpus/prediction-brier-scoreboard-report.js.map +1 -0
  324. package/dist/corpus/prediction-brier-scoreboard.d.ts +56 -0
  325. package/dist/corpus/prediction-brier-scoreboard.js +269 -0
  326. package/dist/corpus/prediction-brier-scoreboard.js.map +1 -0
  327. package/dist/corpus/prediction-scoreable-verdicts.d.ts +4 -0
  328. package/dist/corpus/prediction-scoreable-verdicts.js +23 -0
  329. package/dist/corpus/prediction-scoreable-verdicts.js.map +1 -0
  330. package/dist/corpus/query.d.ts +17 -0
  331. package/dist/corpus/query.js +113 -0
  332. package/dist/corpus/query.js.map +1 -0
  333. package/dist/corpus/route-resolver.d.ts +16 -0
  334. package/dist/corpus/route-resolver.js +20 -0
  335. package/dist/corpus/route-resolver.js.map +1 -0
  336. package/dist/corpus/types.d.ts +153 -0
  337. package/dist/corpus/types.js +50 -0
  338. package/dist/corpus/types.js.map +1 -0
  339. package/dist/daemon/balance-topup-loop.js +2 -1
  340. package/dist/daemon/balance-topup-loop.js.map +1 -1
  341. package/dist/daemon/creator.d.ts +7 -7
  342. package/dist/daemon/creator.js +11 -14
  343. package/dist/daemon/creator.js.map +1 -1
  344. package/dist/daemon/daemon.d.ts +83 -31
  345. package/dist/daemon/daemon.js +206 -67
  346. package/dist/daemon/daemon.js.map +1 -1
  347. package/dist/daemon/delivery-watcher.js +50 -4
  348. package/dist/daemon/delivery-watcher.js.map +1 -1
  349. package/dist/daemon/freeze-fence.d.ts +42 -0
  350. package/dist/daemon/freeze-fence.js +71 -0
  351. package/dist/daemon/freeze-fence.js.map +1 -0
  352. package/dist/daemon/jinn-claim-loop-canonical.d.ts +207 -0
  353. package/dist/daemon/jinn-claim-loop-canonical.js +296 -0
  354. package/dist/daemon/jinn-claim-loop-canonical.js.map +1 -0
  355. package/dist/daemon/jinn-claim-loop-mock.d.ts +61 -0
  356. package/dist/daemon/jinn-claim-loop-mock.js +122 -0
  357. package/dist/daemon/jinn-claim-loop-mock.js.map +1 -0
  358. package/dist/daemon/jinn-claim-loop.d.ts +123 -0
  359. package/dist/daemon/jinn-claim-loop.js +256 -0
  360. package/dist/daemon/jinn-claim-loop.js.map +1 -0
  361. package/dist/daemon/reward-claim-loop.d.ts +2 -0
  362. package/dist/daemon/reward-claim-loop.js +32 -27
  363. package/dist/daemon/reward-claim-loop.js.map +1 -1
  364. package/dist/dashboard/assets/index-D_NMfDfV.css +32 -0
  365. package/dist/dashboard/assets/index-gfrALgiG.js +76 -0
  366. package/dist/dashboard/index.html +18 -74
  367. package/dist/earning/agent-wallet-binding.d.ts +133 -0
  368. package/dist/earning/agent-wallet-binding.js +202 -0
  369. package/dist/earning/agent-wallet-binding.js.map +1 -0
  370. package/dist/earning/bootstrap.d.ts +88 -1
  371. package/dist/earning/bootstrap.js +409 -56
  372. package/dist/earning/bootstrap.js.map +1 -1
  373. package/dist/earning/contracts.d.ts +328 -6
  374. package/dist/earning/contracts.js +295 -14
  375. package/dist/earning/contracts.js.map +1 -1
  376. package/dist/earning/evidence-simhash.d.ts +1 -1
  377. package/dist/earning/faucet.d.ts +31 -0
  378. package/dist/earning/faucet.js +37 -0
  379. package/dist/earning/faucet.js.map +1 -1
  380. package/dist/earning/funding-plan.d.ts +89 -0
  381. package/dist/earning/funding-plan.js +202 -0
  382. package/dist/earning/funding-plan.js.map +1 -0
  383. package/dist/earning/migrate-agent-id.d.ts +129 -0
  384. package/dist/earning/migrate-agent-id.js +256 -0
  385. package/dist/earning/migrate-agent-id.js.map +1 -0
  386. package/dist/earning/orphan-sweep.d.ts +14 -0
  387. package/dist/earning/orphan-sweep.js +63 -2
  388. package/dist/earning/orphan-sweep.js.map +1 -1
  389. package/dist/earning/reconcile.d.ts +2 -0
  390. package/dist/earning/reconcile.js +30 -0
  391. package/dist/earning/reconcile.js.map +1 -1
  392. package/dist/earning/safe-adapter.js +45 -3
  393. package/dist/earning/safe-adapter.js.map +1 -1
  394. package/dist/earning/stolas-claim.d.ts +86 -6
  395. package/dist/earning/stolas-claim.js +123 -9
  396. package/dist/earning/stolas-claim.js.map +1 -1
  397. package/dist/earning/store.d.ts +47 -0
  398. package/dist/earning/store.js +113 -1
  399. package/dist/earning/store.js.map +1 -1
  400. package/dist/earning/testnet-setup-migration.d.ts +32 -0
  401. package/dist/earning/testnet-setup-migration.js +214 -0
  402. package/dist/earning/testnet-setup-migration.js.map +1 -0
  403. package/dist/earning/types.d.ts +57 -9
  404. package/dist/earning/types.js +51 -2
  405. package/dist/earning/types.js.map +1 -1
  406. package/dist/earning/viem-clients.d.ts +20 -0
  407. package/dist/earning/viem-clients.js +32 -1
  408. package/dist/earning/viem-clients.js.map +1 -1
  409. package/dist/erc8004/abis.d.ts +423 -0
  410. package/dist/erc8004/abis.js +265 -0
  411. package/dist/erc8004/abis.js.map +1 -0
  412. package/dist/erc8004/addresses.d.ts +40 -0
  413. package/dist/erc8004/addresses.js +64 -0
  414. package/dist/erc8004/addresses.js.map +1 -0
  415. package/dist/erc8004/identity.d.ts +273 -0
  416. package/dist/erc8004/identity.js +405 -0
  417. package/dist/erc8004/identity.js.map +1 -0
  418. package/dist/erc8004/index.d.ts +13 -0
  419. package/dist/erc8004/index.js +20 -0
  420. package/dist/erc8004/index.js.map +1 -0
  421. package/dist/erc8004/reputation.d.ts +349 -0
  422. package/dist/erc8004/reputation.js +464 -0
  423. package/dist/erc8004/reputation.js.map +1 -0
  424. package/dist/erc8004/subgraph.d.ts +46 -0
  425. package/dist/erc8004/subgraph.js +37 -0
  426. package/dist/erc8004/subgraph.js.map +1 -0
  427. package/dist/erc8004/validation.d.ts +145 -0
  428. package/dist/erc8004/validation.js +219 -0
  429. package/dist/erc8004/validation.js.map +1 -0
  430. package/dist/errors/persisted-bootstrap-error.d.ts +4 -0
  431. package/dist/errors/persisted-bootstrap-error.js +50 -0
  432. package/dist/errors/persisted-bootstrap-error.js.map +1 -0
  433. package/dist/events/emitter.d.ts +12 -0
  434. package/dist/events/emitter.js +23 -0
  435. package/dist/events/emitter.js.map +1 -0
  436. package/dist/events/ring-buffer.d.ts +25 -0
  437. package/dist/events/ring-buffer.js +46 -0
  438. package/dist/events/ring-buffer.js.map +1 -0
  439. package/dist/events/types.d.ts +42 -0
  440. package/dist/events/types.js +28 -0
  441. package/dist/events/types.js.map +1 -0
  442. package/dist/harnesses/capability/index.d.ts +82 -0
  443. package/dist/harnesses/capability/index.js +12 -0
  444. package/dist/harnesses/capability/index.js.map +1 -0
  445. package/dist/harnesses/capability/scoped-rpc.d.ts +12 -0
  446. package/dist/harnesses/capability/scoped-rpc.js +34 -0
  447. package/dist/harnesses/capability/scoped-rpc.js.map +1 -0
  448. package/dist/harnesses/capability/scoped-secrets.d.ts +8 -0
  449. package/dist/harnesses/capability/scoped-secrets.js +10 -0
  450. package/dist/harnesses/capability/scoped-secrets.js.map +1 -0
  451. package/dist/harnesses/capability/scoped-signer.d.ts +46 -0
  452. package/dist/harnesses/capability/scoped-signer.js +73 -0
  453. package/dist/harnesses/capability/scoped-signer.js.map +1 -0
  454. package/dist/harnesses/engine/artifact-scrub.d.ts +12 -0
  455. package/dist/harnesses/engine/artifact-scrub.js +104 -0
  456. package/dist/harnesses/engine/artifact-scrub.js.map +1 -0
  457. package/dist/harnesses/engine/canonical-json.d.ts +1 -0
  458. package/dist/harnesses/engine/canonical-json.js +66 -0
  459. package/dist/harnesses/engine/canonical-json.js.map +1 -0
  460. package/dist/harnesses/engine/delivery.d.ts +58 -0
  461. package/dist/harnesses/engine/delivery.js +67 -0
  462. package/dist/harnesses/engine/delivery.js.map +1 -0
  463. package/dist/harnesses/engine/engine.d.ts +534 -0
  464. package/dist/harnesses/engine/engine.js +1626 -0
  465. package/dist/harnesses/engine/engine.js.map +1 -0
  466. package/dist/harnesses/engine/envelope-assembly.d.ts +73 -0
  467. package/dist/harnesses/engine/envelope-assembly.js +60 -0
  468. package/dist/harnesses/engine/envelope-assembly.js.map +1 -0
  469. package/dist/harnesses/engine/packaging.d.ts +99 -0
  470. package/dist/harnesses/engine/packaging.js +424 -0
  471. package/dist/harnesses/engine/packaging.js.map +1 -0
  472. package/dist/harnesses/engine/persistence.d.ts +198 -0
  473. package/dist/harnesses/engine/persistence.js +443 -0
  474. package/dist/harnesses/engine/persistence.js.map +1 -0
  475. package/dist/harnesses/engine/recovery.d.ts +22 -0
  476. package/dist/harnesses/engine/recovery.js +24 -0
  477. package/dist/harnesses/engine/recovery.js.map +1 -0
  478. package/dist/harnesses/engine/registry.d.ts +55 -0
  479. package/dist/harnesses/engine/registry.js +66 -0
  480. package/dist/harnesses/engine/registry.js.map +1 -0
  481. package/dist/harnesses/engine/signing.d.ts +30 -0
  482. package/dist/harnesses/engine/signing.js +39 -0
  483. package/dist/harnesses/engine/signing.js.map +1 -0
  484. package/dist/harnesses/engine/state.d.ts +42 -0
  485. package/dist/harnesses/engine/state.js +87 -0
  486. package/dist/harnesses/engine/state.js.map +1 -0
  487. package/dist/harnesses/engine/validate-manifest.d.ts +23 -0
  488. package/dist/harnesses/engine/validate-manifest.js +63 -0
  489. package/dist/harnesses/engine/validate-manifest.js.map +1 -0
  490. package/dist/harnesses/engine/verification-stub.d.ts +18 -0
  491. package/dist/harnesses/engine/verification-stub.js +18 -0
  492. package/dist/harnesses/engine/verification-stub.js.map +1 -0
  493. package/dist/harnesses/external-impls/index.d.ts +3 -0
  494. package/dist/harnesses/external-impls/index.js +2 -0
  495. package/dist/harnesses/external-impls/index.js.map +1 -0
  496. package/dist/harnesses/external-impls/loader.d.ts +50 -0
  497. package/dist/harnesses/external-impls/loader.js +139 -0
  498. package/dist/harnesses/external-impls/loader.js.map +1 -0
  499. package/dist/harnesses/external-impls/package-hash.d.ts +26 -0
  500. package/dist/harnesses/external-impls/package-hash.js +102 -0
  501. package/dist/harnesses/external-impls/package-hash.js.map +1 -0
  502. package/dist/harnesses/external-impls/types.d.ts +42 -0
  503. package/dist/harnesses/external-impls/types.js +10 -0
  504. package/dist/harnesses/external-impls/types.js.map +1 -0
  505. package/dist/harnesses/freeze.d.ts +34 -0
  506. package/dist/harnesses/freeze.js +60 -0
  507. package/dist/harnesses/freeze.js.map +1 -0
  508. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.d.ts +61 -0
  509. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js +243 -0
  510. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
  511. package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.d.ts +35 -0
  512. package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.js +280 -0
  513. package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.js.map +1 -0
  514. package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.d.ts +21 -0
  515. package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.js +193 -0
  516. package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.js.map +1 -0
  517. package/dist/harnesses/impls/claude-code-learner/harness.d.ts +22 -0
  518. package/dist/harnesses/impls/claude-code-learner/harness.js +62 -0
  519. package/dist/harnesses/impls/claude-code-learner/harness.js.map +1 -0
  520. package/dist/harnesses/impls/claude-code-learner/harvest.d.ts +20 -0
  521. package/dist/harnesses/impls/claude-code-learner/harvest.js +558 -0
  522. package/dist/harnesses/impls/claude-code-learner/harvest.js.map +1 -0
  523. package/dist/harnesses/impls/claude-code-learner/index.d.ts +18 -0
  524. package/dist/harnesses/impls/claude-code-learner/index.js +15 -0
  525. package/dist/harnesses/impls/claude-code-learner/index.js.map +1 -0
  526. package/dist/harnesses/impls/claude-code-learner/plugin-path.d.ts +14 -0
  527. package/dist/harnesses/impls/claude-code-learner/plugin-path.js +30 -0
  528. package/dist/harnesses/impls/claude-code-learner/plugin-path.js.map +1 -0
  529. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +50 -0
  530. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +192 -0
  531. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
  532. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
  533. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
  534. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
  535. package/dist/harnesses/impls/claude-code-learner/types.d.ts +114 -0
  536. package/dist/harnesses/impls/claude-code-learner/types.js.map +1 -0
  537. package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
  538. package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  539. package/dist/harnesses/impls/claude-mcp-hyperliquid/index.d.ts +106 -0
  540. package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js +723 -0
  541. package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  542. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  543. package/dist/harnesses/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  544. package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +104 -0
  545. package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js +264 -0
  546. package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  547. package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +44 -0
  548. package/dist/harnesses/impls/claude-mcp-prediction/index.js +250 -0
  549. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -0
  550. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +135 -0
  551. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
  552. package/dist/harnesses/impls/claude-mcp-prediction/prompt.d.ts +8 -0
  553. package/dist/harnesses/impls/claude-mcp-prediction/prompt.js +54 -0
  554. package/dist/harnesses/impls/claude-mcp-prediction/prompt.js.map +1 -0
  555. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +43 -0
  556. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +21 -0
  557. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
  558. package/dist/harnesses/impls/claude-mcp-prediction/types.d.ts +84 -0
  559. package/dist/harnesses/impls/claude-mcp-prediction/types.js +6 -0
  560. package/dist/harnesses/impls/claude-mcp-prediction/types.js.map +1 -0
  561. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.d.ts +36 -0
  562. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +241 -0
  563. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -0
  564. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +136 -0
  565. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
  566. package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
  567. package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js +46 -0
  568. package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
  569. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +37 -0
  570. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +19 -0
  571. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
  572. package/dist/harnesses/impls/claude-mcp-prediction-apy/types.d.ts +64 -0
  573. package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js +6 -0
  574. package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js.map +1 -0
  575. package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
  576. package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js +206 -0
  577. package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
  578. package/dist/harnesses/impls/evaluation-context.d.ts +23 -0
  579. package/dist/harnesses/impls/evaluation-context.js +25 -0
  580. package/dist/harnesses/impls/evaluation-context.js.map +1 -0
  581. package/dist/harnesses/impls/index.d.ts +84 -0
  582. package/dist/harnesses/impls/index.js +136 -0
  583. package/dist/harnesses/impls/index.js.map +1 -0
  584. package/dist/harnesses/impls/legacy-claude/index.d.ts +66 -0
  585. package/dist/harnesses/impls/legacy-claude/index.js +168 -0
  586. package/dist/harnesses/impls/legacy-claude/index.js.map +1 -0
  587. package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  588. package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  589. package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  590. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  591. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  592. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  593. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  594. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  595. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  596. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  597. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  598. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  599. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  600. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  601. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  602. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  603. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +44 -0
  604. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +569 -0
  605. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -0
  606. package/dist/harnesses/impls/portfolio-v0-evaluator/score.js.map +1 -0
  607. package/dist/harnesses/impls/portfolio-v0-evaluator/types.d.ts +34 -0
  608. package/dist/harnesses/impls/portfolio-v0-evaluator/types.js.map +1 -0
  609. package/dist/harnesses/impls/prediction-apy-v0-baseline/index.d.ts +42 -0
  610. package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js +114 -0
  611. package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js.map +1 -0
  612. package/dist/harnesses/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
  613. package/dist/harnesses/impls/prediction-apy-v0-baseline/types.js.map +1 -0
  614. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
  615. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
  616. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
  617. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +42 -0
  618. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +346 -0
  619. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
  620. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +16 -0
  621. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js +22 -0
  622. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
  623. package/dist/harnesses/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
  624. package/dist/harnesses/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
  625. package/dist/harnesses/impls/prediction-v0-baseline/index.d.ts +33 -0
  626. package/dist/harnesses/impls/prediction-v0-baseline/index.js +109 -0
  627. package/dist/harnesses/impls/prediction-v0-baseline/index.js.map +1 -0
  628. package/dist/harnesses/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  629. package/dist/harnesses/impls/prediction-v0-baseline/strategy.js +41 -0
  630. package/dist/harnesses/impls/prediction-v0-baseline/strategy.js.map +1 -0
  631. package/dist/harnesses/impls/prediction-v0-baseline/types.d.ts +7 -0
  632. package/dist/harnesses/impls/prediction-v0-baseline/types.js.map +1 -0
  633. package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  634. package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  635. package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  636. package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  637. package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  638. package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  639. package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.d.ts +15 -0
  640. package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js +111 -0
  641. package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  642. package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  643. package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  644. package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +36 -0
  645. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +342 -0
  646. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -0
  647. package/dist/harnesses/impls/prediction-v0-evaluator/score.js.map +1 -0
  648. package/dist/harnesses/impls/prediction-v0-evaluator/types.js +2 -0
  649. package/dist/harnesses/impls/prediction-v0-evaluator/types.js.map +1 -0
  650. package/dist/harnesses/impls/prediction-v1-baseline/index.d.ts +31 -0
  651. package/dist/harnesses/impls/prediction-v1-baseline/index.js +79 -0
  652. package/dist/harnesses/impls/prediction-v1-baseline/index.js.map +1 -0
  653. package/dist/harnesses/impls/prediction-v1-evaluator/index.d.ts +32 -0
  654. package/dist/harnesses/impls/prediction-v1-evaluator/index.js +219 -0
  655. package/dist/harnesses/impls/prediction-v1-evaluator/index.js.map +1 -0
  656. package/dist/harnesses/impls/session-derived-evaluator/index.d.ts +4 -0
  657. package/dist/harnesses/impls/session-derived-evaluator/index.js +5 -0
  658. package/dist/harnesses/impls/session-derived-evaluator/index.js.map +1 -0
  659. package/dist/harnesses/impls/session-derived-evaluator/llm-judge.d.ts +16 -0
  660. package/dist/harnesses/impls/session-derived-evaluator/llm-judge.js +16 -0
  661. package/dist/harnesses/impls/session-derived-evaluator/llm-judge.js.map +1 -0
  662. package/dist/harnesses/impls/session-derived-evaluator/signals.d.ts +13 -0
  663. package/dist/harnesses/impls/session-derived-evaluator/signals.js +15 -0
  664. package/dist/harnesses/impls/session-derived-evaluator/signals.js.map +1 -0
  665. package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.d.ts +7 -0
  666. package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.js +28 -0
  667. package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.js.map +1 -0
  668. package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.d.ts +15 -0
  669. package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.js +17 -0
  670. package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.js.map +1 -0
  671. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +20 -0
  672. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +107 -0
  673. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -0
  674. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +74 -0
  675. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +288 -0
  676. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -0
  677. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +33 -0
  678. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +96 -0
  679. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -0
  680. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +61 -0
  681. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +42 -0
  682. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -0
  683. package/dist/harnesses/manifest/index.d.ts +3 -0
  684. package/dist/harnesses/manifest/index.js +3 -0
  685. package/dist/harnesses/manifest/index.js.map +1 -0
  686. package/dist/harnesses/manifest/load.d.ts +7 -0
  687. package/dist/harnesses/manifest/load.js +49 -0
  688. package/dist/harnesses/manifest/load.js.map +1 -0
  689. package/dist/harnesses/manifest/types.d.ts +75 -0
  690. package/dist/harnesses/manifest/types.js +8 -0
  691. package/dist/harnesses/manifest/types.js.map +1 -0
  692. package/dist/harnesses/manifest/verify.d.ts +15 -0
  693. package/dist/harnesses/manifest/verify.js +53 -0
  694. package/dist/harnesses/manifest/verify.js.map +1 -0
  695. package/dist/harnesses/mode-state.d.ts +7 -0
  696. package/dist/harnesses/mode-state.js +43 -0
  697. package/dist/harnesses/mode-state.js.map +1 -0
  698. package/dist/harnesses/names.d.ts +6 -0
  699. package/dist/harnesses/names.js +24 -0
  700. package/dist/harnesses/names.js.map +1 -0
  701. package/dist/harnesses/types.d.ts +276 -0
  702. package/dist/harnesses/types.js +28 -0
  703. package/dist/harnesses/types.js.map +1 -0
  704. package/dist/index.d.ts +1 -1
  705. package/dist/main.d.ts +17 -2
  706. package/dist/main.js +1615 -147
  707. package/dist/main.js.map +1 -1
  708. package/dist/mcp/acquire-artifact.d.ts +42 -0
  709. package/dist/mcp/acquire-artifact.js +169 -0
  710. package/dist/mcp/acquire-artifact.js.map +1 -0
  711. package/dist/mcp/operator-server.d.ts +21 -4
  712. package/dist/mcp/operator-server.js +505 -30
  713. package/dist/mcp/operator-server.js.map +1 -1
  714. package/dist/mcp/search-records.d.ts +95 -0
  715. package/dist/mcp/search-records.js +407 -0
  716. package/dist/mcp/search-records.js.map +1 -0
  717. package/dist/mcp/server.d.ts +4 -4
  718. package/dist/mcp/server.js +258 -61
  719. package/dist/mcp/server.js.map +1 -1
  720. package/dist/observability/emit-event.d.ts +2 -2
  721. package/dist/observability/emit-event.js +2 -2
  722. package/dist/observability/emit-event.js.map +1 -1
  723. package/dist/operator-errors.d.ts +14 -0
  724. package/dist/operator-errors.js +39 -10
  725. package/dist/operator-errors.js.map +1 -1
  726. package/dist/plugins/digest.d.ts +1 -0
  727. package/dist/plugins/digest.js +28 -0
  728. package/dist/plugins/digest.js.map +1 -0
  729. package/dist/plugins/index.d.ts +6 -0
  730. package/dist/plugins/index.js +6 -0
  731. package/dist/plugins/index.js.map +1 -0
  732. package/dist/plugins/manifest.d.ts +7 -0
  733. package/dist/plugins/manifest.js +22 -0
  734. package/dist/plugins/manifest.js.map +1 -0
  735. package/dist/plugins/registry.d.ts +9 -0
  736. package/dist/plugins/registry.js +24 -0
  737. package/dist/plugins/registry.js.map +1 -0
  738. package/dist/plugins/resolvers.d.ts +2 -0
  739. package/dist/plugins/resolvers.js +126 -0
  740. package/dist/plugins/resolvers.js.map +1 -0
  741. package/dist/plugins/types.d.ts +35 -0
  742. package/dist/plugins/types.js +2 -0
  743. package/dist/plugins/types.js.map +1 -0
  744. package/dist/plugins/validator.d.ts +3 -0
  745. package/dist/plugins/validator.js +50 -0
  746. package/dist/plugins/validator.js.map +1 -0
  747. package/dist/preflight/claude-auth.d.ts +14 -12
  748. package/dist/preflight/claude-auth.js +23 -37
  749. package/dist/preflight/claude-auth.js.map +1 -1
  750. package/dist/preflight/claude-required.d.ts +8 -0
  751. package/dist/preflight/claude-required.js +17 -0
  752. package/dist/preflight/claude-required.js.map +1 -0
  753. package/dist/runner/claude.d.ts +3 -3
  754. package/dist/runner/claude.js +66 -26
  755. package/dist/runner/claude.js.map +1 -1
  756. package/dist/runner/runner.d.ts +33 -2
  757. package/dist/runner/simple.d.ts +2 -2
  758. package/dist/runner/simple.js +2 -2
  759. package/dist/runner/simple.js.map +1 -1
  760. package/dist/scripts/donation-consumption-acceptance.d.ts +81 -0
  761. package/dist/scripts/donation-consumption-acceptance.js +1385 -0
  762. package/dist/scripts/donation-consumption-acceptance.js.map +1 -0
  763. package/dist/scripts/fix-node-pty.mjs +113 -0
  764. package/dist/setup/claude-code-install.d.ts +19 -0
  765. package/dist/setup/claude-code-install.js +51 -0
  766. package/dist/setup/claude-code-install.js.map +1 -0
  767. package/dist/setup-mode.d.ts +34 -0
  768. package/dist/setup-mode.js +49 -0
  769. package/dist/setup-mode.js.map +1 -0
  770. package/dist/solver-nets/contracts.d.ts +2 -0
  771. package/dist/solver-nets/contracts.js +2 -0
  772. package/dist/solver-nets/contracts.js.map +1 -0
  773. package/dist/solver-nets/prediction-operator-ux.d.ts +112 -0
  774. package/dist/solver-nets/prediction-operator-ux.js +463 -0
  775. package/dist/solver-nets/prediction-operator-ux.js.map +1 -0
  776. package/dist/solver-nets/registry.d.ts +64 -0
  777. package/dist/solver-nets/registry.js +218 -0
  778. package/dist/solver-nets/registry.js.map +1 -0
  779. package/dist/solver-types/_session-derived-distill.d.ts +28 -0
  780. package/dist/solver-types/_session-derived-distill.js +52 -0
  781. package/dist/solver-types/_session-derived-distill.js.map +1 -0
  782. package/dist/solver-types/_session-derived-pool.d.ts +10 -0
  783. package/dist/solver-types/_session-derived-pool.js +27 -0
  784. package/dist/solver-types/_session-derived-pool.js.map +1 -0
  785. package/dist/solver-types/_session-derived-state.d.ts +17 -0
  786. package/dist/solver-types/_session-derived-state.js +25 -0
  787. package/dist/solver-types/_session-derived-state.js.map +1 -0
  788. package/dist/solver-types/_swe-rebench-v2-aggregate.d.ts +31 -0
  789. package/dist/solver-types/_swe-rebench-v2-aggregate.js +49 -0
  790. package/dist/solver-types/_swe-rebench-v2-aggregate.js.map +1 -0
  791. package/dist/solver-types/_swe-rebench-v2-escrow.d.ts +27 -0
  792. package/dist/solver-types/_swe-rebench-v2-escrow.js +26 -0
  793. package/dist/solver-types/_swe-rebench-v2-escrow.js.map +1 -0
  794. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +51 -0
  795. package/dist/solver-types/_swe-rebench-v2-pool.js +72 -0
  796. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -0
  797. package/dist/solver-types/_swe-rebench-v2-state.d.ts +24 -0
  798. package/dist/solver-types/_swe-rebench-v2-state.js +54 -0
  799. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -0
  800. package/dist/solver-types/constants.d.ts +5 -0
  801. package/dist/solver-types/constants.js +6 -0
  802. package/dist/solver-types/constants.js.map +1 -0
  803. package/dist/solver-types/index.d.ts +10 -0
  804. package/dist/solver-types/index.js +32 -0
  805. package/dist/solver-types/index.js.map +1 -0
  806. package/dist/solver-types/learner-loop-test.d.ts +2 -0
  807. package/dist/solver-types/learner-loop-test.js +39 -0
  808. package/dist/solver-types/learner-loop-test.js.map +1 -0
  809. package/dist/solver-types/portfolio-v0.d.ts +2 -0
  810. package/dist/solver-types/portfolio-v0.js +13 -0
  811. package/dist/solver-types/portfolio-v0.js.map +1 -0
  812. package/dist/solver-types/prediction-apy-v0-auto.d.ts +27 -0
  813. package/dist/solver-types/prediction-apy-v0-auto.js +109 -0
  814. package/dist/solver-types/prediction-apy-v0-auto.js.map +1 -0
  815. package/dist/solver-types/prediction-apy-v0-template.d.ts +8 -0
  816. package/dist/solver-types/prediction-apy-v0-template.js +22 -0
  817. package/dist/solver-types/prediction-apy-v0-template.js.map +1 -0
  818. package/dist/solver-types/prediction-apy-v0.d.ts +3 -0
  819. package/dist/solver-types/prediction-apy-v0.js +25 -0
  820. package/dist/solver-types/prediction-apy-v0.js.map +1 -0
  821. package/dist/solver-types/prediction-v0-auto.d.ts +69 -0
  822. package/dist/solver-types/prediction-v0-auto.js +146 -0
  823. package/dist/solver-types/prediction-v0-auto.js.map +1 -0
  824. package/dist/solver-types/prediction-v0-template.d.ts +70 -0
  825. package/dist/solver-types/prediction-v0-template.js +145 -0
  826. package/dist/solver-types/prediction-v0-template.js.map +1 -0
  827. package/dist/solver-types/prediction-v0.d.ts +13 -0
  828. package/dist/solver-types/prediction-v0.js +31 -0
  829. package/dist/solver-types/prediction-v0.js.map +1 -0
  830. package/dist/solver-types/prediction-v1-auto.d.ts +122 -0
  831. package/dist/solver-types/prediction-v1-auto.js +366 -0
  832. package/dist/solver-types/prediction-v1-auto.js.map +1 -0
  833. package/dist/solver-types/prediction-v1.d.ts +11 -0
  834. package/dist/solver-types/prediction-v1.js +27 -0
  835. package/dist/solver-types/prediction-v1.js.map +1 -0
  836. package/dist/solver-types/session-derived.d.ts +2 -0
  837. package/dist/solver-types/session-derived.js +24 -0
  838. package/dist/solver-types/session-derived.js.map +1 -0
  839. package/dist/solver-types/solver-type.d.ts +53 -0
  840. package/dist/solver-types/solver-type.js +6 -0
  841. package/dist/solver-types/solver-type.js.map +1 -0
  842. package/dist/solver-types/swe-rebench-v2-auto.d.ts +38 -0
  843. package/dist/solver-types/swe-rebench-v2-auto.js +56 -0
  844. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -0
  845. package/dist/solver-types/swe-rebench-v2.d.ts +69 -0
  846. package/dist/solver-types/swe-rebench-v2.js +356 -0
  847. package/dist/solver-types/swe-rebench-v2.js.map +1 -0
  848. package/dist/solvernets/daemon-init.d.ts +291 -0
  849. package/dist/solvernets/daemon-init.js +431 -0
  850. package/dist/solvernets/daemon-init.js.map +1 -0
  851. package/dist/solvernets/launch-state-machine.d.ts +165 -0
  852. package/dist/solvernets/launch-state-machine.js +406 -0
  853. package/dist/solvernets/launch-state-machine.js.map +1 -0
  854. package/dist/solvernets/launched-record-dispatcher.d.ts +55 -0
  855. package/dist/solvernets/launched-record-dispatcher.js +169 -0
  856. package/dist/solvernets/launched-record-dispatcher.js.map +1 -0
  857. package/dist/solvernets/lifecycle-transitions.d.ts +183 -0
  858. package/dist/solvernets/lifecycle-transitions.js +386 -0
  859. package/dist/solvernets/lifecycle-transitions.js.map +1 -0
  860. package/dist/solvernets/manifest.d.ts +120 -0
  861. package/dist/solvernets/manifest.js +166 -0
  862. package/dist/solvernets/manifest.js.map +1 -0
  863. package/dist/solvernets/most-recent-wins.d.ts +77 -0
  864. package/dist/solvernets/most-recent-wins.js +82 -0
  865. package/dist/solvernets/most-recent-wins.js.map +1 -0
  866. package/dist/solvernets/registry-client-erc8004.d.ts +239 -0
  867. package/dist/solvernets/registry-client-erc8004.js +396 -0
  868. package/dist/solvernets/registry-client-erc8004.js.map +1 -0
  869. package/dist/solvernets/registry-client.d.ts +121 -0
  870. package/dist/solvernets/registry-client.js +19 -0
  871. package/dist/solvernets/registry-client.js.map +1 -0
  872. package/dist/solvernets/store.d.ts +298 -0
  873. package/dist/solvernets/store.js +271 -0
  874. package/dist/solvernets/store.js.map +1 -0
  875. package/dist/store/captures.d.ts +85 -0
  876. package/dist/store/captures.js +167 -0
  877. package/dist/store/captures.js.map +1 -0
  878. package/dist/store/store.d.ts +235 -21
  879. package/dist/store/store.js +1000 -46
  880. package/dist/store/store.js.map +1 -1
  881. package/dist/tasks/posting-service.d.ts +25 -0
  882. package/dist/tasks/posting-service.js +149 -0
  883. package/dist/tasks/posting-service.js.map +1 -0
  884. package/dist/tasks/signing.d.ts +4 -0
  885. package/dist/tasks/signing.js +18 -0
  886. package/dist/tasks/signing.js.map +1 -0
  887. package/dist/tasks/sources.d.ts +46 -0
  888. package/dist/tasks/sources.js +45 -0
  889. package/dist/tasks/sources.js.map +1 -0
  890. package/dist/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
  891. package/dist/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
  892. package/dist/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
  893. package/dist/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
  894. package/dist/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
  895. package/dist/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
  896. package/dist/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
  897. package/dist/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  898. package/dist/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  899. package/dist/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  900. package/dist/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  901. package/dist/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  902. package/dist/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  903. package/dist/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  904. package/dist/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  905. package/dist/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
  906. package/dist/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
  907. package/dist/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
  908. package/dist/templates/harnesses/evaluator/README.md.tmpl +36 -0
  909. package/dist/templates/harnesses/evaluator/gitignore.tmpl +3 -0
  910. package/dist/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
  911. package/dist/templates/harnesses/evaluator/package.json.tmpl +26 -0
  912. package/dist/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
  913. package/dist/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
  914. package/dist/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
  915. package/dist/templates/harnesses/forecaster/README.md.tmpl +25 -0
  916. package/dist/templates/harnesses/forecaster/gitignore.tmpl +5 -0
  917. package/dist/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
  918. package/dist/templates/harnesses/forecaster/package.json.tmpl +26 -0
  919. package/dist/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
  920. package/dist/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
  921. package/dist/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
  922. package/dist/trajectory/collector.d.ts +59 -0
  923. package/dist/trajectory/collector.js +164 -0
  924. package/dist/trajectory/collector.js.map +1 -0
  925. package/dist/trajectory/emit.d.ts +29 -0
  926. package/dist/trajectory/emit.js +81 -0
  927. package/dist/trajectory/emit.js.map +1 -0
  928. package/dist/trajectory/harness-bundle-rules/aider.d.ts +13 -0
  929. package/dist/trajectory/harness-bundle-rules/aider.js +26 -0
  930. package/dist/trajectory/harness-bundle-rules/aider.js.map +1 -0
  931. package/dist/trajectory/harness-bundle-rules/claude-code.d.ts +16 -0
  932. package/dist/trajectory/harness-bundle-rules/claude-code.js +71 -0
  933. package/dist/trajectory/harness-bundle-rules/claude-code.js.map +1 -0
  934. package/dist/trajectory/harness-bundle-rules/codex.d.ts +13 -0
  935. package/dist/trajectory/harness-bundle-rules/codex.js +96 -0
  936. package/dist/trajectory/harness-bundle-rules/codex.js.map +1 -0
  937. package/dist/trajectory/harness-bundle-rules/continue.d.ts +10 -0
  938. package/dist/trajectory/harness-bundle-rules/continue.js +43 -0
  939. package/dist/trajectory/harness-bundle-rules/continue.js.map +1 -0
  940. package/dist/trajectory/harness-bundle-rules/cursor.d.ts +20 -0
  941. package/dist/trajectory/harness-bundle-rules/cursor.js +55 -0
  942. package/dist/trajectory/harness-bundle-rules/cursor.js.map +1 -0
  943. package/dist/trajectory/harness-bundle-rules/gemini-cli.d.ts +15 -0
  944. package/dist/trajectory/harness-bundle-rules/gemini-cli.js +112 -0
  945. package/dist/trajectory/harness-bundle-rules/gemini-cli.js.map +1 -0
  946. package/dist/trajectory/harness-bundle-rules/types.d.ts +25 -0
  947. package/dist/trajectory/harness-bundle-rules/types.js +15 -0
  948. package/dist/trajectory/harness-bundle-rules/types.js.map +1 -0
  949. package/dist/trajectory/harness-bundle-schema.d.ts +74 -0
  950. package/dist/trajectory/harness-bundle-schema.js +34 -0
  951. package/dist/trajectory/harness-bundle-schema.js.map +1 -0
  952. package/dist/trajectory/harness-bundle.d.ts +73 -0
  953. package/dist/trajectory/harness-bundle.js +128 -0
  954. package/dist/trajectory/harness-bundle.js.map +1 -0
  955. package/dist/trajectory/hash-chain.d.ts +18 -0
  956. package/dist/trajectory/hash-chain.js +23 -0
  957. package/dist/trajectory/hash-chain.js.map +1 -0
  958. package/dist/trajectory/index.d.ts +28 -0
  959. package/dist/trajectory/index.js +28 -0
  960. package/dist/trajectory/index.js.map +1 -0
  961. package/dist/trajectory/llm-proxy-spans.d.ts +14 -0
  962. package/dist/trajectory/llm-proxy-spans.js +51 -0
  963. package/dist/trajectory/llm-proxy-spans.js.map +1 -0
  964. package/dist/trajectory/llm-proxy.d.ts +32 -0
  965. package/dist/trajectory/llm-proxy.js +97 -0
  966. package/dist/trajectory/llm-proxy.js.map +1 -0
  967. package/dist/trajectory/processors/credential-scrub.d.ts +11 -0
  968. package/dist/trajectory/processors/credential-scrub.js +40 -0
  969. package/dist/trajectory/processors/credential-scrub.js.map +1 -0
  970. package/dist/trajectory/processors/identity-scrub.d.ts +18 -0
  971. package/dist/trajectory/processors/identity-scrub.js +43 -0
  972. package/dist/trajectory/processors/identity-scrub.js.map +1 -0
  973. package/dist/trajectory/processors/manifest-builder.d.ts +18 -0
  974. package/dist/trajectory/processors/manifest-builder.js +26 -0
  975. package/dist/trajectory/processors/manifest-builder.js.map +1 -0
  976. package/dist/trajectory/processors/path-scrub.d.ts +15 -0
  977. package/dist/trajectory/processors/path-scrub.js +52 -0
  978. package/dist/trajectory/processors/path-scrub.js.map +1 -0
  979. package/dist/trajectory/processors/sentinel.d.ts +16 -0
  980. package/dist/trajectory/processors/sentinel.js +17 -0
  981. package/dist/trajectory/processors/sentinel.js.map +1 -0
  982. package/dist/trajectory/processors/sqlite-exporter.d.ts +32 -0
  983. package/dist/trajectory/processors/sqlite-exporter.js +48 -0
  984. package/dist/trajectory/processors/sqlite-exporter.js.map +1 -0
  985. package/dist/trajectory/processors/transcript-content-scrub.d.ts +9 -0
  986. package/dist/trajectory/processors/transcript-content-scrub.js +58 -0
  987. package/dist/trajectory/processors/transcript-content-scrub.js.map +1 -0
  988. package/dist/trajectory/receiver.d.ts +37 -0
  989. package/dist/trajectory/receiver.js +616 -0
  990. package/dist/trajectory/receiver.js.map +1 -0
  991. package/dist/trajectory/schema.d.ts +102 -14
  992. package/dist/trajectory/schema.js +29 -0
  993. package/dist/trajectory/schema.js.map +1 -1
  994. package/dist/trajectory/secret-scrub.d.ts +32 -0
  995. package/dist/trajectory/secret-scrub.js +51 -0
  996. package/dist/trajectory/secret-scrub.js.map +1 -0
  997. package/dist/trajectory/span-profile.d.ts +27 -0
  998. package/dist/trajectory/span-profile.js +51 -0
  999. package/dist/trajectory/span-profile.js.map +1 -0
  1000. package/dist/trajectory/synthetic-span-builder.d.ts +50 -0
  1001. package/dist/trajectory/synthetic-span-builder.js +115 -0
  1002. package/dist/trajectory/synthetic-span-builder.js.map +1 -0
  1003. package/dist/trajectory/transcript-parsers/aider-history.d.ts +42 -0
  1004. package/dist/trajectory/transcript-parsers/aider-history.js +182 -0
  1005. package/dist/trajectory/transcript-parsers/aider-history.js.map +1 -0
  1006. package/dist/trajectory/transcript-parsers/claude-code-jsonl.d.ts +37 -0
  1007. package/dist/trajectory/transcript-parsers/claude-code-jsonl.js +143 -0
  1008. package/dist/trajectory/transcript-parsers/claude-code-jsonl.js.map +1 -0
  1009. package/dist/trajectory/transcript-parsers/codex-session.d.ts +36 -0
  1010. package/dist/trajectory/transcript-parsers/codex-session.js +135 -0
  1011. package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -0
  1012. package/dist/trajectory/transcript-parsers/continue-devdata.d.ts +41 -0
  1013. package/dist/trajectory/transcript-parsers/continue-devdata.js +191 -0
  1014. package/dist/trajectory/transcript-parsers/continue-devdata.js.map +1 -0
  1015. package/dist/trajectory/transcript-parsers/cursor-sqlite.d.ts +38 -0
  1016. package/dist/trajectory/transcript-parsers/cursor-sqlite.js +119 -0
  1017. package/dist/trajectory/transcript-parsers/cursor-sqlite.js.map +1 -0
  1018. package/dist/trajectory/transcript-parsers/gemini-session.d.ts +35 -0
  1019. package/dist/trajectory/transcript-parsers/gemini-session.js +138 -0
  1020. package/dist/trajectory/transcript-parsers/gemini-session.js.map +1 -0
  1021. package/dist/trajectory/transcript-parsers/types.d.ts +101 -0
  1022. package/dist/trajectory/transcript-parsers/types.js +33 -0
  1023. package/dist/trajectory/transcript-parsers/types.js.map +1 -0
  1024. package/dist/trajectory/transcript-watcher.d.ts +62 -0
  1025. package/dist/trajectory/transcript-watcher.js +157 -0
  1026. package/dist/trajectory/transcript-watcher.js.map +1 -0
  1027. package/dist/trajectory/wrappers/http.d.ts +37 -0
  1028. package/dist/trajectory/wrappers/http.js +85 -0
  1029. package/dist/trajectory/wrappers/http.js.map +1 -0
  1030. package/dist/trajectory/wrappers/mcp.d.ts +17 -0
  1031. package/dist/trajectory/wrappers/mcp.js +58 -0
  1032. package/dist/trajectory/wrappers/mcp.js.map +1 -0
  1033. package/dist/trajectory/wrappers/subprocess.d.ts +32 -0
  1034. package/dist/trajectory/wrappers/subprocess.js +70 -0
  1035. package/dist/trajectory/wrappers/subprocess.js.map +1 -0
  1036. package/dist/tx-retry.js +90 -9
  1037. package/dist/tx-retry.js.map +1 -1
  1038. package/dist/types/envelope.d.ts +2742 -0
  1039. package/dist/types/envelope.js +149 -0
  1040. package/dist/types/envelope.js.map +1 -0
  1041. package/dist/types/index.d.ts +4 -4
  1042. package/dist/types/index.js +4 -4
  1043. package/dist/types/index.js.map +1 -1
  1044. package/dist/types/payloads/index.d.ts +12 -0
  1045. package/dist/types/payloads/index.js +62 -0
  1046. package/dist/types/payloads/index.js.map +1 -0
  1047. package/dist/types/payloads/portfolio-v0.d.ts +481 -0
  1048. package/dist/types/payloads/portfolio-v0.js +94 -0
  1049. package/dist/types/payloads/portfolio-v0.js.map +1 -0
  1050. package/dist/types/payloads/prediction-apy-v0.d.ts +231 -0
  1051. package/dist/types/payloads/prediction-apy-v0.js +63 -0
  1052. package/dist/types/payloads/prediction-apy-v0.js.map +1 -0
  1053. package/dist/types/payloads/prediction-v0.d.ts +262 -0
  1054. package/dist/types/payloads/prediction-v0.js +73 -0
  1055. package/dist/types/payloads/prediction-v0.js.map +1 -0
  1056. package/dist/types/payloads/prediction-v1.d.ts +2 -0
  1057. package/dist/types/payloads/prediction-v1.js +2 -0
  1058. package/dist/types/payloads/prediction-v1.js.map +1 -0
  1059. package/dist/types/portfolio.d.ts +31 -698
  1060. package/dist/types/portfolio.js +20 -110
  1061. package/dist/types/portfolio.js.map +1 -1
  1062. package/dist/types/prediction-apy.d.ts +26 -366
  1063. package/dist/types/prediction-apy.js +12 -68
  1064. package/dist/types/prediction-apy.js.map +1 -1
  1065. package/dist/types/prediction-v1.d.ts +2 -0
  1066. package/dist/types/prediction-v1.js +2 -0
  1067. package/dist/types/prediction-v1.js.map +1 -0
  1068. package/dist/types/prediction.d.ts +546 -382
  1069. package/dist/types/prediction.js +16 -87
  1070. package/dist/types/prediction.js.map +1 -1
  1071. package/dist/types/session-provenance.d.ts +71 -0
  1072. package/dist/types/session-provenance.js +19 -0
  1073. package/dist/types/session-provenance.js.map +1 -0
  1074. package/dist/types/task-document.d.ts +1121 -0
  1075. package/dist/types/task-document.js +99 -0
  1076. package/dist/types/task-document.js.map +1 -0
  1077. package/dist/types/task.d.ts +805 -0
  1078. package/dist/types/task.js +88 -0
  1079. package/dist/types/task.js.map +1 -0
  1080. package/dist/types/window.d.ts +12 -0
  1081. package/dist/types/window.js +6 -0
  1082. package/dist/types/window.js.map +1 -0
  1083. package/dist/util/path-safety.d.ts +21 -0
  1084. package/dist/util/path-safety.js +28 -0
  1085. package/dist/util/path-safety.js.map +1 -0
  1086. package/dist/util/redact-rpc-urls.d.ts +5 -0
  1087. package/dist/util/redact-rpc-urls.js +9 -0
  1088. package/dist/util/redact-rpc-urls.js.map +1 -0
  1089. package/dist/vendor/@jinn-network/sdk/README.md +89 -0
  1090. package/dist/vendor/@jinn-network/sdk/dist/capabilities.d.ts +52 -0
  1091. package/dist/vendor/@jinn-network/sdk/dist/capabilities.js +1 -0
  1092. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +120 -0
  1093. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +39 -0
  1094. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +145 -0
  1095. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +317 -0
  1096. package/dist/vendor/@jinn-network/sdk/dist/harness.d.ts +120 -0
  1097. package/dist/vendor/@jinn-network/sdk/dist/harness.js +31 -0
  1098. package/dist/vendor/@jinn-network/sdk/dist/index.d.ts +4 -0
  1099. package/dist/vendor/@jinn-network/sdk/dist/index.js +7 -0
  1100. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +32 -0
  1101. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +131 -0
  1102. package/dist/vendor/@jinn-network/sdk/dist/manifest.d.ts +69 -0
  1103. package/dist/vendor/@jinn-network/sdk/dist/manifest.js +3 -0
  1104. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +223 -0
  1105. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +64 -0
  1106. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +359 -0
  1107. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +60 -0
  1108. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +110 -0
  1109. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +58 -0
  1110. package/dist/vendor/@jinn-network/sdk/dist/plugins.d.ts +36 -0
  1111. package/dist/vendor/@jinn-network/sdk/dist/plugins.js +54 -0
  1112. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +870 -0
  1113. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +80 -0
  1114. package/dist/vendor/@jinn-network/sdk/dist/session-derived/distill-prompt-v1.d.ts +2 -0
  1115. package/dist/vendor/@jinn-network/sdk/dist/session-derived/distill-prompt-v1.js +10 -0
  1116. package/dist/vendor/@jinn-network/sdk/dist/solvernets/index.d.ts +6 -0
  1117. package/dist/vendor/@jinn-network/sdk/dist/solvernets/index.js +8 -0
  1118. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +559 -0
  1119. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +126 -0
  1120. package/dist/vendor/@jinn-network/sdk/dist/solvernets/prediction-v1.d.ts +6 -0
  1121. package/dist/vendor/@jinn-network/sdk/dist/solvernets/prediction-v1.js +3 -0
  1122. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +4 -0
  1123. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +2 -0
  1124. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +66 -0
  1125. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +44 -0
  1126. package/dist/vendor/@jinn-network/sdk/dist/types.d.ts +116 -0
  1127. package/dist/vendor/@jinn-network/sdk/dist/types.js +21 -0
  1128. package/dist/vendor/@jinn-network/sdk/package.json +43 -0
  1129. package/dist/venues/hyperliquid/account-value.d.ts +1 -1
  1130. package/dist/venues/hyperliquid/account-value.js +1 -1
  1131. package/dist/venues/polymarket/client.d.ts +77 -0
  1132. package/dist/venues/polymarket/client.js +309 -0
  1133. package/dist/venues/polymarket/client.js.map +1 -0
  1134. package/dist/withdraw/run-withdraw-plan.js +0 -2
  1135. package/dist/withdraw/run-withdraw-plan.js.map +1 -1
  1136. package/dist/x402/acquire.d.ts +14 -3
  1137. package/dist/x402/acquire.js +28 -11
  1138. package/dist/x402/acquire.js.map +1 -1
  1139. package/dist/x402/handler.d.ts +15 -3
  1140. package/dist/x402/handler.js +189 -24
  1141. package/dist/x402/handler.js.map +1 -1
  1142. package/package.json +60 -15
  1143. package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
  1144. package/plugins/claude-code-learner/.codex-plugin/plugin.json +39 -0
  1145. package/plugins/claude-code-learner/AGENTS.md +40 -0
  1146. package/plugins/claude-code-learner/CLAUDE.md +33 -0
  1147. package/plugins/claude-code-learner/README.md +59 -0
  1148. package/plugins/claude-code-learner/hooks/hooks.json +16 -0
  1149. package/plugins/claude-code-learner/hooks/session-start +38 -0
  1150. package/plugins/claude-code-learner/skills/learn/SKILL.md +412 -0
  1151. package/plugins/claude-code-learner/skills/learn/analyst-prompt.md +68 -0
  1152. package/plugins/claude-code-learner/skills/learn/consolidator-prompt.md +94 -0
  1153. package/plugins/claude-code-learner/skills/learn/explorer-prompt.md +53 -0
  1154. package/plugins/claude-code-learner/skills/learn/planner-prompt.md +87 -0
  1155. package/plugins/claude-code-learner/skills/learn/promoter-prompt.md +113 -0
  1156. package/plugins/claude-code-learner/skills/learn/step-worker-prompt.md +47 -0
  1157. package/plugins/claude-code-learner/skills/learn/strategist-prompt.md +85 -0
  1158. package/plugins/jinn-prediction-plugin/.claude-plugin/plugin.json +19 -0
  1159. package/plugins/jinn-prediction-plugin/.mcp.json +8 -0
  1160. package/plugins/jinn-prediction-plugin/GEMINI.md +7 -0
  1161. package/plugins/jinn-prediction-plugin/gemini-extension.json +13 -0
  1162. package/plugins/jinn-prediction-plugin/jinn.plugin.json +26 -0
  1163. package/plugins/jinn-prediction-plugin/mcp/polymarket-server.mjs +322 -0
  1164. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-solution.schema.json +12 -0
  1165. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-task.schema.json +25 -0
  1166. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-verdict.schema.json +11 -0
  1167. package/plugins/jinn-prediction-plugin/schemas/prediction-v1-solution.schema.json +34 -0
  1168. package/plugins/jinn-prediction-plugin/schemas/prediction-v1-task.schema.json +118 -0
  1169. package/plugins/jinn-prediction-plugin/schemas/prediction-v1-verdict.schema.json +84 -0
  1170. package/plugins/jinn-prediction-plugin/skills/base-rate-forecasting/SKILL.md +3 -0
  1171. package/plugins/jinn-prediction-plugin/skills/calibration/SKILL.md +3 -0
  1172. package/plugins/jinn-prediction-plugin/skills/common-biases/SKILL.md +3 -0
  1173. package/plugins/jinn-prediction-plugin/skills/polymarket-task-handling/SKILL.md +5 -0
  1174. package/plugins/jinn-prediction-plugin/skills/prediction-corpus-retrieval/SKILL.md +35 -0
  1175. package/plugins/network-tools/.claude-plugin/plugin.json +12 -0
  1176. package/plugins/network-tools/.codex-plugin/plugin.json +39 -0
  1177. package/plugins/network-tools/.mcp.json +11 -0
  1178. package/plugins/network-tools/jinn.plugin.json +29 -0
  1179. package/plugins/network-tools/mcp/jinn-client-server.mjs +110 -0
  1180. package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +5 -0
  1181. package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +39 -0
  1182. package/plugins/swe-rebench-v2-runtime/README.md +11 -0
  1183. package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +12 -0
  1184. package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +25 -0
  1185. package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +64 -0
  1186. package/skills/jinn-operator/SKILL.md +120 -101
  1187. package/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
  1188. package/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
  1189. package/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
  1190. package/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
  1191. package/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
  1192. package/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
  1193. package/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
  1194. package/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  1195. package/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  1196. package/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  1197. package/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  1198. package/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  1199. package/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  1200. package/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  1201. package/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  1202. package/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
  1203. package/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
  1204. package/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
  1205. package/templates/harnesses/evaluator/README.md.tmpl +36 -0
  1206. package/templates/harnesses/evaluator/gitignore.tmpl +3 -0
  1207. package/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
  1208. package/templates/harnesses/evaluator/package.json.tmpl +26 -0
  1209. package/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
  1210. package/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
  1211. package/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
  1212. package/templates/harnesses/forecaster/README.md.tmpl +25 -0
  1213. package/templates/harnesses/forecaster/gitignore.tmpl +5 -0
  1214. package/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
  1215. package/templates/harnesses/forecaster/package.json.tmpl +26 -0
  1216. package/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
  1217. package/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
  1218. package/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
  1219. package/dist/adapters/claim-registry/abi.d.ts +0 -127
  1220. package/dist/adapters/claim-registry/abi.js +0 -93
  1221. package/dist/adapters/claim-registry/abi.js.map +0 -1
  1222. package/dist/adapters/claim-registry/client.d.ts +0 -89
  1223. package/dist/adapters/claim-registry/client.js +0 -205
  1224. package/dist/adapters/claim-registry/client.js.map +0 -1
  1225. package/dist/adapters/mech/claim-policy.d.ts +0 -40
  1226. package/dist/adapters/mech/claim-policy.js +0 -104
  1227. package/dist/adapters/mech/claim-policy.js.map +0 -1
  1228. package/dist/bin/jinn-mcp.d.ts +0 -2
  1229. package/dist/bin/jinn-mcp.js +0 -10
  1230. package/dist/bin/jinn-mcp.js.map +0 -1
  1231. package/dist/cli/commands/intents.d.ts +0 -17
  1232. package/dist/cli/commands/intents.js +0 -489
  1233. package/dist/cli/commands/intents.js.map +0 -1
  1234. package/dist/cli/commands/plugin-install.js +0 -803
  1235. package/dist/cli/commands/plugin-install.js.map +0 -1
  1236. package/dist/cli/commands/submit-intent.js +0 -245
  1237. package/dist/cli/commands/submit-intent.js.map +0 -1
  1238. package/dist/cli/intent-registry-access.d.ts +0 -62
  1239. package/dist/cli/intent-registry-access.js +0 -165
  1240. package/dist/cli/intent-registry-access.js.map +0 -1
  1241. package/dist/discovery/registry.d.ts +0 -97
  1242. package/dist/discovery/registry.js +0 -177
  1243. package/dist/discovery/registry.js.map +0 -1
  1244. package/dist/discovery/subgraph.d.ts +0 -37
  1245. package/dist/discovery/subgraph.js +0 -87
  1246. package/dist/discovery/subgraph.js.map +0 -1
  1247. package/dist/intents/kinds/constants.d.ts +0 -5
  1248. package/dist/intents/kinds/constants.js +0 -6
  1249. package/dist/intents/kinds/constants.js.map +0 -1
  1250. package/dist/intents/kinds/index.d.ts +0 -28
  1251. package/dist/intents/kinds/index.js +0 -50
  1252. package/dist/intents/kinds/index.js.map +0 -1
  1253. package/dist/intents/kinds/portfolio-v0.d.ts +0 -2
  1254. package/dist/intents/kinds/portfolio-v0.js +0 -13
  1255. package/dist/intents/kinds/portfolio-v0.js.map +0 -1
  1256. package/dist/intents/kinds/prediction-apy-v0.d.ts +0 -3
  1257. package/dist/intents/kinds/prediction-apy-v0.js +0 -21
  1258. package/dist/intents/kinds/prediction-apy-v0.js.map +0 -1
  1259. package/dist/intents/kinds/prediction-v0.d.ts +0 -3
  1260. package/dist/intents/kinds/prediction-v0.js +0 -32
  1261. package/dist/intents/kinds/prediction-v0.js.map +0 -1
  1262. package/dist/intents/kinds/spec-kind.d.ts +0 -38
  1263. package/dist/intents/kinds/spec-kind.js +0 -6
  1264. package/dist/intents/kinds/spec-kind.js.map +0 -1
  1265. package/dist/intents/posting-service.d.ts +0 -26
  1266. package/dist/intents/posting-service.js +0 -218
  1267. package/dist/intents/posting-service.js.map +0 -1
  1268. package/dist/intents/prediction-apy-v0-auto.d.ts +0 -11
  1269. package/dist/intents/prediction-apy-v0-auto.js +0 -46
  1270. package/dist/intents/prediction-apy-v0-auto.js.map +0 -1
  1271. package/dist/intents/prediction-apy-v0-template.d.ts +0 -8
  1272. package/dist/intents/prediction-apy-v0-template.js +0 -22
  1273. package/dist/intents/prediction-apy-v0-template.js.map +0 -1
  1274. package/dist/intents/prediction-v0-auto.d.ts +0 -53
  1275. package/dist/intents/prediction-v0-auto.js +0 -84
  1276. package/dist/intents/prediction-v0-auto.js.map +0 -1
  1277. package/dist/intents/prediction-v0-template.d.ts +0 -70
  1278. package/dist/intents/prediction-v0-template.js +0 -145
  1279. package/dist/intents/prediction-v0-template.js.map +0 -1
  1280. package/dist/intents/sources.d.ts +0 -39
  1281. package/dist/intents/sources.js +0 -42
  1282. package/dist/intents/sources.js.map +0 -1
  1283. package/dist/restorer/engine/canonical-json.d.ts +0 -18
  1284. package/dist/restorer/engine/canonical-json.js +0 -59
  1285. package/dist/restorer/engine/canonical-json.js.map +0 -1
  1286. package/dist/restorer/engine/claim.d.ts +0 -69
  1287. package/dist/restorer/engine/claim.js +0 -104
  1288. package/dist/restorer/engine/claim.js.map +0 -1
  1289. package/dist/restorer/engine/delivery.d.ts +0 -52
  1290. package/dist/restorer/engine/delivery.js +0 -63
  1291. package/dist/restorer/engine/delivery.js.map +0 -1
  1292. package/dist/restorer/engine/engine.d.ts +0 -213
  1293. package/dist/restorer/engine/engine.js +0 -769
  1294. package/dist/restorer/engine/engine.js.map +0 -1
  1295. package/dist/restorer/engine/manifest-assembly.d.ts +0 -67
  1296. package/dist/restorer/engine/manifest-assembly.js +0 -79
  1297. package/dist/restorer/engine/manifest-assembly.js.map +0 -1
  1298. package/dist/restorer/engine/packaging.d.ts +0 -87
  1299. package/dist/restorer/engine/packaging.js +0 -350
  1300. package/dist/restorer/engine/packaging.js.map +0 -1
  1301. package/dist/restorer/engine/persistence.d.ts +0 -170
  1302. package/dist/restorer/engine/persistence.js +0 -381
  1303. package/dist/restorer/engine/persistence.js.map +0 -1
  1304. package/dist/restorer/engine/recovery.d.ts +0 -22
  1305. package/dist/restorer/engine/recovery.js +0 -24
  1306. package/dist/restorer/engine/recovery.js.map +0 -1
  1307. package/dist/restorer/engine/registry.d.ts +0 -62
  1308. package/dist/restorer/engine/registry.js +0 -73
  1309. package/dist/restorer/engine/registry.js.map +0 -1
  1310. package/dist/restorer/engine/signing.d.ts +0 -30
  1311. package/dist/restorer/engine/signing.js +0 -39
  1312. package/dist/restorer/engine/signing.js.map +0 -1
  1313. package/dist/restorer/engine/state.d.ts +0 -42
  1314. package/dist/restorer/engine/state.js +0 -87
  1315. package/dist/restorer/engine/state.js.map +0 -1
  1316. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +0 -64
  1317. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +0 -1
  1318. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +0 -104
  1319. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +0 -721
  1320. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +0 -1
  1321. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +0 -1
  1322. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +0 -1
  1323. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +0 -97
  1324. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +0 -226
  1325. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +0 -1
  1326. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +0 -44
  1327. package/dist/restorer/impls/claude-mcp-prediction/index.js +0 -239
  1328. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +0 -1
  1329. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +0 -135
  1330. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +0 -1
  1331. package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +0 -8
  1332. package/dist/restorer/impls/claude-mcp-prediction/prompt.js +0 -54
  1333. package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +0 -1
  1334. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +0 -36
  1335. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +0 -137
  1336. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +0 -1
  1337. package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +0 -84
  1338. package/dist/restorer/impls/claude-mcp-prediction/types.js +0 -6
  1339. package/dist/restorer/impls/claude-mcp-prediction/types.js.map +0 -1
  1340. package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +0 -34
  1341. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +0 -233
  1342. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +0 -1
  1343. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js +0 -136
  1344. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +0 -1
  1345. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +0 -7
  1346. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js +0 -46
  1347. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +0 -1
  1348. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +0 -27
  1349. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +0 -128
  1350. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +0 -1
  1351. package/dist/restorer/impls/claude-mcp-prediction-apy/types.d.ts +0 -64
  1352. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +0 -6
  1353. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +0 -1
  1354. package/dist/restorer/impls/evaluation-context.d.ts +0 -16
  1355. package/dist/restorer/impls/evaluation-context.js +0 -18
  1356. package/dist/restorer/impls/evaluation-context.js.map +0 -1
  1357. package/dist/restorer/impls/index.d.ts +0 -46
  1358. package/dist/restorer/impls/index.js +0 -88
  1359. package/dist/restorer/impls/index.js.map +0 -1
  1360. package/dist/restorer/impls/legacy-claude/index.d.ts +0 -52
  1361. package/dist/restorer/impls/legacy-claude/index.js +0 -140
  1362. package/dist/restorer/impls/legacy-claude/index.js.map +0 -1
  1363. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +0 -68
  1364. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +0 -117
  1365. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +0 -1
  1366. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +0 -1
  1367. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +0 -78
  1368. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +0 -274
  1369. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +0 -1
  1370. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +0 -23
  1371. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +0 -49
  1372. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +0 -1
  1373. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +0 -25
  1374. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +0 -44
  1375. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +0 -1
  1376. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +0 -17
  1377. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +0 -43
  1378. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +0 -1
  1379. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +0 -44
  1380. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +0 -440
  1381. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +0 -1
  1382. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +0 -1
  1383. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +0 -34
  1384. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +0 -1
  1385. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +0 -40
  1386. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +0 -107
  1387. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +0 -1
  1388. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +0 -1
  1389. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +0 -1
  1390. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +0 -6
  1391. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +0 -11
  1392. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +0 -1
  1393. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +0 -42
  1394. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +0 -208
  1395. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +0 -1
  1396. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +0 -7
  1397. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +0 -29
  1398. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +0 -1
  1399. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +0 -1
  1400. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +0 -1
  1401. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +0 -31
  1402. package/dist/restorer/impls/prediction-v0-baseline/index.js +0 -100
  1403. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +0 -1
  1404. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +0 -8
  1405. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +0 -41
  1406. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +0 -1
  1407. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +0 -7
  1408. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +0 -1
  1409. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +0 -20
  1410. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +0 -1
  1411. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +0 -9
  1412. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +0 -1
  1413. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +0 -3
  1414. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +0 -1
  1415. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +0 -13
  1416. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +0 -111
  1417. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +0 -1
  1418. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +0 -5
  1419. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +0 -1
  1420. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +0 -36
  1421. package/dist/restorer/impls/prediction-v0-evaluator/index.js +0 -234
  1422. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +0 -1
  1423. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +0 -1
  1424. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +0 -1
  1425. package/dist/restorer/types.d.ts +0 -194
  1426. package/dist/restorer/types.js +0 -28
  1427. package/dist/restorer/types.js.map +0 -1
  1428. package/dist/types/desired-state.d.ts +0 -94
  1429. package/dist/types/desired-state.js +0 -36
  1430. package/dist/types/desired-state.js.map +0 -1
  1431. /package/dist/cli/commands/{plugin-install.d.ts → solver-nets.d.ts} +0 -0
  1432. /package/dist/cli/commands/{submit-intent.d.ts → tasks.d.ts} +0 -0
  1433. /package/dist/{restorer/impls/prediction-apy-v0-baseline → harnesses/impls/claude-code-learner}/types.js +0 -0
  1434. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.js +0 -0
  1435. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +0 -0
  1436. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.js +0 -0
  1437. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.d.ts +0 -0
  1438. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.js +0 -0
  1439. /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.d.ts +0 -0
  1440. /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +0 -0
  1441. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.d.ts +0 -0
  1442. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.js +0 -0
  1443. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.d.ts +0 -0
  1444. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.js +0 -0
  1445. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.js +0 -0
  1446. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.d.ts +0 -0
  1447. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.js +0 -0
  1448. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/types.d.ts +0 -0
  1449. /package/dist/{restorer/impls/prediction-apy-v0-evaluator → harnesses/impls/prediction-apy-v0-baseline}/types.js +0 -0
  1450. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.d.ts +0 -0
  1451. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.js +0 -0
  1452. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/types.d.ts +0 -0
  1453. /package/dist/{restorer/impls/prediction-v0-baseline → harnesses/impls/prediction-apy-v0-evaluator}/types.js +0 -0
  1454. /package/dist/{restorer/impls/prediction-v0-evaluator → harnesses/impls/prediction-v0-baseline}/types.js +0 -0
  1455. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.js +0 -0
  1456. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.js +0 -0
  1457. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.js +0 -0
  1458. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.js +0 -0
  1459. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.d.ts +0 -0
  1460. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.js +0 -0
  1461. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/types.d.ts +0 -0
@@ -1,14 +1,58 @@
1
+ import { getAddress, zeroAddress } from 'viem';
2
+ import { keccak256, toBytes } from 'viem';
3
+ import { privateKeyToAccount } from 'viem/accounts';
1
4
  import { base, baseSepolia } from 'viem/chains';
2
- import { PermanentError } from '../../types/index.js';
5
+ import { PermanentError, parseTask } from '../../types/index.js';
3
6
  import { createClients } from './safe.js';
4
- import { buildDesiredStatePayload, buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, parseDesiredStateFromPayload, } from './ipfs.js';
5
- import { submitRestorationJob, submitEvaluationJob, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeMarketplaceRequestLogs, decodeDeliverLogs, callDeliverToMarketplace, scanRestorationJobs, scanEvaluationJobs, scanLatestRequestDataByRid, scanLatestDeliveryDataByRid, findLatestDeliveryDataHexForRequest, } from './contracts.js';
6
- import { MECH_MARKETPLACE_ABI } from './types.js';
7
- import { AcceptAllPolicy } from './claim-policy.js';
7
+ import { buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, fetchSignedTaskFromIpfs, fetchSignedEnvelopeFromIpfs, } from './ipfs.js';
8
+ import { canonicalJson } from '../../harnesses/engine/canonical-json.js';
9
+ import { SignedEnvelopeSchema } from '../../types/envelope.js';
10
+ import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
11
+ import { manifestDigestForCid, queryClaimableTaskCandidates, } from './task-subgraph.js';
8
12
  import { withRecoverableRetry } from '../../tx-retry.js';
9
13
  import { formatRpcError } from '../../rpc-error-context.js';
10
- import { computeEvidenceSimHash } from '../../earning/evidence-simhash.js';
11
- import { RESTORATION_INTENT_CID_CONTEXT_KEY } from '../../restorer/impls/evaluation-context.js';
14
+ import { RESTORATION_ENVELOPE_CID_CONTEXT_KEY, RESTORATION_TASK_CID_CONTEXT_KEY, } from '../../harnesses/impls/evaluation-context.js';
15
+ import { signTaskV1 } from '../../tasks/signing.js';
16
+ const ROUTER_REQUEST_CURSOR_CONFIG_KEY = 'mech_router_request_block_cursor_v1';
17
+ const PENDING_EVALUATION_SOLUTIONS_CONFIG_KEY = 'mech_pending_evaluation_solutions_v1';
18
+ const DEFAULT_MECH_DELIVER_BACKFILL_LOOKBACK_BLOCKS = 100000n;
19
+ const DEFAULT_ROUTER_LOG_CHUNK_BLOCKS = 9999n;
20
+ const DEFAULT_TASK_DISCOVERY_FROM_BLOCK = {
21
+ 84532: 41153291n,
22
+ 8453: 25000000n,
23
+ };
24
+ const DEFAULT_MECH_CLAIM_POLICY = {
25
+ mode: 'exclusive',
26
+ maxClaims: 1,
27
+ maxClaimsPerOperator: 1,
28
+ claimLeaseTtlSeconds: 30 * 60,
29
+ };
30
+ /**
31
+ * Spec §14 (Task 24): a Task carries `contractId` + `contractVersion` (BINDING)
32
+ * and a derivable `solverType = `${contractId}.${contractVersion}``. When the
33
+ * caller only supplies a legacy `solverType`, derive the BINDING fields from
34
+ * its `<id>.<version>` shape; fall back to `('legacy', 'v0')` so signing never
35
+ * produces an empty BINDING field.
36
+ */
37
+ function deriveSolverType(state) {
38
+ if (state.contractId && state.contractVersion) {
39
+ return `${state.contractId}.${state.contractVersion}`;
40
+ }
41
+ return 'legacy';
42
+ }
43
+ function deriveContractIdVersion(state, solverType) {
44
+ if (state.contractId && state.contractVersion) {
45
+ return { contractId: state.contractId, contractVersion: state.contractVersion };
46
+ }
47
+ const dot = solverType.lastIndexOf('.');
48
+ if (dot > 0 && dot < solverType.length - 1) {
49
+ return {
50
+ contractId: solverType.slice(0, dot),
51
+ contractVersion: solverType.slice(dot + 1),
52
+ };
53
+ }
54
+ return { contractId: solverType || 'legacy', contractVersion: 'v0' };
55
+ }
12
56
  export class MechAdapter {
13
57
  name = 'mech';
14
58
  publicClient;
@@ -18,27 +62,18 @@ export class MechAdapter {
18
62
  requestBlockCursor = 0n;
19
63
  deliveryBlockCursor = 0n;
20
64
  pendingEvaluations = new Map();
21
- pendingEvaluationClaims = new Set();
22
- // Restoration requests where claimDelivery succeeded but evaluation creation failed.
23
- // Swept on each poll cycle so they don't require a new Deliver event.
24
- claimedButNotEvaluated = new Set();
25
- // Restoration result content cached across evaluation-job retries so a transient
26
- // Safe/router failure does not silently strip evaluator context on the next poll.
27
- pendingEvaluationResults = new Map();
28
- // RIDs with no delivery found in backfill window; avoids repeated 500k-block rescans.
29
- backfillMissRids = new Set();
30
- // Original desired states keyed by request ID (restoration and evaluation)
31
- // so we can yield accurate desiredState in DeliveredResult
65
+ observedTasks = new Map();
66
+ requestKinds = new Map();
67
+ claimedRestorationTaskIds = new Set();
68
+ evaluationOpportunities = new Map();
69
+ pendingEvaluationSolutions = new Map();
70
+ // Original Tasks keyed by request ID (restoration and evaluation)
71
+ // so we can yield accurate Task in DeliveredResult
32
72
  originalStates = new Map();
33
- // Most recently posted intent CID (IPFS); surfaced via getLastPostedIntentCid()
34
- // for ERC-8004 registration in the posting service.
35
- _lastPostedIntentCid;
36
73
  store;
37
- claimPolicy;
38
74
  constructor(config, store) {
39
75
  this.config = config;
40
76
  this.store = store;
41
- this.claimPolicy = config.claimPolicy ?? new AcceptAllPolicy();
42
77
  }
43
78
  async initialize() {
44
79
  const chain = this.config.chainId === 84532 ? baseSepolia : base;
@@ -59,202 +94,604 @@ export class MechAdapter {
59
94
  this.deliveryBlockCursor = blockNumber;
60
95
  // Recover pending state from on-chain events
61
96
  if (this.store) {
97
+ this.loadPendingEvaluationSolutions();
62
98
  await this.recoverPendingState(blockNumber);
63
99
  }
100
+ else {
101
+ const fromBlock = this.onchainTaskDiscoveryFromBlock();
102
+ if (fromBlock && fromBlock <= blockNumber) {
103
+ this.requestBlockCursor = fromBlock - 1n;
104
+ }
105
+ }
64
106
  }
65
107
  async recoverPendingState(currentBlock) {
66
108
  const fromBlock = this.store?.getLastProcessedBlock() ?? currentBlock;
67
- if (fromBlock >= currentBlock)
68
- return;
69
- console.error(`[mech] Recovering pending state from block ${fromBlock} to ${currentBlock}`);
70
- // Scan for restoration jobs this creator posted
71
- const restorations = await scanRestorationJobs(this.publicClient, this.config.routerAddress, this.config.safeAddress, fromBlock, currentBlock);
72
- // Scan for evaluation jobs this creator posted
73
- const evaluations = await scanEvaluationJobs(this.publicClient, this.config.routerAddress, this.config.safeAddress, fromBlock, currentBlock);
74
- // Build set of restoration IDs that already have evaluation jobs
75
- const hasEvaluation = new Set(evaluations.map(e => e.restorationRequestId));
76
- // Check each restoration's delivery status
77
- for (const restoration of restorations) {
78
- if (hasEvaluation.has(restoration.requestId)) {
79
- // Evaluation already created — check if eval delivery needs claiming
80
- const evalJob = evaluations.find(e => e.restorationRequestId === restoration.requestId);
81
- if (evalJob) {
82
- const evalInfo = await this.publicClient.readContract({
83
- address: this.config.mechMarketplaceAddress,
84
- abi: MECH_MARKETPLACE_ABI,
85
- functionName: 'mapRequestIdInfos',
86
- args: [evalJob.requestId],
87
- });
88
- if (evalInfo[1] === '0x0000000000000000000000000000000000000000') {
89
- // Evaluation not yet delivered — track it
90
- this.pendingEvaluationClaims.add(evalJob.requestId);
91
- }
92
- // If delivered, fully complete — nothing to track
93
- }
94
- continue;
95
- }
96
- // No evaluation job yet — check delivery status
97
- const info = await this.publicClient.readContract({
98
- address: this.config.mechMarketplaceAddress,
99
- abi: MECH_MARKETPLACE_ABI,
100
- functionName: 'mapRequestIdInfos',
101
- args: [restoration.requestId],
102
- });
103
- const deliveryMech = info[1];
104
- if (deliveryMech === '0x0000000000000000000000000000000000000000') {
105
- // Not delivered yet — track for evaluation after delivery
106
- this.pendingEvaluations.set(restoration.requestId, {
107
- id: restoration.requestId,
108
- description: '', // Original description not available from events, but not needed for evaluation creation
109
- });
110
- }
111
- else {
112
- // Delivered but no evaluation — needs claim + evaluation creation
113
- this.pendingEvaluations.set(restoration.requestId, {
114
- id: restoration.requestId,
115
- description: '',
116
- });
117
- this.claimedButNotEvaluated.add(restoration.requestId);
118
- }
109
+ if (fromBlock < currentBlock) {
110
+ console.error(`[mech] TaskCoordinator clean-break recovery starts at block ${fromBlock}; ` +
111
+ 'old request-first recovery is intentionally disabled');
112
+ this.deliveryBlockCursor = fromBlock;
119
113
  }
120
- // Set delivery block cursor to scan from recovery point
121
- this.deliveryBlockCursor = fromBlock;
122
- const latestRequestDataByRid = await scanLatestRequestDataByRid(this.publicClient, this.config.mechMarketplaceAddress, fromBlock, currentBlock);
123
- const latestDeliveryDataByRid = await scanLatestDeliveryDataByRid(this.publicClient, this.config.mechContractAddress, fromBlock, currentBlock);
124
- for (const { requestId } of restorations) {
125
- const pe = this.pendingEvaluations.get(requestId);
126
- if (!pe)
127
- continue;
128
- const requestDataHex = latestRequestDataByRid.get(requestId.toLowerCase());
129
- if (requestDataHex) {
130
- const d = String(requestDataHex);
131
- const digest = d.startsWith('0x') ? d.slice(2) : d;
132
- this.pendingEvaluations.set(requestId, {
133
- ...pe,
134
- context: { ...pe.context, [RESTORATION_INTENT_CID_CONTEXT_KEY]: `f01551220${digest}` },
135
- });
114
+ const routerCursorRaw = this.store?.getConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY);
115
+ const routerFromBlock = routerCursorRaw != null
116
+ ? BigInt(routerCursorRaw)
117
+ : fromBlock;
118
+ if (routerFromBlock < currentBlock) {
119
+ this.requestBlockCursor = routerFromBlock;
120
+ }
121
+ const scanFromBlock = this.onchainTaskDiscoveryFromBlock();
122
+ if (scanFromBlock && scanFromBlock <= currentBlock) {
123
+ const canonicalCursor = scanFromBlock - 1n;
124
+ if (canonicalCursor < this.requestBlockCursor) {
125
+ this.requestBlockCursor = canonicalCursor;
136
126
  }
137
- const deliveryDataHex = latestDeliveryDataByRid.get(requestId.toLowerCase());
138
- if (deliveryDataHex) {
139
- try {
140
- const d = String(deliveryDataHex);
141
- const dig = d.startsWith('0x') ? d.slice(2) : d;
142
- const payload = (await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${dig}`));
143
- this.pendingEvaluationResults.set(requestId, payload.data ?? JSON.stringify(payload));
144
- this.backfillMissRids.delete(requestId);
145
- }
146
- catch (err) {
147
- console.error(`[mech] recovery: could not load restoration result IPFS for ${requestId}:`, err);
127
+ console.error(`[mech] TaskCreated canonical backlog scan enabled from block ${scanFromBlock}; ` +
128
+ 'subgraph discovery is optional acceleration only');
129
+ }
130
+ }
131
+ onchainTaskDiscoveryFromBlock() {
132
+ const discovery = this.config.taskDiscovery;
133
+ const hasJoinedSolverNet = (discovery?.solverNetManifestCids?.length ?? 0) > 0;
134
+ if (!hasJoinedSolverNet)
135
+ return undefined;
136
+ if (discovery?.onchainFromBlock !== undefined) {
137
+ const raw = discovery.onchainFromBlock;
138
+ const value = typeof raw === 'bigint' ? raw : BigInt(Math.max(0, Math.floor(raw)));
139
+ return value > 0n ? value : undefined;
140
+ }
141
+ return DEFAULT_TASK_DISCOVERY_FROM_BLOCK[this.config.chainId];
142
+ }
143
+ joinedManifestDigestSet() {
144
+ const cids = this.config.taskDiscovery?.solverNetManifestCids ?? [];
145
+ return new Set(cids
146
+ .filter(Boolean)
147
+ .map((cid) => manifestDigestForCid(cid).toLowerCase()));
148
+ }
149
+ allowedDiscoveryTaskIds() {
150
+ const raw = this.config.taskDiscovery?.allowedTaskIds ?? [];
151
+ const ids = raw.map((id) => id.trim()).filter(Boolean);
152
+ return ids.length > 0 ? new Set(ids) : null;
153
+ }
154
+ isDiscoveryTaskAllowed(taskId) {
155
+ const allowed = this.allowedDiscoveryTaskIds();
156
+ return allowed === null || allowed.has(taskId);
157
+ }
158
+ async getRouterLogsInChunks(fromBlock, toBlock) {
159
+ const logs = [];
160
+ for (let start = fromBlock; start <= toBlock; start += DEFAULT_ROUTER_LOG_CHUNK_BLOCKS + 1n) {
161
+ const end = start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > toBlock
162
+ ? toBlock
163
+ : start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
164
+ logs.push(...await this.publicClient.getLogs({
165
+ address: this.config.routerAddress,
166
+ fromBlock: start,
167
+ toBlock: end,
168
+ }));
169
+ }
170
+ return logs;
171
+ }
172
+ loadPendingEvaluationSolutions() {
173
+ const raw = this.store?.getConfigValue(PENDING_EVALUATION_SOLUTIONS_CONFIG_KEY);
174
+ if (!raw)
175
+ return;
176
+ try {
177
+ const parsed = JSON.parse(raw);
178
+ if (!Array.isArray(parsed))
179
+ return;
180
+ for (const value of parsed) {
181
+ if (value == null || typeof value !== 'object')
182
+ continue;
183
+ const item = value;
184
+ if (typeof item.taskId !== 'string' ||
185
+ typeof item.requestId !== 'string' ||
186
+ typeof item.operator !== 'string' ||
187
+ typeof item.attemptIndex !== 'number') {
188
+ continue;
148
189
  }
190
+ const solution = {
191
+ taskId: item.taskId,
192
+ attemptIndex: item.attemptIndex,
193
+ requestId: item.requestId,
194
+ operator: item.operator,
195
+ transactionHash: typeof item.transactionHash === 'string'
196
+ ? item.transactionHash
197
+ : undefined,
198
+ blockNumber: typeof item.blockNumber === 'number' ? item.blockNumber : undefined,
199
+ };
200
+ this.pendingEvaluationSolutions.set(solution.requestId, solution);
149
201
  }
150
202
  }
151
- const recovered = this.pendingEvaluations.size + this.pendingEvaluationClaims.size + this.claimedButNotEvaluated.size;
152
- if (recovered > 0) {
153
- console.error(`[mech] Recovered: ${this.pendingEvaluations.size} pending evaluations, ${this.pendingEvaluationClaims.size} pending eval claims, ${this.claimedButNotEvaluated.size} claimed but not evaluated`);
203
+ catch (err) {
204
+ console.error('[mech] Failed to load pending evaluation solutions:', err);
154
205
  }
155
206
  }
156
- getLastPostedIntentCid() {
157
- return this._lastPostedIntentCid;
207
+ persistPendingEvaluationSolutions() {
208
+ if (!this.store)
209
+ return;
210
+ this.store.setConfigValue(PENDING_EVALUATION_SOLUTIONS_CONFIG_KEY, JSON.stringify(Array.from(this.pendingEvaluationSolutions.values())));
211
+ }
212
+ rememberPendingEvaluationSolution(solution) {
213
+ this.pendingEvaluationSolutions.set(solution.requestId, solution);
214
+ this.persistPendingEvaluationSolutions();
215
+ }
216
+ forgetPendingEvaluationSolution(requestId) {
217
+ if (!this.pendingEvaluationSolutions.delete(requestId))
218
+ return;
219
+ this.persistPendingEvaluationSolutions();
158
220
  }
159
- async postDesiredState(state) {
221
+ async postTask(state) {
160
222
  const restorationState = {
161
223
  ...state,
162
- type: state.type ?? 'restoration',
224
+ role: state.role ?? 'restoration',
163
225
  attemptId: state.attemptId,
164
226
  attemptNumber: state.attemptNumber,
165
227
  };
166
- const restorationPayload = buildDesiredStatePayload(restorationState);
167
- const restorationCid = await uploadToIpfs(this.config.ipfsRegistryUrl, restorationPayload);
228
+ const signedTask = state.signedTask ?? await this.signTaskDocument(restorationState);
229
+ // Upload the canonical signed Task document so watchers can verify and
230
+ // parse the same task.v1 shape the creator signed.
231
+ const ipfsDoc = signedTask;
232
+ const restorationCid = await uploadToIpfs(this.config.ipfsRegistryUrl, ipfsDoc);
168
233
  const restorationDataHex = cidToDigestHex(restorationCid);
169
234
  const digestNo0x = restorationDataHex.startsWith('0x') ? restorationDataHex.slice(2) : restorationDataHex;
170
- const restorationIntentCid = `f01551220${digestNo0x}`;
171
- // Expose for ERC-8004 registration (posting service reads this right after postDesiredState).
172
- this._lastPostedIntentCid = restorationIntentCid;
235
+ const restorationTaskCid = `f01551220${digestNo0x}`;
173
236
  const deliveryRate = await getMechDeliveryRate(this.publicClient, this.config.mechContractAddress);
174
237
  const { max: maxTimeout } = await getTimeoutBounds(this.publicClient, this.config.mechMarketplaceAddress);
175
- const restorationJob = await submitRestorationJob(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, this.config.mechContractAddress, restorationDataHex, deliveryRate, maxTimeout);
176
- const restorationRequestIds = restorationJob.requestIds;
177
- if (restorationRequestIds.length === 0) {
178
- throw new PermanentError('No request IDs returned from router ' +
179
- `(tx=${restorationJob.txHash}, router=${this.config.routerAddress}, safe=${this.config.safeAddress}, ` +
180
- `mech=${this.config.mechContractAddress}, receiptLogs=${restorationJob.receiptLogCount}, chainId=${this.config.chainId})`);
238
+ // Task 24 (spec/2026-05-05-solvernet-creation-and-launch.md §14): the
239
+ // on-chain digest is now manifest-bound — `keccak256(manifestCid)` —
240
+ // replacing the prior `keccak256(solverType)` derivation. This makes
241
+ // operator eligibility per-launch, not per-protocol.
242
+ if (!signedTask.solverNetManifestCid) {
243
+ throw new PermanentError(`Cannot post task ${signedTask.id}: signed task is missing solverNetManifestCid ` +
244
+ `(BINDING — required for keccak256(manifestCid) digest derivation).`);
181
245
  }
182
- const restorationRequestId = restorationRequestIds[0];
183
- // Store for evaluation creation after delivery is claimed. The evaluation
184
- // job’s IPFS CID is different from the restoration intended-state CID; evaluators
185
- // need the latter to verify submission.intent.cid (see context.restorationIntentCid).
186
- const stateForEval = {
187
- ...state,
188
- context: { ...(state.context ?? {}), [RESTORATION_INTENT_CID_CONTEXT_KEY]: restorationIntentCid },
246
+ const manifestDigest = keccak256(toBytes(signedTask.solverNetManifestCid));
247
+ const policy = this.contractPolicyForTask(restorationState);
248
+ const taskSubmission = await submitTask(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, restorationDataHex, manifestDigest, policy, deliveryRate, deliveryRate, maxTimeout, this.config.evictionRecovery);
249
+ const announcement = {
250
+ taskId: taskSubmission.taskId,
251
+ task: {
252
+ ...restorationState,
253
+ signedTask,
254
+ context: { ...(restorationState.context ?? {}), [RESTORATION_TASK_CID_CONTEXT_KEY]: restorationTaskCid },
255
+ },
256
+ taskCid: restorationTaskCid,
257
+ onchainCreationTx: taskSubmission.txHash,
258
+ onchainCreationBlock: taskSubmission.blockNumber,
259
+ };
260
+ this.observedTasks.set(taskSubmission.taskId, announcement);
261
+ return {
262
+ taskId: taskSubmission.taskId,
263
+ taskCid: restorationTaskCid,
264
+ txHash: taskSubmission.txHash,
265
+ blockNumber: taskSubmission.blockNumber,
266
+ };
267
+ }
268
+ async signTaskDocument(state) {
269
+ const now = Date.now();
270
+ const account = privateKeyToAccount(this.config.agentEoaPrivateKey);
271
+ const extras = {};
272
+ if (state.context)
273
+ extras['context'] = state.context;
274
+ if (state.attemptId)
275
+ extras['attemptId'] = state.attemptId;
276
+ if (state.attemptNumber !== undefined)
277
+ extras['attemptNumber'] = state.attemptNumber;
278
+ if (state.restorationRequestId)
279
+ extras['restorationRequestId'] = state.restorationRequestId;
280
+ // Task 24: BINDING SolverNet manifest CID + contract id/version.
281
+ // The runtime Task may be missing them when the daemon falls back to
282
+ // ad-hoc posting paths (legacy / tests). For those we derive the
283
+ // contract id/version from solverType and require the caller to surface
284
+ // the missing manifest cid downstream — postTask() throws on missing
285
+ // solverNetManifestCid before submitTask is invoked.
286
+ if (!state.solverNetManifestCid) {
287
+ throw new PermanentError(`Cannot sign task ${state.id}: missing solverNetManifestCid ` +
288
+ `(BINDING — spec/2026-05-05-solvernet-creation-and-launch.md §14).`);
289
+ }
290
+ const solverType = state.solverType ?? deriveSolverType(state);
291
+ const { contractId, contractVersion } = deriveContractIdVersion(state, solverType);
292
+ const taskDoc = {
293
+ schemaVersion: 'task.v1',
294
+ id: state.id,
295
+ solverType,
296
+ contractId,
297
+ contractVersion,
298
+ solverNetManifestCid: state.solverNetManifestCid,
299
+ role: state.role ?? 'restoration',
300
+ description: state.description,
301
+ window: state.window ?? { startTs: now, endTs: now + 86_400_000 },
302
+ spec: state.spec ?? {},
303
+ eligibility: state.eligibility ?? {},
304
+ claimPolicy: state.claimPolicy ?? DEFAULT_MECH_CLAIM_POLICY,
305
+ creator: {
306
+ safeAddress: getAddress(this.config.safeAddress),
307
+ agentEoa: account.address,
308
+ },
309
+ createdAt: now,
310
+ ...extras,
311
+ };
312
+ return signTaskV1(taskDoc, this.config.agentEoaPrivateKey);
313
+ }
314
+ contractPolicyForTask(state) {
315
+ const nowSeconds = Math.floor(Date.now() / 1000);
316
+ const claimPolicy = state.claimPolicy ?? DEFAULT_MECH_CLAIM_POLICY;
317
+ const normalizeTs = (value, fallback) => {
318
+ const raw = value ?? fallback;
319
+ return BigInt(raw > 10_000_000_000 ? Math.floor(raw / 1000) : raw);
320
+ };
321
+ const claimWindowStart = normalizeTs(claimPolicy.claimWindowStartTs ?? state.window?.startTs, nowSeconds);
322
+ const claimWindowEnd = normalizeTs(claimPolicy.claimWindowEndTs ?? state.window?.endTs, nowSeconds + 30 * 60);
323
+ const submissionDeadline = normalizeTs(claimPolicy.submissionDeadlineTs, Number(claimWindowEnd) + claimPolicy.claimLeaseTtlSeconds);
324
+ return {
325
+ claimWindowStart,
326
+ claimWindowEnd,
327
+ submissionDeadline,
328
+ claimLeaseTtlSeconds: claimPolicy.claimLeaseTtlSeconds,
329
+ maxClaims: claimPolicy.maxClaims,
330
+ maxClaimsPerOperator: claimPolicy.maxClaimsPerOperator,
331
+ policyHook: (claimPolicy.policyHook ?? zeroAddress),
332
+ evaluationPolicy: {
333
+ requiredVerdicts: 1,
334
+ passThreshold: 1,
335
+ evaluationDeadline: submissionDeadline + BigInt(claimPolicy.claimLeaseTtlSeconds),
336
+ maxVerdictsPerEvaluator: 1,
337
+ // Allow the same operator to evaluate its own Solution on Base Sepolia
338
+ // (84532) so a single dogfood daemon can close the full
339
+ // post→claim→solve→grade→settle loop without standing up a second
340
+ // operator. Mainnet (8453) keeps the protocol-level protection.
341
+ // TODO: revert to unconditional `true` before mainnet launch, OR move
342
+ // this to a per-SolverNet manifest field so individual launchers can
343
+ // opt in to single-operator dogfood while the protocol default stays
344
+ // strict.
345
+ disallowSolverSelfEvaluation: this.config.chainId !== 84532,
346
+ },
347
+ };
348
+ }
349
+ buildEvaluationTask(params) {
350
+ return {
351
+ ...params.task,
352
+ id: `${params.task.id}:evaluation:${params.attemptIndex}`,
353
+ role: 'evaluation',
354
+ restorationRequestId: params.solutionRequestId,
355
+ attemptId: params.solutionRequestId,
356
+ attemptNumber: params.attemptIndex,
357
+ context: {
358
+ ...(params.task.context ?? {}),
359
+ restorationResult: params.resultData,
360
+ [RESTORATION_TASK_CID_CONTEXT_KEY]: params.task.context?.[RESTORATION_TASK_CID_CONTEXT_KEY] ?? params.taskCid,
361
+ [RESTORATION_ENVELOPE_CID_CONTEXT_KEY]: params.restorationEnvelopeCid,
362
+ },
363
+ };
364
+ }
365
+ async restorationAnnouncementForTaskId(taskId) {
366
+ const cached = this.observedTasks.get(taskId);
367
+ if (cached)
368
+ return cached;
369
+ const taskCidDigest = await getTaskCidDigest(this.publicClient, this.config.routerAddress, taskId);
370
+ const digest = taskCidDigest.startsWith('0x') ? taskCidDigest.slice(2) : taskCidDigest;
371
+ const taskCid = `f01551220${digest}`;
372
+ const signed = await fetchSignedTaskFromIpfs(this.config.ipfsGatewayUrl, taskCid);
373
+ const task = parseTask({ signedTask: signed });
374
+ const announcement = {
375
+ taskId,
376
+ task,
377
+ taskCid,
378
+ };
379
+ this.observedTasks.set(taskId, announcement);
380
+ return announcement;
381
+ }
382
+ async restorationAnnouncementFromDigest(params) {
383
+ const digest = params.taskCidDigest.startsWith('0x')
384
+ ? params.taskCidDigest.slice(2)
385
+ : params.taskCidDigest;
386
+ const taskCid = `f01551220${digest}`;
387
+ const signed = await fetchSignedTaskFromIpfs(this.config.ipfsGatewayUrl, taskCid);
388
+ const task = parseTask({ signedTask: signed });
389
+ const announcement = {
390
+ taskId: params.taskId,
391
+ task,
392
+ taskCid,
393
+ onchainCreationTx: params.transactionHash,
394
+ onchainCreationBlock: params.blockNumber,
395
+ };
396
+ this.observedTasks.set(params.taskId, announcement);
397
+ return announcement;
398
+ }
399
+ async *discoverSubgraphRestorationTasks() {
400
+ const discovery = this.config.taskDiscovery;
401
+ const subgraphUrl = discovery?.subgraphUrl;
402
+ const solverNetManifestCids = discovery?.solverNetManifestCids ?? [];
403
+ if (!subgraphUrl || solverNetManifestCids.length === 0)
404
+ return;
405
+ let candidates;
406
+ try {
407
+ candidates = await queryClaimableTaskCandidates({
408
+ url: subgraphUrl,
409
+ solverNetManifestCids,
410
+ operatorAddress: this.config.safeAddress,
411
+ pageSize: discovery.pageSize,
412
+ maxPages: discovery.maxPages,
413
+ fetchImpl: discovery.fetchImpl,
414
+ });
415
+ }
416
+ catch (err) {
417
+ console.error('[mech] task subgraph discovery failed:', err instanceof Error ? err.message : err);
418
+ return;
419
+ }
420
+ for (const candidate of candidates) {
421
+ if (!this.isDiscoveryTaskAllowed(candidate.taskId))
422
+ continue;
423
+ if (this.claimedRestorationTaskIds.has(candidate.taskId))
424
+ continue;
425
+ const claimable = await canClaimTask(this.publicClient, this.config.safeAddress, this.config.routerAddress, candidate.taskId, this.config.mechContractAddress);
426
+ if (!claimable.ok) {
427
+ continue;
428
+ }
429
+ try {
430
+ yield await this.restorationAnnouncementFromDigest({
431
+ taskId: candidate.taskId,
432
+ taskCidDigest: candidate.taskCidDigest,
433
+ transactionHash: candidate.createdAtTx,
434
+ blockNumber: candidate.createdAtBlock,
435
+ });
436
+ return;
437
+ }
438
+ catch (err) {
439
+ console.error(`[mech] failed to hydrate subgraph task ${candidate.taskId}:`, err instanceof Error ? err.message : err);
440
+ }
441
+ }
442
+ }
443
+ async deliveryEnvelopeCidForSolution(solution) {
444
+ const deliveryMech = await getMarketplaceRequestDeliveryMech(this.publicClient, this.config.mechMarketplaceAddress, solution.requestId);
445
+ const toBlock = solution.blockNumber != null
446
+ ? BigInt(solution.blockNumber)
447
+ : await this.publicClient.getBlockNumber();
448
+ const lookback = this.config.mechDeliverBackfillLookbackBlocks ??
449
+ DEFAULT_MECH_DELIVER_BACKFILL_LOOKBACK_BLOCKS;
450
+ const fromBlock = toBlock > lookback ? toBlock - lookback : 0n;
451
+ const deliveryDataHex = await findLatestDeliveryDataHexForRequest(this.publicClient, deliveryMech, solution.requestId, fromBlock, toBlock);
452
+ if (!deliveryDataHex) {
453
+ throw new Error(`No Deliver event data found for solution ${solution.requestId} on mech ${deliveryMech} ` +
454
+ `between blocks ${fromBlock} and ${toBlock}`);
455
+ }
456
+ const digest = deliveryDataHex.startsWith('0x') ? deliveryDataHex.slice(2) : deliveryDataHex;
457
+ return `f01551220${digest}`;
458
+ }
459
+ async evaluationAnnouncementForSolution(solution) {
460
+ if (!this.isDiscoveryTaskAllowed(solution.taskId)) {
461
+ console.log(`[mech] skipping evaluation opportunity ${solution.requestId} for task ${solution.taskId}/${solution.attemptIndex}: outside configured task discovery scope`);
462
+ this.forgetPendingEvaluationSolution(solution.requestId);
463
+ return undefined;
464
+ }
465
+ const restoration = await this.restorationAnnouncementForTaskId(solution.taskId);
466
+ const claimable = await canClaimEvaluation(this.publicClient, this.config.safeAddress, this.config.routerAddress, solution.taskId, solution.attemptIndex, this.config.mechContractAddress);
467
+ if (!claimable.ok) {
468
+ console.log(`[mech] skipping evaluation opportunity ${solution.requestId} for task ${solution.taskId}/${solution.attemptIndex}: ${claimable.reason}`);
469
+ this.forgetPendingEvaluationSolution(solution.requestId);
470
+ return undefined;
471
+ }
472
+ const restorationEnvelopeCid = await this.deliveryEnvelopeCidForSolution(solution);
473
+ const resultPayload = await fetchFromIpfs(this.config.ipfsGatewayUrl, restorationEnvelopeCid);
474
+ const resultData = resultPayload.data ?? JSON.stringify(resultPayload);
475
+ const evaluationTask = this.buildEvaluationTask({
476
+ task: restoration.task,
477
+ solutionRequestId: solution.requestId,
478
+ attemptIndex: solution.attemptIndex,
479
+ resultData,
480
+ restorationEnvelopeCid,
481
+ taskCid: restoration.taskCid,
482
+ });
483
+ const opportunityId = `evaluation:${solution.taskId}:${solution.attemptIndex}:${solution.requestId}`;
484
+ const announcement = {
485
+ taskId: opportunityId,
486
+ task: evaluationTask,
487
+ taskCid: restoration.taskCid,
488
+ onchainCreationTx: solution.transactionHash,
489
+ onchainCreationBlock: solution.blockNumber,
189
490
  };
190
- this.pendingEvaluations.set(restorationRequestId, stateForEval);
191
- this.originalStates.set(restorationRequestId, { ...stateForEval, type: 'restoration' });
192
- return restorationRequestId;
491
+ this.evaluationOpportunities.set(opportunityId, {
492
+ taskId: solution.taskId,
493
+ attemptIndex: solution.attemptIndex,
494
+ task: evaluationTask,
495
+ });
496
+ this.observedTasks.set(opportunityId, announcement);
497
+ return announcement;
193
498
  }
194
- async *watchForRequests() {
499
+ async *retryPendingEvaluationSolutions() {
500
+ for (const [requestId, solution] of Array.from(this.pendingEvaluationSolutions)) {
501
+ try {
502
+ const announcement = await this.evaluationAnnouncementForSolution(solution);
503
+ if (announcement) {
504
+ yield announcement;
505
+ }
506
+ else {
507
+ this.forgetPendingEvaluationSolution(requestId);
508
+ }
509
+ }
510
+ catch (err) {
511
+ console.error(`[mech] evaluation opportunity retry failed for ${requestId}:`, err);
512
+ }
513
+ }
514
+ }
515
+ async *watchForTasks() {
195
516
  while (!this.stopped) {
196
517
  try {
518
+ for await (const announcement of this.retryPendingEvaluationSolutions()) {
519
+ yield announcement;
520
+ }
521
+ for await (const announcement of this.discoverSubgraphRestorationTasks()) {
522
+ yield announcement;
523
+ }
197
524
  const currentBlock = await this.publicClient.getBlockNumber();
198
525
  if (currentBlock > this.requestBlockCursor) {
199
- const logs = await this.publicClient.getLogs({
200
- address: this.config.mechMarketplaceAddress,
201
- fromBlock: this.requestBlockCursor + 1n,
202
- toBlock: currentBlock,
203
- });
526
+ const fromBlock = this.requestBlockCursor + 1n;
527
+ const logs = await this.getRouterLogsInChunks(fromBlock, currentBlock);
528
+ const submittedSolutions = decodeSolutionDeliveryClaimedLogs(logs);
529
+ for (const solution of submittedSolutions) {
530
+ this.rememberPendingEvaluationSolution(solution);
531
+ }
204
532
  this.requestBlockCursor = currentBlock;
205
- const decoded = decodeMarketplaceRequestLogs(logs);
206
- for (const { requestId, requestDataHex, priorityMech, transactionHash, blockNumber } of decoded) {
207
- if (!this.claimPolicy.shouldAccept({ requestId, requestDataHex, priorityMech })) {
533
+ if (this.store) {
534
+ this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
535
+ }
536
+ const joinedManifestDigests = this.joinedManifestDigestSet();
537
+ const createdTasks = decodeTaskCreatedLogs(logs);
538
+ for (const { taskId, taskCidDigest, manifestDigest, transactionHash, blockNumber } of createdTasks) {
539
+ if (!this.isDiscoveryTaskAllowed(taskId))
540
+ continue;
541
+ if (this.claimedRestorationTaskIds.has(taskId) || this.observedTasks.has(taskId))
542
+ continue;
543
+ if (joinedManifestDigests.size > 0 && !joinedManifestDigests.has(manifestDigest.toLowerCase()))
208
544
  continue;
209
- }
210
545
  try {
211
- const digest = requestDataHex.startsWith('0x') ? requestDataHex.slice(2) : requestDataHex;
212
- // CIDv1 hex with raw codec (0x55) + sha2-256 (0x12) + 32-byte length (0x20).
213
- // The Autonolas registry returns raw-codec CIDs when uploading files with
214
- // cid-version=1 (Kubo default for files). This is confirmed by the existing
215
- // IPFS_GATEWAY_PREFIX constant (f01551220) which has worked in production.
216
- // If the gateway ever switches to dag-pb (0x70) the prefix would be f01701220.
217
- const intentCid = `f01551220${digest}`;
218
- const payload = await fetchFromIpfs(this.config.ipfsGatewayUrl, intentCid);
219
- const desiredState = parseDesiredStateFromPayload(payload);
220
- yield {
221
- requestId,
222
- desiredState,
223
- intentCid,
224
- onchainCreationTx: transactionHash,
225
- onchainCreationBlock: blockNumber,
226
- };
546
+ const claimable = await canClaimTask(this.publicClient, this.config.safeAddress, this.config.routerAddress, taskId, this.config.mechContractAddress);
547
+ if (!claimable.ok)
548
+ continue;
549
+ const announcement = await this.restorationAnnouncementFromDigest({
550
+ taskId,
551
+ taskCidDigest,
552
+ transactionHash,
553
+ blockNumber,
554
+ });
555
+ yield announcement;
227
556
  }
228
557
  catch (err) {
229
- console.error(`[mech] Failed to parse request ${requestId}:`, err);
558
+ console.error(`[mech] Failed to parse task ${taskId}:`, err);
230
559
  }
231
560
  }
561
+ for await (const announcement of this.retryPendingEvaluationSolutions()) {
562
+ yield announcement;
563
+ }
232
564
  }
233
565
  }
234
566
  catch (err) {
235
- console.error('[mech] Error polling for requests:', formatRpcError(err, {
236
- operation: 'pollMarketplaceRequests',
567
+ console.error('[mech] Error polling for tasks:', formatRpcError(err, {
568
+ operation: 'pollTaskCreated',
237
569
  chain: this.config.chainId === 84532 ? 'base-sepolia' : 'base',
238
570
  rpcUrl: this.config.rpcUrl,
239
- contract: this.config.mechMarketplaceAddress,
571
+ contract: this.config.routerAddress,
240
572
  fromBlock: this.requestBlockCursor + 1n,
241
573
  }));
242
574
  }
243
575
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
244
576
  }
245
577
  }
246
- async claimRequest(requestId) {
247
- const allowed = await this.claimPolicy.confirmClaim(requestId);
248
- if (!allowed) {
249
- throw new PermanentError(`Claim policy rejected request ${requestId}`);
578
+ async claimTask(taskId) {
579
+ const evaluationOpportunity = this.evaluationOpportunities.get(taskId);
580
+ if (evaluationOpportunity) {
581
+ const signedEvaluationTask = await this.signTaskDocument(evaluationOpportunity.task);
582
+ const evaluationCid = await uploadToIpfs(this.config.ipfsRegistryUrl, signedEvaluationTask);
583
+ const evaluationTaskCidDigest = cidToDigestHex(evaluationCid);
584
+ const claimed = await this.claimEvaluation(evaluationOpportunity.taskId, evaluationOpportunity.attemptIndex, evaluationTaskCidDigest);
585
+ this.pendingEvaluations.set(claimed.requestId, evaluationOpportunity.task);
586
+ this.originalStates.set(claimed.requestId, evaluationOpportunity.task);
587
+ this.requestKinds.set(claimed.requestId, 'verdict');
588
+ this.evaluationOpportunities.delete(taskId);
589
+ const solutionRequestId = evaluationOpportunity.task.restorationRequestId;
590
+ if (solutionRequestId) {
591
+ this.forgetPendingEvaluationSolution(solutionRequestId);
592
+ }
593
+ return {
594
+ requestId: claimed.requestId,
595
+ taskId: claimed.taskId,
596
+ attemptIndex: claimed.attemptIndex,
597
+ task: evaluationOpportunity.task,
598
+ taskCid: evaluationCid,
599
+ onchainCreationTx: claimed.txHash,
600
+ onchainCreationBlock: claimed.blockNumber,
601
+ };
250
602
  }
603
+ const announcement = this.observedTasks.get(taskId);
604
+ if (!announcement) {
605
+ throw new PermanentError(`Cannot claim unknown task ${taskId}`);
606
+ }
607
+ const claimed = await claimTaskOnchain(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, taskId, this.config.mechContractAddress, this.config.evictionRecovery);
608
+ const task = announcement.task;
609
+ this.claimedRestorationTaskIds.add(claimed.taskId);
610
+ this.pendingEvaluations.set(claimed.requestId, task);
611
+ this.originalStates.set(claimed.requestId, { ...task, role: task.role ?? 'restoration' });
612
+ this.requestKinds.set(claimed.requestId, 'solution');
613
+ return {
614
+ requestId: claimed.requestId,
615
+ taskId: claimed.taskId,
616
+ attemptIndex: claimed.attemptIndex,
617
+ task,
618
+ taskCid: announcement.taskCid,
619
+ onchainCreationTx: claimed.txHash,
620
+ onchainCreationBlock: claimed.blockNumber,
621
+ };
251
622
  }
252
623
  async submitResult(requestId, result) {
253
624
  const payload = buildResultPayload(requestId, result);
254
625
  const cid = await uploadToIpfs(this.config.ipfsRegistryUrl, payload);
255
626
  const deliveryDigest = cidToDigestHex(cid);
256
627
  // Safe → AgentMech.deliverToMarketplace() → Marketplace.deliverMarketplace()
257
- await callDeliverToMarketplace(this.publicClient, this.walletClient, this.config.safeAddress, this.config.mechContractAddress, [requestId], [deliveryDigest]);
628
+ await callDeliverToMarketplace(this.publicClient, this.walletClient, this.config.safeAddress, this.config.mechContractAddress, [requestId], [deliveryDigest], this.config.evictionRecovery);
629
+ }
630
+ async claimEvaluation(taskId, attemptIndex, evaluationTaskCidDigest) {
631
+ const claimed = await claimEvaluationOnchain(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, taskId, attemptIndex, this.config.mechContractAddress, evaluationTaskCidDigest, this.config.evictionRecovery);
632
+ this.requestKinds.set(claimed.requestId, 'verdict');
633
+ return claimed;
634
+ }
635
+ async submitSolutionDelivery(requestId, solutionDigest) {
636
+ await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, { variant: 'v3', kind: 'solution', evidenceHash: solutionDigest }, this.config.evictionRecovery);
637
+ }
638
+ async submitVerdictDelivery(requestId, verdictDigest, verdictCode = 1) {
639
+ await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, { variant: 'v3', kind: 'verdict', evidenceHash: verdictDigest, verdictCode }, this.config.evictionRecovery);
640
+ }
641
+ async evidenceHashForDelivery(requestId, deliveryDataHex) {
642
+ if (this.config.routerClaimDeliveryVariant !== 'v2' && this.config.routerClaimDeliveryVariant !== 'v3') {
643
+ return undefined;
644
+ }
645
+ const deliveryDigest = deliveryDataHex.startsWith('0x')
646
+ ? deliveryDataHex.slice(2)
647
+ : deliveryDataHex;
648
+ const envelopeCid = `f01551220${deliveryDigest}`;
649
+ const rawEnvelope = await fetchSignedEnvelopeFromIpfs(this.config.ipfsGatewayUrl, envelopeCid);
650
+ const parsed = SignedEnvelopeSchema.parse(rawEnvelope);
651
+ // Strip signature to recompute the hash over the unsigned body.
652
+ //
653
+ // Important: compute over the fetched wire object, not over the parsed
654
+ // schema result. The schema normalizes some nested objects and may strip
655
+ // extension metadata that was present when the envelope was signed.
656
+ const rawSigned = rawEnvelope;
657
+ const { signature: _rawSignature, ...unsignedBody } = rawSigned;
658
+ const signature = parsed.signature;
659
+ const jcsBytes = new TextEncoder().encode(canonicalJson(unsignedBody));
660
+ const recomputed = keccak256(jcsBytes);
661
+ if (recomputed !== signature.hash) {
662
+ throw new Error(`recomputed hash ${recomputed} !== envelope.signature.hash ${signature.hash}`);
663
+ }
664
+ return recomputed;
665
+ }
666
+ async ensureDeliveryClaimed(requestId, deliveryDataHex) {
667
+ let evidenceHash;
668
+ try {
669
+ evidenceHash = await this.evidenceHashForDelivery(requestId, deliveryDataHex);
670
+ }
671
+ catch (err) {
672
+ console.error(`[mech] evidenceHash derivation failed for ${requestId} — skipping claim, will retry on next loop:`, err);
673
+ return 'retry';
674
+ }
675
+ try {
676
+ await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, {
677
+ variant: this.config.routerClaimDeliveryVariant,
678
+ kind: this.requestKinds.get(requestId) ?? 'solution',
679
+ evidenceHash,
680
+ }, this.config.evictionRecovery);
681
+ return 'claimed';
682
+ }
683
+ catch (err) {
684
+ const message = err instanceof Error ? err.message : String(err);
685
+ if (message.includes('RequestNotFound')) {
686
+ console.error(`[mech] claimDelivery skipped (not a router request): ${requestId}`);
687
+ return 'skipped';
688
+ }
689
+ if (/already.*claimed|alreadyClaimed/i.test(message)) {
690
+ return 'already-claimed';
691
+ }
692
+ console.error(`[mech] claimDelivery failed for ${requestId}:`, err);
693
+ return 'retry';
694
+ }
258
695
  }
259
696
  async *watchForDeliveries() {
260
697
  while (!this.stopped) {
@@ -273,79 +710,27 @@ export class MechAdapter {
273
710
  // (a) Did this Safe DELIVER this? → claim it (counter credit goes to msg.sender)
274
711
  // The Deliver event's mechAddress is mechServiceMultisig (the Safe that owns
275
712
  // the mech), so we compare against this.config.safeAddress.
276
- // (b) Did this Safe CREATE the underlying request? → act on the delivery
277
- // (trigger eval creation for restoration deliveries; clean up for eval deliveries)
713
+ // (b) Did this Safe claim the underlying Task? → act on the delivery.
278
714
  const iDelivered = mechAddress.toLowerCase() === this.config.safeAddress.toLowerCase();
279
715
  const iCreatedRestoration = this.pendingEvaluations.has(requestId);
280
- const iCreatedEvaluation = this.pendingEvaluationClaims.has(requestId);
281
- if (!iDelivered && !iCreatedRestoration && !iCreatedEvaluation)
716
+ if (!iDelivered && !iCreatedRestoration)
282
717
  continue;
283
- // (a) Claim delivery on the router so `restorationDeliveryClaimed[requestId]` is set
284
- // (required before createEvaluationJob can run).
285
- // - Same-operator: we delivered (iDelivered) → our Safe claims and gets counter credit.
286
- // - Cross-operator: we created the request (iCreatedRestoration) but another mech
287
- // delivered (iDelivered is false) → the creator Safe must still call claimDelivery
288
- // so the router flips `restorationDeliveryClaimed` for this requestId. Otherwise
289
- // tryCreateEvaluationJob never unblocks. See JinnRouter.claimDelivery in contracts.
290
- const shouldClaimDelivery = iDelivered || (iCreatedRestoration && !iDelivered);
291
- if (shouldClaimDelivery) {
292
- try {
293
- const variant = this.config.routerClaimDeliveryVariant;
294
- let evidenceHash;
295
- if (variant === 'v2') {
296
- try {
297
- const checkpoint = {
298
- version: 1,
299
- desiredStateHash: requestId,
300
- toolCalls: [],
301
- externalInteractions: [],
302
- outcome: 'success',
303
- };
304
- evidenceHash = computeEvidenceSimHash(checkpoint);
305
- }
306
- catch (err) {
307
- console.error(`[mech] Failed to compute evidence SimHash for ${requestId}:`, err);
308
- }
309
- }
310
- await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, { variant, evidenceHash });
311
- }
312
- catch (err) {
313
- const message = err instanceof Error ? err.message : String(err);
314
- if (message.includes('RequestNotFound')) {
315
- console.error(`[mech] claimDelivery skipped (not a router request): ${requestId}`);
316
- // fall through — creator actions below don't depend on our claim specifically
317
- }
318
- else if (/already.*claimed|alreadyClaimed/i.test(message)) {
319
- // Idempotent: someone else raced us, fine.
320
- }
321
- else {
322
- console.error(`[mech] claimDelivery failed for ${requestId}:`, err);
323
- // Don't continue — may retry next poll via unchanged tracking
324
- continue;
325
- }
326
- }
327
- }
328
- // (b) If I created the restoration, post the eval job once the claim is on-chain.
329
- // The deliverer (someone else, or us if we also delivered) must have claimed first.
330
- // tryCreateEvaluationJob calls verifyRestorationClaimed() which polls for the claim.
331
- if (iCreatedRestoration) {
332
- let restorationResultData;
333
- try {
334
- const digest = deliveryDataHex.startsWith('0x') ? deliveryDataHex.slice(2) : deliveryDataHex;
335
- const payload = await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${digest}`);
336
- restorationResultData = payload.data ?? JSON.stringify(payload);
337
- this.backfillMissRids.delete(requestId);
338
- }
339
- catch (err) {
340
- console.error(`[mech] Failed to fetch restoration result for evaluation: ${requestId}`, err);
341
- }
342
- await this.tryCreateEvaluationJob(requestId, restorationResultData);
718
+ // (a) Deliverer-side claim path: if this Safe delivered the request,
719
+ // claim it first so router counters credit the deliverer.
720
+ let deliveryClaimStatus;
721
+ if (iDelivered) {
722
+ deliveryClaimStatus = await this.ensureDeliveryClaimed(requestId, deliveryDataHex);
723
+ if (deliveryClaimStatus === 'retry')
724
+ continue;
343
725
  }
344
- // (c) If I created the evaluation, clean up tracking once delivered.
345
- if (iCreatedEvaluation) {
346
- this.pendingEvaluationClaims.delete(requestId);
726
+ // (b) Task-side claim path: if this request came from our Task
727
+ // claim, make sure JinnRouterV3 records the Solution submission.
728
+ if (iCreatedRestoration && deliveryClaimStatus !== 'claimed' && deliveryClaimStatus !== 'already-claimed') {
729
+ const creatorClaimStatus = await this.ensureDeliveryClaimed(requestId, deliveryDataHex);
730
+ if (creatorClaimStatus === 'retry')
731
+ continue;
347
732
  }
348
- // (d) Yield the delivery result.
733
+ // (c) Yield the delivery result.
349
734
  try {
350
735
  const deliveryDigest = deliveryDataHex.startsWith('0x') ? deliveryDataHex.slice(2) : deliveryDataHex;
351
736
  const resultPayload = await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${deliveryDigest}`);
@@ -353,31 +738,27 @@ export class MechAdapter {
353
738
  data: resultPayload.data ?? JSON.stringify(resultPayload),
354
739
  artifacts: resultPayload.artifacts,
355
740
  };
356
- // Use the original desired state — not the result payload
357
- const desiredState = this.originalStates.get(requestId) ?? {
741
+ // Use the original Task, not the result payload.
742
+ const task = this.originalStates.get(requestId) ?? {
358
743
  id: requestId,
359
744
  description: '',
360
745
  };
361
746
  yield {
362
747
  requestId,
363
- desiredState,
748
+ task,
364
749
  result: restorationResult,
365
750
  deliveryMechAddress: mechAddress,
366
751
  };
367
752
  // Clean up after yielding
368
753
  this.originalStates.delete(requestId);
754
+ this.pendingEvaluations.delete(requestId);
755
+ this.requestKinds.delete(requestId);
369
756
  }
370
757
  catch (err) {
371
758
  console.error(`[mech] Failed to parse delivery ${requestId}:`, err);
372
759
  }
373
760
  }
374
761
  }
375
- // After new Deliver events are processed (and `pendingEvaluationResults` may be warm),
376
- // retry evaluation creation. Doing this *before* deliver processing can upload an
377
- // evaluation desired state without `restorationResult` in context.
378
- for (const rid of [...this.claimedButNotEvaluated]) {
379
- await this.tryCreateEvaluationJob(rid);
380
- }
381
762
  }
382
763
  catch (err) {
383
764
  console.error('[mech] Error polling for deliveries:', formatRpcError(err, {
@@ -395,126 +776,6 @@ export class MechAdapter {
395
776
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
396
777
  }
397
778
  }
398
- async backfillRestorationResultFromChain(requestId) {
399
- if (this.pendingEvaluationResults.has(requestId)) {
400
- return this.pendingEvaluationResults.get(requestId);
401
- }
402
- if (this.backfillMissRids.has(requestId)) {
403
- return undefined;
404
- }
405
- const currentBlock = await this.publicClient.getBlockNumber();
406
- const lookbackBlocks = this.config.mechDeliverBackfillLookbackBlocks ?? 500000n;
407
- const from = currentBlock > lookbackBlocks
408
- ? currentBlock - lookbackBlocks
409
- : 1n;
410
- const dhex = await findLatestDeliveryDataHexForRequest(this.publicClient, this.config.mechContractAddress, requestId, from, currentBlock);
411
- if (!dhex) {
412
- this.backfillMissRids.add(requestId);
413
- return undefined;
414
- }
415
- try {
416
- const d = String(dhex);
417
- const dig = d.startsWith('0x') ? d.slice(2) : d;
418
- const payload = (await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${dig}`));
419
- const data = payload.data ?? JSON.stringify(payload);
420
- this.pendingEvaluationResults.set(requestId, data);
421
- this.backfillMissRids.delete(requestId);
422
- return data;
423
- }
424
- catch (err) {
425
- console.error(`[mech] backfill: failed to load restoration result for ${requestId}:`, err);
426
- return undefined;
427
- }
428
- }
429
- async tryCreateEvaluationJob(requestId, restorationResultData) {
430
- if (!this.pendingEvaluations.has(requestId))
431
- return;
432
- const originalState = this.pendingEvaluations.get(requestId);
433
- if (restorationResultData) {
434
- this.pendingEvaluationResults.set(requestId, restorationResultData);
435
- this.backfillMissRids.delete(requestId);
436
- }
437
- let cachedRestorationResultData = restorationResultData ?? this.pendingEvaluationResults.get(requestId);
438
- if (cachedRestorationResultData == null) {
439
- cachedRestorationResultData = await this.backfillRestorationResultFromChain(requestId);
440
- }
441
- if (cachedRestorationResultData == null) {
442
- this.claimedButNotEvaluated.add(requestId);
443
- console.error(`[mech] no restoration result yet for ${requestId} (evaluation job and IPFS upload deferred until Deliver or backfill)`);
444
- return;
445
- }
446
- try {
447
- const evaluationState = {
448
- ...originalState,
449
- type: 'evaluation',
450
- restorationRequestId: requestId,
451
- context: {
452
- ...originalState.context,
453
- restorationResult: cachedRestorationResultData,
454
- },
455
- };
456
- const evaluationPayload = buildDesiredStatePayload(evaluationState);
457
- const evaluationCid = await uploadToIpfs(this.config.ipfsRegistryUrl, evaluationPayload);
458
- const evaluationDataHex = cidToDigestHex(evaluationCid);
459
- // Verify the restoration claim landed on-chain before submitting.
460
- // RPC load balancers can serve stale state right after a write,
461
- // causing the router's restorationDeliveryClaimed check to fail
462
- // with RestorationNotClaimed (surfaces as Safe GS013).
463
- const isClaimed = await this.verifyRestorationClaimed(requestId);
464
- if (!isClaimed) {
465
- console.error(`[mech] restorationDeliveryClaimed not yet visible for ${requestId} — will retry`);
466
- this.claimedButNotEvaluated.add(requestId);
467
- return;
468
- }
469
- const deliveryRate = await getMechDeliveryRate(this.publicClient, this.config.mechContractAddress);
470
- const { max: maxTimeout } = await getTimeoutBounds(this.publicClient, this.config.mechMarketplaceAddress);
471
- const evalRequestIds = await submitEvaluationJob(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, this.config.mechContractAddress, evaluationDataHex, deliveryRate, maxTimeout);
472
- if (evalRequestIds.length > 0) {
473
- this.pendingEvaluationClaims.add(evalRequestIds[0]);
474
- // Copy original state to evaluation request ID so delivery can use it
475
- const origState = this.originalStates.get(requestId);
476
- if (origState) {
477
- this.originalStates.set(evalRequestIds[0], { ...origState, type: 'evaluation' });
478
- }
479
- }
480
- // Success — clean up both tracking sets
481
- this.pendingEvaluations.delete(requestId);
482
- this.claimedButNotEvaluated.delete(requestId);
483
- this.pendingEvaluationResults.delete(requestId);
484
- }
485
- catch (err) {
486
- console.error(`[mech] Failed to create evaluation job for ${requestId}:`, err);
487
- // Track for retry on next poll cycle (doesn't require a new Deliver event)
488
- this.claimedButNotEvaluated.add(requestId);
489
- }
490
- }
491
- async verifyRestorationClaimed(requestId) {
492
- // RPC / fork can lag right after claimDelivery; give more room than 5×2s so
493
- // tryCreateEvaluationJob succeeds on the first watchForDeliveries pass when possible.
494
- const MAX_POLLS = 12;
495
- const POLL_DELAY_MS = 1_500;
496
- const abi = [{
497
- type: 'function',
498
- name: 'restorationDeliveryClaimed',
499
- inputs: [{ name: 'requestId', type: 'bytes32' }],
500
- outputs: [{ name: '', type: 'bool' }],
501
- stateMutability: 'view',
502
- }];
503
- for (let i = 0; i < MAX_POLLS; i++) {
504
- const claimed = await this.publicClient.readContract({
505
- address: this.config.routerAddress,
506
- abi,
507
- functionName: 'restorationDeliveryClaimed',
508
- args: [requestId],
509
- });
510
- if (claimed)
511
- return true;
512
- if (i < MAX_POLLS - 1) {
513
- await new Promise(r => setTimeout(r, POLL_DELAY_MS));
514
- }
515
- }
516
- return false;
517
- }
518
779
  async stop() {
519
780
  this.stopped = true;
520
781
  }