"""Extension-settings → environment mapping consumed by the TS adapter/harness,
plus the one shared env-timeout parser every timeout policy goes through.

owner: RStack developed by Richardson Gunde; Tau adapter contributed by Jeomon
"""
from __future__ import annotations

import os


def _timeout_from_env(env_key: str, default_ms: float) -> float:
    """Parse a millisecond timeout env var into bounded seconds; garbage or
    absent values fall back to the caller's default, never a crash. The ONE
    parser for every timeout policy in this package (bridge/guard/gates), so
    the parsing/fallback behavior cannot drift between them (Qodo, PR #553)."""
    try:
        return max(1.0, float(os.environ.get(env_key, default_ms)) / 1000.0)
    except (TypeError, ValueError):
        return default_ms / 1000.0


# settings.json key → environment variable consumed by the TS adapter/harness.
_CONFIG_ENV = {
    "worker_command": "RSTACK_WORKER_COMMAND",
    "default_model": "RSTACK_DEFAULT_MODEL",
    "escalated_model": "RSTACK_ESCALATED_MODEL",
    "slack_webhook": "RSTACK_SLACK_WEBHOOK",
    "state_dir": "RSTACK_STATE_DIR",
    "allow_destructive": "RSTACK_ALLOW_DESTRUCTIVE",
}
