@jinn-network/client 0.1.1 → 0.1.2-canary.66834251

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 (359) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CONTRIBUTING.md +123 -0
  3. package/README.md +213 -37
  4. package/deployments/deployment-claim-registry-baseSepolia.json +13 -0
  5. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +15 -0
  6. package/dist/adapters/claim-registry/abi.d.ts +127 -0
  7. package/dist/adapters/claim-registry/abi.js +93 -0
  8. package/dist/adapters/claim-registry/abi.js.map +1 -0
  9. package/dist/adapters/claim-registry/client.d.ts +89 -0
  10. package/dist/adapters/claim-registry/client.js +205 -0
  11. package/dist/adapters/claim-registry/client.js.map +1 -0
  12. package/dist/adapters/mech/adapter.d.ts +3 -0
  13. package/dist/adapters/mech/adapter.js +177 -51
  14. package/dist/adapters/mech/adapter.js.map +1 -1
  15. package/dist/adapters/mech/contracts.d.ts +14 -0
  16. package/dist/adapters/mech/contracts.js +111 -7
  17. package/dist/adapters/mech/contracts.js.map +1 -1
  18. package/dist/adapters/mech/ipfs.d.ts +36 -4
  19. package/dist/adapters/mech/ipfs.js +119 -13
  20. package/dist/adapters/mech/ipfs.js.map +1 -1
  21. package/dist/adapters/mech/types.d.ts +22 -46
  22. package/dist/adapters/mech/types.js +16 -35
  23. package/dist/adapters/mech/types.js.map +1 -1
  24. package/dist/api/balance-build.js +3 -3
  25. package/dist/api/balance-build.js.map +1 -1
  26. package/dist/api/fleet-build.js +35 -40
  27. package/dist/api/fleet-build.js.map +1 -1
  28. package/dist/api/gather-status.d.ts +1 -0
  29. package/dist/api/gather-status.js +185 -4
  30. package/dist/api/gather-status.js.map +1 -1
  31. package/dist/api/history-build.d.ts +5 -1
  32. package/dist/api/history-build.js +51 -26
  33. package/dist/api/history-build.js.map +1 -1
  34. package/dist/api/portfolio-v0-build.d.ts +81 -0
  35. package/dist/api/portfolio-v0-build.js +141 -0
  36. package/dist/api/portfolio-v0-build.js.map +1 -0
  37. package/dist/api/portfolio-v0-doctor.d.ts +37 -0
  38. package/dist/api/portfolio-v0-doctor.js +123 -0
  39. package/dist/api/portfolio-v0-doctor.js.map +1 -0
  40. package/dist/api/rewards-build.js +30 -14
  41. package/dist/api/rewards-build.js.map +1 -1
  42. package/dist/api/status-build.d.ts +37 -6
  43. package/dist/api/status-build.js +1 -0
  44. package/dist/api/status-build.js.map +1 -1
  45. package/dist/api/status-rollup-build.d.ts +2 -0
  46. package/dist/api/status-rollup-build.js +27 -0
  47. package/dist/api/status-rollup-build.js.map +1 -1
  48. package/dist/bin/jinn-mcp.d.ts +0 -12
  49. package/dist/bin/jinn-mcp.js +5 -14
  50. package/dist/bin/jinn-mcp.js.map +1 -1
  51. package/dist/build-meta.json +1 -1
  52. package/dist/cli/commands/auth.js +115 -25
  53. package/dist/cli/commands/auth.js.map +1 -1
  54. package/dist/cli/commands/balance.js +8 -1
  55. package/dist/cli/commands/balance.js.map +1 -1
  56. package/dist/cli/commands/bootstrap.js +1 -0
  57. package/dist/cli/commands/bootstrap.js.map +1 -1
  58. package/dist/cli/commands/doctor.js +130 -14
  59. package/dist/cli/commands/doctor.js.map +1 -1
  60. package/dist/cli/commands/fleet-scale.js +1 -0
  61. package/dist/cli/commands/fleet-scale.js.map +1 -1
  62. package/dist/cli/commands/fleet.js +10 -1
  63. package/dist/cli/commands/fleet.js.map +1 -1
  64. package/dist/cli/commands/fund-requirements.js +2 -0
  65. package/dist/cli/commands/fund-requirements.js.map +1 -1
  66. package/dist/cli/commands/history.js +25 -6
  67. package/dist/cli/commands/history.js.map +1 -1
  68. package/dist/cli/commands/intents.d.ts +17 -0
  69. package/dist/cli/commands/intents.js +489 -0
  70. package/dist/cli/commands/intents.js.map +1 -0
  71. package/dist/cli/commands/keys-backup.js +13 -11
  72. package/dist/cli/commands/keys-backup.js.map +1 -1
  73. package/dist/cli/commands/logs.js +35 -11
  74. package/dist/cli/commands/logs.js.map +1 -1
  75. package/dist/cli/commands/mcp.d.ts +3 -0
  76. package/dist/cli/commands/mcp.js +19 -0
  77. package/dist/cli/commands/mcp.js.map +1 -0
  78. package/dist/cli/commands/plugin-install.js +8 -4
  79. package/dist/cli/commands/plugin-install.js.map +1 -1
  80. package/dist/cli/commands/quickstart.js +60 -4
  81. package/dist/cli/commands/quickstart.js.map +1 -1
  82. package/dist/cli/commands/rewards.js +27 -1
  83. package/dist/cli/commands/rewards.js.map +1 -1
  84. package/dist/cli/commands/status.js +11 -1
  85. package/dist/cli/commands/status.js.map +1 -1
  86. package/dist/cli/commands/submit-intent.js +108 -5
  87. package/dist/cli/commands/submit-intent.js.map +1 -1
  88. package/dist/cli/commands/version.js +1 -0
  89. package/dist/cli/commands/version.js.map +1 -1
  90. package/dist/cli/deployment-digest.js +5 -0
  91. package/dist/cli/deployment-digest.js.map +1 -1
  92. package/dist/cli/execution-context.js +1 -0
  93. package/dist/cli/execution-context.js.map +1 -1
  94. package/dist/cli/index.js +4 -0
  95. package/dist/cli/index.js.map +1 -1
  96. package/dist/cli/intent-registry-access.d.ts +64 -0
  97. package/dist/cli/intent-registry-access.js +187 -0
  98. package/dist/cli/intent-registry-access.js.map +1 -0
  99. package/dist/cli/introspection-context.js +1 -0
  100. package/dist/cli/introspection-context.js.map +1 -1
  101. package/dist/cli/password.d.ts +21 -9
  102. package/dist/cli/password.js +45 -24
  103. package/dist/cli/password.js.map +1 -1
  104. package/dist/config.d.ts +110 -8
  105. package/dist/config.js +41 -12
  106. package/dist/config.js.map +1 -1
  107. package/dist/daemon/balance-topup-loop.js +32 -4
  108. package/dist/daemon/balance-topup-loop.js.map +1 -1
  109. package/dist/daemon/creator.d.ts +7 -1
  110. package/dist/daemon/creator.js +51 -3
  111. package/dist/daemon/creator.js.map +1 -1
  112. package/dist/daemon/daemon.d.ts +43 -0
  113. package/dist/daemon/daemon.js +110 -3
  114. package/dist/daemon/daemon.js.map +1 -1
  115. package/dist/daemon/delivery-watcher.d.ts +3 -1
  116. package/dist/daemon/delivery-watcher.js +19 -1
  117. package/dist/daemon/delivery-watcher.js.map +1 -1
  118. package/dist/daemon/restorer.js +27 -0
  119. package/dist/daemon/restorer.js.map +1 -1
  120. package/dist/daemon/reward-claim-loop.js +38 -1
  121. package/dist/daemon/reward-claim-loop.js.map +1 -1
  122. package/dist/dashboard/index.html +71 -496
  123. package/dist/earning/bootstrap.d.ts +2 -1
  124. package/dist/earning/bootstrap.js +72 -4
  125. package/dist/earning/bootstrap.js.map +1 -1
  126. package/dist/earning/contracts.d.ts +10 -0
  127. package/dist/earning/contracts.js +24 -0
  128. package/dist/earning/contracts.js.map +1 -1
  129. package/dist/earning/jinn-rewards.d.ts +9 -0
  130. package/dist/earning/jinn-rewards.js +7 -0
  131. package/dist/earning/jinn-rewards.js.map +1 -1
  132. package/dist/earning/stolas-claim.d.ts +6 -0
  133. package/dist/earning/stolas-claim.js +7 -0
  134. package/dist/earning/stolas-claim.js.map +1 -1
  135. package/dist/intents/prediction-apy-v0-auto.d.ts +11 -0
  136. package/dist/intents/prediction-apy-v0-auto.js +46 -0
  137. package/dist/intents/prediction-apy-v0-auto.js.map +1 -0
  138. package/dist/intents/prediction-apy-v0-template.d.ts +8 -0
  139. package/dist/intents/prediction-apy-v0-template.js +22 -0
  140. package/dist/intents/prediction-apy-v0-template.js.map +1 -0
  141. package/dist/intents/prediction-v0-auto.d.ts +53 -0
  142. package/dist/intents/prediction-v0-auto.js +84 -0
  143. package/dist/intents/prediction-v0-auto.js.map +1 -0
  144. package/dist/intents/prediction-v0-template.d.ts +65 -0
  145. package/dist/intents/prediction-v0-template.js +125 -0
  146. package/dist/intents/prediction-v0-template.js.map +1 -0
  147. package/dist/main.js +154 -1
  148. package/dist/main.js.map +1 -1
  149. package/dist/mcp/operator-server.d.ts +1 -1
  150. package/dist/mcp/operator-server.js +1 -1
  151. package/dist/observability/emit-event.d.ts +12 -0
  152. package/dist/observability/emit-event.js +27 -0
  153. package/dist/observability/emit-event.js.map +1 -0
  154. package/dist/preflight/claude-auth.d.ts +12 -1
  155. package/dist/preflight/claude-auth.js +21 -3
  156. package/dist/preflight/claude-auth.js.map +1 -1
  157. package/dist/restorer/engine/canonical-json.d.ts +18 -0
  158. package/dist/restorer/engine/canonical-json.js +59 -0
  159. package/dist/restorer/engine/canonical-json.js.map +1 -0
  160. package/dist/restorer/engine/claim.d.ts +69 -0
  161. package/dist/restorer/engine/claim.js +104 -0
  162. package/dist/restorer/engine/claim.js.map +1 -0
  163. package/dist/restorer/engine/delivery.d.ts +52 -0
  164. package/dist/restorer/engine/delivery.js +63 -0
  165. package/dist/restorer/engine/delivery.js.map +1 -0
  166. package/dist/restorer/engine/engine.d.ts +203 -0
  167. package/dist/restorer/engine/engine.js +754 -0
  168. package/dist/restorer/engine/engine.js.map +1 -0
  169. package/dist/restorer/engine/manifest-assembly.d.ts +67 -0
  170. package/dist/restorer/engine/manifest-assembly.js +79 -0
  171. package/dist/restorer/engine/manifest-assembly.js.map +1 -0
  172. package/dist/restorer/engine/packaging.d.ts +87 -0
  173. package/dist/restorer/engine/packaging.js +350 -0
  174. package/dist/restorer/engine/packaging.js.map +1 -0
  175. package/dist/restorer/engine/persistence.d.ts +170 -0
  176. package/dist/restorer/engine/persistence.js +381 -0
  177. package/dist/restorer/engine/persistence.js.map +1 -0
  178. package/dist/restorer/engine/recovery.d.ts +22 -0
  179. package/dist/restorer/engine/recovery.js +24 -0
  180. package/dist/restorer/engine/recovery.js.map +1 -0
  181. package/dist/restorer/engine/registry.d.ts +62 -0
  182. package/dist/restorer/engine/registry.js +73 -0
  183. package/dist/restorer/engine/registry.js.map +1 -0
  184. package/dist/restorer/engine/signing.d.ts +30 -0
  185. package/dist/restorer/engine/signing.js +39 -0
  186. package/dist/restorer/engine/signing.js.map +1 -0
  187. package/dist/restorer/engine/state.d.ts +42 -0
  188. package/dist/restorer/engine/state.js +87 -0
  189. package/dist/restorer/engine/state.js.map +1 -0
  190. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
  191. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js +96 -0
  192. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  193. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +101 -0
  194. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +710 -0
  195. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  196. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +137 -0
  197. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js +865 -0
  198. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  199. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.d.ts +74 -0
  200. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js +74 -0
  201. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  202. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +97 -0
  203. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +226 -0
  204. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  205. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +43 -0
  206. package/dist/restorer/impls/claude-mcp-prediction/index.js +230 -0
  207. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -0
  208. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.d.ts +38 -0
  209. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +135 -0
  210. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
  211. package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +8 -0
  212. package/dist/restorer/impls/claude-mcp-prediction/prompt.js +54 -0
  213. package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +1 -0
  214. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +36 -0
  215. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +137 -0
  216. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
  217. package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +82 -0
  218. package/dist/restorer/impls/claude-mcp-prediction/types.js +6 -0
  219. package/dist/restorer/impls/claude-mcp-prediction/types.js.map +1 -0
  220. package/dist/restorer/impls/evaluation-context.d.ts +16 -0
  221. package/dist/restorer/impls/evaluation-context.js +18 -0
  222. package/dist/restorer/impls/evaluation-context.js.map +1 -0
  223. package/dist/restorer/impls/legacy-claude/index.d.ts +45 -0
  224. package/dist/restorer/impls/legacy-claude/index.js +71 -0
  225. package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
  226. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  227. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  228. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  229. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
  230. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
  231. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  232. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  233. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  234. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  235. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  236. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  237. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  238. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  239. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  240. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  241. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  242. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  243. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  244. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +43 -0
  245. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +431 -0
  246. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
  247. package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
  248. package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
  249. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
  250. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +32 -0
  251. package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
  252. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
  253. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +39 -0
  254. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +101 -0
  255. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -0
  256. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.d.ts +2 -0
  257. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js +7 -0
  258. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
  259. package/dist/restorer/impls/prediction-apy-v0-baseline/types.d.ts +4 -0
  260. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js +2 -0
  261. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +1 -0
  262. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
  263. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
  264. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
  265. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +40 -0
  266. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +196 -0
  267. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
  268. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +7 -0
  269. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +29 -0
  270. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
  271. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.d.ts +9 -0
  272. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js +20 -0
  273. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
  274. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.d.ts +7 -0
  275. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js +2 -0
  276. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
  277. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +29 -0
  278. package/dist/restorer/impls/prediction-v0-baseline/index.js +94 -0
  279. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
  280. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  281. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
  282. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
  283. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
  284. package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
  285. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
  286. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  287. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
  288. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  289. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  290. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
  291. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  292. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  293. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
  294. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  295. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +13 -0
  296. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +111 -0
  297. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  298. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  299. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
  300. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  301. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +33 -0
  302. package/dist/restorer/impls/prediction-v0-evaluator/index.js +222 -0
  303. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
  304. package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
  305. package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
  306. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
  307. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
  308. package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
  309. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
  310. package/dist/restorer/types.d.ts +184 -0
  311. package/dist/restorer/types.js +7 -0
  312. package/dist/restorer/types.js.map +1 -0
  313. package/dist/store/store.d.ts +64 -1
  314. package/dist/store/store.js +226 -4
  315. package/dist/store/store.js.map +1 -1
  316. package/dist/types/desired-state.d.ts +53 -0
  317. package/dist/types/desired-state.js +20 -0
  318. package/dist/types/desired-state.js.map +1 -1
  319. package/dist/types/index.d.ts +4 -1
  320. package/dist/types/index.js +4 -1
  321. package/dist/types/index.js.map +1 -1
  322. package/dist/types/portfolio.d.ts +1000 -0
  323. package/dist/types/portfolio.js +168 -0
  324. package/dist/types/portfolio.js.map +1 -0
  325. package/dist/types/prediction-apy.d.ts +930 -0
  326. package/dist/types/prediction-apy.js +133 -0
  327. package/dist/types/prediction-apy.js.map +1 -0
  328. package/dist/types/prediction.d.ts +926 -0
  329. package/dist/types/prediction.js +141 -0
  330. package/dist/types/prediction.js.map +1 -0
  331. package/dist/venues/aave-v3/addresses.d.ts +6 -0
  332. package/dist/venues/aave-v3/addresses.js +19 -0
  333. package/dist/venues/aave-v3/addresses.js.map +1 -0
  334. package/dist/venues/aave-v3/client.d.ts +85 -0
  335. package/dist/venues/aave-v3/client.js +106 -0
  336. package/dist/venues/aave-v3/client.js.map +1 -0
  337. package/dist/venues/chainlink/client.d.ts +99 -0
  338. package/dist/venues/chainlink/client.js +130 -0
  339. package/dist/venues/chainlink/client.js.map +1 -0
  340. package/dist/venues/chainlink/feeds.d.ts +8 -0
  341. package/dist/venues/chainlink/feeds.js +9 -0
  342. package/dist/venues/chainlink/feeds.js.map +1 -0
  343. package/dist/venues/hyperliquid/account-value.d.ts +30 -0
  344. package/dist/venues/hyperliquid/account-value.js +30 -0
  345. package/dist/venues/hyperliquid/account-value.js.map +1 -0
  346. package/dist/venues/hyperliquid/client.d.ts +63 -0
  347. package/dist/venues/hyperliquid/client.js +135 -0
  348. package/dist/venues/hyperliquid/client.js.map +1 -0
  349. package/dist/venues/hyperliquid/grid.d.ts +36 -0
  350. package/dist/venues/hyperliquid/grid.js +61 -0
  351. package/dist/venues/hyperliquid/grid.js.map +1 -0
  352. package/dist/venues/hyperliquid/types.d.ts +81 -0
  353. package/dist/venues/hyperliquid/types.js +8 -0
  354. package/dist/venues/hyperliquid/types.js.map +1 -0
  355. package/dist/withdraw/run-withdraw-plan.js +2 -0
  356. package/dist/withdraw/run-withdraw-plan.js.map +1 -1
  357. package/docker-compose.yml +44 -0
  358. package/package.json +13 -1
  359. package/skills/jinn-operator/SKILL.md +85 -0
@@ -2,11 +2,12 @@ import { base, baseSepolia } from 'viem/chains';
2
2
  import { PermanentError } from '../../types/index.js';
3
3
  import { createClients } from './safe.js';
4
4
  import { buildDesiredStatePayload, buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, parseDesiredStateFromPayload, } from './ipfs.js';
5
- import { submitRestorationJob, submitEvaluationJob, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeMarketplaceRequestLogs, decodeDeliverLogs, callDeliverToMarketplace, scanRestorationJobs, scanEvaluationJobs, } from './contracts.js';
5
+ import { submitRestorationJob, submitEvaluationJob, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeMarketplaceRequestLogs, decodeDeliverLogs, callDeliverToMarketplace, scanRestorationJobs, scanEvaluationJobs, scanLatestRequestDataByRid, scanLatestDeliveryDataByRid, findLatestDeliveryDataHexForRequest, } from './contracts.js';
6
6
  import { MECH_MARKETPLACE_ABI } from './types.js';
7
7
  import { AcceptAllPolicy } from './claim-policy.js';
8
8
  import { withRecoverableRetry } from '../../tx-retry.js';
9
9
  import { computeEvidenceSimHash } from '../../earning/evidence-simhash.js';
10
+ import { RESTORATION_INTENT_CID_CONTEXT_KEY } from '../../restorer/impls/evaluation-context.js';
10
11
  export class MechAdapter {
11
12
  name = 'mech';
12
13
  publicClient;
@@ -20,6 +21,11 @@ export class MechAdapter {
20
21
  // Restoration requests where claimDelivery succeeded but evaluation creation failed.
21
22
  // Swept on each poll cycle so they don't require a new Deliver event.
22
23
  claimedButNotEvaluated = new Set();
24
+ // Restoration result content cached across evaluation-job retries so a transient
25
+ // Safe/router failure does not silently strip evaluator context on the next poll.
26
+ pendingEvaluationResults = new Map();
27
+ // RIDs with no delivery found in backfill window; avoids repeated 500k-block rescans.
28
+ backfillMissRids = new Set();
23
29
  // Original desired states keyed by request ID (restoration and evaluation)
24
30
  // so we can yield accurate desiredState in DeliveredResult
25
31
  originalStates = new Map();
@@ -104,6 +110,35 @@ export class MechAdapter {
104
110
  }
105
111
  // Set delivery block cursor to scan from recovery point
106
112
  this.deliveryBlockCursor = fromBlock;
113
+ const latestRequestDataByRid = await scanLatestRequestDataByRid(this.publicClient, this.config.mechMarketplaceAddress, fromBlock, currentBlock);
114
+ const latestDeliveryDataByRid = await scanLatestDeliveryDataByRid(this.publicClient, this.config.mechContractAddress, fromBlock, currentBlock);
115
+ for (const { requestId } of restorations) {
116
+ const pe = this.pendingEvaluations.get(requestId);
117
+ if (!pe)
118
+ continue;
119
+ const requestDataHex = latestRequestDataByRid.get(requestId.toLowerCase());
120
+ if (requestDataHex) {
121
+ const d = String(requestDataHex);
122
+ const digest = d.startsWith('0x') ? d.slice(2) : d;
123
+ this.pendingEvaluations.set(requestId, {
124
+ ...pe,
125
+ context: { ...pe.context, [RESTORATION_INTENT_CID_CONTEXT_KEY]: `f01551220${digest}` },
126
+ });
127
+ }
128
+ const deliveryDataHex = latestDeliveryDataByRid.get(requestId.toLowerCase());
129
+ if (deliveryDataHex) {
130
+ try {
131
+ const d = String(deliveryDataHex);
132
+ const dig = d.startsWith('0x') ? d.slice(2) : d;
133
+ const payload = (await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${dig}`));
134
+ this.pendingEvaluationResults.set(requestId, payload.data ?? JSON.stringify(payload));
135
+ this.backfillMissRids.delete(requestId);
136
+ }
137
+ catch (err) {
138
+ console.error(`[mech] recovery: could not load restoration result IPFS for ${requestId}:`, err);
139
+ }
140
+ }
141
+ }
107
142
  const recovered = this.pendingEvaluations.size + this.pendingEvaluationClaims.size + this.claimedButNotEvaluated.size;
108
143
  if (recovered > 0) {
109
144
  console.error(`[mech] Recovered: ${this.pendingEvaluations.size} pending evaluations, ${this.pendingEvaluationClaims.size} pending eval claims, ${this.claimedButNotEvaluated.size} claimed but not evaluated`);
@@ -119,6 +154,8 @@ export class MechAdapter {
119
154
  const restorationPayload = buildDesiredStatePayload(restorationState);
120
155
  const restorationCid = await uploadToIpfs(this.config.ipfsRegistryUrl, restorationPayload);
121
156
  const restorationDataHex = cidToDigestHex(restorationCid);
157
+ const digestNo0x = restorationDataHex.startsWith('0x') ? restorationDataHex.slice(2) : restorationDataHex;
158
+ const restorationIntentCid = `f01551220${digestNo0x}`;
122
159
  const deliveryRate = await getMechDeliveryRate(this.publicClient, this.config.mechContractAddress);
123
160
  const { max: maxTimeout } = await getTimeoutBounds(this.publicClient, this.config.mechMarketplaceAddress);
124
161
  const restorationRequestIds = await submitRestorationJob(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, this.config.mechContractAddress, restorationDataHex, deliveryRate, maxTimeout);
@@ -126,9 +163,15 @@ export class MechAdapter {
126
163
  throw new PermanentError('No request IDs returned from router');
127
164
  }
128
165
  const restorationRequestId = restorationRequestIds[0];
129
- // Store for evaluation creation after delivery is claimed
130
- this.pendingEvaluations.set(restorationRequestId, state);
131
- this.originalStates.set(restorationRequestId, { ...state, type: 'restoration' });
166
+ // Store for evaluation creation after delivery is claimed. The evaluation
167
+ // job’s IPFS CID is different from the restoration intended-state CID; evaluators
168
+ // need the latter to verify submission.intent.cid (see context.restorationIntentCid).
169
+ const stateForEval = {
170
+ ...state,
171
+ context: { ...(state.context ?? {}), [RESTORATION_INTENT_CID_CONTEXT_KEY]: restorationIntentCid },
172
+ };
173
+ this.pendingEvaluations.set(restorationRequestId, stateForEval);
174
+ this.originalStates.set(restorationRequestId, { ...stateForEval, type: 'restoration' });
132
175
  return restorationRequestId;
133
176
  }
134
177
  async *watchForRequests() {
@@ -143,15 +186,27 @@ export class MechAdapter {
143
186
  });
144
187
  this.requestBlockCursor = currentBlock;
145
188
  const decoded = decodeMarketplaceRequestLogs(logs);
146
- for (const { requestId, requestDataHex, priorityMech } of decoded) {
189
+ for (const { requestId, requestDataHex, priorityMech, transactionHash, blockNumber } of decoded) {
147
190
  if (!this.claimPolicy.shouldAccept({ requestId, requestDataHex, priorityMech })) {
148
191
  continue;
149
192
  }
150
193
  try {
151
194
  const digest = requestDataHex.startsWith('0x') ? requestDataHex.slice(2) : requestDataHex;
152
- const payload = await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${digest}`);
195
+ // CIDv1 hex with raw codec (0x55) + sha2-256 (0x12) + 32-byte length (0x20).
196
+ // The Autonolas registry returns raw-codec CIDs when uploading files with
197
+ // cid-version=1 (Kubo default for files). This is confirmed by the existing
198
+ // IPFS_GATEWAY_PREFIX constant (f01551220) which has worked in production.
199
+ // If the gateway ever switches to dag-pb (0x70) the prefix would be f01701220.
200
+ const intentCid = `f01551220${digest}`;
201
+ const payload = await fetchFromIpfs(this.config.ipfsGatewayUrl, intentCid);
153
202
  const desiredState = parseDesiredStateFromPayload(payload);
154
- yield { requestId, desiredState };
203
+ yield {
204
+ requestId,
205
+ desiredState,
206
+ intentCid,
207
+ onchainCreationTx: transactionHash,
208
+ onchainCreationBlock: blockNumber,
209
+ };
155
210
  }
156
211
  catch (err) {
157
212
  console.error(`[mech] Failed to parse request ${requestId}:`, err);
@@ -181,10 +236,6 @@ export class MechAdapter {
181
236
  async *watchForDeliveries() {
182
237
  while (!this.stopped) {
183
238
  try {
184
- // Retry evaluation creation for claimed restorations that failed previously
185
- for (const rid of [...this.claimedButNotEvaluated]) {
186
- await this.tryCreateEvaluationJob(rid);
187
- }
188
239
  const currentBlock = await this.publicClient.getBlockNumber();
189
240
  if (currentBlock > this.deliveryBlockCursor) {
190
241
  const logs = await this.publicClient.getLogs({
@@ -195,61 +246,83 @@ export class MechAdapter {
195
246
  this.deliveryBlockCursor = currentBlock;
196
247
  const decoded = decodeDeliverLogs(logs);
197
248
  for (const { requestId, deliveryDataHex, mechAddress } of decoded) {
198
- // Only claim deliveries for requests this client created
199
- const isOurs = this.pendingEvaluations.has(requestId) || this.pendingEvaluationClaims.has(requestId);
200
- if (!isOurs)
249
+ // Two concerns, independent:
250
+ // (a) Did this Safe DELIVER this? → claim it (counter credit goes to msg.sender)
251
+ // The Deliver event's mechAddress is mechServiceMultisig (the Safe that owns
252
+ // the mech), so we compare against this.config.safeAddress.
253
+ // (b) Did this Safe CREATE the underlying request? → act on the delivery
254
+ // (trigger eval creation for restoration deliveries; clean up for eval deliveries)
255
+ const iDelivered = mechAddress.toLowerCase() === this.config.safeAddress.toLowerCase();
256
+ const iCreatedRestoration = this.pendingEvaluations.has(requestId);
257
+ const iCreatedEvaluation = this.pendingEvaluationClaims.has(requestId);
258
+ if (!iDelivered && !iCreatedRestoration && !iCreatedEvaluation)
201
259
  continue;
202
- try {
203
- const variant = this.config.routerClaimDeliveryVariant;
204
- let evidenceHash;
205
- if (variant === 'v2' && this.pendingEvaluations.has(requestId)) {
206
- try {
207
- const checkpoint = {
208
- version: 1,
209
- desiredStateHash: requestId,
210
- toolCalls: [],
211
- externalInteractions: [],
212
- outcome: 'success',
213
- };
214
- evidenceHash = computeEvidenceSimHash(checkpoint);
215
- }
216
- catch (err) {
217
- console.error(`[mech] Failed to compute evidence SimHash for ${requestId}:`, err);
260
+ // (a) Claim delivery on the router so `restorationDeliveryClaimed[requestId]` is set
261
+ // (required before createEvaluationJob can run).
262
+ // - Same-operator: we delivered (iDelivered) → our Safe claims and gets counter credit.
263
+ // - Cross-operator: we created the request (iCreatedRestoration) but another mech
264
+ // delivered (iDelivered is false) → the creator Safe must still call claimDelivery
265
+ // so the router flips `restorationDeliveryClaimed` for this requestId. Otherwise
266
+ // tryCreateEvaluationJob never unblocks. See JinnRouter.claimDelivery in contracts.
267
+ const shouldClaimDelivery = iDelivered || (iCreatedRestoration && !iDelivered);
268
+ if (shouldClaimDelivery) {
269
+ try {
270
+ const variant = this.config.routerClaimDeliveryVariant;
271
+ let evidenceHash;
272
+ if (variant === 'v2') {
273
+ try {
274
+ const checkpoint = {
275
+ version: 1,
276
+ desiredStateHash: requestId,
277
+ toolCalls: [],
278
+ externalInteractions: [],
279
+ outcome: 'success',
280
+ };
281
+ evidenceHash = computeEvidenceSimHash(checkpoint);
282
+ }
283
+ catch (err) {
284
+ console.error(`[mech] Failed to compute evidence SimHash for ${requestId}:`, err);
285
+ }
218
286
  }
287
+ await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, { variant, evidenceHash });
219
288
  }
220
- await claimDelivery(this.publicClient, this.walletClient, this.config.safeAddress, this.config.routerAddress, requestId, {
221
- variant,
222
- evidenceHash,
223
- });
224
- }
225
- catch (err) {
226
- const message = err instanceof Error ? err.message : String(err);
227
- if (message.includes('RequestNotFound')) {
228
- console.error(`[mech] claimDelivery skipped (not a router request): ${requestId}`);
229
- continue;
289
+ catch (err) {
290
+ const message = err instanceof Error ? err.message : String(err);
291
+ if (message.includes('RequestNotFound')) {
292
+ console.error(`[mech] claimDelivery skipped (not a router request): ${requestId}`);
293
+ // fall through — creator actions below don't depend on our claim specifically
294
+ }
295
+ else if (/already.*claimed|alreadyClaimed/i.test(message)) {
296
+ // Idempotent: someone else raced us, fine.
297
+ }
298
+ else {
299
+ console.error(`[mech] claimDelivery failed for ${requestId}:`, err);
300
+ // Don't continue — may retry next poll via unchanged tracking
301
+ continue;
302
+ }
230
303
  }
231
- console.error(`[mech] claimDelivery failed for ${requestId}:`, err);
232
- // Don't remove from pending — will retry next poll
233
- continue;
234
304
  }
235
- // If this was a restoration delivery, fetch result and post the evaluation job
236
- if (this.pendingEvaluations.has(requestId)) {
305
+ // (b) If I created the restoration, post the eval job once the claim is on-chain.
306
+ // The deliverer (someone else, or us if we also delivered) must have claimed first.
307
+ // tryCreateEvaluationJob calls verifyRestorationClaimed() which polls for the claim.
308
+ if (iCreatedRestoration) {
237
309
  let restorationResultData;
238
310
  try {
239
311
  const digest = deliveryDataHex.startsWith('0x') ? deliveryDataHex.slice(2) : deliveryDataHex;
240
312
  const payload = await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${digest}`);
241
313
  restorationResultData = payload.data ?? JSON.stringify(payload);
314
+ this.backfillMissRids.delete(requestId);
242
315
  }
243
316
  catch (err) {
244
317
  console.error(`[mech] Failed to fetch restoration result for evaluation: ${requestId}`, err);
245
318
  }
246
319
  await this.tryCreateEvaluationJob(requestId, restorationResultData);
247
320
  }
248
- // If this was an evaluation delivery, just clear the tracking
249
- if (this.pendingEvaluationClaims.has(requestId)) {
321
+ // (c) If I created the evaluation, clean up tracking once delivered.
322
+ if (iCreatedEvaluation) {
250
323
  this.pendingEvaluationClaims.delete(requestId);
251
324
  }
252
- // Parse and yield the delivery result
325
+ // (d) Yield the delivery result.
253
326
  try {
254
327
  const deliveryDigest = deliveryDataHex.startsWith('0x') ? deliveryDataHex.slice(2) : deliveryDataHex;
255
328
  const resultPayload = await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${deliveryDigest}`);
@@ -276,6 +349,12 @@ export class MechAdapter {
276
349
  }
277
350
  }
278
351
  }
352
+ // After new Deliver events are processed (and `pendingEvaluationResults` may be warm),
353
+ // retry evaluation creation. Doing this *before* deliver processing can upload an
354
+ // evaluation desired state without `restorationResult` in context.
355
+ for (const rid of [...this.claimedButNotEvaluated]) {
356
+ await this.tryCreateEvaluationJob(rid);
357
+ }
279
358
  }
280
359
  catch (err) {
281
360
  console.error('[mech] Error polling for deliveries:', err);
@@ -287,10 +366,54 @@ export class MechAdapter {
287
366
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
288
367
  }
289
368
  }
369
+ async backfillRestorationResultFromChain(requestId) {
370
+ if (this.pendingEvaluationResults.has(requestId)) {
371
+ return this.pendingEvaluationResults.get(requestId);
372
+ }
373
+ if (this.backfillMissRids.has(requestId)) {
374
+ return undefined;
375
+ }
376
+ const currentBlock = await this.publicClient.getBlockNumber();
377
+ const lookbackBlocks = this.config.mechDeliverBackfillLookbackBlocks ?? 500000n;
378
+ const from = currentBlock > lookbackBlocks
379
+ ? currentBlock - lookbackBlocks
380
+ : 1n;
381
+ const dhex = await findLatestDeliveryDataHexForRequest(this.publicClient, this.config.mechContractAddress, requestId, from, currentBlock);
382
+ if (!dhex) {
383
+ this.backfillMissRids.add(requestId);
384
+ return undefined;
385
+ }
386
+ try {
387
+ const d = String(dhex);
388
+ const dig = d.startsWith('0x') ? d.slice(2) : d;
389
+ const payload = (await fetchFromIpfs(this.config.ipfsGatewayUrl, `f01551220${dig}`));
390
+ const data = payload.data ?? JSON.stringify(payload);
391
+ this.pendingEvaluationResults.set(requestId, data);
392
+ this.backfillMissRids.delete(requestId);
393
+ return data;
394
+ }
395
+ catch (err) {
396
+ console.error(`[mech] backfill: failed to load restoration result for ${requestId}:`, err);
397
+ return undefined;
398
+ }
399
+ }
290
400
  async tryCreateEvaluationJob(requestId, restorationResultData) {
291
401
  if (!this.pendingEvaluations.has(requestId))
292
402
  return;
293
403
  const originalState = this.pendingEvaluations.get(requestId);
404
+ if (restorationResultData) {
405
+ this.pendingEvaluationResults.set(requestId, restorationResultData);
406
+ this.backfillMissRids.delete(requestId);
407
+ }
408
+ let cachedRestorationResultData = restorationResultData ?? this.pendingEvaluationResults.get(requestId);
409
+ if (cachedRestorationResultData == null) {
410
+ cachedRestorationResultData = await this.backfillRestorationResultFromChain(requestId);
411
+ }
412
+ if (cachedRestorationResultData == null) {
413
+ this.claimedButNotEvaluated.add(requestId);
414
+ console.error(`[mech] no restoration result yet for ${requestId} (evaluation job and IPFS upload deferred until Deliver or backfill)`);
415
+ return;
416
+ }
294
417
  try {
295
418
  const evaluationState = {
296
419
  ...originalState,
@@ -298,7 +421,7 @@ export class MechAdapter {
298
421
  restorationRequestId: requestId,
299
422
  context: {
300
423
  ...originalState.context,
301
- ...(restorationResultData ? { restorationResult: restorationResultData } : {}),
424
+ restorationResult: cachedRestorationResultData,
302
425
  },
303
426
  };
304
427
  const evaluationPayload = buildDesiredStatePayload(evaluationState);
@@ -328,6 +451,7 @@ export class MechAdapter {
328
451
  // Success — clean up both tracking sets
329
452
  this.pendingEvaluations.delete(requestId);
330
453
  this.claimedButNotEvaluated.delete(requestId);
454
+ this.pendingEvaluationResults.delete(requestId);
331
455
  }
332
456
  catch (err) {
333
457
  console.error(`[mech] Failed to create evaluation job for ${requestId}:`, err);
@@ -336,8 +460,10 @@ export class MechAdapter {
336
460
  }
337
461
  }
338
462
  async verifyRestorationClaimed(requestId) {
339
- const MAX_POLLS = 5;
340
- const POLL_DELAY_MS = 2_000;
463
+ // RPC / fork can lag right after claimDelivery; give more room than 5×2s so
464
+ // tryCreateEvaluationJob succeeds on the first watchForDeliveries pass when possible.
465
+ const MAX_POLLS = 12;
466
+ const POLL_DELAY_MS = 1_500;
341
467
  const abi = [{
342
468
  type: 'function',
343
469
  name: 'restorationDeliveryClaimed',
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/mech/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/mech/adapter.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export interface DecodedMarketplaceRequest {
33
33
  requestId: string;
34
34
  requestDataHex: string;
35
35
  priorityMech: string;
36
+ transactionHash?: `0x${string}`;
37
+ blockNumber?: number;
36
38
  }
37
39
  export declare function decodeMarketplaceRequestLogs(logs: Log[]): DecodedMarketplaceRequest[];
38
40
  export interface DecodedDeliverEvent {
@@ -41,4 +43,16 @@ export interface DecodedDeliverEvent {
41
43
  mechAddress: string;
42
44
  }
43
45
  export declare function decodeDeliverLogs(logs: Log[]): DecodedDeliverEvent[];
46
+ export declare function scanLatestRequestDataByRid(publicClient: PublicClient, marketplaceAddress: Address, fromBlock: bigint, toBlock: bigint): Promise<Map<string, Hex>>;
47
+ export declare function scanLatestDeliveryDataByRid(publicClient: PublicClient, mechContractAddress: Address, fromBlock: bigint, toBlock: bigint): Promise<Map<string, Hex>>;
48
+ /**
49
+ * Most recent `requestData` for `requestId` from MarketplaceRequest events on
50
+ * `marketplaceAddress` in [fromBlock, toBlock] (inclusive), by block then log index.
51
+ */
52
+ export declare function findLatestRequestDataHexForMarketplaceRequest(publicClient: PublicClient, marketplaceAddress: Address, requestId: string, fromBlock: bigint, toBlock: bigint): Promise<Hex | null>;
53
+ /**
54
+ * `data` field of the most recent Deliver event for `requestId` on the mech contract
55
+ * in [fromBlock, toBlock] (inclusive).
56
+ */
57
+ export declare function findLatestDeliveryDataHexForRequest(publicClient: PublicClient, mechContractAddress: Address, requestId: string, fromBlock: bigint, toBlock: bigint): Promise<Hex | null>;
44
58
  export declare function callDeliverToMarketplace(publicClient: PublicClient, walletClient: WalletClient, safeAddress: Address, mechContractAddress: Address, requestIds: Hex[], datas: Hex[]): Promise<Hex>;
@@ -1,5 +1,6 @@
1
1
  import { encodeFunctionData, decodeEventLog, } from 'viem';
2
- import { MECH_MARKETPLACE_ABI, MECH_ABI, JINN_ROUTER_ABI, JINN_ROUTER_CLAIM_DELIVERY_V1_ABI, JINN_ROUTER_CLAIM_DELIVERY_V2_ABI, CLAIM_REGISTRY_ABI, NATIVE_PAYMENT_TYPE, } from './types.js';
2
+ import { MECH_MARKETPLACE_ABI, MECH_ABI, JINN_ROUTER_ABI, JINN_ROUTER_CLAIM_DELIVERY_V1_ABI, JINN_ROUTER_CLAIM_DELIVERY_V2_ABI, NATIVE_PAYMENT_TYPE, } from './types.js';
3
+ import { CLAIM_REGISTRY_ABI } from '../claim-registry/abi.js';
3
4
  import { executeSafeTransaction } from './safe.js';
4
5
  import { isRecoverableTransactionError, waitForTransactionReceiptWithRetry, backoffDelay, } from '../../tx-retry.js';
5
6
  export async function submitRestorationJob(publicClient, walletClient, safeAddress, routerAddress, mechAddress, requestDataHex, priceWei, responseTimeout) {
@@ -77,7 +78,28 @@ export async function submitEvaluationJob(publicClient, walletClient, safeAddres
77
78
  const CLAIM_RETRY_ATTEMPTS = 6;
78
79
  const CLAIM_RETRY_DELAY_MS = 2000;
79
80
  const ZERO_EVIDENCE = '0x0000000000000000000000000000000000000000000000000000000000000000';
81
+ const JINN_ROUTER_CLAIMED_ABI = [
82
+ {
83
+ name: 'claimed',
84
+ type: 'function',
85
+ stateMutability: 'view',
86
+ inputs: [{ name: 'requestId', type: 'bytes32' }],
87
+ outputs: [{ name: '', type: 'bool' }],
88
+ },
89
+ ];
90
+ async function isDeliveryAlreadyClaimed(publicClient, routerAddress, requestId) {
91
+ return Boolean(await publicClient.readContract({
92
+ address: routerAddress,
93
+ abi: JINN_ROUTER_CLAIMED_ABI,
94
+ functionName: 'claimed',
95
+ args: [requestId],
96
+ }));
97
+ }
80
98
  export async function claimDelivery(publicClient, walletClient, safeAddress, routerAddress, requestId, options) {
99
+ if (await isDeliveryAlreadyClaimed(publicClient, routerAddress, requestId)) {
100
+ console.error(`[router] claimDelivery: already claimed ${requestId}`);
101
+ return '0x';
102
+ }
81
103
  const calldata = options.variant === 'v2'
82
104
  ? encodeFunctionData({
83
105
  abi: JINN_ROUTER_CLAIM_DELIVERY_V2_ABI,
@@ -105,6 +127,10 @@ export async function claimDelivery(publicClient, walletClient, safeAddress, rou
105
127
  console.error(`[router] claimDelivery: already claimed ${requestId}`);
106
128
  return '0x';
107
129
  }
130
+ if (await isDeliveryAlreadyClaimed(publicClient, routerAddress, requestId)) {
131
+ console.error(`[router] claimDelivery: already claimed ${requestId}`);
132
+ return '0x';
133
+ }
108
134
  // RequestNotFound — not a router request, skip entirely
109
135
  if (message.includes('RequestNotFound')) {
110
136
  throw err;
@@ -267,11 +293,20 @@ export function decodeMarketplaceRequestLogs(logs) {
267
293
  });
268
294
  if (decoded.eventName === 'MarketplaceRequest') {
269
295
  const args = decoded.args;
296
+ if (!args.requestIds?.length || !args.requestDatas?.length) {
297
+ console.error('[mech] MarketplaceRequest decode missing requestIds/requestDatas', {
298
+ hasRequestIds: args.requestIds != null,
299
+ hasRequestDatas: args.requestDatas != null,
300
+ });
301
+ continue;
302
+ }
270
303
  for (let i = 0; i < args.requestIds.length; i++) {
271
304
  results.push({
272
305
  requestId: String(args.requestIds[i]),
273
306
  requestDataHex: String(args.requestDatas[i]),
274
307
  priorityMech: String(args.priorityMech),
308
+ transactionHash: log.transactionHash ?? undefined,
309
+ blockNumber: log.blockNumber != null ? Number(log.blockNumber) : undefined,
275
310
  });
276
311
  }
277
312
  }
@@ -306,18 +341,87 @@ export function decodeDeliverLogs(logs) {
306
341
  }
307
342
  return results;
308
343
  }
344
+ const LOG_SCAN_CHUNK = 9999n;
345
+ export async function scanLatestRequestDataByRid(publicClient, marketplaceAddress, fromBlock, toBlock) {
346
+ const results = new Map();
347
+ for (let start = fromBlock; start <= toBlock; start += LOG_SCAN_CHUNK + 1n) {
348
+ const end = start + LOG_SCAN_CHUNK > toBlock ? toBlock : start + LOG_SCAN_CHUNK;
349
+ const logs = await publicClient.getLogs({
350
+ address: marketplaceAddress,
351
+ fromBlock: start,
352
+ toBlock: end,
353
+ });
354
+ for (const decoded of decodeMarketplaceRequestLogs(logs)) {
355
+ results.set(decoded.requestId.toLowerCase(), decoded.requestDataHex);
356
+ }
357
+ }
358
+ return results;
359
+ }
360
+ export async function scanLatestDeliveryDataByRid(publicClient, mechContractAddress, fromBlock, toBlock) {
361
+ const results = new Map();
362
+ for (let start = fromBlock; start <= toBlock; start += LOG_SCAN_CHUNK + 1n) {
363
+ const end = start + LOG_SCAN_CHUNK > toBlock ? toBlock : start + LOG_SCAN_CHUNK;
364
+ const logs = await publicClient.getLogs({
365
+ address: mechContractAddress,
366
+ fromBlock: start,
367
+ toBlock: end,
368
+ });
369
+ for (const decoded of decodeDeliverLogs(logs)) {
370
+ results.set(decoded.requestId.toLowerCase(), decoded.deliveryDataHex);
371
+ }
372
+ }
373
+ return results;
374
+ }
375
+ /**
376
+ * Most recent `requestData` for `requestId` from MarketplaceRequest events on
377
+ * `marketplaceAddress` in [fromBlock, toBlock] (inclusive), by block then log index.
378
+ */
379
+ export async function findLatestRequestDataHexForMarketplaceRequest(publicClient, marketplaceAddress, requestId, fromBlock, toBlock) {
380
+ const dataByRid = await scanLatestRequestDataByRid(publicClient, marketplaceAddress, fromBlock, toBlock);
381
+ return dataByRid.get(requestId.toLowerCase()) ?? null;
382
+ }
383
+ /**
384
+ * `data` field of the most recent Deliver event for `requestId` on the mech contract
385
+ * in [fromBlock, toBlock] (inclusive).
386
+ */
387
+ export async function findLatestDeliveryDataHexForRequest(publicClient, mechContractAddress, requestId, fromBlock, toBlock) {
388
+ const dataByRid = await scanLatestDeliveryDataByRid(publicClient, mechContractAddress, fromBlock, toBlock);
389
+ return dataByRid.get(requestId.toLowerCase()) ?? null;
390
+ }
309
391
  // ── Delivery ─────────────────────────────────────────────────────────────────
392
+ // Error names reported by the Mech Marketplace contract for duplicate delivery.
393
+ // The exact name varies across contract versions; we match all known variants.
394
+ const ALREADY_DELIVERED_PATTERNS = [
395
+ 'AlreadyDelivered',
396
+ 'DeliveryAlreadyCompleted',
397
+ 'JobAlreadyDelivered',
398
+ 'RequestAlreadyDelivered',
399
+ ];
310
400
  export async function callDeliverToMarketplace(publicClient, walletClient, safeAddress, mechContractAddress, requestIds, datas) {
311
401
  const calldata = encodeFunctionData({
312
402
  abi: MECH_ABI,
313
403
  functionName: 'deliverToMarketplace',
314
404
  args: [requestIds, datas],
315
405
  });
316
- return executeSafeTransaction(publicClient, walletClient, {
317
- safeAddress,
318
- to: mechContractAddress,
319
- value: 0n,
320
- data: calldata,
321
- });
406
+ try {
407
+ return await executeSafeTransaction(publicClient, walletClient, {
408
+ safeAddress,
409
+ to: mechContractAddress,
410
+ value: 0n,
411
+ data: calldata,
412
+ });
413
+ }
414
+ catch (err) {
415
+ const message = err instanceof Error ? err.message : String(err);
416
+ // Idempotent: if the mech already recorded this delivery (e.g. crash
417
+ // recovery re-entered this path), treat it as success. The tx hash is
418
+ // unavailable at this point, but the engine's deliveryTxHash column would
419
+ // have been set by the previous attempt's onDeliveryTxLanded callback.
420
+ if (ALREADY_DELIVERED_PATTERNS.some(p => message.includes(p))) {
421
+ console.error(`[mech] callDeliverToMarketplace: already delivered (idempotent), requestIds=${requestIds.join(',')}`);
422
+ return '0x';
423
+ }
424
+ throw err;
425
+ }
322
426
  }
323
427
  //# sourceMappingURL=contracts.js.map