"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.WecomConfigSchema = void 0; var _zod = require("zod"); /** * WeCom 配置 Schema (Zod) */function bindToJsonSchema(schema) { const anySchema = schema; if (typeof anySchema.toJSONSchema === "function") { anySchema.toJSONSchema = anySchema.toJSONSchema.bind(schema); } return schema; } /** * **dmSchema (单聊配置)** * * 控制单聊行为(如允许名单、策略)。 * @property enabled - 是否启用单聊 [默认: true] * @property policy - 访问策略: "pairing" (需配对, 默认), "allowlist" (仅在名单), "open" (所有人), "disabled" (禁用) * @property allowFrom - 允许的用户ID或群ID列表 (仅当 policy="allowlist" 时生效) */ const dmSchema = _zod.z.object({ enabled: _zod.z.boolean().optional(), policy: _zod.z.enum(["pairing", "allowlist", "open", "disabled"]).optional(), allowFrom: _zod.z.array(_zod.z.union([_zod.z.string(), _zod.z.number()])).optional() }).optional(); /** * **mediaSchema (媒体处理配置)** * * 控制媒体文件的下载和缓存行为。 * @property tempDir - 临时文件下载目录 * @property retentionHours - 临时文件保留时间(小时) * @property cleanupOnStart - 启动时是否自动清理旧文件 * @property maxBytes - 允许下载的最大字节数 */ const mediaSchema = _zod.z.object({ tempDir: _zod.z.string().optional(), retentionHours: _zod.z.number().optional(), cleanupOnStart: _zod.z.boolean().optional(), maxBytes: _zod.z.number().optional() }).optional(); /** * **networkSchema (网络配置)** * * 控制 HTTP 请求行为,特别是出站代理。 * @property timeoutMs - 请求超时时间 (毫秒) * @property retries - 重试次数 * @property retryDelayMs - 重试间隔 (毫秒) * @property egressProxyUrl - 出站 HTTP 代理 (如 "http://127.0.0.1:7890") */ const networkSchema = _zod.z.object({ timeoutMs: _zod.z.number().optional(), retries: _zod.z.number().optional(), retryDelayMs: _zod.z.number().optional(), egressProxyUrl: _zod.z.string().optional() }).optional(); /** * **routingSchema (路由策略配置)** * * 控制未命中 bindings 时的回退行为。 * @property failClosedOnDefaultRoute - true=拒绝 default 回退,false=允许回退默认 agent */ const routingSchema = _zod.z.object({ failClosedOnDefaultRoute: _zod.z.boolean().optional() }).optional(); /** * **botSchema (Bot 模式配置)** * * 用于配置企业微信内部机器人 (Webhook 模式)。 * @property token - 企业微信后台设置的 Token * @property encodingAESKey - 企业微信后台设置的 EncodingAESKey * @property receiveId - (可选) 接收者ID,通常不用填 * @property streamPlaceholderContent - (可选) 流式响应中的占位符,默认为 "Thinking..."或空 * @property welcomeText - (可选) 用户首次对话时的欢迎语 * @property dm - 单聊策略覆盖配置 */ const botSchema = _zod.z.object({ aibotid: _zod.z.string().optional(), token: _zod.z.string().optional(), encodingAESKey: _zod.z.string().optional(), botIds: _zod.z.array(_zod.z.string()).optional(), receiveId: _zod.z.string().optional(), streamPlaceholderContent: _zod.z.string().optional(), welcomeText: _zod.z.string().optional(), dm: dmSchema, // 长链接模式 (WebSocket) connectionMode: _zod.z.enum(['webhook', 'websocket']).optional(), botId: _zod.z.string().optional(), secret: _zod.z.string().optional() }).optional(); /** * **agentSchema (Agent 模式配置)** * * 用于配置企业微信自建应用 (Agent)。 * @property corpId - 企业 ID (CorpID) * @property corpSecret - 应用 Secret * @property agentId - 应用 AgentId (数字,可选) * @property token - 回调配置 Token * @property encodingAESKey - 回调配置 EncodingAESKey * @property welcomeText - (可选) 欢迎语 * @property dm - 单聊策略覆盖配置 */ const agentSchema = _zod.z.object({ corpId: _zod.z.string(), corpSecret: _zod.z.string(), agentId: _zod.z.union([_zod.z.string(), _zod.z.number()]).optional(), token: _zod.z.string(), encodingAESKey: _zod.z.string(), welcomeText: _zod.z.string().optional(), dm: dmSchema }).optional(); /** * **dynamicAgentsSchema (动态 Agent 配置)** * * 控制是否按用户/群组自动创建独立 Agent 实例。 * @property enabled - 是否启用动态 Agent * @property dmCreateAgent - 私聊是否为每个用户创建独立 Agent * @property groupEnabled - 群聊是否启用动态 Agent * @property adminUsers - 管理员列表(绕过动态路由) */ const dynamicAgentsSchema = _zod.z.object({ enabled: _zod.z.boolean().optional(), dmCreateAgent: _zod.z.boolean().optional(), groupEnabled: _zod.z.boolean().optional(), adminUsers: _zod.z.array(_zod.z.string()).optional() }).optional(); /** Matrix 账号条目 */ const accountSchema = _zod.z.object({ enabled: _zod.z.boolean().optional(), name: _zod.z.string().optional(), bot: botSchema, agent: agentSchema }); /** 顶层 WeCom 配置 Schema */ const WecomConfigSchema = exports.WecomConfigSchema = bindToJsonSchema(_zod.z.object({ enabled: _zod.z.boolean().optional(), bot: botSchema, agent: agentSchema, accounts: _zod.z.record(_zod.z.string(), accountSchema).optional(), defaultAccount: _zod.z.string().optional(), media: mediaSchema, network: networkSchema, routing: routingSchema, dynamicAgents: dynamicAgentsSchema })); /* v9-5538bc3d6a732d6b */