ForcePilot/backend/package/yuxi/channel/extensions/nostr/config_schema.py
Kris 16455cb303 feat(channel): 添加 Nostr 渠道扩展
新增 Nostr 渠道扩展,支持在 Yuxi 平台中集成 Nostr 去中心化社交协议。

包含以下功能模块:
- bus: 事件总线与中继通信
- account: 账户管理
- key_utils: 密钥工具
- gateway: SSE/WebSocket 网关接入
- outbound: 外发消息管理
- gift_wrap: Gift Wrap 加密
- nip44: NIP-44 加密协议
- config_schema: 配置模式
- defaults: 默认配置
- profile_core: 用户资料核心
- profile_publisher: 资料发布
- event_utils: 事件工具
- deletion: 事件删除
- reactions: 表情反应
- metrics: 指标监控
- seen_tracker: 已读追踪
- session_route: 会话路由
- state_store: 状态存储
2026-05-21 11:31:51 +08:00

42 lines
1.2 KiB
Python

from pydantic import BaseModel, field_validator
class NostrProfileSchema(BaseModel):
name: str | None = None
display_name: str | None = None
about: str | None = None
picture: str | None = None
banner: str | None = None
website: str | None = None
nip05: str | None = None
lud16: str | None = None
@field_validator("picture", "banner", "website")
@classmethod
def validate_https_url(cls, v: str | None) -> str | None:
if v and not v.startswith("https://"):
raise ValueError(f"URL must use https://: {v}")
return v
class NostrAccountConfig(BaseModel):
name: str | None = None
enabled: bool = True
private_key: str | None = None
relays: list[str] = []
dm_policy: str = "pairing"
allow_from: list[str] = []
profile: NostrProfileSchema | None = None
class NostrConfig(BaseModel):
enabled: bool = True
name: str | None = None
default_account: str = "default"
private_key: str | None = None
relays: list[str] = []
dm_policy: str = "pairing"
allow_from: list[str] = []
profile: NostrProfileSchema | None = None
accounts: dict[str, NostrAccountConfig] = {}