ForcePilot/backend/package/yuxi/channels/adapters/urbit/doctor.py
Kris 49ecd949e8 feat(urbit): 实现完整的Urbit聊天适配器模块
新增了从错误定义、客户端实现到功能完整的Urbit适配器全套代码,包括认证、消息处理、目录查询、邀请管理、媒体处理、速率限制等核心功能模块
2026-05-12 00:50:27 +08:00

52 lines
1.5 KiB
Python

from __future__ import annotations
from typing import Any
from yuxi.utils.logging_config import logger
_LEGACY_KEY_MAP: dict[str, str] = {
"allow_private_network": "network.dangerously_allow_private_network",
"allowPrivateNetwork": "network.dangerouslyAllowPrivateNetwork",
}
def create_legacy_private_network_doctor_contract(
config: dict[str, Any],
) -> list[dict[str, str]]:
migrations: list[dict[str, str]] = []
for legacy_key, new_key in _LEGACY_KEY_MAP.items():
if legacy_key in config:
migrations.append(
{
"from": legacy_key,
"to": new_key,
"value": config[legacy_key],
}
)
return migrations
def apply_doctor_migrations(
config: dict[str, Any],
migrations: list[dict[str, str]],
) -> dict[str, Any]:
config = dict(config)
for mig in migrations:
legacy_key = mig["from"]
new_key = mig["to"]
value = mig["value"]
config.setdefault("network", {})
config["network"]["dangerously_allow_private_network"] = value
config["network"]["dangerouslyAllowPrivateNetwork"] = value
config.pop(legacy_key, None)
logger.info(f"[Urbit] Doctor: migrated {legacy_key}{new_key} = {value}")
return config
def is_legacy_private_network_config(config: dict[str, Any]) -> bool:
return "allow_private_network" in config or "allowPrivateNetwork" in config