diff --git a/.env.example b/.env.example index 3088d15..d3b0706 100644 --- a/.env.example +++ b/.env.example @@ -25,12 +25,12 @@ GLOBAL_TELEGRAM_CHAT_ID= FIRSTRADE_STRATEGY_PLUGIN_MOUNTS_JSON= # Optional email channel for escalated strategy plugin alerts. -CRISIS_ALERT_EMAIL_RECIPIENTS= -CRISIS_ALERT_EMAIL_SENDER_EMAIL= -CRISIS_ALERT_EMAIL_SENDER_PASSWORD= -CRISIS_ALERT_EMAIL_SMTP_HOST= -CRISIS_ALERT_EMAIL_SMTP_PORT= -CRISIS_ALERT_EMAIL_SMTP_SECURITY= +STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS= +STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL= +STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD= +STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST= +STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT= +STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY= # Runtime safety controls. FIRSTRADE_COOKIE_DIR=.runtime/firstrade-cookies diff --git a/.github/workflows/execution-report-heartbeat.yml b/.github/workflows/execution-report-heartbeat.yml index a4fff88..0a978a5 100644 --- a/.github/workflows/execution-report-heartbeat.yml +++ b/.github/workflows/execution-report-heartbeat.yml @@ -40,10 +40,7 @@ jobs: FIRSTRADE_GCS_STATE_BUCKET: ${{ vars.FIRSTRADE_GCS_STATE_BUCKET }} FIRSTRADE_STATE_PREFIX: ${{ vars.FIRSTRADE_STATE_PREFIX }} GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/runtime-guard.yml b/.github/workflows/runtime-guard.yml index ed2a9ed..1d9c46d 100644 --- a/.github/workflows/runtime-guard.yml +++ b/.github/workflows/runtime-guard.yml @@ -48,10 +48,7 @@ jobs: RUNTIME_GUARD_SCHEDULER_JOB_PATTERN: ${{ vars.RUNTIME_GUARD_SCHEDULER_JOB_PATTERN }} CLOUD_RUN_SERVICE: ${{ vars.CLOUD_RUN_SERVICE }} GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/sync-cloud-run-env.yml b/.github/workflows/sync-cloud-run-env.yml index 717ab78..8c0a68a 100644 --- a/.github/workflows/sync-cloud-run-env.yml +++ b/.github/workflows/sync-cloud-run-env.yml @@ -63,36 +63,36 @@ jobs: FIRSTRADE_STATE_PREFIX: ${{ vars.FIRSTRADE_STATE_PREFIX }} FIRSTRADE_STRATEGY_CONFIG_PATH: ${{ vars.FIRSTRADE_STRATEGY_CONFIG_PATH }} FIRSTRADE_STRATEGY_PLUGIN_MOUNTS_JSON: ${{ vars.FIRSTRADE_STRATEGY_PLUGIN_MOUNTS_JSON }} - CRISIS_ALERT_CHANNELS: ${{ vars.CRISIS_ALERT_CHANNELS }} - CRISIS_ALERT_EMAIL_RECIPIENTS: ${{ vars.CRISIS_ALERT_EMAIL_RECIPIENTS }} - CRISIS_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_EMAIL }} - CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }} - CRISIS_ALERT_EMAIL_SMTP_HOST: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_HOST }} - CRISIS_ALERT_EMAIL_SMTP_PORT: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_PORT }} - CRISIS_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_SECURITY }} - CRISIS_ALERT_SMS_RECIPIENTS: ${{ vars.CRISIS_ALERT_SMS_RECIPIENTS }} - CRISIS_ALERT_SMS_PROVIDER: ${{ vars.CRISIS_ALERT_SMS_PROVIDER }} - CRISIS_ALERT_SMS_ACCOUNT_ID: ${{ vars.CRISIS_ALERT_SMS_ACCOUNT_ID }} - CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }} - CRISIS_ALERT_SMS_SENDER: ${{ vars.CRISIS_ALERT_SMS_SENDER }} - CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID }} - CRISIS_ALERT_SMS_API_BASE_URL: ${{ vars.CRISIS_ALERT_SMS_API_BASE_URL }} - CRISIS_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_SMS_BODY_MAX_CHARS }} - CRISIS_ALERT_PUSH_RECIPIENTS: ${{ vars.CRISIS_ALERT_PUSH_RECIPIENTS }} - CRISIS_ALERT_PUSH_PROVIDER: ${{ vars.CRISIS_ALERT_PUSH_PROVIDER }} - CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME }} - CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }} - CRISIS_ALERT_PUSH_API_BASE_URL: ${{ vars.CRISIS_ALERT_PUSH_API_BASE_URL }} - CRISIS_ALERT_PUSH_DEVICE: ${{ vars.CRISIS_ALERT_PUSH_DEVICE }} - CRISIS_ALERT_PUSH_PRIORITY: ${{ vars.CRISIS_ALERT_PUSH_PRIORITY }} - CRISIS_ALERT_PUSH_TAGS: ${{ vars.CRISIS_ALERT_PUSH_TAGS }} - CRISIS_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_PUSH_BODY_MAX_CHARS }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} - CRISIS_ALERT_TELEGRAM_PARSE_MODE: ${{ vars.CRISIS_ALERT_TELEGRAM_PARSE_MODE }} - CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW: ${{ vars.CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW }} - CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_CHANNELS: ${{ vars.STRATEGY_PLUGIN_ALERT_CHANNELS }} + STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY }} + STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_SMS_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_PROVIDER }} + STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID }} + STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_SMS_SENDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_SENDER }} + STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID }} + STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER }} + STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_PUSH_DEVICE: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_DEVICE }} + STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY }} + STRATEGY_PLUGIN_ALERT_PUSH_TAGS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_TAGS }} + STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS }} FIRSTRADE_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS: ${{ vars.FIRSTRADE_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS }} FIRSTRADE_TECH_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS: ${{ vars.FIRSTRADE_TECH_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS }} INCOME_THRESHOLD_USD: ${{ vars.INCOME_THRESHOLD_USD }} @@ -101,11 +101,11 @@ jobs: GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} NOTIFY_LANG: ${{ vars.NOTIFY_LANG }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.CRISIS_ALERT_EMAIL_SENDER_PASSWORD }} - CRISIS_ALERT_SMS_AUTH_TOKEN: ${{ secrets.CRISIS_ALERT_SMS_AUTH_TOKEN }} - CRISIS_ALERT_PUSH_APP_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_APP_TOKEN }} - CRISIS_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_ACCESS_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD }} + STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN }} + STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN }} + STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN }} FIRSTRADE_USERNAME: ${{ secrets.FIRSTRADE_USERNAME }} FIRSTRADE_PASSWORD: ${{ secrets.FIRSTRADE_PASSWORD }} FIRSTRADE_MFA_SECRET: ${{ secrets.FIRSTRADE_MFA_SECRET }} @@ -426,11 +426,46 @@ jobs: "CRISIS_ALERT_SMTP_PASSWORD" "CRISIS_ALERT_SMTP_STARTTLS" "CRISIS_ALERT_SMTP_SSL" + "CRISIS_ALERT_CHANNELS" + "CRISIS_ALERT_EMAIL_RECIPIENTS" + "CRISIS_ALERT_EMAIL_SENDER_EMAIL" + "CRISIS_ALERT_EMAIL_SENDER_PASSWORD" + "CRISIS_ALERT_EMAIL_SMTP_HOST" + "CRISIS_ALERT_EMAIL_SMTP_PORT" + "CRISIS_ALERT_EMAIL_SMTP_SECURITY" + "CRISIS_ALERT_SMS_RECIPIENTS" + "CRISIS_ALERT_SMS_PROVIDER" + "CRISIS_ALERT_SMS_ACCOUNT_ID" + "CRISIS_ALERT_SMS_AUTH_TOKEN" + "CRISIS_ALERT_SMS_SENDER" + "CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID" + "CRISIS_ALERT_SMS_API_BASE_URL" + "CRISIS_ALERT_SMS_BODY_MAX_CHARS" + "CRISIS_ALERT_PUSH_RECIPIENTS" + "CRISIS_ALERT_PUSH_PROVIDER" + "CRISIS_ALERT_PUSH_APP_TOKEN" + "CRISIS_ALERT_PUSH_ACCESS_TOKEN" + "CRISIS_ALERT_PUSH_API_BASE_URL" + "CRISIS_ALERT_PUSH_DEVICE" + "CRISIS_ALERT_PUSH_PRIORITY" + "CRISIS_ALERT_PUSH_TAGS" + "CRISIS_ALERT_PUSH_BODY_MAX_CHARS" + "CRISIS_ALERT_TELEGRAM_CHAT_IDS" + "CRISIS_ALERT_TELEGRAM_BOT_TOKEN" + "CRISIS_ALERT_TELEGRAM_API_BASE_URL" + "CRISIS_ALERT_TELEGRAM_PARSE_MODE" + "CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW" + "CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS" ) remove_secret_vars=( "CRISIS_ALERT_SMTP_PASSWORD" "CRISIS_ALERT_GOOGLE_VOICE_GMAIL_APP_PASSWORD" "CRISIS_ALERT_GOOGLE_VOICE_SENDER_PASSWORD" + "CRISIS_ALERT_EMAIL_SENDER_PASSWORD" + "CRISIS_ALERT_SMS_AUTH_TOKEN" + "CRISIS_ALERT_PUSH_APP_TOKEN" + "CRISIS_ALERT_PUSH_ACCESS_TOKEN" + "CRISIS_ALERT_TELEGRAM_BOT_TOKEN" ) add_optional_env() { @@ -488,31 +523,31 @@ jobs: add_optional_env FIRSTRADE_FEATURE_SNAPSHOT_MANIFEST_PATH add_optional_env FIRSTRADE_STRATEGY_CONFIG_PATH add_optional_env FIRSTRADE_STRATEGY_PLUGIN_MOUNTS_JSON - add_optional_env CRISIS_ALERT_CHANNELS - add_optional_env CRISIS_ALERT_EMAIL_RECIPIENTS - add_optional_env CRISIS_ALERT_EMAIL_SENDER_EMAIL - add_optional_env CRISIS_ALERT_EMAIL_SMTP_HOST - add_optional_env CRISIS_ALERT_EMAIL_SMTP_PORT - add_optional_env CRISIS_ALERT_EMAIL_SMTP_SECURITY - add_optional_env CRISIS_ALERT_SMS_RECIPIENTS - add_optional_env CRISIS_ALERT_SMS_PROVIDER - add_optional_env CRISIS_ALERT_SMS_ACCOUNT_ID - add_optional_env CRISIS_ALERT_SMS_SENDER - add_optional_env CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID - add_optional_env CRISIS_ALERT_SMS_API_BASE_URL - add_optional_env CRISIS_ALERT_SMS_BODY_MAX_CHARS - add_optional_env CRISIS_ALERT_PUSH_RECIPIENTS - add_optional_env CRISIS_ALERT_PUSH_PROVIDER - add_optional_env CRISIS_ALERT_PUSH_API_BASE_URL - add_optional_env CRISIS_ALERT_PUSH_DEVICE - add_optional_env CRISIS_ALERT_PUSH_PRIORITY - add_optional_env CRISIS_ALERT_PUSH_TAGS - add_optional_env CRISIS_ALERT_PUSH_BODY_MAX_CHARS - add_optional_env CRISIS_ALERT_TELEGRAM_CHAT_IDS - add_optional_env CRISIS_ALERT_TELEGRAM_API_BASE_URL - add_optional_env CRISIS_ALERT_TELEGRAM_PARSE_MODE - add_optional_env CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW - add_optional_env CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS + add_optional_env STRATEGY_PLUGIN_ALERT_CHANNELS + add_optional_env STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS + add_optional_env STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL + add_optional_env STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST + add_optional_env STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT + add_optional_env STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_PROVIDER + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_SENDER + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL + add_optional_env STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_DEVICE + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_TAGS + add_optional_env STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS + add_optional_env STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS + add_optional_env STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL + add_optional_env STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE + add_optional_env STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW + add_optional_env STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS add_optional_env FIRSTRADE_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS add_optional_env FIRSTRADE_TECH_RUNTIME_EXECUTION_WINDOW_TRADING_DAYS add_optional_env INCOME_THRESHOLD_USD @@ -522,11 +557,11 @@ jobs: add_optional_env NOTIFY_LANG add_optional_secret TELEGRAM_TOKEN TELEGRAM_TOKEN_SECRET_NAME TELEGRAM_TOKEN - add_optional_secret CRISIS_ALERT_EMAIL_SENDER_PASSWORD CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME CRISIS_ALERT_EMAIL_SENDER_PASSWORD - add_optional_secret CRISIS_ALERT_SMS_AUTH_TOKEN CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME CRISIS_ALERT_SMS_AUTH_TOKEN - add_optional_secret CRISIS_ALERT_PUSH_APP_TOKEN CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME CRISIS_ALERT_PUSH_APP_TOKEN - add_optional_secret CRISIS_ALERT_PUSH_ACCESS_TOKEN CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME CRISIS_ALERT_PUSH_ACCESS_TOKEN - add_optional_secret CRISIS_ALERT_TELEGRAM_BOT_TOKEN CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME CRISIS_ALERT_TELEGRAM_BOT_TOKEN + add_optional_secret STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD + add_optional_secret STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN + add_optional_secret STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN + add_optional_secret STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN + add_optional_secret STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN add_optional_secret FIRSTRADE_USERNAME FIRSTRADE_USERNAME_SECRET_NAME FIRSTRADE_USERNAME add_optional_secret FIRSTRADE_PASSWORD FIRSTRADE_PASSWORD_SECRET_NAME FIRSTRADE_PASSWORD add_optional_secret FIRSTRADE_MFA_SECRET FIRSTRADE_MFA_SECRET_SECRET_NAME FIRSTRADE_MFA_SECRET diff --git a/main.py b/main.py index d4bc9b4..b7f9cd8 100644 --- a/main.py +++ b/main.py @@ -42,11 +42,6 @@ def _telegram_notification_targets() -> tuple[tuple[str, str], ...]: if main_token and main_chat_id: targets.append((main_token, main_chat_id)) - crisis_token = os.getenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_env_list(os.getenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token and chat_id: - targets.append((crisis_token, chat_id)) - seen: set[tuple[str, str]] = set() unique_targets: list[tuple[str, str]] = [] for target in targets: diff --git a/pyproject.toml b/pyproject.toml index 78a59ec..d5fac9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ authors = [ ] dependencies = [ "firstrade==0.0.38", - "quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@v0.7.37", + "quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@3b6a0a9bedde72773e188041e0dc48516b38aadc", "us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@v0.7.52", "google-cloud-storage", "requests", diff --git a/requirements.txt b/requirements.txt index d29d6e0..cc9c9b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ flask gunicorn firstrade==0.0.38 -quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@v0.7.37 +quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@3b6a0a9bedde72773e188041e0dc48516b38aadc us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@v0.7.52 google-cloud-storage requests diff --git a/runtime_config_support.py b/runtime_config_support.py index cad1f71..0dfe5f8 100644 --- a/runtime_config_support.py +++ b/runtime_config_support.py @@ -58,36 +58,36 @@ class PlatformRuntimeSettings: strategy_config_path: str | None = None strategy_config_source: str | None = None strategy_plugin_mounts_json: str | None = None - crisis_alert_channels: tuple[str, ...] = () - crisis_alert_email_recipients: tuple[str, ...] = () - crisis_alert_email_sender_email: str | None = None - crisis_alert_email_sender_password: str | None = None - crisis_alert_email_smtp_host: str | None = None - crisis_alert_email_smtp_port: str | None = None - crisis_alert_email_smtp_security: str | None = None - crisis_alert_sms_recipients: tuple[str, ...] = () - crisis_alert_sms_provider: str | None = None - crisis_alert_sms_account_id: str | None = None - crisis_alert_sms_auth_token: str | None = None - crisis_alert_sms_sender: str | None = None - crisis_alert_sms_messaging_service_id: str | None = None - crisis_alert_sms_api_base_url: str | None = None - crisis_alert_sms_body_max_chars: str | None = None - crisis_alert_push_recipients: tuple[str, ...] = () - crisis_alert_push_provider: str | None = None - crisis_alert_push_app_token: str | None = None - crisis_alert_push_access_token: str | None = None - crisis_alert_push_api_base_url: str | None = None - crisis_alert_push_device: str | None = None - crisis_alert_push_priority: str | None = None - crisis_alert_push_tags: str | None = None - crisis_alert_push_body_max_chars: str | None = None - crisis_alert_telegram_chat_ids: tuple[str, ...] = () - crisis_alert_telegram_bot_token: str | None = None - crisis_alert_telegram_api_base_url: str | None = None - crisis_alert_telegram_parse_mode: str | None = None - crisis_alert_telegram_disable_web_page_preview: str | None = None - crisis_alert_telegram_body_max_chars: str | None = None + strategy_plugin_alert_channels: tuple[str, ...] = () + strategy_plugin_alert_email_recipients: tuple[str, ...] = () + strategy_plugin_alert_email_sender_email: str | None = None + strategy_plugin_alert_email_sender_password: str | None = None + strategy_plugin_alert_email_smtp_host: str | None = None + strategy_plugin_alert_email_smtp_port: str | None = None + strategy_plugin_alert_email_smtp_security: str | None = None + strategy_plugin_alert_sms_recipients: tuple[str, ...] = () + strategy_plugin_alert_sms_provider: str | None = None + strategy_plugin_alert_sms_account_id: str | None = None + strategy_plugin_alert_sms_auth_token: str | None = None + strategy_plugin_alert_sms_sender: str | None = None + strategy_plugin_alert_sms_messaging_service_id: str | None = None + strategy_plugin_alert_sms_api_base_url: str | None = None + strategy_plugin_alert_sms_body_max_chars: str | None = None + strategy_plugin_alert_push_recipients: tuple[str, ...] = () + strategy_plugin_alert_push_provider: str | None = None + strategy_plugin_alert_push_app_token: str | None = None + strategy_plugin_alert_push_access_token: str | None = None + strategy_plugin_alert_push_api_base_url: str | None = None + strategy_plugin_alert_push_device: str | None = None + strategy_plugin_alert_push_priority: str | None = None + strategy_plugin_alert_push_tags: str | None = None + strategy_plugin_alert_push_body_max_chars: str | None = None + strategy_plugin_alert_telegram_chat_ids: tuple[str, ...] = () + strategy_plugin_alert_telegram_bot_token: str | None = None + strategy_plugin_alert_telegram_api_base_url: str | None = None + strategy_plugin_alert_telegram_parse_mode: str | None = None + strategy_plugin_alert_telegram_disable_web_page_preview: str | None = None + strategy_plugin_alert_telegram_body_max_chars: str | None = None runtime_target: RuntimeTarget | None = None @@ -175,57 +175,57 @@ def load_platform_runtime_settings( os.getenv("FIRSTRADE_STRATEGY_PLUGIN_MOUNTS_JSON") or os.getenv("STRATEGY_PLUGIN_MOUNTS_JSON") ), - crisis_alert_channels=_split_env_list(os.getenv("CRISIS_ALERT_CHANNELS")), - crisis_alert_email_recipients=_split_env_list(os.getenv("CRISIS_ALERT_EMAIL_RECIPIENTS")), - crisis_alert_email_sender_email=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SENDER_EMAIL")), - crisis_alert_email_sender_password=_first_non_empty( - os.getenv("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") + strategy_plugin_alert_channels=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_CHANNELS")), + strategy_plugin_alert_email_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS")), + strategy_plugin_alert_email_sender_email=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL")), + strategy_plugin_alert_email_sender_password=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") ), - crisis_alert_email_smtp_host=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SMTP_HOST")), - crisis_alert_email_smtp_port=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SMTP_PORT")), - crisis_alert_email_smtp_security=_first_non_empty( - os.getenv("CRISIS_ALERT_EMAIL_SMTP_SECURITY") + strategy_plugin_alert_email_smtp_host=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST")), + strategy_plugin_alert_email_smtp_port=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT")), + strategy_plugin_alert_email_smtp_security=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY") ), - crisis_alert_sms_recipients=_split_env_list(os.getenv("CRISIS_ALERT_SMS_RECIPIENTS")), - crisis_alert_sms_provider=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_PROVIDER")), - crisis_alert_sms_account_id=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_ACCOUNT_ID")), - crisis_alert_sms_auth_token=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_AUTH_TOKEN")), - crisis_alert_sms_sender=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_SENDER")), - crisis_alert_sms_messaging_service_id=_first_non_empty( - os.getenv("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID") + strategy_plugin_alert_sms_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS")), + strategy_plugin_alert_sms_provider=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER")), + strategy_plugin_alert_sms_account_id=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID")), + strategy_plugin_alert_sms_auth_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN")), + strategy_plugin_alert_sms_sender=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_SENDER")), + strategy_plugin_alert_sms_messaging_service_id=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID") ), - crisis_alert_sms_api_base_url=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_API_BASE_URL")), - crisis_alert_sms_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_SMS_BODY_MAX_CHARS") + strategy_plugin_alert_sms_api_base_url=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL")), + strategy_plugin_alert_sms_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS") ), - crisis_alert_push_recipients=_split_env_list(os.getenv("CRISIS_ALERT_PUSH_RECIPIENTS")), - crisis_alert_push_provider=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_PROVIDER")), - crisis_alert_push_app_token=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_APP_TOKEN")), - crisis_alert_push_access_token=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_ACCESS_TOKEN")), - crisis_alert_push_api_base_url=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_API_BASE_URL")), - crisis_alert_push_device=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_DEVICE")), - crisis_alert_push_priority=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_PRIORITY")), - crisis_alert_push_tags=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_TAGS")), - crisis_alert_push_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_PUSH_BODY_MAX_CHARS") + strategy_plugin_alert_push_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS")), + strategy_plugin_alert_push_provider=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER")), + strategy_plugin_alert_push_app_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN")), + strategy_plugin_alert_push_access_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN")), + strategy_plugin_alert_push_api_base_url=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL")), + strategy_plugin_alert_push_device=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE")), + strategy_plugin_alert_push_priority=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY")), + strategy_plugin_alert_push_tags=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_TAGS")), + strategy_plugin_alert_push_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS") ), - crisis_alert_telegram_chat_ids=_split_env_list( - os.getenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS") + strategy_plugin_alert_telegram_chat_ids=_split_env_list( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS") ), - crisis_alert_telegram_bot_token=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") + strategy_plugin_alert_telegram_bot_token=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") ), - crisis_alert_telegram_api_base_url=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_API_BASE_URL") + strategy_plugin_alert_telegram_api_base_url=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL") ), - crisis_alert_telegram_parse_mode=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_PARSE_MODE") + strategy_plugin_alert_telegram_parse_mode=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE") ), - crisis_alert_telegram_disable_web_page_preview=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") + strategy_plugin_alert_telegram_disable_web_page_preview=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") ), - crisis_alert_telegram_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS") + strategy_plugin_alert_telegram_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS") ), runtime_target=runtime_target, ) diff --git a/scripts/cloud_run_runtime_guard.py b/scripts/cloud_run_runtime_guard.py index 561a808..bab869b 100644 --- a/scripts/cloud_run_runtime_guard.py +++ b/scripts/cloud_run_runtime_guard.py @@ -168,10 +168,6 @@ def _summarize(entry: dict[str, Any]) -> str: def _send_telegram(message: str) -> bool: targets: list[tuple[str, str]] = [] - crisis_token = os.environ.get("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_values(os.environ.get("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token: - targets.append((crisis_token, chat_id)) token = os.environ.get("TELEGRAM_TOKEN") or os.environ.get("TG_TOKEN") for chat_id in _split_values(os.environ.get("GLOBAL_TELEGRAM_CHAT_ID")): @@ -184,7 +180,7 @@ def _send_telegram(message: str) -> bool: return False ok = True - base_url = os.environ.get("CRISIS_ALERT_TELEGRAM_API_BASE_URL") or "https://api.telegram.org" + base_url = "https://api.telegram.org" for token_value, chat_id in unique_targets: body = urllib.parse.urlencode({"chat_id": chat_id, "text": message}).encode() request = urllib.request.Request( diff --git a/scripts/execution_report_heartbeat.py b/scripts/execution_report_heartbeat.py index 7116592..9824f65 100644 --- a/scripts/execution_report_heartbeat.py +++ b/scripts/execution_report_heartbeat.py @@ -291,10 +291,6 @@ def _is_accepted_report(payload: dict[str, Any]) -> tuple[bool, str]: def _send_telegram(message: str) -> bool: targets: list[tuple[str, str]] = [] - crisis_token = os.environ.get("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_values(os.environ.get("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token: - targets.append((crisis_token, chat_id)) token = os.environ.get("TELEGRAM_TOKEN") or os.environ.get("TG_TOKEN") for chat_id in _split_values(os.environ.get("GLOBAL_TELEGRAM_CHAT_ID")): if token: @@ -303,7 +299,7 @@ def _send_telegram(message: str) -> bool: if not unique_targets: print("No Telegram token/chat configured; unable to send heartbeat alert.", file=sys.stderr) return False - base_url = os.environ.get("CRISIS_ALERT_TELEGRAM_API_BASE_URL") or "https://api.telegram.org" + base_url = "https://api.telegram.org" ok = True for token_value, chat_id in unique_targets: body = urllib.parse.urlencode({"chat_id": chat_id, "text": message}).encode() diff --git a/tests/test_rebalance_service.py b/tests/test_rebalance_service.py index f3f4b65..46296bd 100644 --- a/tests/test_rebalance_service.py +++ b/tests/test_rebalance_service.py @@ -315,9 +315,9 @@ def test_run_strategy_cycle_loads_strategy_plugin_report_and_sends_email( ) settings = _runtime_settings_with_persistence( strategy_plugin_mounts_json=mount_config, - crisis_alert_email_recipients=("voice@example.com",), - crisis_alert_email_sender_email="bot@example.com", - crisis_alert_email_sender_password="app-password", + strategy_plugin_alert_email_recipients=("voice@example.com",), + strategy_plugin_alert_email_sender_email="bot@example.com", + strategy_plugin_alert_email_sender_password="app-password", ) messages = [] observed_alerts = [] diff --git a/tests/test_request_handling.py b/tests/test_request_handling.py index 33a008e..c7d6812 100644 --- a/tests/test_request_handling.py +++ b/tests/test_request_handling.py @@ -80,6 +80,8 @@ def send(message): monkeypatch.setenv("FIRSTRADE_RUN_STRATEGY_ON_HTTP", "true") monkeypatch.setenv("TELEGRAM_TOKEN", "token-1") monkeypatch.setenv("GLOBAL_TELEGRAM_CHAT_ID", "chat-1") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN", "plugin-token") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS", "plugin-chat") monkeypatch.setenv("STRATEGY_PROFILE", "mega_cap_leader_rotation_top50_balanced") monkeypatch.setattr(main, "build_sender", fake_build_sender) monkeypatch.setattr( @@ -108,8 +110,8 @@ def test_run_endpoint_error_does_not_require_telegram_config(monkeypatch): monkeypatch.setenv("FIRSTRADE_RUN_STRATEGY_ON_HTTP", "true") monkeypatch.delenv("TELEGRAM_TOKEN", raising=False) monkeypatch.delenv("GLOBAL_TELEGRAM_CHAT_ID", raising=False) - monkeypatch.delenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN", raising=False) - monkeypatch.delenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS", raising=False) + monkeypatch.delenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN", raising=False) + monkeypatch.delenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS", raising=False) monkeypatch.setattr( main, "run_strategy_cycle", diff --git a/tests/test_runtime_config_support.py b/tests/test_runtime_config_support.py index 9eb4a54..dc8508b 100644 --- a/tests/test_runtime_config_support.py +++ b/tests/test_runtime_config_support.py @@ -53,36 +53,36 @@ def test_reserved_cash_policy_defaults_to_zero(monkeypatch): assert settings.reserved_cash_floor_usd == 0.0 assert settings.reserved_cash_ratio == 0.0 - assert settings.crisis_alert_channels == () - assert settings.crisis_alert_email_recipients == () - assert settings.crisis_alert_email_sender_email is None - assert settings.crisis_alert_email_sender_password is None - assert settings.crisis_alert_email_smtp_host is None - assert settings.crisis_alert_email_smtp_port is None - assert settings.crisis_alert_email_smtp_security is None - assert settings.crisis_alert_sms_recipients == () - assert settings.crisis_alert_sms_provider is None - assert settings.crisis_alert_sms_account_id is None - assert settings.crisis_alert_sms_auth_token is None - assert settings.crisis_alert_sms_sender is None - assert settings.crisis_alert_sms_messaging_service_id is None - assert settings.crisis_alert_sms_api_base_url is None - assert settings.crisis_alert_sms_body_max_chars is None - assert settings.crisis_alert_push_recipients == () - assert settings.crisis_alert_push_provider is None - assert settings.crisis_alert_push_app_token is None - assert settings.crisis_alert_push_access_token is None - assert settings.crisis_alert_push_api_base_url is None - assert settings.crisis_alert_push_device is None - assert settings.crisis_alert_push_priority is None - assert settings.crisis_alert_push_tags is None - assert settings.crisis_alert_push_body_max_chars is None - assert settings.crisis_alert_telegram_chat_ids == () - assert settings.crisis_alert_telegram_bot_token is None - assert settings.crisis_alert_telegram_api_base_url is None - assert settings.crisis_alert_telegram_parse_mode is None - assert settings.crisis_alert_telegram_disable_web_page_preview is None - assert settings.crisis_alert_telegram_body_max_chars is None + assert settings.strategy_plugin_alert_channels == () + assert settings.strategy_plugin_alert_email_recipients == () + assert settings.strategy_plugin_alert_email_sender_email is None + assert settings.strategy_plugin_alert_email_sender_password is None + assert settings.strategy_plugin_alert_email_smtp_host is None + assert settings.strategy_plugin_alert_email_smtp_port is None + assert settings.strategy_plugin_alert_email_smtp_security is None + assert settings.strategy_plugin_alert_sms_recipients == () + assert settings.strategy_plugin_alert_sms_provider is None + assert settings.strategy_plugin_alert_sms_account_id is None + assert settings.strategy_plugin_alert_sms_auth_token is None + assert settings.strategy_plugin_alert_sms_sender is None + assert settings.strategy_plugin_alert_sms_messaging_service_id is None + assert settings.strategy_plugin_alert_sms_api_base_url is None + assert settings.strategy_plugin_alert_sms_body_max_chars is None + assert settings.strategy_plugin_alert_push_recipients == () + assert settings.strategy_plugin_alert_push_provider is None + assert settings.strategy_plugin_alert_push_app_token is None + assert settings.strategy_plugin_alert_push_access_token is None + assert settings.strategy_plugin_alert_push_api_base_url is None + assert settings.strategy_plugin_alert_push_device is None + assert settings.strategy_plugin_alert_push_priority is None + assert settings.strategy_plugin_alert_push_tags is None + assert settings.strategy_plugin_alert_push_body_max_chars is None + assert settings.strategy_plugin_alert_telegram_chat_ids == () + assert settings.strategy_plugin_alert_telegram_bot_token is None + assert settings.strategy_plugin_alert_telegram_api_base_url is None + assert settings.strategy_plugin_alert_telegram_parse_mode is None + assert settings.strategy_plugin_alert_telegram_disable_web_page_preview is None + assert settings.strategy_plugin_alert_telegram_body_max_chars is None def test_reserved_cash_policy_loads_from_env(monkeypatch): @@ -96,85 +96,85 @@ def test_reserved_cash_policy_loads_from_env(monkeypatch): assert settings.reserved_cash_ratio == 0.025 -def test_crisis_alert_email_settings_load_from_env(monkeypatch): +def test_strategy_plugin_alert_email_settings_load_from_env(monkeypatch): monkeypatch.setenv("RUNTIME_TARGET_JSON", _target_json()) - monkeypatch.setenv("CRISIS_ALERT_EMAIL_RECIPIENTS", "alerts@example.com; voice@example.com") - monkeypatch.setenv("CRISIS_ALERT_EMAIL_SENDER_EMAIL", "sender@example.com") - monkeypatch.setenv("CRISIS_ALERT_EMAIL_SENDER_PASSWORD", "secret") - monkeypatch.setenv("CRISIS_ALERT_EMAIL_SMTP_HOST", "smtp.example.com") - monkeypatch.setenv("CRISIS_ALERT_EMAIL_SMTP_PORT", "587") - monkeypatch.setenv("CRISIS_ALERT_EMAIL_SMTP_SECURITY", "starttls") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS", "alerts@example.com; voice@example.com") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL", "sender@example.com") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD", "secret") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST", "smtp.example.com") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT", "587") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY", "starttls") settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - assert settings.crisis_alert_email_recipients == ("alerts@example.com", "voice@example.com") - assert settings.crisis_alert_email_sender_email == "sender@example.com" - assert settings.crisis_alert_email_sender_password == "secret" - assert settings.crisis_alert_email_smtp_host == "smtp.example.com" - assert settings.crisis_alert_email_smtp_port == "587" - assert settings.crisis_alert_email_smtp_security == "starttls" + assert settings.strategy_plugin_alert_email_recipients == ("alerts@example.com", "voice@example.com") + assert settings.strategy_plugin_alert_email_sender_email == "sender@example.com" + assert settings.strategy_plugin_alert_email_sender_password == "secret" + assert settings.strategy_plugin_alert_email_smtp_host == "smtp.example.com" + assert settings.strategy_plugin_alert_email_smtp_port == "587" + assert settings.strategy_plugin_alert_email_smtp_security == "starttls" -def test_crisis_alert_sms_settings_load_from_env(monkeypatch): +def test_strategy_plugin_alert_sms_settings_load_from_env(monkeypatch): monkeypatch.setenv("RUNTIME_TARGET_JSON", _target_json()) - monkeypatch.setenv("CRISIS_ALERT_SMS_RECIPIENTS", "+15165480265;(516) 548-0265") - monkeypatch.setenv("CRISIS_ALERT_SMS_PROVIDER", "twilio") - monkeypatch.setenv("CRISIS_ALERT_SMS_ACCOUNT_ID", "AC123") - monkeypatch.setenv("CRISIS_ALERT_SMS_AUTH_TOKEN", "secret") - monkeypatch.setenv("CRISIS_ALERT_SMS_SENDER", "+15551234567") - monkeypatch.setenv("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID", "MG123") - monkeypatch.setenv("CRISIS_ALERT_SMS_API_BASE_URL", "https://twilio.example.test") - monkeypatch.setenv("CRISIS_ALERT_SMS_BODY_MAX_CHARS", "160") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS", "+15165480265;(516) 548-0265") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER", "twilio") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID", "AC123") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN", "secret") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_SENDER", "+15551234567") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID", "MG123") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL", "https://twilio.example.test") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS", "160") settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - assert settings.crisis_alert_sms_recipients == ("+15165480265", "(516) 548-0265") - assert settings.crisis_alert_sms_provider == "twilio" - assert settings.crisis_alert_sms_account_id == "AC123" - assert settings.crisis_alert_sms_auth_token == "secret" - assert settings.crisis_alert_sms_sender == "+15551234567" - assert settings.crisis_alert_sms_messaging_service_id == "MG123" - assert settings.crisis_alert_sms_api_base_url == "https://twilio.example.test" - assert settings.crisis_alert_sms_body_max_chars == "160" + assert settings.strategy_plugin_alert_sms_recipients == ("+15165480265", "(516) 548-0265") + assert settings.strategy_plugin_alert_sms_provider == "twilio" + assert settings.strategy_plugin_alert_sms_account_id == "AC123" + assert settings.strategy_plugin_alert_sms_auth_token == "secret" + assert settings.strategy_plugin_alert_sms_sender == "+15551234567" + assert settings.strategy_plugin_alert_sms_messaging_service_id == "MG123" + assert settings.strategy_plugin_alert_sms_api_base_url == "https://twilio.example.test" + assert settings.strategy_plugin_alert_sms_body_max_chars == "160" -def test_crisis_alert_channels_and_push_settings_load_from_env(monkeypatch): +def test_strategy_plugin_alert_channels_and_push_settings_load_from_env(monkeypatch): monkeypatch.setenv("RUNTIME_TARGET_JSON", _target_json()) - monkeypatch.setenv("CRISIS_ALERT_CHANNELS", "email;push;telegram") - monkeypatch.setenv("CRISIS_ALERT_PUSH_RECIPIENTS", "risk-topic; backup-topic") - monkeypatch.setenv("CRISIS_ALERT_PUSH_PROVIDER", "ntfy") - monkeypatch.setenv("CRISIS_ALERT_PUSH_APP_TOKEN", "app-token") - monkeypatch.setenv("CRISIS_ALERT_PUSH_ACCESS_TOKEN", "access-token") - monkeypatch.setenv("CRISIS_ALERT_PUSH_API_BASE_URL", "https://ntfy.example.test") - monkeypatch.setenv("CRISIS_ALERT_PUSH_DEVICE", "iphone") - monkeypatch.setenv("CRISIS_ALERT_PUSH_PRIORITY", "5") - monkeypatch.setenv("CRISIS_ALERT_PUSH_TAGS", "warning") - monkeypatch.setenv("CRISIS_ALERT_PUSH_BODY_MAX_CHARS", "300") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS", "12345; @risk_channel") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN", "telegram-token") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_API_BASE_URL", "https://telegram.example.test") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_PARSE_MODE", "HTML") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW", "false") - monkeypatch.setenv("CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS", "900") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_CHANNELS", "email;push;telegram") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS", "risk-topic; backup-topic") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER", "ntfy") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN", "app-token") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN", "access-token") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL", "https://ntfy.example.test") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE", "iphone") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY", "5") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_TAGS", "warning") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS", "300") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS", "12345; @risk_channel") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN", "telegram-token") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL", "https://telegram.example.test") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE", "HTML") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW", "false") + monkeypatch.setenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS", "900") settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - assert settings.crisis_alert_channels == ("email", "push", "telegram") - assert settings.crisis_alert_push_recipients == ("risk-topic", "backup-topic") - assert settings.crisis_alert_push_provider == "ntfy" - assert settings.crisis_alert_push_app_token == "app-token" - assert settings.crisis_alert_push_access_token == "access-token" - assert settings.crisis_alert_push_api_base_url == "https://ntfy.example.test" - assert settings.crisis_alert_push_device == "iphone" - assert settings.crisis_alert_push_priority == "5" - assert settings.crisis_alert_push_tags == "warning" - assert settings.crisis_alert_push_body_max_chars == "300" - assert settings.crisis_alert_telegram_chat_ids == ("12345", "@risk_channel") - assert settings.crisis_alert_telegram_bot_token == "telegram-token" - assert settings.crisis_alert_telegram_api_base_url == "https://telegram.example.test" - assert settings.crisis_alert_telegram_parse_mode == "HTML" - assert settings.crisis_alert_telegram_disable_web_page_preview == "false" - assert settings.crisis_alert_telegram_body_max_chars == "900" + assert settings.strategy_plugin_alert_channels == ("email", "push", "telegram") + assert settings.strategy_plugin_alert_push_recipients == ("risk-topic", "backup-topic") + assert settings.strategy_plugin_alert_push_provider == "ntfy" + assert settings.strategy_plugin_alert_push_app_token == "app-token" + assert settings.strategy_plugin_alert_push_access_token == "access-token" + assert settings.strategy_plugin_alert_push_api_base_url == "https://ntfy.example.test" + assert settings.strategy_plugin_alert_push_device == "iphone" + assert settings.strategy_plugin_alert_push_priority == "5" + assert settings.strategy_plugin_alert_push_tags == "warning" + assert settings.strategy_plugin_alert_push_body_max_chars == "300" + assert settings.strategy_plugin_alert_telegram_chat_ids == ("12345", "@risk_channel") + assert settings.strategy_plugin_alert_telegram_bot_token == "telegram-token" + assert settings.strategy_plugin_alert_telegram_api_base_url == "https://telegram.example.test" + assert settings.strategy_plugin_alert_telegram_parse_mode == "HTML" + assert settings.strategy_plugin_alert_telegram_disable_web_page_preview == "false" + assert settings.strategy_plugin_alert_telegram_body_max_chars == "900" def test_reserved_cash_ratio_rejects_invalid_env(monkeypatch): diff --git a/tests/test_sync_cloud_run_env_workflow.py b/tests/test_sync_cloud_run_env_workflow.py index 5370b28..b10af15 100644 --- a/tests/test_sync_cloud_run_env_workflow.py +++ b/tests/test_sync_cloud_run_env_workflow.py @@ -3,89 +3,89 @@ from pathlib import Path -def test_sync_cloud_run_env_workflow_syncs_crisis_alert_settings(): +def test_sync_cloud_run_env_workflow_syncs_strategy_plugin_alert_settings(): workflow_path = Path(__file__).resolve().parents[1] / ".github/workflows/sync-cloud-run-env.yml" workflow = workflow_path.read_text(encoding="utf-8") for name in ( - "CRISIS_ALERT_CHANNELS", - "CRISIS_ALERT_EMAIL_RECIPIENTS", - "CRISIS_ALERT_EMAIL_SENDER_EMAIL", - "CRISIS_ALERT_EMAIL_SMTP_HOST", - "CRISIS_ALERT_EMAIL_SMTP_PORT", - "CRISIS_ALERT_EMAIL_SMTP_SECURITY", - "CRISIS_ALERT_SMS_RECIPIENTS", - "CRISIS_ALERT_SMS_PROVIDER", - "CRISIS_ALERT_SMS_ACCOUNT_ID", - "CRISIS_ALERT_SMS_SENDER", - "CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID", - "CRISIS_ALERT_SMS_API_BASE_URL", - "CRISIS_ALERT_SMS_BODY_MAX_CHARS", - "CRISIS_ALERT_PUSH_RECIPIENTS", - "CRISIS_ALERT_PUSH_PROVIDER", - "CRISIS_ALERT_PUSH_API_BASE_URL", - "CRISIS_ALERT_PUSH_DEVICE", - "CRISIS_ALERT_PUSH_PRIORITY", - "CRISIS_ALERT_PUSH_TAGS", - "CRISIS_ALERT_PUSH_BODY_MAX_CHARS", - "CRISIS_ALERT_TELEGRAM_CHAT_IDS", - "CRISIS_ALERT_TELEGRAM_API_BASE_URL", - "CRISIS_ALERT_TELEGRAM_PARSE_MODE", - "CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW", - "CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS", + "STRATEGY_PLUGIN_ALERT_CHANNELS", + "STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS", + "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY", + "STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS", + "STRATEGY_PLUGIN_ALERT_SMS_PROVIDER", + "STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID", + "STRATEGY_PLUGIN_ALERT_SMS_SENDER", + "STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID", + "STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL", + "STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS", + "STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS", + "STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER", + "STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL", + "STRATEGY_PLUGIN_ALERT_PUSH_DEVICE", + "STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY", + "STRATEGY_PLUGIN_ALERT_PUSH_TAGS", + "STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS", ): assert f"{name}: ${{{{ vars.{name} }}}}" in workflow assert f"add_optional_env {name}" in workflow assert ( - "CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: " - "${{ vars.CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }}" + "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: " + "${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }}" ) in workflow - assert "CRISIS_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.CRISIS_ALERT_EMAIL_SENDER_PASSWORD }}" in workflow + assert "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD }}" in workflow assert ( - "add_optional_secret CRISIS_ALERT_EMAIL_SENDER_PASSWORD " - "CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME CRISIS_ALERT_EMAIL_SENDER_PASSWORD" + "add_optional_secret STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD " + "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD" ) in workflow assert ( - "CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: " - "${{ vars.CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }}" + "STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: " + "${{ vars.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }}" ) in workflow - assert "CRISIS_ALERT_SMS_AUTH_TOKEN: ${{ secrets.CRISIS_ALERT_SMS_AUTH_TOKEN }}" in workflow + assert "STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN }}" in workflow assert ( - "add_optional_secret CRISIS_ALERT_SMS_AUTH_TOKEN " - "CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME CRISIS_ALERT_SMS_AUTH_TOKEN" + "add_optional_secret STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN " + "STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN" ) in workflow assert ( - "CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME: " - "${{ vars.CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME }}" + "STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME: " + "${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME }}" ) in workflow assert ( - "CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: " - "${{ vars.CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }}" + "STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: " + "${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }}" ) in workflow - assert "CRISIS_ALERT_PUSH_APP_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_APP_TOKEN }}" in workflow + assert "STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN }}" in workflow assert ( - "CRISIS_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_ACCESS_TOKEN }}" + "STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN }}" ) in workflow assert ( - "add_optional_secret CRISIS_ALERT_PUSH_APP_TOKEN " - "CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME CRISIS_ALERT_PUSH_APP_TOKEN" + "add_optional_secret STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN " + "STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN" ) in workflow assert ( - "add_optional_secret CRISIS_ALERT_PUSH_ACCESS_TOKEN " - "CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME CRISIS_ALERT_PUSH_ACCESS_TOKEN" + "add_optional_secret STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN " + "STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN" ) in workflow assert ( - "CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: " - "${{ vars.CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }}" + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: " + "${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }}" ) in workflow assert ( - "CRISIS_ALERT_TELEGRAM_BOT_TOKEN: " - "${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }}" + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN: " + "${{ secrets.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN }}" ) in workflow assert ( - "add_optional_secret CRISIS_ALERT_TELEGRAM_BOT_TOKEN " - "CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME CRISIS_ALERT_TELEGRAM_BOT_TOKEN" + "add_optional_secret STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN " + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN" ) in workflow assert '"CRISIS_ALERT_GOOGLE_VOICE_TO"' in workflow assert '"CRISIS_ALERT_GOOGLE_VOICE_GATEWAY"' in workflow