@jinn-network/client 0.1.1 → 0.1.2-canary.6237288d

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 (424) hide show
  1. package/CHANGELOG.md +16 -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/adapter.d.ts +7 -0
  7. package/dist/adapters/claim-registry/abi.d.ts +127 -0
  8. package/dist/adapters/claim-registry/abi.js +93 -0
  9. package/dist/adapters/claim-registry/abi.js.map +1 -0
  10. package/dist/adapters/claim-registry/client.d.ts +89 -0
  11. package/dist/adapters/claim-registry/client.js +205 -0
  12. package/dist/adapters/claim-registry/client.js.map +1 -0
  13. package/dist/adapters/mech/adapter.d.ts +5 -0
  14. package/dist/adapters/mech/adapter.js +211 -56
  15. package/dist/adapters/mech/adapter.js.map +1 -1
  16. package/dist/adapters/mech/contracts.d.ts +19 -1
  17. package/dist/adapters/mech/contracts.js +112 -8
  18. package/dist/adapters/mech/contracts.js.map +1 -1
  19. package/dist/adapters/mech/ipfs.d.ts +38 -5
  20. package/dist/adapters/mech/ipfs.js +174 -17
  21. package/dist/adapters/mech/ipfs.js.map +1 -1
  22. package/dist/adapters/mech/safe.js +8 -6
  23. package/dist/adapters/mech/safe.js.map +1 -1
  24. package/dist/adapters/mech/types.d.ts +22 -46
  25. package/dist/adapters/mech/types.js +16 -35
  26. package/dist/adapters/mech/types.js.map +1 -1
  27. package/dist/api/balance-build.js +3 -3
  28. package/dist/api/balance-build.js.map +1 -1
  29. package/dist/api/fleet-build.js +35 -40
  30. package/dist/api/fleet-build.js.map +1 -1
  31. package/dist/api/gather-status.d.ts +6 -0
  32. package/dist/api/gather-status.js +187 -4
  33. package/dist/api/gather-status.js.map +1 -1
  34. package/dist/api/history-build.d.ts +5 -1
  35. package/dist/api/history-build.js +51 -26
  36. package/dist/api/history-build.js.map +1 -1
  37. package/dist/api/portfolio-v0-build.d.ts +83 -0
  38. package/dist/api/portfolio-v0-build.js +143 -0
  39. package/dist/api/portfolio-v0-build.js.map +1 -0
  40. package/dist/api/portfolio-v0-doctor.d.ts +37 -0
  41. package/dist/api/portfolio-v0-doctor.js +123 -0
  42. package/dist/api/portfolio-v0-doctor.js.map +1 -0
  43. package/dist/api/rewards-build.js +30 -14
  44. package/dist/api/rewards-build.js.map +1 -1
  45. package/dist/api/status-build.d.ts +39 -6
  46. package/dist/api/status-build.js +3 -1
  47. package/dist/api/status-build.js.map +1 -1
  48. package/dist/api/status-rollup-build.d.ts +2 -0
  49. package/dist/api/status-rollup-build.js +30 -3
  50. package/dist/api/status-rollup-build.js.map +1 -1
  51. package/dist/bin/jinn-mcp.d.ts +0 -12
  52. package/dist/bin/jinn-mcp.js +5 -14
  53. package/dist/bin/jinn-mcp.js.map +1 -1
  54. package/dist/build-meta.json +1 -1
  55. package/dist/cli/commands/auth.js +137 -25
  56. package/dist/cli/commands/auth.js.map +1 -1
  57. package/dist/cli/commands/balance.js +8 -1
  58. package/dist/cli/commands/balance.js.map +1 -1
  59. package/dist/cli/commands/bootstrap.js +23 -0
  60. package/dist/cli/commands/bootstrap.js.map +1 -1
  61. package/dist/cli/commands/doctor.js +160 -14
  62. package/dist/cli/commands/doctor.js.map +1 -1
  63. package/dist/cli/commands/fleet-scale.js +1 -0
  64. package/dist/cli/commands/fleet-scale.js.map +1 -1
  65. package/dist/cli/commands/fleet.js +10 -1
  66. package/dist/cli/commands/fleet.js.map +1 -1
  67. package/dist/cli/commands/fund-requirements.js +2 -0
  68. package/dist/cli/commands/fund-requirements.js.map +1 -1
  69. package/dist/cli/commands/history.js +25 -6
  70. package/dist/cli/commands/history.js.map +1 -1
  71. package/dist/cli/commands/intents.d.ts +17 -0
  72. package/dist/cli/commands/intents.js +489 -0
  73. package/dist/cli/commands/intents.js.map +1 -0
  74. package/dist/cli/commands/keys-backup.js +13 -11
  75. package/dist/cli/commands/keys-backup.js.map +1 -1
  76. package/dist/cli/commands/logs.js +35 -11
  77. package/dist/cli/commands/logs.js.map +1 -1
  78. package/dist/cli/commands/mcp.d.ts +3 -0
  79. package/dist/cli/commands/mcp.js +19 -0
  80. package/dist/cli/commands/mcp.js.map +1 -0
  81. package/dist/cli/commands/plugin-install.js +8 -4
  82. package/dist/cli/commands/plugin-install.js.map +1 -1
  83. package/dist/cli/commands/quickstart.js +99 -5
  84. package/dist/cli/commands/quickstart.js.map +1 -1
  85. package/dist/cli/commands/rewards.js +27 -1
  86. package/dist/cli/commands/rewards.js.map +1 -1
  87. package/dist/cli/commands/run.js +38 -0
  88. package/dist/cli/commands/run.js.map +1 -1
  89. package/dist/cli/commands/status.js +11 -1
  90. package/dist/cli/commands/status.js.map +1 -1
  91. package/dist/cli/commands/submit-intent.js +110 -44
  92. package/dist/cli/commands/submit-intent.js.map +1 -1
  93. package/dist/cli/commands/version.js +1 -0
  94. package/dist/cli/commands/version.js.map +1 -1
  95. package/dist/cli/deployment-digest.js +5 -0
  96. package/dist/cli/deployment-digest.js.map +1 -1
  97. package/dist/cli/execution-context.js +1 -0
  98. package/dist/cli/execution-context.js.map +1 -1
  99. package/dist/cli/index.js +4 -0
  100. package/dist/cli/index.js.map +1 -1
  101. package/dist/cli/intent-registry-access.d.ts +62 -0
  102. package/dist/cli/intent-registry-access.js +165 -0
  103. package/dist/cli/intent-registry-access.js.map +1 -0
  104. package/dist/cli/introspection-context.js +12 -8
  105. package/dist/cli/introspection-context.js.map +1 -1
  106. package/dist/cli/password.d.ts +21 -9
  107. package/dist/cli/password.js +45 -24
  108. package/dist/cli/password.js.map +1 -1
  109. package/dist/config.d.ts +137 -8
  110. package/dist/config.js +70 -12
  111. package/dist/config.js.map +1 -1
  112. package/dist/daemon/balance-topup-loop.js +32 -4
  113. package/dist/daemon/balance-topup-loop.js.map +1 -1
  114. package/dist/daemon/creator.d.ts +7 -4
  115. package/dist/daemon/creator.js +55 -26
  116. package/dist/daemon/creator.js.map +1 -1
  117. package/dist/daemon/daemon.d.ts +35 -3
  118. package/dist/daemon/daemon.js +99 -7
  119. package/dist/daemon/daemon.js.map +1 -1
  120. package/dist/daemon/delivery-watcher.d.ts +3 -1
  121. package/dist/daemon/delivery-watcher.js +19 -1
  122. package/dist/daemon/delivery-watcher.js.map +1 -1
  123. package/dist/daemon/reward-claim-loop.js +38 -1
  124. package/dist/daemon/reward-claim-loop.js.map +1 -1
  125. package/dist/dashboard/index.html +71 -496
  126. package/dist/discovery/registry.d.ts +54 -0
  127. package/dist/discovery/registry.js +73 -0
  128. package/dist/discovery/registry.js.map +1 -1
  129. package/dist/earning/bootstrap.d.ts +2 -1
  130. package/dist/earning/bootstrap.js +71 -33
  131. package/dist/earning/bootstrap.js.map +1 -1
  132. package/dist/earning/contracts.d.ts +10 -0
  133. package/dist/earning/contracts.js +24 -0
  134. package/dist/earning/contracts.js.map +1 -1
  135. package/dist/earning/jinn-rewards.d.ts +9 -0
  136. package/dist/earning/jinn-rewards.js +7 -0
  137. package/dist/earning/jinn-rewards.js.map +1 -1
  138. package/dist/earning/stolas-claim.d.ts +6 -0
  139. package/dist/earning/stolas-claim.js +7 -0
  140. package/dist/earning/stolas-claim.js.map +1 -1
  141. package/dist/intents/kinds/constants.d.ts +5 -0
  142. package/dist/intents/kinds/constants.js +6 -0
  143. package/dist/intents/kinds/constants.js.map +1 -0
  144. package/dist/intents/kinds/index.d.ts +28 -0
  145. package/dist/intents/kinds/index.js +50 -0
  146. package/dist/intents/kinds/index.js.map +1 -0
  147. package/dist/intents/kinds/portfolio-v0.d.ts +2 -0
  148. package/dist/intents/kinds/portfolio-v0.js +13 -0
  149. package/dist/intents/kinds/portfolio-v0.js.map +1 -0
  150. package/dist/intents/kinds/prediction-apy-v0.d.ts +3 -0
  151. package/dist/intents/kinds/prediction-apy-v0.js +21 -0
  152. package/dist/intents/kinds/prediction-apy-v0.js.map +1 -0
  153. package/dist/intents/kinds/prediction-v0.d.ts +3 -0
  154. package/dist/intents/kinds/prediction-v0.js +32 -0
  155. package/dist/intents/kinds/prediction-v0.js.map +1 -0
  156. package/dist/intents/kinds/spec-kind.d.ts +38 -0
  157. package/dist/intents/kinds/spec-kind.js +6 -0
  158. package/dist/intents/kinds/spec-kind.js.map +1 -0
  159. package/dist/intents/posting-service.d.ts +26 -0
  160. package/dist/intents/posting-service.js +218 -0
  161. package/dist/intents/posting-service.js.map +1 -0
  162. package/dist/intents/prediction-apy-v0-auto.d.ts +11 -0
  163. package/dist/intents/prediction-apy-v0-auto.js +46 -0
  164. package/dist/intents/prediction-apy-v0-auto.js.map +1 -0
  165. package/dist/intents/prediction-apy-v0-template.d.ts +8 -0
  166. package/dist/intents/prediction-apy-v0-template.js +22 -0
  167. package/dist/intents/prediction-apy-v0-template.js.map +1 -0
  168. package/dist/intents/prediction-v0-auto.d.ts +53 -0
  169. package/dist/intents/prediction-v0-auto.js +84 -0
  170. package/dist/intents/prediction-v0-auto.js.map +1 -0
  171. package/dist/intents/prediction-v0-template.d.ts +70 -0
  172. package/dist/intents/prediction-v0-template.js +145 -0
  173. package/dist/intents/prediction-v0-template.js.map +1 -0
  174. package/dist/intents/sources.d.ts +39 -0
  175. package/dist/intents/sources.js +42 -0
  176. package/dist/intents/sources.js.map +1 -0
  177. package/dist/main.js +175 -3
  178. package/dist/main.js.map +1 -1
  179. package/dist/mcp/operator-server.d.ts +1 -1
  180. package/dist/mcp/operator-server.js +1 -1
  181. package/dist/mcp/server.js +8 -4
  182. package/dist/mcp/server.js.map +1 -1
  183. package/dist/observability/emit-event.d.ts +12 -0
  184. package/dist/observability/emit-event.js +27 -0
  185. package/dist/observability/emit-event.js.map +1 -0
  186. package/dist/preflight/api-port.d.ts +13 -0
  187. package/dist/preflight/api-port.js +32 -0
  188. package/dist/preflight/api-port.js.map +1 -0
  189. package/dist/preflight/claude-auth.d.ts +12 -1
  190. package/dist/preflight/claude-auth.js +21 -3
  191. package/dist/preflight/claude-auth.js.map +1 -1
  192. package/dist/preflight/rpc-network.d.ts +44 -0
  193. package/dist/preflight/rpc-network.js +121 -0
  194. package/dist/preflight/rpc-network.js.map +1 -0
  195. package/dist/restorer/engine/canonical-json.d.ts +18 -0
  196. package/dist/restorer/engine/canonical-json.js +59 -0
  197. package/dist/restorer/engine/canonical-json.js.map +1 -0
  198. package/dist/restorer/engine/claim.d.ts +69 -0
  199. package/dist/restorer/engine/claim.js +104 -0
  200. package/dist/restorer/engine/claim.js.map +1 -0
  201. package/dist/restorer/engine/delivery.d.ts +52 -0
  202. package/dist/restorer/engine/delivery.js +63 -0
  203. package/dist/restorer/engine/delivery.js.map +1 -0
  204. package/dist/restorer/engine/engine.d.ts +213 -0
  205. package/dist/restorer/engine/engine.js +769 -0
  206. package/dist/restorer/engine/engine.js.map +1 -0
  207. package/dist/restorer/engine/manifest-assembly.d.ts +67 -0
  208. package/dist/restorer/engine/manifest-assembly.js +79 -0
  209. package/dist/restorer/engine/manifest-assembly.js.map +1 -0
  210. package/dist/restorer/engine/packaging.d.ts +87 -0
  211. package/dist/restorer/engine/packaging.js +350 -0
  212. package/dist/restorer/engine/packaging.js.map +1 -0
  213. package/dist/restorer/engine/persistence.d.ts +170 -0
  214. package/dist/restorer/engine/persistence.js +381 -0
  215. package/dist/restorer/engine/persistence.js.map +1 -0
  216. package/dist/restorer/engine/recovery.d.ts +22 -0
  217. package/dist/restorer/engine/recovery.js +24 -0
  218. package/dist/restorer/engine/recovery.js.map +1 -0
  219. package/dist/restorer/engine/registry.d.ts +62 -0
  220. package/dist/restorer/engine/registry.js +73 -0
  221. package/dist/restorer/engine/registry.js.map +1 -0
  222. package/dist/restorer/engine/signing.d.ts +30 -0
  223. package/dist/restorer/engine/signing.js +39 -0
  224. package/dist/restorer/engine/signing.js.map +1 -0
  225. package/dist/restorer/engine/state.d.ts +42 -0
  226. package/dist/restorer/engine/state.js +87 -0
  227. package/dist/restorer/engine/state.js.map +1 -0
  228. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
  229. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js +96 -0
  230. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  231. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +104 -0
  232. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +721 -0
  233. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  234. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +137 -0
  235. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js +865 -0
  236. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  237. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.d.ts +74 -0
  238. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js +74 -0
  239. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  240. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +97 -0
  241. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +226 -0
  242. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  243. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +44 -0
  244. package/dist/restorer/impls/claude-mcp-prediction/index.js +239 -0
  245. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -0
  246. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.d.ts +38 -0
  247. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +135 -0
  248. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
  249. package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +8 -0
  250. package/dist/restorer/impls/claude-mcp-prediction/prompt.js +54 -0
  251. package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +1 -0
  252. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +36 -0
  253. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +137 -0
  254. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
  255. package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +84 -0
  256. package/dist/restorer/impls/claude-mcp-prediction/types.js +6 -0
  257. package/dist/restorer/impls/claude-mcp-prediction/types.js.map +1 -0
  258. package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +34 -0
  259. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +233 -0
  260. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +1 -0
  261. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +18 -0
  262. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js +136 -0
  263. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
  264. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
  265. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js +46 -0
  266. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
  267. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +27 -0
  268. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +128 -0
  269. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
  270. package/dist/restorer/impls/claude-mcp-prediction-apy/types.d.ts +64 -0
  271. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +6 -0
  272. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +1 -0
  273. package/dist/restorer/impls/evaluation-context.d.ts +16 -0
  274. package/dist/restorer/impls/evaluation-context.js +18 -0
  275. package/dist/restorer/impls/evaluation-context.js.map +1 -0
  276. package/dist/restorer/impls/index.d.ts +46 -0
  277. package/dist/restorer/impls/index.js +88 -0
  278. package/dist/restorer/impls/index.js.map +1 -0
  279. package/dist/restorer/impls/legacy-claude/index.d.ts +52 -0
  280. package/dist/restorer/impls/legacy-claude/index.js +140 -0
  281. package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
  282. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  283. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  284. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  285. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
  286. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
  287. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  288. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  289. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  290. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  291. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  292. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  293. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  294. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  295. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  296. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  297. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  298. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  299. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  300. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +44 -0
  301. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +440 -0
  302. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
  303. package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
  304. package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
  305. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
  306. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +34 -0
  307. package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
  308. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
  309. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +40 -0
  310. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +107 -0
  311. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -0
  312. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.d.ts +2 -0
  313. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js +7 -0
  314. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
  315. package/dist/restorer/impls/prediction-apy-v0-baseline/types.d.ts +4 -0
  316. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js +2 -0
  317. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +1 -0
  318. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
  319. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
  320. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
  321. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +42 -0
  322. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +208 -0
  323. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
  324. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +7 -0
  325. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +29 -0
  326. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
  327. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.d.ts +9 -0
  328. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js +20 -0
  329. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
  330. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.d.ts +7 -0
  331. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js +2 -0
  332. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
  333. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +31 -0
  334. package/dist/restorer/impls/prediction-v0-baseline/index.js +100 -0
  335. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
  336. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  337. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
  338. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
  339. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
  340. package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
  341. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
  342. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  343. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
  344. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  345. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  346. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
  347. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  348. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  349. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
  350. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  351. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +13 -0
  352. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +111 -0
  353. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  354. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  355. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
  356. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  357. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +36 -0
  358. package/dist/restorer/impls/prediction-v0-evaluator/index.js +234 -0
  359. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
  360. package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
  361. package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
  362. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
  363. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
  364. package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
  365. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
  366. package/dist/restorer/types.d.ts +194 -0
  367. package/dist/restorer/types.js +28 -0
  368. package/dist/restorer/types.js.map +1 -0
  369. package/dist/rpc-error-context.d.ts +10 -0
  370. package/dist/rpc-error-context.js +26 -0
  371. package/dist/rpc-error-context.js.map +1 -0
  372. package/dist/store/store.d.ts +101 -1
  373. package/dist/store/store.js +334 -4
  374. package/dist/store/store.js.map +1 -1
  375. package/dist/trajectory/schema.d.ts +510 -0
  376. package/dist/trajectory/schema.js +74 -0
  377. package/dist/trajectory/schema.js.map +1 -0
  378. package/dist/types/desired-state.d.ts +53 -0
  379. package/dist/types/desired-state.js +20 -0
  380. package/dist/types/desired-state.js.map +1 -1
  381. package/dist/types/index.d.ts +4 -1
  382. package/dist/types/index.js +4 -1
  383. package/dist/types/index.js.map +1 -1
  384. package/dist/types/portfolio.d.ts +1000 -0
  385. package/dist/types/portfolio.js +168 -0
  386. package/dist/types/portfolio.js.map +1 -0
  387. package/dist/types/prediction-apy.d.ts +930 -0
  388. package/dist/types/prediction-apy.js +133 -0
  389. package/dist/types/prediction-apy.js.map +1 -0
  390. package/dist/types/prediction.d.ts +926 -0
  391. package/dist/types/prediction.js +141 -0
  392. package/dist/types/prediction.js.map +1 -0
  393. package/dist/venues/aave-v3/addresses.d.ts +6 -0
  394. package/dist/venues/aave-v3/addresses.js +19 -0
  395. package/dist/venues/aave-v3/addresses.js.map +1 -0
  396. package/dist/venues/aave-v3/client.d.ts +85 -0
  397. package/dist/venues/aave-v3/client.js +106 -0
  398. package/dist/venues/aave-v3/client.js.map +1 -0
  399. package/dist/venues/chainlink/client.d.ts +99 -0
  400. package/dist/venues/chainlink/client.js +130 -0
  401. package/dist/venues/chainlink/client.js.map +1 -0
  402. package/dist/venues/chainlink/feeds.d.ts +8 -0
  403. package/dist/venues/chainlink/feeds.js +9 -0
  404. package/dist/venues/chainlink/feeds.js.map +1 -0
  405. package/dist/venues/hyperliquid/account-value.d.ts +30 -0
  406. package/dist/venues/hyperliquid/account-value.js +30 -0
  407. package/dist/venues/hyperliquid/account-value.js.map +1 -0
  408. package/dist/venues/hyperliquid/client.d.ts +63 -0
  409. package/dist/venues/hyperliquid/client.js +135 -0
  410. package/dist/venues/hyperliquid/client.js.map +1 -0
  411. package/dist/venues/hyperliquid/grid.d.ts +36 -0
  412. package/dist/venues/hyperliquid/grid.js +61 -0
  413. package/dist/venues/hyperliquid/grid.js.map +1 -0
  414. package/dist/venues/hyperliquid/types.d.ts +81 -0
  415. package/dist/venues/hyperliquid/types.js +8 -0
  416. package/dist/venues/hyperliquid/types.js.map +1 -0
  417. package/dist/withdraw/run-withdraw-plan.js +2 -0
  418. package/dist/withdraw/run-withdraw-plan.js.map +1 -1
  419. package/docker-compose.yml +44 -0
  420. package/package.json +15 -3
  421. package/skills/jinn-operator/SKILL.md +85 -0
  422. package/dist/daemon/restorer.d.ts +0 -19
  423. package/dist/daemon/restorer.js +0 -82
  424. package/dist/daemon/restorer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gather-status.js","sourceRoot":"","sources":["../../src/api/gather-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gather-status.js","sourceRoot":"","sources":["../../src/api/gather-status.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { GatheredStatusRaw } from './status-build.js';
7
7
  type EventKind = 'intent_posted' | 'request_claimed' | 'delivery_submitted' | 'evaluation_submitted' | 'reward_claimed' | 'other';
8
+ type ActivitySourceRow = GatheredStatusRaw['recentActivity'][number];
8
9
  export interface HistoryEvent {
9
10
  id: string;
10
11
  at: string;
@@ -28,5 +29,8 @@ export interface HistoryOptions {
28
29
  since?: string;
29
30
  cursor?: string;
30
31
  }
31
- export declare function assembleHistoryV1(raw: GatheredStatusRaw, opts: HistoryOptions): HistoryV1Response;
32
+ /**
33
+ * @param activityFromStore When set (e.g. from `jinn history`), pre-filtered rows with correct limit/cursor; {@link opts} filter fields are not re-applied.
34
+ */
35
+ export declare function assembleHistoryV1(raw: GatheredStatusRaw, opts: HistoryOptions, activityFromStore?: ActivitySourceRow[]): HistoryV1Response;
32
36
  export {};
@@ -3,39 +3,64 @@
3
3
  *
4
4
  * Contract: spec/2026-04-14-client-surface.md §4.4.
5
5
  */
6
- /** own_activity roles → spec §3.3 event kinds */
7
- const ROLE_TO_KIND = {
8
- created: 'intent_posted',
9
- claimed: 'request_claimed',
10
- delivered: 'delivery_submitted',
11
- evaluated: 'evaluation_submitted',
12
- };
13
- const REF_MS = Date.UTC(2026, 3, 14, 12, 0, 0);
14
- function syntheticAt(i) {
15
- return new Date(REF_MS - i * 60 * 60 * 1000).toISOString();
6
+ function toEventKind(kind) {
7
+ switch (kind) {
8
+ case 'created':
9
+ return 'intent_posted';
10
+ case 'claimed':
11
+ return 'request_claimed';
12
+ case 'delivered':
13
+ return 'delivery_submitted';
14
+ case 'evaluated':
15
+ return 'evaluation_submitted';
16
+ case 'intent_posted':
17
+ case 'request_claimed':
18
+ case 'delivery_submitted':
19
+ case 'evaluation_submitted':
20
+ case 'reward_claimed':
21
+ return kind;
22
+ default:
23
+ return 'other';
24
+ }
16
25
  }
17
- export function assembleHistoryV1(raw, opts) {
26
+ /**
27
+ * @param activityFromStore When set (e.g. from `jinn history`), pre-filtered rows with correct limit/cursor; {@link opts} filter fields are not re-applied.
28
+ */
29
+ export function assembleHistoryV1(raw, opts, activityFromStore) {
18
30
  const limit = Math.min(Math.max(opts.limit, 1), 500);
19
31
  const generatedAt = new Date().toISOString();
20
- let rows = raw.recentActivity.map((e, i) => ({
21
- ...e,
22
- at: syntheticAt(i),
23
- }));
24
- if (opts.since) {
25
- const sinceTs = new Date(opts.since).getTime();
26
- rows = rows.filter(e => !Number.isNaN(sinceTs) && new Date(e.at).getTime() >= sinceTs);
32
+ let source;
33
+ if (activityFromStore) {
34
+ source = activityFromStore;
35
+ }
36
+ else {
37
+ let rows = raw.recentActivity;
38
+ if (opts.since) {
39
+ const sinceTs = new Date(opts.since).getTime();
40
+ rows = rows.filter((e) => e.ts != null
41
+ && !Number.isNaN(sinceTs)
42
+ && new Date(e.ts).getTime() >= sinceTs);
43
+ }
44
+ if (opts.cursor) {
45
+ const cursorTs = new Date(opts.cursor).getTime();
46
+ rows = rows.filter((e) => e.ts != null
47
+ && !Number.isNaN(cursorTs)
48
+ && new Date(e.ts).getTime() < cursorTs);
49
+ }
50
+ source = rows;
27
51
  }
28
- const events = rows.slice(0, limit).map((e, i) => {
29
- const kind = ROLE_TO_KIND[e.role] ?? 'other';
52
+ const withTs = source.filter((e) => e.ts != null);
53
+ const events = withTs.slice(0, limit).map((e, i) => {
54
+ const kind = toEventKind(e.kind);
30
55
  return {
31
- id: `evt_${String(i).padStart(5, '0')}`,
32
- at: e.at,
33
- serviceIndex: 0,
56
+ id: `evt_${String(e.id ?? i).padStart(5, '0')}`,
57
+ at: e.ts,
58
+ serviceIndex: e.serviceIndex ?? 0,
34
59
  kind,
35
- ...(kind === 'other' ? { subkind: e.role } : {}),
60
+ ...(kind === 'other' ? { subkind: e.kind } : {}),
36
61
  intentId: e.requestId ?? null,
37
- txHash: null,
38
- outcome: 'ok',
62
+ txHash: e.txHash ?? null,
63
+ outcome: e.outcome === 'failed' ? 'failed' : 'ok',
39
64
  };
40
65
  });
41
66
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"history-build.js","sourceRoot":"","sources":["../../src/api/history-build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoCH,iDAAiD;AACjD,MAAM,YAAY,GAA8B;IAC9C,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,iBAAiB;IAC1B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,sBAAsB;CAClC,CAAC;AAEF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/C,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAsB,EAAE,IAAoB;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,IAAI,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC;QACJ,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;KACnB,CAAC,CAAC,CAAC;IAEJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,MAAM,GAAmB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QAC7C,OAAO;YACL,EAAE,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,YAAY,EAAE,CAAC;YACf,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,QAAQ,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAa;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,WAAW;QACX,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;QAChF,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"history-build.js","sourceRoot":"","sources":["../../src/api/history-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * portfolio.v0 dashboard data assembly (§10 step 8 of spec/2026-04-17-portfolio-v0-design.md).
3
+ *
4
+ * Collects in-flight restoration intents, recent verdicts (COMPLETE / FAILED
5
+ * terminal intents), and recent system_snapshot artifacts for the /v1/status
6
+ * response under the `portfolioV0` key.
7
+ *
8
+ * Designed to be called from gather-status.ts with the Store instance. Does not
9
+ * hit the network — all data comes from SQLite.
10
+ */
11
+ import type { Store } from '../store/store.js';
12
+ /** Default per-intent engine work root; kept in sync with `config.engine.workingDirRoot`. */
13
+ export declare const DEFAULT_ENGINE_WORKING_DIR_ROOT: string;
14
+ export interface InFlightIntentSummary {
15
+ requestId: string;
16
+ state: string;
17
+ specKind: string | null;
18
+ implName: string | null;
19
+ windowStartTs: number;
20
+ windowEndTs: number;
21
+ /** Unix ms when the state was last updated. */
22
+ stateUpdatedAt: number;
23
+ lastError: string | null;
24
+ }
25
+ export interface VerdictSummary {
26
+ requestId: string;
27
+ state: 'COMPLETE' | 'FAILED';
28
+ implName: string | null;
29
+ specKind: string | null;
30
+ windowStartTs: number;
31
+ windowEndTs: number;
32
+ stateUpdatedAt: number;
33
+ failureReason: string | null;
34
+ manifestCid: string | null;
35
+ deliveryTxHash: string | null;
36
+ }
37
+ export interface SnapshotSummary {
38
+ id: string;
39
+ requestId: string;
40
+ title: string;
41
+ outcome: string;
42
+ createdAt: string;
43
+ }
44
+ export interface ClaudeOutcomeSummary {
45
+ requestId: string;
46
+ sessionId: string;
47
+ startedAt: number;
48
+ endedAt: number;
49
+ durationMs: number;
50
+ aborted: boolean;
51
+ /**
52
+ * Count of HL fills that occurred during the session's window (±5s padding).
53
+ * Authoritative measure of whether Claude actually traded — sourced from
54
+ * HL's userFillsByTime, not the in-process tool-call counter (which lives
55
+ * in the daemon process while actual trades happen in the MCP subprocess).
56
+ */
57
+ fillsInSessionWindow: number;
58
+ /** Per-coin fill counts for the session window (e.g., {"ETH": 4, "BTC": 2}). */
59
+ coinCounts: Record<string, number>;
60
+ /** Present only if the HL fills query failed — outcome still usable for timing. */
61
+ fillsQueryError?: string;
62
+ }
63
+ export interface PortfolioV0Status {
64
+ /** Intents currently being processed (not in a terminal state). */
65
+ inFlight: InFlightIntentSummary[];
66
+ /** Last N completed or failed intents — most recent first. */
67
+ recentVerdicts: VerdictSummary[];
68
+ /** Recent system_snapshot artifacts from the store — most recent first. */
69
+ recentSnapshots: SnapshotSummary[];
70
+ /**
71
+ * Last N Claude session outcomes (per-session telemetry). Populated
72
+ * in-flight: each session writes `outcome.json` to its working dir as
73
+ * soon as it exits, so operators can observe trading activity without
74
+ * waiting for the window to close.
75
+ */
76
+ recentClaudeOutcomes: ClaudeOutcomeSummary[];
77
+ }
78
+ /**
79
+ * Gather portfolio.v0 dashboard data from SQLite. Safe to call even when the
80
+ * restoration_intents table does not exist yet (table created on first Store
81
+ * construction, so this is always present when the daemon is running).
82
+ */
83
+ export declare function gatherPortfolioV0Status(store: Store, workingDirRoot?: string): PortfolioV0Status;
@@ -0,0 +1,143 @@
1
+ /**
2
+ * portfolio.v0 dashboard data assembly (§10 step 8 of spec/2026-04-17-portfolio-v0-design.md).
3
+ *
4
+ * Collects in-flight restoration intents, recent verdicts (COMPLETE / FAILED
5
+ * terminal intents), and recent system_snapshot artifacts for the /v1/status
6
+ * response under the `portfolioV0` key.
7
+ *
8
+ * Designed to be called from gather-status.ts with the Store instance. Does not
9
+ * hit the network — all data comes from SQLite.
10
+ */
11
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
12
+ import { homedir } from 'node:os';
13
+ import { join } from 'node:path';
14
+ import { IntentPersistence } from '../restorer/engine/persistence.js';
15
+ /** Default per-intent engine work root; kept in sync with `config.engine.workingDirRoot`. */
16
+ export const DEFAULT_ENGINE_WORKING_DIR_ROOT = join(homedir(), '.jinn-client', 'engine', 'work');
17
+ const RECENT_CLAUDE_OUTCOMES_LIMIT = 10;
18
+ // ── Internal helpers ──────────────────────────────────────────────────────────
19
+ const RECENT_VERDICTS_LIMIT = 10;
20
+ const RECENT_SNAPSHOTS_LIMIT = 5;
21
+ function toInFlight(intent) {
22
+ return {
23
+ requestId: intent.requestId,
24
+ state: intent.state,
25
+ specKind: intent.specKind,
26
+ implName: intent.implName,
27
+ windowStartTs: intent.windowStartTs,
28
+ windowEndTs: intent.windowEndTs,
29
+ stateUpdatedAt: intent.stateUpdatedAt,
30
+ lastError: intent.failureReason,
31
+ };
32
+ }
33
+ function toVerdict(intent) {
34
+ return {
35
+ requestId: intent.requestId,
36
+ state: intent.state,
37
+ implName: intent.implName,
38
+ specKind: intent.specKind,
39
+ windowStartTs: intent.windowStartTs,
40
+ windowEndTs: intent.windowEndTs,
41
+ stateUpdatedAt: intent.stateUpdatedAt,
42
+ failureReason: intent.failureReason,
43
+ manifestCid: intent.manifestCid,
44
+ deliveryTxHash: intent.deliveryTxHash,
45
+ };
46
+ }
47
+ // ── Public API ────────────────────────────────────────────────────────────────
48
+ /**
49
+ * Gather portfolio.v0 dashboard data from SQLite. Safe to call even when the
50
+ * restoration_intents table does not exist yet (table created on first Store
51
+ * construction, so this is always present when the daemon is running).
52
+ */
53
+ export function gatherPortfolioV0Status(store, workingDirRoot = DEFAULT_ENGINE_WORKING_DIR_ROOT) {
54
+ const persistence = new IntentPersistence(store.db);
55
+ // In-flight: all non-terminal intents
56
+ const inFlight = persistence.getInFlight().map(toInFlight);
57
+ // Recent verdicts: last N COMPLETE + FAILED intents combined, newest first
58
+ const complete = persistence.getByState('COMPLETE');
59
+ const failed = persistence.getByState('FAILED');
60
+ const allTerminal = [...complete, ...failed].sort((a, b) => b.stateUpdatedAt - a.stateUpdatedAt);
61
+ const recentVerdicts = allTerminal.slice(0, RECENT_VERDICTS_LIMIT).map(toVerdict);
62
+ // Recent system_snapshot artifacts (tagged with 'system_snapshot')
63
+ let recentSnapshots = [];
64
+ try {
65
+ const snapshotArtifacts = store.searchArtifacts({
66
+ tags: ['system_snapshot'],
67
+ limit: RECENT_SNAPSHOTS_LIMIT,
68
+ });
69
+ recentSnapshots = snapshotArtifacts.map((a) => ({
70
+ id: a.id,
71
+ requestId: a.request_id,
72
+ title: a.title,
73
+ outcome: a.outcome,
74
+ createdAt: a.created_at,
75
+ }));
76
+ }
77
+ catch {
78
+ // searchArtifacts should never throw, but guard defensively
79
+ recentSnapshots = [];
80
+ }
81
+ const recentClaudeOutcomes = gatherRecentClaudeOutcomes(workingDirRoot);
82
+ return { inFlight, recentVerdicts, recentSnapshots, recentClaudeOutcomes };
83
+ }
84
+ /**
85
+ * Scan session outcome files: each intent dir under `workingDirRoot` may contain
86
+ * `sessions/<id>/outcome.json`. Return the most recent N. Swallows all filesystem
87
+ * errors so a missing or malformed working dir never breaks the status endpoint.
88
+ */
89
+ function gatherRecentClaudeOutcomes(workingDirRoot) {
90
+ if (!existsSync(workingDirRoot))
91
+ return [];
92
+ const outcomes = [];
93
+ let intentDirs;
94
+ try {
95
+ intentDirs = readdirSync(workingDirRoot);
96
+ }
97
+ catch {
98
+ return [];
99
+ }
100
+ for (const intentDir of intentDirs) {
101
+ const sessionsDir = join(workingDirRoot, intentDir, 'sessions');
102
+ if (!existsSync(sessionsDir))
103
+ continue;
104
+ let sessionDirs;
105
+ try {
106
+ sessionDirs = readdirSync(sessionsDir);
107
+ }
108
+ catch {
109
+ continue;
110
+ }
111
+ for (const sessionDir of sessionDirs) {
112
+ const outcomePath = join(sessionsDir, sessionDir, 'outcome.json');
113
+ if (!existsSync(outcomePath))
114
+ continue;
115
+ try {
116
+ const raw = readFileSync(outcomePath, 'utf-8');
117
+ const parsed = JSON.parse(raw);
118
+ if (typeof parsed.requestId === 'string' &&
119
+ typeof parsed.sessionId === 'string' &&
120
+ typeof parsed.startedAt === 'number' &&
121
+ typeof parsed.endedAt === 'number') {
122
+ outcomes.push({
123
+ requestId: parsed.requestId,
124
+ sessionId: parsed.sessionId,
125
+ startedAt: parsed.startedAt,
126
+ endedAt: parsed.endedAt,
127
+ durationMs: parsed.durationMs ?? (parsed.endedAt - parsed.startedAt),
128
+ aborted: parsed.aborted ?? false,
129
+ fillsInSessionWindow: parsed.fillsInSessionWindow ?? 0,
130
+ coinCounts: parsed.coinCounts ?? {},
131
+ ...(parsed.fillsQueryError !== undefined ? { fillsQueryError: parsed.fillsQueryError } : {}),
132
+ });
133
+ }
134
+ }
135
+ catch {
136
+ // Malformed outcome file — skip.
137
+ }
138
+ }
139
+ }
140
+ outcomes.sort((a, b) => b.endedAt - a.endedAt);
141
+ return outcomes.slice(0, RECENT_CLAUDE_OUTCOMES_LIMIT);
142
+ }
143
+ //# sourceMappingURL=portfolio-v0-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio-v0-build.js","sourceRoot":"","sources":["../../src/api/portfolio-v0-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * portfolio.v0 doctor checks (§10 step 8 of spec/2026-04-17-portfolio-v0-design.md).
3
+ *
4
+ * Returns structured check results without hitting the network — all checks are
5
+ * local filesystem reads. Each check is safe to call independently.
6
+ *
7
+ * Note: The HL master account deposit check (verifying on-chain deposit via HL
8
+ * API) is intentionally skipped in v0 — it would require an external network
9
+ * call with no existing client dependency. Operators should verify the deposit
10
+ * manually via the Hyperliquid UI.
11
+ */
12
+ export interface DoctorCheckResult {
13
+ name: string;
14
+ ok: boolean;
15
+ detail: string;
16
+ remedy?: string;
17
+ }
18
+ /**
19
+ * Check that the implStateDir for the HL impl is accessible and looks healthy.
20
+ *
21
+ * @param implStateDir - path to the impl state directory (e.g. ~/.jinn-client/impl/claude-mcp-hyperliquid)
22
+ */
23
+ export declare function checkImplStateDir(implStateDir: string | undefined): DoctorCheckResult;
24
+ /**
25
+ * Check that an HL API wallet is present in implStateDir and whether it has
26
+ * been approved by the operator.
27
+ *
28
+ * Returns ok=true even when not yet approved (that is an operator action, not
29
+ * a system error) — the detail string makes the status clear.
30
+ */
31
+ export declare function checkHlApiWallet(implStateDir: string | undefined): DoctorCheckResult;
32
+ /**
33
+ * Run all portfolio.v0 doctor checks given an optional implStateDir.
34
+ * Safe to call even when HL impl is not configured — checks gracefully handle
35
+ * the undefined case.
36
+ */
37
+ export declare function runPortfolioV0DoctorChecks(implStateDir: string | undefined): DoctorCheckResult[];
@@ -0,0 +1,123 @@
1
+ /**
2
+ * portfolio.v0 doctor checks (§10 step 8 of spec/2026-04-17-portfolio-v0-design.md).
3
+ *
4
+ * Returns structured check results without hitting the network — all checks are
5
+ * local filesystem reads. Each check is safe to call independently.
6
+ *
7
+ * Note: The HL master account deposit check (verifying on-chain deposit via HL
8
+ * API) is intentionally skipped in v0 — it would require an external network
9
+ * call with no existing client dependency. Operators should verify the deposit
10
+ * manually via the Hyperliquid UI.
11
+ */
12
+ import { existsSync, statSync, accessSync, constants } from 'node:fs';
13
+ import { join } from 'node:path';
14
+ import { loadApiWalletState } from '../restorer/impls/claude-mcp-hyperliquid/api-wallet.js';
15
+ // ── Checks ────────────────────────────────────────────────────────────────────
16
+ /**
17
+ * Check that the implStateDir for the HL impl is accessible and looks healthy.
18
+ *
19
+ * @param implStateDir - path to the impl state directory (e.g. ~/.jinn-client/impl/claude-mcp-hyperliquid)
20
+ */
21
+ export function checkImplStateDir(implStateDir) {
22
+ if (!implStateDir) {
23
+ return {
24
+ name: 'portfolio_impl_state_dir',
25
+ ok: false,
26
+ detail: 'implStateDir not configured',
27
+ remedy: 'Set implStateDir in your config or pass --impl-state-dir to the daemon.',
28
+ };
29
+ }
30
+ if (!existsSync(implStateDir)) {
31
+ return {
32
+ name: 'portfolio_impl_state_dir',
33
+ ok: false,
34
+ detail: `directory does not exist: ${implStateDir}`,
35
+ remedy: 'Run the daemon at least once to initialise the impl state directory.',
36
+ };
37
+ }
38
+ try {
39
+ const stat = statSync(implStateDir);
40
+ if (!stat.isDirectory()) {
41
+ return {
42
+ name: 'portfolio_impl_state_dir',
43
+ ok: false,
44
+ detail: `path exists but is not a directory: ${implStateDir}`,
45
+ remedy: 'Remove the file at that path and let the daemon recreate the directory.',
46
+ };
47
+ }
48
+ accessSync(implStateDir, constants.R_OK);
49
+ }
50
+ catch (e) {
51
+ return {
52
+ name: 'portfolio_impl_state_dir',
53
+ ok: false,
54
+ detail: `directory not readable: ${e instanceof Error ? e.message : String(e)}`,
55
+ remedy: 'Check filesystem permissions on the impl state directory.',
56
+ };
57
+ }
58
+ return {
59
+ name: 'portfolio_impl_state_dir',
60
+ ok: true,
61
+ detail: `directory present and readable: ${implStateDir}`,
62
+ };
63
+ }
64
+ /**
65
+ * Check that an HL API wallet is present in implStateDir and whether it has
66
+ * been approved by the operator.
67
+ *
68
+ * Returns ok=true even when not yet approved (that is an operator action, not
69
+ * a system error) — the detail string makes the status clear.
70
+ */
71
+ export function checkHlApiWallet(implStateDir) {
72
+ if (!implStateDir) {
73
+ return {
74
+ name: 'hl_api_wallet',
75
+ ok: false,
76
+ detail: 'implStateDir not configured — cannot locate API wallet',
77
+ remedy: 'Configure implStateDir and run the daemon at least once.',
78
+ };
79
+ }
80
+ const walletPath = join(implStateDir, 'api-wallet.json');
81
+ if (!existsSync(walletPath)) {
82
+ return {
83
+ name: 'hl_api_wallet',
84
+ ok: false,
85
+ detail: 'api-wallet.json not found in implStateDir',
86
+ remedy: 'Run the daemon at least once so the API wallet is generated, then approve it via the HL UI.',
87
+ };
88
+ }
89
+ const state = loadApiWalletState(implStateDir);
90
+ if (!state) {
91
+ return {
92
+ name: 'hl_api_wallet',
93
+ ok: false,
94
+ detail: 'api-wallet.json exists but could not be parsed',
95
+ remedy: 'Inspect the file for corruption, or delete it and let the daemon regenerate it.',
96
+ };
97
+ }
98
+ if (!state.approved) {
99
+ return {
100
+ name: 'hl_api_wallet',
101
+ ok: false,
102
+ detail: `API wallet present but not approved — address: ${state.address}`,
103
+ remedy: 'Approve this address as an API wallet on your HL master account (Settings → API Wallets → Add).',
104
+ };
105
+ }
106
+ return {
107
+ name: 'hl_api_wallet',
108
+ ok: true,
109
+ detail: `API wallet present and approved — address: ${state.address}`,
110
+ };
111
+ }
112
+ /**
113
+ * Run all portfolio.v0 doctor checks given an optional implStateDir.
114
+ * Safe to call even when HL impl is not configured — checks gracefully handle
115
+ * the undefined case.
116
+ */
117
+ export function runPortfolioV0DoctorChecks(implStateDir) {
118
+ return [
119
+ checkImplStateDir(implStateDir),
120
+ checkHlApiWallet(implStateDir),
121
+ ];
122
+ }
123
+ //# sourceMappingURL=portfolio-v0-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio-v0-doctor.js","sourceRoot":"","sources":["../../src/api/portfolio-v0-doctor.ts"],"names":[],"mappings":"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"}
@@ -13,21 +13,37 @@ const STAKED_LIKE_STEPS = new Set([
13
13
  export function assembleRewardsV1(raw) {
14
14
  const total = raw.pendingStakingRewardsWei ?? '0';
15
15
  const list = raw.fleet?.services ?? [];
16
- const firstStakedIdx = list.findIndex(s => STAKED_LIKE_STEPS.has(s.step));
17
- const rewardIdx = firstStakedIdx >= 0 ? firstStakedIdx : 0;
18
- const services = list.map((svc, i) => {
16
+ const pendingByService = raw.pendingByService ?? {};
17
+ const claimedByService = raw.claimedByService ?? {};
18
+ const pendingByKeys = Object.keys(pendingByService);
19
+ let legacyPendingIndex = null;
20
+ if (pendingByKeys.length === 0 && list.length > 0) {
21
+ try {
22
+ if (total !== '0' && BigInt(total) > 0n) {
23
+ const s = list.find(svc => STAKED_LIKE_STEPS.has(svc.step)) ?? list[0];
24
+ if (s)
25
+ legacyPendingIndex = displayFleetServiceIndex(s);
26
+ }
27
+ }
28
+ catch {
29
+ /* ignore */
30
+ }
31
+ }
32
+ const services = list.map((svc) => {
33
+ const index = displayFleetServiceIndex(svc);
19
34
  const stakedLike = STAKED_LIKE_STEPS.has(svc.step);
20
- const pending = firstStakedIdx < 0
21
- ? i === 0
22
- ? total
23
- : '0'
24
- : stakedLike && i === rewardIdx
25
- ? total
26
- : '0';
35
+ const claimed = claimedByService[index]?.total ?? '0';
27
36
  return {
28
- index: displayFleetServiceIndex(svc),
29
- pending,
30
- claimed: '0',
37
+ index,
38
+ pending: stakedLike
39
+ ? (pendingByService[index] ??
40
+ (list.length === 1
41
+ ? total
42
+ : legacyPendingIndex === index
43
+ ? total
44
+ : '0'))
45
+ : '0',
46
+ claimed,
31
47
  asset: 'reward',
32
48
  };
33
49
  });
@@ -35,7 +51,7 @@ export function assembleRewardsV1(raw) {
35
51
  schemaVersion: 1,
36
52
  generatedAt: new Date().toISOString(),
37
53
  lastClaimAt: raw.lastRewardClaimTickAt,
38
- nextCheckpointAt: null,
54
+ nextCheckpointAt: raw.nextCheckpointAt ?? null,
39
55
  services,
40
56
  };
41
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rewards-build.js","sourceRoot":"","sources":["../../src/api/rewards-build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ;IACR,eAAe;IACf,UAAU;IACV,gBAAgB;CACjB,CAAC,CAAC;AAiBH,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC;IAClD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GACX,cAAc,GAAG,CAAC;YAChB,CAAC,CAAC,CAAC,KAAK,CAAC;gBACP,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,GAAG;YACP,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,SAAS;gBAC7B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,GAAG,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC;YACpC,OAAO;YACP,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,QAAiB;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW,EAAE,GAAG,CAAC,qBAAqB;QACtC,gBAAgB,EAAE,IAAI;QACtB,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rewards-build.js","sourceRoot":"","sources":["../../src/api/rewards-build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ;IACR,eAAe;IACf,UAAU;IACV,gBAAgB;CACjB,CAAC,CAAC;AAiBH,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC;IAClD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACpD,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAC7C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,IAAI,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvE,IAAI,CAAC;oBAAE,kBAAkB,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;QACtD,OAAO;YACL,KAAK;YACL,OAAO,EAAE,UAAU;gBACjB,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBACtB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;wBAChB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,kBAAkB,KAAK,KAAK;4BAC5B,CAAC,CAAC,KAAK;4BACP,CAAC,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,GAAG;YACP,OAAO;YACP,KAAK,EAAE,QAAiB;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW,EAAE,GAAG,CAAC,qBAAqB;QACtC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;QAC9C,QAAQ;KACT,CAAC;AACJ,CAAC"}