@reefclaw/connect 0.1.11 → 0.1.12

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 (397) hide show
  1. package/assets/bridge/gateway/heartbeat-cron.d.ts +27 -0
  2. package/assets/bridge/gateway/heartbeat-cron.js +85 -0
  3. package/assets/bridge/providers/gateway.d.ts +2 -0
  4. package/assets/bridge/providers/gateway.js +57 -16
  5. package/assets/bridge/setup.js +6 -51
  6. package/dist/deps.js +2 -2
  7. package/dist/plugin.js +35 -7
  8. package/package.json +1 -1
  9. package/assets/plugin/audit/mode-transition-audit.d.ts +0 -11
  10. package/assets/plugin/audit/mode-transition-audit.js +0 -29
  11. package/assets/plugin/balance-utils.d.ts +0 -36
  12. package/assets/plugin/balance-utils.js +0 -98
  13. package/assets/plugin/ccxt/binance-ban-gate.d.ts +0 -47
  14. package/assets/plugin/ccxt/binance-ban-gate.js +0 -420
  15. package/assets/plugin/ccxt/binance-private.d.ts +0 -346
  16. package/assets/plugin/ccxt/binance-private.js +0 -1525
  17. package/assets/plugin/ccxt/binance-public.d.ts +0 -34
  18. package/assets/plugin/ccxt/binance-public.js +0 -180
  19. package/assets/plugin/ccxt/intel-public.d.ts +0 -25
  20. package/assets/plugin/ccxt/intel-public.js +0 -80
  21. package/assets/plugin/ccxt/public-market-data-api.d.ts +0 -26
  22. package/assets/plugin/ccxt/public-market-data-api.js +0 -23
  23. package/assets/plugin/config/agent-config-client.d.ts +0 -77
  24. package/assets/plugin/config/agent-config-client.js +0 -188
  25. package/assets/plugin/config/agent-config-poller.d.ts +0 -32
  26. package/assets/plugin/config/agent-config-poller.js +0 -101
  27. package/assets/plugin/config/brackets-config.d.ts +0 -22
  28. package/assets/plugin/config/brackets-config.js +0 -58
  29. package/assets/plugin/config/entitlement-gate.d.ts +0 -51
  30. package/assets/plugin/config/entitlement-gate.js +0 -137
  31. package/assets/plugin/config/gate-store.d.ts +0 -18
  32. package/assets/plugin/config/gate-store.js +0 -61
  33. package/assets/plugin/config/plugin-config-io.d.ts +0 -222
  34. package/assets/plugin/config/plugin-config-io.js +0 -126
  35. package/assets/plugin/config/position-review-config.d.ts +0 -35
  36. package/assets/plugin/config/position-review-config.js +0 -105
  37. package/assets/plugin/config/tool-gate.d.ts +0 -53
  38. package/assets/plugin/config/tool-gate.js +0 -128
  39. package/assets/plugin/config/user-data-stream-config.d.ts +0 -89
  40. package/assets/plugin/config/user-data-stream-config.js +0 -239
  41. package/assets/plugin/connector-supervisor.d.ts +0 -36
  42. package/assets/plugin/connector-supervisor.js +0 -149
  43. package/assets/plugin/exchange-adapter.d.ts +0 -65
  44. package/assets/plugin/exchange-adapter.js +0 -4
  45. package/assets/plugin/index.d.ts +0 -30
  46. package/assets/plugin/index.js +0 -2756
  47. package/assets/plugin/ingest/pending-entry-metadata.d.ts +0 -74
  48. package/assets/plugin/ingest/pending-entry-metadata.js +0 -236
  49. package/assets/plugin/ingest/position-auto-capture.d.ts +0 -171
  50. package/assets/plugin/ingest/position-auto-capture.js +0 -709
  51. package/assets/plugin/ingest/position-decisions-client.d.ts +0 -327
  52. package/assets/plugin/ingest/position-decisions-client.js +0 -306
  53. package/assets/plugin/ingest/readiness-reporter.d.ts +0 -42
  54. package/assets/plugin/ingest/readiness-reporter.js +0 -163
  55. package/assets/plugin/ingest/reconcile-db-vs-exchange.d.ts +0 -51
  56. package/assets/plugin/ingest/reconcile-db-vs-exchange.js +0 -170
  57. package/assets/plugin/ingest/reconciler-cleanup.d.ts +0 -37
  58. package/assets/plugin/ingest/reconciler-cleanup.js +0 -147
  59. package/assets/plugin/ingest/rest-gap-filler.d.ts +0 -191
  60. package/assets/plugin/ingest/rest-gap-filler.js +0 -565
  61. package/assets/plugin/ingest/touched-symbols-store.d.ts +0 -25
  62. package/assets/plugin/ingest/touched-symbols-store.js +0 -96
  63. package/assets/plugin/ingest/trade-store-client.d.ts +0 -40
  64. package/assets/plugin/ingest/trade-store-client.js +0 -125
  65. package/assets/plugin/ingest/ws-ingest.d.ts +0 -43
  66. package/assets/plugin/ingest/ws-ingest.js +0 -126
  67. package/assets/plugin/learning/setup-family.d.ts +0 -21
  68. package/assets/plugin/learning/setup-family.js +0 -103
  69. package/assets/plugin/lifecycle/install-signal-handlers.d.ts +0 -33
  70. package/assets/plugin/lifecycle/install-signal-handlers.js +0 -112
  71. package/assets/plugin/lifecycle/shutdown-coordinator.d.ts +0 -43
  72. package/assets/plugin/lifecycle/shutdown-coordinator.js +0 -131
  73. package/assets/plugin/lifecycle/trading-operation-lock.d.ts +0 -17
  74. package/assets/plugin/lifecycle/trading-operation-lock.js +0 -14
  75. package/assets/plugin/live/bracket-id.d.ts +0 -26
  76. package/assets/plugin/live/bracket-id.js +0 -112
  77. package/assets/plugin/live/bracket-ledger.d.ts +0 -54
  78. package/assets/plugin/live/bracket-ledger.js +0 -267
  79. package/assets/plugin/live/bracket-manager.d.ts +0 -82
  80. package/assets/plugin/live/bracket-manager.js +0 -478
  81. package/assets/plugin/live/bracket-params.d.ts +0 -22
  82. package/assets/plugin/live/bracket-params.js +0 -124
  83. package/assets/plugin/live/bracket-reconciler.d.ts +0 -95
  84. package/assets/plugin/live/bracket-reconciler.js +0 -573
  85. package/assets/plugin/live/bracket-types.d.ts +0 -102
  86. package/assets/plugin/live/bracket-types.js +0 -8
  87. package/assets/plugin/live/deposit-tracker.d.ts +0 -62
  88. package/assets/plugin/live/deposit-tracker.js +0 -97
  89. package/assets/plugin/live/emergency-controls.d.ts +0 -32
  90. package/assets/plugin/live/emergency-controls.js +0 -226
  91. package/assets/plugin/live/exchange-errors.d.ts +0 -12
  92. package/assets/plugin/live/exchange-errors.js +0 -130
  93. package/assets/plugin/live/exchange-info-cache.d.ts +0 -37
  94. package/assets/plugin/live/exchange-info-cache.js +0 -134
  95. package/assets/plugin/live/fact-subscriber.d.ts +0 -78
  96. package/assets/plugin/live/fact-subscriber.js +0 -182
  97. package/assets/plugin/live/fill-price.d.ts +0 -13
  98. package/assets/plugin/live/fill-price.js +0 -37
  99. package/assets/plugin/live/intent-journal.d.ts +0 -42
  100. package/assets/plugin/live/intent-journal.js +0 -122
  101. package/assets/plugin/live/listen-key-manager.d.ts +0 -70
  102. package/assets/plugin/live/listen-key-manager.js +0 -169
  103. package/assets/plugin/live/live-adapter.d.ts +0 -319
  104. package/assets/plugin/live/live-adapter.js +0 -1906
  105. package/assets/plugin/live/live-balance-enricher.d.ts +0 -32
  106. package/assets/plugin/live/live-balance-enricher.js +0 -104
  107. package/assets/plugin/live/live-bracket-api.d.ts +0 -13
  108. package/assets/plugin/live/live-bracket-api.js +0 -20
  109. package/assets/plugin/live/live-state-store.d.ts +0 -194
  110. package/assets/plugin/live/live-state-store.js +0 -450
  111. package/assets/plugin/live/local-signal-service.d.ts +0 -57
  112. package/assets/plugin/live/local-signal-service.js +0 -151
  113. package/assets/plugin/live/local-strategy-evaluator.d.ts +0 -62
  114. package/assets/plugin/live/local-strategy-evaluator.js +0 -131
  115. package/assets/plugin/live/microstructure-assembler.d.ts +0 -54
  116. package/assets/plugin/live/microstructure-assembler.js +0 -148
  117. package/assets/plugin/live/order-poller.d.ts +0 -29
  118. package/assets/plugin/live/order-poller.js +0 -125
  119. package/assets/plugin/live/position-state-store.d.ts +0 -87
  120. package/assets/plugin/live/position-state-store.js +0 -237
  121. package/assets/plugin/live/proposal-decision-listener.d.ts +0 -70
  122. package/assets/plugin/live/proposal-decision-listener.js +0 -292
  123. package/assets/plugin/live/proposal-manager.d.ts +0 -76
  124. package/assets/plugin/live/proposal-manager.js +0 -140
  125. package/assets/plugin/live/rate-limiter.d.ts +0 -47
  126. package/assets/plugin/live/rate-limiter.js +0 -159
  127. package/assets/plugin/live/reconciler.d.ts +0 -39
  128. package/assets/plugin/live/reconciler.js +0 -175
  129. package/assets/plugin/live/setup-buckets.d.ts +0 -7
  130. package/assets/plugin/live/setup-buckets.js +0 -33
  131. package/assets/plugin/live/slippage-tracker.d.ts +0 -45
  132. package/assets/plugin/live/slippage-tracker.js +0 -78
  133. package/assets/plugin/live/stop-watcher.d.ts +0 -67
  134. package/assets/plugin/live/stop-watcher.js +0 -218
  135. package/assets/plugin/live/user-data-active-probe.d.ts +0 -54
  136. package/assets/plugin/live/user-data-active-probe.js +0 -180
  137. package/assets/plugin/live/user-data-stream-controller.d.ts +0 -200
  138. package/assets/plugin/live/user-data-stream-controller.js +0 -579
  139. package/assets/plugin/live/user-data-stream-ws.d.ts +0 -22
  140. package/assets/plugin/live/user-data-stream-ws.js +0 -63
  141. package/assets/plugin/live/user-data-stream.d.ts +0 -243
  142. package/assets/plugin/live/user-data-stream.js +0 -704
  143. package/assets/plugin/logger.d.ts +0 -2
  144. package/assets/plugin/logger.js +0 -2
  145. package/assets/plugin/mfe.d.ts +0 -21
  146. package/assets/plugin/mfe.js +0 -68
  147. package/assets/plugin/onboarding/mode-ladder.d.ts +0 -1
  148. package/assets/plugin/onboarding/mode-ladder.js +0 -3
  149. package/assets/plugin/onboarding/runtime.d.ts +0 -90
  150. package/assets/plugin/onboarding/runtime.js +0 -184
  151. package/assets/plugin/openclaw.plugin.json +0 -92
  152. package/assets/plugin/paper-adapter.d.ts +0 -24
  153. package/assets/plugin/paper-adapter.js +0 -91
  154. package/assets/plugin/persistence/state-manager.d.ts +0 -66
  155. package/assets/plugin/persistence/state-manager.js +0 -222
  156. package/assets/plugin/pinned-plan.d.ts +0 -9
  157. package/assets/plugin/pinned-plan.js +0 -23
  158. package/assets/plugin/portfolio/reentry-tracker.d.ts +0 -36
  159. package/assets/plugin/portfolio/reentry-tracker.js +0 -127
  160. package/assets/plugin/portfolio/wave9-admission.d.ts +0 -67
  161. package/assets/plugin/portfolio/wave9-admission.js +0 -262
  162. package/assets/plugin/portfolio/wave9-policy.d.ts +0 -36
  163. package/assets/plugin/portfolio/wave9-policy.js +0 -183
  164. package/assets/plugin/risk/pre-trade-check.d.ts +0 -38
  165. package/assets/plugin/risk/pre-trade-check.js +0 -345
  166. package/assets/plugin/risk/pre-trade-types.d.ts +0 -60
  167. package/assets/plugin/risk/pre-trade-types.js +0 -3
  168. package/assets/plugin/shadow/shadow-tracker.d.ts +0 -36
  169. package/assets/plugin/shadow/shadow-tracker.js +0 -151
  170. package/assets/plugin/shadow/types.d.ts +0 -42
  171. package/assets/plugin/shadow/types.js +0 -20
  172. package/assets/plugin/shared/indicators-extended.d.ts +0 -52
  173. package/assets/plugin/shared/indicators-extended.js +0 -291
  174. package/assets/plugin/shared/indicators.d.ts +0 -15
  175. package/assets/plugin/shared/indicators.js +0 -114
  176. package/assets/plugin/signals/conditions/registry.d.ts +0 -16
  177. package/assets/plugin/signals/conditions/registry.js +0 -1333
  178. package/assets/plugin/signals/conditions/types.d.ts +0 -1
  179. package/assets/plugin/signals/conditions/types.js +0 -4
  180. package/assets/plugin/signals/direction-rules.d.ts +0 -3
  181. package/assets/plugin/signals/direction-rules.js +0 -24
  182. package/assets/plugin/signals/entry-rules.d.ts +0 -6
  183. package/assets/plugin/signals/entry-rules.js +0 -33
  184. package/assets/plugin/signals/serialize-context.d.ts +0 -4
  185. package/assets/plugin/signals/serialize-context.js +0 -39
  186. package/assets/plugin/signals/stop-rules.d.ts +0 -3
  187. package/assets/plugin/signals/stop-rules.js +0 -48
  188. package/assets/plugin/signals/strategy-adapter.d.ts +0 -47
  189. package/assets/plugin/signals/strategy-adapter.js +0 -209
  190. package/assets/plugin/signals/types.d.ts +0 -1
  191. package/assets/plugin/signals/types.js +0 -8
  192. package/assets/plugin/simulator/exchange-simulator.d.ts +0 -105
  193. package/assets/plugin/simulator/exchange-simulator.js +0 -759
  194. package/assets/plugin/simulator/fill-engine.d.ts +0 -53
  195. package/assets/plugin/simulator/fill-engine.js +0 -280
  196. package/assets/plugin/simulator/paper-market-feed.d.ts +0 -26
  197. package/assets/plugin/simulator/paper-market-feed.js +0 -104
  198. package/assets/plugin/simulator/realistic-fills.d.ts +0 -59
  199. package/assets/plugin/simulator/realistic-fills.js +0 -175
  200. package/assets/plugin/simulator/types.d.ts +0 -228
  201. package/assets/plugin/simulator/types.js +0 -43
  202. package/assets/plugin/strategy/builtin-strategies.d.ts +0 -2
  203. package/assets/plugin/strategy/builtin-strategies.js +0 -113
  204. package/assets/plugin/strategy/condition-registry.d.ts +0 -3
  205. package/assets/plugin/strategy/condition-registry.js +0 -153
  206. package/assets/plugin/strategy/evaluator.d.ts +0 -70
  207. package/assets/plugin/strategy/evaluator.js +0 -98
  208. package/assets/plugin/tools/assessment-validation.d.ts +0 -141
  209. package/assets/plugin/tools/assessment-validation.js +0 -473
  210. package/assets/plugin/tools/attach-brackets.d.ts +0 -39
  211. package/assets/plugin/tools/attach-brackets.js +0 -564
  212. package/assets/plugin/tools/audit-bracket-protection.d.ts +0 -49
  213. package/assets/plugin/tools/audit-bracket-protection.js +0 -683
  214. package/assets/plugin/tools/bracket-control.d.ts +0 -12
  215. package/assets/plugin/tools/bracket-control.js +0 -35
  216. package/assets/plugin/tools/cancel-all-orders.d.ts +0 -9
  217. package/assets/plugin/tools/cancel-all-orders.js +0 -8
  218. package/assets/plugin/tools/cancel-order.d.ts +0 -14
  219. package/assets/plugin/tools/cancel-order.js +0 -60
  220. package/assets/plugin/tools/check-position-health.d.ts +0 -46
  221. package/assets/plugin/tools/check-position-health.js +0 -194
  222. package/assets/plugin/tools/clear-exchange-credentials.d.ts +0 -24
  223. package/assets/plugin/tools/clear-exchange-credentials.js +0 -70
  224. package/assets/plugin/tools/close-position.d.ts +0 -45
  225. package/assets/plugin/tools/close-position.js +0 -722
  226. package/assets/plugin/tools/create-order.d.ts +0 -82
  227. package/assets/plugin/tools/create-order.js +0 -1544
  228. package/assets/plugin/tools/exit-gate.d.ts +0 -58
  229. package/assets/plugin/tools/exit-gate.js +0 -162
  230. package/assets/plugin/tools/fetch-balance.d.ts +0 -5
  231. package/assets/plugin/tools/fetch-balance.js +0 -4
  232. package/assets/plugin/tools/fetch-ohlcv.d.ts +0 -11
  233. package/assets/plugin/tools/fetch-ohlcv.js +0 -8
  234. package/assets/plugin/tools/fetch-open-orders.d.ts +0 -7
  235. package/assets/plugin/tools/fetch-open-orders.js +0 -4
  236. package/assets/plugin/tools/fetch-positions.d.ts +0 -7
  237. package/assets/plugin/tools/fetch-positions.js +0 -4
  238. package/assets/plugin/tools/fetch-ticker.d.ts +0 -11
  239. package/assets/plugin/tools/fetch-ticker.js +0 -5
  240. package/assets/plugin/tools/get-agent-profile.d.ts +0 -4
  241. package/assets/plugin/tools/get-agent-profile.js +0 -6
  242. package/assets/plugin/tools/get-analytics.d.ts +0 -6
  243. package/assets/plugin/tools/get-analytics.js +0 -7
  244. package/assets/plugin/tools/get-backtest.d.ts +0 -12
  245. package/assets/plugin/tools/get-backtest.js +0 -91
  246. package/assets/plugin/tools/get-basis.d.ts +0 -7
  247. package/assets/plugin/tools/get-basis.js +0 -7
  248. package/assets/plugin/tools/get-bracket-config.d.ts +0 -11
  249. package/assets/plugin/tools/get-bracket-config.js +0 -24
  250. package/assets/plugin/tools/get-cascade-risk.d.ts +0 -7
  251. package/assets/plugin/tools/get-cascade-risk.js +0 -8
  252. package/assets/plugin/tools/get-crypto-metrics.d.ts +0 -18
  253. package/assets/plugin/tools/get-crypto-metrics.js +0 -62
  254. package/assets/plugin/tools/get-cvd.d.ts +0 -6
  255. package/assets/plugin/tools/get-cvd.js +0 -6
  256. package/assets/plugin/tools/get-divergences.d.ts +0 -6
  257. package/assets/plugin/tools/get-divergences.js +0 -6
  258. package/assets/plugin/tools/get-funding-context.d.ts +0 -6
  259. package/assets/plugin/tools/get-funding-context.js +0 -16
  260. package/assets/plugin/tools/get-liquidation-levels.d.ts +0 -7
  261. package/assets/plugin/tools/get-liquidation-levels.js +0 -7
  262. package/assets/plugin/tools/get-liquidation-pulse.d.ts +0 -9
  263. package/assets/plugin/tools/get-liquidation-pulse.js +0 -22
  264. package/assets/plugin/tools/get-market-breadth.d.ts +0 -6
  265. package/assets/plugin/tools/get-market-breadth.js +0 -8
  266. package/assets/plugin/tools/get-market-intel.d.ts +0 -19
  267. package/assets/plugin/tools/get-market-intel.js +0 -116
  268. package/assets/plugin/tools/get-market-structure.d.ts +0 -47
  269. package/assets/plugin/tools/get-market-structure.js +0 -198
  270. package/assets/plugin/tools/get-my-mined-patterns.d.ts +0 -20
  271. package/assets/plugin/tools/get-my-mined-patterns.js +0 -61
  272. package/assets/plugin/tools/get-my-proposed-learnings.d.ts +0 -20
  273. package/assets/plugin/tools/get-my-proposed-learnings.js +0 -55
  274. package/assets/plugin/tools/get-my-recent-reviews.d.ts +0 -22
  275. package/assets/plugin/tools/get-my-recent-reviews.js +0 -66
  276. package/assets/plugin/tools/get-orderbook.d.ts +0 -21
  277. package/assets/plugin/tools/get-orderbook.js +0 -32
  278. package/assets/plugin/tools/get-pattern-scan.d.ts +0 -7
  279. package/assets/plugin/tools/get-pattern-scan.js +0 -8
  280. package/assets/plugin/tools/get-regime.d.ts +0 -6
  281. package/assets/plugin/tools/get-regime.js +0 -7
  282. package/assets/plugin/tools/get-relevant-learnings.d.ts +0 -21
  283. package/assets/plugin/tools/get-relevant-learnings.js +0 -65
  284. package/assets/plugin/tools/get-resting-liquidity.d.ts +0 -6
  285. package/assets/plugin/tools/get-resting-liquidity.js +0 -11
  286. package/assets/plugin/tools/get-risk-scenario.d.ts +0 -29
  287. package/assets/plugin/tools/get-risk-scenario.js +0 -47
  288. package/assets/plugin/tools/get-risk-summary.d.ts +0 -51
  289. package/assets/plugin/tools/get-risk-summary.js +0 -118
  290. package/assets/plugin/tools/get-sentiment.d.ts +0 -4
  291. package/assets/plugin/tools/get-sentiment.js +0 -6
  292. package/assets/plugin/tools/get-session-review.d.ts +0 -7
  293. package/assets/plugin/tools/get-session-review.js +0 -8
  294. package/assets/plugin/tools/get-setup-detail.d.ts +0 -7
  295. package/assets/plugin/tools/get-setup-detail.js +0 -322
  296. package/assets/plugin/tools/get-signals.d.ts +0 -15
  297. package/assets/plugin/tools/get-signals.js +0 -54
  298. package/assets/plugin/tools/get-sizing.d.ts +0 -6
  299. package/assets/plugin/tools/get-sizing.js +0 -6
  300. package/assets/plugin/tools/get-trade-feedback.d.ts +0 -7
  301. package/assets/plugin/tools/get-trade-feedback.js +0 -8
  302. package/assets/plugin/tools/get-trade-flow.d.ts +0 -7
  303. package/assets/plugin/tools/get-trade-flow.js +0 -7
  304. package/assets/plugin/tools/get-volume-analysis.d.ts +0 -21
  305. package/assets/plugin/tools/get-volume-analysis.js +0 -74
  306. package/assets/plugin/tools/get-volume-profile.d.ts +0 -7
  307. package/assets/plugin/tools/get-volume-profile.js +0 -7
  308. package/assets/plugin/tools/get-wave9-status.d.ts +0 -127
  309. package/assets/plugin/tools/get-wave9-status.js +0 -796
  310. package/assets/plugin/tools/helpers.d.ts +0 -26
  311. package/assets/plugin/tools/helpers.js +0 -39
  312. package/assets/plugin/tools/intel-api.d.ts +0 -34
  313. package/assets/plugin/tools/intel-api.js +0 -119
  314. package/assets/plugin/tools/intel-cache.d.ts +0 -25
  315. package/assets/plugin/tools/intel-cache.js +0 -148
  316. package/assets/plugin/tools/list-strategies.d.ts +0 -17
  317. package/assets/plugin/tools/list-strategies.js +0 -23
  318. package/assets/plugin/tools/modify-stop.d.ts +0 -21
  319. package/assets/plugin/tools/modify-stop.js +0 -120
  320. package/assets/plugin/tools/modify-target.d.ts +0 -21
  321. package/assets/plugin/tools/modify-target.js +0 -110
  322. package/assets/plugin/tools/propose-learning.d.ts +0 -22
  323. package/assets/plugin/tools/propose-learning.js +0 -65
  324. package/assets/plugin/tools/query-review-outcomes.d.ts +0 -30
  325. package/assets/plugin/tools/query-review-outcomes.js +0 -64
  326. package/assets/plugin/tools/query-trades.d.ts +0 -21
  327. package/assets/plugin/tools/query-trades.js +0 -37
  328. package/assets/plugin/tools/record-position-reviews.d.ts +0 -38
  329. package/assets/plugin/tools/record-position-reviews.js +0 -147
  330. package/assets/plugin/tools/save-strategy.d.ts +0 -16
  331. package/assets/plugin/tools/save-strategy.js +0 -46
  332. package/assets/plugin/tools/scan-pairs.d.ts +0 -22
  333. package/assets/plugin/tools/scan-pairs.js +0 -234
  334. package/assets/plugin/tools/score-setup.d.ts +0 -31
  335. package/assets/plugin/tools/score-setup.js +0 -268
  336. package/assets/plugin/tools/set-bracket-requirement.d.ts +0 -18
  337. package/assets/plugin/tools/set-bracket-requirement.js +0 -81
  338. package/assets/plugin/tools/set-exchange-credentials.d.ts +0 -25
  339. package/assets/plugin/tools/set-exchange-credentials.js +0 -80
  340. package/assets/plugin/tools/set-trading-mode.d.ts +0 -26
  341. package/assets/plugin/tools/set-trading-mode.js +0 -135
  342. package/assets/plugin/tools/test-exchange-credentials.d.ts +0 -16
  343. package/assets/plugin/tools/test-exchange-credentials.js +0 -100
  344. package/assets/plugin/tools/toggle-strategy.d.ts +0 -8
  345. package/assets/plugin/tools/toggle-strategy.js +0 -15
  346. package/assets/plugin/trading-params-cache.d.ts +0 -26
  347. package/assets/plugin/trading-params-cache.js +0 -52
  348. package/assets/plugin/types.d.ts +0 -134
  349. package/assets/plugin/types.js +0 -7
  350. package/assets/plugin/util/plugin-paths.d.ts +0 -3
  351. package/assets/plugin/util/plugin-paths.js +0 -15
  352. package/assets/plugin/venues/hyperliquid/hl-balance.d.ts +0 -116
  353. package/assets/plugin/venues/hyperliquid/hl-balance.js +0 -145
  354. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.d.ts +0 -123
  355. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.js +0 -533
  356. package/assets/plugin/venues/hyperliquid/hl-brackets.d.ts +0 -102
  357. package/assets/plugin/venues/hyperliquid/hl-brackets.js +0 -172
  358. package/assets/plugin/venues/hyperliquid/hl-cloid.d.ts +0 -22
  359. package/assets/plugin/venues/hyperliquid/hl-cloid.js +0 -82
  360. package/assets/plugin/venues/hyperliquid/hl-info-cache.d.ts +0 -46
  361. package/assets/plugin/venues/hyperliquid/hl-info-cache.js +0 -125
  362. package/assets/plugin/venues/hyperliquid/hl-live-adapter.d.ts +0 -146
  363. package/assets/plugin/venues/hyperliquid/hl-live-adapter.js +0 -728
  364. package/assets/plugin/venues/hyperliquid/hl-precision.d.ts +0 -61
  365. package/assets/plugin/venues/hyperliquid/hl-precision.js +0 -176
  366. package/assets/plugin/venues/hyperliquid/hl-private.d.ts +0 -88
  367. package/assets/plugin/venues/hyperliquid/hl-private.js +0 -357
  368. package/assets/plugin/venues/hyperliquid/hl-public.d.ts +0 -79
  369. package/assets/plugin/venues/hyperliquid/hl-public.js +0 -436
  370. package/assets/plugin/venues/hyperliquid/hl-rate-gate.d.ts +0 -57
  371. package/assets/plugin/venues/hyperliquid/hl-rate-gate.js +0 -220
  372. package/assets/plugin/venues/hyperliquid/hl-user-stream.d.ts +0 -90
  373. package/assets/plugin/venues/hyperliquid/hl-user-stream.js +0 -220
  374. package/assets/plugin/venues/registry.d.ts +0 -38
  375. package/assets/plugin/venues/registry.js +0 -46
  376. package/assets/plugin/venues/symbols.d.ts +0 -43
  377. package/assets/plugin/venues/symbols.js +0 -107
  378. package/assets/plugin/wave9/live-account-capture.d.ts +0 -67
  379. package/assets/plugin/wave9/live-account-capture.js +0 -435
  380. package/assets/plugin/wave9/live-autonomous-protection.d.ts +0 -39
  381. package/assets/plugin/wave9/live-autonomous-protection.js +0 -112
  382. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.d.ts +0 -33
  383. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.js +0 -115
  384. package/assets/plugin/wave9/live-execution-ledger.d.ts +0 -107
  385. package/assets/plugin/wave9/live-execution-ledger.js +0 -498
  386. package/assets/plugin/wave9/live-position-confirmation.d.ts +0 -18
  387. package/assets/plugin/wave9/live-position-confirmation.js +0 -111
  388. package/assets/plugin/wave9/live-residual-protection.d.ts +0 -18
  389. package/assets/plugin/wave9/live-residual-protection.js +0 -250
  390. package/assets/plugin/wave9/live-startup-reconciliation.d.ts +0 -38
  391. package/assets/plugin/wave9/live-startup-reconciliation.js +0 -454
  392. package/assets/plugin/wave9/live-symbol-ownership.d.ts +0 -20
  393. package/assets/plugin/wave9/live-symbol-ownership.js +0 -132
  394. package/assets/plugin/wave9/paper-admission-guard.d.ts +0 -199
  395. package/assets/plugin/wave9/paper-admission-guard.js +0 -650
  396. package/assets/plugin/wave9/usdm-evidence-provider.d.ts +0 -42
  397. package/assets/plugin/wave9/usdm-evidence-provider.js +0 -133
@@ -1,2 +0,0 @@
1
- export type { LogLevel } from '@reefclaw/shared';
2
- export { logger, setLogLevel, formatError } from '@reefclaw/shared';
@@ -1,2 +0,0 @@
1
- // Re-export from @reefclaw/shared (canonical source of truth).
2
- export { logger, setLogLevel, formatError } from '@reefclaw/shared';
@@ -1,21 +0,0 @@
1
- export interface MfeInputs {
2
- side: 'long' | 'short';
3
- entryPrice: number;
4
- /** Stop at fill, frozen. If undefined, MFE-in-R is undefined. */
5
- originalStopPrice?: number;
6
- /** Latest mark observation. */
7
- markPrice: number;
8
- /** Prior peak from the last update (undefined on first call). */
9
- priorPeakPrice?: number;
10
- }
11
- export interface MfeOutputs {
12
- /** New peak price after observing this mark. */
13
- mfePeakPrice: number;
14
- /** Peak in R-multiples. Undefined if originalStopPrice missing. */
15
- mfeR?: number;
16
- /** Give-back ratio in [0, 1+]. Undefined if peak is not favourable yet. */
17
- giveBackRatio?: number;
18
- }
19
- /** One-shot update: given current state + new mark, return the new peak,
20
- * R-multiple, and give-back. Pure function — caller persists the result. */
21
- export declare function updateMfe(input: MfeInputs): MfeOutputs;
@@ -1,68 +0,0 @@
1
- // MFE (Max Favourable Excursion) tracking — pure math, no I/O.
2
- //
3
- // Component C of POSITION_MANAGEMENT_PLAN.md. The agent today has no felt
4
- // sense of "I am leaking edge" because the heartbeat snapshot doesn't carry
5
- // MFE or give-back. These helpers compute both from the entry-time stop and
6
- // the running peak, and are wired into the paper simulator's mark-tick path
7
- // and the live adapter's getPositions decoration.
8
- //
9
- // Conventions (confirmed with operator 2026-04-27):
10
- // - 1R is denominated against the ORIGINAL stop at fill, frozen for the life
11
- // of the position. Ratcheting the live stopPrice does not change R.
12
- // - Without an originalStopPrice (e.g. paper position opened without a stop),
13
- // `mfeR` and `giveBackRatio` are reported as `undefined` rather than
14
- // fabricated from a default risk unit.
15
- // - Sign is always favourable: long positions track the highest mark seen,
16
- // short positions track the lowest. `mfeR` is non-negative.
17
- //
18
- // Edge cases handled:
19
- // - Pre-entry tick (entry price not yet observed): caller should not invoke.
20
- // - Adverse-only excursion (MFE never positive): `giveBackRatio` is left
21
- // `undefined` because the ratio is meaningless when peak <= 0.
22
- // - Tied peak (mark equals prior peak): treated as the peak; give-back stays 0.
23
- /** Compute the favourable distance (always >= 0) between mark and entry. */
24
- function favourableDelta(side, entry, mark) {
25
- return side === 'long' ? mark - entry : entry - mark;
26
- }
27
- /** True if `candidate` is at least as favourable as `incumbent` for this side. */
28
- function atLeastAsFavourable(side, candidate, incumbent) {
29
- return side === 'long' ? candidate >= incumbent : candidate <= incumbent;
30
- }
31
- /** One-shot update: given current state + new mark, return the new peak,
32
- * R-multiple, and give-back. Pure function — caller persists the result. */
33
- export function updateMfe(input) {
34
- const { side, entryPrice, originalStopPrice, markPrice, priorPeakPrice } = input;
35
- if (!Number.isFinite(markPrice) || !Number.isFinite(entryPrice)) {
36
- // Caller error — return prior peak unchanged.
37
- return {
38
- mfePeakPrice: priorPeakPrice ?? entryPrice,
39
- mfeR: undefined,
40
- giveBackRatio: undefined,
41
- };
42
- }
43
- // Seed peak to entry on first observation, then ratchet only in the
44
- // favourable direction.
45
- const seedPeak = priorPeakPrice ?? entryPrice;
46
- const newPeak = atLeastAsFavourable(side, markPrice, seedPeak) ? markPrice : seedPeak;
47
- // Compute R if we have an original stop. R denominator is the at-fill
48
- // distance from entry to stop; undefined or non-positive denominator means
49
- // we can't report R.
50
- const rDenominator = originalStopPrice !== undefined && Number.isFinite(originalStopPrice)
51
- ? Math.abs(entryPrice - originalStopPrice)
52
- : 0;
53
- if (rDenominator <= 0) {
54
- return { mfePeakPrice: newPeak, mfeR: undefined, giveBackRatio: undefined };
55
- }
56
- const peakFavourableDelta = favourableDelta(side, entryPrice, newPeak);
57
- const currentFavourableDelta = favourableDelta(side, entryPrice, markPrice);
58
- // mfeR is always non-negative — clamp adverse-only positions to 0.
59
- const mfeR = Math.max(0, peakFavourableDelta / rDenominator);
60
- // Give-back is only meaningful once peak has actually moved into profit.
61
- // Negative peak (price went the wrong way and never recovered) → undefined.
62
- let giveBackRatio;
63
- if (peakFavourableDelta > 0) {
64
- const givenBack = peakFavourableDelta - currentFavourableDelta;
65
- giveBackRatio = Math.max(0, givenBack / peakFavourableDelta);
66
- }
67
- return { mfePeakPrice: newPeak, mfeR, giveBackRatio };
68
- }
@@ -1 +0,0 @@
1
- export { validateModeTransition, modeRequiresCredentials, type ModeTransitionResult, } from '@reefclaw/shared';
@@ -1,3 +0,0 @@
1
- // Mode ladder — re-exported from @reefclaw/shared so plugin + skill + webapp
2
- // all use the same source of truth. See shared/src/trading-mode.ts.
3
- export { validateModeTransition, modeRequiresCredentials, } from '@reefclaw/shared';
@@ -1,90 +0,0 @@
1
- import type { IExchangeAdapter } from '../exchange-adapter.js';
2
- import type { ExchangeConfig, TradingMode } from '../types.js';
3
- import type { ExchangeSimulator } from '../simulator/exchange-simulator.js';
4
- import type { PaperMarketFeed } from '../simulator/paper-market-feed.js';
5
- import { LiveAdapter } from '../live/live-adapter.js';
6
- import { PositionWatcher } from '../live/stop-watcher.js';
7
- import type { TradingOperationLock } from '../lifecycle/trading-operation-lock.js';
8
- export interface MicroLiveConfig {
9
- sizeCapPercent?: number;
10
- maxPositionUSDT?: number;
11
- }
12
- export interface BuildAdapterInput {
13
- mode: TradingMode;
14
- exchange: ExchangeConfig | null;
15
- microLive?: MicroLiveConfig;
16
- simulator: ExchangeSimulator;
17
- }
18
- /** Wave 9 safety wiring is created only after its durable ledger is loaded.
19
- * Runtime reapplies these hooks to both the bootstrap objects and every
20
- * adapter/watcher built by a reconnect. */
21
- export interface Wave9LiveLifecycleHooks {
22
- configureLiveAdapter?(adapter: LiveAdapter): void;
23
- configurePositionWatcher?(watcher: PositionWatcher, adapter: IExchangeAdapter): void;
24
- }
25
- /** Pure-ish factory: builds an adapter for the requested mode.
26
- * Falls back to PaperAdapter if a live mode is requested without credentials —
27
- * callers should pre-validate via `modeRequiresCredentials`, but this
28
- * defense-in-depth prevents a crash if validation is bypassed. */
29
- export declare function buildAdapter(input: BuildAdapterInput): IExchangeAdapter;
30
- /**
31
- * Mutable runtime holder. Held once per plugin registration.
32
- *
33
- * `adapterBox.adapter` is the indirection point: tool closures read it at
34
- * execute time so a swap is visible without re-registering tools.
35
- */
36
- export declare class PluginRuntime {
37
- /** Box object so existing `const adapterDeps = { adapter }` patterns still
38
- * work via `adapterDeps.adapter = runtime.adapterBox.adapter`. In practice
39
- * we pass the runtime itself and read `runtime.adapter` at call sites. */
40
- private _adapter;
41
- private _mode;
42
- private _stopWatcher;
43
- private readonly simulator;
44
- /** Paper-only background market-data feed (refreshes simulator marks so
45
- * stops fire and NAV/uPnL stay live for non-dashboard symbols). Lives for
46
- * the runtime's lifetime; started in paper, stopped in live. */
47
- private readonly _marketFeed;
48
- private readonly operationLock?;
49
- private wave9LiveLifecycleHooks?;
50
- /** Observer applied to EVERY stop-watcher this runtime creates (reconnects
51
- * included). index.ts uses it to attach the journal auto-capture listener
52
- * for watcher closes (issue #199) — without it, a live<->paper reconnect
53
- * would silently shed the capture wiring. */
54
- private readonly onWatcherCreated?;
55
- /** Reconnect is serialized — a second caller waits for the first to finish
56
- * so we never tear down an adapter that's mid-rebuild. */
57
- private reconnectInFlight;
58
- constructor(initial: {
59
- adapter: IExchangeAdapter;
60
- mode: TradingMode;
61
- simulator: ExchangeSimulator;
62
- stopWatcher?: PositionWatcher | null;
63
- marketFeed?: PaperMarketFeed | null;
64
- operationLock?: TradingOperationLock;
65
- onWatcherCreated?: (watcher: PositionWatcher) => void;
66
- });
67
- get adapter(): IExchangeAdapter;
68
- get mode(): TradingMode;
69
- get stopWatcher(): PositionWatcher | null;
70
- get marketFeed(): PaperMarketFeed | null;
71
- setWave9LiveLifecycleHooks(hooks?: Wave9LiveLifecycleHooks): void;
72
- /**
73
- * Swap the current adapter for a new one built from `next`. The old
74
- * adapter's background loops are stopped before the new one is wired in.
75
- *
76
- * `deps.adapterDeps` is the tool-dependency object used by trading tools —
77
- * its `.adapter` reference is updated in place so tools see the new adapter
78
- * without needing re-registration.
79
- */
80
- reconnect(next: {
81
- mode: TradingMode;
82
- exchange: ExchangeConfig | null;
83
- microLive?: MicroLiveConfig;
84
- }, deps: {
85
- adapterDeps: {
86
- adapter: IExchangeAdapter;
87
- };
88
- }): Promise<void>;
89
- private doReconnect;
90
- }
@@ -1,184 +0,0 @@
1
- // Plugin runtime holder — the mutable state that survives across a
2
- // credential/mode swap. The rest of index.ts closes over this object
3
- // instead of over `let` bindings, so a reconnect can atomically:
4
- //
5
- // 1. Stop the live adapter's background loops (order poller + reconciler)
6
- // 2. Stop the stop-watcher
7
- // 3. Build a new adapter from updated config
8
- // 4. Swap `runtime.adapter` in place (closures see the new value)
9
- // 5. Start a new stop-watcher pointed at the new adapter
10
- //
11
- // Doing this without dropping tool registrations or rebuilding the whole
12
- // plugin is what makes the dashboard "Reconnect Exchange" button feel
13
- // instant — no gateway restart required.
14
- import { PaperAdapter } from '../paper-adapter.js';
15
- import { LiveAdapter } from '../live/live-adapter.js';
16
- import { PositionWatcher } from '../live/stop-watcher.js';
17
- import { loadBracketMode } from '../config/brackets-config.js';
18
- import { loadStopWatcherIntervalMs } from '../config/plugin-config-io.js';
19
- import { logger, formatError } from '../logger.js';
20
- const TAG = 'plugin-runtime';
21
- /** Pure-ish factory: builds an adapter for the requested mode.
22
- * Falls back to PaperAdapter if a live mode is requested without credentials —
23
- * callers should pre-validate via `modeRequiresCredentials`, but this
24
- * defense-in-depth prevents a crash if validation is bypassed. */
25
- export function buildAdapter(input) {
26
- const { mode, exchange, microLive, simulator } = input;
27
- if (mode === 'PAPER' || mode === 'SHADOW') {
28
- // Shadow mode uses a paper adapter for execution; the separate
29
- // ShadowTracker wraps a BinancePrivateApi for real-balance comparison.
30
- return new PaperAdapter(simulator);
31
- }
32
- if (!exchange) {
33
- logger.warn(TAG, `${mode} requested without credentials — falling back to PAPER`);
34
- return new PaperAdapter(simulator);
35
- }
36
- // Read bracket-mode from plugin-config at adapter build time so a config
37
- // flip + "Reconnect Exchange" pattern picks up the new mode on the next swap.
38
- const bracketMode = loadBracketMode();
39
- return new LiveAdapter(exchange, mode, microLive, bracketMode);
40
- }
41
- /**
42
- * Mutable runtime holder. Held once per plugin registration.
43
- *
44
- * `adapterBox.adapter` is the indirection point: tool closures read it at
45
- * execute time so a swap is visible without re-registering tools.
46
- */
47
- export class PluginRuntime {
48
- /** Box object so existing `const adapterDeps = { adapter }` patterns still
49
- * work via `adapterDeps.adapter = runtime.adapterBox.adapter`. In practice
50
- * we pass the runtime itself and read `runtime.adapter` at call sites. */
51
- _adapter;
52
- _mode;
53
- _stopWatcher = null;
54
- simulator;
55
- /** Paper-only background market-data feed (refreshes simulator marks so
56
- * stops fire and NAV/uPnL stay live for non-dashboard symbols). Lives for
57
- * the runtime's lifetime; started in paper, stopped in live. */
58
- _marketFeed;
59
- operationLock;
60
- wave9LiveLifecycleHooks;
61
- /** Observer applied to EVERY stop-watcher this runtime creates (reconnects
62
- * included). index.ts uses it to attach the journal auto-capture listener
63
- * for watcher closes (issue #199) — without it, a live<->paper reconnect
64
- * would silently shed the capture wiring. */
65
- onWatcherCreated;
66
- /** Reconnect is serialized — a second caller waits for the first to finish
67
- * so we never tear down an adapter that's mid-rebuild. */
68
- reconnectInFlight = null;
69
- constructor(initial) {
70
- this._adapter = initial.adapter;
71
- this._mode = initial.mode;
72
- this.simulator = initial.simulator;
73
- this._stopWatcher = initial.stopWatcher ?? null;
74
- this._marketFeed = initial.marketFeed ?? null;
75
- this.operationLock = initial.operationLock;
76
- this.onWatcherCreated = initial.onWatcherCreated;
77
- }
78
- get adapter() { return this._adapter; }
79
- get mode() { return this._mode; }
80
- get stopWatcher() { return this._stopWatcher; }
81
- get marketFeed() { return this._marketFeed; }
82
- setWave9LiveLifecycleHooks(hooks) {
83
- this.wave9LiveLifecycleHooks = hooks;
84
- if (this._adapter instanceof LiveAdapter) {
85
- hooks?.configureLiveAdapter?.(this._adapter);
86
- }
87
- if (this._stopWatcher) {
88
- hooks?.configurePositionWatcher?.(this._stopWatcher, this._adapter);
89
- }
90
- }
91
- /**
92
- * Swap the current adapter for a new one built from `next`. The old
93
- * adapter's background loops are stopped before the new one is wired in.
94
- *
95
- * `deps.adapterDeps` is the tool-dependency object used by trading tools —
96
- * its `.adapter` reference is updated in place so tools see the new adapter
97
- * without needing re-registration.
98
- */
99
- async reconnect(next, deps) {
100
- // Serialize concurrent reconnects.
101
- if (this.reconnectInFlight) {
102
- await this.reconnectInFlight;
103
- }
104
- const run = this.operationLock
105
- ? this.operationLock.withAccountLock('runtime-reconnect', () => this.doReconnect(next, deps))
106
- : this.doReconnect(next, deps);
107
- this.reconnectInFlight = run.finally(() => {
108
- this.reconnectInFlight = null;
109
- });
110
- await run;
111
- }
112
- async doReconnect(next, deps) {
113
- logger.info(TAG, `Reconnect: ${this._mode} → ${next.mode}`);
114
- // 1. Stop old stop-watcher.
115
- if (this._stopWatcher) {
116
- try {
117
- this._stopWatcher.stop();
118
- }
119
- catch (err) {
120
- logger.warn(TAG, `stopWatcher.stop failed: ${formatError(err)}`);
121
- }
122
- this._stopWatcher = null;
123
- }
124
- // 2. Tear down old live adapter background loops.
125
- const old = this._adapter;
126
- if (old instanceof LiveAdapter) {
127
- try {
128
- old.shutdown();
129
- }
130
- catch (err) {
131
- logger.warn(TAG, `old adapter shutdown failed: ${formatError(err)}`);
132
- }
133
- }
134
- // 3. Build the new adapter.
135
- const fresh = buildAdapter({
136
- mode: next.mode,
137
- exchange: next.exchange,
138
- microLive: next.microLive,
139
- simulator: this.simulator,
140
- });
141
- // Install autonomous protection callbacks before initialization can emit
142
- // user-data or bracket-reconciler events.
143
- if (fresh instanceof LiveAdapter) {
144
- this.wave9LiveLifecycleHooks?.configureLiveAdapter?.(fresh);
145
- }
146
- // 4. Fire async init for live adapters (non-blocking — readiness flips
147
- // INIT_PENDING → READY/DEGRADED/BLOCKED on its own).
148
- if (fresh instanceof LiveAdapter) {
149
- fresh.initialize().catch(err => {
150
- logger.error(TAG, `New adapter init failed: ${formatError(err)}`);
151
- });
152
- }
153
- // 5. Atomically publish the new adapter.
154
- // Note: `next.mode` is the operator's intent (e.g. SHADOW), which is
155
- // not always the same as `fresh.mode` — PaperAdapter is used for both
156
- // PAPER and SHADOW execution, and reports its mode as 'PAPER'. The
157
- // runtime tracks the user-facing mode separately so tools that branch
158
- // on SHADOW (e.g. risk summary) keep working.
159
- this._adapter = fresh;
160
- this._mode = next.mode;
161
- deps.adapterDeps.adapter = fresh;
162
- // 6. Start a new stop-watcher bound to the new adapter. Re-read the
163
- // operator's cadence override — building with `undefined` here
164
- // silently reverted plugin-config `stopWatcher.intervalMs` to the
165
- // default on every reconnect.
166
- const watcher = new PositionWatcher(fresh, loadStopWatcherIntervalMs(), this.operationLock);
167
- this.wave9LiveLifecycleHooks?.configurePositionWatcher?.(watcher, fresh);
168
- this.onWatcherCreated?.(watcher);
169
- watcher.start();
170
- this._stopWatcher = watcher;
171
- // 7. Paper market feed follows the mode: run it when the new adapter is
172
- // paper (so marks/stops/NAV stay live), stop it in live (the live
173
- // adapter sources marks from Binance directly). Idempotent both ways.
174
- if (this._marketFeed) {
175
- if (fresh.isLive) {
176
- this._marketFeed.stop();
177
- }
178
- else {
179
- this._marketFeed.start();
180
- }
181
- }
182
- logger.info(TAG, `Reconnect complete: now in ${this._mode} mode (readiness=${fresh.readiness})`);
183
- }
184
- }
@@ -1,92 +0,0 @@
1
- {
2
- "id": "reefclaw-paper-trading",
3
- "name": "ReefClaw Paper Trading",
4
- "version": "0.1.0",
5
- "description": "Paper trading plugin with real Binance market data and simulated execution. No API keys required.",
6
- "author": "ReefClaw",
7
- "activation": {
8
- "onStartup": true
9
- },
10
- "contracts": {
11
- "tools": [
12
- "fetch_ticker",
13
- "fetch_ohlcv",
14
- "fetch_balance",
15
- "fetch_positions",
16
- "fetch_open_orders",
17
- "create_order",
18
- "cancel_order",
19
- "cancel_all_orders",
20
- "close_position",
21
- "modify_stop",
22
- "modify_target",
23
- "attach_brackets",
24
- "audit_bracket_protection",
25
- "record_position_reviews",
26
- "get_my_recent_reviews",
27
- "get_relevant_learnings",
28
- "get_my_mined_patterns",
29
- "get_my_proposed_learnings",
30
- "propose_learning",
31
- "query_review_outcomes",
32
- "get_market_structure",
33
- "get_crypto_metrics",
34
- "get_volume_analysis",
35
- "get_risk_summary",
36
- "get_market_intel",
37
- "get_regime",
38
- "get_signals",
39
- "get_wave9_status",
40
- "get_analytics",
41
- "get_orderbook",
42
- "get_volume_profile",
43
- "get_liquidation_levels",
44
- "get_trade_feedback",
45
- "get_trade_flow",
46
- "score_setup",
47
- "get_sizing",
48
- "check_position_health",
49
- "get_risk_scenario",
50
- "get_session_review",
51
- "get_backtest",
52
- "get_pattern_scan",
53
- "save_strategy",
54
- "list_strategies",
55
- "toggle_strategy",
56
- "scan_pairs",
57
- "get_setup_detail",
58
- "query_trades",
59
- "get_agent_profile",
60
- "get_cvd",
61
- "get_market_breadth",
62
- "get_basis",
63
- "get_cascade_risk",
64
- "get_sentiment",
65
- "get_divergences",
66
- "get_liquidation_pulse",
67
- "get_resting_liquidity",
68
- "get_funding_context",
69
- "set_exchange_credentials",
70
- "set_trading_mode",
71
- "test_exchange_credentials",
72
- "clear_exchange_credentials",
73
- "get_bracket_config",
74
- "set_bracket_requirement"
75
- ]
76
- },
77
- "configSchema": {
78
- "type": "object",
79
- "properties": {
80
- "startingBalance": {
81
- "type": "number",
82
- "default": 10000,
83
- "description": "Starting USDT balance for paper trading"
84
- },
85
- "symbol": {
86
- "type": "string",
87
- "default": "BTC/USDT",
88
- "description": "Default trading symbol"
89
- }
90
- }
91
- }
92
- }
@@ -1,24 +0,0 @@
1
- import type { IExchangeAdapter, AdapterReadiness, OrderOptions } from './exchange-adapter.js';
2
- import type { ExchangeSimulator } from './simulator/exchange-simulator.js';
3
- import type { CcxtOrder, CcxtBalance, CcxtPosition } from './types.js';
4
- import type { PositionMetadata, CloseReason } from './simulator/types.js';
5
- export declare class PaperAdapter implements IExchangeAdapter {
6
- private simulator;
7
- readonly mode: "PAPER";
8
- readonly isLive = false;
9
- readonly readiness: AdapterReadiness;
10
- constructor(simulator: ExchangeSimulator);
11
- /** Get the underlying simulator (for paper-only operations like ATR, orderbook, state). */
12
- getSimulator(): ExchangeSimulator;
13
- createOrder(symbol: string, side: 'buy' | 'sell', type: 'market' | 'limit', amount: number, price?: number, metadata?: PositionMetadata, _options?: OrderOptions): Promise<CcxtOrder>;
14
- cancelOrder(orderId: string, _symbol?: string): Promise<CcxtOrder>;
15
- cancelAllOrders(symbol?: string): Promise<CcxtOrder[]>;
16
- closePosition(symbol: string, closeReason?: CloseReason): Promise<CcxtOrder>;
17
- getBalance(): Promise<CcxtBalance>;
18
- getPositions(symbol?: string): Promise<CcxtPosition[]>;
19
- /** Paper has no exchange fetch to fail — position state is always known. */
20
- getPositionsOrNull(symbol?: string): Promise<CcxtPosition[] | null>;
21
- getOpenOrders(symbol?: string): Promise<CcxtOrder[]>;
22
- fetchOrder(orderId: string, _symbol?: string): Promise<CcxtOrder | null>;
23
- getLastPrice(symbol: string): Promise<number | null>;
24
- }
@@ -1,91 +0,0 @@
1
- // PaperAdapter — wraps ExchangeSimulator to implement IExchangeAdapter.
2
- // No behavioral changes — just a thin async wrapper for uniform interface.
3
- export class PaperAdapter {
4
- simulator;
5
- mode = 'PAPER';
6
- isLive = false;
7
- readiness = 'READY'; // Paper is always ready
8
- constructor(simulator) {
9
- this.simulator = simulator;
10
- }
11
- /** Get the underlying simulator (for paper-only operations like ATR, orderbook, state). */
12
- getSimulator() {
13
- return this.simulator;
14
- }
15
- async createOrder(symbol, side, type, amount, price, metadata, _options) {
16
- // Paper mode ignores OrderOptions (clientOrderId, reduceOnly, positionSide)
17
- return this.simulator.createOrder(symbol, side, type, amount, price, metadata);
18
- }
19
- async cancelOrder(orderId, _symbol) {
20
- return this.simulator.cancelOrder(orderId);
21
- }
22
- async cancelAllOrders(symbol) {
23
- return this.simulator.cancelAllOrders(symbol);
24
- }
25
- async closePosition(symbol, closeReason) {
26
- return this.simulator.closePosition(symbol, closeReason);
27
- }
28
- async getBalance() {
29
- return this.simulator.getBalance();
30
- }
31
- async getPositions(symbol) {
32
- return this.simulator.getPositions(symbol);
33
- }
34
- /** Paper has no exchange fetch to fail — position state is always known. */
35
- async getPositionsOrNull(symbol) {
36
- return this.simulator.getPositions(symbol);
37
- }
38
- async getOpenOrders(symbol) {
39
- return this.simulator.getOpenOrders(symbol);
40
- }
41
- async fetchOrder(orderId, _symbol) {
42
- // Search open orders, then trade history for filled/canceled orders
43
- const state = this.simulator.getState();
44
- const openOrder = state.openOrders.find(o => o.id === orderId);
45
- if (openOrder) {
46
- return {
47
- id: openOrder.id,
48
- symbol: openOrder.symbol,
49
- side: openOrder.side,
50
- type: openOrder.type,
51
- status: openOrder.status,
52
- amount: openOrder.amount,
53
- filled: openOrder.filled,
54
- remaining: openOrder.amount - openOrder.filled,
55
- average: openOrder.average,
56
- price: openOrder.price,
57
- cost: openOrder.cost,
58
- fee: openOrder.fee,
59
- timestamp: new Date(openOrder.createdAt).getTime(),
60
- datetime: openOrder.createdAt,
61
- timeInForce: 'GTC',
62
- };
63
- }
64
- // Check trade history for filled orders
65
- const trade = state.tradeHistory.find(t => t.orderId === orderId);
66
- if (trade) {
67
- return {
68
- id: trade.orderId,
69
- symbol: trade.symbol,
70
- side: trade.side,
71
- type: 'market', // Trades don't store order type; market is the common close path
72
- status: 'closed',
73
- amount: trade.quantity,
74
- filled: trade.quantity,
75
- remaining: 0,
76
- average: trade.exitPrice,
77
- price: trade.exitPrice,
78
- cost: trade.exitPrice * trade.quantity,
79
- fee: { cost: trade.fee, currency: 'USDT' },
80
- timestamp: new Date(trade.closedAt).getTime(),
81
- datetime: trade.closedAt,
82
- timeInForce: 'GTC',
83
- };
84
- }
85
- return null;
86
- }
87
- async getLastPrice(symbol) {
88
- const ticker = this.simulator.getLastTicker(symbol);
89
- return ticker?.last ?? null;
90
- }
91
- }
@@ -1,66 +0,0 @@
1
- import type { SimulatorState } from '../simulator/types.js';
2
- export declare class StateManager {
3
- private readonly statePath;
4
- private saveTimer;
5
- private pendingState;
6
- constructor(pluginId: string, baseDir?: string);
7
- getStatePath(): string;
8
- /** Quarantine a state file that exists but won't parse, instead of letting
9
- * the caller silently overwrite it with a fresh default (which would wipe
10
- * the positions/orders/realized-PnL ledger). The corrupt bytes are renamed
11
- * to `<state>.corrupt-<ts>` so an operator can recover them. Returns true if
12
- * a corrupt file was quarantined. */
13
- private quarantineCorruptSync;
14
- /** Load state from disk. Returns null when the file is MISSING (fresh start)
15
- * OR when it exists-but-is-unreadable (in which case the corrupt bytes are
16
- * quarantined first — never silently discarded). The two cases are
17
- * distinguished in the log; both yield null so the caller seeds a default,
18
- * but a corrupt file is preserved as `<state>.corrupt-<ts>`. */
19
- load(): Promise<SimulatorState | null>;
20
- /** Save state atomically (write to a UNIQUE temp, rename to final). A unique
21
- * temp name (pid + uuid) is essential under the two-process model: both the
22
- * agent and gateway processes wire stateChanged→save, and a shared
23
- * `<state>.tmp` let their concurrent writes interleave into a torn file that
24
- * then parses as garbage on next boot. With a per-write temp, the worst case
25
- * degrades to a harmless last-writer-wins rename of two COMPLETE files. */
26
- save(state: SimulatorState): Promise<void>;
27
- /**
28
- * Debounced save — coalesces rapid mutations into one write per second.
29
- * Call this on every state change; it will save at most once per second.
30
- */
31
- debouncedSave(state: SimulatorState): void;
32
- /** Flush any pending debounced save immediately. */
33
- flush(): Promise<void>;
34
- /** Load state or create default if not found. */
35
- loadOrDefault(startingBalance: number, quoteCurrency: string): Promise<SimulatorState>;
36
- /** Synchronous load — for use in synchronous plugin register(). Same
37
- * missing-vs-corrupt distinction as load(): a corrupt file is quarantined
38
- * (preserved), never silently overwritten by the default the caller seeds. */
39
- loadSync(): SimulatorState | null;
40
- /** Synchronous load-or-create-default — for use in synchronous plugin register(). */
41
- loadOrDefaultSync(startingBalance: number, quoteCurrency: string): SimulatorState;
42
- private saveSyncSafe;
43
- }
44
- export interface PaperQuoteMigrationResult {
45
- state: SimulatorState;
46
- migrated: boolean;
47
- fromQuote: string;
48
- releasedPositions: number;
49
- droppedOrders: number;
50
- }
51
- /** Migrate a persisted paper state whose quote currency no longer matches the
52
- * configured venue's (issue #174 — e.g. a USDT wallet after switching to the
53
- * USDC-quoted hyperliquid venue). Pure; returns the input untouched when the
54
- * quotes already match.
55
- *
56
- * Semantics (equity-preserving):
57
- * - Open positions are released at their entry price: opening deducted the
58
- * full entry notional from the wallet (spot-collateral model), so that
59
- * notional is credited back before the position rows — which reference the
60
- * OLD venue's symbols and are unpriceable on the new one — are dropped.
61
- * - Unfilled open orders never debited the wallet (fills do) — just dropped.
62
- * - Balances carry 1:1 (USDT↔USDC are both dollar stables; paper precision),
63
- * merging into any existing balance under the new quote.
64
- * - Trade history is kept (display-only). savedAt is bumped so the other
65
- * process's replaceState() staleness guard accepts the migrated snapshot. */
66
- export declare function migratePaperQuoteCurrency(state: SimulatorState, expectedQuote: string): PaperQuoteMigrationResult;