@reefclaw/connect 0.1.10 → 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.
- package/assets/bridge/gateway/event-parser.d.ts +6 -1
- package/assets/bridge/gateway/event-parser.js +19 -2
- package/assets/bridge/gateway/heartbeat-cron.d.ts +27 -0
- package/assets/bridge/gateway/heartbeat-cron.js +85 -0
- package/assets/bridge/gateway/poller.d.ts +1 -0
- package/assets/bridge/gateway/poller.js +14 -2
- package/assets/bridge/providers/gateway.d.ts +24 -2
- package/assets/bridge/providers/gateway.js +124 -25
- package/assets/bridge/setup.js +6 -51
- package/assets/shared/signals/conditions/registry.js +11 -2
- package/assets/shared/signals/strategy-adapter.js +17 -7
- package/assets/skill/SKILL.md +2 -0
- package/dist/deps.js +2 -2
- package/dist/plugin.js +35 -7
- package/package.json +1 -1
- package/assets/plugin/audit/mode-transition-audit.d.ts +0 -11
- package/assets/plugin/audit/mode-transition-audit.js +0 -29
- package/assets/plugin/balance-utils.d.ts +0 -36
- package/assets/plugin/balance-utils.js +0 -98
- package/assets/plugin/ccxt/binance-ban-gate.d.ts +0 -47
- package/assets/plugin/ccxt/binance-ban-gate.js +0 -420
- package/assets/plugin/ccxt/binance-private.d.ts +0 -346
- package/assets/plugin/ccxt/binance-private.js +0 -1525
- package/assets/plugin/ccxt/binance-public.d.ts +0 -34
- package/assets/plugin/ccxt/binance-public.js +0 -180
- package/assets/plugin/ccxt/intel-public.d.ts +0 -25
- package/assets/plugin/ccxt/intel-public.js +0 -80
- package/assets/plugin/ccxt/public-market-data-api.d.ts +0 -12
- package/assets/plugin/ccxt/public-market-data-api.js +0 -9
- package/assets/plugin/config/agent-config-client.d.ts +0 -77
- package/assets/plugin/config/agent-config-client.js +0 -188
- package/assets/plugin/config/agent-config-poller.d.ts +0 -32
- package/assets/plugin/config/agent-config-poller.js +0 -101
- package/assets/plugin/config/brackets-config.d.ts +0 -22
- package/assets/plugin/config/brackets-config.js +0 -58
- package/assets/plugin/config/entitlement-gate.d.ts +0 -51
- package/assets/plugin/config/entitlement-gate.js +0 -137
- package/assets/plugin/config/gate-store.d.ts +0 -18
- package/assets/plugin/config/gate-store.js +0 -61
- package/assets/plugin/config/plugin-config-io.d.ts +0 -215
- package/assets/plugin/config/plugin-config-io.js +0 -111
- package/assets/plugin/config/position-review-config.d.ts +0 -35
- package/assets/plugin/config/position-review-config.js +0 -105
- package/assets/plugin/config/tool-gate.d.ts +0 -53
- package/assets/plugin/config/tool-gate.js +0 -128
- package/assets/plugin/config/user-data-stream-config.d.ts +0 -89
- package/assets/plugin/config/user-data-stream-config.js +0 -239
- package/assets/plugin/connector-supervisor.d.ts +0 -36
- package/assets/plugin/connector-supervisor.js +0 -149
- package/assets/plugin/exchange-adapter.d.ts +0 -65
- package/assets/plugin/exchange-adapter.js +0 -4
- package/assets/plugin/index.d.ts +0 -30
- package/assets/plugin/index.js +0 -2678
- package/assets/plugin/ingest/pending-entry-metadata.d.ts +0 -74
- package/assets/plugin/ingest/pending-entry-metadata.js +0 -236
- package/assets/plugin/ingest/position-auto-capture.d.ts +0 -103
- package/assets/plugin/ingest/position-auto-capture.js +0 -411
- package/assets/plugin/ingest/position-decisions-client.d.ts +0 -322
- package/assets/plugin/ingest/position-decisions-client.js +0 -296
- package/assets/plugin/ingest/readiness-reporter.d.ts +0 -42
- package/assets/plugin/ingest/readiness-reporter.js +0 -163
- package/assets/plugin/ingest/reconcile-db-vs-exchange.d.ts +0 -13
- package/assets/plugin/ingest/reconcile-db-vs-exchange.js +0 -114
- package/assets/plugin/ingest/reconciler-cleanup.d.ts +0 -37
- package/assets/plugin/ingest/reconciler-cleanup.js +0 -147
- package/assets/plugin/ingest/rest-gap-filler.d.ts +0 -191
- package/assets/plugin/ingest/rest-gap-filler.js +0 -565
- package/assets/plugin/ingest/touched-symbols-store.d.ts +0 -25
- package/assets/plugin/ingest/touched-symbols-store.js +0 -96
- package/assets/plugin/ingest/trade-store-client.d.ts +0 -40
- package/assets/plugin/ingest/trade-store-client.js +0 -125
- package/assets/plugin/ingest/ws-ingest.d.ts +0 -43
- package/assets/plugin/ingest/ws-ingest.js +0 -126
- package/assets/plugin/learning/setup-family.d.ts +0 -21
- package/assets/plugin/learning/setup-family.js +0 -103
- package/assets/plugin/lifecycle/install-signal-handlers.d.ts +0 -33
- package/assets/plugin/lifecycle/install-signal-handlers.js +0 -112
- package/assets/plugin/lifecycle/shutdown-coordinator.d.ts +0 -43
- package/assets/plugin/lifecycle/shutdown-coordinator.js +0 -131
- package/assets/plugin/lifecycle/trading-operation-lock.d.ts +0 -17
- package/assets/plugin/lifecycle/trading-operation-lock.js +0 -14
- package/assets/plugin/live/bracket-id.d.ts +0 -26
- package/assets/plugin/live/bracket-id.js +0 -112
- package/assets/plugin/live/bracket-ledger.d.ts +0 -54
- package/assets/plugin/live/bracket-ledger.js +0 -267
- package/assets/plugin/live/bracket-manager.d.ts +0 -82
- package/assets/plugin/live/bracket-manager.js +0 -478
- package/assets/plugin/live/bracket-params.d.ts +0 -22
- package/assets/plugin/live/bracket-params.js +0 -124
- package/assets/plugin/live/bracket-reconciler.d.ts +0 -95
- package/assets/plugin/live/bracket-reconciler.js +0 -573
- package/assets/plugin/live/bracket-types.d.ts +0 -102
- package/assets/plugin/live/bracket-types.js +0 -8
- package/assets/plugin/live/deposit-tracker.d.ts +0 -62
- package/assets/plugin/live/deposit-tracker.js +0 -97
- package/assets/plugin/live/emergency-controls.d.ts +0 -32
- package/assets/plugin/live/emergency-controls.js +0 -226
- package/assets/plugin/live/exchange-errors.d.ts +0 -12
- package/assets/plugin/live/exchange-errors.js +0 -130
- package/assets/plugin/live/exchange-info-cache.d.ts +0 -37
- package/assets/plugin/live/exchange-info-cache.js +0 -134
- package/assets/plugin/live/fact-subscriber.d.ts +0 -78
- package/assets/plugin/live/fact-subscriber.js +0 -182
- package/assets/plugin/live/intent-journal.d.ts +0 -42
- package/assets/plugin/live/intent-journal.js +0 -122
- package/assets/plugin/live/listen-key-manager.d.ts +0 -70
- package/assets/plugin/live/listen-key-manager.js +0 -169
- package/assets/plugin/live/live-adapter.d.ts +0 -287
- package/assets/plugin/live/live-adapter.js +0 -1777
- package/assets/plugin/live/live-balance-enricher.d.ts +0 -32
- package/assets/plugin/live/live-balance-enricher.js +0 -104
- package/assets/plugin/live/live-bracket-api.d.ts +0 -13
- package/assets/plugin/live/live-bracket-api.js +0 -20
- package/assets/plugin/live/live-state-store.d.ts +0 -194
- package/assets/plugin/live/live-state-store.js +0 -450
- package/assets/plugin/live/local-signal-service.d.ts +0 -57
- package/assets/plugin/live/local-signal-service.js +0 -151
- package/assets/plugin/live/local-strategy-evaluator.d.ts +0 -62
- package/assets/plugin/live/local-strategy-evaluator.js +0 -131
- package/assets/plugin/live/microstructure-assembler.d.ts +0 -54
- package/assets/plugin/live/microstructure-assembler.js +0 -148
- package/assets/plugin/live/order-poller.d.ts +0 -29
- package/assets/plugin/live/order-poller.js +0 -125
- package/assets/plugin/live/position-state-store.d.ts +0 -83
- package/assets/plugin/live/position-state-store.js +0 -237
- package/assets/plugin/live/proposal-decision-listener.d.ts +0 -70
- package/assets/plugin/live/proposal-decision-listener.js +0 -292
- package/assets/plugin/live/proposal-manager.d.ts +0 -76
- package/assets/plugin/live/proposal-manager.js +0 -140
- package/assets/plugin/live/rate-limiter.d.ts +0 -47
- package/assets/plugin/live/rate-limiter.js +0 -159
- package/assets/plugin/live/reconciler.d.ts +0 -39
- package/assets/plugin/live/reconciler.js +0 -175
- package/assets/plugin/live/setup-buckets.d.ts +0 -7
- package/assets/plugin/live/setup-buckets.js +0 -33
- package/assets/plugin/live/slippage-tracker.d.ts +0 -45
- package/assets/plugin/live/slippage-tracker.js +0 -78
- package/assets/plugin/live/stop-watcher.d.ts +0 -60
- package/assets/plugin/live/stop-watcher.js +0 -215
- package/assets/plugin/live/user-data-active-probe.d.ts +0 -54
- package/assets/plugin/live/user-data-active-probe.js +0 -180
- package/assets/plugin/live/user-data-stream-controller.d.ts +0 -200
- package/assets/plugin/live/user-data-stream-controller.js +0 -579
- package/assets/plugin/live/user-data-stream-ws.d.ts +0 -22
- package/assets/plugin/live/user-data-stream-ws.js +0 -63
- package/assets/plugin/live/user-data-stream.d.ts +0 -243
- package/assets/plugin/live/user-data-stream.js +0 -704
- package/assets/plugin/logger.d.ts +0 -2
- package/assets/plugin/logger.js +0 -2
- package/assets/plugin/mfe.d.ts +0 -21
- package/assets/plugin/mfe.js +0 -68
- package/assets/plugin/onboarding/mode-ladder.d.ts +0 -1
- package/assets/plugin/onboarding/mode-ladder.js +0 -3
- package/assets/plugin/onboarding/runtime.d.ts +0 -84
- package/assets/plugin/onboarding/runtime.js +0 -173
- package/assets/plugin/openclaw.plugin.json +0 -92
- package/assets/plugin/paper-adapter.d.ts +0 -24
- package/assets/plugin/paper-adapter.js +0 -91
- package/assets/plugin/persistence/state-manager.d.ts +0 -66
- package/assets/plugin/persistence/state-manager.js +0 -222
- package/assets/plugin/pinned-plan.d.ts +0 -9
- package/assets/plugin/pinned-plan.js +0 -23
- package/assets/plugin/portfolio/wave9-admission.d.ts +0 -67
- package/assets/plugin/portfolio/wave9-admission.js +0 -262
- package/assets/plugin/portfolio/wave9-policy.d.ts +0 -36
- package/assets/plugin/portfolio/wave9-policy.js +0 -183
- package/assets/plugin/risk/pre-trade-check.d.ts +0 -38
- package/assets/plugin/risk/pre-trade-check.js +0 -345
- package/assets/plugin/risk/pre-trade-types.d.ts +0 -60
- package/assets/plugin/risk/pre-trade-types.js +0 -3
- package/assets/plugin/shadow/shadow-tracker.d.ts +0 -36
- package/assets/plugin/shadow/shadow-tracker.js +0 -151
- package/assets/plugin/shadow/types.d.ts +0 -42
- package/assets/plugin/shadow/types.js +0 -20
- package/assets/plugin/shared/indicators-extended.d.ts +0 -52
- package/assets/plugin/shared/indicators-extended.js +0 -291
- package/assets/plugin/shared/indicators.d.ts +0 -15
- package/assets/plugin/shared/indicators.js +0 -114
- package/assets/plugin/signals/conditions/registry.d.ts +0 -16
- package/assets/plugin/signals/conditions/registry.js +0 -1324
- package/assets/plugin/signals/conditions/types.d.ts +0 -1
- package/assets/plugin/signals/conditions/types.js +0 -4
- package/assets/plugin/signals/direction-rules.d.ts +0 -3
- package/assets/plugin/signals/direction-rules.js +0 -24
- package/assets/plugin/signals/entry-rules.d.ts +0 -6
- package/assets/plugin/signals/entry-rules.js +0 -33
- package/assets/plugin/signals/serialize-context.d.ts +0 -4
- package/assets/plugin/signals/serialize-context.js +0 -39
- package/assets/plugin/signals/stop-rules.d.ts +0 -3
- package/assets/plugin/signals/stop-rules.js +0 -48
- package/assets/plugin/signals/strategy-adapter.d.ts +0 -47
- package/assets/plugin/signals/strategy-adapter.js +0 -199
- package/assets/plugin/signals/types.d.ts +0 -1
- package/assets/plugin/signals/types.js +0 -8
- package/assets/plugin/simulator/exchange-simulator.d.ts +0 -93
- package/assets/plugin/simulator/exchange-simulator.js +0 -689
- package/assets/plugin/simulator/fill-engine.d.ts +0 -53
- package/assets/plugin/simulator/fill-engine.js +0 -280
- package/assets/plugin/simulator/paper-market-feed.d.ts +0 -26
- package/assets/plugin/simulator/paper-market-feed.js +0 -104
- package/assets/plugin/simulator/realistic-fills.d.ts +0 -59
- package/assets/plugin/simulator/realistic-fills.js +0 -175
- package/assets/plugin/simulator/types.d.ts +0 -224
- package/assets/plugin/simulator/types.js +0 -43
- package/assets/plugin/strategy/builtin-strategies.d.ts +0 -2
- package/assets/plugin/strategy/builtin-strategies.js +0 -113
- package/assets/plugin/strategy/condition-registry.d.ts +0 -3
- package/assets/plugin/strategy/condition-registry.js +0 -153
- package/assets/plugin/strategy/evaluator.d.ts +0 -70
- package/assets/plugin/strategy/evaluator.js +0 -98
- package/assets/plugin/tools/assessment-validation.d.ts +0 -120
- package/assets/plugin/tools/assessment-validation.js +0 -415
- package/assets/plugin/tools/attach-brackets.d.ts +0 -39
- package/assets/plugin/tools/attach-brackets.js +0 -399
- package/assets/plugin/tools/audit-bracket-protection.d.ts +0 -49
- package/assets/plugin/tools/audit-bracket-protection.js +0 -527
- package/assets/plugin/tools/cancel-all-orders.d.ts +0 -9
- package/assets/plugin/tools/cancel-all-orders.js +0 -8
- package/assets/plugin/tools/cancel-order.d.ts +0 -14
- package/assets/plugin/tools/cancel-order.js +0 -60
- package/assets/plugin/tools/check-position-health.d.ts +0 -46
- package/assets/plugin/tools/check-position-health.js +0 -194
- package/assets/plugin/tools/clear-exchange-credentials.d.ts +0 -24
- package/assets/plugin/tools/clear-exchange-credentials.js +0 -70
- package/assets/plugin/tools/close-position.d.ts +0 -45
- package/assets/plugin/tools/close-position.js +0 -722
- package/assets/plugin/tools/create-order.d.ts +0 -82
- package/assets/plugin/tools/create-order.js +0 -1516
- package/assets/plugin/tools/exit-gate.d.ts +0 -58
- package/assets/plugin/tools/exit-gate.js +0 -162
- package/assets/plugin/tools/fetch-balance.d.ts +0 -5
- package/assets/plugin/tools/fetch-balance.js +0 -4
- package/assets/plugin/tools/fetch-ohlcv.d.ts +0 -11
- package/assets/plugin/tools/fetch-ohlcv.js +0 -8
- package/assets/plugin/tools/fetch-open-orders.d.ts +0 -7
- package/assets/plugin/tools/fetch-open-orders.js +0 -4
- package/assets/plugin/tools/fetch-positions.d.ts +0 -7
- package/assets/plugin/tools/fetch-positions.js +0 -4
- package/assets/plugin/tools/fetch-ticker.d.ts +0 -11
- package/assets/plugin/tools/fetch-ticker.js +0 -5
- package/assets/plugin/tools/get-agent-profile.d.ts +0 -4
- package/assets/plugin/tools/get-agent-profile.js +0 -6
- package/assets/plugin/tools/get-analytics.d.ts +0 -6
- package/assets/plugin/tools/get-analytics.js +0 -7
- package/assets/plugin/tools/get-backtest.d.ts +0 -12
- package/assets/plugin/tools/get-backtest.js +0 -91
- package/assets/plugin/tools/get-basis.d.ts +0 -7
- package/assets/plugin/tools/get-basis.js +0 -7
- package/assets/plugin/tools/get-bracket-config.d.ts +0 -11
- package/assets/plugin/tools/get-bracket-config.js +0 -24
- package/assets/plugin/tools/get-cascade-risk.d.ts +0 -7
- package/assets/plugin/tools/get-cascade-risk.js +0 -8
- package/assets/plugin/tools/get-crypto-metrics.d.ts +0 -18
- package/assets/plugin/tools/get-crypto-metrics.js +0 -62
- package/assets/plugin/tools/get-cvd.d.ts +0 -6
- package/assets/plugin/tools/get-cvd.js +0 -6
- package/assets/plugin/tools/get-divergences.d.ts +0 -6
- package/assets/plugin/tools/get-divergences.js +0 -6
- package/assets/plugin/tools/get-funding-context.d.ts +0 -6
- package/assets/plugin/tools/get-funding-context.js +0 -16
- package/assets/plugin/tools/get-liquidation-levels.d.ts +0 -7
- package/assets/plugin/tools/get-liquidation-levels.js +0 -7
- package/assets/plugin/tools/get-liquidation-pulse.d.ts +0 -9
- package/assets/plugin/tools/get-liquidation-pulse.js +0 -22
- package/assets/plugin/tools/get-market-breadth.d.ts +0 -6
- package/assets/plugin/tools/get-market-breadth.js +0 -8
- package/assets/plugin/tools/get-market-intel.d.ts +0 -19
- package/assets/plugin/tools/get-market-intel.js +0 -116
- package/assets/plugin/tools/get-market-structure.d.ts +0 -47
- package/assets/plugin/tools/get-market-structure.js +0 -198
- package/assets/plugin/tools/get-my-mined-patterns.d.ts +0 -20
- package/assets/plugin/tools/get-my-mined-patterns.js +0 -61
- package/assets/plugin/tools/get-my-proposed-learnings.d.ts +0 -20
- package/assets/plugin/tools/get-my-proposed-learnings.js +0 -55
- package/assets/plugin/tools/get-my-recent-reviews.d.ts +0 -22
- package/assets/plugin/tools/get-my-recent-reviews.js +0 -66
- package/assets/plugin/tools/get-orderbook.d.ts +0 -21
- package/assets/plugin/tools/get-orderbook.js +0 -32
- package/assets/plugin/tools/get-pattern-scan.d.ts +0 -7
- package/assets/plugin/tools/get-pattern-scan.js +0 -8
- package/assets/plugin/tools/get-regime.d.ts +0 -6
- package/assets/plugin/tools/get-regime.js +0 -7
- package/assets/plugin/tools/get-relevant-learnings.d.ts +0 -21
- package/assets/plugin/tools/get-relevant-learnings.js +0 -65
- package/assets/plugin/tools/get-resting-liquidity.d.ts +0 -6
- package/assets/plugin/tools/get-resting-liquidity.js +0 -11
- package/assets/plugin/tools/get-risk-scenario.d.ts +0 -29
- package/assets/plugin/tools/get-risk-scenario.js +0 -47
- package/assets/plugin/tools/get-risk-summary.d.ts +0 -51
- package/assets/plugin/tools/get-risk-summary.js +0 -118
- package/assets/plugin/tools/get-sentiment.d.ts +0 -4
- package/assets/plugin/tools/get-sentiment.js +0 -6
- package/assets/plugin/tools/get-session-review.d.ts +0 -7
- package/assets/plugin/tools/get-session-review.js +0 -8
- package/assets/plugin/tools/get-setup-detail.d.ts +0 -7
- package/assets/plugin/tools/get-setup-detail.js +0 -311
- package/assets/plugin/tools/get-signals.d.ts +0 -15
- package/assets/plugin/tools/get-signals.js +0 -54
- package/assets/plugin/tools/get-sizing.d.ts +0 -6
- package/assets/plugin/tools/get-sizing.js +0 -6
- package/assets/plugin/tools/get-trade-feedback.d.ts +0 -7
- package/assets/plugin/tools/get-trade-feedback.js +0 -8
- package/assets/plugin/tools/get-trade-flow.d.ts +0 -7
- package/assets/plugin/tools/get-trade-flow.js +0 -7
- package/assets/plugin/tools/get-volume-analysis.d.ts +0 -21
- package/assets/plugin/tools/get-volume-analysis.js +0 -74
- package/assets/plugin/tools/get-volume-profile.d.ts +0 -7
- package/assets/plugin/tools/get-volume-profile.js +0 -7
- package/assets/plugin/tools/get-wave9-status.d.ts +0 -127
- package/assets/plugin/tools/get-wave9-status.js +0 -796
- package/assets/plugin/tools/helpers.d.ts +0 -26
- package/assets/plugin/tools/helpers.js +0 -39
- package/assets/plugin/tools/intel-api.d.ts +0 -34
- package/assets/plugin/tools/intel-api.js +0 -119
- package/assets/plugin/tools/intel-cache.d.ts +0 -25
- package/assets/plugin/tools/intel-cache.js +0 -148
- package/assets/plugin/tools/list-strategies.d.ts +0 -17
- package/assets/plugin/tools/list-strategies.js +0 -23
- package/assets/plugin/tools/modify-stop.d.ts +0 -21
- package/assets/plugin/tools/modify-stop.js +0 -120
- package/assets/plugin/tools/modify-target.d.ts +0 -21
- package/assets/plugin/tools/modify-target.js +0 -110
- package/assets/plugin/tools/propose-learning.d.ts +0 -22
- package/assets/plugin/tools/propose-learning.js +0 -65
- package/assets/plugin/tools/query-review-outcomes.d.ts +0 -30
- package/assets/plugin/tools/query-review-outcomes.js +0 -64
- package/assets/plugin/tools/query-trades.d.ts +0 -21
- package/assets/plugin/tools/query-trades.js +0 -37
- package/assets/plugin/tools/record-position-reviews.d.ts +0 -38
- package/assets/plugin/tools/record-position-reviews.js +0 -147
- package/assets/plugin/tools/save-strategy.d.ts +0 -16
- package/assets/plugin/tools/save-strategy.js +0 -46
- package/assets/plugin/tools/scan-pairs.d.ts +0 -18
- package/assets/plugin/tools/scan-pairs.js +0 -231
- package/assets/plugin/tools/score-setup.d.ts +0 -31
- package/assets/plugin/tools/score-setup.js +0 -268
- package/assets/plugin/tools/set-bracket-requirement.d.ts +0 -18
- package/assets/plugin/tools/set-bracket-requirement.js +0 -81
- package/assets/plugin/tools/set-exchange-credentials.d.ts +0 -25
- package/assets/plugin/tools/set-exchange-credentials.js +0 -80
- package/assets/plugin/tools/set-trading-mode.d.ts +0 -26
- package/assets/plugin/tools/set-trading-mode.js +0 -135
- package/assets/plugin/tools/test-exchange-credentials.d.ts +0 -16
- package/assets/plugin/tools/test-exchange-credentials.js +0 -100
- package/assets/plugin/tools/toggle-strategy.d.ts +0 -8
- package/assets/plugin/tools/toggle-strategy.js +0 -15
- package/assets/plugin/trading-params-cache.d.ts +0 -26
- package/assets/plugin/trading-params-cache.js +0 -52
- package/assets/plugin/types.d.ts +0 -134
- package/assets/plugin/types.js +0 -7
- package/assets/plugin/util/plugin-paths.d.ts +0 -3
- package/assets/plugin/util/plugin-paths.js +0 -15
- package/assets/plugin/venues/hyperliquid/hl-balance.d.ts +0 -116
- package/assets/plugin/venues/hyperliquid/hl-balance.js +0 -145
- package/assets/plugin/venues/hyperliquid/hl-brackets.d.ts +0 -102
- package/assets/plugin/venues/hyperliquid/hl-brackets.js +0 -172
- package/assets/plugin/venues/hyperliquid/hl-cloid.d.ts +0 -22
- package/assets/plugin/venues/hyperliquid/hl-cloid.js +0 -82
- package/assets/plugin/venues/hyperliquid/hl-info-cache.d.ts +0 -46
- package/assets/plugin/venues/hyperliquid/hl-info-cache.js +0 -125
- package/assets/plugin/venues/hyperliquid/hl-live-adapter.d.ts +0 -88
- package/assets/plugin/venues/hyperliquid/hl-live-adapter.js +0 -353
- package/assets/plugin/venues/hyperliquid/hl-precision.d.ts +0 -61
- package/assets/plugin/venues/hyperliquid/hl-precision.js +0 -176
- package/assets/plugin/venues/hyperliquid/hl-private.d.ts +0 -88
- package/assets/plugin/venues/hyperliquid/hl-private.js +0 -357
- package/assets/plugin/venues/hyperliquid/hl-public.d.ts +0 -79
- package/assets/plugin/venues/hyperliquid/hl-public.js +0 -429
- package/assets/plugin/venues/hyperliquid/hl-rate-gate.d.ts +0 -57
- package/assets/plugin/venues/hyperliquid/hl-rate-gate.js +0 -220
- package/assets/plugin/venues/hyperliquid/hl-user-stream.d.ts +0 -90
- package/assets/plugin/venues/hyperliquid/hl-user-stream.js +0 -220
- package/assets/plugin/venues/registry.d.ts +0 -38
- package/assets/plugin/venues/registry.js +0 -46
- package/assets/plugin/venues/symbols.d.ts +0 -43
- package/assets/plugin/venues/symbols.js +0 -107
- package/assets/plugin/wave9/live-account-capture.d.ts +0 -67
- package/assets/plugin/wave9/live-account-capture.js +0 -435
- package/assets/plugin/wave9/live-autonomous-protection.d.ts +0 -39
- package/assets/plugin/wave9/live-autonomous-protection.js +0 -112
- package/assets/plugin/wave9/live-durable-reconciliation-scheduler.d.ts +0 -33
- package/assets/plugin/wave9/live-durable-reconciliation-scheduler.js +0 -115
- package/assets/plugin/wave9/live-execution-ledger.d.ts +0 -107
- package/assets/plugin/wave9/live-execution-ledger.js +0 -498
- package/assets/plugin/wave9/live-position-confirmation.d.ts +0 -18
- package/assets/plugin/wave9/live-position-confirmation.js +0 -111
- package/assets/plugin/wave9/live-residual-protection.d.ts +0 -18
- package/assets/plugin/wave9/live-residual-protection.js +0 -250
- package/assets/plugin/wave9/live-startup-reconciliation.d.ts +0 -38
- package/assets/plugin/wave9/live-startup-reconciliation.js +0 -454
- package/assets/plugin/wave9/live-symbol-ownership.d.ts +0 -20
- package/assets/plugin/wave9/live-symbol-ownership.js +0 -132
- package/assets/plugin/wave9/paper-admission-guard.d.ts +0 -199
- package/assets/plugin/wave9/paper-admission-guard.js +0 -650
- package/assets/plugin/wave9/usdm-evidence-provider.d.ts +0 -42
- package/assets/plugin/wave9/usdm-evidence-provider.js +0 -133
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { PositionMetadata } from '../simulator/types.js';
|
|
2
|
-
export interface PendingEntry {
|
|
3
|
-
/** Primary lookup key. Initially the client order id (the stash happens
|
|
4
|
-
* BEFORE submission, when no exchange orderId exists yet); promote()
|
|
5
|
-
* re-keys it to the exchange-issued orderId once the REST ack returns. */
|
|
6
|
-
orderId: string;
|
|
7
|
-
/** Client order id (idempotency key) — secondary lookup key. The WS
|
|
8
|
-
* ORDER_TRADE_UPDATE carries it (`o.c`), so a fill that arrives BEFORE
|
|
9
|
-
* the REST response (routine for market orders) still finds the stash. */
|
|
10
|
-
clientOrderId?: string;
|
|
11
|
-
/** Canonical (un-suffixed) symbol. */
|
|
12
|
-
symbol: string;
|
|
13
|
-
/** Side the agent intended at create_order time. */
|
|
14
|
-
side: 'buy' | 'sell';
|
|
15
|
-
metadata: PositionMetadata;
|
|
16
|
-
createdAt: number;
|
|
17
|
-
/** Epoch ms after which this entry is dropped. */
|
|
18
|
-
expiresAt: number;
|
|
19
|
-
}
|
|
20
|
-
export type NowFn = () => number;
|
|
21
|
-
export interface PendingEntryStoreOptions {
|
|
22
|
-
pluginId?: string;
|
|
23
|
-
basePath?: string;
|
|
24
|
-
now?: NowFn;
|
|
25
|
-
ttlMs?: number;
|
|
26
|
-
}
|
|
27
|
-
export declare class PendingEntryStore {
|
|
28
|
-
private readonly filePath;
|
|
29
|
-
private readonly dir;
|
|
30
|
-
private readonly now;
|
|
31
|
-
private readonly ttlMs;
|
|
32
|
-
private entries;
|
|
33
|
-
/** clientOrderId → primary key in `entries`. Lets WS fills that beat the
|
|
34
|
-
* REST ack (no exchange orderId known yet) find the stash by cid. */
|
|
35
|
-
private cidIndex;
|
|
36
|
-
constructor(opts?: PendingEntryStoreOptions);
|
|
37
|
-
/** Stash metadata until the WS fill for this order arrives. Keyed by
|
|
38
|
-
* `orderId`; when `clientOrderId` is provided the entry is also findable
|
|
39
|
-
* by it (pre-submission stashes pass the cid as BOTH — see create_order). */
|
|
40
|
-
put(input: {
|
|
41
|
-
orderId: string;
|
|
42
|
-
clientOrderId?: string;
|
|
43
|
-
symbol: string;
|
|
44
|
-
side: 'buy' | 'sell';
|
|
45
|
-
metadata: PositionMetadata;
|
|
46
|
-
}): void;
|
|
47
|
-
/** Re-key a pre-submission stash (keyed by clientOrderId) to the
|
|
48
|
-
* exchange-issued orderId once the REST ack returns. The cid alias keeps
|
|
49
|
-
* working. No-op when the entry is gone (already consumed by a WS fill
|
|
50
|
-
* that beat the REST response, or expired). */
|
|
51
|
-
promote(fromKey: string, exchangeOrderId: string): void;
|
|
52
|
-
/** Retrieve metadata stashed for an orderId (or clientOrderId alias).
|
|
53
|
-
* Does NOT remove the entry — callers should call `consume(orderId)` to
|
|
54
|
-
* remove on first match, since multiple partial fills on the same limit
|
|
55
|
-
* order all share one orderId and the FIRST fill is the entry; subsequent
|
|
56
|
-
* are scale-ins of an already-registered position (state-store branch
|
|
57
|
-
* handles those). */
|
|
58
|
-
get(orderId: string): PendingEntry | undefined;
|
|
59
|
-
/** Atomic get + remove (accepts orderId or clientOrderId). Use this when
|
|
60
|
-
* you've already consumed the metadata to post an entry row and don't
|
|
61
|
-
* want it picked up again. */
|
|
62
|
-
consume(orderId: string): PendingEntry | undefined;
|
|
63
|
-
/** Remove an entry without retrieval (e.g. on cancel). */
|
|
64
|
-
drop(orderId: string): boolean;
|
|
65
|
-
/** Resolve a lookup key that may be an orderId or a clientOrderId alias. */
|
|
66
|
-
private resolveKey;
|
|
67
|
-
private deleteEntry;
|
|
68
|
-
size(): number;
|
|
69
|
-
getFilePath(): string;
|
|
70
|
-
private pruneExpired;
|
|
71
|
-
private loadOrInit;
|
|
72
|
-
private persist;
|
|
73
|
-
private validateFile;
|
|
74
|
-
}
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
// Pending-entry metadata cache.
|
|
2
|
-
//
|
|
3
|
-
// When the agent calls create_order with v2.10.0 metadata (thesis, setup_type,
|
|
4
|
-
// regime, scorecard_verdict, confluence_score, etc.) for a LIMIT order that
|
|
5
|
-
// doesn't fill immediately, the metadata is stashed here keyed by the
|
|
6
|
-
// exchange's orderId. When the WS-driven fill arrives later (could be seconds
|
|
7
|
-
// or hours), `onWsFillObserved` looks up the metadata and posts the entry /
|
|
8
|
-
// scale-in decision row with the original rationale intact.
|
|
9
|
-
//
|
|
10
|
-
// Without this cache, limit-order entries land in `position_entries` with
|
|
11
|
-
// thesis='(no thesis recorded)' / setupType='unknown' — useless for Phase 2
|
|
12
|
-
// outcome attribution and Phase 3 mining.
|
|
13
|
-
//
|
|
14
|
-
// Persistence: same atomic-rename pattern as bracket-ledger / position-state-
|
|
15
|
-
// store. File at ~/.openclaw/plugins/<pluginId>/pending-entry-metadata.json.
|
|
16
|
-
//
|
|
17
|
-
// TTL: entries auto-expire 24 hours after creation (limit orders rarely live
|
|
18
|
-
// longer; expired entries are pruned on every load + every write to keep the
|
|
19
|
-
// file bounded).
|
|
20
|
-
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
21
|
-
import { join } from 'node:path';
|
|
22
|
-
import { resolvePluginsBaseDir } from '../util/plugin-paths.js';
|
|
23
|
-
import { logger, formatError } from '../logger.js';
|
|
24
|
-
const TAG = 'pending-entry-metadata';
|
|
25
|
-
const DEFAULT_PLUGIN_ID = 'reefclaw-paper-trading';
|
|
26
|
-
const STATE_FILENAME = 'pending-entry-metadata.json';
|
|
27
|
-
const SCHEMA_VERSION = 1;
|
|
28
|
-
const DEFAULT_TTL_MS = 24 * 60 * 60 * 1000;
|
|
29
|
-
const defaultNow = () => Date.now();
|
|
30
|
-
export class PendingEntryStore {
|
|
31
|
-
filePath;
|
|
32
|
-
dir;
|
|
33
|
-
now;
|
|
34
|
-
ttlMs;
|
|
35
|
-
entries = new Map();
|
|
36
|
-
/** clientOrderId → primary key in `entries`. Lets WS fills that beat the
|
|
37
|
-
* REST ack (no exchange orderId known yet) find the stash by cid. */
|
|
38
|
-
cidIndex = new Map();
|
|
39
|
-
constructor(opts) {
|
|
40
|
-
const base = resolvePluginsBaseDir(opts?.basePath);
|
|
41
|
-
this.dir = join(base, opts?.pluginId ?? DEFAULT_PLUGIN_ID);
|
|
42
|
-
this.filePath = join(this.dir, STATE_FILENAME);
|
|
43
|
-
this.now = opts?.now ?? defaultNow;
|
|
44
|
-
this.ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;
|
|
45
|
-
if (!existsSync(this.dir))
|
|
46
|
-
mkdirSync(this.dir, { recursive: true });
|
|
47
|
-
this.loadOrInit();
|
|
48
|
-
}
|
|
49
|
-
/** Stash metadata until the WS fill for this order arrives. Keyed by
|
|
50
|
-
* `orderId`; when `clientOrderId` is provided the entry is also findable
|
|
51
|
-
* by it (pre-submission stashes pass the cid as BOTH — see create_order). */
|
|
52
|
-
put(input) {
|
|
53
|
-
const ts = this.now();
|
|
54
|
-
this.entries.set(input.orderId, {
|
|
55
|
-
orderId: input.orderId,
|
|
56
|
-
...(input.clientOrderId ? { clientOrderId: input.clientOrderId } : {}),
|
|
57
|
-
symbol: input.symbol,
|
|
58
|
-
side: input.side,
|
|
59
|
-
metadata: input.metadata,
|
|
60
|
-
createdAt: ts,
|
|
61
|
-
expiresAt: ts + this.ttlMs,
|
|
62
|
-
});
|
|
63
|
-
if (input.clientOrderId)
|
|
64
|
-
this.cidIndex.set(input.clientOrderId, input.orderId);
|
|
65
|
-
this.persist();
|
|
66
|
-
}
|
|
67
|
-
/** Re-key a pre-submission stash (keyed by clientOrderId) to the
|
|
68
|
-
* exchange-issued orderId once the REST ack returns. The cid alias keeps
|
|
69
|
-
* working. No-op when the entry is gone (already consumed by a WS fill
|
|
70
|
-
* that beat the REST response, or expired). */
|
|
71
|
-
promote(fromKey, exchangeOrderId) {
|
|
72
|
-
const key = this.resolveKey(fromKey);
|
|
73
|
-
if (key === undefined || key === exchangeOrderId)
|
|
74
|
-
return;
|
|
75
|
-
const entry = this.entries.get(key);
|
|
76
|
-
if (!entry)
|
|
77
|
-
return;
|
|
78
|
-
this.entries.delete(key);
|
|
79
|
-
entry.orderId = exchangeOrderId;
|
|
80
|
-
this.entries.set(exchangeOrderId, entry);
|
|
81
|
-
if (entry.clientOrderId)
|
|
82
|
-
this.cidIndex.set(entry.clientOrderId, exchangeOrderId);
|
|
83
|
-
this.persist();
|
|
84
|
-
}
|
|
85
|
-
/** Retrieve metadata stashed for an orderId (or clientOrderId alias).
|
|
86
|
-
* Does NOT remove the entry — callers should call `consume(orderId)` to
|
|
87
|
-
* remove on first match, since multiple partial fills on the same limit
|
|
88
|
-
* order all share one orderId and the FIRST fill is the entry; subsequent
|
|
89
|
-
* are scale-ins of an already-registered position (state-store branch
|
|
90
|
-
* handles those). */
|
|
91
|
-
get(orderId) {
|
|
92
|
-
this.pruneExpired();
|
|
93
|
-
const key = this.resolveKey(orderId);
|
|
94
|
-
return key === undefined ? undefined : this.entries.get(key);
|
|
95
|
-
}
|
|
96
|
-
/** Atomic get + remove (accepts orderId or clientOrderId). Use this when
|
|
97
|
-
* you've already consumed the metadata to post an entry row and don't
|
|
98
|
-
* want it picked up again. */
|
|
99
|
-
consume(orderId) {
|
|
100
|
-
this.pruneExpired();
|
|
101
|
-
const key = this.resolveKey(orderId);
|
|
102
|
-
if (key === undefined)
|
|
103
|
-
return undefined;
|
|
104
|
-
const entry = this.entries.get(key);
|
|
105
|
-
if (!entry)
|
|
106
|
-
return undefined;
|
|
107
|
-
this.deleteEntry(key, entry);
|
|
108
|
-
this.persist();
|
|
109
|
-
return entry;
|
|
110
|
-
}
|
|
111
|
-
/** Remove an entry without retrieval (e.g. on cancel). */
|
|
112
|
-
drop(orderId) {
|
|
113
|
-
const key = this.resolveKey(orderId);
|
|
114
|
-
if (key === undefined)
|
|
115
|
-
return false;
|
|
116
|
-
const entry = this.entries.get(key);
|
|
117
|
-
if (!entry)
|
|
118
|
-
return false;
|
|
119
|
-
this.deleteEntry(key, entry);
|
|
120
|
-
this.persist();
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
/** Resolve a lookup key that may be an orderId or a clientOrderId alias. */
|
|
124
|
-
resolveKey(k) {
|
|
125
|
-
if (this.entries.has(k))
|
|
126
|
-
return k;
|
|
127
|
-
const viaCid = this.cidIndex.get(k);
|
|
128
|
-
return viaCid !== undefined && this.entries.has(viaCid) ? viaCid : undefined;
|
|
129
|
-
}
|
|
130
|
-
deleteEntry(key, entry) {
|
|
131
|
-
this.entries.delete(key);
|
|
132
|
-
if (entry.clientOrderId)
|
|
133
|
-
this.cidIndex.delete(entry.clientOrderId);
|
|
134
|
-
}
|
|
135
|
-
size() {
|
|
136
|
-
return this.entries.size;
|
|
137
|
-
}
|
|
138
|
-
getFilePath() {
|
|
139
|
-
return this.filePath;
|
|
140
|
-
}
|
|
141
|
-
// ---- Internals ----
|
|
142
|
-
pruneExpired() {
|
|
143
|
-
const ts = this.now();
|
|
144
|
-
let pruned = false;
|
|
145
|
-
for (const [orderId, entry] of this.entries) {
|
|
146
|
-
if (entry.expiresAt <= ts) {
|
|
147
|
-
this.deleteEntry(orderId, entry);
|
|
148
|
-
pruned = true;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
if (pruned)
|
|
152
|
-
this.persist();
|
|
153
|
-
}
|
|
154
|
-
loadOrInit() {
|
|
155
|
-
if (!existsSync(this.filePath)) {
|
|
156
|
-
logger.info(TAG, `No state file at ${this.filePath}; starting empty`);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
let raw;
|
|
160
|
-
try {
|
|
161
|
-
raw = readFileSync(this.filePath, 'utf8');
|
|
162
|
-
}
|
|
163
|
-
catch (err) {
|
|
164
|
-
throw new Error(`pending-entry-metadata: failed to read ${this.filePath}: ${formatError(err)}`);
|
|
165
|
-
}
|
|
166
|
-
let parsed;
|
|
167
|
-
try {
|
|
168
|
-
parsed = JSON.parse(raw);
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
throw new Error(`pending-entry-metadata: ${this.filePath} is not valid JSON: ${formatError(err)}`);
|
|
172
|
-
}
|
|
173
|
-
const file = this.validateFile(parsed);
|
|
174
|
-
const ts = this.now();
|
|
175
|
-
let kept = 0;
|
|
176
|
-
let dropped = 0;
|
|
177
|
-
for (const entry of file.entries) {
|
|
178
|
-
if (entry.expiresAt > ts) {
|
|
179
|
-
this.entries.set(entry.orderId, entry);
|
|
180
|
-
if (entry.clientOrderId)
|
|
181
|
-
this.cidIndex.set(entry.clientOrderId, entry.orderId);
|
|
182
|
-
kept++;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
dropped++;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
logger.info(TAG, `Loaded ${kept} pending entries from ${this.filePath}` +
|
|
189
|
-
(dropped > 0 ? ` (pruned ${dropped} expired)` : ''));
|
|
190
|
-
if (dropped > 0)
|
|
191
|
-
this.persist();
|
|
192
|
-
}
|
|
193
|
-
persist() {
|
|
194
|
-
const file = {
|
|
195
|
-
schemaVersion: SCHEMA_VERSION,
|
|
196
|
-
entries: Array.from(this.entries.values()),
|
|
197
|
-
};
|
|
198
|
-
const tempPath = `${this.filePath}.tmp`;
|
|
199
|
-
writeFileSync(tempPath, JSON.stringify(file, null, 2));
|
|
200
|
-
renameSync(tempPath, this.filePath);
|
|
201
|
-
}
|
|
202
|
-
validateFile(raw) {
|
|
203
|
-
if (!isRecord(raw))
|
|
204
|
-
throw new Error('pending-entry-metadata: file root is not an object');
|
|
205
|
-
if (raw.schemaVersion !== SCHEMA_VERSION) {
|
|
206
|
-
throw new Error(`pending-entry-metadata: unsupported schemaVersion ${String(raw.schemaVersion)} (expected ${SCHEMA_VERSION})`);
|
|
207
|
-
}
|
|
208
|
-
if (!Array.isArray(raw.entries))
|
|
209
|
-
throw new Error('pending-entry-metadata: entries is not an array');
|
|
210
|
-
const entries = [];
|
|
211
|
-
for (const e of raw.entries) {
|
|
212
|
-
if (!isRecord(e))
|
|
213
|
-
throw new Error('pending-entry-metadata: entry is not an object');
|
|
214
|
-
if (typeof e.orderId !== 'string' || e.orderId.length === 0) {
|
|
215
|
-
throw new Error('pending-entry-metadata: entry missing orderId');
|
|
216
|
-
}
|
|
217
|
-
if (e.clientOrderId !== undefined && (typeof e.clientOrderId !== 'string' || e.clientOrderId.length === 0)) {
|
|
218
|
-
throw new Error('pending-entry-metadata: invalid clientOrderId');
|
|
219
|
-
}
|
|
220
|
-
if (typeof e.symbol !== 'string' || e.symbol.length === 0) {
|
|
221
|
-
throw new Error('pending-entry-metadata: entry missing symbol');
|
|
222
|
-
}
|
|
223
|
-
if (e.side !== 'buy' && e.side !== 'sell') {
|
|
224
|
-
throw new Error(`pending-entry-metadata: bad side ${String(e.side)}`);
|
|
225
|
-
}
|
|
226
|
-
if (typeof e.expiresAt !== 'number' || !Number.isFinite(e.expiresAt)) {
|
|
227
|
-
throw new Error('pending-entry-metadata: missing/invalid expiresAt');
|
|
228
|
-
}
|
|
229
|
-
entries.push(e);
|
|
230
|
-
}
|
|
231
|
-
return { schemaVersion: SCHEMA_VERSION, entries };
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
function isRecord(v) {
|
|
235
|
-
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
236
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type { PositionDecisionsClient } from './position-decisions-client.js';
|
|
2
|
-
import type { PositionStateStore } from '../live/position-state-store.js';
|
|
3
|
-
import type { CcxtOrder } from '../types.js';
|
|
4
|
-
import type { PositionMetadata } from '../simulator/types.js';
|
|
5
|
-
import type { PendingEntryStore } from './pending-entry-metadata.js';
|
|
6
|
-
export interface AutoCaptureContext {
|
|
7
|
-
decisionsClient?: PositionDecisionsClient;
|
|
8
|
-
stateStore?: PositionStateStore;
|
|
9
|
-
/** Stash for create_order metadata that arrives BEFORE the fill (limit
|
|
10
|
-
* orders that don't fill immediately). Looked up by exchangeOrderId when
|
|
11
|
-
* the WS fill arrives via `onWsFillObserved`. */
|
|
12
|
-
pendingEntries?: PendingEntryStore;
|
|
13
|
-
userId?: string;
|
|
14
|
-
/** When true, a reduce-only fill that takes a journaled position flat is
|
|
15
|
-
* auto-captured as an exact close (bracket SL/TP fill or other close that
|
|
16
|
-
* bypassed close_position). Default behaviour when unset is the legacy
|
|
17
|
-
* no-op (reduce-only fills ignored). Env kill-switch: RC_JOURNAL_CLOSE_ON_FILL
|
|
18
|
-
* (set 'off' to disable). See docs/CLAUDE/position-journal.md (close-bypass). */
|
|
19
|
-
closeOnReduceOnlyFill?: boolean;
|
|
20
|
-
/** Resolve the active trading book ('paper' | 'live') at capture time, read
|
|
21
|
-
* from the current adapter (so it follows a runtime reconnect). Tags the
|
|
22
|
-
* journal position row so paper and live entries can be segregated. */
|
|
23
|
-
resolveMode?: () => 'paper' | 'live';
|
|
24
|
-
/** Venue this gateway trades ('binance' | 'hyperliquid'). Static per process
|
|
25
|
-
* — changing venue requires a config edit + restart (plan §5.2), so unlike
|
|
26
|
-
* `resolveMode` this is a plain value, not a resolver. Tags journal rows
|
|
27
|
-
* (positions.exchange, migration 0058). */
|
|
28
|
-
venue?: 'binance' | 'hyperliquid';
|
|
29
|
-
}
|
|
30
|
-
export interface CreateOrderInputs {
|
|
31
|
-
symbol: string;
|
|
32
|
-
side: 'buy' | 'sell';
|
|
33
|
-
metadata?: PositionMetadata;
|
|
34
|
-
}
|
|
35
|
-
/** Called after a successful adapter.createOrder().
|
|
36
|
-
*
|
|
37
|
-
* For PR 1, we treat any non-zero `filled` quantity as an entry event and
|
|
38
|
-
* upsert the parent position + post the entry decision row. Limit orders that
|
|
39
|
-
* haven't filled yet are skipped (caller can call us again from the WS-ingest
|
|
40
|
-
* pipeline once they fill — that wiring is the follow-up).
|
|
41
|
-
*
|
|
42
|
-
* Always-fail-open: webapp errors are logged but never thrown.
|
|
43
|
-
*/
|
|
44
|
-
export declare function onCreateOrderFilled(ctx: AutoCaptureContext, inputs: CreateOrderInputs, order: CcxtOrder): Promise<void>;
|
|
45
|
-
export interface ClosePositionInputs {
|
|
46
|
-
symbol: string;
|
|
47
|
-
closeReason: string;
|
|
48
|
-
closeAssessment: Record<string, unknown>;
|
|
49
|
-
/** Optional v2.10.0 inputs the agent may have passed alongside reason+assessment. */
|
|
50
|
-
scorecardVerdict?: string;
|
|
51
|
-
confluenceScore?: number;
|
|
52
|
-
regime?: string;
|
|
53
|
-
regimeConfidence?: number;
|
|
54
|
-
}
|
|
55
|
-
/** Called after a successful adapter.closePosition() with the v2.10.0 reason +
|
|
56
|
-
* assessment from close_position.ts. Looks up the cached position UUID, posts
|
|
57
|
-
* the close decision row, and drops the local state entry. */
|
|
58
|
-
export declare function onClosePositionFilled(ctx: AutoCaptureContext, inputs: ClosePositionInputs, order: CcxtOrder): Promise<void>;
|
|
59
|
-
/** WS-driven fill observed. Resolves the PR1 deferral that limit-order fills
|
|
60
|
-
* + scale-ins were silently dropped. Branches on three cases:
|
|
61
|
-
*
|
|
62
|
-
* - reduceOnly fill → ignored here (close path runs from close_position
|
|
63
|
-
* tool with v2.10.0 reason+assessment; bracket SL/TP
|
|
64
|
-
* fills also reduce-only and the legacy bracket
|
|
65
|
-
* handler covers those).
|
|
66
|
-
* - new-symbol entry → no state-store row → register the position +
|
|
67
|
-
* post entry decision row (uses pending metadata
|
|
68
|
-
* from the cache, or '(no thesis recorded)' fallback).
|
|
69
|
-
* - same-side fill on → state-store row exists with same side → SCALE-IN.
|
|
70
|
-
* existing position Posts a position_entries row with is_scale_in=true.
|
|
71
|
-
* Does NOT create a new positions row (single parent
|
|
72
|
-
* per open exposure).
|
|
73
|
-
* - opposite-side fill → state-store has same symbol but opposite side.
|
|
74
|
-
* on existing position Treated as a manual flatten that bypassed the
|
|
75
|
-
* close_position tool — skip (cleaner to require
|
|
76
|
-
* close_position for proper rationale capture).
|
|
77
|
-
*
|
|
78
|
-
* Dedup: when create_order's market-order path already captured an entry
|
|
79
|
-
* synchronously, the state-store entry's `openedFromExchangeTradeId` matches
|
|
80
|
-
* this fill's orderId. We detect that and skip to avoid double-posting. */
|
|
81
|
-
export interface WsFillInputs {
|
|
82
|
-
symbol: string;
|
|
83
|
-
side: 'buy' | 'sell';
|
|
84
|
-
exchangeOrderId: string;
|
|
85
|
-
exchangeTradeId: string;
|
|
86
|
-
fillPrice: number;
|
|
87
|
-
fillSize: number;
|
|
88
|
-
reduceOnly: boolean;
|
|
89
|
-
/** Binance-exact realised PnL on this specific fill (`o.rp`). Used to sum the
|
|
90
|
-
* position's realised PnL when a reduce-only fill takes it flat. */
|
|
91
|
-
realizedPnl?: number;
|
|
92
|
-
/** Client order id of the fill. Lets the reduce-only close handler tag a
|
|
93
|
-
* bracket SL/TP fill (cid is a bracket cid) vs an external reduce-only close. */
|
|
94
|
-
clientOrderId?: string;
|
|
95
|
-
/** Timestamp from the exchange. Falls back to Date.now() if not provided. */
|
|
96
|
-
exchangeTimeMs?: number;
|
|
97
|
-
}
|
|
98
|
-
export declare function onWsFillObserved(ctx: AutoCaptureContext, fill: WsFillInputs): Promise<void>;
|
|
99
|
-
/** Pinned-plan subset persisted to position_entries.metadata (free-form JSONB).
|
|
100
|
-
* Keys are snake_case per the canonical-JSONB-key rule (CLAUDE.md learning-loop:
|
|
101
|
-
* a camelCase mismatch previously broke learning matching). Returns undefined
|
|
102
|
-
* when neither field is present so we never write an empty object. */
|
|
103
|
-
export declare function buildEntryPlanMetadata(md: PositionMetadata | undefined): Record<string, unknown> | undefined;
|