From 271637ee710b97fb12f88a0471ee2648d3a345f9 Mon Sep 17 00:00:00 2001 From: Debian Date: Sun, 13 Sep 2026 14:00:16 +0200 Subject: [PATCH] Add config getters for logging, history and behavior settings Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- lib/settings.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/settings.py b/lib/settings.py index 659ff6d..f353a23 100644 --- a/lib/settings.py +++ b/lib/settings.py @@ -72,6 +72,18 @@ class ConfigLoader: return value.lower() in ('true', 'yes', '1', 'on') + def get_float(self, section, key, fallback=0.0): + """Get a float configuration value""" + value = self.get(section, key) + if value is None: + return fallback + + try: + return float(value) + except ValueError: + logger.warning(f'Invalid float value for [{section}] {key}: {value}') + return fallback + def get_host(self): """Get connection host""" return self.get('connection', 'host') @@ -129,8 +141,11 @@ class ConfigLoader: return password def get_log_level(self): - """Get logging level""" - level_str = self.get('logging', 'level', 'INFO') + """Get logging level (None if not configured or invalid)""" + level_str = self.get('logging', 'level') + if not level_str: + return None + levels = { 'DEBUG': logging.DEBUG, 'INFO': logging.INFO, @@ -138,7 +153,19 @@ class ConfigLoader: 'ERROR': logging.ERROR, 'CRITICAL': logging.CRITICAL } - return levels.get(level_str.upper(), logging.INFO) + return levels.get(level_str.upper()) + + def get_max_history(self, default): + """Get command history length from [ui] section""" + return self.get_int('ui', 'max_history', default) + + def get_quit_timeout(self, default): + """Get quit confirmation timeout from [behavior] section""" + return self.get_float('behavior', 'quit_timeout', default) + + def get_respawn_delay(self, default): + """Get respawn delay from [behavior] section""" + return self.get_float('behavior', 'respawn_delay', default) def create_example_config():