@jinn-network/client 0.1.2 → 0.1.3-canary.24b69ea4

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