@jinn-network/client 0.1.0 → 0.1.1-canary.4a6ed8b2

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 (269) hide show
  1. package/README.md +98 -11
  2. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +15 -0
  3. package/dist/adapters/claim-registry/abi.d.ts +127 -0
  4. package/dist/adapters/claim-registry/abi.js +93 -0
  5. package/dist/adapters/claim-registry/abi.js.map +1 -0
  6. package/dist/adapters/claim-registry/client.d.ts +89 -0
  7. package/dist/adapters/claim-registry/client.js +205 -0
  8. package/dist/adapters/claim-registry/client.js.map +1 -0
  9. package/dist/adapters/mech/adapter.d.ts +2 -0
  10. package/dist/adapters/mech/adapter.js +110 -41
  11. package/dist/adapters/mech/adapter.js.map +1 -1
  12. package/dist/adapters/mech/contracts.d.ts +2 -0
  13. package/dist/adapters/mech/contracts.js +32 -7
  14. package/dist/adapters/mech/contracts.js.map +1 -1
  15. package/dist/adapters/mech/ipfs.d.ts +8 -0
  16. package/dist/adapters/mech/ipfs.js +12 -0
  17. package/dist/adapters/mech/ipfs.js.map +1 -1
  18. package/dist/adapters/mech/types.d.ts +20 -46
  19. package/dist/adapters/mech/types.js +16 -35
  20. package/dist/adapters/mech/types.js.map +1 -1
  21. package/dist/api/gather-status.js +11 -0
  22. package/dist/api/gather-status.js.map +1 -1
  23. package/dist/api/portfolio-v0-build.d.ts +81 -0
  24. package/dist/api/portfolio-v0-build.js +141 -0
  25. package/dist/api/portfolio-v0-build.js.map +1 -0
  26. package/dist/api/portfolio-v0-doctor.d.ts +37 -0
  27. package/dist/api/portfolio-v0-doctor.js +123 -0
  28. package/dist/api/portfolio-v0-doctor.js.map +1 -0
  29. package/dist/api/server.js +12 -0
  30. package/dist/api/server.js.map +1 -1
  31. package/dist/api/status-build.d.ts +6 -0
  32. package/dist/api/status-build.js +1 -0
  33. package/dist/api/status-build.js.map +1 -1
  34. package/dist/api/status-rollup-build.d.ts +4 -0
  35. package/dist/api/status-rollup-build.js +4 -0
  36. package/dist/api/status-rollup-build.js.map +1 -1
  37. package/dist/bin/jinn-mcp.d.ts +14 -0
  38. package/dist/bin/jinn-mcp.js +19 -0
  39. package/dist/bin/jinn-mcp.js.map +1 -0
  40. package/dist/build-meta.json +1 -1
  41. package/dist/cli/commands/auth.d.ts +3 -0
  42. package/dist/cli/commands/auth.js +236 -0
  43. package/dist/cli/commands/auth.js.map +1 -0
  44. package/dist/cli/commands/bootstrap.js +1 -0
  45. package/dist/cli/commands/bootstrap.js.map +1 -1
  46. package/dist/cli/commands/doctor.js +148 -15
  47. package/dist/cli/commands/doctor.js.map +1 -1
  48. package/dist/cli/commands/fund-requirements.js +69 -1
  49. package/dist/cli/commands/fund-requirements.js.map +1 -1
  50. package/dist/cli/commands/history.js +1 -0
  51. package/dist/cli/commands/history.js.map +1 -1
  52. package/dist/cli/commands/init.js +31 -7
  53. package/dist/cli/commands/init.js.map +1 -1
  54. package/dist/cli/commands/keys-backup.js +142 -10
  55. package/dist/cli/commands/keys-backup.js.map +1 -1
  56. package/dist/cli/commands/logs.js +28 -13
  57. package/dist/cli/commands/logs.js.map +1 -1
  58. package/dist/cli/commands/plugin-install.d.ts +3 -0
  59. package/dist/cli/commands/plugin-install.js +799 -0
  60. package/dist/cli/commands/plugin-install.js.map +1 -0
  61. package/dist/cli/commands/quickstart.d.ts +3 -0
  62. package/dist/cli/commands/quickstart.js +236 -0
  63. package/dist/cli/commands/quickstart.js.map +1 -0
  64. package/dist/cli/commands/run.js +6 -0
  65. package/dist/cli/commands/run.js.map +1 -1
  66. package/dist/cli/commands/stop.js +1 -0
  67. package/dist/cli/commands/stop.js.map +1 -1
  68. package/dist/cli/commands/submit-intent.js +79 -5
  69. package/dist/cli/commands/submit-intent.js.map +1 -1
  70. package/dist/cli/commands/update.d.ts +3 -0
  71. package/dist/cli/commands/update.js +154 -0
  72. package/dist/cli/commands/update.js.map +1 -0
  73. package/dist/cli/commands/version.js +15 -1
  74. package/dist/cli/commands/version.js.map +1 -1
  75. package/dist/cli/deployment-digest.js +20 -4
  76. package/dist/cli/deployment-digest.js.map +1 -1
  77. package/dist/cli/index.js +8 -0
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/cli/password.d.ts +15 -0
  80. package/dist/cli/password.js +29 -1
  81. package/dist/cli/password.js.map +1 -1
  82. package/dist/config.d.ts +110 -7
  83. package/dist/config.js +38 -5
  84. package/dist/config.js.map +1 -1
  85. package/dist/daemon/balance-topup-loop.d.ts +40 -0
  86. package/dist/daemon/balance-topup-loop.js +96 -0
  87. package/dist/daemon/balance-topup-loop.js.map +1 -0
  88. package/dist/daemon/daemon.d.ts +37 -0
  89. package/dist/daemon/daemon.js +98 -1
  90. package/dist/daemon/daemon.js.map +1 -1
  91. package/dist/dashboard/index.html +500 -0
  92. package/dist/earning/bootstrap.d.ts +3 -1
  93. package/dist/earning/bootstrap.js +138 -17
  94. package/dist/earning/bootstrap.js.map +1 -1
  95. package/dist/earning/contracts.d.ts +24 -0
  96. package/dist/earning/contracts.js +20 -1
  97. package/dist/earning/contracts.js.map +1 -1
  98. package/dist/earning/faucet.d.ts +15 -0
  99. package/dist/earning/faucet.js +64 -0
  100. package/dist/earning/faucet.js.map +1 -0
  101. package/dist/earning/store.d.ts +5 -0
  102. package/dist/earning/store.js +7 -3
  103. package/dist/earning/store.js.map +1 -1
  104. package/dist/errors/unauthorized-account.d.ts +10 -0
  105. package/dist/errors/unauthorized-account.js +14 -0
  106. package/dist/errors/unauthorized-account.js.map +1 -0
  107. package/dist/main.js +128 -1
  108. package/dist/main.js.map +1 -1
  109. package/dist/mcp/operator-server.d.ts +34 -0
  110. package/dist/mcp/operator-server.js +219 -0
  111. package/dist/mcp/operator-server.js.map +1 -0
  112. package/dist/operator-errors.js +11 -0
  113. package/dist/operator-errors.js.map +1 -1
  114. package/dist/preflight/claude-auth.d.ts +68 -0
  115. package/dist/preflight/claude-auth.js +171 -0
  116. package/dist/preflight/claude-auth.js.map +1 -0
  117. package/dist/restorer/engine/canonical-json.d.ts +18 -0
  118. package/dist/restorer/engine/canonical-json.js +59 -0
  119. package/dist/restorer/engine/canonical-json.js.map +1 -0
  120. package/dist/restorer/engine/claim.d.ts +69 -0
  121. package/dist/restorer/engine/claim.js +104 -0
  122. package/dist/restorer/engine/claim.js.map +1 -0
  123. package/dist/restorer/engine/delivery.d.ts +52 -0
  124. package/dist/restorer/engine/delivery.js +63 -0
  125. package/dist/restorer/engine/delivery.js.map +1 -0
  126. package/dist/restorer/engine/engine.d.ts +203 -0
  127. package/dist/restorer/engine/engine.js +658 -0
  128. package/dist/restorer/engine/engine.js.map +1 -0
  129. package/dist/restorer/engine/manifest-assembly.d.ts +67 -0
  130. package/dist/restorer/engine/manifest-assembly.js +79 -0
  131. package/dist/restorer/engine/manifest-assembly.js.map +1 -0
  132. package/dist/restorer/engine/packaging.d.ts +87 -0
  133. package/dist/restorer/engine/packaging.js +350 -0
  134. package/dist/restorer/engine/packaging.js.map +1 -0
  135. package/dist/restorer/engine/persistence.d.ts +170 -0
  136. package/dist/restorer/engine/persistence.js +381 -0
  137. package/dist/restorer/engine/persistence.js.map +1 -0
  138. package/dist/restorer/engine/recovery.d.ts +22 -0
  139. package/dist/restorer/engine/recovery.js +24 -0
  140. package/dist/restorer/engine/recovery.js.map +1 -0
  141. package/dist/restorer/engine/registry.d.ts +62 -0
  142. package/dist/restorer/engine/registry.js +73 -0
  143. package/dist/restorer/engine/registry.js.map +1 -0
  144. package/dist/restorer/engine/signing.d.ts +30 -0
  145. package/dist/restorer/engine/signing.js +39 -0
  146. package/dist/restorer/engine/signing.js.map +1 -0
  147. package/dist/restorer/engine/state.d.ts +42 -0
  148. package/dist/restorer/engine/state.js +87 -0
  149. package/dist/restorer/engine/state.js.map +1 -0
  150. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
  151. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js +96 -0
  152. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  153. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +88 -0
  154. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +560 -0
  155. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  156. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +137 -0
  157. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js +865 -0
  158. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  159. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.d.ts +74 -0
  160. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js +74 -0
  161. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  162. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +97 -0
  163. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +226 -0
  164. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  165. package/dist/restorer/impls/legacy-claude/index.d.ts +42 -0
  166. package/dist/restorer/impls/legacy-claude/index.js +60 -0
  167. package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
  168. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  169. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  170. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  171. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
  172. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
  173. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  174. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  175. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  176. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  177. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  178. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  179. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  180. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  181. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  182. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  183. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  184. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  185. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  186. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +43 -0
  187. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +431 -0
  188. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
  189. package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
  190. package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
  191. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
  192. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +32 -0
  193. package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
  194. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
  195. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +26 -0
  196. package/dist/restorer/impls/prediction-v0-baseline/index.js +82 -0
  197. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
  198. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  199. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
  200. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
  201. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
  202. package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
  203. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
  204. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  205. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
  206. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  207. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  208. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
  209. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  210. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  211. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
  212. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  213. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +7 -0
  214. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +74 -0
  215. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  216. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  217. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
  218. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  219. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +33 -0
  220. package/dist/restorer/impls/prediction-v0-evaluator/index.js +179 -0
  221. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
  222. package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
  223. package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
  224. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
  225. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
  226. package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
  227. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
  228. package/dist/restorer/types.d.ts +62 -0
  229. package/dist/restorer/types.js +7 -0
  230. package/dist/restorer/types.js.map +1 -0
  231. package/dist/runner/claude.js +15 -0
  232. package/dist/runner/claude.js.map +1 -1
  233. package/dist/store/store.d.ts +3 -1
  234. package/dist/store/store.js +8 -0
  235. package/dist/store/store.js.map +1 -1
  236. package/dist/tx-retry.js +11 -1
  237. package/dist/tx-retry.js.map +1 -1
  238. package/dist/types/desired-state.d.ts +53 -0
  239. package/dist/types/desired-state.js +20 -0
  240. package/dist/types/desired-state.js.map +1 -1
  241. package/dist/types/index.d.ts +3 -1
  242. package/dist/types/index.js +3 -1
  243. package/dist/types/index.js.map +1 -1
  244. package/dist/types/portfolio.d.ts +1000 -0
  245. package/dist/types/portfolio.js +168 -0
  246. package/dist/types/portfolio.js.map +1 -0
  247. package/dist/types/prediction.d.ts +751 -0
  248. package/dist/types/prediction.js +128 -0
  249. package/dist/types/prediction.js.map +1 -0
  250. package/dist/venues/chainlink/client.d.ts +99 -0
  251. package/dist/venues/chainlink/client.js +130 -0
  252. package/dist/venues/chainlink/client.js.map +1 -0
  253. package/dist/venues/chainlink/feeds.d.ts +8 -0
  254. package/dist/venues/chainlink/feeds.js +9 -0
  255. package/dist/venues/chainlink/feeds.js.map +1 -0
  256. package/dist/venues/hyperliquid/account-value.d.ts +30 -0
  257. package/dist/venues/hyperliquid/account-value.js +30 -0
  258. package/dist/venues/hyperliquid/account-value.js.map +1 -0
  259. package/dist/venues/hyperliquid/client.d.ts +63 -0
  260. package/dist/venues/hyperliquid/client.js +135 -0
  261. package/dist/venues/hyperliquid/client.js.map +1 -0
  262. package/dist/venues/hyperliquid/grid.d.ts +36 -0
  263. package/dist/venues/hyperliquid/grid.js +61 -0
  264. package/dist/venues/hyperliquid/grid.js.map +1 -0
  265. package/dist/venues/hyperliquid/types.d.ts +81 -0
  266. package/dist/venues/hyperliquid/types.js +8 -0
  267. package/dist/venues/hyperliquid/types.js.map +1 -0
  268. package/package.json +18 -3
  269. package/skills/jinn-operator/SKILL.md +213 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../../../src/restorer/impls/claude-mcp-hyperliquid/mcp-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Safety rails for claude-mcp-hyperliquid write tools — §8.3.
3
+ *
4
+ * All validation is pure (no I/O). Enforced at the tool boundary so Claude
5
+ * cannot bypass them through reasoning.
6
+ */
7
+ export interface SafetyConfig {
8
+ /** Maximum fraction of account value per position. Default: 0.25 */
9
+ maxPositionFraction: number;
10
+ /** Maximum leverage. Default: 10 */
11
+ maxLeverage: number;
12
+ /** Maximum slippage in basis points. Default: 50 */
13
+ maxSlippageBps: number;
14
+ /** Max write ops per minute. Default: 60 */
15
+ maxOpsPerMinute: number;
16
+ /** Max total trade count in window. Default: 1000 */
17
+ maxTotalTrades: number;
18
+ /**
19
+ * Hard absolute notional cap per trade in USD. Optional.
20
+ * When set, effective cap = min(maxPositionFraction × accountValue, maxNotionalUsd).
21
+ * Defaults: 5000 on mainnet, 500 on testnet — but when this field is set,
22
+ * the configured value takes precedence.
23
+ */
24
+ maxNotionalUsd?: number;
25
+ }
26
+ export declare const DEFAULT_SAFETY_CONFIG: SafetyConfig;
27
+ export interface RateLimitState {
28
+ /** Timestamps (epoch ms) of recent write ops, oldest first */
29
+ opTimestamps: number[];
30
+ /** Total write ops since creation */
31
+ totalOps: number;
32
+ }
33
+ export declare function createRateLimitState(): RateLimitState;
34
+ export interface ValidationResult {
35
+ ok: true;
36
+ }
37
+ export interface ValidationError {
38
+ ok: false;
39
+ code: string;
40
+ message: string;
41
+ }
42
+ export type ValidationOutcome = ValidationResult | ValidationError;
43
+ /**
44
+ * Check rate limit and record the op if it passes.
45
+ * Mutates `state` on success.
46
+ */
47
+ export declare function checkRateLimit(state: RateLimitState, config: SafetyConfig, nowMs?: number): ValidationOutcome;
48
+ export interface OpenPositionParams {
49
+ coin: string;
50
+ side: 'long' | 'short';
51
+ /** Size in units of the base asset */
52
+ size: number;
53
+ leverage: number;
54
+ /** Current mid price for the coin (used to compute notional) */
55
+ midPrice: number;
56
+ /** Current account value in USD */
57
+ accountValue: number;
58
+ slippageBps: number;
59
+ tp?: number;
60
+ sl?: number;
61
+ }
62
+ export declare function validateOpenPosition(params: OpenPositionParams, config: SafetyConfig): ValidationOutcome;
63
+ export interface ClosePositionParams {
64
+ coin: string;
65
+ sizeOrAll: number | 'all';
66
+ }
67
+ export declare function validateClosePosition(params: ClosePositionParams): ValidationOutcome;
68
+ export interface ModifyPositionParams {
69
+ coin: string;
70
+ leverage?: number;
71
+ tp?: number;
72
+ sl?: number;
73
+ }
74
+ export declare function validateModifyPosition(params: ModifyPositionParams, config: SafetyConfig): ValidationOutcome;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Safety rails for claude-mcp-hyperliquid write tools — §8.3.
3
+ *
4
+ * All validation is pure (no I/O). Enforced at the tool boundary so Claude
5
+ * cannot bypass them through reasoning.
6
+ */
7
+ export const DEFAULT_SAFETY_CONFIG = {
8
+ maxPositionFraction: 0.25,
9
+ maxLeverage: 10,
10
+ maxSlippageBps: 50,
11
+ maxOpsPerMinute: 60,
12
+ maxTotalTrades: 1000,
13
+ };
14
+ export function createRateLimitState() {
15
+ return { opTimestamps: [], totalOps: 0 };
16
+ }
17
+ function err(code, message) {
18
+ return { ok: false, code, message };
19
+ }
20
+ const ok = { ok: true };
21
+ // ── Rate-limit check ──────────────────────────────────────────────────────────
22
+ /**
23
+ * Check rate limit and record the op if it passes.
24
+ * Mutates `state` on success.
25
+ */
26
+ export function checkRateLimit(state, config, nowMs = Date.now()) {
27
+ // Purge ops older than 60 seconds
28
+ const cutoff = nowMs - 60_000;
29
+ state.opTimestamps = state.opTimestamps.filter((t) => t > cutoff);
30
+ if (state.opTimestamps.length >= config.maxOpsPerMinute) {
31
+ return err('RATE_LIMIT', `Rate limit exceeded: ${state.opTimestamps.length} ops in last 60s (max ${config.maxOpsPerMinute})`);
32
+ }
33
+ if (state.totalOps >= config.maxTotalTrades) {
34
+ return err('TOTAL_TRADE_CAP', `Total trade cap reached: ${state.totalOps} ops (max ${config.maxTotalTrades})`);
35
+ }
36
+ // Record op
37
+ state.opTimestamps.push(nowMs);
38
+ state.totalOps += 1;
39
+ return ok;
40
+ }
41
+ export function validateOpenPosition(params, config) {
42
+ const { size, leverage, midPrice, accountValue, slippageBps } = params;
43
+ if (leverage > config.maxLeverage) {
44
+ return err('LEVERAGE_EXCEEDED', `Leverage ${leverage}x exceeds max ${config.maxLeverage}x`);
45
+ }
46
+ if (slippageBps > config.maxSlippageBps) {
47
+ return err('SLIPPAGE_EXCEEDED', `Slippage ${slippageBps} bps exceeds max ${config.maxSlippageBps} bps`);
48
+ }
49
+ if (size <= 0) {
50
+ return err('INVALID_SIZE', 'Size must be positive');
51
+ }
52
+ if (midPrice <= 0) {
53
+ return err('INVALID_PRICE', 'Mid price must be positive');
54
+ }
55
+ const notionalUsd = size * midPrice;
56
+ const maxNotional = config.maxPositionFraction * accountValue;
57
+ if (notionalUsd > maxNotional) {
58
+ return err('NOTIONAL_EXCEEDED', `Notional $${notionalUsd.toFixed(2)} exceeds max $${maxNotional.toFixed(2)} (${(config.maxPositionFraction * 100).toFixed(0)}% of $${accountValue.toFixed(2)} account)`);
59
+ }
60
+ return ok;
61
+ }
62
+ export function validateClosePosition(params) {
63
+ if (typeof params.sizeOrAll === 'number' && params.sizeOrAll <= 0) {
64
+ return err('INVALID_SIZE', 'Size must be positive or "all"');
65
+ }
66
+ return ok;
67
+ }
68
+ export function validateModifyPosition(params, config) {
69
+ if (params.leverage !== undefined && params.leverage > config.maxLeverage) {
70
+ return err('LEVERAGE_EXCEEDED', `Leverage ${params.leverage}x exceeds max ${config.maxLeverage}x`);
71
+ }
72
+ return ok;
73
+ }
74
+ //# sourceMappingURL=safety-rails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-rails.js","sourceRoot":"","sources":["../../../../src/restorer/impls/claude-mcp-hyperliquid/safety-rails.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Session orchestration for claude-mcp-hyperliquid — §8.4.
3
+ *
4
+ * v0 simplicity:
5
+ * - Sequential (single Claude session at a time)
6
+ * - Cadence: one session every 30 minutes OR triggered by ≥2% mid-price change
7
+ * - Each session: 5-10 min wall time, interrupted at endTs by AbortSignal
8
+ * - Captures session transcript to workingDir/sessions/<sessionId>/transcript.txt
9
+ */
10
+ import { spawn } from 'node:child_process';
11
+ export interface SessionResult {
12
+ sessionId: string;
13
+ startedAt: number;
14
+ endedAt: number;
15
+ transcriptPath: string;
16
+ /** Whether the session was aborted by the window AbortSignal */
17
+ aborted: boolean;
18
+ /** Stdout from Claude (also written to transcriptPath) */
19
+ stdout: string;
20
+ /** Fill TIDs initiated during this session (populated by caller after fill matching) */
21
+ initiatedFillTids: number[];
22
+ }
23
+ export interface OrchestratorConfig {
24
+ /** Session cadence: minimum ms between sessions. Default: 30 min */
25
+ cadenceMs: number;
26
+ /** Max session wall time (ms). Default: 8 min */
27
+ sessionMaxMs: number;
28
+ /** Market move threshold to trigger early session. Default: 0.02 (2%) */
29
+ marketMoveTriggerFraction: number;
30
+ /** Coins to monitor for market-move triggers */
31
+ trackedCoins: string[];
32
+ }
33
+ export declare const DEFAULT_ORCHESTRATOR_CONFIG: OrchestratorConfig;
34
+ /**
35
+ * Merge caller overrides over defaults while discarding explicit `undefined` fields.
36
+ * Callers commonly pass `{ cadenceMs: impl.config.cadenceMs, ... }` where the source
37
+ * is undefined; a naive spread would override defaults with undefined, producing
38
+ * `setTimeout(fn, undefined)` (fires next tick) and zero-length cadence sleeps.
39
+ */
40
+ export declare function resolveOrchestratorConfig(overrides: Partial<OrchestratorConfig> | undefined): OrchestratorConfig;
41
+ export interface OrchestratorDeps {
42
+ claudePath: string;
43
+ claudeModel?: string;
44
+ /** Path to the MCP config JSON for this session */
45
+ mcpConfigPath: string;
46
+ workingDir: string;
47
+ /** Window abort signal — fires at endTs */
48
+ abort: AbortSignal;
49
+ msUntilEndTs: () => number;
50
+ /** Log function */
51
+ log: (event: {
52
+ level: 'info' | 'warn' | 'error';
53
+ msg: string;
54
+ data?: unknown;
55
+ }) => void;
56
+ /** Fetch current mid prices for tracked coins — used for market-move trigger */
57
+ getMids?: () => Promise<Record<string, string>>;
58
+ /**
59
+ * Called once per session as soon as the Claude subprocess exits, with the
60
+ * SessionResult. Used by the impl to record a `claude_session_outcome`
61
+ * artifact into SQLite so operators can observe in-flight session activity
62
+ * via /v1/status without waiting for the window to close.
63
+ */
64
+ onSessionEnd?: (result: SessionResult) => void | Promise<void>;
65
+ config?: Partial<OrchestratorConfig>;
66
+ /**
67
+ * Override spawn for testing. When provided, this is called instead of
68
+ * node:child_process.spawn so tests can inject a fake child process.
69
+ * In production, omit this field (real spawn is used).
70
+ */
71
+ _spawnFn?: typeof spawn;
72
+ }
73
+ /**
74
+ * Spawn a single Claude session, capturing stdout to a transcript file.
75
+ * The session is aborted if the window AbortSignal fires or sessionMaxMs elapses.
76
+ */
77
+ export declare function spawnSession(sessionId: string, prompt: string, deps: OrchestratorDeps): Promise<SessionResult>;
78
+ /**
79
+ * Check if any tracked coin has moved ≥ threshold since the last snapshot.
80
+ */
81
+ export declare function checkMarketMoveTrigger(prevMids: Record<string, string>, currMids: Record<string, string>, trackedCoins: string[], threshold: number): {
82
+ triggered: boolean;
83
+ coin?: string;
84
+ moveFraction?: number;
85
+ };
86
+ export interface SessionLoopResult {
87
+ sessions: SessionResult[];
88
+ totalSessions: number;
89
+ }
90
+ /**
91
+ * Run the full session loop until the window ends (abort fires).
92
+ *
93
+ * - Runs sessions sequentially
94
+ * - Waits cadenceMs between sessions (unless market-move trigger fires early)
95
+ * - Each session runs up to sessionMaxMs (also aborted by window signal)
96
+ */
97
+ export declare function runSessionLoop(buildPrompt: (sessionNum: number, sessionId: string) => string, deps: OrchestratorDeps): Promise<SessionLoopResult>;
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Session orchestration for claude-mcp-hyperliquid — §8.4.
3
+ *
4
+ * v0 simplicity:
5
+ * - Sequential (single Claude session at a time)
6
+ * - Cadence: one session every 30 minutes OR triggered by ≥2% mid-price change
7
+ * - Each session: 5-10 min wall time, interrupted at endTs by AbortSignal
8
+ * - Captures session transcript to workingDir/sessions/<sessionId>/transcript.txt
9
+ */
10
+ import { mkdirSync, writeFileSync, appendFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ import { spawn } from 'node:child_process';
13
+ import { randomUUID } from 'node:crypto';
14
+ export const DEFAULT_ORCHESTRATOR_CONFIG = {
15
+ cadenceMs: 30 * 60 * 1000,
16
+ sessionMaxMs: 8 * 60 * 1000,
17
+ marketMoveTriggerFraction: 0.02,
18
+ trackedCoins: [],
19
+ };
20
+ /**
21
+ * Merge caller overrides over defaults while discarding explicit `undefined` fields.
22
+ * Callers commonly pass `{ cadenceMs: impl.config.cadenceMs, ... }` where the source
23
+ * is undefined; a naive spread would override defaults with undefined, producing
24
+ * `setTimeout(fn, undefined)` (fires next tick) and zero-length cadence sleeps.
25
+ */
26
+ export function resolveOrchestratorConfig(overrides) {
27
+ const defined = Object.fromEntries(Object.entries(overrides ?? {}).filter(([, v]) => v !== undefined));
28
+ return { ...DEFAULT_ORCHESTRATOR_CONFIG, ...defined };
29
+ }
30
+ // ── Session spawn ──────────────────────────────────────────────────────────────
31
+ /**
32
+ * Spawn a single Claude session, capturing stdout to a transcript file.
33
+ * The session is aborted if the window AbortSignal fires or sessionMaxMs elapses.
34
+ */
35
+ export async function spawnSession(sessionId, prompt, deps) {
36
+ const config = resolveOrchestratorConfig(deps.config);
37
+ const sessionDir = join(deps.workingDir, 'sessions', sessionId);
38
+ mkdirSync(sessionDir, { recursive: true });
39
+ const transcriptPath = join(sessionDir, 'transcript.txt');
40
+ const startedAt = Date.now();
41
+ writeFileSync(transcriptPath, `=== Session ${sessionId} started at ${new Date(startedAt).toISOString()} ===\n\n`);
42
+ const args = [
43
+ '-p', prompt,
44
+ '--mcp-config', deps.mcpConfigPath,
45
+ '--strict-mcp-config',
46
+ '--allowedTools', 'mcp__jinn-hl__*,mcp__jinn-client__*',
47
+ ];
48
+ if (deps.claudeModel)
49
+ args.push('--model', deps.claudeModel);
50
+ // Build a minimal safe env for the agent subprocess
51
+ const agentEnv = {};
52
+ for (const key of ['PATH', 'HOME', 'USER', 'SHELL', 'LANG', 'TERM', 'TMPDIR', 'XDG_CONFIG_HOME', 'XDG_DATA_HOME', 'XDG_CACHE_HOME', 'NODE_PATH', 'NODE_OPTIONS', 'NPM_CONFIG_PREFIX']) {
53
+ if (process.env[key])
54
+ agentEnv[key] = process.env[key];
55
+ }
56
+ deps.log({ level: 'info', msg: `session-orchestrator: spawning session ${sessionId}`, data: { claudePath: deps.claudePath } });
57
+ const spawnFn = deps._spawnFn ?? spawn;
58
+ return new Promise((resolve) => {
59
+ const child = spawnFn(deps.claudePath, args, {
60
+ stdio: ['ignore', 'pipe', 'pipe'],
61
+ env: agentEnv,
62
+ });
63
+ let stdout = '';
64
+ let aborted = false;
65
+ child.stdout?.on('data', (d) => {
66
+ const chunk = d.toString();
67
+ stdout += chunk;
68
+ appendFileSync(transcriptPath, chunk);
69
+ });
70
+ child.stderr?.on('data', (d) => {
71
+ const line = d.toString();
72
+ appendFileSync(transcriptPath, `[stderr] ${line}`);
73
+ });
74
+ // Session timeout
75
+ const sessionTimeout = setTimeout(() => {
76
+ if (!aborted) {
77
+ deps.log({ level: 'info', msg: `session-orchestrator: session ${sessionId} reached max time, killing`, data: { sessionMaxMs: config.sessionMaxMs } });
78
+ child.kill('SIGTERM');
79
+ }
80
+ }, config.sessionMaxMs);
81
+ // Window abort
82
+ const onAbort = () => {
83
+ if (!aborted) {
84
+ aborted = true;
85
+ deps.log({ level: 'info', msg: `session-orchestrator: window abort signal — killing session ${sessionId}` });
86
+ clearTimeout(sessionTimeout);
87
+ child.kill('SIGTERM');
88
+ }
89
+ };
90
+ deps.abort.addEventListener('abort', onAbort);
91
+ child.on('exit', (code, signal) => {
92
+ clearTimeout(sessionTimeout);
93
+ deps.abort.removeEventListener('abort', onAbort);
94
+ const endedAt = Date.now();
95
+ appendFileSync(transcriptPath, `\n\n=== Session ended at ${new Date(endedAt).toISOString()} (code: ${code}, signal: ${signal}) ===\n`);
96
+ deps.log({
97
+ level: 'info',
98
+ msg: `session-orchestrator: session ${sessionId} exited`,
99
+ data: { code, signal, durationMs: endedAt - startedAt, aborted },
100
+ });
101
+ resolve({
102
+ sessionId,
103
+ startedAt,
104
+ endedAt,
105
+ transcriptPath,
106
+ aborted: aborted || deps.abort.aborted,
107
+ stdout,
108
+ initiatedFillTids: [], // populated by caller after fill matching
109
+ });
110
+ });
111
+ child.on('error', (err) => {
112
+ clearTimeout(sessionTimeout);
113
+ deps.abort.removeEventListener('abort', onAbort);
114
+ const endedAt = Date.now();
115
+ appendFileSync(transcriptPath, `\n\n=== Session spawn error: ${err.message} ===\n`);
116
+ deps.log({ level: 'error', msg: `session-orchestrator: session ${sessionId} spawn error`, data: { err: err.message } });
117
+ resolve({
118
+ sessionId,
119
+ startedAt,
120
+ endedAt,
121
+ transcriptPath,
122
+ aborted: deps.abort.aborted,
123
+ stdout: '',
124
+ initiatedFillTids: [],
125
+ });
126
+ });
127
+ });
128
+ }
129
+ // ── Market-move trigger ────────────────────────────────────────────────────────
130
+ /**
131
+ * Check if any tracked coin has moved ≥ threshold since the last snapshot.
132
+ */
133
+ export function checkMarketMoveTrigger(prevMids, currMids, trackedCoins, threshold) {
134
+ for (const coin of trackedCoins) {
135
+ const prev = parseFloat(prevMids[coin] ?? '0');
136
+ const curr = parseFloat(currMids[coin] ?? '0');
137
+ if (prev === 0)
138
+ continue;
139
+ const moveFraction = Math.abs(curr - prev) / prev;
140
+ if (moveFraction >= threshold) {
141
+ return { triggered: true, coin, moveFraction };
142
+ }
143
+ }
144
+ return { triggered: false };
145
+ }
146
+ /**
147
+ * Run the full session loop until the window ends (abort fires).
148
+ *
149
+ * - Runs sessions sequentially
150
+ * - Waits cadenceMs between sessions (unless market-move trigger fires early)
151
+ * - Each session runs up to sessionMaxMs (also aborted by window signal)
152
+ */
153
+ export async function runSessionLoop(buildPrompt, deps) {
154
+ const config = resolveOrchestratorConfig(deps.config);
155
+ const sessions = [];
156
+ let sessionNum = 0;
157
+ let lastMids = {};
158
+ while (!deps.abort.aborted && deps.msUntilEndTs() > 0) {
159
+ sessionNum++;
160
+ const sessionId = randomUUID();
161
+ const prompt = buildPrompt(sessionNum, sessionId);
162
+ const result = await spawnSession(sessionId, prompt, deps);
163
+ sessions.push(result);
164
+ // Fire outcome hook. Swallow its errors so a telemetry failure never
165
+ // interrupts the trading loop.
166
+ if (deps.onSessionEnd) {
167
+ try {
168
+ await deps.onSessionEnd(result);
169
+ }
170
+ catch (err) {
171
+ deps.log({
172
+ level: 'warn',
173
+ msg: 'session-orchestrator: onSessionEnd hook threw',
174
+ data: { err: err instanceof Error ? err.message : String(err) },
175
+ });
176
+ }
177
+ }
178
+ if (result.aborted || deps.abort.aborted) {
179
+ deps.log({ level: 'info', msg: 'session-orchestrator: window ended, stopping loop' });
180
+ break;
181
+ }
182
+ // Wait up to cadenceMs before next session, polling for market-move triggers
183
+ const cadenceEnd = Date.now() + config.cadenceMs;
184
+ let triggered = false;
185
+ while (!deps.abort.aborted && Date.now() < cadenceEnd && deps.msUntilEndTs() > 0) {
186
+ // Poll mids every 30s for market-move trigger (capped at remaining cadence time)
187
+ const remainingCadenceMs = Math.max(0, cadenceEnd - Date.now());
188
+ await sleepMs(Math.min(30_000, remainingCadenceMs), deps.abort);
189
+ if (deps.abort.aborted)
190
+ break;
191
+ if (deps.getMids && config.trackedCoins.length > 0) {
192
+ try {
193
+ const currMids = await deps.getMids();
194
+ const check = checkMarketMoveTrigger(lastMids, currMids, config.trackedCoins, config.marketMoveTriggerFraction);
195
+ lastMids = currMids;
196
+ if (check.triggered) {
197
+ deps.log({
198
+ level: 'info',
199
+ msg: `session-orchestrator: market-move trigger for ${check.coin} (+${((check.moveFraction ?? 0) * 100).toFixed(2)}%)`,
200
+ });
201
+ triggered = true;
202
+ break;
203
+ }
204
+ }
205
+ catch {
206
+ // Non-fatal — just skip the trigger check
207
+ }
208
+ }
209
+ }
210
+ if (!triggered) {
211
+ deps.log({ level: 'info', msg: `session-orchestrator: cadence elapsed, starting next session` });
212
+ }
213
+ }
214
+ return { sessions, totalSessions: sessions.length };
215
+ }
216
+ // ── Helpers ────────────────────────────────────────────────────────────────────
217
+ function sleepMs(ms, abort) {
218
+ return new Promise((resolve) => {
219
+ const t = setTimeout(resolve, ms);
220
+ abort?.addEventListener('abort', () => {
221
+ clearTimeout(t);
222
+ resolve();
223
+ }, { once: true });
224
+ });
225
+ }
226
+ //# sourceMappingURL=session-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-orchestrator.js","sourceRoot":"","sources":["../../../../src/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * legacy-claude — RestorerImpl fallback for spec=undefined (health-check) intents.
3
+ *
4
+ * Wraps the existing ClaudeRunner so that intents with no spec.kind continue to
5
+ * work via the RestorationEngine. Registered as the default fallback in the impl
6
+ * registry (supports spec.kind === '').
7
+ *
8
+ * The engine calls findFor({ kind: '' }) for legacy intents because
9
+ * PersistedIntent.specKind is null → coerced to '' in runImpl().
10
+ */
11
+ import { type Runner } from '../../../runner/runner.js';
12
+ import type { RestorerImpl, RestorationContext, RestorationOutput } from '../../types.js';
13
+ export interface LegacyClaudeConfig {
14
+ runner: Runner;
15
+ /** Passed to RunnerContext. Defaults to /tmp */
16
+ workingDirectory?: string;
17
+ /** Timeout in ms passed to runner. Defaults to 300000 */
18
+ timeoutMs?: number;
19
+ /** Passed to runner for artifact storage */
20
+ storePath?: string;
21
+ /** Daemon API URL for MCP server */
22
+ daemonApiUrl?: string;
23
+ }
24
+ export declare class LegacyClaudeImpl implements RestorerImpl {
25
+ private readonly config;
26
+ readonly name = "legacy-claude";
27
+ readonly version = "1.0.0";
28
+ constructor(config: LegacyClaudeConfig);
29
+ /**
30
+ * Supports the empty-string kind produced by the engine for intents with no spec.
31
+ * Also supports explicitly undefined-kind intents routed by registry default config.
32
+ */
33
+ supports(ctx: {
34
+ kind: string;
35
+ type?: 'restoration' | 'evaluation';
36
+ }): boolean;
37
+ canAttempt(): Promise<{
38
+ ok: true;
39
+ }>;
40
+ run(ctx: RestorationContext): Promise<RestorationOutput>;
41
+ }
42
+ export default LegacyClaudeImpl;