@xgjktech/xg_cwork_im 1.17.31 → 1.17.33
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 +484 -484
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/src/action-run-event.d.ts +14 -2
- package/dist/src/action-run-event.d.ts.map +1 -1
- package/dist/src/action-run-event.js +33 -10
- package/dist/src/action-run-event.js.map +1 -1
- package/dist/src/action-run-event.test.js +39 -7
- package/dist/src/action-run-event.test.js.map +1 -1
- package/dist/src/build-project-prompt.test.js +18 -18
- package/dist/src/deliver-text.test.js +22 -22
- package/dist/src/gateway-session-queue.d.ts +6 -2
- package/dist/src/gateway-session-queue.d.ts.map +1 -1
- package/dist/src/gateway-session-queue.js +21 -78
- package/dist/src/gateway-session-queue.js.map +1 -1
- package/dist/src/modified-file-push-tracker.d.ts +24 -0
- package/dist/src/modified-file-push-tracker.d.ts.map +1 -0
- package/dist/src/modified-file-push-tracker.js +125 -0
- package/dist/src/modified-file-push-tracker.js.map +1 -0
- package/dist/src/plan-store-access.test.js +9 -9
- package/dist/src/progress-display.d.ts +77 -0
- package/dist/src/progress-display.d.ts.map +1 -0
- package/dist/src/progress-display.js +420 -0
- package/dist/src/progress-display.js.map +1 -0
- package/dist/src/send-file-event.d.ts +26 -0
- package/dist/src/send-file-event.d.ts.map +1 -0
- package/dist/src/send-file-event.js +33 -0
- package/dist/src/send-file-event.js.map +1 -0
- package/dist/src/send-file-event.test.d.ts +2 -0
- package/dist/src/send-file-event.test.d.ts.map +1 -0
- package/dist/src/send-file-event.test.js +86 -0
- package/dist/src/send-file-event.test.js.map +1 -0
- package/dist/src/send-file-tool.d.ts.map +1 -1
- package/dist/src/send-file-tool.js +9 -0
- package/dist/src/send-file-tool.js.map +1 -1
- package/dist/src/subagent-delivery-phase.d.ts +10 -0
- package/dist/src/subagent-delivery-phase.d.ts.map +1 -0
- package/dist/src/subagent-delivery-phase.js +4 -0
- package/dist/src/subagent-delivery-phase.js.map +1 -0
- package/dist/src/subagent-delivery-phase.test.d.ts +2 -0
- package/dist/src/subagent-delivery-phase.test.d.ts.map +1 -0
- package/dist/src/subagent-delivery-phase.test.js +12 -0
- package/dist/src/subagent-delivery-phase.test.js.map +1 -0
- package/dist/src/turn-deliver-buffer.test.js +25 -25
- package/openclaw.plugin.json +27 -27
- package/package.json +78 -78
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAI5D,OAAO,EAAE,uCAAuC,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAI5D,OAAO,EAAE,uCAAuC,EAAE,MAAM,oCAAoC,CAAC;AAoC7F,QAAA,MAAM,MAAM,EAAE,qBA2Kb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,21 @@ import { sendActionRunEvent } from "./src/action-run-event.js";
|
|
|
22
22
|
import { accountReconciler } from "./src/account-reconciler.js";
|
|
23
23
|
import { findActiveRoundForSubagent } from "./src/active-round-registry.js";
|
|
24
24
|
export { XG_IM_RECOMMENDED_CHANNEL_SYSTEM_PROMPT } from "./src/recommended-system-prompt.js";
|
|
25
|
+
/**
|
|
26
|
+
* 判断插件是否运行在 openclaw gateway 进程内。
|
|
27
|
+
* openclaw 通过 `process.title` 区分进程角色:gateway 进程为 `openclaw-gateway`,
|
|
28
|
+
* `openclaw plugins …` 拉起的插件宿主为 `openclaw-plugins`,普通 CLI 为 `openclaw`。
|
|
29
|
+
* 非 gateway 进程里 `runtime.subagent` 的 gateway 绑定不存在,跑监控必然卡死,因此应跳过通道运行。
|
|
30
|
+
*/
|
|
31
|
+
function isGatewayProcess() {
|
|
32
|
+
const title = (process.title || "").trim();
|
|
33
|
+
if (/gateway/i.test(title))
|
|
34
|
+
return true;
|
|
35
|
+
// 明确非 gateway:插件宿主(openclaw plugins …)、普通 CLI。
|
|
36
|
+
if (/plugins/i.test(title) || /^openclaw$/i.test(title))
|
|
37
|
+
return false;
|
|
38
|
+
return true; // 未知/其它 → 保守当作 gateway,避免误伤正常环境
|
|
39
|
+
}
|
|
25
40
|
const plugin = {
|
|
26
41
|
id: "xg_cwork_im",
|
|
27
42
|
name: "XG CWork IM Channel",
|
|
@@ -37,6 +52,10 @@ const plugin = {
|
|
|
37
52
|
// 注意不能用 noopPrefixes:6.x 的 isNoopReloadPlan 会把 noop 计划提前 return,运行时快照不更新,
|
|
38
53
|
// Reconciler 轮询 api.runtime.config.current() 将永远看不到账号变更。
|
|
39
54
|
api.registerReload({ hotPrefixes: ["channels.xg_cwork_im"] });
|
|
55
|
+
if (!isGatewayProcess()) {
|
|
56
|
+
console.warn(`[xg_cwork_im] 非 gateway 进程(process.title=${process.title || "(unknown)"}),跳过通道连接与 subagent 监控`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
40
59
|
accountReconciler.start();
|
|
41
60
|
api.on("gateway_stop", async () => {
|
|
42
61
|
await accountReconciler.stopAll();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,uCAAuC,EAAE,MAAM,oCAAoC,CAAC;AAsB7F,MAAM,MAAM,GAA0B;IAClC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,2CAA2C;IACxD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC3B,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,2BAA2B,CAAC,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAExD,qDAAqD;QACrD,0EAA0E;QAC1E,yDAAyD;QACzD,GAAG,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { ActionDispatchEvent } from "./action-store-access.js";
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* 构造 ACTION_DISPATCH 的前端数据,只保留前端消费动作所需的业务字段。
|
|
4
|
+
* `origin` 是内部路由信息,`event` 与 `version` 不属于该事件的 wire 契约,均不透传。
|
|
5
|
+
*/
|
|
6
|
+
export declare function toWireAction(action: ActionDispatchEvent): {
|
|
7
|
+
eventId: string;
|
|
8
|
+
action: string;
|
|
9
|
+
topic?: string;
|
|
10
|
+
target: string;
|
|
11
|
+
status: ActionDispatchEvent["status"];
|
|
12
|
+
scopeControl?: ActionDispatchEvent["scopeControl"];
|
|
13
|
+
payload: ActionDispatchEvent["payload"];
|
|
14
|
+
timestamp: string;
|
|
15
|
+
};
|
|
4
16
|
/**
|
|
5
17
|
* 将权威 action 状态发给前端。必须保持同步返回:网络发送在内部 fire-and-forget。
|
|
6
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-run-event.d.ts","sourceRoot":"","sources":["../../src/action-run-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"action-run-event.d.ts","sourceRoot":"","sources":["../../src/action-run-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAsBpE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACrB,CAWA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAsBpE"}
|
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
import { getPlanWsClient } from "./plan-ws-registry.js";
|
|
2
2
|
const LOG_PREFIX = "[xg_cwork_im] [action-run-event]";
|
|
3
|
-
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* action 存储契约为 `payload.data`,但当前上游会将实际业务参数再包进 `payload.data.data`。
|
|
8
|
+
* 仅当外层没有其他字段时才解包,防止丢失未来上游追加的元数据。
|
|
9
|
+
*/
|
|
10
|
+
function toWirePayload(payload) {
|
|
11
|
+
const outerData = payload.data;
|
|
12
|
+
const nestedData = outerData.data;
|
|
13
|
+
if (Object.keys(outerData).length === 1 && isRecord(nestedData)) {
|
|
14
|
+
return { data: nestedData };
|
|
15
|
+
}
|
|
16
|
+
return payload;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 构造 ACTION_DISPATCH 的前端数据,只保留前端消费动作所需的业务字段。
|
|
20
|
+
* `origin` 是内部路由信息,`event` 与 `version` 不属于该事件的 wire 契约,均不透传。
|
|
21
|
+
*/
|
|
4
22
|
export function toWireAction(action) {
|
|
5
|
-
|
|
6
|
-
|
|
23
|
+
return {
|
|
24
|
+
eventId: action.eventId,
|
|
25
|
+
action: action.action,
|
|
26
|
+
...(action.topic ? { topic: action.topic } : {}),
|
|
27
|
+
target: action.target,
|
|
28
|
+
status: action.status,
|
|
29
|
+
...(action.scopeControl ? { scopeControl: action.scopeControl } : {}),
|
|
30
|
+
payload: toWirePayload(action.payload),
|
|
31
|
+
timestamp: action.timestamp,
|
|
32
|
+
};
|
|
7
33
|
}
|
|
8
34
|
/**
|
|
9
35
|
* 将权威 action 状态发给前端。必须保持同步返回:网络发送在内部 fire-and-forget。
|
|
@@ -12,22 +38,19 @@ export function sendActionRunEvent(action) {
|
|
|
12
38
|
const channel = action.origin?.channel;
|
|
13
39
|
const to = action.origin?.to;
|
|
14
40
|
if (channel !== "xg_cwork_im" || !to) {
|
|
15
|
-
console.warn(`${LOG_PREFIX} action.origin 缺失或非本通道,跳过
|
|
41
|
+
console.warn(`${LOG_PREFIX} action.origin 缺失或非本通道,跳过 ACTION_DISPATCH eventId=${action.eventId}`);
|
|
16
42
|
return;
|
|
17
43
|
}
|
|
18
44
|
const target = getPlanWsClient(to);
|
|
19
45
|
if (!target) {
|
|
20
|
-
console.warn(`${LOG_PREFIX} 未登记 WS client,跳过
|
|
46
|
+
console.warn(`${LOG_PREFIX} 未登记 WS client,跳过 ACTION_DISPATCH eventId=${action.eventId} groupId=${to}`);
|
|
21
47
|
return;
|
|
22
48
|
}
|
|
23
49
|
void target.client.sendEvent({
|
|
24
50
|
groupId: to,
|
|
25
51
|
replyToMsgId: target.replyToMsgId,
|
|
26
|
-
event: "
|
|
27
|
-
data:
|
|
28
|
-
displayText: `动作「${action.action}」已完成:${action.target}`,
|
|
29
|
-
summary: toWireAction(action),
|
|
30
|
-
},
|
|
52
|
+
event: "ACTION_DISPATCH",
|
|
53
|
+
data: toWireAction(action),
|
|
31
54
|
}).catch((err) => {
|
|
32
55
|
console.warn(`${LOG_PREFIX} 发送失败 eventId=${action.eventId} groupId=${to}: ${String(err)}`);
|
|
33
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-run-event.js","sourceRoot":"","sources":["../../src/action-run-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,UAAU,GAAG,kCAAkC,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"action-run-event.js","sourceRoot":"","sources":["../../src/action-run-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,UAAU,GAAG,kCAAkC,CAAC;AAEtD,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAuC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC;IAClC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IAUpD,OAAO;QACH,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC9B,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,qDAAqD,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,6CAA6C,MAAM,CAAC,OAAO,YAAY,EAAE,EAAE,CAAC,CAAC;QACvG,OAAO;IACX,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACzB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,iBAAiB,MAAM,CAAC,OAAO,YAAY,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -21,18 +21,40 @@ function makeRecordingClient() {
|
|
|
21
21
|
}
|
|
22
22
|
beforeEach(() => resetPlanWsRegistryForTest());
|
|
23
23
|
describe("sendActionRunEvent", () => {
|
|
24
|
-
it("按 origin 路由为
|
|
24
|
+
it("按 origin 路由为 ACTION_DISPATCH,透传精简 action 字段且剥离 origin", () => {
|
|
25
25
|
const { client, calls } = makeRecordingClient();
|
|
26
26
|
setPlanWsClient("g-1", client, "msg-1");
|
|
27
|
-
const action = makeAction({
|
|
27
|
+
const action = makeAction({
|
|
28
|
+
origin: { channel: "xg_cwork_im", to: "g-1", sessionKey: "secret" },
|
|
29
|
+
payload: {
|
|
30
|
+
data: {
|
|
31
|
+
data: {
|
|
32
|
+
target_kind: "ops",
|
|
33
|
+
trigger: "user_request",
|
|
34
|
+
source: "xg_cwork_im",
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
28
39
|
sendActionRunEvent(action);
|
|
29
40
|
assert.equal(calls.length, 1);
|
|
30
|
-
assert.equal(calls[0].event, "
|
|
41
|
+
assert.equal(calls[0].event, "ACTION_DISPATCH");
|
|
31
42
|
assert.equal(calls[0].groupId, "g-1");
|
|
32
|
-
|
|
33
|
-
assert.
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
assert.equal(calls[0].replyToMsgId, "msg-1");
|
|
44
|
+
assert.deepEqual(calls[0].data, {
|
|
45
|
+
eventId: "evt-1",
|
|
46
|
+
action: "ui_refresh",
|
|
47
|
+
target: "order_detail",
|
|
48
|
+
status: "completed",
|
|
49
|
+
payload: {
|
|
50
|
+
data: {
|
|
51
|
+
target_kind: "ops",
|
|
52
|
+
trigger: "user_request",
|
|
53
|
+
source: "xg_cwork_im",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
timestamp: "2026-08-13T00:00:00.000Z",
|
|
57
|
+
});
|
|
36
58
|
assert.equal(action.origin?.sessionKey, "secret", "不 mutate 入参");
|
|
37
59
|
});
|
|
38
60
|
it("缺少当前通道 origin 时不发送", () => {
|
|
@@ -45,7 +67,17 @@ describe("sendActionRunEvent", () => {
|
|
|
45
67
|
const action = makeAction({ origin: { channel: "xg_cwork_im", to: "g-1" } });
|
|
46
68
|
const wire = toWireAction(action);
|
|
47
69
|
assert.equal("origin" in wire, false);
|
|
70
|
+
assert.equal("event" in wire, false);
|
|
71
|
+
assert.equal("version" in wire, false);
|
|
48
72
|
assert.deepEqual(action.origin, { channel: "xg_cwork_im", to: "g-1" });
|
|
49
73
|
});
|
|
74
|
+
it("payload.data 含其他字段时不解包,避免丢失上游元数据", () => {
|
|
75
|
+
const wire = toWireAction(makeAction({
|
|
76
|
+
payload: { data: { data: { id: "ORD-1" }, source: "upstream" } },
|
|
77
|
+
}));
|
|
78
|
+
assert.deepEqual(wire.payload, {
|
|
79
|
+
data: { data: { id: "ORD-1" }, source: "upstream" },
|
|
80
|
+
});
|
|
81
|
+
});
|
|
50
82
|
});
|
|
51
83
|
//# sourceMappingURL=action-run-event.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-run-event.test.js","sourceRoot":"","sources":["../../src/action-run-event.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzE,SAAS,UAAU,CAAC,YAA0C,EAAE;IAC5D,OAAO;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc;QACxF,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B;QAC1G,GAAG,SAAS;KACf,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB;IACxB,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,OAAO;QACH,KAAK;QACL,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YAClF,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACxE;KACJ,CAAC;AACN,CAAC;AAED,UAAU,CAAC,GAAG,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"action-run-event.test.js","sourceRoot":"","sources":["../../src/action-run-event.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzE,SAAS,UAAU,CAAC,YAA0C,EAAE;IAC5D,OAAO;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc;QACxF,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B;QAC1G,GAAG,SAAS;KACf,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB;IACxB,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,OAAO;QACH,KAAK;QACL,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YAClF,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACxE;KACJ,CAAC;AACN,CAAC;AAED,UAAU,CAAC,GAAG,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC;YACtB,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;YACnE,OAAO,EAAE;gBACL,IAAI,EAAE;oBACF,IAAI,EAAE;wBACF,WAAW,EAAE,KAAK;wBAClB,OAAO,EAAE,cAAc;wBACvB,MAAM,EAAE,aAAa;qBACxB;iBACJ;aACJ;SACJ,CAAC,CAAC;QAEH,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5B,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE;gBACL,IAAI,EAAE;oBACF,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,aAAa;iBACxB;aACJ;YACD,SAAS,EAAE,0BAA0B;SACxC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;YACjC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;SACnE,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SACtD,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -76,24 +76,24 @@ describe("buildAgentContextPromptBlock nasVolumes", () => {
|
|
|
76
76
|
background,
|
|
77
77
|
},
|
|
78
78
|
});
|
|
79
|
-
assert.equal(result.block, `## 当前项目
|
|
80
|
-
|
|
81
|
-
### 本次会话文件目录
|
|
82
|
-
本次会话需要读取的文件位于以下已授权目录:
|
|
83
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读)
|
|
84
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读)
|
|
85
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写)
|
|
86
|
-
- 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
|
|
87
|
-
|
|
88
|
-
### 目录用途
|
|
89
|
-
- **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
|
|
90
|
-
|
|
91
|
-
### 操作约束
|
|
92
|
-
- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
|
|
93
|
-
- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
|
|
94
|
-
|
|
95
|
-
## 项目背景
|
|
96
|
-
|
|
79
|
+
assert.equal(result.block, `## 当前项目
|
|
80
|
+
|
|
81
|
+
### 本次会话文件目录
|
|
82
|
+
本次会话需要读取的文件位于以下已授权目录:
|
|
83
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读)
|
|
84
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读)
|
|
85
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写)
|
|
86
|
+
- 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
|
|
87
|
+
|
|
88
|
+
### 目录用途
|
|
89
|
+
- **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
|
|
90
|
+
|
|
91
|
+
### 操作约束
|
|
92
|
+
- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
|
|
93
|
+
- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
|
|
94
|
+
|
|
95
|
+
## 项目背景
|
|
96
|
+
|
|
97
97
|
${background}`);
|
|
98
98
|
});
|
|
99
99
|
});
|
|
@@ -2,30 +2,30 @@ import assert from "node:assert/strict";
|
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
3
|
import { normalizeDeliverComparableText, shouldOmitDuplicateFileCaption, shouldSuppressDuplicateTextDeliver, stripMediaDirectiveLines, stripModelUsageFooter, } from "./deliver-text.js";
|
|
4
4
|
// 生产 incident 回归:侯桐 2026-07-10 终态三连发(空行/footer 微差)
|
|
5
|
-
const HOUTONG_BODY_LOOSE = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
|
|
6
|
-
|
|
7
|
-
我已经重新生成了一版**纯 Markdown 可读版**:
|
|
8
|
-
|
|
9
|
-
- 不用 SVG
|
|
10
|
-
- 不用 Mermaid
|
|
11
|
-
- 不用图片
|
|
12
|
-
- 全部用 Markdown 表格 + 文本流程图 + 状态表表达
|
|
13
|
-
|
|
14
|
-
这样在 IM 文件预览里也能直接看懂完整流程。
|
|
15
|
-
|
|
16
|
-
新文件:
|
|
17
|
-
|
|
5
|
+
const HOUTONG_BODY_LOOSE = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
|
|
6
|
+
|
|
7
|
+
我已经重新生成了一版**纯 Markdown 可读版**:
|
|
8
|
+
|
|
9
|
+
- 不用 SVG
|
|
10
|
+
- 不用 Mermaid
|
|
11
|
+
- 不用图片
|
|
12
|
+
- 全部用 Markdown 表格 + 文本流程图 + 状态表表达
|
|
13
|
+
|
|
14
|
+
这样在 IM 文件预览里也能直接看懂完整流程。
|
|
15
|
+
|
|
16
|
+
新文件:
|
|
17
|
+
|
|
18
18
|
-----`;
|
|
19
|
-
const HOUTONG_BODY_TIGHT = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
|
|
20
|
-
我已经重新生成了一版**纯 Markdown 可读版**:
|
|
21
|
-
- 不用 SVG
|
|
22
|
-
- 不用 Mermaid
|
|
23
|
-
- 不用图片
|
|
24
|
-
- 全部用 Markdown 表格 + 文本流程图 + 状态表表达
|
|
25
|
-
这样在 IM 文件预览里也能直接看懂完整流程。
|
|
19
|
+
const HOUTONG_BODY_TIGHT = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
|
|
20
|
+
我已经重新生成了一版**纯 Markdown 可读版**:
|
|
21
|
+
- 不用 SVG
|
|
22
|
+
- 不用 Mermaid
|
|
23
|
+
- 不用图片
|
|
24
|
+
- 全部用 Markdown 表格 + 文本流程图 + 状态表表达
|
|
25
|
+
这样在 IM 文件预览里也能直接看懂完整流程。
|
|
26
26
|
新文件:`;
|
|
27
|
-
const HOUTONG_BODY_WITH_FOOTER = `${HOUTONG_BODY_TIGHT}
|
|
28
|
-
|
|
27
|
+
const HOUTONG_BODY_WITH_FOOTER = `${HOUTONG_BODY_TIGHT}
|
|
28
|
+
|
|
29
29
|
_🟡 ↑111k ↓164 · 63%ctx · openai/gpt-5.5_`;
|
|
30
30
|
describe("stripMediaDirectiveLines", () => {
|
|
31
31
|
it("removes MEDIA directive lines", () => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 历史会话派发调度层。
|
|
3
|
+
* 注意:插件内部已移除阻塞式 FIFO 队列与租约占用,任务排队、插话与中断统一交由 OpenClaw 原生管理。
|
|
3
4
|
*/
|
|
4
5
|
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
5
6
|
import type { Logger } from "./channel-log.js";
|
|
@@ -7,6 +8,7 @@ import type { ImStreamClient } from "./connection.js";
|
|
|
7
8
|
import type { BotIdentity, WsMessageParams, XgImConfig } from "./types.js";
|
|
8
9
|
import type { AutoRouteResult } from "./auto-model-router.js";
|
|
9
10
|
import type { InboundTrigger } from "./inbound-terminal-state.js";
|
|
11
|
+
import type { NasVolume } from "./agent-context-types.js";
|
|
10
12
|
export interface PendingDispatch {
|
|
11
13
|
route: {
|
|
12
14
|
sessionKey: string;
|
|
@@ -16,6 +18,8 @@ export interface PendingDispatch {
|
|
|
16
18
|
params: WsMessageParams;
|
|
17
19
|
currentIdentity: BotIdentity;
|
|
18
20
|
agentWorkspaceDir?: string;
|
|
21
|
+
/** 本会话 NAS 挂载声明;同一 sessionKey 下必须保持不变。 */
|
|
22
|
+
nasVolumes?: NasVolume[];
|
|
19
23
|
/** 本条消息单轮模型(OpenClaw replyOptions.modelOverride) */
|
|
20
24
|
modelOverride?: string;
|
|
21
25
|
/** 本条消息单轮推理等级(OpenClaw replyOptions.thinkingLevelOverride;用户显式 /think 时不设) */
|
|
@@ -24,7 +28,7 @@ export interface PendingDispatch {
|
|
|
24
28
|
autoRouteMeta?: AutoRouteResult;
|
|
25
29
|
/** 入站触发源 */
|
|
26
30
|
inboundTrigger?: InboundTrigger;
|
|
27
|
-
/** /stop:立即交给 OpenClaw
|
|
31
|
+
/** /stop:立即交给 OpenClaw */
|
|
28
32
|
skipSessionQueue?: boolean;
|
|
29
33
|
}
|
|
30
34
|
export declare function createRunWithSessionQueue(options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-session-queue.d.ts","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gateway-session-queue.d.ts","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAC/C,cAAc,EAAE,MAAM,UAAU,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,GAAG,CAAC;IACR,WAAW,EAAE,MAAM,cAAc,CAAC;CACrC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA2BhG"}
|
|
@@ -1,86 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 历史会话派发调度层。
|
|
3
|
+
* 注意:插件内部已移除阻塞式 FIFO 队列与租约占用,任务排队、插话与中断统一交由 OpenClaw 原生管理。
|
|
3
4
|
*/
|
|
4
5
|
import { dispatchMentionedReply } from "./dispatch-mentioned-reply.js";
|
|
5
|
-
import { sendTextMessage } from "./send-service.js";
|
|
6
6
|
export function createRunWithSessionQueue(options) {
|
|
7
7
|
const { configProvider, log, logPrefix, rt, cfgProvider } = options;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
log.info(`${logPrefix} [queue] Session ${sessionKey} busy, queued message (pos=${queuePos})`);
|
|
28
|
-
sendTextMessage(configProvider(), pending.currentIdentity.token, pending.params.groupId, `收到,当前正在处理其他任务,您的消息已排队(队列第 ${queuePos} 位),处理完成后将自动回复。`, [pending.params.userInfo?.id ?? ""], log).catch((notifyErr) => {
|
|
29
|
-
log.warn(`${logPrefix} [queue] Failed to send queue notification: ${String(notifyErr)}`);
|
|
30
|
-
});
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (pending.skipSessionQueue) {
|
|
34
|
-
const hadLease = sessionBusyLease.has(sessionKey);
|
|
35
|
-
if (hadLease) {
|
|
36
|
-
sessionBusyLease.delete(sessionKey);
|
|
37
|
-
const dropped = sessionQueues.get(sessionKey)?.length ?? 0;
|
|
38
|
-
sessionQueues.delete(sessionKey);
|
|
39
|
-
log.info(`${logPrefix} [queue] /stop: invalidated busy lease, cleared fifo (droppedQueued=${dropped})`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
let myLease;
|
|
43
|
-
if (!pending.skipSessionQueue) {
|
|
44
|
-
myLease = Symbol("xg_cwork_im-session-busy");
|
|
45
|
-
sessionBusyLease.set(sessionKey, myLease);
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
await dispatchMentionedReply({
|
|
49
|
-
rt,
|
|
50
|
-
cfg: cfgProvider(),
|
|
51
|
-
config: configProvider(),
|
|
52
|
-
log,
|
|
53
|
-
logPrefix,
|
|
54
|
-
route: pending.route,
|
|
55
|
-
inboundCtx: pending.inboundCtx,
|
|
56
|
-
params: pending.params,
|
|
57
|
-
currentIdentity: pending.currentIdentity,
|
|
58
|
-
streamClient,
|
|
59
|
-
agentWorkspaceDir: pending.agentWorkspaceDir,
|
|
60
|
-
modelOverride: pending.modelOverride,
|
|
61
|
-
thinkingLevelOverride: pending.thinkingLevelOverride,
|
|
62
|
-
autoRouteMeta: pending.autoRouteMeta,
|
|
63
|
-
inboundTrigger: pending.inboundTrigger,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
finally {
|
|
67
|
-
if (!pending.skipSessionQueue && myLease !== undefined) {
|
|
68
|
-
if (sessionBusyLease.get(sessionKey) === myLease) {
|
|
69
|
-
sessionBusyLease.delete(sessionKey);
|
|
70
|
-
const queue = sessionQueues.get(sessionKey);
|
|
71
|
-
if (queue && queue.length > 0) {
|
|
72
|
-
const next = queue.shift();
|
|
73
|
-
if (queue.length === 0)
|
|
74
|
-
sessionQueues.delete(sessionKey);
|
|
75
|
-
log.info(`${logPrefix} [queue] Dispatching next queued message for session ${sessionKey} (remaining=${queue.length})`);
|
|
76
|
-
runWithSessionQueue(sessionKey, next, streamClient).catch((err) => {
|
|
77
|
-
log.error(`${logPrefix} [queue] Error processing queued dispatch: ${String(err)}`);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
8
|
+
return async (_sessionKey, pending, streamClient) => {
|
|
9
|
+
await dispatchMentionedReply({
|
|
10
|
+
rt,
|
|
11
|
+
cfg: cfgProvider(),
|
|
12
|
+
config: configProvider(),
|
|
13
|
+
log,
|
|
14
|
+
logPrefix,
|
|
15
|
+
route: pending.route,
|
|
16
|
+
inboundCtx: pending.inboundCtx,
|
|
17
|
+
params: pending.params,
|
|
18
|
+
currentIdentity: pending.currentIdentity,
|
|
19
|
+
streamClient,
|
|
20
|
+
agentWorkspaceDir: pending.agentWorkspaceDir,
|
|
21
|
+
nasVolumes: pending.nasVolumes,
|
|
22
|
+
modelOverride: pending.modelOverride,
|
|
23
|
+
thinkingLevelOverride: pending.thinkingLevelOverride,
|
|
24
|
+
autoRouteMeta: pending.autoRouteMeta,
|
|
25
|
+
inboundTrigger: pending.inboundTrigger,
|
|
26
|
+
});
|
|
83
27
|
};
|
|
84
|
-
return runWithSessionQueue;
|
|
85
28
|
}
|
|
86
29
|
//# sourceMappingURL=gateway-session-queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-session-queue.js","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gateway-session-queue.js","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA0BvE,MAAM,UAAU,yBAAyB,CAAC,OAMzC;IACG,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,KAAK,EACR,WAAmB,EACnB,OAAwB,EACxB,YAA4B,EACf,EAAE;QACf,MAAM,sBAAsB,CAAC;YACzB,EAAE;YACF,GAAG,EAAE,WAAW,EAAE;YAClB,MAAM,EAAE,cAAc,EAAE;YACxB,GAAG;YACH,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY;YACZ,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,cAAc,EAAE,OAAO,CAAC,cAAc;SACzC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Logger } from "./channel-log.js";
|
|
2
|
+
import { type ReplyDeliverPayload } from "./send-service.js";
|
|
3
|
+
import type { WsMessageParams, XgImConfig } from "./types.js";
|
|
4
|
+
export type PatchSummaryPayload = {
|
|
5
|
+
added?: string[];
|
|
6
|
+
modified?: string[];
|
|
7
|
+
deleted?: string[];
|
|
8
|
+
};
|
|
9
|
+
type FlushArgs = {
|
|
10
|
+
config: XgImConfig;
|
|
11
|
+
token: string;
|
|
12
|
+
params: WsMessageParams;
|
|
13
|
+
};
|
|
14
|
+
export declare function createModifiedFilePushTracker(options: {
|
|
15
|
+
agentWorkspaceDir?: string;
|
|
16
|
+
log: Logger;
|
|
17
|
+
logPrefix: string;
|
|
18
|
+
}): {
|
|
19
|
+
recordPatchSummary: (payload: PatchSummaryPayload) => void;
|
|
20
|
+
markDelivered: (payload: ReplyDeliverPayload) => void;
|
|
21
|
+
flush: (args: FlushArgs) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=modified-file-push-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modified-file-push-tracker.d.ts","sourceRoot":"","sources":["../../src/modified-file-push-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;CAC3B,CAAC;AAwFF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG;IACA,kBAAkB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAgDA"}
|