本提交新增了全渠道SDK核心模块: 1. 异步锁、目标解析、动作调度等基础工具 2. 消息动作注册与统一调度系统 3. 测试套件与契约测试框架 4. 完整的目标解析流水线与工具函数 5. 资源依赖注入与生命周期管理
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from enum import StrEnum
|
|
|
|
|
|
class MessageAction(StrEnum):
|
|
"""全渠道统一消息动作命名空间。
|
|
|
|
渠道插件通过此枚举声明支持的动作,替代自由字符串。
|
|
基于 OpenClaw 58 种动作逐项分析后,保留 Yuxi 渠道实际需要的核心动作。
|
|
"""
|
|
|
|
SEND = "send"
|
|
SEND_MEDIA = "send_media"
|
|
REPLY = "reply"
|
|
BROADCAST = "broadcast"
|
|
|
|
EDIT = "edit"
|
|
UNSEND = "unsend"
|
|
|
|
REACT = "react"
|
|
REACT_REMOVE = "react_remove"
|
|
REACTIONS = "reactions"
|
|
|
|
PIN = "pin"
|
|
UNPIN = "unpin"
|
|
|
|
POLL = "poll"
|
|
POLL_VOTE = "poll_vote"
|
|
|
|
RENAME_GROUP = "rename_group"
|
|
ADD_PARTICIPANT = "add_participant"
|
|
REMOVE_PARTICIPANT = "remove_participant"
|
|
MEMBER_INFO = "member_info"
|
|
PERMISSIONS = "permissions"
|
|
|
|
TOPIC_CREATE = "topic_create"
|
|
TOPIC_EDIT = "topic_edit"
|
|
THREAD_CREATE = "thread_create"
|
|
THREAD_LIST = "thread_list"
|
|
THREAD_REPLY = "thread_reply"
|
|
|
|
READ = "read"
|
|
DELETE = "delete"
|
|
|
|
|
|
MESSAGE_ACTION_GROUPS: dict[str, list[MessageAction]] = {
|
|
"basic": [MessageAction.SEND, MessageAction.SEND_MEDIA, MessageAction.REPLY, MessageAction.BROADCAST],
|
|
"modify": [MessageAction.EDIT, MessageAction.UNSEND, MessageAction.DELETE],
|
|
"expression": [MessageAction.REACT, MessageAction.REACT_REMOVE, MessageAction.REACTIONS],
|
|
"pin": [MessageAction.PIN, MessageAction.UNPIN],
|
|
"poll": [MessageAction.POLL, MessageAction.POLL_VOTE],
|
|
"group": [
|
|
MessageAction.RENAME_GROUP,
|
|
MessageAction.ADD_PARTICIPANT,
|
|
MessageAction.REMOVE_PARTICIPANT,
|
|
MessageAction.MEMBER_INFO,
|
|
MessageAction.PERMISSIONS,
|
|
],
|
|
"thread": [
|
|
MessageAction.THREAD_CREATE,
|
|
MessageAction.THREAD_LIST,
|
|
MessageAction.THREAD_REPLY,
|
|
MessageAction.TOPIC_CREATE,
|
|
MessageAction.TOPIC_EDIT,
|
|
],
|
|
"utility": [MessageAction.READ],
|
|
}
|
|
|
|
MESSAGE_ACTIONS_BASIC: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["basic"])
|
|
MESSAGE_ACTIONS_GROUP: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["group"])
|
|
MESSAGE_ACTIONS_THREAD: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["thread"])
|
|
MESSAGE_ACTIONS_POLL: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["poll"])
|
|
MESSAGE_ACTIONS_ATTACHMENT: tuple[MessageAction, ...] = () |