@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,29 @@
|
|
|
1
|
+
import { type AutoUpdateMode, type AutoUpdateState } from "./types.js";
|
|
2
|
+
/** Minimal logger contract so the store does not depend on a concrete logger. */
|
|
3
|
+
interface LoggerLike {
|
|
4
|
+
warn(...args: unknown[]): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Reads and writes {@link AutoUpdateState} to a JSON file in the plugin
|
|
8
|
+
* state directory so that deduplication counters and notification history
|
|
9
|
+
* survive gateway restarts.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AutoUpdateStateStore {
|
|
12
|
+
private readonly stateDir;
|
|
13
|
+
private readonly logger?;
|
|
14
|
+
private readonly filePath;
|
|
15
|
+
constructor(stateDir: string, logger?: LoggerLike | undefined);
|
|
16
|
+
/**
|
|
17
|
+
* Load persisted state, merging it with fresh defaults for the running
|
|
18
|
+
* version and effective mode.
|
|
19
|
+
*
|
|
20
|
+
* Returns clean defaults when the file is missing (first run).
|
|
21
|
+
* Logs a warning and returns defaults when the file exists but cannot
|
|
22
|
+
* be read or parsed (e.g. corruption, permission error).
|
|
23
|
+
*/
|
|
24
|
+
load(currentVersion: string, effectiveMode: AutoUpdateMode): Promise<AutoUpdateState>;
|
|
25
|
+
/** Atomically write the state to disk, creating the directory if needed. */
|
|
26
|
+
save(state: AutoUpdateState): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=state-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.d.ts","sourceRoot":"","sources":["../../../src/runtime/auto-update/state-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AACjF,UAAU,UAAU;IAClB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAJ1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,UAAU,YAAA;IAKtC;;;;;;;OAOG;IACG,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAmB3F,4EAA4E;IACtE,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { AUTO_UPDATE_STATE_FILE, createDefaultAutoUpdateState, } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Reads and writes {@link AutoUpdateState} to a JSON file in the plugin
|
|
6
|
+
* state directory so that deduplication counters and notification history
|
|
7
|
+
* survive gateway restarts.
|
|
8
|
+
*/
|
|
9
|
+
export class AutoUpdateStateStore {
|
|
10
|
+
stateDir;
|
|
11
|
+
logger;
|
|
12
|
+
filePath;
|
|
13
|
+
constructor(stateDir, logger) {
|
|
14
|
+
this.stateDir = stateDir;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.filePath = join(stateDir, AUTO_UPDATE_STATE_FILE);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Load persisted state, merging it with fresh defaults for the running
|
|
20
|
+
* version and effective mode.
|
|
21
|
+
*
|
|
22
|
+
* Returns clean defaults when the file is missing (first run).
|
|
23
|
+
* Logs a warning and returns defaults when the file exists but cannot
|
|
24
|
+
* be read or parsed (e.g. corruption, permission error).
|
|
25
|
+
*/
|
|
26
|
+
async load(currentVersion, effectiveMode) {
|
|
27
|
+
try {
|
|
28
|
+
const raw = await readFile(this.filePath, "utf8");
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
return {
|
|
31
|
+
...createDefaultAutoUpdateState(currentVersion, effectiveMode),
|
|
32
|
+
...parsed,
|
|
33
|
+
currentVersionLastSeen: currentVersion,
|
|
34
|
+
effectiveMode,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const isNotFound = err instanceof Error && "code" in err && err.code === "ENOENT";
|
|
39
|
+
if (!isNotFound) {
|
|
40
|
+
this.logger?.warn(`[senpi-auto-update] failed to load state file, using defaults | path=${this.filePath} err=${err instanceof Error ? err.message : String(err)}`);
|
|
41
|
+
}
|
|
42
|
+
return createDefaultAutoUpdateState(currentVersion, effectiveMode);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Atomically write the state to disk, creating the directory if needed. */
|
|
46
|
+
async save(state) {
|
|
47
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
48
|
+
await writeFile(this.filePath, JSON.stringify(state, null, 2), "utf8");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../../src/runtime/auto-update/state-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAG7B,MAAM,YAAY,CAAC;AAOpB;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAIZ;IACA;IAJF,QAAQ,CAAS;IAElC,YACmB,QAAgB,EAChB,MAAmB;QADnB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAa;QAEpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,cAAsB,EAAE,aAA6B;QAC9D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;YAC3D,OAAO;gBACL,GAAG,4BAA4B,CAAC,cAAc,EAAE,aAAa,CAAC;gBAC9D,GAAG,MAAM;gBACT,sBAAsB,EAAE,cAAc;gBACtC,aAAa;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC7G,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,wEAAwE,IAAI,CAAC,QAAQ,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrK,CAAC;YACD,OAAO,4BAA4B,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,IAAI,CAAC,KAAsB;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/** Whether the updater installs updates automatically or only sends notifications. */
|
|
2
|
+
export type AutoUpdateMode = "notify-only" | "auto-apply";
|
|
3
|
+
/** Classification of the semver distance between the current and latest version. */
|
|
4
|
+
export type AutoUpdateKind = "none" | "patch" | "minor" | "major";
|
|
5
|
+
/** Whether the gateway can be restarted automatically after an update. */
|
|
6
|
+
export type RestartCapability = "unknown" | "capable" | "not-capable";
|
|
7
|
+
/**
|
|
8
|
+
* Resolved auto-update configuration.
|
|
9
|
+
*
|
|
10
|
+
* Produced by {@link resolveAutoUpdateConfig} from the raw plugin config block.
|
|
11
|
+
* All fields have safe defaults so the block can be omitted entirely.
|
|
12
|
+
*/
|
|
13
|
+
export interface AutoUpdateConfig {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
mode: AutoUpdateMode;
|
|
16
|
+
pollIntervalMinutes: number;
|
|
17
|
+
startupDelaySeconds: number;
|
|
18
|
+
allowPatch: boolean;
|
|
19
|
+
allowMinor: boolean;
|
|
20
|
+
/** Hard policy: always `false`. Major versions require manual update. */
|
|
21
|
+
allowMajor: boolean;
|
|
22
|
+
failureBackoffMinutes: number;
|
|
23
|
+
maxBackoffMinutes: number;
|
|
24
|
+
/** Internal key written by the auto-updater to trigger gateway restart via config reload. */
|
|
25
|
+
lastRestartTrigger?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Persistent state tracked across auto-update poll cycles.
|
|
29
|
+
*
|
|
30
|
+
* Serialised to {@link AUTO_UPDATE_STATE_FILE} in the plugin state directory
|
|
31
|
+
* so that deduplication (e.g. "already notified for this major") survives restarts.
|
|
32
|
+
*/
|
|
33
|
+
export interface AutoUpdateState {
|
|
34
|
+
currentVersionLastSeen: string;
|
|
35
|
+
latestVersionLastSeen: string;
|
|
36
|
+
lastAppliedVersion?: string;
|
|
37
|
+
lastCheckedAt: string;
|
|
38
|
+
lastAttemptAt?: string;
|
|
39
|
+
lastSuccessAt?: string;
|
|
40
|
+
lastFailureAt?: string;
|
|
41
|
+
lastFailureReason?: string;
|
|
42
|
+
lastNotifiedMajorVersion?: string;
|
|
43
|
+
lastNotifiedUpdateVersion?: string;
|
|
44
|
+
consecutiveFailures: number;
|
|
45
|
+
effectiveMode: AutoUpdateMode;
|
|
46
|
+
restartCapability: RestartCapability;
|
|
47
|
+
restartCapabilityReasons: string[];
|
|
48
|
+
restartCapabilityMode?: string;
|
|
49
|
+
lastRestartTriggerAt?: string;
|
|
50
|
+
lastRestartTriggerMode?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Result of the preflight environment check performed before the first poll.
|
|
54
|
+
*
|
|
55
|
+
* The preflight may downgrade {@link AutoUpdateConfig.mode} if the runtime
|
|
56
|
+
* environment cannot execute plugin updates (e.g. missing CLI).
|
|
57
|
+
*/
|
|
58
|
+
export interface AutoUpdatePreflightResult {
|
|
59
|
+
ok: boolean;
|
|
60
|
+
effectiveMode: AutoUpdateMode;
|
|
61
|
+
reasons: string[];
|
|
62
|
+
}
|
|
63
|
+
/** Aggregate health of the auto-update subsystem, surfaced via gateway RPCs. */
|
|
64
|
+
export type AutoUpdateHealth = "healthy" | "degraded" | "unhealthy" | "disabled";
|
|
65
|
+
/**
|
|
66
|
+
* Point-in-time snapshot of the auto-update subsystem exposed through
|
|
67
|
+
* the `senpi.getHealthStatus` and `senpi.getSystemState` gateway RPCs.
|
|
68
|
+
*/
|
|
69
|
+
export interface AutoUpdateSnapshot {
|
|
70
|
+
enabled: boolean;
|
|
71
|
+
configuredMode: AutoUpdateMode;
|
|
72
|
+
effectiveMode: AutoUpdateMode;
|
|
73
|
+
health: AutoUpdateHealth;
|
|
74
|
+
currentVersion: string;
|
|
75
|
+
latestVersion: string;
|
|
76
|
+
lastCheckedAt: string | null;
|
|
77
|
+
lastAction: string;
|
|
78
|
+
lastError: string | null;
|
|
79
|
+
consecutiveFailures: number;
|
|
80
|
+
nextCheckAt: string | null;
|
|
81
|
+
preflightReasons: string[];
|
|
82
|
+
restartCapability: RestartCapability;
|
|
83
|
+
restartCapabilityReasons: string[];
|
|
84
|
+
lastRestartTriggerAt: string | null;
|
|
85
|
+
lastRestartTriggerMode: string | null;
|
|
86
|
+
}
|
|
87
|
+
/** Filename used by {@link AutoUpdateStateStore} for persistent state. */
|
|
88
|
+
export declare const AUTO_UPDATE_STATE_FILE = "auto-update-state.json";
|
|
89
|
+
/**
|
|
90
|
+
* Parse and normalise the raw `autoUpdate` config block from the plugin config.
|
|
91
|
+
*
|
|
92
|
+
* When the block is `undefined` (user omitted it), all defaults apply:
|
|
93
|
+
* enabled, auto-apply mode, 1-minute poll interval, 120-second startup delay.
|
|
94
|
+
* Numeric values are clamped to safe ranges. `allowMajor` is always forced to `false`.
|
|
95
|
+
*
|
|
96
|
+
* @param value - Raw `autoUpdate` value from the plugin config (may be undefined).
|
|
97
|
+
* @returns Fully resolved {@link AutoUpdateConfig} with safe defaults.
|
|
98
|
+
*/
|
|
99
|
+
export declare function resolveAutoUpdateConfig(value: unknown): AutoUpdateConfig;
|
|
100
|
+
/**
|
|
101
|
+
* Create a blank {@link AutoUpdateState} for a fresh install or when
|
|
102
|
+
* the persisted state file cannot be loaded.
|
|
103
|
+
*/
|
|
104
|
+
export declare function createDefaultAutoUpdateState(currentVersion: string, effectiveMode: AutoUpdateMode): AutoUpdateState;
|
|
105
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/auto-update/types.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE1D,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAElE,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,cAAc,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,aAAa,EAAE,cAAc,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,cAAc,CAAC;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAc/D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAmBxE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,cAAc,GAC5B,eAAe,CAUjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Filename used by {@link AutoUpdateStateStore} for persistent state. */
|
|
2
|
+
export const AUTO_UPDATE_STATE_FILE = "auto-update-state.json";
|
|
3
|
+
function toBool(value, fallback) {
|
|
4
|
+
return typeof value === "boolean" ? value : fallback;
|
|
5
|
+
}
|
|
6
|
+
function toFinite(value, fallback) {
|
|
7
|
+
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
8
|
+
}
|
|
9
|
+
function clamp(value, min, max) {
|
|
10
|
+
return Math.min(max, Math.max(min, value));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse and normalise the raw `autoUpdate` config block from the plugin config.
|
|
14
|
+
*
|
|
15
|
+
* When the block is `undefined` (user omitted it), all defaults apply:
|
|
16
|
+
* enabled, auto-apply mode, 1-minute poll interval, 120-second startup delay.
|
|
17
|
+
* Numeric values are clamped to safe ranges. `allowMajor` is always forced to `false`.
|
|
18
|
+
*
|
|
19
|
+
* @param value - Raw `autoUpdate` value from the plugin config (may be undefined).
|
|
20
|
+
* @returns Fully resolved {@link AutoUpdateConfig} with safe defaults.
|
|
21
|
+
*/
|
|
22
|
+
export function resolveAutoUpdateConfig(value) {
|
|
23
|
+
const raw = value && typeof value === "object" && !Array.isArray(value)
|
|
24
|
+
? value
|
|
25
|
+
: {};
|
|
26
|
+
const mode = raw.mode === "notify-only" ? "notify-only" : "auto-apply";
|
|
27
|
+
return {
|
|
28
|
+
enabled: toBool(raw.enabled, true),
|
|
29
|
+
mode,
|
|
30
|
+
pollIntervalMinutes: clamp(toFinite(raw.pollIntervalMinutes, 60), 1, 24 * 60),
|
|
31
|
+
startupDelaySeconds: clamp(toFinite(raw.startupDelaySeconds, 120), 5, 15 * 60),
|
|
32
|
+
allowPatch: toBool(raw.allowPatch, true),
|
|
33
|
+
allowMinor: toBool(raw.allowMinor, true),
|
|
34
|
+
// Hard policy requirement.
|
|
35
|
+
allowMajor: false,
|
|
36
|
+
failureBackoffMinutes: clamp(toFinite(raw.failureBackoffMinutes, 15), 1, 24 * 60),
|
|
37
|
+
maxBackoffMinutes: clamp(toFinite(raw.maxBackoffMinutes, 60), 1, 7 * 24 * 60),
|
|
38
|
+
lastRestartTrigger: typeof raw.lastRestartTrigger === "string" ? raw.lastRestartTrigger : undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a blank {@link AutoUpdateState} for a fresh install or when
|
|
43
|
+
* the persisted state file cannot be loaded.
|
|
44
|
+
*/
|
|
45
|
+
export function createDefaultAutoUpdateState(currentVersion, effectiveMode) {
|
|
46
|
+
return {
|
|
47
|
+
currentVersionLastSeen: currentVersion,
|
|
48
|
+
latestVersionLastSeen: currentVersion,
|
|
49
|
+
lastCheckedAt: "",
|
|
50
|
+
consecutiveFailures: 0,
|
|
51
|
+
effectiveMode,
|
|
52
|
+
restartCapability: "unknown",
|
|
53
|
+
restartCapabilityReasons: [],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/auto-update/types.ts"],"names":[],"mappings":"AA8FA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE/D,SAAS,MAAM,CAAC,KAAc,EAAE,QAAiB;IAC/C,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,QAAgB;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChF,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;QAClC,IAAI;QACJ,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;QAC7E,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;QAC9E,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QACxC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QACxC,2BAA2B;QAC3B,UAAU,EAAE,KAAK;QACjB,qBAAqB,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;QACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC7E,kBAAkB,EAAE,OAAO,GAAG,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;KACpG,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,cAAsB,EACtB,aAA6B;IAE7B,OAAO;QACL,sBAAsB,EAAE,cAAc;QACtC,qBAAqB,EAAE,cAAc;QACrC,aAAa,EAAE,EAAE;QACjB,mBAAmB,EAAE,CAAC;QACtB,aAAa;QACb,iBAAiB,EAAE,SAAS;QAC5B,wBAAwB,EAAE,EAAE;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstraction for fetching the latest published version of a package.
|
|
3
|
+
*
|
|
4
|
+
* The default implementation uses `npm view`; tests can substitute a
|
|
5
|
+
* stub that returns a fixed version string.
|
|
6
|
+
*/
|
|
7
|
+
export interface VersionSource {
|
|
8
|
+
getLatestVersion(packageName: string): Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetches the latest version of a package from the npm registry
|
|
12
|
+
* by shelling out to `npm view <package> version`.
|
|
13
|
+
*
|
|
14
|
+
* `--prefer-online` is passed so npm always fetches from the registry
|
|
15
|
+
* rather than serving a stale cached result. This matters in long-running
|
|
16
|
+
* server processes (e.g. Railway) where the npm cache may be populated
|
|
17
|
+
* with an old version from the initial install.
|
|
18
|
+
*/
|
|
19
|
+
export declare class NpmVersionSource implements VersionSource {
|
|
20
|
+
/** @throws When the npm CLI exits non-zero or returns an empty string. */
|
|
21
|
+
getLatestVersion(packageName: string): Promise<string>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=version-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-source.d.ts","sourceRoot":"","sources":["../../../src/runtime/auto-update/version-source.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACpD,0EAA0E;IACpE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiB7D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { runCommand } from "./command-runner.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fetches the latest version of a package from the npm registry
|
|
4
|
+
* by shelling out to `npm view <package> version`.
|
|
5
|
+
*
|
|
6
|
+
* `--prefer-online` is passed so npm always fetches from the registry
|
|
7
|
+
* rather than serving a stale cached result. This matters in long-running
|
|
8
|
+
* server processes (e.g. Railway) where the npm cache may be populated
|
|
9
|
+
* with an old version from the initial install.
|
|
10
|
+
*/
|
|
11
|
+
export class NpmVersionSource {
|
|
12
|
+
/** @throws When the npm CLI exits non-zero or returns an empty string. */
|
|
13
|
+
async getLatestVersion(packageName) {
|
|
14
|
+
const result = await runCommand("npm", ["view", "--prefer-online", packageName, "version"], { timeoutMs: 20_000 });
|
|
15
|
+
if (result.code !== 0) {
|
|
16
|
+
throw new Error(result.stderr || `npm view failed with exit code ${result.code}`);
|
|
17
|
+
}
|
|
18
|
+
const version = result.stdout.trim();
|
|
19
|
+
if (!version) {
|
|
20
|
+
throw new Error(`npm view returned empty output (stderr: ${result.stderr || "<none>"})`);
|
|
21
|
+
}
|
|
22
|
+
return version;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=version-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-source.js","sourceRoot":"","sources":["../../../src/runtime/auto-update/version-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAYjD;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IAC3B,0EAA0E;IAC1E,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,KAAK,EACL,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,CAAC,EACnD,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,MAAM,IAAI,kCAAkC,MAAM,CAAC,IAAI,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build ActionScanPayload from ScanResult and strategy config for on_signal_detected.
|
|
3
|
+
*/
|
|
4
|
+
import type { ActionScanPayload } from "../actions/types.js";
|
|
5
|
+
import type { ScanResult } from "../types/scanner.js";
|
|
6
|
+
import type { StrategyConfig } from "../types/strategy.js";
|
|
7
|
+
export interface BuildActionScanPayloadOptions {
|
|
8
|
+
scansInHistory?: number;
|
|
9
|
+
/** Optional: per-strategy used slots (keyed by address). */
|
|
10
|
+
usedSlotsByStrategy?: Record<string, number>;
|
|
11
|
+
/** When set, anySlotsAvailable is true only for this address. */
|
|
12
|
+
address?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Build the payload passed to actions on on_signal_detected.
|
|
16
|
+
* topPicks = scanResult.signals; strategySlots from strategyConfig (total/used/available);
|
|
17
|
+
* anySlotsAvailable, totalAvailableSlots; scansInHistory from options or 0.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildActionScanPayload(scanResult: ScanResult, strategyConfig: StrategyConfig, options?: BuildActionScanPayloadOptions): ActionScanPayload;
|
|
20
|
+
//# sourceMappingURL=build-action-scan-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-action-scan-payload.d.ts","sourceRoot":"","sources":["../../src/runtime/build-action-scan-payload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,6BAA6B,GACtC,iBAAiB,CA+BnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build ActionScanPayload from ScanResult and strategy config for on_signal_detected.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Build the payload passed to actions on on_signal_detected.
|
|
6
|
+
* topPicks = scanResult.signals; strategySlots from strategyConfig (total/used/available);
|
|
7
|
+
* anySlotsAvailable, totalAvailableSlots; scansInHistory from options or 0.
|
|
8
|
+
*/
|
|
9
|
+
export function buildActionScanPayload(scanResult, strategyConfig, options) {
|
|
10
|
+
const usedByStrategy = options?.usedSlotsByStrategy ?? {};
|
|
11
|
+
const address = strategyConfig.address;
|
|
12
|
+
const scansInHistory = options?.scansInHistory ?? 0;
|
|
13
|
+
const used = usedByStrategy[address] ?? 0;
|
|
14
|
+
const total = strategyConfig.slots ?? 0;
|
|
15
|
+
const available = Math.max(0, total - used);
|
|
16
|
+
const strategySlots = {
|
|
17
|
+
[address]: { total, used, available },
|
|
18
|
+
};
|
|
19
|
+
const filterAddress = options?.address;
|
|
20
|
+
const anySlotsAvailable = filterAddress != null
|
|
21
|
+
? (filterAddress === address && available > 0)
|
|
22
|
+
: available > 0;
|
|
23
|
+
const topPicks = Array.isArray(scanResult.signals)
|
|
24
|
+
? [...scanResult.signals]
|
|
25
|
+
: [];
|
|
26
|
+
const payload = {
|
|
27
|
+
scanResult,
|
|
28
|
+
topPicks,
|
|
29
|
+
strategySlots,
|
|
30
|
+
anySlotsAvailable,
|
|
31
|
+
totalAvailableSlots: available,
|
|
32
|
+
scansInHistory,
|
|
33
|
+
};
|
|
34
|
+
return payload;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=build-action-scan-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-action-scan-payload.js","sourceRoot":"","sources":["../../src/runtime/build-action-scan-payload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAsB,EACtB,cAA8B,EAC9B,OAAuC;IAEvC,MAAM,cAAc,GAAG,OAAO,EAAE,mBAAmB,IAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAkC;QACnD,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;KACtC,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO,CAAC;IACvC,MAAM,iBAAiB,GACrB,aAAa,IAAI,IAAI;QACnB,CAAC,CAAC,CAAC,aAAa,KAAK,OAAO,IAAI,SAAS,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAChD,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG;QACd,UAAU;QACV,QAAQ;QACR,aAAa;QACb,iBAAiB;QACjB,mBAAmB,EAAE,SAAS;QAC9B,cAAc;KACf,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/runtime/bus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,wBAAgB,gBAAgB,IAAI,aAAa,CAgBhD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime event bus (EventEmitter-based). No dependency on @senpi/playbook.
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from "node:events";
|
|
5
|
+
export function createRuntimeBus() {
|
|
6
|
+
const emitter = new EventEmitter();
|
|
7
|
+
return {
|
|
8
|
+
emit(eventName, payload) {
|
|
9
|
+
emitter.emit(eventName, payload);
|
|
10
|
+
},
|
|
11
|
+
on(eventName, handler) {
|
|
12
|
+
emitter.on(eventName, handler);
|
|
13
|
+
},
|
|
14
|
+
off(eventName, handler) {
|
|
15
|
+
emitter.off(eventName, handler);
|
|
16
|
+
},
|
|
17
|
+
removeAllListeners() {
|
|
18
|
+
emitter.removeAllListeners();
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../src/runtime/bus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,OAAO;QACL,IAAI,CAAC,SAAiB,EAAE,OAAiB;YACvC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,EAAE,CAAC,SAAiB,EAAE,OAAoC;YACxD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,SAAiB,EAAE,OAAoC;YACzD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,kBAAkB;YAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build ActionContext from trading recipe config and runtime deps.
|
|
3
|
+
*/
|
|
4
|
+
import type { ActionContext } from "../actions/types.js";
|
|
5
|
+
import type { SenpiClient } from "../senpi/client.js";
|
|
6
|
+
import type { StateManager } from "../types/action.js";
|
|
7
|
+
import type { HookSystem } from "../types/hooks.js";
|
|
8
|
+
import type { LlmDecision } from "../actions/types.js";
|
|
9
|
+
import type { ContextBuilder } from "../context/types.js";
|
|
10
|
+
import type { RiskGuard } from "../types/action.js";
|
|
11
|
+
import type { NotificationService } from "../types/notification.js";
|
|
12
|
+
import type { StrategyConfig } from "../types/strategy.js";
|
|
13
|
+
import type { RuntimeConfig } from "./runtime-config.js";
|
|
14
|
+
export interface CreateActionContextDeps {
|
|
15
|
+
senpi: SenpiClient;
|
|
16
|
+
stateManager: StateManager;
|
|
17
|
+
hookSystem: HookSystem;
|
|
18
|
+
llmDecision: LlmDecision;
|
|
19
|
+
contextBuilder: ContextBuilder;
|
|
20
|
+
riskGuard: RiskGuard;
|
|
21
|
+
notifications: NotificationService;
|
|
22
|
+
strategy: StrategyConfig;
|
|
23
|
+
playbook: {
|
|
24
|
+
runtimeName: string;
|
|
25
|
+
version: string;
|
|
26
|
+
};
|
|
27
|
+
maxLeverageData?: Record<string, number>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build ActionContext from trading recipe config and injected deps.
|
|
31
|
+
* Strategy and playbook are derived from config; rest from deps.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createActionContext(config: RuntimeConfig, deps: Omit<CreateActionContextDeps, "strategy" | "playbook">): ActionContext;
|
|
34
|
+
//# sourceMappingURL=create-action-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-action-context.d.ts","sourceRoot":"","sources":["../../src/runtime/create-action-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,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,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,CAAC,GAC3D,aAAa,CAYf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build ActionContext from trading recipe config and runtime deps.
|
|
3
|
+
*/
|
|
4
|
+
import { resolveStrategyConfig } from "./map-strategies.js";
|
|
5
|
+
/**
|
|
6
|
+
* Build ActionContext from trading recipe config and injected deps.
|
|
7
|
+
* Strategy and playbook are derived from config; rest from deps.
|
|
8
|
+
*/
|
|
9
|
+
export function createActionContext(config, deps) {
|
|
10
|
+
const strategy = resolveStrategyConfig(config);
|
|
11
|
+
const playbook = {
|
|
12
|
+
runtimeName: config.name,
|
|
13
|
+
version: String(config.version ?? "0.0.0"),
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
...deps,
|
|
17
|
+
strategy,
|
|
18
|
+
playbook,
|
|
19
|
+
maxLeverageData: deps.maxLeverageData ?? {},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=create-action-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-action-context.js","sourceRoot":"","sources":["../../src/runtime/create-action-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAe5D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAqB,EACrB,IAA4D;IAE5D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG;QACf,WAAW,EAAE,MAAM,CAAC,IAAI;QACxB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;KAC3C,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,QAAQ;QACR,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantiate actions from skills config and expose runActionsForSignal for serial processing.
|
|
3
|
+
*/
|
|
4
|
+
import type { Action, HookEvent } from "../actions/types.js";
|
|
5
|
+
import type { SenpiEventBus } from "../types/event-bus.js";
|
|
6
|
+
import type { RuntimeContext } from "../types/runtime.js";
|
|
7
|
+
import type { RuntimeConfig } from "./runtime-config.js";
|
|
8
|
+
import type { CreateActionContextDeps } from "./create-action-context.js";
|
|
9
|
+
export interface CreateActionsOptions extends Omit<CreateActionContextDeps, "strategy" | "playbook"> {
|
|
10
|
+
bus: SenpiEventBus;
|
|
11
|
+
/** When provided, this context is reused for all actions (built once per trading recipe by the runtime). */
|
|
12
|
+
runtimeContext?: RuntimeContext;
|
|
13
|
+
}
|
|
14
|
+
export interface ActionWithMeta {
|
|
15
|
+
action: Action;
|
|
16
|
+
name: string;
|
|
17
|
+
eventsConsumed: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface CreateActionsResult {
|
|
20
|
+
actions: ActionWithMeta[];
|
|
21
|
+
runActionsForSignal: (event: HookEvent) => Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* For each entry in config.actions, look up factory by action_type, build ActionConfig,
|
|
25
|
+
* use shared RuntimeContext (built once per trading recipe and reused), instantiate action. Returns actions
|
|
26
|
+
* and runActionsForSignal so the runtime can process signals serially (one at a time) to avoid slot races.
|
|
27
|
+
* When options.runtimeContext is provided (e.g. by Runtime), it is reused for all action factories.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createActions(config: RuntimeConfig, options: CreateActionsOptions): CreateActionsResult;
|
|
30
|
+
//# sourceMappingURL=create-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-actions.d.ts","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAK1E,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,CAAC;IAClG,GAAG,EAAE,aAAa,CAAC;IACnB,4GAA4G;IAC5G,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAyDvG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantiate actions from skills config and expose runActionsForSignal for serial processing.
|
|
3
|
+
*/
|
|
4
|
+
import { HOOK_EVENT } from "../types/hooks.js";
|
|
5
|
+
import { ActionRegistry } from "./action-registry.js";
|
|
6
|
+
import { createRuntimeContext } from "./create-runtime-context.js";
|
|
7
|
+
import { resolveStrategyConfig } from "./map-strategies.js";
|
|
8
|
+
import { MaxLeverageCache } from "../leverage/max-leverage-cache.js";
|
|
9
|
+
/**
|
|
10
|
+
* For each entry in config.actions, look up factory by action_type, build ActionConfig,
|
|
11
|
+
* use shared RuntimeContext (built once per trading recipe and reused), instantiate action. Returns actions
|
|
12
|
+
* and runActionsForSignal so the runtime can process signals serially (one at a time) to avoid slot races.
|
|
13
|
+
* When options.runtimeContext is provided (e.g. by Runtime), it is reused for all action factories.
|
|
14
|
+
*/
|
|
15
|
+
export function createActions(config, options) {
|
|
16
|
+
const context = options.runtimeContext ??
|
|
17
|
+
createRuntimeContext(resolveStrategyConfig(config), {
|
|
18
|
+
senpi: options.senpi,
|
|
19
|
+
hookSystem: options.hookSystem,
|
|
20
|
+
llmDecision: options.llmDecision,
|
|
21
|
+
contextBuilder: options.contextBuilder,
|
|
22
|
+
riskGuard: options.riskGuard,
|
|
23
|
+
notifications: options.notifications,
|
|
24
|
+
maxLeverageCache: new MaxLeverageCache(options.senpi),
|
|
25
|
+
});
|
|
26
|
+
const actions = [];
|
|
27
|
+
const actionList = config.actions ?? [];
|
|
28
|
+
for (const entry of actionList) {
|
|
29
|
+
const factory = ActionRegistry.get(entry.action_type);
|
|
30
|
+
if (!factory) {
|
|
31
|
+
throw new Error(`Unknown action_type: ${entry.action_type}`);
|
|
32
|
+
}
|
|
33
|
+
const config = {
|
|
34
|
+
name: entry.name,
|
|
35
|
+
action_type: entry.action_type,
|
|
36
|
+
decision_mode: entry.decision_mode ?? "none",
|
|
37
|
+
decision_model: entry.decision_model,
|
|
38
|
+
scanners: entry.scanners,
|
|
39
|
+
min_confidence: entry.min_confidence,
|
|
40
|
+
context: entry.context,
|
|
41
|
+
decision_prompt: entry.decision_prompt,
|
|
42
|
+
params: entry.params,
|
|
43
|
+
};
|
|
44
|
+
const action = factory(config, context);
|
|
45
|
+
const actionWithManifest = action;
|
|
46
|
+
const manifest = actionWithManifest?.manifest?.eventsConsumed ?? [HOOK_EVENT.ON_SIGNAL_DETECTED];
|
|
47
|
+
actions.push({
|
|
48
|
+
action,
|
|
49
|
+
name: entry.name,
|
|
50
|
+
eventsConsumed: manifest,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function runActionsForSignal(event) {
|
|
54
|
+
const scanPayload = event?.data;
|
|
55
|
+
const scannerId = scanPayload?.scanResult?.scannerId;
|
|
56
|
+
const promises = [];
|
|
57
|
+
for (const { action } of actions) {
|
|
58
|
+
const cfg = action.config;
|
|
59
|
+
const scanners = cfg?.scanners;
|
|
60
|
+
if (Array.isArray(scanners) && scanners.length > 0) {
|
|
61
|
+
if (scannerId == null || !scanners.includes(scannerId))
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
promises.push(Promise.resolve(action.handle(event)));
|
|
65
|
+
}
|
|
66
|
+
return Promise.all(promises).then(() => undefined);
|
|
67
|
+
}
|
|
68
|
+
return { actions, runActionsForSignal };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=create-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-actions.js","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"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"}
|