@senpi/runtime 1.0.95-dev.20260408174401
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/README.md +155 -0
- package/dist/actions/close-position/close-position.action.d.ts +16 -0
- package/dist/actions/close-position/close-position.action.d.ts.map +1 -0
- package/dist/actions/close-position/close-position.action.js +220 -0
- package/dist/actions/close-position/close-position.action.js.map +1 -0
- package/dist/actions/decision-engine.d.ts +32 -0
- package/dist/actions/decision-engine.d.ts.map +1 -0
- package/dist/actions/decision-engine.js +103 -0
- package/dist/actions/decision-engine.js.map +1 -0
- package/dist/actions/llm-decision/anthropic-llm-decision.d.ts +12 -0
- package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -0
- package/dist/actions/llm-decision/anthropic-llm-decision.js +74 -0
- package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -0
- package/dist/actions/llm-decision/factory.d.ts +17 -0
- package/dist/actions/llm-decision/factory.d.ts.map +1 -0
- package/dist/actions/llm-decision/factory.js +29 -0
- package/dist/actions/llm-decision/factory.js.map +1 -0
- package/dist/actions/llm-decision/index.d.ts +8 -0
- package/dist/actions/llm-decision/index.d.ts.map +1 -0
- package/dist/actions/llm-decision/index.js +5 -0
- package/dist/actions/llm-decision/index.js.map +1 -0
- package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +14 -0
- package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -0
- package/dist/actions/llm-decision/openclaw-llm-decision.js +58 -0
- package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -0
- package/dist/actions/llm-decision/shared.d.ts +41 -0
- package/dist/actions/llm-decision/shared.d.ts.map +1 -0
- package/dist/actions/llm-decision/shared.js +117 -0
- package/dist/actions/llm-decision/shared.js.map +1 -0
- package/dist/actions/open-position/open-position.action.d.ts +16 -0
- package/dist/actions/open-position/open-position.action.d.ts.map +1 -0
- package/dist/actions/open-position/open-position.action.js +278 -0
- package/dist/actions/open-position/open-position.action.js.map +1 -0
- package/dist/actions/position-tracker/position-tracker.action.d.ts +14 -0
- package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -0
- package/dist/actions/position-tracker/position-tracker.action.js +201 -0
- package/dist/actions/position-tracker/position-tracker.action.js.map +1 -0
- package/dist/actions/types.d.ts +123 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +3 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/cli/guide-commands.d.ts +27 -0
- package/dist/cli/guide-commands.d.ts.map +1 -0
- package/dist/cli/guide-commands.js +481 -0
- package/dist/cli/guide-commands.js.map +1 -0
- package/dist/cli/senpi-cli-config.d.ts +33 -0
- package/dist/cli/senpi-cli-config.d.ts.map +1 -0
- package/dist/cli/senpi-cli-config.js +130 -0
- package/dist/cli/senpi-cli-config.js.map +1 -0
- package/dist/cli/senpi-commands.d.ts +21 -0
- package/dist/cli/senpi-commands.d.ts.map +1 -0
- package/dist/cli/senpi-commands.js +471 -0
- package/dist/cli/senpi-commands.js.map +1 -0
- package/dist/cli/senpi-config-commands.d.ts +11 -0
- package/dist/cli/senpi-config-commands.d.ts.map +1 -0
- package/dist/cli/senpi-config-commands.js +113 -0
- package/dist/cli/senpi-config-commands.js.map +1 -0
- package/dist/constants/dsl/index.d.ts +62 -0
- package/dist/constants/dsl/index.d.ts.map +1 -0
- package/dist/constants/dsl/index.js +62 -0
- package/dist/constants/dsl/index.js.map +1 -0
- package/dist/context/context-builder.d.ts +14 -0
- package/dist/context/context-builder.d.ts.map +1 -0
- package/dist/context/context-builder.js +38 -0
- package/dist/context/context-builder.js.map +1 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +5 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/interpolate.d.ts +6 -0
- package/dist/context/interpolate.d.ts.map +1 -0
- package/dist/context/interpolate.js +15 -0
- package/dist/context/interpolate.js.map +1 -0
- package/dist/context/providers/asset-trend.provider.d.ts +42 -0
- package/dist/context/providers/asset-trend.provider.d.ts.map +1 -0
- package/dist/context/providers/asset-trend.provider.js +90 -0
- package/dist/context/providers/asset-trend.provider.js.map +1 -0
- package/dist/context/providers/index.d.ts +5 -0
- package/dist/context/providers/index.d.ts.map +1 -0
- package/dist/context/providers/index.js +5 -0
- package/dist/context/providers/index.js.map +1 -0
- package/dist/context/providers/scanner-context.provider.d.ts +10 -0
- package/dist/context/providers/scanner-context.provider.d.ts.map +1 -0
- package/dist/context/providers/scanner-context.provider.js +20 -0
- package/dist/context/providers/scanner-context.provider.js.map +1 -0
- package/dist/context/providers/signal.provider.d.ts +11 -0
- package/dist/context/providers/signal.provider.d.ts.map +1 -0
- package/dist/context/providers/signal.provider.js +30 -0
- package/dist/context/providers/signal.provider.js.map +1 -0
- package/dist/context/providers/strategy.provider.d.ts +14 -0
- package/dist/context/providers/strategy.provider.d.ts.map +1 -0
- package/dist/context/providers/strategy.provider.js +71 -0
- package/dist/context/providers/strategy.provider.js.map +1 -0
- package/dist/context/types.d.ts +45 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +18 -0
- package/dist/context/types.js.map +1 -0
- package/dist/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +591 -0
- package/dist/debug.js.map +1 -0
- package/dist/dsl/config/exit-block.d.ts +11 -0
- package/dist/dsl/config/exit-block.d.ts.map +1 -0
- package/dist/dsl/config/exit-block.js +5 -0
- package/dist/dsl/config/exit-block.js.map +1 -0
- package/dist/dsl/config/index.d.ts +8 -0
- package/dist/dsl/config/index.d.ts.map +1 -0
- package/dist/dsl/config/index.js +6 -0
- package/dist/dsl/config/index.js.map +1 -0
- package/dist/dsl/config/parse-phase.d.ts +14 -0
- package/dist/dsl/config/parse-phase.d.ts.map +1 -0
- package/dist/dsl/config/parse-phase.js +78 -0
- package/dist/dsl/config/parse-phase.js.map +1 -0
- package/dist/dsl/config/parse-plugin-config.d.ts +8 -0
- package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -0
- package/dist/dsl/config/parse-plugin-config.js +27 -0
- package/dist/dsl/config/parse-plugin-config.js.map +1 -0
- package/dist/dsl/config/parse-preset.d.ts +7 -0
- package/dist/dsl/config/parse-preset.d.ts.map +1 -0
- package/dist/dsl/config/parse-preset.js +99 -0
- package/dist/dsl/config/parse-preset.js.map +1 -0
- package/dist/dsl/config/parse-tiers.d.ts +7 -0
- package/dist/dsl/config/parse-tiers.d.ts.map +1 -0
- package/dist/dsl/config/parse-tiers.js +31 -0
- package/dist/dsl/config/parse-tiers.js.map +1 -0
- package/dist/dsl/config/parse-timeouts.d.ts +16 -0
- package/dist/dsl/config/parse-timeouts.d.ts.map +1 -0
- package/dist/dsl/config/parse-timeouts.js +75 -0
- package/dist/dsl/config/parse-timeouts.js.map +1 -0
- package/dist/dsl/config/raw-types.d.ts +45 -0
- package/dist/dsl/config/raw-types.d.ts.map +1 -0
- package/dist/dsl/config/raw-types.js +5 -0
- package/dist/dsl/config/raw-types.js.map +1 -0
- package/dist/dsl/config/unknown-keys.d.ts +7 -0
- package/dist/dsl/config/unknown-keys.d.ts.map +1 -0
- package/dist/dsl/config/unknown-keys.js +119 -0
- package/dist/dsl/config/unknown-keys.js.map +1 -0
- package/dist/dsl/config/validation.d.ts +21 -0
- package/dist/dsl/config/validation.d.ts.map +1 -0
- package/dist/dsl/config/validation.js +45 -0
- package/dist/dsl/config/validation.js.map +1 -0
- package/dist/dsl/constants/index.d.ts +3 -0
- package/dist/dsl/constants/index.d.ts.map +1 -0
- package/dist/dsl/constants/index.js +3 -0
- package/dist/dsl/constants/index.js.map +1 -0
- package/dist/dsl/engine/exchange-stop.d.ts +16 -0
- package/dist/dsl/engine/exchange-stop.d.ts.map +1 -0
- package/dist/dsl/engine/exchange-stop.js +20 -0
- package/dist/dsl/engine/exchange-stop.js.map +1 -0
- package/dist/dsl/engine/floors.d.ts +32 -0
- package/dist/dsl/engine/floors.d.ts.map +1 -0
- package/dist/dsl/engine/floors.js +115 -0
- package/dist/dsl/engine/floors.js.map +1 -0
- package/dist/dsl/engine/index.d.ts +7 -0
- package/dist/dsl/engine/index.d.ts.map +1 -0
- package/dist/dsl/engine/index.js +7 -0
- package/dist/dsl/engine/index.js.map +1 -0
- package/dist/dsl/engine/round.d.ts +5 -0
- package/dist/dsl/engine/round.d.ts.map +1 -0
- package/dist/dsl/engine/round.js +9 -0
- package/dist/dsl/engine/round.js.map +1 -0
- package/dist/dsl/engine/state-updates.d.ts +8 -0
- package/dist/dsl/engine/state-updates.d.ts.map +1 -0
- package/dist/dsl/engine/state-updates.js +60 -0
- package/dist/dsl/engine/state-updates.js.map +1 -0
- package/dist/dsl/engine/tick.d.ts +6 -0
- package/dist/dsl/engine/tick.d.ts.map +1 -0
- package/dist/dsl/engine/tick.js +174 -0
- package/dist/dsl/engine/tick.js.map +1 -0
- package/dist/dsl/events/bus-types.d.ts +7 -0
- package/dist/dsl/events/bus-types.d.ts.map +1 -0
- package/dist/dsl/events/bus-types.js +6 -0
- package/dist/dsl/events/bus-types.js.map +1 -0
- package/dist/dsl/events/guards.d.ts +17 -0
- package/dist/dsl/events/guards.d.ts.map +1 -0
- package/dist/dsl/events/guards.js +116 -0
- package/dist/dsl/events/guards.js.map +1 -0
- package/dist/dsl/events/handlers.d.ts +19 -0
- package/dist/dsl/events/handlers.d.ts.map +1 -0
- package/dist/dsl/events/handlers.js +387 -0
- package/dist/dsl/events/handlers.js.map +1 -0
- package/dist/dsl/events/index.d.ts +4 -0
- package/dist/dsl/events/index.d.ts.map +1 -0
- package/dist/dsl/events/index.js +4 -0
- package/dist/dsl/events/index.js.map +1 -0
- package/dist/dsl/events/initial-state.d.ts +7 -0
- package/dist/dsl/events/initial-state.d.ts.map +1 -0
- package/dist/dsl/events/initial-state.js +96 -0
- package/dist/dsl/events/initial-state.js.map +1 -0
- package/dist/dsl/events/normalize-position-opened.d.ts +10 -0
- package/dist/dsl/events/normalize-position-opened.d.ts.map +1 -0
- package/dist/dsl/events/normalize-position-opened.js +13 -0
- package/dist/dsl/events/normalize-position-opened.js.map +1 -0
- package/dist/dsl/index.d.ts +13 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +37 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/monitor/create-monitor.d.ts +24 -0
- package/dist/dsl/monitor/create-monitor.d.ts.map +1 -0
- package/dist/dsl/monitor/create-monitor.js +162 -0
- package/dist/dsl/monitor/create-monitor.js.map +1 -0
- package/dist/dsl/monitor/effective-dex.d.ts +7 -0
- package/dist/dsl/monitor/effective-dex.d.ts.map +1 -0
- package/dist/dsl/monitor/effective-dex.js +11 -0
- package/dist/dsl/monitor/effective-dex.js.map +1 -0
- package/dist/dsl/monitor/exchange-sync.d.ts +16 -0
- package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -0
- package/dist/dsl/monitor/exchange-sync.js +37 -0
- package/dist/dsl/monitor/exchange-sync.js.map +1 -0
- package/dist/dsl/monitor/index.d.ts +6 -0
- package/dist/dsl/monitor/index.d.ts.map +1 -0
- package/dist/dsl/monitor/index.js +5 -0
- package/dist/dsl/monitor/index.js.map +1 -0
- package/dist/dsl/monitor/market-price.d.ts +5 -0
- package/dist/dsl/monitor/market-price.d.ts.map +1 -0
- package/dist/dsl/monitor/market-price.js +24 -0
- package/dist/dsl/monitor/market-price.js.map +1 -0
- package/dist/dsl/monitor/process-one-position.d.ts +19 -0
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -0
- package/dist/dsl/monitor/process-one-position.js +438 -0
- package/dist/dsl/monitor/process-one-position.js.map +1 -0
- package/dist/dsl/notifications/formatter.d.ts +18 -0
- package/dist/dsl/notifications/formatter.d.ts.map +1 -0
- package/dist/dsl/notifications/formatter.js +69 -0
- package/dist/dsl/notifications/formatter.js.map +1 -0
- package/dist/dsl/notifications/index.d.ts +19 -0
- package/dist/dsl/notifications/index.d.ts.map +1 -0
- package/dist/dsl/notifications/index.js +90 -0
- package/dist/dsl/notifications/index.js.map +1 -0
- package/dist/dsl/plugin/index.d.ts +66 -0
- package/dist/dsl/plugin/index.d.ts.map +1 -0
- package/dist/dsl/plugin/index.js +398 -0
- package/dist/dsl/plugin/index.js.map +1 -0
- package/dist/dsl/plugin/options.d.ts +40 -0
- package/dist/dsl/plugin/options.d.ts.map +1 -0
- package/dist/dsl/plugin/options.js +5 -0
- package/dist/dsl/plugin/options.js.map +1 -0
- package/dist/dsl/types/index.d.ts +3 -0
- package/dist/dsl/types/index.d.ts.map +1 -0
- package/dist/dsl/types/index.js +3 -0
- package/dist/dsl/types/index.js.map +1 -0
- package/dist/health/index.d.ts +29 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +191 -0
- package/dist/health/index.js.map +1 -0
- package/dist/health/types.d.ts +114 -0
- package/dist/health/types.d.ts.map +1 -0
- package/dist/health/types.js +2 -0
- package/dist/health/types.js.map +1 -0
- package/dist/index.d.ts +102 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +772 -0
- package/dist/index.js.map +1 -0
- package/dist/leverage/max-leverage-cache.d.ts +10 -0
- package/dist/leverage/max-leverage-cache.d.ts.map +1 -0
- package/dist/leverage/max-leverage-cache.js +51 -0
- package/dist/leverage/max-leverage-cache.js.map +1 -0
- package/dist/leverage/resolve-leverage.d.ts +9 -0
- package/dist/leverage/resolve-leverage.d.ts.map +1 -0
- package/dist/leverage/resolve-leverage.js +15 -0
- package/dist/leverage/resolve-leverage.js.map +1 -0
- package/dist/risk/index.d.ts +9 -0
- package/dist/risk/index.d.ts.map +1 -0
- package/dist/risk/index.js +9 -0
- package/dist/risk/index.js.map +1 -0
- package/dist/runtime/action-registry.d.ts +12 -0
- package/dist/runtime/action-registry.d.ts.map +1 -0
- package/dist/runtime/action-registry.js +22 -0
- package/dist/runtime/action-registry.js.map +1 -0
- package/dist/runtime/auto-update/command-runner.d.ts +20 -0
- package/dist/runtime/auto-update/command-runner.d.ts.map +1 -0
- package/dist/runtime/auto-update/command-runner.js +54 -0
- package/dist/runtime/auto-update/command-runner.js.map +1 -0
- package/dist/runtime/auto-update/coordinator.d.ts +90 -0
- package/dist/runtime/auto-update/coordinator.d.ts.map +1 -0
- package/dist/runtime/auto-update/coordinator.js +336 -0
- package/dist/runtime/auto-update/coordinator.js.map +1 -0
- package/dist/runtime/auto-update/gateway-restart.d.ts +49 -0
- package/dist/runtime/auto-update/gateway-restart.d.ts.map +1 -0
- package/dist/runtime/auto-update/gateway-restart.js +105 -0
- package/dist/runtime/auto-update/gateway-restart.js.map +1 -0
- package/dist/runtime/auto-update/policy.d.ts +24 -0
- package/dist/runtime/auto-update/policy.d.ts.map +1 -0
- package/dist/runtime/auto-update/policy.js +42 -0
- package/dist/runtime/auto-update/policy.js.map +1 -0
- package/dist/runtime/auto-update/preflight.d.ts +16 -0
- package/dist/runtime/auto-update/preflight.d.ts.map +1 -0
- package/dist/runtime/auto-update/preflight.js +20 -0
- package/dist/runtime/auto-update/preflight.js.map +1 -0
- package/dist/runtime/auto-update/state-store.d.ts +29 -0
- package/dist/runtime/auto-update/state-store.d.ts.map +1 -0
- package/dist/runtime/auto-update/state-store.js +51 -0
- package/dist/runtime/auto-update/state-store.js.map +1 -0
- package/dist/runtime/auto-update/types.d.ts +105 -0
- package/dist/runtime/auto-update/types.d.ts.map +1 -0
- package/dist/runtime/auto-update/types.js +56 -0
- package/dist/runtime/auto-update/types.js.map +1 -0
- package/dist/runtime/auto-update/version-source.d.ts +23 -0
- package/dist/runtime/auto-update/version-source.d.ts.map +1 -0
- package/dist/runtime/auto-update/version-source.js +25 -0
- package/dist/runtime/auto-update/version-source.js.map +1 -0
- package/dist/runtime/build-action-scan-payload.d.ts +20 -0
- package/dist/runtime/build-action-scan-payload.d.ts.map +1 -0
- package/dist/runtime/build-action-scan-payload.js +36 -0
- package/dist/runtime/build-action-scan-payload.js.map +1 -0
- package/dist/runtime/bus.d.ts +6 -0
- package/dist/runtime/bus.d.ts.map +1 -0
- package/dist/runtime/bus.js +22 -0
- package/dist/runtime/bus.js.map +1 -0
- package/dist/runtime/create-action-context.d.ts +34 -0
- package/dist/runtime/create-action-context.d.ts.map +1 -0
- package/dist/runtime/create-action-context.js +22 -0
- package/dist/runtime/create-action-context.js.map +1 -0
- package/dist/runtime/create-actions.d.ts +30 -0
- package/dist/runtime/create-actions.d.ts.map +1 -0
- package/dist/runtime/create-actions.js +70 -0
- package/dist/runtime/create-actions.js.map +1 -0
- package/dist/runtime/create-runtime-context.d.ts +35 -0
- package/dist/runtime/create-runtime-context.d.ts.map +1 -0
- package/dist/runtime/create-runtime-context.js +35 -0
- package/dist/runtime/create-runtime-context.js.map +1 -0
- package/dist/runtime/create-scanner-module.d.ts +14 -0
- package/dist/runtime/create-scanner-module.d.ts.map +1 -0
- package/dist/runtime/create-scanner-module.js +31 -0
- package/dist/runtime/create-scanner-module.js.map +1 -0
- package/dist/runtime/create-scanner-providers-for-run.d.ts +20 -0
- package/dist/runtime/create-scanner-providers-for-run.d.ts.map +1 -0
- package/dist/runtime/create-scanner-providers-for-run.js +34 -0
- package/dist/runtime/create-scanner-providers-for-run.js.map +1 -0
- package/dist/runtime/default-state-dir.d.ts +10 -0
- package/dist/runtime/default-state-dir.d.ts.map +1 -0
- package/dist/runtime/default-state-dir.js +22 -0
- package/dist/runtime/default-state-dir.js.map +1 -0
- package/dist/runtime/env-resolve.d.ts +17 -0
- package/dist/runtime/env-resolve.d.ts.map +1 -0
- package/dist/runtime/env-resolve.js +45 -0
- package/dist/runtime/env-resolve.js.map +1 -0
- package/dist/runtime/hook-system.d.ts +7 -0
- package/dist/runtime/hook-system.d.ts.map +1 -0
- package/dist/runtime/hook-system.js +16 -0
- package/dist/runtime/hook-system.js.map +1 -0
- package/dist/runtime/index.d.ts +37 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +26 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/load-runtime-config.d.ts +23 -0
- package/dist/runtime/load-runtime-config.d.ts.map +1 -0
- package/dist/runtime/load-runtime-config.js +176 -0
- package/dist/runtime/load-runtime-config.js.map +1 -0
- package/dist/runtime/map-exit-config.d.ts +11 -0
- package/dist/runtime/map-exit-config.d.ts.map +1 -0
- package/dist/runtime/map-exit-config.js +86 -0
- package/dist/runtime/map-exit-config.js.map +1 -0
- package/dist/runtime/map-strategies-registration.d.ts +14 -0
- package/dist/runtime/map-strategies-registration.d.ts.map +1 -0
- package/dist/runtime/map-strategies-registration.js +44 -0
- package/dist/runtime/map-strategies-registration.js.map +1 -0
- package/dist/runtime/map-strategies.d.ts +14 -0
- package/dist/runtime/map-strategies.d.ts.map +1 -0
- package/dist/runtime/map-strategies.js +64 -0
- package/dist/runtime/map-strategies.js.map +1 -0
- package/dist/runtime/notifications.d.ts +19 -0
- package/dist/runtime/notifications.d.ts.map +1 -0
- package/dist/runtime/notifications.js +88 -0
- package/dist/runtime/notifications.js.map +1 -0
- package/dist/runtime/parse-interval.d.ts +11 -0
- package/dist/runtime/parse-interval.d.ts.map +1 -0
- package/dist/runtime/parse-interval.js +35 -0
- package/dist/runtime/parse-interval.js.map +1 -0
- package/dist/runtime/recipe-version.d.ts +3 -0
- package/dist/runtime/recipe-version.d.ts.map +1 -0
- package/dist/runtime/recipe-version.js +3 -0
- package/dist/runtime/recipe-version.js.map +1 -0
- package/dist/runtime/reconcile-state.d.ts +37 -0
- package/dist/runtime/reconcile-state.d.ts.map +1 -0
- package/dist/runtime/reconcile-state.js +179 -0
- package/dist/runtime/reconcile-state.js.map +1 -0
- package/dist/runtime/risk-guard.d.ts +6 -0
- package/dist/runtime/risk-guard.d.ts.map +1 -0
- package/dist/runtime/risk-guard.js +14 -0
- package/dist/runtime/risk-guard.js.map +1 -0
- package/dist/runtime/run.d.ts +30 -0
- package/dist/runtime/run.d.ts.map +1 -0
- package/dist/runtime/run.js +46 -0
- package/dist/runtime/run.js.map +1 -0
- package/dist/runtime/runtime-config.d.ts +6 -0
- package/dist/runtime/runtime-config.d.ts.map +1 -0
- package/dist/runtime/runtime-config.js +5 -0
- package/dist/runtime/runtime-config.js.map +1 -0
- package/dist/runtime/runtime-schema.d.ts +1859 -0
- package/dist/runtime/runtime-schema.d.ts.map +1 -0
- package/dist/runtime/runtime-schema.js +110 -0
- package/dist/runtime/runtime-schema.js.map +1 -0
- package/dist/runtime/runtime-version.d.ts +19 -0
- package/dist/runtime/runtime-version.d.ts.map +1 -0
- package/dist/runtime/runtime-version.js +29 -0
- package/dist/runtime/runtime-version.js.map +1 -0
- package/dist/runtime/runtime.d.ts +53 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +335 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/runtime/scanner-composition.d.ts +23 -0
- package/dist/runtime/scanner-composition.d.ts.map +1 -0
- package/dist/runtime/scanner-composition.js +168 -0
- package/dist/runtime/scanner-composition.js.map +1 -0
- package/dist/runtime/scanner-registry.d.ts +28 -0
- package/dist/runtime/scanner-registry.d.ts.map +1 -0
- package/dist/runtime/scanner-registry.js +114 -0
- package/dist/runtime/scanner-registry.js.map +1 -0
- package/dist/runtime/state-layout.d.ts +50 -0
- package/dist/runtime/state-layout.d.ts.map +1 -0
- package/dist/runtime/state-layout.js +89 -0
- package/dist/runtime/state-layout.js.map +1 -0
- package/dist/runtime/strategy-registry.d.ts +79 -0
- package/dist/runtime/strategy-registry.d.ts.map +1 -0
- package/dist/runtime/strategy-registry.js +265 -0
- package/dist/runtime/strategy-registry.js.map +1 -0
- package/dist/runtime/validate-dsl-position-tracking.d.ts +3 -0
- package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -0
- package/dist/runtime/validate-dsl-position-tracking.js +27 -0
- package/dist/runtime/validate-dsl-position-tracking.js.map +1 -0
- package/dist/scanners/__tests__/default-engine-test-composition.d.ts +9 -0
- package/dist/scanners/__tests__/default-engine-test-composition.d.ts.map +1 -0
- package/dist/scanners/__tests__/default-engine-test-composition.js +84 -0
- package/dist/scanners/__tests__/default-engine-test-composition.js.map +1 -0
- package/dist/scanners/__tests__/fixtures/index.d.ts +3 -0
- package/dist/scanners/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/scanners/__tests__/fixtures/index.js +3 -0
- package/dist/scanners/__tests__/fixtures/index.js.map +1 -0
- package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts +21 -0
- package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts.map +1 -0
- package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js +199 -0
- package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js.map +1 -0
- package/dist/scanners/__tests__/fixtures/scan-results.d.ts +23 -0
- package/dist/scanners/__tests__/fixtures/scan-results.d.ts.map +1 -0
- package/dist/scanners/__tests__/fixtures/scan-results.js +128 -0
- package/dist/scanners/__tests__/fixtures/scan-results.js.map +1 -0
- package/dist/scanners/__tests__/fixtures/signals.d.ts +18 -0
- package/dist/scanners/__tests__/fixtures/signals.d.ts.map +1 -0
- package/dist/scanners/__tests__/fixtures/signals.js +84 -0
- package/dist/scanners/__tests__/fixtures/signals.js.map +1 -0
- package/dist/scanners/__tests__/test-helpers.d.ts +4 -0
- package/dist/scanners/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/scanners/__tests__/test-helpers.js +23 -0
- package/dist/scanners/__tests__/test-helpers.js.map +1 -0
- package/dist/scanners/artifacts.d.ts +131 -0
- package/dist/scanners/artifacts.d.ts.map +1 -0
- package/dist/scanners/artifacts.js +72 -0
- package/dist/scanners/artifacts.js.map +1 -0
- package/dist/scanners/context-source-mapping.d.ts +4 -0
- package/dist/scanners/context-source-mapping.d.ts.map +1 -0
- package/dist/scanners/context-source-mapping.js +10 -0
- package/dist/scanners/context-source-mapping.js.map +1 -0
- package/dist/scanners/create-scanner.d.ts +13 -0
- package/dist/scanners/create-scanner.d.ts.map +1 -0
- package/dist/scanners/create-scanner.js +11 -0
- package/dist/scanners/create-scanner.js.map +1 -0
- package/dist/scanners/engine/config-validator.d.ts +7 -0
- package/dist/scanners/engine/config-validator.d.ts.map +1 -0
- package/dist/scanners/engine/config-validator.js +16 -0
- package/dist/scanners/engine/config-validator.js.map +1 -0
- package/dist/scanners/engine/data-providers.d.ts +48 -0
- package/dist/scanners/engine/data-providers.d.ts.map +1 -0
- package/dist/scanners/engine/data-providers.js +28 -0
- package/dist/scanners/engine/data-providers.js.map +1 -0
- package/dist/scanners/engine/engine.d.ts +92 -0
- package/dist/scanners/engine/engine.d.ts.map +1 -0
- package/dist/scanners/engine/engine.js +478 -0
- package/dist/scanners/engine/engine.js.map +1 -0
- package/dist/scanners/engine/index.d.ts +9 -0
- package/dist/scanners/engine/index.d.ts.map +1 -0
- package/dist/scanners/engine/index.js +7 -0
- package/dist/scanners/engine/index.js.map +1 -0
- package/dist/scanners/engine/input-resolver.d.ts +33 -0
- package/dist/scanners/engine/input-resolver.d.ts.map +1 -0
- package/dist/scanners/engine/input-resolver.js +216 -0
- package/dist/scanners/engine/input-resolver.js.map +1 -0
- package/dist/scanners/engine/lifecycle.d.ts +21 -0
- package/dist/scanners/engine/lifecycle.d.ts.map +1 -0
- package/dist/scanners/engine/lifecycle.js +2 -0
- package/dist/scanners/engine/lifecycle.js.map +1 -0
- package/dist/scanners/engine/result-builder.d.ts +30 -0
- package/dist/scanners/engine/result-builder.d.ts.map +1 -0
- package/dist/scanners/engine/result-builder.js +129 -0
- package/dist/scanners/engine/result-builder.js.map +1 -0
- package/dist/scanners/engine/strategy-registry.d.ts +48 -0
- package/dist/scanners/engine/strategy-registry.d.ts.map +1 -0
- package/dist/scanners/engine/strategy-registry.js +103 -0
- package/dist/scanners/engine/strategy-registry.js.map +1 -0
- package/dist/scanners/events.d.ts +41 -0
- package/dist/scanners/events.d.ts.map +1 -0
- package/dist/scanners/events.js +33 -0
- package/dist/scanners/events.js.map +1 -0
- package/dist/scanners/implementations/emerging-movers.d.ts +215 -0
- package/dist/scanners/implementations/emerging-movers.d.ts.map +1 -0
- package/dist/scanners/implementations/emerging-movers.js +713 -0
- package/dist/scanners/implementations/emerging-movers.js.map +1 -0
- package/dist/scanners/implementations/index.d.ts +9 -0
- package/dist/scanners/implementations/index.d.ts.map +1 -0
- package/dist/scanners/implementations/index.js +9 -0
- package/dist/scanners/implementations/index.js.map +1 -0
- package/dist/scanners/implementations/indicators.d.ts +40 -0
- package/dist/scanners/implementations/indicators.d.ts.map +1 -0
- package/dist/scanners/implementations/indicators.js +114 -0
- package/dist/scanners/implementations/indicators.js.map +1 -0
- package/dist/scanners/implementations/liquidation-watchdog.d.ts +66 -0
- package/dist/scanners/implementations/liquidation-watchdog.d.ts.map +1 -0
- package/dist/scanners/implementations/liquidation-watchdog.js +293 -0
- package/dist/scanners/implementations/liquidation-watchdog.js.map +1 -0
- package/dist/scanners/implementations/market-regime.d.ts +52 -0
- package/dist/scanners/implementations/market-regime.d.ts.map +1 -0
- package/dist/scanners/implementations/market-regime.js +205 -0
- package/dist/scanners/implementations/market-regime.js.map +1 -0
- package/dist/scanners/implementations/momentum.d.ts +21 -0
- package/dist/scanners/implementations/momentum.d.ts.map +1 -0
- package/dist/scanners/implementations/momentum.js +132 -0
- package/dist/scanners/implementations/momentum.js.map +1 -0
- package/dist/scanners/implementations/oi-tracker.d.ts +13 -0
- package/dist/scanners/implementations/oi-tracker.d.ts.map +1 -0
- package/dist/scanners/implementations/oi-tracker.js +71 -0
- package/dist/scanners/implementations/oi-tracker.js.map +1 -0
- package/dist/scanners/implementations/opportunity.d.ts +104 -0
- package/dist/scanners/implementations/opportunity.d.ts.map +1 -0
- package/dist/scanners/implementations/opportunity.js +445 -0
- package/dist/scanners/implementations/opportunity.js.map +1 -0
- package/dist/scanners/implementations/position-tracker.d.ts +120 -0
- package/dist/scanners/implementations/position-tracker.d.ts.map +1 -0
- package/dist/scanners/implementations/position-tracker.js +360 -0
- package/dist/scanners/implementations/position-tracker.js.map +1 -0
- package/dist/scanners/implementations/prescreener.d.ts +20 -0
- package/dist/scanners/implementations/prescreener.d.ts.map +1 -0
- package/dist/scanners/implementations/prescreener.js +101 -0
- package/dist/scanners/implementations/prescreener.js.map +1 -0
- package/dist/scanners/implementations/sm-flip.d.ts +43 -0
- package/dist/scanners/implementations/sm-flip.d.ts.map +1 -0
- package/dist/scanners/implementations/sm-flip.js +205 -0
- package/dist/scanners/implementations/sm-flip.js.map +1 -0
- package/dist/scanners/index.d.ts +26 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/index.js +19 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/scanners/input-descriptors.d.ts +61 -0
- package/dist/scanners/input-descriptors.d.ts.map +1 -0
- package/dist/scanners/input-descriptors.js +43 -0
- package/dist/scanners/input-descriptors.js.map +1 -0
- package/dist/scanners/prepare-scanner-inputs.d.ts +12 -0
- package/dist/scanners/prepare-scanner-inputs.d.ts.map +1 -0
- package/dist/scanners/prepare-scanner-inputs.js +21 -0
- package/dist/scanners/prepare-scanner-inputs.js.map +1 -0
- package/dist/scanners/protocol/context.d.ts +95 -0
- package/dist/scanners/protocol/context.d.ts.map +1 -0
- package/dist/scanners/protocol/context.js +2 -0
- package/dist/scanners/protocol/context.js.map +1 -0
- package/dist/scanners/protocol/hooks.d.ts +18 -0
- package/dist/scanners/protocol/hooks.d.ts.map +1 -0
- package/dist/scanners/protocol/hooks.js +12 -0
- package/dist/scanners/protocol/hooks.js.map +1 -0
- package/dist/scanners/protocol/index.d.ts +5 -0
- package/dist/scanners/protocol/index.d.ts.map +1 -0
- package/dist/scanners/protocol/index.js +2 -0
- package/dist/scanners/protocol/index.js.map +1 -0
- package/dist/scanners/protocol/scanner.d.ts +47 -0
- package/dist/scanners/protocol/scanner.d.ts.map +1 -0
- package/dist/scanners/protocol/scanner.js +2 -0
- package/dist/scanners/protocol/scanner.js.map +1 -0
- package/dist/scanners/providers/adapter.d.ts +23 -0
- package/dist/scanners/providers/adapter.d.ts.map +1 -0
- package/dist/scanners/providers/adapter.js +227 -0
- package/dist/scanners/providers/adapter.js.map +1 -0
- package/dist/scanners/providers/cache.d.ts +20 -0
- package/dist/scanners/providers/cache.d.ts.map +1 -0
- package/dist/scanners/providers/cache.js +61 -0
- package/dist/scanners/providers/cache.js.map +1 -0
- package/dist/scanners/providers/client.d.ts +53 -0
- package/dist/scanners/providers/client.d.ts.map +1 -0
- package/dist/scanners/providers/client.js +174 -0
- package/dist/scanners/providers/client.js.map +1 -0
- package/dist/scanners/providers/factory.d.ts +43 -0
- package/dist/scanners/providers/factory.d.ts.map +1 -0
- package/dist/scanners/providers/factory.js +297 -0
- package/dist/scanners/providers/factory.js.map +1 -0
- package/dist/scanners/providers/types.d.ts +61 -0
- package/dist/scanners/providers/types.d.ts.map +1 -0
- package/dist/scanners/providers/types.js +6 -0
- package/dist/scanners/providers/types.js.map +1 -0
- package/dist/scanners/runtime-module.d.ts +79 -0
- package/dist/scanners/runtime-module.d.ts.map +1 -0
- package/dist/scanners/runtime-module.js +362 -0
- package/dist/scanners/runtime-module.js.map +1 -0
- package/dist/scanners/scanner-definition.d.ts +81 -0
- package/dist/scanners/scanner-definition.d.ts.map +1 -0
- package/dist/scanners/scanner-definition.js +19 -0
- package/dist/scanners/scanner-definition.js.map +1 -0
- package/dist/scanners/schema-utils.d.ts +6 -0
- package/dist/scanners/schema-utils.d.ts.map +1 -0
- package/dist/scanners/schema-utils.js +14 -0
- package/dist/scanners/schema-utils.js.map +1 -0
- package/dist/scanners/score-utils.d.ts +19 -0
- package/dist/scanners/score-utils.d.ts.map +1 -0
- package/dist/scanners/score-utils.js +47 -0
- package/dist/scanners/score-utils.js.map +1 -0
- package/dist/scanners/store/fs-utils.d.ts +12 -0
- package/dist/scanners/store/fs-utils.d.ts.map +1 -0
- package/dist/scanners/store/fs-utils.js +47 -0
- package/dist/scanners/store/fs-utils.js.map +1 -0
- package/dist/scanners/store/index.d.ts +5 -0
- package/dist/scanners/store/index.d.ts.map +1 -0
- package/dist/scanners/store/index.js +5 -0
- package/dist/scanners/store/index.js.map +1 -0
- package/dist/scanners/store/runtime-store.d.ts +50 -0
- package/dist/scanners/store/runtime-store.d.ts.map +1 -0
- package/dist/scanners/store/runtime-store.js +91 -0
- package/dist/scanners/store/runtime-store.js.map +1 -0
- package/dist/scanners/store/shared-artifact-store.d.ts +35 -0
- package/dist/scanners/store/shared-artifact-store.d.ts.map +1 -0
- package/dist/scanners/store/shared-artifact-store.js +89 -0
- package/dist/scanners/store/shared-artifact-store.js.map +1 -0
- package/dist/scanners/store/signal-store.d.ts +36 -0
- package/dist/scanners/store/signal-store.d.ts.map +1 -0
- package/dist/scanners/store/signal-store.js +135 -0
- package/dist/scanners/store/signal-store.js.map +1 -0
- package/dist/scanners/types.d.ts +115 -0
- package/dist/scanners/types.d.ts.map +1 -0
- package/dist/scanners/types.js +3 -0
- package/dist/scanners/types.js.map +1 -0
- package/dist/scripts/run-dsl-standalone-live.d.ts +48 -0
- package/dist/scripts/run-dsl-standalone-live.d.ts.map +1 -0
- package/dist/scripts/run-dsl-standalone-live.js +531 -0
- package/dist/scripts/run-dsl-standalone-live.js.map +1 -0
- package/dist/scripts/run-dsl-standalone-mock.d.ts +13 -0
- package/dist/scripts/run-dsl-standalone-mock.d.ts.map +1 -0
- package/dist/scripts/run-dsl-standalone-mock.js +264 -0
- package/dist/scripts/run-dsl-standalone-mock.js.map +1 -0
- package/dist/senpi/client.d.ts +99 -0
- package/dist/senpi/client.d.ts.map +1 -0
- package/dist/senpi/client.js +779 -0
- package/dist/senpi/client.js.map +1 -0
- package/dist/senpi/constants.d.ts +7 -0
- package/dist/senpi/constants.d.ts.map +1 -0
- package/dist/senpi/constants.js +7 -0
- package/dist/senpi/constants.js.map +1 -0
- package/dist/senpi/index.d.ts +3 -0
- package/dist/senpi/index.d.ts.map +1 -0
- package/dist/senpi/index.js +2 -0
- package/dist/senpi/index.js.map +1 -0
- package/dist/senpi/types.d.ts +162 -0
- package/dist/senpi/types.d.ts.map +1 -0
- package/dist/senpi/types.js +3 -0
- package/dist/senpi/types.js.map +1 -0
- package/dist/state/index.d.ts +3 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +3 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/paths.d.ts +18 -0
- package/dist/state/paths.d.ts.map +1 -0
- package/dist/state/paths.js +51 -0
- package/dist/state/paths.js.map +1 -0
- package/dist/state/state-manager.d.ts +83 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +380 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/strategy/index.d.ts +2 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +2 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/strategy/strategy-state.d.ts +51 -0
- package/dist/strategy/strategy-state.d.ts.map +1 -0
- package/dist/strategy/strategy-state.js +218 -0
- package/dist/strategy/strategy-state.js.map +1 -0
- package/dist/types/action.d.ts +15 -0
- package/dist/types/action.d.ts.map +1 -0
- package/dist/types/action.js +2 -0
- package/dist/types/action.js.map +1 -0
- package/dist/types/dsl/index.d.ts +286 -0
- package/dist/types/dsl/index.d.ts.map +1 -0
- package/dist/types/dsl/index.js +5 -0
- package/dist/types/dsl/index.js.map +1 -0
- package/dist/types/event-bus.d.ts +13 -0
- package/dist/types/event-bus.d.ts.map +1 -0
- package/dist/types/event-bus.js +6 -0
- package/dist/types/event-bus.js.map +1 -0
- package/dist/types/hooks.d.ts +30 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +18 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/notification.d.ts +4 -0
- package/dist/types/notification.d.ts.map +1 -0
- package/dist/types/notification.js +3 -0
- package/dist/types/notification.js.map +1 -0
- package/dist/types/runtime.d.ts +18 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/runtime.js +2 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/scanner.d.ts +59 -0
- package/dist/types/scanner.d.ts.map +1 -0
- package/dist/types/scanner.js +13 -0
- package/dist/types/scanner.js.map +1 -0
- package/dist/types/strategy.d.ts +106 -0
- package/dist/types/strategy.d.ts.map +1 -0
- package/dist/types/strategy.js +2 -0
- package/dist/types/strategy.js.map +1 -0
- package/dist/utils/clearing-house-staleness.d.ts +47 -0
- package/dist/utils/clearing-house-staleness.d.ts.map +1 -0
- package/dist/utils/clearing-house-staleness.js +73 -0
- package/dist/utils/clearing-house-staleness.js.map +1 -0
- package/dist/utils/logger/dsl.d.ts +8 -0
- package/dist/utils/logger/dsl.d.ts.map +1 -0
- package/dist/utils/logger/dsl.js +7 -0
- package/dist/utils/logger/dsl.js.map +1 -0
- package/dist/utils/logger.d.ts +23 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +97 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/perp-coin.d.ts +19 -0
- package/dist/utils/perp-coin.d.ts.map +1 -0
- package/dist/utils/perp-coin.js +40 -0
- package/dist/utils/perp-coin.js.map +1 -0
- package/dist/utils/response.d.ts +14 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +44 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/retry.d.ts +19 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +32 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/examples/.env.example +25 -0
- package/examples/README.md +89 -0
- package/examples/scanners-consumer-quickstart.mjs +134 -0
- package/examples/scanners-emerging-movers-v4.mjs +287 -0
- package/examples/scanners-liquidation-watchdog.mjs +341 -0
- package/examples/scanners-live-mcp.mjs +208 -0
- package/examples/scanners-multi-strategy.mjs +165 -0
- package/examples/scanners-position-tracker-e2e.mjs +225 -0
- package/examples/scanners-scheduled-events.mjs +96 -0
- package/examples/scanners-senpi-provider-client.mjs +182 -0
- package/examples/scanners-single-strategy.mjs +198 -0
- package/examples/strategies/README.md +45 -0
- package/examples/strategies/dsl-showcase.yaml +63 -0
- package/examples/strategies/dsl.yaml +47 -0
- package/examples/strategies/fox-minimal-loosened.yaml +225 -0
- package/examples/strategies/fox-minimal.yaml +220 -0
- package/examples/strategies/minimal.yaml +44 -0
- package/examples/strategies/viper.yaml +59 -0
- package/examples/strategies/wolf.yaml +64 -0
- package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +115 -0
- package/openclaw.plugin.json +67 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SenpiClient } from "src/senpi/client.js";
|
|
2
|
+
import { StrategyState } from "./strategy.js";
|
|
3
|
+
import type { ContextBuilder } from "../context/types.js";
|
|
4
|
+
import { HookSystem, LlmDecision, NotificationService, RiskGuard } from "src/actions/types.js";
|
|
5
|
+
import type { ScannerRuntimeModule } from "../scanners/runtime-module.js";
|
|
6
|
+
import type { MaxLeverageCache } from "../leverage/max-leverage-cache.js";
|
|
7
|
+
export interface RuntimeContext {
|
|
8
|
+
senpi: SenpiClient;
|
|
9
|
+
hookSystem: HookSystem;
|
|
10
|
+
llmDecision: LlmDecision;
|
|
11
|
+
contextBuilder: ContextBuilder;
|
|
12
|
+
riskGuard: RiskGuard;
|
|
13
|
+
notifications: NotificationService;
|
|
14
|
+
strategyState: StrategyState;
|
|
15
|
+
scannerModule?: ScannerRuntimeModule;
|
|
16
|
+
maxLeverageCache: MaxLeverageCache;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Identifier of a scanner definition/instance within a strategy runtime. */
|
|
2
|
+
export type ScannerId = string;
|
|
3
|
+
/** Strategy identifier: wallet address. */
|
|
4
|
+
export type StrategyId = string;
|
|
5
|
+
/** Execution outcome classification returned by the scanner engine. */
|
|
6
|
+
export declare enum ScanStatus {
|
|
7
|
+
OK = "ok",
|
|
8
|
+
HEARTBEAT = "heartbeat",
|
|
9
|
+
SKIPPED = "skipped",
|
|
10
|
+
HALTED = "halted",
|
|
11
|
+
DISABLED = "disabled",
|
|
12
|
+
ERROR = "error"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Normalized scanner signal.
|
|
16
|
+
* Produced by scanners, then validated/enriched by the engine before persistence.
|
|
17
|
+
*/
|
|
18
|
+
export interface Signal {
|
|
19
|
+
/** Strategy (wallet address) that emitted this signal. */
|
|
20
|
+
address: string;
|
|
21
|
+
/** Scanner identifier that emitted this signal. */
|
|
22
|
+
scannerId: ScannerId;
|
|
23
|
+
/** Domain-specific signal type (for example MOMENTUM_BREAKOUT). */
|
|
24
|
+
signalType: string;
|
|
25
|
+
/** Asset symbol/name the signal refers to. */
|
|
26
|
+
asset: string;
|
|
27
|
+
/** Trade direction, or null for non-directional signals. */
|
|
28
|
+
direction: "LONG" | "SHORT" | null;
|
|
29
|
+
/** Confidence score normalized to [0, 1]. */
|
|
30
|
+
score: number;
|
|
31
|
+
/** Unix timestamp in milliseconds. */
|
|
32
|
+
timestamp: number;
|
|
33
|
+
/** Explainable boolean factors used in scoring/gating. */
|
|
34
|
+
factors: Record<string, boolean>;
|
|
35
|
+
/** Extra scanner-specific metadata for downstream consumers. */
|
|
36
|
+
meta: Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
/** Canonical persisted execution result produced by the engine. */
|
|
39
|
+
export interface ScanResult {
|
|
40
|
+
/** Strategy (wallet address) this run belongs to. */
|
|
41
|
+
address: string;
|
|
42
|
+
/** Scanner executed in this run. */
|
|
43
|
+
scannerId: ScannerId;
|
|
44
|
+
/** Final run status after hooks and scanner execution. */
|
|
45
|
+
status: ScanStatus;
|
|
46
|
+
/** Result timestamp in unix milliseconds. */
|
|
47
|
+
timestamp: number;
|
|
48
|
+
/** Normalized output signals. */
|
|
49
|
+
signals: Signal[];
|
|
50
|
+
/** Count of signals passing actionability rules. */
|
|
51
|
+
actionableCount: number;
|
|
52
|
+
/** Number of evaluated candidates. */
|
|
53
|
+
scannedCount: number;
|
|
54
|
+
/** Optional explanation for non-OK status. */
|
|
55
|
+
reason?: string;
|
|
56
|
+
/** Aggregated run metrics/details. */
|
|
57
|
+
summary: Record<string, unknown>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/types/scanner.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAIhC,uEAAuE;AACvE,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACnC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,0DAA0D;IAC1D,MAAM,EAAE,UAAU,CAAC;IACnB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// ─── Identifiers ────────────────────────────────────────────────────────────
|
|
2
|
+
// ─── Scanner Execution Types ─────────────────────────────────────────────────
|
|
3
|
+
/** Execution outcome classification returned by the scanner engine. */
|
|
4
|
+
export var ScanStatus;
|
|
5
|
+
(function (ScanStatus) {
|
|
6
|
+
ScanStatus["OK"] = "ok";
|
|
7
|
+
ScanStatus["HEARTBEAT"] = "heartbeat";
|
|
8
|
+
ScanStatus["SKIPPED"] = "skipped";
|
|
9
|
+
ScanStatus["HALTED"] = "halted";
|
|
10
|
+
ScanStatus["DISABLED"] = "disabled";
|
|
11
|
+
ScanStatus["ERROR"] = "error";
|
|
12
|
+
})(ScanStatus || (ScanStatus = {}));
|
|
13
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/types/scanner.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAO/E,gFAAgF;AAEhF,uEAAuE;AACvE,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,uBAAS,CAAA;IACT,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,6BAAe,CAAA;AACjB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { CreatePositionRequest, CreatePositionResult, EditPositionResult } from "../senpi/types.js";
|
|
2
|
+
export type TradingRisk = 'conservative' | 'moderate' | 'aggressive';
|
|
3
|
+
/** Strategy configuration. Address is the strategy identifier (platform id). */
|
|
4
|
+
export interface StrategyConfig {
|
|
5
|
+
address: string;
|
|
6
|
+
budget: number;
|
|
7
|
+
slots: number;
|
|
8
|
+
tradingRisk: TradingRisk;
|
|
9
|
+
marginPerSlot?: number;
|
|
10
|
+
defaultLeverage?: number;
|
|
11
|
+
leverageMultipliers?: Partial<Record<TradingRisk, number>>;
|
|
12
|
+
dailyLossLimit?: number;
|
|
13
|
+
dsl?: Record<string, unknown>;
|
|
14
|
+
guardRails?: Record<string, unknown>;
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Account-level + position data from strategy_get_clearinghouse_state (single MCP call). */
|
|
18
|
+
export interface ClearinghouseState {
|
|
19
|
+
accountValue: number;
|
|
20
|
+
totalMarginUsed: number;
|
|
21
|
+
totalUnrealizedPnl: number;
|
|
22
|
+
totalNtlPos: number;
|
|
23
|
+
withdrawable: number;
|
|
24
|
+
positions: OpenPosition[];
|
|
25
|
+
/** Minimum `time` (ms epoch) across all dex entries in the API response. Indicates data freshness. */
|
|
26
|
+
time: number;
|
|
27
|
+
}
|
|
28
|
+
export interface OpenPosition {
|
|
29
|
+
coin: string;
|
|
30
|
+
dex: string;
|
|
31
|
+
szi: number;
|
|
32
|
+
entryPx: number;
|
|
33
|
+
leverage: number;
|
|
34
|
+
leverageType: "cross" | "isolated";
|
|
35
|
+
unrealizedPnl: number;
|
|
36
|
+
marginUsed: number;
|
|
37
|
+
liquidationPx: number | null;
|
|
38
|
+
returnOnEquity: number;
|
|
39
|
+
}
|
|
40
|
+
export interface PastTrade {
|
|
41
|
+
coin: string;
|
|
42
|
+
direction: 'LONG' | 'SHORT';
|
|
43
|
+
entryPx: number;
|
|
44
|
+
closePx: number;
|
|
45
|
+
szi: number;
|
|
46
|
+
realizedPnl: number;
|
|
47
|
+
closedTime: number;
|
|
48
|
+
openTime: number;
|
|
49
|
+
totalFees: number;
|
|
50
|
+
}
|
|
51
|
+
export interface OpenOrder {
|
|
52
|
+
orderId: number;
|
|
53
|
+
coin: string;
|
|
54
|
+
side: 'BUY' | 'SELL';
|
|
55
|
+
size: number;
|
|
56
|
+
price: number;
|
|
57
|
+
orderType: string;
|
|
58
|
+
status: string;
|
|
59
|
+
timestamp: number;
|
|
60
|
+
}
|
|
61
|
+
export interface StrategyDetails {
|
|
62
|
+
strategyId: string;
|
|
63
|
+
name: string;
|
|
64
|
+
status: string;
|
|
65
|
+
traderAddress: string;
|
|
66
|
+
initialBudget: number;
|
|
67
|
+
totalPnl: number;
|
|
68
|
+
pnlPercentage: number;
|
|
69
|
+
createdAt: string;
|
|
70
|
+
}
|
|
71
|
+
/** Runtime strategy state. Address is the strategy identifier and equals config.address. */
|
|
72
|
+
export interface StrategyState {
|
|
73
|
+
readonly address: string;
|
|
74
|
+
readonly config: StrategyConfig;
|
|
75
|
+
getClearinghouseState(): ClearinghouseState | undefined;
|
|
76
|
+
getOpenPositions(): OpenPosition[] | undefined;
|
|
77
|
+
getPastTrades(): PastTrade[] | undefined;
|
|
78
|
+
getOpenOrders(): OpenOrder[] | undefined;
|
|
79
|
+
getAvailableSlots(): number;
|
|
80
|
+
getDetails(): StrategyDetails | undefined;
|
|
81
|
+
hasOpenPosition(coin: string, dex?: string): boolean;
|
|
82
|
+
fetchClearinghouseState(): Promise<ClearinghouseState | undefined>;
|
|
83
|
+
fetchPastTrades(opts?: {
|
|
84
|
+
limit?: number;
|
|
85
|
+
offset?: number;
|
|
86
|
+
sort_by?: string;
|
|
87
|
+
sort_direction?: string;
|
|
88
|
+
}): Promise<PastTrade[] | undefined>;
|
|
89
|
+
fetchOpenOrders(): Promise<OpenOrder[] | undefined>;
|
|
90
|
+
fetchDetails(): Promise<StrategyDetails | undefined>;
|
|
91
|
+
refresh(): Promise<void>;
|
|
92
|
+
cancelOrder(orderId: number): Promise<unknown>;
|
|
93
|
+
closePosition(coin: string, reason: string, dex?: string): Promise<unknown>;
|
|
94
|
+
createPosition(params: CreatePositionRequest): Promise<CreatePositionResult>;
|
|
95
|
+
editPosition(payload: {
|
|
96
|
+
coin: string;
|
|
97
|
+
dex?: string;
|
|
98
|
+
stopLoss?: {
|
|
99
|
+
triggerPx: number;
|
|
100
|
+
};
|
|
101
|
+
}): Promise<EditPositionResult>;
|
|
102
|
+
getOrderStatus(orderId: number): Promise<{
|
|
103
|
+
filled?: boolean;
|
|
104
|
+
} | null>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/types/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/types/strategy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the minimum `time` (ms epoch) across all dex entries in a raw
|
|
3
|
+
* clearingHouse API response.
|
|
4
|
+
*
|
|
5
|
+
* The MCP response is keyed by venue (e.g. `{ main: { …, time }, xyz: { …, time } }`).
|
|
6
|
+
* Each dex entry carries its own `time` from the Hyperliquid clearinghouseState
|
|
7
|
+
* API, indicating how fresh the data is.
|
|
8
|
+
*
|
|
9
|
+
* We take the **minimum** as a defensive measure: if any dex returned stale
|
|
10
|
+
* data the entire response is conservatively marked with the oldest timestamp,
|
|
11
|
+
* so downstream staleness checks can discard the whole response.
|
|
12
|
+
*
|
|
13
|
+
* Returns `0` when no valid time is found (e.g. response shape is unexpected
|
|
14
|
+
* or the upstream stops providing timestamps).
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractMinClearingHouseTime(raw: Record<string, unknown>): number;
|
|
17
|
+
/**
|
|
18
|
+
* Stateful guard that detects stale clearingHouse API responses by comparing
|
|
19
|
+
* the response timestamp against the most recent known-fresh timestamp for
|
|
20
|
+
* the same key (wallet address).
|
|
21
|
+
*
|
|
22
|
+
* The Hyperliquid clearinghouseState API occasionally returns a response
|
|
23
|
+
* whose timestamp is **older** than a previously observed one. Processing
|
|
24
|
+
* such stale data causes downstream consumers to misinterpret disappeared
|
|
25
|
+
* positions as closes and reappearing positions as new opens.
|
|
26
|
+
*
|
|
27
|
+
* Usage:
|
|
28
|
+
* ```ts
|
|
29
|
+
* const guard = createClearingHouseStalenessGuard();
|
|
30
|
+
* if (guard.isStale(address, responseTime)) { return null; }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* When either `responseTime` or the stored last time is `0` (unavailable),
|
|
34
|
+
* the check is skipped so callers degrade gracefully if the upstream stops
|
|
35
|
+
* providing timestamps.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createClearingHouseStalenessGuard(): {
|
|
38
|
+
/**
|
|
39
|
+
* Returns `true` if `responseTime` is stale (older than the last
|
|
40
|
+
* accepted time for `key`). Also updates internal tracking when the
|
|
41
|
+
* response is fresh.
|
|
42
|
+
*/
|
|
43
|
+
isStale(key: string, responseTime: number): boolean;
|
|
44
|
+
/** Returns the last accepted time for a key, or `0` if never seen. */
|
|
45
|
+
getLastTime(key: string): number;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=clearing-house-staleness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearing-house-staleness.d.ts","sourceRoot":"","sources":["../../src/utils/clearing-house-staleness.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAUhF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iCAAiC;IAI7C;;;;OAIG;iBACU,MAAM,gBAAgB,MAAM,GAAG,OAAO;IAcnD,sEAAsE;qBACrD,MAAM,GAAG,MAAM;EAInC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { isRecord, asNumber } from "./response.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the minimum `time` (ms epoch) across all dex entries in a raw
|
|
4
|
+
* clearingHouse API response.
|
|
5
|
+
*
|
|
6
|
+
* The MCP response is keyed by venue (e.g. `{ main: { …, time }, xyz: { …, time } }`).
|
|
7
|
+
* Each dex entry carries its own `time` from the Hyperliquid clearinghouseState
|
|
8
|
+
* API, indicating how fresh the data is.
|
|
9
|
+
*
|
|
10
|
+
* We take the **minimum** as a defensive measure: if any dex returned stale
|
|
11
|
+
* data the entire response is conservatively marked with the oldest timestamp,
|
|
12
|
+
* so downstream staleness checks can discard the whole response.
|
|
13
|
+
*
|
|
14
|
+
* Returns `0` when no valid time is found (e.g. response shape is unexpected
|
|
15
|
+
* or the upstream stops providing timestamps).
|
|
16
|
+
*/
|
|
17
|
+
export function extractMinClearingHouseTime(raw) {
|
|
18
|
+
let min = Infinity;
|
|
19
|
+
for (const value of Object.values(raw)) {
|
|
20
|
+
if (!isRecord(value))
|
|
21
|
+
continue;
|
|
22
|
+
const t = asNumber(value.time);
|
|
23
|
+
if (t != null && Number.isFinite(t) && t > 0) {
|
|
24
|
+
min = Math.min(min, t);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return Number.isFinite(min) ? min : 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stateful guard that detects stale clearingHouse API responses by comparing
|
|
31
|
+
* the response timestamp against the most recent known-fresh timestamp for
|
|
32
|
+
* the same key (wallet address).
|
|
33
|
+
*
|
|
34
|
+
* The Hyperliquid clearinghouseState API occasionally returns a response
|
|
35
|
+
* whose timestamp is **older** than a previously observed one. Processing
|
|
36
|
+
* such stale data causes downstream consumers to misinterpret disappeared
|
|
37
|
+
* positions as closes and reappearing positions as new opens.
|
|
38
|
+
*
|
|
39
|
+
* Usage:
|
|
40
|
+
* ```ts
|
|
41
|
+
* const guard = createClearingHouseStalenessGuard();
|
|
42
|
+
* if (guard.isStale(address, responseTime)) { return null; }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* When either `responseTime` or the stored last time is `0` (unavailable),
|
|
46
|
+
* the check is skipped so callers degrade gracefully if the upstream stops
|
|
47
|
+
* providing timestamps.
|
|
48
|
+
*/
|
|
49
|
+
export function createClearingHouseStalenessGuard() {
|
|
50
|
+
const lastTimeByKey = new Map();
|
|
51
|
+
return {
|
|
52
|
+
/**
|
|
53
|
+
* Returns `true` if `responseTime` is stale (older than the last
|
|
54
|
+
* accepted time for `key`). Also updates internal tracking when the
|
|
55
|
+
* response is fresh.
|
|
56
|
+
*/
|
|
57
|
+
isStale(key, responseTime) {
|
|
58
|
+
const lastTime = lastTimeByKey.get(key) ?? 0;
|
|
59
|
+
if (responseTime > 0 && lastTime > 0 && responseTime < lastTime) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (responseTime > 0) {
|
|
63
|
+
lastTimeByKey.set(key, responseTime);
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
},
|
|
67
|
+
/** Returns the last accepted time for a key, or `0` if never seen. */
|
|
68
|
+
getLastTime(key) {
|
|
69
|
+
return lastTimeByKey.get(key) ?? 0;
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=clearing-house-staleness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearing-house-staleness.js","sourceRoot":"","sources":["../../src/utils/clearing-house-staleness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAA4B;IACtE,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,CAAC,GAAG,QAAQ,CAAE,KAAiC,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iCAAiC;IAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,OAAO;QACL;;;;WAIG;QACH,OAAO,CAAC,GAAW,EAAE,YAAoB;YACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,YAAY,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sEAAsE;QACtE,WAAW,CAAC,GAAW;YACrB,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DSL logger instance. DSL code imports from here.
|
|
3
|
+
*/
|
|
4
|
+
import { type LogLevel } from "../logger.js";
|
|
5
|
+
export type { LogLevel };
|
|
6
|
+
export { setLogLevel } from "../logger.js";
|
|
7
|
+
export declare const logger: import("../logger.js").Logger;
|
|
8
|
+
//# sourceMappingURL=dsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../src/utils/logger/dsl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE3D,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,MAAM,+BAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../../src/utils/logger/dsl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAiB,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared structured logger factory. Components create a logger with a namespace.
|
|
3
|
+
*/
|
|
4
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
5
|
+
export declare function setLogLevel(level: LogLevel): void;
|
|
6
|
+
export interface ErrorNotificationPayload {
|
|
7
|
+
namespace: string;
|
|
8
|
+
level: "error";
|
|
9
|
+
message: string;
|
|
10
|
+
meta?: unknown;
|
|
11
|
+
timestamp: string;
|
|
12
|
+
}
|
|
13
|
+
export type ErrorNotifier = (payload: ErrorNotificationPayload) => void | Promise<void>;
|
|
14
|
+
export declare function setErrorNotifier(notifier: ErrorNotifier | null): void;
|
|
15
|
+
export declare function clearErrorNotifier(): void;
|
|
16
|
+
export interface Logger {
|
|
17
|
+
debug(message: string, meta?: unknown): void;
|
|
18
|
+
info(message: string, meta?: unknown): void;
|
|
19
|
+
warn(message: string, meta?: unknown): void;
|
|
20
|
+
error(message: string, meta?: unknown): void;
|
|
21
|
+
}
|
|
22
|
+
export declare function createLogger(namespace: string): Logger;
|
|
23
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAa3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAMD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAkBD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8CtD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared structured logger factory. Components create a logger with a namespace.
|
|
3
|
+
*/
|
|
4
|
+
const levelOrder = {
|
|
5
|
+
debug: 0,
|
|
6
|
+
info: 1,
|
|
7
|
+
warn: 2,
|
|
8
|
+
error: 3,
|
|
9
|
+
};
|
|
10
|
+
let minLevel = "info";
|
|
11
|
+
let errorNotifier = null;
|
|
12
|
+
let notifyingError = false;
|
|
13
|
+
export function setLogLevel(level) {
|
|
14
|
+
minLevel = level;
|
|
15
|
+
}
|
|
16
|
+
export function setErrorNotifier(notifier) {
|
|
17
|
+
errorNotifier = notifier;
|
|
18
|
+
}
|
|
19
|
+
export function clearErrorNotifier() {
|
|
20
|
+
errorNotifier = null;
|
|
21
|
+
}
|
|
22
|
+
function shouldLog(level) {
|
|
23
|
+
return levelOrder[level] >= levelOrder[minLevel];
|
|
24
|
+
}
|
|
25
|
+
function dispatchErrorNotification(payload) {
|
|
26
|
+
const notifier = errorNotifier;
|
|
27
|
+
if (notifier == null || notifyingError)
|
|
28
|
+
return;
|
|
29
|
+
void (async () => {
|
|
30
|
+
notifyingError = true;
|
|
31
|
+
try {
|
|
32
|
+
await notifier(payload);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Intentionally swallow notifier failures to keep error logging safe.
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
notifyingError = false;
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
}
|
|
42
|
+
export function createLogger(namespace) {
|
|
43
|
+
return {
|
|
44
|
+
debug(message, meta) {
|
|
45
|
+
if (!shouldLog("debug"))
|
|
46
|
+
return;
|
|
47
|
+
const prefix = `${namespace} [debug]`;
|
|
48
|
+
if (meta !== undefined) {
|
|
49
|
+
console.log(prefix, message, meta);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log(prefix, message);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
info(message, meta) {
|
|
56
|
+
if (!shouldLog("info"))
|
|
57
|
+
return;
|
|
58
|
+
const prefix = `${namespace} [info]`;
|
|
59
|
+
if (meta !== undefined) {
|
|
60
|
+
console.log(prefix, message, meta);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log(prefix, message);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
warn(message, meta) {
|
|
67
|
+
if (!shouldLog("warn"))
|
|
68
|
+
return;
|
|
69
|
+
const prefix = `${namespace} [warn]`;
|
|
70
|
+
if (meta !== undefined) {
|
|
71
|
+
console.warn(prefix, message, meta);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.warn(prefix, message);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
error(message, meta) {
|
|
78
|
+
if (!shouldLog("error"))
|
|
79
|
+
return;
|
|
80
|
+
const prefix = `${namespace} [error]`;
|
|
81
|
+
if (meta !== undefined) {
|
|
82
|
+
console.error(prefix, message, meta);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.error(prefix, message);
|
|
86
|
+
}
|
|
87
|
+
dispatchErrorNotification({
|
|
88
|
+
namespace,
|
|
89
|
+
level: "error",
|
|
90
|
+
message,
|
|
91
|
+
meta,
|
|
92
|
+
timestamp: new Date().toISOString(),
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perp symbol helpers for DSL state (base coin + dex bucket) vs Senpi wire format.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Map clearing-house bucket keys to DSL / reconcile dex (main book → empty string).
|
|
6
|
+
* Matches `SenpiClient.listOpenPositions` / `openPositionsFromClearingHouseState` in the Senpi client.
|
|
7
|
+
*/
|
|
8
|
+
export declare function reconcileDexFromClearingHouseKey(dexKey: string): string;
|
|
9
|
+
/** DSL state and reconcile: base symbol + dex (no `xyz:` prefix on coin). */
|
|
10
|
+
export declare function normalizeDslCoinDex(coin: string, dex: string): {
|
|
11
|
+
coin: string;
|
|
12
|
+
dex: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Wire format for Senpi order/close/edit when on the xyz book (`xyz:BASE`).
|
|
16
|
+
* Main book returns plain `BTC`, etc.
|
|
17
|
+
*/
|
|
18
|
+
export declare function canonicalPerpCoin(coin: string, dex: string): string;
|
|
19
|
+
//# sourceMappingURL=perp-coin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perp-coin.d.ts","sourceRoot":"","sources":["../../src/utils/perp-coin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOvE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAS5F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perp symbol helpers for DSL state (base coin + dex bucket) vs Senpi wire format.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Map clearing-house bucket keys to DSL / reconcile dex (main book → empty string).
|
|
6
|
+
* Matches `SenpiClient.listOpenPositions` / `openPositionsFromClearingHouseState` in the Senpi client.
|
|
7
|
+
*/
|
|
8
|
+
export function reconcileDexFromClearingHouseKey(dexKey) {
|
|
9
|
+
const k = dexKey.trim();
|
|
10
|
+
if (k === "")
|
|
11
|
+
return "";
|
|
12
|
+
const lower = k.toLowerCase();
|
|
13
|
+
if (lower === "main")
|
|
14
|
+
return "";
|
|
15
|
+
if (lower === "xyz")
|
|
16
|
+
return "xyz";
|
|
17
|
+
return k;
|
|
18
|
+
}
|
|
19
|
+
/** DSL state and reconcile: base symbol + dex (no `xyz:` prefix on coin). */
|
|
20
|
+
export function normalizeDslCoinDex(coin, dex) {
|
|
21
|
+
let c = coin.trim();
|
|
22
|
+
let d = (dex ?? "").trim();
|
|
23
|
+
if (d.toLowerCase() === "main")
|
|
24
|
+
d = "";
|
|
25
|
+
if (c.startsWith("xyz:")) {
|
|
26
|
+
c = c.slice(4);
|
|
27
|
+
if (!d)
|
|
28
|
+
d = "xyz";
|
|
29
|
+
}
|
|
30
|
+
return { coin: c, dex: d };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Wire format for Senpi order/close/edit when on the xyz book (`xyz:BASE`).
|
|
34
|
+
* Main book returns plain `BTC`, etc.
|
|
35
|
+
*/
|
|
36
|
+
export function canonicalPerpCoin(coin, dex) {
|
|
37
|
+
const { coin: base, dex: d } = normalizeDslCoinDex(coin, dex);
|
|
38
|
+
return d === "xyz" ? `xyz:${base}` : base;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=perp-coin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perp-coin.js","sourceRoot":"","sources":["../../src/utils/perp-coin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAc;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,GAAW;IAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,CAAC,GAAG,EAAE,CAAC;IACvC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,CAAC,CAAC;YAAE,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAW;IACzD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared response helpers: envelope unwrapping and type coercion.
|
|
3
|
+
* Used by senpi client, LLM decision, and scanner adapters.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Unwraps `{ success, data }` envelopes when present.
|
|
8
|
+
* When inner data is a record, preserves top-level success/error/message on it so callers do not lose them.
|
|
9
|
+
* Non-envelope payloads are returned unchanged.
|
|
10
|
+
*/
|
|
11
|
+
export declare function unwrapEnvelope<T>(input: unknown): T | unknown;
|
|
12
|
+
export declare function asString(value: unknown): string | null;
|
|
13
|
+
export declare function asNumber(value: unknown): number | null;
|
|
14
|
+
//# sourceMappingURL=response.d.ts.map
|