@yach.zhiyinlou.com/yach 2.14.6 → 2.15.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/src/card/native-task-progress.js +62 -0
- package/dist/src/card/native-task-progress.js.map +1 -0
- package/dist/src/channel/plugin.js +3 -0
- package/dist/src/channel/plugin.js.map +1 -1
- package/dist/src/channel/webhook.js +1 -1
- package/dist/src/channel/webhook.js.map +1 -1
- package/dist/src/compat/openclaw-sdk.js +30 -0
- package/dist/src/compat/openclaw-sdk.js.map +1 -0
- package/dist/src/compat/sdk-loader.js +21 -0
- package/dist/src/compat/sdk-loader.js.map +1 -0
- package/dist/src/core/aes.js +23 -3
- package/dist/src/core/aes.js.map +1 -1
- package/dist/src/core/command-auth.js +21 -0
- package/dist/src/core/command-auth.js.map +1 -0
- package/dist/src/core/yach-ticket.js +81 -0
- package/dist/src/core/yach-ticket.js.map +1 -1
- package/dist/src/messaging/inbound/dispatcher.js +3 -2
- package/dist/src/messaging/inbound/dispatcher.js.map +1 -1
- package/dist/src/messaging/inbound/handler.js +100 -2
- package/dist/src/messaging/inbound/handler.js.map +1 -1
- package/dist/src/messaging/outbound/reply-dispatcher.js +56 -3
- package/dist/src/messaging/outbound/reply-dispatcher.js.map +1 -1
- package/dist/src/messaging/question-runtime.js +507 -0
- package/dist/src/messaging/question-runtime.js.map +1 -0
- package/dist/src/tools/index.js +28 -0
- package/dist/src/tools/index.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -172,6 +172,27 @@ Agent ID 自动生成规则:
|
|
|
172
172
|
- **自动轮换**:卡片有效期 10 分钟,9 分钟时自动切换新卡片
|
|
173
173
|
- **显式关闭**:AI 输出完成后关闭卡片,客户端不再显示等待状态
|
|
174
174
|
|
|
175
|
+
## 任务进度
|
|
176
|
+
|
|
177
|
+
Yach 接收 OpenClaw 原生 `progress_card`(及核心适配的 `update_plan`)产生的 `onPlanUpdate` 事件,展示步骤清单与完成数,无需新增插件工具或白名单。任务计划和状态由 OpenClaw 管理;插件只负责渠道展示,不把工具调用次数或回复结束当成任务完成。
|
|
178
|
+
|
|
179
|
+
`stream` 模式使用独立卡片发送阶段快照并立即关闭,卡片创建或写入失败时降级为 markdown;`direct` 模式直接发送 markdown。重复快照不再发送;原生清空事件重置展示状态,不另发空白消息。进度消息独立于正文回复。当前每次变化新增一条快照,暂不支持同一卡片替换和交互按钮。需要宿主支持 `onPlanUpdate` 回调,旧版核心没有此回调时仅保留正常回复。
|
|
180
|
+
|
|
181
|
+
## ask_user 问题(Agent 询问模式)兼容
|
|
182
|
+
|
|
183
|
+
兼容 **openclaw ≥ 2026.3.22**(`peerDependencies` 下限)。`question-gateway-runtime` / `agent-harness-runtime` 是 2026.8.1 才引入的 SDK 子路径,插件全部**懒加载**(动态 import + 缓存),旧版核心自动降级、不崩溃:
|
|
184
|
+
|
|
185
|
+
- **2026.8.1+**:完整能力——选项渲染为可点击折叠链接(`questionFoldLinks`)、入站拦截走 SDK RPC resolve / claim(answered 语义),见下方三种回答路径。
|
|
186
|
+
- **2026.3.22 ~ 2026.8.0**:降级为纯文本路径——问题以 markdown 送达(自带编号选项与回答指引),选项/自由文本/多题回答以**用户身份注入合成消息**(飞书 ask-user 模式),AI 在新一轮收到答案;无 fold 链接、无 pending/claim 增强,插件整体不受影响。
|
|
187
|
+
|
|
188
|
+
新版本 Agent 在需要用户选择(如回答模式、工具确认等)时会发送 ask_user 问题。Yach 插件原生兼容,按优先级提供三种回答路径:
|
|
189
|
+
|
|
190
|
+
- **纯文本回答(始终可用)**:问题以 markdown 消息送达,文本自带编号选项(`1. xxx` / `2. xxx`)和回答指引。用户直接回复编号、选项文字或自定义答案均可,插件在入站拦截 pending 问题后**直接解析为回答**,不依赖 OpenClaw 核心的纯文本 claim 机制(8.1 的 auto-reply 管线没有该机制,9.4 才有且带 caller 指纹校验)。
|
|
191
|
+
- **点击选项链接(默认开启,`questionFoldLinks`)**:单题单选(2~4 个干净选项)时,选项渲染为「有序列表 + 可点击折叠链接」,并附「跳过」链接。点击后客户端自动把选项文本作为消息发送,插件拦截后走 SDK RPC 直接解析为回答(「跳过」则取消该问题)。
|
|
192
|
+
- **手动输入自由文本 / 分步多题(自动生效,无需配置)**:当问题允许自定义答案(`Other`/无选项)或 Agent 一次提出多个问题(分步询问)时,用户输入的任何文本都会被采纳为该问题的答案。插件**优先走核心 claim 通道**(`claimPendingAgentQuestionAnswer`,answered 语义)——AI 的 ask_user 直接收到解析后的答案(支持 `问题标题: 答案` 逐行格式与按问题顺序逐行回复),**不会出现「用户取消了/被跳过」的误导回复**;claim 不可用(旧版核心无 pending 机制)时降级为取消问题 + 以用户身份注入合成消息(飞书 ask-user 模式),AI 在新一轮收到答案。
|
|
193
|
+
|
|
194
|
+
回答处理规则:单题选项类问题仅拦截「选项 label / 编号」文本,其它文本(闲聊)照常进入 Agent;允许自定义或分步多题的问题会拦截「任何文本」作为答案。所有增强均为尽力而为(try/catch + 配置开关),任何失败都不影响问题文本本身送达。
|
|
195
|
+
|
|
175
196
|
## 支持的消息类型
|
|
176
197
|
|
|
177
198
|
| msgtype | 处理方式 |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const plain = (text) => text.trim().replace(/[\r\n\t]+/g, " ").replace(/[\\`*_{}\[\]()<>#!|~]/g, "\\$&");
|
|
2
|
+
export function renderNativePlan(update) {
|
|
3
|
+
const steps = update.steps ?? [];
|
|
4
|
+
if (!steps.length && !update.explanation?.trim())
|
|
5
|
+
return undefined;
|
|
6
|
+
const completed = steps.filter((s) => s.status === "completed").length;
|
|
7
|
+
// 原生 progress_card 的清单说明仅为英文完成数,不重复渲染。
|
|
8
|
+
const countOnly = update.source === "openclaw" && steps.length > 0 && /^\d+\/\d+ complete$/.test(update.explanation ?? "");
|
|
9
|
+
return [
|
|
10
|
+
"**任务进度**",
|
|
11
|
+
...(steps.length ? [`已完成 ${completed}/${steps.length} 项`] : []),
|
|
12
|
+
...(!countOnly && update.explanation?.trim()
|
|
13
|
+
? [update.explanationFormat === "plain" ? plain(update.explanation) : update.explanation.trim()]
|
|
14
|
+
: []),
|
|
15
|
+
...steps.map((s) => `${s.status === "completed" ? "✓" : s.status === "in_progress" ? "▶" : "○"} ${plain(s.step)}(${s.status === "completed" ? "已完成" : s.status === "in_progress" ? "执行中" : "待执行"})`),
|
|
16
|
+
].join("\n\n");
|
|
17
|
+
}
|
|
18
|
+
export function createNativePlanSender(params) {
|
|
19
|
+
let lastText = "";
|
|
20
|
+
let queue = Promise.resolve();
|
|
21
|
+
return (update) => {
|
|
22
|
+
const send = async () => {
|
|
23
|
+
const text = renderNativePlan(update);
|
|
24
|
+
if (!text) {
|
|
25
|
+
lastText = "";
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (text === lastText)
|
|
29
|
+
return false;
|
|
30
|
+
for (const chunk of params.chunkText(text)) {
|
|
31
|
+
let msgId;
|
|
32
|
+
if (params.streaming) {
|
|
33
|
+
try {
|
|
34
|
+
msgId = await params.client.stream.createCard(params.toId, params.conversationType);
|
|
35
|
+
await params.client.stream.push(msgId, chunk);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
if (msgId)
|
|
39
|
+
await params.client.stream.close(msgId).catch(() => { });
|
|
40
|
+
msgId = undefined;
|
|
41
|
+
}
|
|
42
|
+
if (msgId)
|
|
43
|
+
await params.client.stream.close(msgId).catch(() => { });
|
|
44
|
+
}
|
|
45
|
+
if (!msgId) {
|
|
46
|
+
msgId = await params.client.im.sendMessage({
|
|
47
|
+
toId: params.toId, conversationType: params.conversationType,
|
|
48
|
+
payload: { msgtype: "markdown", markdown: { title: "任务进度", text: chunk } },
|
|
49
|
+
});
|
|
50
|
+
if (!msgId)
|
|
51
|
+
throw new Error("任务进度未返回消息 ID");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
lastText = text;
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
const result = queue.then(send).catch((error) => { params.onError(error); return false; });
|
|
58
|
+
queue = result.then(() => { });
|
|
59
|
+
return result;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=native-task-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-task-progress.js","sourceRoot":"","sources":["../../../src/card/native-task-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,7 @@ export const yachPlugin = {
|
|
|
56
56
|
baseUrl: { type: "string", description: "知音楼 OAPI 基础 URL,例如 https://yach-oapi.zhiyinlou.com" },
|
|
57
57
|
webhookPath: { type: "string", description: "自定义 Webhook 接收路径,例如 /my-bot/hook。默认为 /yach/{accountId}/messages" },
|
|
58
58
|
typingExpression: { type: "string", description: "输入状态表情,例如 [思考]。配置后 bot 处理时贴表情,回复完成后自动撤销" },
|
|
59
|
+
questionFoldLinks: { type: "boolean", description: "ask_user 问题是否渲染「有序列表 + 可点击折叠链接」选项(默认 true,含底部「跳过」链接)" },
|
|
59
60
|
markdownTableMode: { type: "string", enum: ["code", "table"], description: "表格模式:code=代码块,table=表格" },
|
|
60
61
|
textChunkLimit: { type: "integer", minimum: 1 },
|
|
61
62
|
chunkMode: { type: "string", enum: ["length", "newline"] },
|
|
@@ -105,6 +106,8 @@ export const yachPlugin = {
|
|
|
105
106
|
baseUrl: { type: "string" },
|
|
106
107
|
webhookPath: { type: "string" },
|
|
107
108
|
connectionMode: { type: "string", enum: ["webhook", "channel"] },
|
|
109
|
+
typingExpression: { type: "string" },
|
|
110
|
+
questionFoldLinks: { type: "boolean", description: "ask_user 问题是否渲染「有序列表 + 可点击折叠链接」选项(默认 true,含底部「跳过」链接)" },
|
|
108
111
|
},
|
|
109
112
|
},
|
|
110
113
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/channel/plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/channel/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readJsonBodyWithLimit } from "openclaw
|
|
1
|
+
import { readJsonBodyWithLimit } from "../compat/openclaw-sdk.js";
|
|
2
2
|
import { registerPluginHttpRoute, registerWebhookTarget, resolveSingleWebhookTarget, resolveWebhookTargets, } from "openclaw/plugin-sdk/webhook-ingress";
|
|
3
3
|
import { handleInboundMessage } from "../messaging/inbound/handler.js";
|
|
4
4
|
import { reportError } from "../core/reporter.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/channel/webhook.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/channel/webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { loadSdkFunctions } from "./sdk-loader.js";
|
|
2
|
+
let bodyReader;
|
|
3
|
+
let replyHelpers;
|
|
4
|
+
// Retired paths may have no declarations in the SDK used to build the plugin.
|
|
5
|
+
const legacyInfraRuntime = "openclaw/plugin-sdk/infra-runtime";
|
|
6
|
+
const legacyReplyPipeline = "openclaw/plugin-sdk/channel-reply-pipeline";
|
|
7
|
+
const legacyChannelRuntime = "openclaw/plugin-sdk/channel-runtime";
|
|
8
|
+
export const sdkCompatibilityGroups = [
|
|
9
|
+
{ names: ["readJsonBodyWithLimit"], candidates: [
|
|
10
|
+
{ specifier: "openclaw/plugin-sdk/webhook-request-guards", load: () => import("openclaw/plugin-sdk/webhook-request-guards") },
|
|
11
|
+
{ specifier: legacyInfraRuntime, load: () => import(legacyInfraRuntime) },
|
|
12
|
+
] },
|
|
13
|
+
{ names: ["createReplyPrefixContext", "createTypingCallbacks"], candidates: [
|
|
14
|
+
{ specifier: "openclaw/plugin-sdk/channel-outbound", load: () => import("openclaw/plugin-sdk/channel-outbound") },
|
|
15
|
+
{ specifier: legacyReplyPipeline, load: () => import(legacyReplyPipeline) },
|
|
16
|
+
{ specifier: legacyChannelRuntime, load: () => import(legacyChannelRuntime) },
|
|
17
|
+
] },
|
|
18
|
+
];
|
|
19
|
+
export const readJsonBodyWithLimit = async (...args) => {
|
|
20
|
+
const group = sdkCompatibilityGroups[0];
|
|
21
|
+
bodyReader ??= loadSdkFunctions(group.candidates, group.names)
|
|
22
|
+
.then((sdk) => sdk.readJsonBodyWithLimit);
|
|
23
|
+
return (await bodyReader)(...args);
|
|
24
|
+
};
|
|
25
|
+
export function getReplyHelpers() {
|
|
26
|
+
const group = sdkCompatibilityGroups[1];
|
|
27
|
+
replyHelpers ??= loadSdkFunctions(group.candidates, group.names).then((sdk) => sdk);
|
|
28
|
+
return replyHelpers;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=openclaw-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-sdk.js","sourceRoot":"","sources":["../../../src/compat/openclaw-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKnD,IAAI,UAA2C,CAAC;AAChD,IAAI,YAA+C,CAAC;AAEpD,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAC/D,MAAM,mBAAmB,GAAG,4CAA4C,CAAC;AACzE,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,EAAE,UAAU,EAAE;YAC9C,EAAE,SAAS,EAAE,4CAA4C,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,4CAA4C,CAAC,EAAE;YAC7H,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;SAC1E,EAAE;IACH,EAAE,KAAK,EAAE,CAAC,0BAA0B,EAAE,uBAAuB,CAAC,EAAE,UAAU,EAAE;YAC1E,EAAE,SAAS,EAAE,sCAAsC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,EAAE;YACjH,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;YAC3E,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE;SAC9E,EAAE;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAe,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;IACjE,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxC,UAAU,KAAK,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;SAC3D,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAmC,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxC,YAAY,KAAK,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAmB,CAAC,CAAC;IACpG,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
/** Check the requested export before importing so dependency failures never trigger fallback. */
|
|
4
|
+
export async function loadSdkFunctions(candidates, names, resolve = require.resolve) {
|
|
5
|
+
for (const candidate of candidates) {
|
|
6
|
+
try {
|
|
7
|
+
resolve(candidate.specifier);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
const code = error.code;
|
|
11
|
+
if (code === "ERR_PACKAGE_PATH_NOT_EXPORTED")
|
|
12
|
+
continue;
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
const module = await candidate.load();
|
|
16
|
+
if (names.every((name) => typeof module[name] === "function"))
|
|
17
|
+
return module;
|
|
18
|
+
}
|
|
19
|
+
throw new Error(`OpenClaw SDK does not provide ${names.join(", ")} via ${candidates.map((c) => c.specifier).join(" or ")}`);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sdk-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-loader.js","sourceRoot":"","sources":["../../../src/compat/sdk-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAO/C,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA0B,EAC1B,KAAe,EACf,UAAyC,OAAO,CAAC,OAAO;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,+BAA+B;gBAAE,SAAS;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;YAAE,OAAO,MAAM,CAAC;IAC/E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9H,CAAC"}
|
package/dist/src/core/aes.js
CHANGED
|
@@ -1,12 +1,32 @@
|
|
|
1
|
-
import { createDecipheriv } from "node:crypto";
|
|
1
|
+
import { createCipheriv, createDecipheriv } from "node:crypto";
|
|
2
|
+
/** 构造 16 字节 AES key(右填 \x00) */
|
|
3
|
+
function buildKey(appKey) {
|
|
4
|
+
const keyBuf = Buffer.alloc(16, 0);
|
|
5
|
+
Buffer.from(appKey, "utf-8").copy(keyBuf, 0, 0, Math.min(appKey.length, 16));
|
|
6
|
+
return keyBuf;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 用 AES-128-ECB 加密知音楼字段(senderId / conversationId / msgId 等)。
|
|
10
|
+
* 与 aesDecrypt 互逆:PKCS7 padding,base64 输出。
|
|
11
|
+
* 用于合成消息(synthetic message)注入时构造入站消息字段。
|
|
12
|
+
*/
|
|
13
|
+
export function aesEncrypt(plain, appKey) {
|
|
14
|
+
const keyBuf = buildKey(appKey);
|
|
15
|
+
const plainBuf = Buffer.from(plain, "utf-8");
|
|
16
|
+
// PKCS7 pad(16 字节块;整块时补一个完整块)
|
|
17
|
+
const padLen = 16 - (plainBuf.length % 16);
|
|
18
|
+
const padded = Buffer.concat([plainBuf, Buffer.alloc(padLen, padLen)]);
|
|
19
|
+
const cipher = createCipheriv("aes-128-ecb", keyBuf, null);
|
|
20
|
+
cipher.setAutoPadding(false);
|
|
21
|
+
return Buffer.concat([cipher.update(padded), cipher.final()]).toString("base64");
|
|
22
|
+
}
|
|
2
23
|
/**
|
|
3
24
|
* 用 AES-128-ECB 解密知音楼加密字段(senderId / conversationId / msgId 等)
|
|
4
25
|
* 密钥不足 16 字节时右填 \x00
|
|
5
26
|
*/
|
|
6
27
|
export function aesDecrypt(encBase64, appKey) {
|
|
7
28
|
// 构造 16 字节 key(右填充 \x00)
|
|
8
|
-
const keyBuf =
|
|
9
|
-
Buffer.from(appKey, "utf-8").copy(keyBuf, 0, 0, Math.min(appKey.length, 16));
|
|
29
|
+
const keyBuf = buildKey(appKey);
|
|
10
30
|
const encBuf = Buffer.from(encBase64, "base64");
|
|
11
31
|
// AES-128-ECB,关闭自动 padding 后手动 PKCS7 unpad
|
|
12
32
|
const decipher = createDecipheriv("aes-128-ecb", keyBuf, null);
|
package/dist/src/core/aes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aes.js","sourceRoot":"","sources":["../../../src/core/aes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"aes.js","sourceRoot":"","sources":["../../../src/core/aes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/D,gCAAgC;AAChC,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAc;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,8BAA8B;IAC9B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,MAAc;IAC1D,yBAAyB;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhD,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7E,cAAc;IACd,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { resolveDmGroupAccessWithLists } from "openclaw/plugin-sdk/channel-policy";
|
|
2
|
+
// Preserve legacy sender authorization while using retained public SDK exports.
|
|
3
|
+
export async function resolveSenderCommandAuthorization(params) {
|
|
4
|
+
const shouldComputeAuth = params.shouldComputeCommandAuthorized(params.rawBody, params.cfg);
|
|
5
|
+
const storeAllowFrom = !params.isGroup && params.dmPolicy !== "allowlist" && params.dmPolicy !== "open"
|
|
6
|
+
? await params.readAllowFromStore().catch(() => []) : [];
|
|
7
|
+
const access = resolveDmGroupAccessWithLists({
|
|
8
|
+
isGroup: params.isGroup, dmPolicy: params.dmPolicy, groupPolicy: "allowlist",
|
|
9
|
+
allowFrom: params.configuredAllowFrom, groupAllowFrom: params.configuredGroupAllowFrom ?? [],
|
|
10
|
+
storeAllowFrom, isSenderAllowed: (list) => params.isSenderAllowed(params.senderId, list),
|
|
11
|
+
});
|
|
12
|
+
const { effectiveAllowFrom, effectiveGroupAllowFrom } = access;
|
|
13
|
+
const senderAllowed = params.isSenderAllowed(params.senderId, params.isGroup ? effectiveGroupAllowFrom : effectiveAllowFrom);
|
|
14
|
+
return { commandAuthorized: shouldComputeAuth
|
|
15
|
+
? params.resolveCommandAuthorizedFromAuthorizers?.({ useAccessGroups: true, authorizers: [
|
|
16
|
+
{ configured: effectiveAllowFrom.length > 0, allowed: params.isSenderAllowed(params.senderId, effectiveAllowFrom) },
|
|
17
|
+
{ configured: effectiveGroupAllowFrom.length > 0, allowed: params.isSenderAllowed(params.senderId, effectiveGroupAllowFrom) },
|
|
18
|
+
] }) ?? senderAllowed
|
|
19
|
+
: undefined };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=command-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-auth.js","sourceRoot":"","sources":["../../../src/core/command-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,MASvD;IACC,MAAM,iBAAiB,GAAG,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM;QACrG,CAAC,CAAC,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC3C,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW;QAC5E,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,wBAAwB,IAAI,EAAE;QAC5F,cAAc,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;KACzF,CAAC,CAAC;IACH,MAAM,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB;YAC3C,CAAC,CAAC,MAAM,CAAC,uCAAuC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE;oBACrF,EAAE,UAAU,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE;oBACnH,EAAE,UAAU,EAAE,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EAAE;iBAC9H,EAAE,CAAC,IAAI,aAAa;YACvB,CAAC,CAAC,SAAS,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* - 工具层:无需显式传参即可感知当前对话上下文
|
|
10
10
|
*/
|
|
11
11
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
12
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
13
|
+
import { getYachConfig } from "./runtime.js";
|
|
12
14
|
// ── AsyncLocalStorage ─────────────────────────────────────────────────────
|
|
13
15
|
const store = new AsyncLocalStorage();
|
|
14
16
|
// ── 公开 API ──────────────────────────────────────────────────────────────
|
|
@@ -28,4 +30,83 @@ export function ticketElapsed() {
|
|
|
28
30
|
const t = store.getStore();
|
|
29
31
|
return t ? Date.now() - t.startTime : 0;
|
|
30
32
|
}
|
|
33
|
+
// ── ToolContext 兜底 ──────────────────────────────────────────────────────
|
|
34
|
+
//
|
|
35
|
+
// 9.5 起核心在独立异步上下文中执行插件工具,handler 里 withYachTicket() 注入的
|
|
36
|
+
// ALS 上下文在工具 execute 时已不可见(实测 hasTicket=false)。核心同时把会话
|
|
37
|
+
// 身份经 OpenClawPluginToolContext(工厂形式注册时下发)带给插件:
|
|
38
|
+
// requesterSenderId → 发送方 yach userId
|
|
39
|
+
// deliveryContext.{channel,to,accountId} → 渠道 / 目标 / 账号
|
|
40
|
+
// sessionKey → agent:main:yach:{account}:{direct|group}:{peer}
|
|
41
|
+
// 因此工具执行时若 ALS 无 ticket,就用该 ctx 重建一个。
|
|
42
|
+
//
|
|
43
|
+
// 注意:仅限「用户消息触发的工具调用」——requesterSenderId 来自核心入站的
|
|
44
|
+
// 真实发送者。cron / subagent / heartbeat 触发的 run 核心明确不设置 senderId
|
|
45
|
+
// (requesterSenderId 为 undefined),此时不重建(返回 undefined),工具走
|
|
46
|
+
// 现有「不在消息上下文中」降级路径,绝不伪造发送者身份。
|
|
47
|
+
/**
|
|
48
|
+
* 把核心下发的账号标识(appKey / accountId)解析为插件侧账号 ID:
|
|
49
|
+
* 先按 appKey 匹配 channels.yach.accounts,命中返回其 ID;否则原样归一化。
|
|
50
|
+
*/
|
|
51
|
+
function resolveAccountIdForToolContext(ctx) {
|
|
52
|
+
const raw = ctx.deliveryContext?.accountId ?? ctx.agentAccountId;
|
|
53
|
+
if (!raw)
|
|
54
|
+
return DEFAULT_ACCOUNT_ID;
|
|
55
|
+
try {
|
|
56
|
+
const cfg = getYachConfig();
|
|
57
|
+
const accounts = cfg?.channels?.yach?.accounts;
|
|
58
|
+
if (accounts && typeof accounts === "object") {
|
|
59
|
+
for (const [id, acct] of Object.entries(accounts)) {
|
|
60
|
+
if (acct?.appKey && acct.appKey === raw)
|
|
61
|
+
return normalizeAccountId(id);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// config 不可用(runtime 未初始化)时降级为原样归一化
|
|
67
|
+
}
|
|
68
|
+
return normalizeAccountId(raw);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 用 OpenClawPluginToolContext 重建 YachTicket(ALS 兜底)。
|
|
72
|
+
*
|
|
73
|
+
* 仅当 ctx 明确属于 yach 渠道且 requesterSenderId 存在(真实用户消息触发)时
|
|
74
|
+
* 重建;cron/subagent 等无发送者场景返回 undefined,不伪造发送者身份。
|
|
75
|
+
*/
|
|
76
|
+
export function rebuildTicketFromToolContext(ctx) {
|
|
77
|
+
if (!ctx)
|
|
78
|
+
return undefined;
|
|
79
|
+
const delivery = ctx.deliveryContext;
|
|
80
|
+
if (delivery?.channel && delivery.channel !== "yach")
|
|
81
|
+
return undefined;
|
|
82
|
+
// 发送者必须来自核心入站的真实 requesterSenderId;
|
|
83
|
+
// 缺失(cron/subagent/heartbeat)时不从 sessionKey 猜测,避免误用会话归属用户。
|
|
84
|
+
const senderId = ctx.requesterSenderId;
|
|
85
|
+
if (!senderId)
|
|
86
|
+
return undefined;
|
|
87
|
+
const to = delivery?.to ?? "";
|
|
88
|
+
const isGroup = to.startsWith("group:");
|
|
89
|
+
const toId = isGroup ? to.replace(/^group:/, "") : senderId;
|
|
90
|
+
return {
|
|
91
|
+
// msgId 无来源时用 sessionId 保证唯一性(仅用于日志关联/合成消息前缀)
|
|
92
|
+
msgId: ctx.sessionId ?? "tool-ctx",
|
|
93
|
+
toId,
|
|
94
|
+
senderId,
|
|
95
|
+
accountId: resolveAccountIdForToolContext(ctx),
|
|
96
|
+
conversationType: isGroup ? "2" : "1",
|
|
97
|
+
startTime: Date.now(),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 工具执行上下文兜底包装:ALS 已有 ticket 则直接执行;
|
|
102
|
+
* 否则用 ToolContext 重建并注入,使工具内部 getYachTicket() 始终有值。
|
|
103
|
+
*/
|
|
104
|
+
export async function runToolWithContext(ctx, fn) {
|
|
105
|
+
if (getYachTicket())
|
|
106
|
+
return fn();
|
|
107
|
+
const ticket = rebuildTicketFromToolContext(ctx);
|
|
108
|
+
if (!ticket)
|
|
109
|
+
return fn();
|
|
110
|
+
return withYachTicket(ticket, fn);
|
|
111
|
+
}
|
|
31
112
|
//# sourceMappingURL=yach-ticket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yach-ticket.js","sourceRoot":"","sources":["../../../src/core/yach-ticket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"yach-ticket.js","sourceRoot":"","sources":["../../../src/core/yach-ticket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildAgentMediaPayload } from "openclaw/plugin-sdk/media-runtime";
|
|
2
|
-
import { resolveSenderCommandAuthorization } from "
|
|
2
|
+
import { resolveSenderCommandAuthorization } from "../../core/command-auth.js";
|
|
3
3
|
import { isNormalizedSenderAllowed } from "openclaw/plugin-sdk/allow-from";
|
|
4
4
|
import { yachLogger } from "../../core/yach-logger.js";
|
|
5
5
|
import { reportEvent } from "../../core/reporter.js";
|
|
@@ -158,13 +158,14 @@ export async function processMessage(params) {
|
|
|
158
158
|
OwnerAllowFrom: isGroup ? [] : [senderId],
|
|
159
159
|
...mediaPayload,
|
|
160
160
|
});
|
|
161
|
-
const { dispatcher, replyOptions, markDispatchIdle } = createYachReplyDispatcher({
|
|
161
|
+
const { dispatcher, replyOptions, markDispatchIdle } = await createYachReplyDispatcher({
|
|
162
162
|
cfg: effectiveCfg,
|
|
163
163
|
agentId: route.agentId,
|
|
164
164
|
chatId,
|
|
165
165
|
replyToMessageId: message.quoteMsgId ?? message.msgIdClient,
|
|
166
166
|
accountId: account.appKey,
|
|
167
167
|
fromUserId: senderId,
|
|
168
|
+
sessionKey: route.sessionKey,
|
|
168
169
|
});
|
|
169
170
|
try {
|
|
170
171
|
const { queuedFinal, counts } = await core.channel.reply.withReplyDispatcher({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../src/messaging/inbound/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../src/messaging/inbound/dispatcher.ts"],"names":[],"mappings":"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"}
|