@reefclaw/connect 0.1.12 → 0.1.13

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 (390) hide show
  1. package/assets/plugin/audit/mode-transition-audit.d.ts +11 -0
  2. package/assets/plugin/audit/mode-transition-audit.js +29 -0
  3. package/assets/plugin/balance-utils.d.ts +36 -0
  4. package/assets/plugin/balance-utils.js +98 -0
  5. package/assets/plugin/ccxt/binance-ban-gate.d.ts +47 -0
  6. package/assets/plugin/ccxt/binance-ban-gate.js +420 -0
  7. package/assets/plugin/ccxt/binance-private.d.ts +346 -0
  8. package/assets/plugin/ccxt/binance-private.js +1525 -0
  9. package/assets/plugin/ccxt/binance-public.d.ts +34 -0
  10. package/assets/plugin/ccxt/binance-public.js +180 -0
  11. package/assets/plugin/ccxt/intel-public.d.ts +25 -0
  12. package/assets/plugin/ccxt/intel-public.js +80 -0
  13. package/assets/plugin/ccxt/public-market-data-api.d.ts +26 -0
  14. package/assets/plugin/ccxt/public-market-data-api.js +23 -0
  15. package/assets/plugin/config/agent-config-client.d.ts +77 -0
  16. package/assets/plugin/config/agent-config-client.js +188 -0
  17. package/assets/plugin/config/agent-config-poller.d.ts +32 -0
  18. package/assets/plugin/config/agent-config-poller.js +101 -0
  19. package/assets/plugin/config/brackets-config.d.ts +22 -0
  20. package/assets/plugin/config/brackets-config.js +58 -0
  21. package/assets/plugin/config/entitlement-gate.d.ts +51 -0
  22. package/assets/plugin/config/entitlement-gate.js +137 -0
  23. package/assets/plugin/config/gate-store.d.ts +18 -0
  24. package/assets/plugin/config/gate-store.js +61 -0
  25. package/assets/plugin/config/plugin-config-io.d.ts +222 -0
  26. package/assets/plugin/config/plugin-config-io.js +126 -0
  27. package/assets/plugin/config/position-review-config.d.ts +35 -0
  28. package/assets/plugin/config/position-review-config.js +105 -0
  29. package/assets/plugin/config/tool-gate.d.ts +53 -0
  30. package/assets/plugin/config/tool-gate.js +128 -0
  31. package/assets/plugin/config/user-data-stream-config.d.ts +89 -0
  32. package/assets/plugin/config/user-data-stream-config.js +239 -0
  33. package/assets/plugin/connector-supervisor.d.ts +36 -0
  34. package/assets/plugin/connector-supervisor.js +149 -0
  35. package/assets/plugin/exchange-adapter.d.ts +65 -0
  36. package/assets/plugin/exchange-adapter.js +4 -0
  37. package/assets/plugin/index.d.ts +30 -0
  38. package/assets/plugin/index.js +2763 -0
  39. package/assets/plugin/ingest/pending-entry-metadata.d.ts +74 -0
  40. package/assets/plugin/ingest/pending-entry-metadata.js +236 -0
  41. package/assets/plugin/ingest/position-auto-capture.d.ts +171 -0
  42. package/assets/plugin/ingest/position-auto-capture.js +709 -0
  43. package/assets/plugin/ingest/position-decisions-client.d.ts +327 -0
  44. package/assets/plugin/ingest/position-decisions-client.js +306 -0
  45. package/assets/plugin/ingest/readiness-reporter.d.ts +42 -0
  46. package/assets/plugin/ingest/readiness-reporter.js +163 -0
  47. package/assets/plugin/ingest/reconcile-db-vs-exchange.d.ts +51 -0
  48. package/assets/plugin/ingest/reconcile-db-vs-exchange.js +170 -0
  49. package/assets/plugin/ingest/reconciler-cleanup.d.ts +37 -0
  50. package/assets/plugin/ingest/reconciler-cleanup.js +147 -0
  51. package/assets/plugin/ingest/rest-gap-filler.d.ts +191 -0
  52. package/assets/plugin/ingest/rest-gap-filler.js +565 -0
  53. package/assets/plugin/ingest/touched-symbols-store.d.ts +25 -0
  54. package/assets/plugin/ingest/touched-symbols-store.js +96 -0
  55. package/assets/plugin/ingest/trade-store-client.d.ts +40 -0
  56. package/assets/plugin/ingest/trade-store-client.js +125 -0
  57. package/assets/plugin/ingest/ws-ingest.d.ts +43 -0
  58. package/assets/plugin/ingest/ws-ingest.js +126 -0
  59. package/assets/plugin/learning/setup-family.d.ts +21 -0
  60. package/assets/plugin/learning/setup-family.js +103 -0
  61. package/assets/plugin/lifecycle/install-signal-handlers.d.ts +33 -0
  62. package/assets/plugin/lifecycle/install-signal-handlers.js +112 -0
  63. package/assets/plugin/lifecycle/shutdown-coordinator.d.ts +43 -0
  64. package/assets/plugin/lifecycle/shutdown-coordinator.js +131 -0
  65. package/assets/plugin/lifecycle/trading-operation-lock.d.ts +17 -0
  66. package/assets/plugin/lifecycle/trading-operation-lock.js +14 -0
  67. package/assets/plugin/live/bracket-id.d.ts +26 -0
  68. package/assets/plugin/live/bracket-id.js +112 -0
  69. package/assets/plugin/live/bracket-ledger.d.ts +54 -0
  70. package/assets/plugin/live/bracket-ledger.js +267 -0
  71. package/assets/plugin/live/bracket-manager.d.ts +82 -0
  72. package/assets/plugin/live/bracket-manager.js +478 -0
  73. package/assets/plugin/live/bracket-params.d.ts +22 -0
  74. package/assets/plugin/live/bracket-params.js +124 -0
  75. package/assets/plugin/live/bracket-reconciler.d.ts +95 -0
  76. package/assets/plugin/live/bracket-reconciler.js +573 -0
  77. package/assets/plugin/live/bracket-types.d.ts +102 -0
  78. package/assets/plugin/live/bracket-types.js +8 -0
  79. package/assets/plugin/live/deposit-tracker.d.ts +62 -0
  80. package/assets/plugin/live/deposit-tracker.js +97 -0
  81. package/assets/plugin/live/emergency-controls.d.ts +32 -0
  82. package/assets/plugin/live/emergency-controls.js +226 -0
  83. package/assets/plugin/live/exchange-errors.d.ts +12 -0
  84. package/assets/plugin/live/exchange-errors.js +130 -0
  85. package/assets/plugin/live/exchange-info-cache.d.ts +37 -0
  86. package/assets/plugin/live/exchange-info-cache.js +134 -0
  87. package/assets/plugin/live/fact-subscriber.d.ts +78 -0
  88. package/assets/plugin/live/fact-subscriber.js +182 -0
  89. package/assets/plugin/live/fill-price.d.ts +13 -0
  90. package/assets/plugin/live/fill-price.js +37 -0
  91. package/assets/plugin/live/intent-journal.d.ts +42 -0
  92. package/assets/plugin/live/intent-journal.js +122 -0
  93. package/assets/plugin/live/listen-key-manager.d.ts +70 -0
  94. package/assets/plugin/live/listen-key-manager.js +169 -0
  95. package/assets/plugin/live/live-adapter.d.ts +319 -0
  96. package/assets/plugin/live/live-adapter.js +1906 -0
  97. package/assets/plugin/live/live-balance-enricher.d.ts +32 -0
  98. package/assets/plugin/live/live-balance-enricher.js +104 -0
  99. package/assets/plugin/live/live-bracket-api.d.ts +13 -0
  100. package/assets/plugin/live/live-bracket-api.js +20 -0
  101. package/assets/plugin/live/live-state-store.d.ts +194 -0
  102. package/assets/plugin/live/live-state-store.js +450 -0
  103. package/assets/plugin/live/local-signal-service.d.ts +57 -0
  104. package/assets/plugin/live/local-signal-service.js +151 -0
  105. package/assets/plugin/live/local-strategy-evaluator.d.ts +62 -0
  106. package/assets/plugin/live/local-strategy-evaluator.js +131 -0
  107. package/assets/plugin/live/microstructure-assembler.d.ts +54 -0
  108. package/assets/plugin/live/microstructure-assembler.js +148 -0
  109. package/assets/plugin/live/order-poller.d.ts +29 -0
  110. package/assets/plugin/live/order-poller.js +125 -0
  111. package/assets/plugin/live/position-state-store.d.ts +87 -0
  112. package/assets/plugin/live/position-state-store.js +237 -0
  113. package/assets/plugin/live/proposal-decision-listener.d.ts +70 -0
  114. package/assets/plugin/live/proposal-decision-listener.js +292 -0
  115. package/assets/plugin/live/proposal-manager.d.ts +76 -0
  116. package/assets/plugin/live/proposal-manager.js +140 -0
  117. package/assets/plugin/live/rate-limiter.d.ts +47 -0
  118. package/assets/plugin/live/rate-limiter.js +159 -0
  119. package/assets/plugin/live/reconciler.d.ts +39 -0
  120. package/assets/plugin/live/reconciler.js +175 -0
  121. package/assets/plugin/live/setup-buckets.d.ts +7 -0
  122. package/assets/plugin/live/setup-buckets.js +33 -0
  123. package/assets/plugin/live/slippage-tracker.d.ts +45 -0
  124. package/assets/plugin/live/slippage-tracker.js +78 -0
  125. package/assets/plugin/live/stop-watcher.d.ts +67 -0
  126. package/assets/plugin/live/stop-watcher.js +218 -0
  127. package/assets/plugin/live/user-data-active-probe.d.ts +54 -0
  128. package/assets/plugin/live/user-data-active-probe.js +180 -0
  129. package/assets/plugin/live/user-data-stream-controller.d.ts +200 -0
  130. package/assets/plugin/live/user-data-stream-controller.js +579 -0
  131. package/assets/plugin/live/user-data-stream-ws.d.ts +22 -0
  132. package/assets/plugin/live/user-data-stream-ws.js +63 -0
  133. package/assets/plugin/live/user-data-stream.d.ts +243 -0
  134. package/assets/plugin/live/user-data-stream.js +704 -0
  135. package/assets/plugin/logger.d.ts +2 -0
  136. package/assets/plugin/logger.js +2 -0
  137. package/assets/plugin/mfe.d.ts +21 -0
  138. package/assets/plugin/mfe.js +68 -0
  139. package/assets/plugin/onboarding/mode-ladder.d.ts +1 -0
  140. package/assets/plugin/onboarding/mode-ladder.js +3 -0
  141. package/assets/plugin/onboarding/runtime.d.ts +102 -0
  142. package/assets/plugin/onboarding/runtime.js +215 -0
  143. package/assets/plugin/openclaw.plugin.json +92 -0
  144. package/assets/plugin/paper-adapter.d.ts +24 -0
  145. package/assets/plugin/paper-adapter.js +91 -0
  146. package/assets/plugin/persistence/state-manager.d.ts +66 -0
  147. package/assets/plugin/persistence/state-manager.js +222 -0
  148. package/assets/plugin/pinned-plan.d.ts +9 -0
  149. package/assets/plugin/pinned-plan.js +23 -0
  150. package/assets/plugin/portfolio/reentry-tracker.d.ts +36 -0
  151. package/assets/plugin/portfolio/reentry-tracker.js +127 -0
  152. package/assets/plugin/portfolio/wave9-admission.d.ts +67 -0
  153. package/assets/plugin/portfolio/wave9-admission.js +262 -0
  154. package/assets/plugin/portfolio/wave9-policy.d.ts +36 -0
  155. package/assets/plugin/portfolio/wave9-policy.js +183 -0
  156. package/assets/plugin/risk/pre-trade-check.d.ts +38 -0
  157. package/assets/plugin/risk/pre-trade-check.js +345 -0
  158. package/assets/plugin/risk/pre-trade-types.d.ts +60 -0
  159. package/assets/plugin/risk/pre-trade-types.js +3 -0
  160. package/assets/plugin/shadow/shadow-tracker.d.ts +36 -0
  161. package/assets/plugin/shadow/shadow-tracker.js +151 -0
  162. package/assets/plugin/shadow/types.d.ts +42 -0
  163. package/assets/plugin/shadow/types.js +20 -0
  164. package/assets/plugin/shared/indicators-extended.d.ts +52 -0
  165. package/assets/plugin/shared/indicators-extended.js +291 -0
  166. package/assets/plugin/shared/indicators.d.ts +15 -0
  167. package/assets/plugin/shared/indicators.js +114 -0
  168. package/assets/plugin/signals/conditions/registry.d.ts +16 -0
  169. package/assets/plugin/signals/conditions/registry.js +1333 -0
  170. package/assets/plugin/signals/conditions/types.d.ts +1 -0
  171. package/assets/plugin/signals/conditions/types.js +4 -0
  172. package/assets/plugin/signals/direction-rules.d.ts +3 -0
  173. package/assets/plugin/signals/direction-rules.js +24 -0
  174. package/assets/plugin/signals/entry-rules.d.ts +6 -0
  175. package/assets/plugin/signals/entry-rules.js +33 -0
  176. package/assets/plugin/signals/serialize-context.d.ts +4 -0
  177. package/assets/plugin/signals/serialize-context.js +39 -0
  178. package/assets/plugin/signals/stop-rules.d.ts +3 -0
  179. package/assets/plugin/signals/stop-rules.js +48 -0
  180. package/assets/plugin/signals/strategy-adapter.d.ts +47 -0
  181. package/assets/plugin/signals/strategy-adapter.js +209 -0
  182. package/assets/plugin/signals/types.d.ts +1 -0
  183. package/assets/plugin/signals/types.js +8 -0
  184. package/assets/plugin/simulator/exchange-simulator.d.ts +105 -0
  185. package/assets/plugin/simulator/exchange-simulator.js +759 -0
  186. package/assets/plugin/simulator/fill-engine.d.ts +53 -0
  187. package/assets/plugin/simulator/fill-engine.js +280 -0
  188. package/assets/plugin/simulator/paper-market-feed.d.ts +26 -0
  189. package/assets/plugin/simulator/paper-market-feed.js +104 -0
  190. package/assets/plugin/simulator/realistic-fills.d.ts +59 -0
  191. package/assets/plugin/simulator/realistic-fills.js +175 -0
  192. package/assets/plugin/simulator/types.d.ts +228 -0
  193. package/assets/plugin/simulator/types.js +43 -0
  194. package/assets/plugin/strategy/builtin-strategies.d.ts +2 -0
  195. package/assets/plugin/strategy/builtin-strategies.js +113 -0
  196. package/assets/plugin/strategy/condition-registry.d.ts +3 -0
  197. package/assets/plugin/strategy/condition-registry.js +153 -0
  198. package/assets/plugin/strategy/evaluator.d.ts +70 -0
  199. package/assets/plugin/strategy/evaluator.js +98 -0
  200. package/assets/plugin/tools/assessment-validation.d.ts +141 -0
  201. package/assets/plugin/tools/assessment-validation.js +473 -0
  202. package/assets/plugin/tools/attach-brackets.d.ts +39 -0
  203. package/assets/plugin/tools/attach-brackets.js +564 -0
  204. package/assets/plugin/tools/audit-bracket-protection.d.ts +49 -0
  205. package/assets/plugin/tools/audit-bracket-protection.js +683 -0
  206. package/assets/plugin/tools/bracket-control.d.ts +12 -0
  207. package/assets/plugin/tools/bracket-control.js +35 -0
  208. package/assets/plugin/tools/cancel-all-orders.d.ts +9 -0
  209. package/assets/plugin/tools/cancel-all-orders.js +8 -0
  210. package/assets/plugin/tools/cancel-order.d.ts +14 -0
  211. package/assets/plugin/tools/cancel-order.js +60 -0
  212. package/assets/plugin/tools/check-position-health.d.ts +46 -0
  213. package/assets/plugin/tools/check-position-health.js +194 -0
  214. package/assets/plugin/tools/clear-exchange-credentials.d.ts +24 -0
  215. package/assets/plugin/tools/clear-exchange-credentials.js +70 -0
  216. package/assets/plugin/tools/close-position.d.ts +45 -0
  217. package/assets/plugin/tools/close-position.js +722 -0
  218. package/assets/plugin/tools/create-order.d.ts +89 -0
  219. package/assets/plugin/tools/create-order.js +1555 -0
  220. package/assets/plugin/tools/exit-gate.d.ts +58 -0
  221. package/assets/plugin/tools/exit-gate.js +162 -0
  222. package/assets/plugin/tools/fetch-balance.d.ts +5 -0
  223. package/assets/plugin/tools/fetch-balance.js +4 -0
  224. package/assets/plugin/tools/fetch-ohlcv.d.ts +11 -0
  225. package/assets/plugin/tools/fetch-ohlcv.js +8 -0
  226. package/assets/plugin/tools/fetch-open-orders.d.ts +7 -0
  227. package/assets/plugin/tools/fetch-open-orders.js +4 -0
  228. package/assets/plugin/tools/fetch-positions.d.ts +7 -0
  229. package/assets/plugin/tools/fetch-positions.js +4 -0
  230. package/assets/plugin/tools/fetch-ticker.d.ts +11 -0
  231. package/assets/plugin/tools/fetch-ticker.js +5 -0
  232. package/assets/plugin/tools/get-agent-profile.d.ts +4 -0
  233. package/assets/plugin/tools/get-agent-profile.js +6 -0
  234. package/assets/plugin/tools/get-analytics.d.ts +6 -0
  235. package/assets/plugin/tools/get-analytics.js +7 -0
  236. package/assets/plugin/tools/get-backtest.d.ts +12 -0
  237. package/assets/plugin/tools/get-backtest.js +91 -0
  238. package/assets/plugin/tools/get-basis.d.ts +7 -0
  239. package/assets/plugin/tools/get-basis.js +7 -0
  240. package/assets/plugin/tools/get-bracket-config.d.ts +11 -0
  241. package/assets/plugin/tools/get-bracket-config.js +24 -0
  242. package/assets/plugin/tools/get-cascade-risk.d.ts +7 -0
  243. package/assets/plugin/tools/get-cascade-risk.js +8 -0
  244. package/assets/plugin/tools/get-crypto-metrics.d.ts +18 -0
  245. package/assets/plugin/tools/get-crypto-metrics.js +62 -0
  246. package/assets/plugin/tools/get-cvd.d.ts +6 -0
  247. package/assets/plugin/tools/get-cvd.js +6 -0
  248. package/assets/plugin/tools/get-divergences.d.ts +6 -0
  249. package/assets/plugin/tools/get-divergences.js +6 -0
  250. package/assets/plugin/tools/get-funding-context.d.ts +6 -0
  251. package/assets/plugin/tools/get-funding-context.js +16 -0
  252. package/assets/plugin/tools/get-liquidation-levels.d.ts +7 -0
  253. package/assets/plugin/tools/get-liquidation-levels.js +7 -0
  254. package/assets/plugin/tools/get-liquidation-pulse.d.ts +9 -0
  255. package/assets/plugin/tools/get-liquidation-pulse.js +22 -0
  256. package/assets/plugin/tools/get-market-breadth.d.ts +6 -0
  257. package/assets/plugin/tools/get-market-breadth.js +8 -0
  258. package/assets/plugin/tools/get-market-intel.d.ts +19 -0
  259. package/assets/plugin/tools/get-market-intel.js +116 -0
  260. package/assets/plugin/tools/get-market-structure.d.ts +47 -0
  261. package/assets/plugin/tools/get-market-structure.js +198 -0
  262. package/assets/plugin/tools/get-my-mined-patterns.d.ts +20 -0
  263. package/assets/plugin/tools/get-my-mined-patterns.js +61 -0
  264. package/assets/plugin/tools/get-my-proposed-learnings.d.ts +20 -0
  265. package/assets/plugin/tools/get-my-proposed-learnings.js +55 -0
  266. package/assets/plugin/tools/get-my-recent-reviews.d.ts +22 -0
  267. package/assets/plugin/tools/get-my-recent-reviews.js +66 -0
  268. package/assets/plugin/tools/get-orderbook.d.ts +21 -0
  269. package/assets/plugin/tools/get-orderbook.js +32 -0
  270. package/assets/plugin/tools/get-pattern-scan.d.ts +7 -0
  271. package/assets/plugin/tools/get-pattern-scan.js +8 -0
  272. package/assets/plugin/tools/get-regime.d.ts +6 -0
  273. package/assets/plugin/tools/get-regime.js +7 -0
  274. package/assets/plugin/tools/get-relevant-learnings.d.ts +21 -0
  275. package/assets/plugin/tools/get-relevant-learnings.js +65 -0
  276. package/assets/plugin/tools/get-resting-liquidity.d.ts +6 -0
  277. package/assets/plugin/tools/get-resting-liquidity.js +11 -0
  278. package/assets/plugin/tools/get-risk-scenario.d.ts +29 -0
  279. package/assets/plugin/tools/get-risk-scenario.js +47 -0
  280. package/assets/plugin/tools/get-risk-summary.d.ts +51 -0
  281. package/assets/plugin/tools/get-risk-summary.js +118 -0
  282. package/assets/plugin/tools/get-sentiment.d.ts +4 -0
  283. package/assets/plugin/tools/get-sentiment.js +6 -0
  284. package/assets/plugin/tools/get-session-review.d.ts +7 -0
  285. package/assets/plugin/tools/get-session-review.js +8 -0
  286. package/assets/plugin/tools/get-setup-detail.d.ts +7 -0
  287. package/assets/plugin/tools/get-setup-detail.js +322 -0
  288. package/assets/plugin/tools/get-signals.d.ts +15 -0
  289. package/assets/plugin/tools/get-signals.js +54 -0
  290. package/assets/plugin/tools/get-sizing.d.ts +6 -0
  291. package/assets/plugin/tools/get-sizing.js +6 -0
  292. package/assets/plugin/tools/get-trade-feedback.d.ts +7 -0
  293. package/assets/plugin/tools/get-trade-feedback.js +8 -0
  294. package/assets/plugin/tools/get-trade-flow.d.ts +7 -0
  295. package/assets/plugin/tools/get-trade-flow.js +7 -0
  296. package/assets/plugin/tools/get-volume-analysis.d.ts +21 -0
  297. package/assets/plugin/tools/get-volume-analysis.js +74 -0
  298. package/assets/plugin/tools/get-volume-profile.d.ts +7 -0
  299. package/assets/plugin/tools/get-volume-profile.js +7 -0
  300. package/assets/plugin/tools/get-wave9-status.d.ts +127 -0
  301. package/assets/plugin/tools/get-wave9-status.js +796 -0
  302. package/assets/plugin/tools/helpers.d.ts +26 -0
  303. package/assets/plugin/tools/helpers.js +39 -0
  304. package/assets/plugin/tools/intel-api.d.ts +34 -0
  305. package/assets/plugin/tools/intel-api.js +119 -0
  306. package/assets/plugin/tools/intel-cache.d.ts +25 -0
  307. package/assets/plugin/tools/intel-cache.js +148 -0
  308. package/assets/plugin/tools/list-strategies.d.ts +17 -0
  309. package/assets/plugin/tools/list-strategies.js +23 -0
  310. package/assets/plugin/tools/modify-stop.d.ts +21 -0
  311. package/assets/plugin/tools/modify-stop.js +120 -0
  312. package/assets/plugin/tools/modify-target.d.ts +21 -0
  313. package/assets/plugin/tools/modify-target.js +110 -0
  314. package/assets/plugin/tools/propose-learning.d.ts +22 -0
  315. package/assets/plugin/tools/propose-learning.js +65 -0
  316. package/assets/plugin/tools/query-review-outcomes.d.ts +30 -0
  317. package/assets/plugin/tools/query-review-outcomes.js +64 -0
  318. package/assets/plugin/tools/query-trades.d.ts +21 -0
  319. package/assets/plugin/tools/query-trades.js +37 -0
  320. package/assets/plugin/tools/record-position-reviews.d.ts +38 -0
  321. package/assets/plugin/tools/record-position-reviews.js +147 -0
  322. package/assets/plugin/tools/save-strategy.d.ts +16 -0
  323. package/assets/plugin/tools/save-strategy.js +46 -0
  324. package/assets/plugin/tools/scan-pairs.d.ts +22 -0
  325. package/assets/plugin/tools/scan-pairs.js +234 -0
  326. package/assets/plugin/tools/score-setup.d.ts +31 -0
  327. package/assets/plugin/tools/score-setup.js +268 -0
  328. package/assets/plugin/tools/set-bracket-requirement.d.ts +18 -0
  329. package/assets/plugin/tools/set-bracket-requirement.js +81 -0
  330. package/assets/plugin/tools/set-exchange-credentials.d.ts +25 -0
  331. package/assets/plugin/tools/set-exchange-credentials.js +80 -0
  332. package/assets/plugin/tools/set-trading-mode.d.ts +26 -0
  333. package/assets/plugin/tools/set-trading-mode.js +152 -0
  334. package/assets/plugin/tools/test-exchange-credentials.d.ts +16 -0
  335. package/assets/plugin/tools/test-exchange-credentials.js +100 -0
  336. package/assets/plugin/tools/toggle-strategy.d.ts +8 -0
  337. package/assets/plugin/tools/toggle-strategy.js +15 -0
  338. package/assets/plugin/trading-params-cache.d.ts +26 -0
  339. package/assets/plugin/trading-params-cache.js +52 -0
  340. package/assets/plugin/types.d.ts +134 -0
  341. package/assets/plugin/types.js +7 -0
  342. package/assets/plugin/util/plugin-paths.d.ts +3 -0
  343. package/assets/plugin/util/plugin-paths.js +15 -0
  344. package/assets/plugin/venues/hyperliquid/hl-balance.d.ts +116 -0
  345. package/assets/plugin/venues/hyperliquid/hl-balance.js +145 -0
  346. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.d.ts +123 -0
  347. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.js +533 -0
  348. package/assets/plugin/venues/hyperliquid/hl-brackets.d.ts +102 -0
  349. package/assets/plugin/venues/hyperliquid/hl-brackets.js +172 -0
  350. package/assets/plugin/venues/hyperliquid/hl-cloid.d.ts +22 -0
  351. package/assets/plugin/venues/hyperliquid/hl-cloid.js +82 -0
  352. package/assets/plugin/venues/hyperliquid/hl-info-cache.d.ts +46 -0
  353. package/assets/plugin/venues/hyperliquid/hl-info-cache.js +125 -0
  354. package/assets/plugin/venues/hyperliquid/hl-live-adapter.d.ts +146 -0
  355. package/assets/plugin/venues/hyperliquid/hl-live-adapter.js +728 -0
  356. package/assets/plugin/venues/hyperliquid/hl-precision.d.ts +61 -0
  357. package/assets/plugin/venues/hyperliquid/hl-precision.js +176 -0
  358. package/assets/plugin/venues/hyperliquid/hl-private.d.ts +88 -0
  359. package/assets/plugin/venues/hyperliquid/hl-private.js +357 -0
  360. package/assets/plugin/venues/hyperliquid/hl-public.d.ts +79 -0
  361. package/assets/plugin/venues/hyperliquid/hl-public.js +436 -0
  362. package/assets/plugin/venues/hyperliquid/hl-rate-gate.d.ts +57 -0
  363. package/assets/plugin/venues/hyperliquid/hl-rate-gate.js +220 -0
  364. package/assets/plugin/venues/hyperliquid/hl-user-stream.d.ts +90 -0
  365. package/assets/plugin/venues/hyperliquid/hl-user-stream.js +220 -0
  366. package/assets/plugin/venues/registry.d.ts +38 -0
  367. package/assets/plugin/venues/registry.js +46 -0
  368. package/assets/plugin/venues/symbols.d.ts +43 -0
  369. package/assets/plugin/venues/symbols.js +107 -0
  370. package/assets/plugin/wave9/live-account-capture.d.ts +67 -0
  371. package/assets/plugin/wave9/live-account-capture.js +435 -0
  372. package/assets/plugin/wave9/live-autonomous-protection.d.ts +39 -0
  373. package/assets/plugin/wave9/live-autonomous-protection.js +112 -0
  374. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.d.ts +33 -0
  375. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.js +115 -0
  376. package/assets/plugin/wave9/live-execution-ledger.d.ts +107 -0
  377. package/assets/plugin/wave9/live-execution-ledger.js +498 -0
  378. package/assets/plugin/wave9/live-position-confirmation.d.ts +18 -0
  379. package/assets/plugin/wave9/live-position-confirmation.js +111 -0
  380. package/assets/plugin/wave9/live-residual-protection.d.ts +18 -0
  381. package/assets/plugin/wave9/live-residual-protection.js +250 -0
  382. package/assets/plugin/wave9/live-startup-reconciliation.d.ts +38 -0
  383. package/assets/plugin/wave9/live-startup-reconciliation.js +454 -0
  384. package/assets/plugin/wave9/live-symbol-ownership.d.ts +20 -0
  385. package/assets/plugin/wave9/live-symbol-ownership.js +132 -0
  386. package/assets/plugin/wave9/paper-admission-guard.d.ts +199 -0
  387. package/assets/plugin/wave9/paper-admission-guard.js +650 -0
  388. package/assets/plugin/wave9/usdm-evidence-provider.d.ts +42 -0
  389. package/assets/plugin/wave9/usdm-evidence-provider.js +133 -0
  390. package/package.json +1 -1
@@ -0,0 +1,153 @@
1
+ // Plugin-side condition registry — lightweight evaluators that read pre-computed facts.
2
+ // Each evaluator reads booleans from fact.conditions and/or compares indicator values
3
+ // against strategy params. Does NOT duplicate the full condition logic from intelligence.
4
+ export const CONDITION_EVALUATORS = new Map();
5
+ function register(type, fn) {
6
+ CONDITION_EVALUATORS.set(type, fn);
7
+ }
8
+ // ─── Helper to read indicator values ────────────────────────────────────
9
+ function ind(fact, key) {
10
+ return fact.indicators[key];
11
+ }
12
+ function indNum(fact, key) {
13
+ return Number(fact.indicators[key] ?? 0);
14
+ }
15
+ // ─── Original 12 conditions (read booleans from fact.conditions) ────────
16
+ // 1. ema_proximity — checks against parameterized threshold
17
+ register('ema_proximity', (fact, params) => {
18
+ const period = params.period ?? 21;
19
+ const key = period <= 30 ? 'ema_proximity_20' : 'ema_proximity_50';
20
+ return { name: 'ema_proximity', met: fact.conditions[key] ?? false };
21
+ });
22
+ // 2. orderbook_imbalance
23
+ register('orderbook_imbalance', (fact) => {
24
+ const bid = fact.conditions.orderbook_imbalance_bid ?? false;
25
+ const ask = fact.conditions.orderbook_imbalance_ask ?? false;
26
+ return { name: 'orderbook_imbalance', met: bid || ask };
27
+ });
28
+ // 3. funding_not_crowded
29
+ register('funding_not_crowded', (fact) => ({
30
+ name: 'funding_not_crowded',
31
+ met: fact.conditions.funding_not_crowded ?? false,
32
+ value: indNum(fact, 'fundingZScore'),
33
+ }));
34
+ // 4. oi_slope
35
+ register('oi_slope', (fact) => ({
36
+ name: 'oi_slope',
37
+ met: fact.conditions.oi_slope_up ?? false,
38
+ }));
39
+ // 5. no_liquidation_cluster — always passes in scan context (no live data)
40
+ register('no_liquidation_cluster', () => ({
41
+ name: 'no_liquidation_cluster',
42
+ met: true,
43
+ }));
44
+ // 6. price_sweep
45
+ register('price_sweep', (fact) => ({
46
+ name: 'price_sweep',
47
+ met: (fact.conditions.price_sweep_high ?? false) || (fact.conditions.price_sweep_low ?? false),
48
+ }));
49
+ // 7. liquidations_at_sweep — always passes in scan context
50
+ register('liquidations_at_sweep', () => ({
51
+ name: 'liquidations_at_sweep',
52
+ met: true,
53
+ }));
54
+ // 8. order_flow_absorption
55
+ register('order_flow_absorption', (fact) => ({
56
+ name: 'order_flow_absorption',
57
+ met: fact.conditions.orderbook_imbalance_bid ?? false, // Proxy via orderbook data
58
+ }));
59
+ // 9. funding_contrarian
60
+ register('funding_contrarian', (fact) => ({
61
+ name: 'funding_contrarian',
62
+ met: fact.conditions.funding_not_crowded ?? false,
63
+ value: indNum(fact, 'fundingZScore'),
64
+ }));
65
+ // 10. funding_extreme
66
+ register('funding_extreme', (fact) => ({
67
+ name: 'funding_extreme',
68
+ met: fact.conditions.funding_extreme ?? false,
69
+ value: indNum(fact, 'fundingZScore'),
70
+ }));
71
+ // 11. oi_elevated
72
+ register('oi_elevated', (fact) => ({
73
+ name: 'oi_elevated',
74
+ met: fact.conditions.oi_elevated ?? false,
75
+ value: indNum(fact, 'oiRatio'),
76
+ }));
77
+ // 12. price_at_level
78
+ register('price_at_level', (fact) => ({
79
+ name: 'price_at_level',
80
+ met: fact.conditions.ema_proximity_50 ?? false, // Closest proxy
81
+ }));
82
+ // ─── New 11 conditions (Phase 13) ──────────────────────────────────────
83
+ // 13. macd_crossover
84
+ register('macd_crossover', (fact) => ({
85
+ name: 'macd_crossover',
86
+ met: fact.conditions.macd_crossover ?? false,
87
+ }));
88
+ // 14. macd_divergence
89
+ register('macd_divergence', (fact) => ({
90
+ name: 'macd_divergence',
91
+ met: fact.conditions.macd_divergence ?? false,
92
+ }));
93
+ // 15. bollinger_squeeze — supports custom maxBandwidth param
94
+ register('bollinger_squeeze', (fact, params) => {
95
+ const maxBW = params.maxBandwidth ?? 3.0;
96
+ const bb = ind(fact, 'bb');
97
+ const bw = bb?.bandwidth ?? 0;
98
+ return {
99
+ name: 'bollinger_squeeze',
100
+ met: bw > 0 && bw < maxBW,
101
+ value: bw,
102
+ };
103
+ });
104
+ // 16. bollinger_breakout
105
+ register('bollinger_breakout', (fact) => ({
106
+ name: 'bollinger_breakout',
107
+ met: fact.conditions.bollinger_breakout ?? false,
108
+ }));
109
+ // 17. vwap_position
110
+ register('vwap_position', (fact) => ({
111
+ name: 'vwap_position',
112
+ met: fact.conditions.vwap_position_above ?? fact.conditions.vwap_position_below ?? false,
113
+ }));
114
+ // 18. stoch_rsi_extreme
115
+ register('stoch_rsi_extreme', (fact) => ({
116
+ name: 'stoch_rsi_extreme',
117
+ met: (fact.conditions.stoch_rsi_oversold ?? false) || (fact.conditions.stoch_rsi_overbought ?? false),
118
+ }));
119
+ // 19. adx_trending
120
+ register('adx_trending', (fact, params) => {
121
+ const minAdx = params.minAdx ?? 25;
122
+ const adx = indNum(fact, 'adx');
123
+ return {
124
+ name: 'adx_trending',
125
+ met: adx > minAdx,
126
+ value: adx,
127
+ };
128
+ });
129
+ // 20. adx_ranging
130
+ register('adx_ranging', (fact, params) => {
131
+ const maxAdx = params.maxAdx ?? 20;
132
+ const adx = indNum(fact, 'adx');
133
+ return {
134
+ name: 'adx_ranging',
135
+ met: adx < maxAdx,
136
+ value: adx,
137
+ };
138
+ });
139
+ // 21. ichimoku_cloud
140
+ register('ichimoku_cloud', (fact) => ({
141
+ name: 'ichimoku_cloud',
142
+ met: (fact.conditions.ichimoku_bullish ?? false) || (fact.conditions.ichimoku_bearish ?? false),
143
+ }));
144
+ // 22. obv_divergence
145
+ register('obv_divergence', (fact) => ({
146
+ name: 'obv_divergence',
147
+ met: (fact.conditions.obv_divergence_bullish ?? false) || (fact.conditions.obv_divergence_bearish ?? false),
148
+ }));
149
+ // 23. supertrend_direction
150
+ register('supertrend_direction', (fact) => ({
151
+ name: 'supertrend_direction',
152
+ met: (fact.conditions.supertrend_bullish ?? false) || (fact.conditions.supertrend_bearish ?? false),
153
+ }));
@@ -0,0 +1,70 @@
1
+ export interface SymbolFact {
2
+ symbol: string;
3
+ time: string;
4
+ indicators: Record<string, unknown>;
5
+ conditions: Record<string, boolean>;
6
+ regime: string;
7
+ regime_confidence: number;
8
+ }
9
+ export interface ConditionConfig {
10
+ type: string;
11
+ params: Record<string, number>;
12
+ }
13
+ export interface StrategyConfig {
14
+ name: string;
15
+ description: string;
16
+ version: number;
17
+ regimeWhitelist: string[];
18
+ minConfidence: number;
19
+ directionRule: string;
20
+ conditions: ConditionConfig[];
21
+ entryRule: {
22
+ type: string;
23
+ params: Record<string, number>;
24
+ };
25
+ stopRule: {
26
+ type: string;
27
+ params: Record<string, number>;
28
+ };
29
+ targetRMultiples: number[];
30
+ /** Dedicated portfolio catalog rows are not declarative generic strategies. */
31
+ executionModel?: string;
32
+ }
33
+ export interface StrategyRow {
34
+ id: number;
35
+ name: string;
36
+ description: string;
37
+ config: StrategyConfig;
38
+ is_builtin: boolean;
39
+ is_active: boolean;
40
+ backtest_result: unknown | null;
41
+ created_at: string;
42
+ updated_at: string;
43
+ }
44
+ export interface ConditionEvalResult {
45
+ name: string;
46
+ met: boolean;
47
+ value?: number;
48
+ }
49
+ export interface StrategyEvalResult {
50
+ strategy: string;
51
+ symbol: string;
52
+ score: number;
53
+ conditionsMet: number;
54
+ conditionsTotal: number;
55
+ conditions: ConditionEvalResult[];
56
+ regime: string;
57
+ regime_confidence: number;
58
+ summary: string;
59
+ }
60
+ export declare function isDeclarativeStrategyConfig(strategy: StrategyConfig): boolean;
61
+ /**
62
+ * Evaluate a strategy against a symbol's fact object.
63
+ * Returns null if the strategy is regime-gated and the symbol's regime doesn't match.
64
+ */
65
+ export declare function evaluateStrategy(strategy: StrategyConfig, fact: SymbolFact): StrategyEvalResult | null;
66
+ /**
67
+ * Evaluate all active strategies against all symbol facts.
68
+ * Returns ranked results above minScore.
69
+ */
70
+ export declare function scanAllPairs(strategies: StrategyConfig[], facts: SymbolFact[], minScore?: number): StrategyEvalResult[];
@@ -0,0 +1,98 @@
1
+ // Lightweight strategy evaluator for plugin-side condition checking.
2
+ // Reads pre-computed fact objects from intelligence service (boolean conditions + indicator values).
3
+ // Does NOT duplicate the full condition logic from intelligence — reads pre-evaluated booleans
4
+ // and optionally checks threshold-based conditions against indicator values.
5
+ import { CONDITION_EVALUATORS } from './condition-registry.js';
6
+ import { getCachedTradingParams } from '../trading-params-cache.js';
7
+ export function isDeclarativeStrategyConfig(strategy) {
8
+ return strategy.executionModel === undefined || strategy.executionModel === 'declarative';
9
+ }
10
+ // ─── Evaluator ──────────────────────────────────────────────────────────
11
+ /**
12
+ * Evaluate a strategy against a symbol's fact object.
13
+ * Returns null if the strategy is regime-gated and the symbol's regime doesn't match.
14
+ */
15
+ export function evaluateStrategy(strategy, fact) {
16
+ if (!isDeclarativeStrategyConfig(strategy))
17
+ return null;
18
+ // Check regime gate
19
+ if (strategy.regimeWhitelist.length > 0) {
20
+ const matchesRegime = strategy.regimeWhitelist.some(r => r === fact.regime || r === 'ANY');
21
+ if (!matchesRegime)
22
+ return null;
23
+ }
24
+ // Check regime confidence — use the LOWER of strategy minConfidence and user's global floor
25
+ const tp = getCachedTradingParams();
26
+ const effectiveMinConf = Math.min(strategy.minConfidence, tp.regimeConfidenceFloor || strategy.minConfidence);
27
+ if (fact.regime_confidence < effectiveMinConf)
28
+ return null;
29
+ // Evaluate each condition
30
+ const results = [];
31
+ for (const cond of strategy.conditions) {
32
+ const evaluator = CONDITION_EVALUATORS.get(cond.type);
33
+ if (evaluator) {
34
+ results.push(evaluator(fact, cond.params));
35
+ }
36
+ else {
37
+ // Fallback: try to read directly from fact.conditions map
38
+ const boolKey = cond.type;
39
+ const met = fact.conditions[boolKey] ?? false;
40
+ results.push({ name: cond.type, met });
41
+ }
42
+ }
43
+ const conditionsMet = results.filter(r => r.met).length;
44
+ const conditionsTotal = results.length;
45
+ const score = conditionsTotal > 0 ? (conditionsMet / conditionsTotal) * 10 : 0;
46
+ // Build summary
47
+ const metNames = results.filter(r => r.met).map(r => r.name).join(', ');
48
+ const summary = buildSummary(strategy, fact, results);
49
+ return {
50
+ strategy: strategy.name,
51
+ symbol: fact.symbol,
52
+ score: Math.round(score * 10) / 10,
53
+ conditionsMet,
54
+ conditionsTotal,
55
+ conditions: results,
56
+ regime: fact.regime,
57
+ regime_confidence: fact.regime_confidence,
58
+ summary,
59
+ };
60
+ }
61
+ /**
62
+ * Evaluate all active strategies against all symbol facts.
63
+ * Returns ranked results above minScore.
64
+ */
65
+ export function scanAllPairs(strategies, facts, minScore = 4) {
66
+ const results = [];
67
+ for (const fact of facts) {
68
+ for (const strategy of strategies) {
69
+ const result = evaluateStrategy(strategy, fact);
70
+ if (result && result.score >= minScore) {
71
+ results.push(result);
72
+ }
73
+ }
74
+ }
75
+ // Sort by score descending
76
+ results.sort((a, b) => b.score - a.score);
77
+ return results;
78
+ }
79
+ // ─── Summary builder ────────────────────────────────────────────────────
80
+ function buildSummary(strategy, fact, results) {
81
+ const ind = fact.indicators;
82
+ const parts = [];
83
+ // Regime context
84
+ parts.push(`${fact.regime} (${(fact.regime_confidence * 100).toFixed(0)}%)`);
85
+ // Key indicator values
86
+ if (ind.rsi14 !== undefined)
87
+ parts.push(`RSI ${ind.rsi14}`);
88
+ if (ind.adx !== undefined)
89
+ parts.push(`ADX ${ind.adx}`);
90
+ const macd = ind.macd;
91
+ if (macd?.crossover && macd.crossover !== 'none') {
92
+ parts.push(`MACD ${macd.crossover}`);
93
+ }
94
+ const funding = ind.fundingZScore;
95
+ if (funding !== undefined)
96
+ parts.push(`Funding ${funding > 0 ? '+' : ''}${funding.toFixed(1)}σ`);
97
+ return parts.join(', ');
98
+ }
@@ -0,0 +1,141 @@
1
+ import type { RealizationRule } from '../simulator/types.js';
2
+ /** Minimum pre-entry stop distance in basis points (the SKILL v2.10.0
3
+ * discipline floor's fixed component; the ATR component is enforced by the
4
+ * live bracket path where ATR is authoritative). */
5
+ export declare const MIN_STOP_DISTANCE_BPS = 30;
6
+ export interface ProtectiveGeometryArgs {
7
+ side: 'buy' | 'sell';
8
+ /** Reference entry price: the limit price, or last trade for market orders. */
9
+ refPrice: number;
10
+ stopPrice?: number;
11
+ invalidationPrice?: number;
12
+ targetPrice?: number;
13
+ }
14
+ /** Validate stop / invalidation / target geometry against the entry side.
15
+ *
16
+ * Before this existed the wrong-side check ran ONLY on the wave9 path
17
+ * (create-order.ts) — a generic short entered with its stop BELOW entry
18
+ * passed validation and was closed by the stop-watcher seconds later
19
+ * (7 sub-5-minute kills on the 2026-07 HL soak, issue #200). Returns an
20
+ * error string, or null when the geometry is sound. Fields left undefined
21
+ * are not judged (stop-required policy stays with the caller). */
22
+ export declare function validateProtectiveGeometry(args: ProtectiveGeometryArgs): string | null;
23
+ /** The five legitimate reasons to manually close an otherwise-bracketed
24
+ * position (see SKILL.md v2.10.0 Position Management Discipline). Any other
25
+ * value is rejected. */
26
+ export declare const CLOSE_REASONS: readonly ["regime_flip", "risk_limit", "bracket_integrity", "operator_command"];
27
+ export type CloseReason = (typeof CLOSE_REASONS)[number];
28
+ export interface CloseAssessment {
29
+ /** Scorecard confluence score at entry (0-10). */
30
+ entry_score?: number;
31
+ /** Current scorecard confluence score from this heartbeat's fresh analysis. */
32
+ current_score?: number;
33
+ /** Regime at entry, e.g. 'RANGE_WIDE', 'TREND_UP'. */
34
+ entry_regime?: string;
35
+ /** Regime right now, from this heartbeat's fresh analysis. */
36
+ current_regime?: string;
37
+ /** Free-text naming the specific metric that flipped. Required for
38
+ * regime_flip, risk_limit, and bracket_integrity. */
39
+ contradicting_metric?: string;
40
+ /** Telemetry only — position age in seconds. Not gated. */
41
+ position_age_seconds?: number;
42
+ /** Telemetry only — R-multiple at close (= current_r in exit-gate inputs). */
43
+ r_multiple_at_close?: number;
44
+ /** Max favorable excursion in R-multiples ever reached during this position's
45
+ * lifetime. Drives the exit-gate tier classification (see
46
+ * docs/EXIT_GATE_DESIGN.md §3). Optional for backwards compatibility — the
47
+ * gate falls back to PASS('inputs_unavailable_mfe') when absent so the
48
+ * shadow soak can surface plumbing gaps before enforce. */
49
+ mfe_r_peak?: number;
50
+ }
51
+ export interface ClosePositionArgs {
52
+ symbol: string;
53
+ reason?: string;
54
+ assessment?: CloseAssessment;
55
+ candidate_id?: string;
56
+ wave9_exit_token?: string;
57
+ }
58
+ export interface ValidationResult {
59
+ ok: boolean;
60
+ error?: string;
61
+ }
62
+ /** Validate a `close_position` call against the SKILL.md v2.10.0 contract.
63
+ * Returns {ok:true} to proceed or {ok:false, error} to reject the tool call.
64
+ *
65
+ * Philosophy: force the agent to submit structured proof that a real
66
+ * reassessment happened. No time gate — a 60-second close is legal if the
67
+ * assessment holds up. But blank or inconsistent fields mean no reasoning,
68
+ * so we refuse.
69
+ */
70
+ export declare function validateClosePosition(args: ClosePositionArgs): ValidationResult;
71
+ export interface CreateOrderArgs {
72
+ symbol: string;
73
+ side: string;
74
+ type: string;
75
+ amount: number;
76
+ price?: number;
77
+ stopPrice?: number;
78
+ setup_type?: string;
79
+ thesis?: string;
80
+ target_price?: number;
81
+ regime?: string;
82
+ regime_confidence?: number;
83
+ scorecard_verdict?: string;
84
+ confluence_score?: number;
85
+ invalidation_price?: number;
86
+ realization_rule?: unknown;
87
+ }
88
+ /** Validate a `create_order` call against the SKILL.md v2.10.0 contract.
89
+ * Only enforced in LIVE mode — paper mode is for exploration and allows
90
+ * missing metadata so the agent can probe without full reasoning. Live
91
+ * mode = real money = must show your work.
92
+ */
93
+ export declare function validateCreateOrder(args: CreateOrderArgs, isLive: boolean): ValidationResult;
94
+ /** Coerce the agent-supplied `realization_rule` (snake_case from the tool
95
+ * schema) into a clean RealizationRule, dropping garbage. Permissive by
96
+ * design — this is the agent's stated PLAN (indication), not an enforced
97
+ * mechanic, so we keep whatever is well-formed and default an unknown `type`
98
+ * to 'manual' rather than rejecting. Returns undefined for non-objects. */
99
+ export declare function sanitizeRealizationRule(raw: unknown): RealizationRule | undefined;
100
+ /** Verdicts the agent can file at heartbeat for an open position. `trim` is
101
+ * intentionally absent until `partial_close` exists as a real action — see
102
+ * POSITION_DECISION_JOURNAL_PLAN.md §3 redirect #4. */
103
+ export declare const REVIEW_VERDICTS: readonly ["hold", "add_on", "close_recommended"];
104
+ export type ReviewVerdict = (typeof REVIEW_VERDICTS)[number];
105
+ export declare const THESIS_STATUSES: readonly ["intact", "weakening", "invalidated", "evolving"];
106
+ export type ThesisStatus = (typeof THESIS_STATUSES)[number];
107
+ export interface PositionReviewItem {
108
+ symbol?: string;
109
+ position_open_at?: number;
110
+ verdict?: string;
111
+ thesis_status?: string;
112
+ entry_score?: number;
113
+ current_score?: number;
114
+ score_delta?: number;
115
+ confluence_components?: Record<string, unknown>;
116
+ regime_entry?: string;
117
+ regime_current?: string;
118
+ regime_confidence?: number;
119
+ r_multiple?: number;
120
+ distance_to_stop_bps?: number;
121
+ distance_to_target_bps?: number;
122
+ time_in_position_minutes?: number;
123
+ mfe_r?: number;
124
+ give_back_pct?: number;
125
+ what_changed?: string;
126
+ invalidation_trigger?: string;
127
+ }
128
+ export interface RecordPositionReviewsArgs {
129
+ reviews?: unknown;
130
+ }
131
+ /** Validate a `record_position_reviews` call. Per-review rules from
132
+ * POSITION_REVIEW_PLAN.md §7.2 plus a top-level superset rule when the caller
133
+ * passes the open-positions snapshot.
134
+ *
135
+ * Returns either {ok:true} (proceed) or {ok:false, error} (reject the whole
136
+ * call — partial-success would corrupt the audit trail).
137
+ */
138
+ export declare function validatePositionReviews(args: RecordPositionReviewsArgs, ctx?: {
139
+ openSymbols?: ReadonlySet<string>;
140
+ gateMode?: 'off' | 'shadow' | 'observe' | 'enforce';
141
+ }): ValidationResult;