浏览代码

Seed PlatformConfig.extra under the keys the config actually reads

hermes_env_enablement_fn() passed env var names into the seed helper,
which lower-cased them into keys like "chatto_token". ChattoConfiguration
reads extra["token"], so every env-provided value except base_url was
silently dropped.

Iterate over the declared fields and seed by config_key. Also stop
logging token and password.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Paul-Dieter Klumpp 1 周之前
父节点
当前提交
794e68063d
共有 1 个文件被更改,包括 14 次插入18 次删除
  1. 14 18
      adapter.py

+ 14 - 18
adapter.py

@@ -1402,26 +1402,22 @@ def hermes_env_enablement_fn() -> Optional[dict]:
     know that it is needed for plugin register().
     """
 
-    def _add_env_to_seed(seed: dict, our_key: str) -> dict:
-        env_value = os.getenv(our_key.upper())
+    # Seed keys must be the config.yaml "extra" keys (config_key), NOT the env
+    # var names — ChattoConfiguration reads extra[config_key].
+    seed: Dict[str, Any] = {
+        ChattoConfiguration.base_url.config_key: (
+            os.getenv(ChattoConfiguration.base_url.env_name) or ChattoClient.DEFAULT_BASE_URL
+        ).strip(),
+    }
+
+    for field in ChattoConfiguration.fields():
+        if field.field_name == ChattoConfiguration.base_url.field_name:
+            continue
+        env_value = os.getenv(field.env_name)
         if env_value:
-            seed[our_key.lower()] = env_value
-        return seed
-    
-    seed = {}
-    seed["base_url"] = (os.getenv(ChattoConfiguration.base_url.env_name) or ChattoClient.DEFAULT_BASE_URL).strip()
-
-    seed = _add_env_to_seed(seed, ChattoConfiguration.token.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.login.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.password.env_name)
-
-    seed = _add_env_to_seed(seed, ChattoConfiguration.channels.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.home_channel.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.require_mention.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.free_response_channels_list.env_name)
-    seed = _add_env_to_seed(seed, ChattoConfiguration.auto_thread.env_name)
+            seed[field.config_key] = env_value.strip()
 
-    logger.debug("seed: " + str(seed))
+    logger.debug("seed: %s", {k: v for k, v in seed.items() if k not in ("token", "password")})
 
     return seed