@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,141 @@
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 { join } from 'node:path';
13
+ import { IntentPersistence } from '../restorer/engine/persistence.js';
14
+ const WORKING_DIR_ROOT = '/tmp/jinn-engine-working';
15
+ const RECENT_CLAUDE_OUTCOMES_LIMIT = 10;
16
+ // ── Internal helpers ──────────────────────────────────────────────────────────
17
+ const RECENT_VERDICTS_LIMIT = 10;
18
+ const RECENT_SNAPSHOTS_LIMIT = 5;
19
+ function toInFlight(intent) {
20
+ return {
21
+ requestId: intent.requestId,
22
+ state: intent.state,
23
+ specKind: intent.specKind,
24
+ implName: intent.implName,
25
+ windowStartTs: intent.windowStartTs,
26
+ windowEndTs: intent.windowEndTs,
27
+ stateUpdatedAt: intent.stateUpdatedAt,
28
+ lastError: intent.failureReason,
29
+ };
30
+ }
31
+ function toVerdict(intent) {
32
+ return {
33
+ requestId: intent.requestId,
34
+ state: intent.state,
35
+ implName: intent.implName,
36
+ specKind: intent.specKind,
37
+ windowStartTs: intent.windowStartTs,
38
+ windowEndTs: intent.windowEndTs,
39
+ stateUpdatedAt: intent.stateUpdatedAt,
40
+ failureReason: intent.failureReason,
41
+ manifestCid: intent.manifestCid,
42
+ deliveryTxHash: intent.deliveryTxHash,
43
+ };
44
+ }
45
+ // ── Public API ────────────────────────────────────────────────────────────────
46
+ /**
47
+ * Gather portfolio.v0 dashboard data from SQLite. Safe to call even when the
48
+ * restoration_intents table does not exist yet (table created on first Store
49
+ * construction, so this is always present when the daemon is running).
50
+ */
51
+ export function gatherPortfolioV0Status(store) {
52
+ const persistence = new IntentPersistence(store.db);
53
+ // In-flight: all non-terminal intents
54
+ const inFlight = persistence.getInFlight().map(toInFlight);
55
+ // Recent verdicts: last N COMPLETE + FAILED intents combined, newest first
56
+ const complete = persistence.getByState('COMPLETE');
57
+ const failed = persistence.getByState('FAILED');
58
+ const allTerminal = [...complete, ...failed].sort((a, b) => b.stateUpdatedAt - a.stateUpdatedAt);
59
+ const recentVerdicts = allTerminal.slice(0, RECENT_VERDICTS_LIMIT).map(toVerdict);
60
+ // Recent system_snapshot artifacts (tagged with 'system_snapshot')
61
+ let recentSnapshots = [];
62
+ try {
63
+ const snapshotArtifacts = store.searchArtifacts({
64
+ tags: ['system_snapshot'],
65
+ limit: RECENT_SNAPSHOTS_LIMIT,
66
+ });
67
+ recentSnapshots = snapshotArtifacts.map((a) => ({
68
+ id: a.id,
69
+ requestId: a.request_id,
70
+ title: a.title,
71
+ outcome: a.outcome,
72
+ createdAt: a.created_at,
73
+ }));
74
+ }
75
+ catch {
76
+ // searchArtifacts should never throw, but guard defensively
77
+ recentSnapshots = [];
78
+ }
79
+ const recentClaudeOutcomes = gatherRecentClaudeOutcomes();
80
+ return { inFlight, recentVerdicts, recentSnapshots, recentClaudeOutcomes };
81
+ }
82
+ /**
83
+ * Scan the session outcome files under `/tmp/jinn-engine-working/*\/sessions/*\/outcome.json`
84
+ * and return the most recent N. Swallows all filesystem errors so a missing or
85
+ * malformed working dir never breaks the status endpoint.
86
+ */
87
+ function gatherRecentClaudeOutcomes() {
88
+ if (!existsSync(WORKING_DIR_ROOT))
89
+ return [];
90
+ const outcomes = [];
91
+ let intentDirs;
92
+ try {
93
+ intentDirs = readdirSync(WORKING_DIR_ROOT);
94
+ }
95
+ catch {
96
+ return [];
97
+ }
98
+ for (const intentDir of intentDirs) {
99
+ const sessionsDir = join(WORKING_DIR_ROOT, intentDir, 'sessions');
100
+ if (!existsSync(sessionsDir))
101
+ continue;
102
+ let sessionDirs;
103
+ try {
104
+ sessionDirs = readdirSync(sessionsDir);
105
+ }
106
+ catch {
107
+ continue;
108
+ }
109
+ for (const sessionDir of sessionDirs) {
110
+ const outcomePath = join(sessionsDir, sessionDir, 'outcome.json');
111
+ if (!existsSync(outcomePath))
112
+ continue;
113
+ try {
114
+ const raw = readFileSync(outcomePath, 'utf-8');
115
+ const parsed = JSON.parse(raw);
116
+ if (typeof parsed.requestId === 'string' &&
117
+ typeof parsed.sessionId === 'string' &&
118
+ typeof parsed.startedAt === 'number' &&
119
+ typeof parsed.endedAt === 'number') {
120
+ outcomes.push({
121
+ requestId: parsed.requestId,
122
+ sessionId: parsed.sessionId,
123
+ startedAt: parsed.startedAt,
124
+ endedAt: parsed.endedAt,
125
+ durationMs: parsed.durationMs ?? (parsed.endedAt - parsed.startedAt),
126
+ aborted: parsed.aborted ?? false,
127
+ fillsInSessionWindow: parsed.fillsInSessionWindow ?? 0,
128
+ coinCounts: parsed.coinCounts ?? {},
129
+ ...(parsed.fillsQueryError !== undefined ? { fillsQueryError: parsed.fillsQueryError } : {}),
130
+ });
131
+ }
132
+ }
133
+ catch {
134
+ // Malformed outcome file — skip.
135
+ }
136
+ }
137
+ }
138
+ outcomes.sort((a, b) => b.endedAt - a.endedAt);
139
+ return outcomes.slice(0, RECENT_CLAUDE_OUTCOMES_LIMIT);
140
+ }
141
+ //# 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"}
@@ -2,7 +2,12 @@
2
2
  * Pure assembly for GET /v1/status JSON (testable without RPC or filesystem).
3
3
  */
4
4
  import type { FleetState } from '../earning/types.js';
5
+ import type { PortfolioV0Status } from './portfolio-v0-build.js';
5
6
  export type StatusHintsScope = 'full' | 'sqlite_only';
7
+ export interface ServiceBalanceErrorEntry {
8
+ agent?: string;
9
+ multisig?: string;
10
+ }
6
11
  export interface GatheredStatusRaw {
7
12
  /** sqlite_only: only SQLite-backed fields (e2e / API without fleet context). */
8
13
  hintsScope?: StatusHintsScope;
@@ -11,8 +16,14 @@ export interface GatheredStatusRaw {
11
16
  earningDir?: string;
12
17
  activityCounts: Record<string, number>;
13
18
  recentActivity: Array<{
14
- requestId: string;
15
- role: string;
19
+ id: number;
20
+ ts: string | null;
21
+ kind: string;
22
+ requestId: string | null;
23
+ serviceIndex: number | null;
24
+ txHash: string | null;
25
+ specKind: string | null;
26
+ outcome: string | null;
16
27
  }>;
17
28
  lastRewardClaimTickAt: string | null;
18
29
  rewardClaimIntervalMs: number;
@@ -30,10 +41,31 @@ export interface GatheredStatusRaw {
30
41
  };
31
42
  pendingStakingRewardsWei?: string;
32
43
  pendingRewardsError?: string;
44
+ /** ISO timestamp when the staking contract will next accept a checkpoint. */
45
+ nextCheckpointAt?: string;
33
46
  pollIntervalMs: number;
34
47
  /** Resolved daily burn estimate for runway (wei string). */
35
48
  masterDailyEstimateWei: string;
36
49
  minMasterEthWei?: string;
50
+ /** portfolio.v0 lifecycle data — populated by gather-status from the SQLite store. */
51
+ portfolioV0?: PortfolioV0Status;
52
+ serviceBalances?: Record<number, {
53
+ agentNativeWei: string;
54
+ safeNativeWei: string;
55
+ safeBondWei: string;
56
+ }>;
57
+ /** Last balance fetch error per service (display index). Present when a fetch failed. */
58
+ serviceBalanceErrors?: Record<number, ServiceBalanceErrorEntry>;
59
+ perServiceActivity?: Record<number, {
60
+ counts: Record<string, number>;
61
+ lastEventAt: string | null;
62
+ }>;
63
+ pendingByService?: Record<number, string>;
64
+ claimedByService?: Record<number, {
65
+ total: string;
66
+ lastAt: string;
67
+ lastTxHash: string;
68
+ }>;
37
69
  }
38
70
  export interface StatusV1Response {
39
71
  statusMode: 'full' | 'sqlite_only';
@@ -61,10 +93,7 @@ export interface StatusV1Response {
61
93
  };
62
94
  activity: {
63
95
  counts: Record<string, number>;
64
- recent: Array<{
65
- requestId: string;
66
- role: string;
67
- }>;
96
+ recent: GatheredStatusRaw['recentActivity'];
68
97
  };
69
98
  rewards: {
70
99
  claimLoopIntervalMs: number;
@@ -85,6 +114,8 @@ export interface StatusV1Response {
85
114
  hint: string;
86
115
  };
87
116
  nextActions: string[];
117
+ /** portfolio.v0 lifecycle data — optional, absent when not available. */
118
+ portfolioV0?: PortfolioV0Status;
88
119
  }
89
120
  /**
90
121
  * Match bootstrap heuristic for master daily gas when config omits JINN_MASTER_ETH_DAILY_WEI.
@@ -170,6 +170,7 @@ export function assembleStatusV1(raw) {
170
170
  hint: buildEarningsHint(raw, fleetSum),
171
171
  },
172
172
  nextActions: buildNextActions(raw, fleetSum),
173
+ ...(raw.portfolioV0 !== undefined ? { portfolioV0: raw.portfolioV0 } : {}),
173
174
  };
174
175
  }
175
176
  //# sourceMappingURL=status-build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status-build.js","sourceRoot":"","sources":["../../src/api/status-build.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,4BAA4B,GAAG,iBAAsB,CAAC;AA8E5D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ;IACR,eAAe;IACf,UAAU;IACV,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA4B,EAC5B,cAAsB;IAEtB,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,OAAQ,GAAG,WAAc,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC/C,OAAO,QAAQ,GAAG,4BAA4B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC;AAC3F,CAAC;AAED,SAAS,YAAY,CAAC,KAAwB;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,cAAc,EAAE,CAAC,CAAC,eAAe;KAClC,CAAC,CAAC,CAAC;IACJ,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACzF,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC/E,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,YAAY;QAC/B,aAAa,EAAE,KAAK,CAAC,cAAc;QACnC,QAAQ;QACR,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAkB,EAClB,MAA0B,EAC1B,KAAa;IAEb,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,UAAU,IAAI,MAAM;YAAE,OAAO,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;QACnC,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,GAAG,CAAC;QAC7B,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACjC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAsB,EAAE,QAAmC;IACpF,IAAI,GAAG,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,6DAA6D,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC5B,OAAO,2CAA2C,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC;QACnC,OAAO,0EAA0E,GAAG,CAAC,wBAAwB,KAAK,CAAC,0CAA0C,CAAC;IAChK,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,OAAO,8EAA8E,CAAC;AACxF,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAsB,EAAE,QAAmC;IACnF,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,GAAG,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO;YACL,mHAAmH;SACpH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACnG,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACjD,IACE,KAAK,GAAG,EAAE;QACV,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;QACnC,GAAG,CAAC,eAAe,KAAK,SAAS,EACjC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,QAAQ,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;QAChG,OAAO,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IAC7G,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAA2B,GAAG,CAAC,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/F,MAAM,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;QACjC,CAAC,CAAC,uBAAuB,CACrB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAC7B,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3E,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CACnC;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE;YACN,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;QACD,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;YACR,MAAM,EAAE,GAAG,CAAC,cAAc;YAC1B,MAAM,EAAE,GAAG,CAAC,cAAc;SAC3B;QACD,OAAO,EAAE;YACP,mBAAmB,EAAE,GAAG,CAAC,qBAAqB;YAC9C,eAAe,EAAE,GAAG,CAAC,qBAAqB;YAC1C,wBAAwB,EAAE,GAAG,CAAC,wBAAwB;YACtD,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;SAC7C;QACD,SAAS,EAAE;YACT,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;YAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;YACjC,gBAAgB,EAAE,GAAG,CAAC,sBAAsB;YAC5C,gBAAgB,EACd,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAClF,SAAS,EAAE,GAAG,CAAC,eAAe;YAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;SACxB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC;SACvC;QACD,WAAW,EAAE,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status-build.js","sourceRoot":"","sources":["../../src/api/status-build.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export interface StatusRollupV1Response {
12
12
  startedAt: string | null;
13
13
  phase: string;
14
14
  network: 'testnet' | 'mainnet';
15
+ version?: string;
16
+ commit?: string;
15
17
  };
16
18
  rpc: {
17
19
  ok: boolean;
@@ -3,6 +3,10 @@
3
3
  *
4
4
  * Contract: spec/2026-04-14-client-surface.md §4.1.
5
5
  */
6
+ import { readFileSync } from 'node:fs';
7
+ import { dirname, join } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ let versionCommitCache = null;
6
10
  function daemonState(shutdown) {
7
11
  if (shutdown === 'running')
8
12
  return 'running';
@@ -30,7 +34,28 @@ function buildExitRollup(raw, needsAttention) {
30
34
  }
31
35
  return { blocking: false, hint: null };
32
36
  }
37
+ function readVersionCommit() {
38
+ if (versionCommitCache) {
39
+ return versionCommitCache;
40
+ }
41
+ const here = dirname(fileURLToPath(import.meta.url));
42
+ let version = '0.0.0';
43
+ let commit = 'unknown';
44
+ try {
45
+ const pkg = JSON.parse(readFileSync(join(here, '..', '..', 'package.json'), 'utf-8'));
46
+ version = pkg.version ?? version;
47
+ }
48
+ catch { /* */ }
49
+ try {
50
+ const meta = JSON.parse(readFileSync(join(here, '..', 'build-meta.json'), 'utf-8'));
51
+ commit = meta.commit ?? commit;
52
+ }
53
+ catch { /* */ }
54
+ versionCommitCache = { version, commit };
55
+ return versionCommitCache;
56
+ }
33
57
  export function assembleStatusRollupV1(raw) {
58
+ const { version, commit } = readVersionCommit();
34
59
  const services = raw.fleet?.services ?? [];
35
60
  const complete = services.filter(s => s.step === 'complete').length;
36
61
  const needsAttention = services.length - complete;
@@ -47,6 +72,8 @@ export function assembleStatusRollupV1(raw) {
47
72
  startedAt: null,
48
73
  phase,
49
74
  network,
75
+ version,
76
+ commit,
50
77
  },
51
78
  rpc: {
52
79
  ok: raw.rpc.ok,
@@ -1 +1 @@
1
- {"version":3,"file":"status-rollup-build.js","sourceRoot":"","sources":["../../src/api/status-rollup-build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-rollup-build.js","sourceRoot":"","sources":["../../src/api/status-rollup-build.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,2 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * jinn-mcp — standalone MCP server exposing operator-level tools.
4
- *
5
- * Designed to be launched by an MCP-aware host (Claude Desktop, Cursor, etc.)
6
- * via stdio transport. Each tool delegates to the same command modules that
7
- * the `jinn` CLI uses, so behaviour is always consistent.
8
- *
9
- * Usage (in an MCP host config):
10
- * { "command": "jinn-mcp" }
11
- *
12
- * Context: docs/research/2026-04-agent-packaging.md sections 2.2, 5.1-5.3
13
- */
14
2
  export {};
@@ -1,19 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * jinn-mcp standalone MCP server exposing operator-level tools.
3
+ * Temporary compatibility shim for the old `jinn-mcp` bin.
4
4
  *
5
- * Designed to be launched by an MCP-aware host (Claude Desktop, Cursor, etc.)
6
- * via stdio transport. Each tool delegates to the same command modules that
7
- * the `jinn` CLI uses, so behaviour is always consistent.
8
- *
9
- * Usage (in an MCP host config):
10
- * { "command": "jinn-mcp" }
11
- *
12
- * Context: docs/research/2026-04-agent-packaging.md sections 2.2, 5.1-5.3
5
+ * The canonical entrypoint is now `jinn mcp`.
13
6
  */
14
- import { createOperatorServer } from '../mcp/operator-server.js';
15
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
16
- const server = createOperatorServer();
17
- const transport = new StdioServerTransport();
18
- await server.connect(transport);
7
+ import { runCli } from '../cli/index.js';
8
+ console.error('[jinn-mcp] deprecated: use `jinn mcp` instead.');
9
+ await runCli(['mcp', ...process.argv.slice(2)]);
19
10
  //# sourceMappingURL=jinn-mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jinn-mcp.js","sourceRoot":"","sources":["../../src/bin/jinn-mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AACtC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"jinn-mcp.js","sourceRoot":"","sources":["../../src/bin/jinn-mcp.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAChE,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "8e0a05c1197c9343665f90ef62c652d4fe7aee36"
2
+ "commit": "647548b733757b9ea4c35fc60a6a364688a3df79"
3
3
  }