import type { OpenClawPluginApi } from "openclaw/plugin-sdk"; import { hasQiaoqiaoToolEnabledForAnyAccount, withQiaoqiaoToolClient } from "../tools-common/tool-exec.js"; import { getCurrentQiaoqiaoToolContext } from "../tools-common/tool-context.js"; import { runToolWithExecutionLog } from "../tools-common/tool-execution-log.js"; import { registeredTool, skippedTool, type QiaoqiaoToolRegistrationResult, } from "../tools-common/tool-registration-log.js"; import { errorResult, json } from "../tools-common/qiaoqiao-api.js"; import { runMessageAction } from "./actions.js"; import { QiaoqiaoMessageSchema, type QiaoqiaoMessageParams } from "./schemas.js"; export function registerQiaoqiaoMessageTools(api: OpenClawPluginApi): QiaoqiaoToolRegistrationResult { if (!api.config) { return skippedTool(api, "qiaoqiao_message", "no config available"); } if (!hasQiaoqiaoToolEnabledForAnyAccount(api.config)) { return skippedTool(api, "qiaoqiao_message", "no enabled/configured Qiaoqiao account"); } if (!hasQiaoqiaoToolEnabledForAnyAccount(api.config, "message")) { return skippedTool(api, "qiaoqiao_message", "message tool disabled in config"); } api.registerTool( { name: "qiaoqiao_message", label: "Qiaoqiao Message", description: "Read message history exposed by the Qiaoqiao agent API. Actions: get, list, recent. " + "For forum/private-site DMs, use qiaoqiao_dm instead.", parameters: QiaoqiaoMessageSchema, async execute(_toolCallId, params) { return runToolWithExecutionLog({ api, toolName: "qiaoqiao_message", params, run: async () => { const p = params as QiaoqiaoMessageParams; if (p.action === "list") { if (!p.chat_id?.trim()) { const ctx = getCurrentQiaoqiaoToolContext(); if (ctx?.senderOpenId) { p.chat_id = ctx.senderOpenId; } else if (ctx?.chatId) { p.chat_id = ctx.chatId; } } } try { return await withQiaoqiaoToolClient({ api, toolName: "qiaoqiao_message", requiredTool: "message", run: async ({ account }) => json(await runMessageAction(account, p)), }); } catch (err) { return errorResult(err); } }, }); }, }, { name: "qiaoqiao_message" }, ); return registeredTool(api, "qiaoqiao_message"); }