Two config systems used different key names for the terminal backend: - hermes_cli/config.py, README, and all docs use "terminal.backend" - cli.py's env var mapping only recognized "terminal.env_type" Users following the docs who set `backend: modal` in ~/.hermes/config.yaml had it silently ignored -- TERMINAL_ENV always defaulted to "local". Additionally, when no config file existed, cli.py's hardcoded defaults overwrote any TERMINAL_ENV=modal set in .env, despite the comment saying "env vars take precedence." Fixes: - cli.py now normalizes "backend" -> "env_type" (backend takes precedence) - Defaults no longer overwrite .env when no config file terminal section exists - hermes status reads from config as fallback when env var isn't set Also fixes four related bugs found in the Modal/sandbox lifecycle: - file_tools cache not cleared on sandbox cleanup (stale ops on dead sandbox) - Global lock held during slow Modal teardown (blocked all tool calls 10-15s) - Race condition in file_tools between existence check and access (KeyError) - Per-task creation locks never cleaned up (memory leak)
9.4 KiB
9.4 KiB