@jinn-network/client 0.1.1 → 0.1.2-canary.647548b7

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 (353) 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 +1 -0
  13. package/dist/adapters/mech/adapter.js +75 -41
  14. package/dist/adapters/mech/adapter.js.map +1 -1
  15. package/dist/adapters/mech/contracts.d.ts +2 -0
  16. package/dist/adapters/mech/contracts.js +57 -7
  17. package/dist/adapters/mech/contracts.js.map +1 -1
  18. package/dist/adapters/mech/ipfs.d.ts +8 -0
  19. package/dist/adapters/mech/ipfs.js +12 -0
  20. package/dist/adapters/mech/ipfs.js.map +1 -1
  21. package/dist/adapters/mech/types.d.ts +20 -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 +149 -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 +753 -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/legacy-claude/index.d.ts +45 -0
  221. package/dist/restorer/impls/legacy-claude/index.js +71 -0
  222. package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
  223. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  224. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  225. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  226. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
  227. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
  228. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  229. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  230. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  231. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  232. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  233. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  234. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  235. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  236. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  237. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  238. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  239. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  240. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  241. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +43 -0
  242. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +431 -0
  243. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
  244. package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
  245. package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
  246. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
  247. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +32 -0
  248. package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
  249. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
  250. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +39 -0
  251. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +98 -0
  252. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -0
  253. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.d.ts +2 -0
  254. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js +7 -0
  255. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
  256. package/dist/restorer/impls/prediction-apy-v0-baseline/types.d.ts +4 -0
  257. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js +2 -0
  258. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +1 -0
  259. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +2 -0
  260. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +7 -0
  261. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
  262. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +39 -0
  263. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +186 -0
  264. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
  265. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.d.ts +9 -0
  266. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js +20 -0
  267. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
  268. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.d.ts +7 -0
  269. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js +2 -0
  270. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
  271. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +29 -0
  272. package/dist/restorer/impls/prediction-v0-baseline/index.js +94 -0
  273. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
  274. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  275. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
  276. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
  277. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
  278. package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
  279. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
  280. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  281. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
  282. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  283. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  284. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
  285. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  286. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  287. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
  288. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  289. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +7 -0
  290. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +93 -0
  291. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  292. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  293. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
  294. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  295. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +33 -0
  296. package/dist/restorer/impls/prediction-v0-evaluator/index.js +208 -0
  297. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
  298. package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
  299. package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
  300. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
  301. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
  302. package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
  303. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
  304. package/dist/restorer/types.d.ts +177 -0
  305. package/dist/restorer/types.js +7 -0
  306. package/dist/restorer/types.js.map +1 -0
  307. package/dist/store/store.d.ts +64 -1
  308. package/dist/store/store.js +226 -4
  309. package/dist/store/store.js.map +1 -1
  310. package/dist/types/desired-state.d.ts +53 -0
  311. package/dist/types/desired-state.js +20 -0
  312. package/dist/types/desired-state.js.map +1 -1
  313. package/dist/types/index.d.ts +4 -1
  314. package/dist/types/index.js +4 -1
  315. package/dist/types/index.js.map +1 -1
  316. package/dist/types/portfolio.d.ts +1000 -0
  317. package/dist/types/portfolio.js +168 -0
  318. package/dist/types/portfolio.js.map +1 -0
  319. package/dist/types/prediction-apy.d.ts +919 -0
  320. package/dist/types/prediction-apy.js +121 -0
  321. package/dist/types/prediction-apy.js.map +1 -0
  322. package/dist/types/prediction.d.ts +925 -0
  323. package/dist/types/prediction.js +140 -0
  324. package/dist/types/prediction.js.map +1 -0
  325. package/dist/venues/aave-v3/addresses.d.ts +6 -0
  326. package/dist/venues/aave-v3/addresses.js +19 -0
  327. package/dist/venues/aave-v3/addresses.js.map +1 -0
  328. package/dist/venues/aave-v3/client.d.ts +81 -0
  329. package/dist/venues/aave-v3/client.js +97 -0
  330. package/dist/venues/aave-v3/client.js.map +1 -0
  331. package/dist/venues/chainlink/client.d.ts +99 -0
  332. package/dist/venues/chainlink/client.js +130 -0
  333. package/dist/venues/chainlink/client.js.map +1 -0
  334. package/dist/venues/chainlink/feeds.d.ts +8 -0
  335. package/dist/venues/chainlink/feeds.js +9 -0
  336. package/dist/venues/chainlink/feeds.js.map +1 -0
  337. package/dist/venues/hyperliquid/account-value.d.ts +30 -0
  338. package/dist/venues/hyperliquid/account-value.js +30 -0
  339. package/dist/venues/hyperliquid/account-value.js.map +1 -0
  340. package/dist/venues/hyperliquid/client.d.ts +63 -0
  341. package/dist/venues/hyperliquid/client.js +135 -0
  342. package/dist/venues/hyperliquid/client.js.map +1 -0
  343. package/dist/venues/hyperliquid/grid.d.ts +36 -0
  344. package/dist/venues/hyperliquid/grid.js +61 -0
  345. package/dist/venues/hyperliquid/grid.js.map +1 -0
  346. package/dist/venues/hyperliquid/types.d.ts +81 -0
  347. package/dist/venues/hyperliquid/types.js +8 -0
  348. package/dist/venues/hyperliquid/types.js.map +1 -0
  349. package/dist/withdraw/run-withdraw-plan.js +2 -0
  350. package/dist/withdraw/run-withdraw-plan.js.map +1 -1
  351. package/docker-compose.yml +44 -0
  352. package/package.json +12 -1
  353. package/skills/jinn-operator/SKILL.md +85 -0
@@ -0,0 +1,15 @@
1
+ import { brierScore } from './canonical-metrics.js';
2
+ export const SCORE_BASIS = 'brier.v1';
3
+ export const SCORE_VERSION = '1';
4
+ export function computeScore(verdict, probability, groundTruth) {
5
+ if (verdict !== 'PASS') {
6
+ return { score: '0', scoreBasis: SCORE_BASIS, scoreVersion: SCORE_VERSION };
7
+ }
8
+ const outcome = groundTruth === 'YES' ? 1 : 0;
9
+ return {
10
+ score: brierScore(probability, outcome),
11
+ scoreBasis: SCORE_BASIS,
12
+ scoreVersion: SCORE_VERSION,
13
+ };
14
+ }
15
+ //# sourceMappingURL=score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/restorer/impls/prediction-v0-evaluator/score.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAY,CAAC;AAI1C,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,WAAmB,EACnB,WAAyB;IAEzB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC;QACvC,UAAU,EAAE,WAAW;QACvB,YAAY,EAAE,aAAa;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type CheckStatus = 'PASS' | 'FAIL' | 'SKIP';
2
+ export interface Check {
3
+ name: string;
4
+ status: CheckStatus;
5
+ detail?: string | Record<string, unknown>;
6
+ }
7
+ export type Verdict = 'PASS' | 'FAIL' | 'REJECTED' | 'INDETERMINATE';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/restorer/impls/prediction-v0-evaluator/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Restorer-impl interface — §6.7 of the portfolio.v0 design spec.
3
+ *
4
+ * Pure type definitions; no runtime side effects.
5
+ */
6
+ import type { DesiredState } from '../types/desired-state.js';
7
+ import type { OutputArtifact, RationaleEntry, Snapshot } from '../types/portfolio.js';
8
+ export interface RestorationContext {
9
+ intent: DesiredState;
10
+ /** Persistent directory for impl-specific state. */
11
+ implStateDir: string;
12
+ /** Ephemeral working directory (cleared between attempts). */
13
+ workingDir: string;
14
+ log: (event: {
15
+ level: 'info' | 'warn' | 'error';
16
+ msg: string;
17
+ data?: unknown;
18
+ }) => void;
19
+ /** Fires at window.endTs. */
20
+ abort: AbortSignal;
21
+ msUntilEndTs: () => number;
22
+ }
23
+ export interface RestorationOutput {
24
+ venueRef: {
25
+ name: string;
26
+ };
27
+ /** Optional — evaluator impls that do not operate on a venue leave these undefined. */
28
+ preSnapshot?: Snapshot;
29
+ postSnapshot?: Snapshot;
30
+ fills?: unknown[];
31
+ /** Shape is per spec.kind convention. */
32
+ gating: Record<string, unknown>;
33
+ informational?: Record<string, unknown>;
34
+ artifacts?: OutputArtifact[];
35
+ rationale?: RationaleEntry[];
36
+ }
37
+ /**
38
+ * Context-free readiness probe. "Are this impl's external dependencies
39
+ * satisfied right now, regardless of any specific intent?" Used by
40
+ * `jinn intents list|status` and by the claim-policy gate that refuses
41
+ * to spend gas claiming an intent whose impl cannot execute.
42
+ */
43
+ export interface ReadyStatus {
44
+ ready: boolean;
45
+ reason?: string;
46
+ /** Optional hint for the operator/agent on how to become ready. */
47
+ nextStep?: {
48
+ description: string;
49
+ cli?: string;
50
+ url?: string;
51
+ };
52
+ }
53
+ /**
54
+ * Argument a kind-specific enable flow wants from the operator, surfaced
55
+ * via `enableMetadata()`. The generic `jinn intents enable <kind>` verb
56
+ * parses these from `--key=value` flags without caring what they mean.
57
+ */
58
+ export interface EnableArgDef {
59
+ name: string;
60
+ description: string;
61
+ required: boolean;
62
+ }
63
+ /**
64
+ * Metadata that `jinn intents list` uses to teach the operator (or agent)
65
+ * what's needed to enable a kind. Returned without running the flow.
66
+ */
67
+ export interface IntentEnableMetadata {
68
+ /** Human-readable summary of what opting in to this kind entails. */
69
+ description: string;
70
+ requiredArgs?: EnableArgDef[];
71
+ /** External URLs the operator/agent will need (e.g. exchange UI). */
72
+ externalResources?: Array<{
73
+ name: string;
74
+ url: string;
75
+ }>;
76
+ }
77
+ /**
78
+ * Outcome of a single `jinn intents enable <kind>` invocation.
79
+ *
80
+ * The flow is idempotent: the agent reruns the same command until
81
+ * `status === 'ready'`. Each intermediate state carries enough info for
82
+ * the agent to know what to do next (show a URL, collect more args,
83
+ * surface an error).
84
+ */
85
+ export type EnableResult = {
86
+ status: 'ready';
87
+ /** Anything the impl wants to surface (e.g. master address, wallet address). */
88
+ details?: Record<string, unknown>;
89
+ } | {
90
+ status: 'waiting_for_external_action';
91
+ /** What the operator has to do out-of-band (e.g. approve an api-wallet). */
92
+ action: {
93
+ description: string;
94
+ url?: string;
95
+ };
96
+ details?: Record<string, unknown>;
97
+ /** The exact CLI the agent should re-run once the action is done. */
98
+ nextInvocation: {
99
+ cli: string;
100
+ purpose: string;
101
+ };
102
+ } | {
103
+ status: 'missing_args';
104
+ required: EnableArgDef[];
105
+ example: {
106
+ cli: string;
107
+ };
108
+ } | {
109
+ status: 'error';
110
+ message: string;
111
+ details?: Record<string, unknown>;
112
+ };
113
+ export interface RestorerImpl {
114
+ name: string;
115
+ /** semver */
116
+ version: string;
117
+ /**
118
+ * Return true if this impl should handle the given (kind, type) pair.
119
+ *
120
+ * `type` reflects DesiredState.type:
121
+ * - 'restoration' (or undefined — legacy default): the impl runs a restoration attempt
122
+ * - 'evaluation': the impl runs as an evaluator producing a verdict
123
+ *
124
+ * A restorer impl for kind=X should return true for type !== 'evaluation'.
125
+ * An evaluator impl for kind=X should return true for type === 'evaluation'.
126
+ */
127
+ supports(ctx: {
128
+ kind: string;
129
+ type?: 'restoration' | 'evaluation';
130
+ }): boolean;
131
+ canAttempt?(intent: DesiredState): Promise<{
132
+ ok: true;
133
+ } | {
134
+ ok: false;
135
+ reason: string;
136
+ }>;
137
+ run(ctx: RestorationContext): Promise<RestorationOutput>;
138
+ /**
139
+ * Context-free readiness probe. Zero-dep impls can omit this (treated
140
+ * as `{ ready: true }`). Impls with external deps (credentials, files,
141
+ * exchange approvals) report current readiness plus a `nextStep` hint.
142
+ */
143
+ isReady?(): Promise<ReadyStatus>;
144
+ /**
145
+ * Describes what `onEnable` wants from the caller. Consumed by
146
+ * `jinn intents list` so the agent can tell the operator what a
147
+ * specific kind's enable flow needs without triggering it first.
148
+ */
149
+ enableMetadata?(): IntentEnableMetadata;
150
+ /**
151
+ * Idempotent enable-state machine. Called by `jinn intents enable <kind>`.
152
+ *
153
+ * Contract:
154
+ * - Zero-dep impls return `{ status: 'ready' }` on every call.
155
+ * - Impls with external deps advance as far as they can without
156
+ * blocking, then return a `waiting_for_external_action` envelope
157
+ * the agent surfaces to the operator.
158
+ * - Subsequent invocations pick up where the previous left off.
159
+ * - Calling after already-enabled is a no-op that returns `ready`.
160
+ *
161
+ * `args` is the raw `--key=value` map parsed from the CLI. Impls
162
+ * validate and coerce as needed; missing required args should return
163
+ * `{ status: 'missing_args', required: [...], example: {...} }`.
164
+ *
165
+ * Impls that omit this method cannot be enabled by the generic CLI;
166
+ * they are either always-on (zero-dep) or require manual config.
167
+ */
168
+ onEnable?(args: Record<string, string | undefined>): Promise<EnableResult>;
169
+ /**
170
+ * Optional inverse of `onEnable`. Invoked when the operator runs
171
+ * `jinn intents disable <kind>`. Should NOT destroy unrecoverable
172
+ * state (generated key material, on-chain registrations); reserve
173
+ * that for explicit `jinn intents purge` or similar (out of scope
174
+ * for this interface).
175
+ */
176
+ onDisable?(): Promise<void>;
177
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Restorer-impl interface — §6.7 of the portfolio.v0 design spec.
3
+ *
4
+ * Pure type definitions; no runtime side effects.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/restorer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,7 +1,51 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface ActivityEventInput {
3
+ ts: string | null;
4
+ kind: string;
5
+ requestId?: string | null;
6
+ serviceIndex?: number | null;
7
+ txHash?: string | null;
8
+ specKind?: string | null;
9
+ outcome?: string | null;
10
+ detail?: string | null;
11
+ }
12
+ export interface ActivityEventRow {
13
+ id: number;
14
+ ts: string | null;
15
+ kind: string;
16
+ requestId: string | null;
17
+ serviceIndex: number | null;
18
+ txHash: string | null;
19
+ specKind: string | null;
20
+ outcome: string | null;
21
+ detail: string | null;
22
+ }
23
+ export interface RewardClaimInput {
24
+ ts: string;
25
+ serviceIndex: number;
26
+ serviceId?: number | null;
27
+ stakingProxy: string;
28
+ distributor: string;
29
+ txHash: string;
30
+ amountWei: string;
31
+ asset?: string;
32
+ }
33
+ export interface BalanceCacheEntry {
34
+ role: string;
35
+ address: string;
36
+ nativeWei?: string | null;
37
+ bondWei?: string | null;
38
+ assetExtraJson?: string | null;
39
+ fetchedAt: string;
40
+ error?: string | null;
41
+ }
1
42
  export declare class Store {
2
- private db;
43
+ /** Exposed for engine persistence layer — treat as package-internal. */
44
+ readonly db: Database.Database;
3
45
  readonly path: string;
4
46
  constructor(dbPath: string);
47
+ /** Idempotent: older DBs before idx_reward_claims_tx may lack the unique index. */
48
+ private ensureRewardClaimsTxIndex;
5
49
  recordOwnActivity(requestId: string, role: 'created' | 'claimed' | 'delivered' | 'evaluated'): void;
6
50
  isOwnActivity(requestId: string): boolean;
7
51
  setShutdownState(state: 'clean' | 'running'): void;
@@ -16,6 +60,25 @@ export declare class Store {
16
60
  requestId: string;
17
61
  role: string;
18
62
  }>;
63
+ recordActivityEvent(event: ActivityEventInput): void;
64
+ getRecentActivityEvents(limit: number, opts?: {
65
+ since?: string;
66
+ cursor?: string;
67
+ }): ActivityEventRow[];
68
+ /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
69
+ getActivityEventsAfterId(afterId: number, limit: number): ActivityEventRow[];
70
+ getActivityCountsByKind(): Record<string, number>;
71
+ getLastEventAtForService(serviceIndex: number): string | null;
72
+ getActivityCountsForService(serviceIndex: number): Record<string, number>;
73
+ recordRewardClaim(claim: RewardClaimInput): void;
74
+ getClaimedRewardsByService(): Record<number, {
75
+ total: string;
76
+ lastAt: string;
77
+ lastTxHash: string;
78
+ }>;
79
+ upsertBalanceCache(entry: BalanceCacheEntry): void;
80
+ getBalanceCache(): BalanceCacheEntry[];
81
+ private backfillActivityEvents;
19
82
  getLastProcessedBlock(): bigint | null;
20
83
  setLastProcessedBlock(block: bigint): void;
21
84
  insertArtifact(artifact: {
@@ -1,6 +1,7 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { mkdirSync } from 'node:fs';
3
3
  import { dirname } from 'node:path';
4
+ import { RESTORATION_INTENTS_SCHEMA } from '../restorer/engine/persistence.js';
4
5
  const SCHEMA = `
5
6
  CREATE TABLE IF NOT EXISTS own_activity (
6
7
  request_id TEXT PRIMARY KEY,
@@ -31,8 +32,48 @@ CREATE INDEX IF NOT EXISTS idx_artifacts_desired_state ON artifacts (desired_sta
31
32
  CREATE INDEX IF NOT EXISTS idx_artifacts_outcome ON artifacts (outcome);
32
33
  CREATE INDEX IF NOT EXISTS idx_artifacts_remote ON artifacts (remote);
33
34
 
35
+ CREATE TABLE IF NOT EXISTS activity_events (
36
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ ts TEXT,
38
+ kind TEXT NOT NULL,
39
+ request_id TEXT,
40
+ service_index INTEGER,
41
+ tx_hash TEXT,
42
+ spec_kind TEXT,
43
+ outcome TEXT,
44
+ detail TEXT
45
+ );
46
+ CREATE INDEX IF NOT EXISTS idx_activity_events_ts ON activity_events (ts DESC);
47
+ CREATE INDEX IF NOT EXISTS idx_activity_events_req ON activity_events (request_id);
48
+ CREATE INDEX IF NOT EXISTS idx_activity_events_service_idx ON activity_events (service_index);
49
+
50
+ CREATE TABLE IF NOT EXISTS reward_claims (
51
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
52
+ ts TEXT NOT NULL,
53
+ service_index INTEGER NOT NULL,
54
+ service_id INTEGER,
55
+ staking_proxy TEXT NOT NULL,
56
+ distributor TEXT NOT NULL,
57
+ tx_hash TEXT NOT NULL,
58
+ amount_wei TEXT NOT NULL,
59
+ asset TEXT NOT NULL DEFAULT 'reward'
60
+ );
61
+ CREATE INDEX IF NOT EXISTS idx_reward_claims_svc ON reward_claims (service_index);
62
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_reward_claims_tx ON reward_claims (tx_hash);
63
+
64
+ CREATE TABLE IF NOT EXISTS balance_cache (
65
+ role TEXT PRIMARY KEY,
66
+ address TEXT NOT NULL,
67
+ native_wei TEXT,
68
+ bond_wei TEXT,
69
+ asset_extra_json TEXT,
70
+ fetched_at TEXT NOT NULL,
71
+ error TEXT
72
+ );
73
+
34
74
  `;
35
75
  export class Store {
76
+ /** Exposed for engine persistence layer — treat as package-internal. */
36
77
  db;
37
78
  path;
38
79
  constructor(dbPath) {
@@ -43,9 +84,18 @@ export class Store {
43
84
  this.db = new Database(dbPath);
44
85
  this.db.pragma('journal_mode = WAL');
45
86
  this.db.exec(SCHEMA);
87
+ this.db.exec(RESTORATION_INTENTS_SCHEMA);
88
+ this.ensureRewardClaimsTxIndex();
89
+ this.backfillActivityEvents();
90
+ }
91
+ /** Idempotent: older DBs before idx_reward_claims_tx may lack the unique index. */
92
+ ensureRewardClaimsTxIndex() {
93
+ this.db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_reward_claims_tx ON reward_claims (tx_hash)`);
46
94
  }
47
95
  recordOwnActivity(requestId, role) {
48
96
  this.db.prepare(`INSERT OR REPLACE INTO own_activity (request_id, role) VALUES (?, ?)`).run(requestId, role);
97
+ const ts = new Date().toISOString();
98
+ this.recordActivityEvent({ ts, kind: role, requestId });
49
99
  }
50
100
  isOwnActivity(requestId) {
51
101
  const row = this.db.prepare('SELECT 1 FROM own_activity WHERE request_id = ?').get(requestId);
@@ -68,17 +118,189 @@ export class Store {
68
118
  }
69
119
  /** Counts of protocol roles recorded for this node (best-effort activity hints). */
70
120
  getOwnActivityCounts() {
121
+ const counts = this.getActivityCountsByKind();
122
+ if (Object.keys(counts).length > 0)
123
+ return counts;
71
124
  const rows = this.db.prepare(`SELECT role, COUNT(*) as c FROM own_activity GROUP BY role`).all();
72
125
  const out = {};
73
- for (const r of rows) {
126
+ for (const r of rows)
74
127
  out[r.role] = r.c;
75
- }
76
128
  return out;
77
129
  }
78
130
  /** Latest own_activity rows by insertion order (approximate). */
79
131
  getRecentOwnActivity(limit) {
80
- const rows = this.db.prepare(`SELECT request_id, role FROM own_activity ORDER BY rowid DESC LIMIT ?`).all(Math.max(0, Math.min(limit, 1000)));
81
- return rows.map(r => ({ requestId: r.request_id, role: r.role }));
132
+ const rows = this.getRecentActivityEvents(limit);
133
+ if (rows.length > 0)
134
+ return rows.map((r) => ({ requestId: r.requestId ?? '', role: r.kind }));
135
+ const legacyRows = this.db.prepare(`SELECT request_id, role FROM own_activity ORDER BY rowid DESC LIMIT ?`).all(Math.max(0, Math.min(limit, 1000)));
136
+ return legacyRows.map(r => ({ requestId: r.request_id, role: r.role }));
137
+ }
138
+ recordActivityEvent(event) {
139
+ this.db.prepare(`INSERT INTO activity_events (ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail)
140
+ VALUES (@ts, @kind, @requestId, @serviceIndex, @txHash, @specKind, @outcome, @detail)`).run({
141
+ ts: event.ts ?? null,
142
+ kind: event.kind,
143
+ requestId: event.requestId ?? null,
144
+ serviceIndex: event.serviceIndex ?? null,
145
+ txHash: event.txHash ?? null,
146
+ specKind: event.specKind ?? null,
147
+ outcome: event.outcome ?? null,
148
+ detail: event.detail ?? null,
149
+ });
150
+ }
151
+ getRecentActivityEvents(limit, opts = {}) {
152
+ const effectiveLimit = Math.max(0, Math.min(limit, 1000));
153
+ const clauses = [];
154
+ const params = { limit: effectiveLimit };
155
+ if (opts.since) {
156
+ clauses.push('ts IS NOT NULL AND ts >= @since');
157
+ params['since'] = opts.since;
158
+ }
159
+ if (opts.cursor) {
160
+ clauses.push('ts IS NOT NULL AND ts < @cursor');
161
+ params['cursor'] = opts.cursor;
162
+ }
163
+ const where = clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : '';
164
+ const rows = this.db.prepare(`SELECT id, ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail
165
+ FROM activity_events
166
+ ${where}
167
+ ORDER BY id DESC
168
+ LIMIT @limit`).all(params);
169
+ return rows.map((r) => ({
170
+ id: r.id,
171
+ ts: r.ts,
172
+ kind: r.kind,
173
+ requestId: r.request_id,
174
+ serviceIndex: r.service_index,
175
+ txHash: r.tx_hash,
176
+ specKind: r.spec_kind,
177
+ outcome: r.outcome,
178
+ detail: r.detail,
179
+ }));
180
+ }
181
+ /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
182
+ getActivityEventsAfterId(afterId, limit) {
183
+ const effectiveLimit = Math.max(0, Math.min(limit, 1000));
184
+ const rows = this.db
185
+ .prepare(`SELECT id, ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail
186
+ FROM activity_events
187
+ WHERE id > @afterId
188
+ ORDER BY id ASC
189
+ LIMIT @limit`)
190
+ .all({ afterId, limit: effectiveLimit });
191
+ return rows.map((r) => ({
192
+ id: r.id,
193
+ ts: r.ts,
194
+ kind: r.kind,
195
+ requestId: r.request_id,
196
+ serviceIndex: r.service_index,
197
+ txHash: r.tx_hash,
198
+ specKind: r.spec_kind,
199
+ outcome: r.outcome,
200
+ detail: r.detail,
201
+ }));
202
+ }
203
+ getActivityCountsByKind() {
204
+ const rows = this.db.prepare(`SELECT kind, COUNT(*) as c FROM activity_events GROUP BY kind`).all();
205
+ const out = {};
206
+ for (const r of rows)
207
+ out[r.kind] = r.c;
208
+ return out;
209
+ }
210
+ getLastEventAtForService(serviceIndex) {
211
+ const row = this.db.prepare(`SELECT ts FROM activity_events WHERE service_index = ? AND ts IS NOT NULL ORDER BY id DESC LIMIT 1`).get(serviceIndex);
212
+ return row?.ts ?? null;
213
+ }
214
+ getActivityCountsForService(serviceIndex) {
215
+ const rows = this.db.prepare(`SELECT kind, COUNT(*) as c FROM activity_events WHERE service_index = ? GROUP BY kind`).all(serviceIndex);
216
+ const out = {};
217
+ for (const r of rows)
218
+ out[r.kind] = r.c;
219
+ return out;
220
+ }
221
+ recordRewardClaim(claim) {
222
+ this.db
223
+ .prepare(`INSERT OR IGNORE INTO reward_claims
224
+ (ts, service_index, service_id, staking_proxy, distributor, tx_hash, amount_wei, asset)
225
+ VALUES (@ts, @serviceIndex, @serviceId, @stakingProxy, @distributor, @txHash, @amountWei, @asset)`)
226
+ .run({
227
+ ts: claim.ts,
228
+ serviceIndex: claim.serviceIndex,
229
+ serviceId: claim.serviceId ?? null,
230
+ stakingProxy: claim.stakingProxy,
231
+ distributor: claim.distributor,
232
+ txHash: claim.txHash,
233
+ amountWei: claim.amountWei,
234
+ asset: claim.asset ?? 'reward',
235
+ });
236
+ }
237
+ getClaimedRewardsByService() {
238
+ const rows = this.db.prepare(`SELECT id, service_index, amount_wei, ts, tx_hash FROM reward_claims ORDER BY id ASC`).all();
239
+ const out = {};
240
+ const lastId = {};
241
+ for (const r of rows) {
242
+ const current = out[r.service_index];
243
+ const nextTotal = (current ? BigInt(current.total) : 0n) + BigInt(r.amount_wei);
244
+ const isNewer = !current || r.id > (lastId[r.service_index] ?? 0);
245
+ if (isNewer) {
246
+ lastId[r.service_index] = r.id;
247
+ }
248
+ out[r.service_index] = {
249
+ total: nextTotal.toString(),
250
+ lastAt: isNewer || !current ? r.ts : current.lastAt,
251
+ lastTxHash: isNewer || !current ? r.tx_hash : current.lastTxHash,
252
+ };
253
+ }
254
+ return out;
255
+ }
256
+ upsertBalanceCache(entry) {
257
+ this.db.prepare(`INSERT INTO balance_cache (role, address, native_wei, bond_wei, asset_extra_json, fetched_at, error)
258
+ VALUES (@role, @address, @nativeWei, @bondWei, @assetExtraJson, @fetchedAt, @error)
259
+ ON CONFLICT(role) DO UPDATE SET
260
+ address=excluded.address,
261
+ native_wei=excluded.native_wei,
262
+ bond_wei=excluded.bond_wei,
263
+ asset_extra_json=excluded.asset_extra_json,
264
+ fetched_at=excluded.fetched_at,
265
+ error=excluded.error`).run({
266
+ role: entry.role,
267
+ address: entry.address,
268
+ nativeWei: entry.nativeWei ?? null,
269
+ bondWei: entry.bondWei ?? null,
270
+ assetExtraJson: entry.assetExtraJson ?? null,
271
+ fetchedAt: entry.fetchedAt,
272
+ error: entry.error ?? null,
273
+ });
274
+ }
275
+ getBalanceCache() {
276
+ const rows = this.db.prepare(`SELECT role, address, native_wei, bond_wei, asset_extra_json, fetched_at, error
277
+ FROM balance_cache`).all();
278
+ return rows.map((r) => ({
279
+ role: r.role,
280
+ address: r.address,
281
+ nativeWei: r.native_wei,
282
+ bondWei: r.bond_wei,
283
+ assetExtraJson: r.asset_extra_json,
284
+ fetchedAt: r.fetched_at,
285
+ error: r.error,
286
+ }));
287
+ }
288
+ backfillActivityEvents() {
289
+ const migrationKey = 'activity_events_migrated_v1';
290
+ const insert = this.db.prepare(`INSERT INTO activity_events (ts, kind, request_id)
291
+ SELECT NULL, o.role, o.request_id
292
+ FROM own_activity o
293
+ WHERE NOT EXISTS (
294
+ SELECT 1 FROM activity_events a
295
+ WHERE a.request_id = o.request_id AND a.kind = o.role
296
+ )`);
297
+ const tx = this.db.transaction(() => {
298
+ if (this.getConfigValue(migrationKey) === 'true')
299
+ return;
300
+ insert.run();
301
+ this.setConfigValue(migrationKey, 'true');
302
+ });
303
+ tx();
82
304
  }
83
305
  getLastProcessedBlock() {
84
306
  const row = this.db.prepare('SELECT value FROM config WHERE key = ?').get('last_processed_block');
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}