ForcePilot/backend/package/yuxi/channels/contract/dtos/tools.py
Kris b88c0ae29e feat(channels): 批量新增多渠道网关限界上下文基础代码与契约
新增完整的 channels 限界上下文模块,包含契约层、领域核心层、应用服务、管道编排、插件体系、基础设施组合根等全层级代码,新增飞书与微信 iLink 渠道插件基础结构,补充各类 DTO、端口协议与领域服务实现。
2026-07-02 03:22:12 +08:00

96 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""渠道工具 DTO。
定义渠道工具相关的不可变值对象,包括工具参数、渠道工具、工具定义与
工具结果。所有 DTO 均为 ``dataclass(frozen=True)``,仅依赖标准库,
用于 FR-11 渠道工具注册与 FR-12 工具调用结果回传。集合字段使用 tuple
以保证 frozen dataclass 的不可变语义。
"""
from __future__ import annotations
from dataclasses import dataclass
from typing import Any
@dataclass(frozen=True)
class ToolParameter:
"""工具参数。
描述渠道工具的单个参数元信息,包括名称、类型、描述、是否必填与默认值,
由适配器按渠道协议解析后填充,用于工具调用前的参数校验。
字段:
name: 参数名称。
type: 参数类型str | int | bool | json
description: 参数描述。
required: 是否必填(默认 True
default: 默认值(默认 None
"""
name: str
type: str
description: str
required: bool = True
default: Any = None
@dataclass(frozen=True)
class ChannelTool:
"""渠道工具。
描述由插件注册至渠道的工具,包括名称、描述、参数列表、处理函数标识
与作用范围,用于 FR-11 渠道工具注册。集合字段使用 tuple 以保证
frozen dataclass 的不可变语义。
字段:
name: 工具名称。
description: 工具描述。
handler_id: 插件提供的处理函数标识。
parameters: 参数列表(默认空 tuple
scope: 作用范围private | group | all默认 all
"""
name: str
description: str
handler_id: str
parameters: tuple[ToolParameter, ...] = ()
scope: str = "all"
@dataclass(frozen=True)
class ToolDefinition:
"""工具定义。
描述工具的声明式定义包括名称、描述、JSON Schema 参数模型与作用范围,
用于工具注册中心对外暴露工具元信息。
字段:
name: 工具名称。
description: 工具描述。
parameters_schema: 参数 JSON Schema。
scope: 作用范围private | group | all默认 all
"""
name: str
description: str
parameters_schema: dict[str, Any]
scope: str = "all"
@dataclass(frozen=True)
class ToolResult:
"""工具结果。
描述工具调用的执行结果,包括是否成功、结果数据与错误信息,用于
FR-12 工具调用结果回传。
字段:
success: 是否成功。
result: 结果数据(默认 None
error: 错误信息(可选,默认 None
"""
success: bool
result: Any = None
error: str | None = None