@xgjktech/xg_cwork_im 1.17.49 → 1.17.51
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/src/account-connection.d.ts.map +1 -1
- package/dist/src/account-connection.js +2 -0
- package/dist/src/account-connection.js.map +1 -1
- package/dist/src/account-reconciler.d.ts.map +1 -1
- package/dist/src/account-reconciler.js +2 -0
- package/dist/src/account-reconciler.js.map +1 -1
- package/dist/src/cron-appkey-binding-store.test.js +40 -10
- package/dist/src/cron-appkey-binding-store.test.js.map +1 -1
- package/dist/src/deliver-text.test.js +22 -22
- package/dist/src/gateway-session-queue.d.ts +2 -11
- package/dist/src/gateway-session-queue.d.ts.map +1 -1
- package/dist/src/gateway-session-queue.js +6 -9
- package/dist/src/gateway-session-queue.js.map +1 -1
- package/dist/src/plan-session-registry.d.ts +24 -0
- package/dist/src/plan-session-registry.d.ts.map +1 -0
- package/dist/src/plan-session-registry.js +84 -0
- package/dist/src/plan-session-registry.js.map +1 -0
- package/dist/src/plan-session-registry.test.d.ts +2 -0
- package/dist/src/plan-session-registry.test.d.ts.map +1 -0
- package/dist/src/plan-session-registry.test.js +109 -0
- package/dist/src/plan-session-registry.test.js.map +1 -0
- package/dist/src/plan-store-access.test.js +9 -9
- package/dist/src/plan-ws-registry.d.ts +2 -0
- package/dist/src/plan-ws-registry.d.ts.map +1 -1
- package/dist/src/plan-ws-registry.js +8 -0
- package/dist/src/plan-ws-registry.js.map +1 -1
- package/dist/src/plan-ws-registry.test.js +19 -1
- package/dist/src/plan-ws-registry.test.js.map +1 -1
- package/dist/src/plugin-dispose.d.ts +4 -2
- package/dist/src/plugin-dispose.d.ts.map +1 -1
- package/dist/src/plugin-dispose.js +10 -7
- package/dist/src/plugin-dispose.js.map +1 -1
- package/dist/src/register-exec-env-hook.d.ts +1 -1
- package/dist/src/register-exec-env-hook.d.ts.map +1 -1
- package/dist/src/register-exec-env-hook.js +18 -9
- package/dist/src/register-exec-env-hook.js.map +1 -1
- package/dist/src/subagent-monitor.d.ts.map +1 -1
- package/dist/src/subagent-monitor.js +13 -1
- package/dist/src/subagent-monitor.js.map +1 -1
- package/dist/src/turn-deliver-buffer.test.js +25 -25
- package/openclaw.plugin.json +30 -30
- package/package.json +78 -78
- package/dist/src/single-chat-no-reply-fallback.d.ts +0 -14
- package/dist/src/single-chat-no-reply-fallback.d.ts.map +0 -1
- package/dist/src/single-chat-no-reply-fallback.js +0 -20
- package/dist/src/single-chat-no-reply-fallback.js.map +0 -1
- package/dist/src/subagent-progress-hooks.d.ts +0 -11
- package/dist/src/subagent-progress-hooks.d.ts.map +0 -1
- package/dist/src/subagent-progress-hooks.js +0 -41
- package/dist/src/subagent-progress-hooks.js.map +0 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** toolCallId → 投递目标表的 TTL:超过这个时长未被消费的登记视为过期。 */
|
|
2
|
+
const TOOL_CALL_TARGET_TTL_MS = 10 * 60 * 1000;
|
|
3
|
+
/** toolCallId → 投递目标表的容量上限:超出时逐出最旧的条目(插入序)。 */
|
|
4
|
+
const TOOL_CALL_TARGET_CAPACITY = 500;
|
|
5
|
+
let nowFn = () => Date.now();
|
|
6
|
+
/** 测试用:替换时间源,避免测 TTL 时 sleep。 */
|
|
7
|
+
export function setNowFnForTest(fn) {
|
|
8
|
+
nowFn = fn;
|
|
9
|
+
}
|
|
10
|
+
const toolCallTargets = new Map();
|
|
11
|
+
/** planId → 已推送 blocked notice key 集合 */
|
|
12
|
+
const blockedNotifiedKeys = new Map();
|
|
13
|
+
function evictExpiredToolCallTargets() {
|
|
14
|
+
const now = nowFn();
|
|
15
|
+
for (const [toolCallId, entry] of toolCallTargets) {
|
|
16
|
+
if (now - entry.registeredAt > TOOL_CALL_TARGET_TTL_MS) {
|
|
17
|
+
toolCallTargets.delete(toolCallId);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function evictOldestToolCallTargetsOverCapacity() {
|
|
22
|
+
while (toolCallTargets.size > TOOL_CALL_TARGET_CAPACITY) {
|
|
23
|
+
const oldestKey = toolCallTargets.keys().next().value;
|
|
24
|
+
if (oldestKey === undefined) {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
toolCallTargets.delete(oldestKey);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function registerToolCallTarget(toolCallId, target) {
|
|
31
|
+
evictExpiredToolCallTargets();
|
|
32
|
+
// 重新登记同一 id 应刷新插入序(视为新条目),先删再插
|
|
33
|
+
toolCallTargets.delete(toolCallId);
|
|
34
|
+
toolCallTargets.set(toolCallId, { target, registeredAt: nowFn() });
|
|
35
|
+
evictOldestToolCallTargetsOverCapacity();
|
|
36
|
+
}
|
|
37
|
+
/** 取出并删除(一次性消费)。未命中返回 undefined。 */
|
|
38
|
+
export function takeToolCallTarget(toolCallId) {
|
|
39
|
+
const entry = toolCallTargets.get(toolCallId);
|
|
40
|
+
if (!entry) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
toolCallTargets.delete(toolCallId);
|
|
44
|
+
if (nowFn() - entry.registeredAt > TOOL_CALL_TARGET_TTL_MS) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return entry.target;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 传入本次扫描出的全部 notice,返回其中「需要推送的新增项」,并同步更新集合。
|
|
51
|
+
*
|
|
52
|
+
* 语义(按 DESIGN.md D2):
|
|
53
|
+
* - 新增 = 本次 keys − 已推送 keys → 返回它们
|
|
54
|
+
* - 清理 = 已推送集中「本次已不在」的 key → 移除(让 blocked→修复→再 blocked 能重新推)
|
|
55
|
+
* - 已推送集 = 已推送 ∪ 新增
|
|
56
|
+
* - 按 planId 分桶
|
|
57
|
+
*/
|
|
58
|
+
export function diffAndMarkBlockedNotices(planId, notices) {
|
|
59
|
+
const notified = blockedNotifiedKeys.get(planId) ?? new Set();
|
|
60
|
+
const currentKeys = new Set(notices.map((n) => n.key));
|
|
61
|
+
const fresh = notices.filter((n) => !notified.has(n.key));
|
|
62
|
+
for (const key of notified) {
|
|
63
|
+
if (!currentKeys.has(key)) {
|
|
64
|
+
notified.delete(key);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (const notice of fresh) {
|
|
68
|
+
notified.add(notice.key);
|
|
69
|
+
}
|
|
70
|
+
if (notified.size > 0) {
|
|
71
|
+
blockedNotifiedKeys.set(planId, notified);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
blockedNotifiedKeys.delete(planId);
|
|
75
|
+
}
|
|
76
|
+
return fresh;
|
|
77
|
+
}
|
|
78
|
+
/** 测试用:重置模块级缓存与 stateDir */
|
|
79
|
+
export function resetPlanSessionRegistryForTest() {
|
|
80
|
+
toolCallTargets.clear();
|
|
81
|
+
blockedNotifiedKeys.clear();
|
|
82
|
+
nowFn = () => Date.now();
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=plan-session-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-session-registry.js","sourceRoot":"","sources":["../../src/plan-session-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-session-registry.test.d.ts","sourceRoot":"","sources":["../../src/plan-session-registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { beforeEach, describe, it } from "node:test";
|
|
3
|
+
import { diffAndMarkBlockedNotices, registerToolCallTarget, resetPlanSessionRegistryForTest, setNowFnForTest, takeToolCallTarget, } from "./plan-session-registry.js";
|
|
4
|
+
function makeTarget(overrides = {}) {
|
|
5
|
+
return {
|
|
6
|
+
groupId: "group-1",
|
|
7
|
+
token: "token-1",
|
|
8
|
+
...overrides,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function makeNotice(overrides = {}) {
|
|
12
|
+
return {
|
|
13
|
+
key: "plan-1::0::缺少权限",
|
|
14
|
+
taskIndex: 0,
|
|
15
|
+
taskTitle: "备份旧配置",
|
|
16
|
+
note: "缺少权限",
|
|
17
|
+
content: "计划「X」卡在任务「备份旧配置」:缺少权限\n需要人工介入才能继续。",
|
|
18
|
+
...overrides,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
resetPlanSessionRegistryForTest();
|
|
23
|
+
});
|
|
24
|
+
describe("registerToolCallTarget / takeToolCallTarget", () => {
|
|
25
|
+
it("hits with the registered target and deletes it on consume (take twice → second undefined)", () => {
|
|
26
|
+
registerToolCallTarget("call-1", makeTarget());
|
|
27
|
+
const first = takeToolCallTarget("call-1");
|
|
28
|
+
assert.deepEqual(first, makeTarget());
|
|
29
|
+
const second = takeToolCallTarget("call-1");
|
|
30
|
+
assert.equal(second, undefined);
|
|
31
|
+
});
|
|
32
|
+
it("misses for an unregistered id", () => {
|
|
33
|
+
assert.equal(takeToolCallTarget("does-not-exist"), undefined);
|
|
34
|
+
});
|
|
35
|
+
it("expires entries past TTL (injected now, no sleep)", () => {
|
|
36
|
+
let t = 0;
|
|
37
|
+
setNowFnForTest(() => t);
|
|
38
|
+
registerToolCallTarget("call-ttl", makeTarget());
|
|
39
|
+
t = 10 * 60 * 1000 + 1; // TTL + 1ms
|
|
40
|
+
assert.equal(takeToolCallTarget("call-ttl"), undefined);
|
|
41
|
+
});
|
|
42
|
+
it("does not expire an entry read exactly at TTL boundary", () => {
|
|
43
|
+
let t = 0;
|
|
44
|
+
setNowFnForTest(() => t);
|
|
45
|
+
registerToolCallTarget("call-boundary", makeTarget());
|
|
46
|
+
t = 10 * 60 * 1000; // exactly TTL, not yet exceeded
|
|
47
|
+
assert.ok(takeToolCallTarget("call-boundary"));
|
|
48
|
+
});
|
|
49
|
+
it("evicts the oldest entry when capacity is exceeded", () => {
|
|
50
|
+
let t = 0;
|
|
51
|
+
setNowFnForTest(() => t);
|
|
52
|
+
for (let i = 0; i < 500; i++) {
|
|
53
|
+
t += 1;
|
|
54
|
+
registerToolCallTarget(`call-${i}`, makeTarget({ groupId: `g${i}` }));
|
|
55
|
+
}
|
|
56
|
+
// 表已满 500 条,call-0 是最旧的
|
|
57
|
+
t += 1;
|
|
58
|
+
registerToolCallTarget("call-500", makeTarget({ groupId: "g500" }));
|
|
59
|
+
assert.equal(takeToolCallTarget("call-0"), undefined, "oldest entry should have been evicted");
|
|
60
|
+
const kept = takeToolCallTarget("call-500");
|
|
61
|
+
assert.ok(kept);
|
|
62
|
+
assert.equal(kept.groupId, "g500");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe("diffAndMarkBlockedNotices", () => {
|
|
66
|
+
it("returns all notices on first call", () => {
|
|
67
|
+
const notices = [makeNotice()];
|
|
68
|
+
const fresh = diffAndMarkBlockedNotices("plan-1", notices);
|
|
69
|
+
assert.deepEqual(fresh, notices);
|
|
70
|
+
});
|
|
71
|
+
it("returns empty on repeated identical call", () => {
|
|
72
|
+
const notices = [makeNotice()];
|
|
73
|
+
diffAndMarkBlockedNotices("plan-1", notices);
|
|
74
|
+
const second = diffAndMarkBlockedNotices("plan-1", notices);
|
|
75
|
+
assert.deepEqual(second, []);
|
|
76
|
+
});
|
|
77
|
+
it("treats a note change as a new notification (different key)", () => {
|
|
78
|
+
const first = [makeNotice({ key: "plan-1::0::缺少权限" })];
|
|
79
|
+
diffAndMarkBlockedNotices("plan-1", first);
|
|
80
|
+
const changed = [makeNotice({ key: "plan-1::0::权限问题已升级", note: "权限问题已升级" })];
|
|
81
|
+
const fresh = diffAndMarkBlockedNotices("plan-1", changed);
|
|
82
|
+
assert.deepEqual(fresh, changed);
|
|
83
|
+
});
|
|
84
|
+
it("clears a key once the task is no longer blocked, allowing re-notification later", () => {
|
|
85
|
+
const notice = makeNotice({ key: "plan-1::0::缺少权限" });
|
|
86
|
+
diffAndMarkBlockedNotices("plan-1", [notice]);
|
|
87
|
+
// task 修复:本次扫描不再含该 key
|
|
88
|
+
const clearedFresh = diffAndMarkBlockedNotices("plan-1", []);
|
|
89
|
+
assert.deepEqual(clearedFresh, []);
|
|
90
|
+
// 再次 blocked,同 key 应视为新增重新推送
|
|
91
|
+
const reblocked = diffAndMarkBlockedNotices("plan-1", [notice]);
|
|
92
|
+
assert.deepEqual(reblocked, [notice]);
|
|
93
|
+
});
|
|
94
|
+
it("keeps separate planIds independent", () => {
|
|
95
|
+
const noticeA = makeNotice({ key: "plan-a::0::原因A" });
|
|
96
|
+
const noticeB = makeNotice({ key: "plan-b::0::原因B" });
|
|
97
|
+
const freshA = diffAndMarkBlockedNotices("plan-a", [noticeA]);
|
|
98
|
+
const freshB = diffAndMarkBlockedNotices("plan-b", [noticeB]);
|
|
99
|
+
assert.deepEqual(freshA, [noticeA]);
|
|
100
|
+
assert.deepEqual(freshB, [noticeB]);
|
|
101
|
+
// plan-a 重复调用不应受 plan-b 影响,反之亦然
|
|
102
|
+
assert.deepEqual(diffAndMarkBlockedNotices("plan-a", [noticeA]), []);
|
|
103
|
+
assert.deepEqual(diffAndMarkBlockedNotices("plan-b", [noticeB]), []);
|
|
104
|
+
});
|
|
105
|
+
it("returns an empty array and does not throw when there are no notices", () => {
|
|
106
|
+
assert.deepEqual(diffAndMarkBlockedNotices("plan-empty", []), []);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=plan-session-registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-session-registry.test.js","sourceRoot":"","sources":["../../src/plan-session-registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,14 +140,14 @@ describe("未设置 stateDir", () => {
|
|
|
140
140
|
/** 手工建一个 v1(无 origin 列)的 plans 表,模拟旧库升级前的真实状态(同 shared TASK-2x-1 手法)。 */
|
|
141
141
|
function createV1Schema(dbPath) {
|
|
142
142
|
const db = new DatabaseSync(dbPath);
|
|
143
|
-
db.exec(`
|
|
144
|
-
CREATE TABLE IF NOT EXISTS plans (
|
|
145
|
-
plan_id TEXT PRIMARY KEY,
|
|
146
|
-
goal TEXT NOT NULL,
|
|
147
|
-
created_at TEXT NOT NULL,
|
|
148
|
-
updated_at TEXT NOT NULL,
|
|
149
|
-
doc TEXT NOT NULL
|
|
150
|
-
) STRICT;
|
|
143
|
+
db.exec(`
|
|
144
|
+
CREATE TABLE IF NOT EXISTS plans (
|
|
145
|
+
plan_id TEXT PRIMARY KEY,
|
|
146
|
+
goal TEXT NOT NULL,
|
|
147
|
+
created_at TEXT NOT NULL,
|
|
148
|
+
updated_at TEXT NOT NULL,
|
|
149
|
+
doc TEXT NOT NULL
|
|
150
|
+
) STRICT;
|
|
151
151
|
`);
|
|
152
152
|
db.exec("CREATE INDEX IF NOT EXISTS idx_plans_updated_at ON plans(updated_at);");
|
|
153
153
|
db.exec("PRAGMA user_version = 1;");
|
|
@@ -155,7 +155,7 @@ function createV1Schema(dbPath) {
|
|
|
155
155
|
}
|
|
156
156
|
function insertV1Row(dbPath, plan) {
|
|
157
157
|
const db = new DatabaseSync(dbPath);
|
|
158
|
-
db.prepare(`INSERT INTO plans (plan_id, goal, created_at, updated_at, doc)
|
|
158
|
+
db.prepare(`INSERT INTO plans (plan_id, goal, created_at, updated_at, doc)
|
|
159
159
|
VALUES (@planId, @goal, @createdAt, @updatedAt, @doc)`).run({
|
|
160
160
|
planId: plan.planId,
|
|
161
161
|
goal: plan.goal,
|
|
@@ -6,6 +6,8 @@ export interface PlanWsTarget {
|
|
|
6
6
|
/** 按 groupId 覆盖登记(新一轮会话的 client 取代旧的)。 */
|
|
7
7
|
export declare function setPlanWsClient(groupId: string, client: ImStreamClient, replyToMsgId: string): void;
|
|
8
8
|
export declare function getPlanWsClient(groupId: string): PlanWsTarget | undefined;
|
|
9
|
+
/** 账号真正停止时,移除指向该物理 client 的全部群组路由;其他账号路由不受影响。 */
|
|
10
|
+
export declare function removePlanWsClientsByClient(client: ImStreamClient): void;
|
|
9
11
|
/** 测试用:重置模块级缓存 */
|
|
10
12
|
export declare function resetPlanWsRegistryForTest(): void;
|
|
11
13
|
/** 插件卸载/重载时清空计划 WS 登记表。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-ws-registry.d.ts","sourceRoot":"","sources":["../../src/plan-ws-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAiBD,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKnG;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEzE;AAED,kBAAkB;AAClB,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,2BAA2B;AAC3B,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
1
|
+
{"version":3,"file":"plan-ws-registry.d.ts","sourceRoot":"","sources":["../../src/plan-ws-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAiBD,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKnG;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEzE;AAED,iDAAiD;AACjD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAMxE;AAED,kBAAkB;AAClB,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,2BAA2B;AAC3B,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
@@ -20,6 +20,14 @@ export function setPlanWsClient(groupId, client, replyToMsgId) {
|
|
|
20
20
|
export function getPlanWsClient(groupId) {
|
|
21
21
|
return planWsClients.get(groupId);
|
|
22
22
|
}
|
|
23
|
+
/** 账号真正停止时,移除指向该物理 client 的全部群组路由;其他账号路由不受影响。 */
|
|
24
|
+
export function removePlanWsClientsByClient(client) {
|
|
25
|
+
for (const [groupId, target] of planWsClients) {
|
|
26
|
+
if (target.client === client) {
|
|
27
|
+
planWsClients.delete(groupId);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
23
31
|
/** 测试用:重置模块级缓存 */
|
|
24
32
|
export function resetPlanWsRegistryForTest() {
|
|
25
33
|
disposePlanWsRegistry();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-ws-registry.js","sourceRoot":"","sources":["../../src/plan-ws-registry.ts"],"names":[],"mappings":"AAOA,gDAAgD;AAChD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD,SAAS,uBAAuB;IAC5B,OAAO,aAAa,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM;QACV,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAsB,EAAE,YAAoB;IACzF,+BAA+B;IAC/B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,uBAAuB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,0BAA0B;IACtC,qBAAqB,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB;IACjC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"plan-ws-registry.js","sourceRoot":"","sources":["../../src/plan-ws-registry.ts"],"names":[],"mappings":"AAOA,gDAAgD;AAChD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD,SAAS,uBAAuB;IAC5B,OAAO,aAAa,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM;QACV,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAsB,EAAE,YAAoB;IACzF,+BAA+B;IAC/B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,uBAAuB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAC9D,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,0BAA0B;IACtC,qBAAqB,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB;IACjC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, it, beforeEach } from "node:test";
|
|
3
|
-
import { getPlanWsClient, resetPlanWsRegistryForTest, setPlanWsClient, } from "./plan-ws-registry.js";
|
|
3
|
+
import { getPlanWsClient, removePlanWsClientsByClient, resetPlanWsRegistryForTest, setPlanWsClient, } from "./plan-ws-registry.js";
|
|
4
|
+
import { disposePluginModule } from "./plugin-dispose.js";
|
|
4
5
|
function makeClient() {
|
|
5
6
|
return {
|
|
6
7
|
start: async () => { },
|
|
@@ -39,5 +40,22 @@ describe("plan-ws-registry", () => {
|
|
|
39
40
|
it("未登记的 groupId → undefined", () => {
|
|
40
41
|
assert.equal(getPlanWsClient("g-never-registered"), undefined);
|
|
41
42
|
});
|
|
43
|
+
it("按物理 client 定向移除路由时不影响其他 client", () => {
|
|
44
|
+
const clientA = makeClient();
|
|
45
|
+
const clientB = makeClient();
|
|
46
|
+
setPlanWsClient("g-a1", clientA, "msg-a1");
|
|
47
|
+
setPlanWsClient("g-a2", clientA, "msg-a2");
|
|
48
|
+
setPlanWsClient("g-b1", clientB, "msg-b1");
|
|
49
|
+
removePlanWsClientsByClient(clientA);
|
|
50
|
+
assert.equal(getPlanWsClient("g-a1"), undefined);
|
|
51
|
+
assert.equal(getPlanWsClient("g-a2"), undefined);
|
|
52
|
+
assert.equal(getPlanWsClient("g-b1")?.client, clientB);
|
|
53
|
+
});
|
|
54
|
+
it("registry cleanup 跳过计划资源时保留 WS 路由", async () => {
|
|
55
|
+
const client = makeClient();
|
|
56
|
+
setPlanWsClient("g-keep", client, "msg-keep");
|
|
57
|
+
await disposePluginModule({ skipConnections: true, skipPlanResources: true });
|
|
58
|
+
assert.equal(getPlanWsClient("g-keep")?.client, client);
|
|
59
|
+
});
|
|
42
60
|
});
|
|
43
61
|
//# sourceMappingURL=plan-ws-registry.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-ws-registry.test.js","sourceRoot":"","sources":["../../src/plan-ws-registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EACH,eAAe,EACf,0BAA0B,EAC1B,eAAe,GAClB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-ws-registry.test.js","sourceRoot":"","sources":["../../src/plan-ws-registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
* - 真卸载 / gateway_stop:`disposePluginModule()`(skipConnections=false)——连同进程级共享的
|
|
6
6
|
* account-reconciler 一起 stopAll,并清空全部共享内存态(连接/流客户端/会话上下文/轮次/去重/env/
|
|
7
7
|
* subagent 监控)。由 index.ts 的 gateway_stop 钩子触发,且用 once 闸门保证只执行一次。
|
|
8
|
-
* - 插件热重载 / registry 代际交替:cleanup
|
|
9
|
-
*
|
|
8
|
+
* - 插件热重载 / registry 代际交替:cleanup 以 `disposePluginModule({ skipConnections: true,
|
|
9
|
+
* skipPlanResources: true })` 调用——只收尾可安全代际清理的句柄,保留计划读库与 plan-ws 路由,
|
|
10
10
|
* **绝不 stopAll、绝不清理共享连接/内存态**。连接只在 AccountReconciler(配置 diff,账号级)
|
|
11
11
|
* 与 gateway_stop(进程停机)处拆解,避免 OpenClaw runtime 代际交替误拆全部 WebSocket。
|
|
12
12
|
*/
|
|
13
13
|
export interface DisposePluginModuleOptions {
|
|
14
14
|
/** 注册表代际交替(热重载)场景:只收尾独占句柄,跳过共享连接与共享内存态。 */
|
|
15
15
|
skipConnections?: boolean;
|
|
16
|
+
/** 注册表代际交替时保留计划读库句柄与计划 WS 路由;gateway_stop 使用默认 false 完整清理。 */
|
|
17
|
+
skipPlanResources?: boolean;
|
|
16
18
|
}
|
|
17
19
|
/** skipConnections=false(gateway_stop)时停连接+清共享态;true(cleanup)只收尾独占句柄。 */
|
|
18
20
|
export declare function disposePluginModule(options?: DisposePluginModuleOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-dispose.d.ts","sourceRoot":"","sources":["../../src/plugin-dispose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,0BAA0B;IACvC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-dispose.d.ts","sourceRoot":"","sources":["../../src/plugin-dispose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,0BAA0B;IACvC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CACrC,OAAO,GAAE,0BAA+B,GACzC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* - 真卸载 / gateway_stop:`disposePluginModule()`(skipConnections=false)——连同进程级共享的
|
|
6
6
|
* account-reconciler 一起 stopAll,并清空全部共享内存态(连接/流客户端/会话上下文/轮次/去重/env/
|
|
7
7
|
* subagent 监控)。由 index.ts 的 gateway_stop 钩子触发,且用 once 闸门保证只执行一次。
|
|
8
|
-
* - 插件热重载 / registry 代际交替:cleanup
|
|
9
|
-
*
|
|
8
|
+
* - 插件热重载 / registry 代际交替:cleanup 以 `disposePluginModule({ skipConnections: true,
|
|
9
|
+
* skipPlanResources: true })` 调用——只收尾可安全代际清理的句柄,保留计划读库与 plan-ws 路由,
|
|
10
10
|
* **绝不 stopAll、绝不清理共享连接/内存态**。连接只在 AccountReconciler(配置 diff,账号级)
|
|
11
11
|
* 与 gateway_stop(进程停机)处拆解,避免 OpenClaw runtime 代际交替误拆全部 WebSocket。
|
|
12
12
|
*/
|
|
@@ -27,8 +27,10 @@ import { disposeSubagentMonitor } from "./subagent-monitor.js";
|
|
|
27
27
|
/** skipConnections=false(gateway_stop)时停连接+清共享态;true(cleanup)只收尾独占句柄。 */
|
|
28
28
|
export async function disposePluginModule(options = {}) {
|
|
29
29
|
const { skipConnections = false } = options;
|
|
30
|
+
const { skipPlanResources = false } = options;
|
|
30
31
|
if (skipConnections) {
|
|
31
|
-
console.log(
|
|
32
|
+
console.log(`[xg_cwork_im] [reload] disposePluginModule skipConnections=true ` +
|
|
33
|
+
`skipPlanResources=${skipPlanResources} (registry cycle)`);
|
|
32
34
|
}
|
|
33
35
|
else {
|
|
34
36
|
// gateway_stop:停共享连接 + 清空共享热路径内存态(含 subagent 监控 maps/ticker)。
|
|
@@ -42,11 +44,12 @@ export async function disposePluginModule(options = {}) {
|
|
|
42
44
|
clearSessionNasVolumeStates();
|
|
43
45
|
disposeSessionEnvStore();
|
|
44
46
|
}
|
|
45
|
-
//
|
|
46
|
-
// plan/action/cron SQLite 句柄、plan-ws 句柄、token 缓存。
|
|
47
|
+
// 计划资源在 registry 代际交替时由新一代继续使用,不能被旧 cleanup 清空;gateway_stop 仍完整释放。
|
|
47
48
|
disposeActionStore();
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
if (!skipPlanResources) {
|
|
50
|
+
disposePlanStore();
|
|
51
|
+
disposePlanWsRegistry();
|
|
52
|
+
}
|
|
50
53
|
disposeCronAppKeyBindingStore();
|
|
51
54
|
clearAllTokenCache();
|
|
52
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-dispose.js","sourceRoot":"","sources":["../../src/plugin-dispose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-dispose.js","sourceRoot":"","sources":["../../src/plugin-dispose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAS/D,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,UAAsC,EAAE;IAExC,MAAM,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,EAAE,iBAAiB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC9C,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACP,kEAAkE;YAC9D,qBAAqB,iBAAiB,mBAAmB,CAChE,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,8DAA8D;QAC9D,MAAM,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAChD,sBAAsB,EAAE,CAAC;QACzB,kBAAkB,EAAE,CAAC;QACrB,uBAAuB,EAAE,CAAC;QAC1B,0BAA0B,EAAE,CAAC;QAC7B,yBAAyB,EAAE,CAAC;QAC5B,8BAA8B,EAAE,CAAC;QACjC,2BAA2B,EAAE,CAAC;QAC9B,sBAAsB,EAAE,CAAC;IAC7B,CAAC;IACD,mEAAmE;IACnE,kBAAkB,EAAE,CAAC;IACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrB,gBAAgB,EAAE,CAAC;QACnB,qBAAqB,EAAE,CAAC;IAC5B,CAAC;IACD,6BAA6B,EAAE,CAAC;IAChC,kBAAkB,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -17,7 +17,7 @@ export type CronSessionRef = {
|
|
|
17
17
|
};
|
|
18
18
|
/** Return true only for the supported CLI/API forms that create a Cron job. */
|
|
19
19
|
export declare function isCronCreateCommand(command: string | undefined): boolean;
|
|
20
|
-
/** Extract the authoritative
|
|
20
|
+
/** Extract the authoritative job id from native Cron or CLI results. */
|
|
21
21
|
export declare function extractCronJobIdFromResult(result: unknown): string | undefined;
|
|
22
22
|
/** Parse the stable portion of an OpenClaw Cron run session key. */
|
|
23
23
|
export declare function parseCronSessionKey(sessionKey: string | undefined): CronSessionRef | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-exec-env-hook.d.ts","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAUnF,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"register-exec-env-hook.d.ts","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAUnF,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkJ/E,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKxE;AA0CD,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkB9E;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAkB9F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAgDhE;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqE1E"}
|
|
@@ -71,6 +71,7 @@ function resolveAppKeyForSession(api, sessionKey, agentIdHint) {
|
|
|
71
71
|
const visited = new Set();
|
|
72
72
|
let sawEntryRead = false;
|
|
73
73
|
let cronLineageSeen = false;
|
|
74
|
+
let resolvedCron;
|
|
74
75
|
for (let depth = 0; depth <= APPKEY_MAX_PARENT_DEPTH && currentKey; depth += 1) {
|
|
75
76
|
if (visited.has(currentKey)) {
|
|
76
77
|
return { source: "none", sessionKey, agentId, reason: "PARENT_CHAIN_CYCLE" };
|
|
@@ -80,6 +81,7 @@ function resolveAppKeyForSession(api, sessionKey, agentIdHint) {
|
|
|
80
81
|
if (cron) {
|
|
81
82
|
if (!agentId || cron.agentId === agentId) {
|
|
82
83
|
cronLineageSeen = true;
|
|
84
|
+
resolvedCron = cron;
|
|
83
85
|
const binding = readCronBinding(cron.agentId, cron.jobId);
|
|
84
86
|
if (binding?.appKey && validAppKey(binding.appKey)) {
|
|
85
87
|
return {
|
|
@@ -109,7 +111,14 @@ function resolveAppKeyForSession(api, sessionKey, agentIdHint) {
|
|
|
109
111
|
const fallbackParent = getLinkedParentSessionKey(currentKey);
|
|
110
112
|
const parentKey = metadataParent || fallbackParent;
|
|
111
113
|
if (!parentKey) {
|
|
112
|
-
return {
|
|
114
|
+
return {
|
|
115
|
+
source: "none",
|
|
116
|
+
sessionKey,
|
|
117
|
+
agentId: resolvedCron?.agentId ?? agentId,
|
|
118
|
+
jobId: resolvedCron?.jobId,
|
|
119
|
+
parentSessionKey: resolvedCron && currentKey !== sessionKey ? currentKey : undefined,
|
|
120
|
+
reason: sawEntryRead ? "AUTH_CONTEXT_MISSING" : "SESSION_ENTRY_MISSING",
|
|
121
|
+
};
|
|
113
122
|
}
|
|
114
123
|
if (!parentAgentMatches(parentKey, agentId)) {
|
|
115
124
|
return { source: "none", sessionKey, agentId, parentSessionKey: parentKey, reason: "PARENT_AGENT_MISMATCH" };
|
|
@@ -174,7 +183,7 @@ function collectText(value, out = [], seen = new Set()) {
|
|
|
174
183
|
}
|
|
175
184
|
return out;
|
|
176
185
|
}
|
|
177
|
-
/** Extract the authoritative
|
|
186
|
+
/** Extract the authoritative job id from native Cron or CLI results. */
|
|
178
187
|
export function extractCronJobIdFromResult(result) {
|
|
179
188
|
// Prefer authoritative structured fields and accept non-UUID ids.
|
|
180
189
|
const structured = collectStructuredCronJobIds(result);
|
|
@@ -328,18 +337,18 @@ export function registerCronAppKeyBindingHook(api) {
|
|
|
328
337
|
const action = typeof event.params.action === "string" ? event.params.action : "";
|
|
329
338
|
if (action !== "add" && action !== "create")
|
|
330
339
|
return;
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
340
|
+
// Native OpenClaw versions use different wrappers, including
|
|
341
|
+
// result.details.job.id. Use the same recursive extractor as CLI so
|
|
342
|
+
// both creation paths stay compatible.
|
|
343
|
+
const jobId = extractCronJobIdFromResult(event.result);
|
|
335
344
|
if (jobId)
|
|
336
345
|
bindFromSession(jobId, ctx.sessionKey, ctx.agentId);
|
|
337
346
|
else
|
|
338
347
|
console.warn(`[xg_cwork_im] [cron-binding] cron add succeeded but jobId was not found in result`);
|
|
339
348
|
});
|
|
340
|
-
// OpenClaw
|
|
341
|
-
//
|
|
342
|
-
//
|
|
349
|
+
// Some OpenClaw versions omit the creator sessionKey on "added". In that
|
|
350
|
+
// case this hook cannot safely identify the user's AppKey and deliberately
|
|
351
|
+
// does nothing; after_tool_call above is the primary binding path.
|
|
343
352
|
api.on("cron_changed", (event) => {
|
|
344
353
|
if (event.action !== "added" || !event.jobId || !event.sessionKey)
|
|
345
354
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-exec-env-hook.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register-exec-env-hook.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../src/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,iBAAiB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../src/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,iBAAiB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAkDD,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAsCzD;AA+CD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAsCD,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,cAAc,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;CAC5B,GAAG,OAAO,CAsDV;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAOhF;AAED,wBAAgB,aAAa,CACzB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACf,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,SAAa,GACjB,mBAAmB,EAAE,CAoBvB;AAED,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA+CnF;AA4KD,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C"}
|
|
@@ -11,6 +11,14 @@ const roundAdmissionTombstones = getSharedMap("subagent-round-admission-tombston
|
|
|
11
11
|
/** 记录被 `/stop` 中断的 subagent run(按 childSessionKey 索引,存被中断 runId 与过期时间)。 */
|
|
12
12
|
const childTombstones = getSharedMap("subagent-child-tombstones");
|
|
13
13
|
const POLL_INTERVAL_MS = 15_000;
|
|
14
|
+
/**
|
|
15
|
+
* apiCandidates 保留上限:OpenClaw 会对同一模块反复重注册(多代 registry 并存且从不触发
|
|
16
|
+
* cleanup,见日志 `registerSeq` 递增而 `cleanup` 为 0)。每代 register 都会 push 一个新 api 进
|
|
17
|
+
* 进程级 candidates,若不停老代则数组无限增长、引用无法回收。该数组仅作为「当前 runtime 探测
|
|
18
|
+
* 不可用时的回退池」(resolveUsablePluginApi),而单进程内 register 是按时间顺序的短爆发(通常
|
|
19
|
+
* 2~4 次),功能上只需最近几代即可,故截断更早的候选。
|
|
20
|
+
*/
|
|
21
|
+
const MAX_API_CANDIDATES = 4;
|
|
14
22
|
const ROUND_TOMBSTONE_TTL_MS = 30_000;
|
|
15
23
|
const CHILD_TOMBSTONE_TTL_MS = 5 * 60_000;
|
|
16
24
|
const MAX_INCR_MSGS = 5;
|
|
@@ -25,8 +33,12 @@ const m = getOrCreateShared("subagent-monitor-runtime", () => ({
|
|
|
25
33
|
}));
|
|
26
34
|
export function setPluginApi(api) {
|
|
27
35
|
const isNewCandidate = api !== m.api && !m.apiCandidates.includes(api);
|
|
28
|
-
if (isNewCandidate)
|
|
36
|
+
if (isNewCandidate) {
|
|
29
37
|
m.apiCandidates.push(api);
|
|
38
|
+
if (m.apiCandidates.length > MAX_API_CANDIDATES) {
|
|
39
|
+
m.apiCandidates.splice(0, m.apiCandidates.length - MAX_API_CANDIDATES);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
30
42
|
if (m.api === null) {
|
|
31
43
|
m.api = api;
|
|
32
44
|
m.apiProbe = "unverified";
|