@xgjktech/xg_cwork_im 1.19.37 → 1.19.39

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.
Files changed (42) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/plan/plan-stat-event.d.ts.map +1 -1
  5. package/dist/src/plan/plan-stat-event.js +39 -2
  6. package/dist/src/plan/plan-stat-event.js.map +1 -1
  7. package/dist/src/plan/plan-stat-event.test.js +39 -1
  8. package/dist/src/plan/plan-stat-event.test.js.map +1 -1
  9. package/dist/src/plan/plan-ws-registry.d.ts +1 -1
  10. package/dist/src/plan/plan-ws-registry.d.ts.map +1 -1
  11. package/dist/src/plan/plan-ws-registry.js +9 -2
  12. package/dist/src/plan/plan-ws-registry.js.map +1 -1
  13. package/dist/src/plan/plan-ws-registry.test.js +8 -0
  14. package/dist/src/plan/plan-ws-registry.test.js.map +1 -1
  15. package/dist/src/plugin/plugin-dispose.d.ts.map +1 -1
  16. package/dist/src/plugin/plugin-dispose.js +2 -0
  17. package/dist/src/plugin/plugin-dispose.js.map +1 -1
  18. package/dist/src/session/group-anchor-store.d.ts +38 -0
  19. package/dist/src/session/group-anchor-store.d.ts.map +1 -0
  20. package/dist/src/session/group-anchor-store.js +218 -0
  21. package/dist/src/session/group-anchor-store.js.map +1 -0
  22. package/dist/src/session/group-anchor-store.test.d.ts +2 -0
  23. package/dist/src/session/group-anchor-store.test.d.ts.map +1 -0
  24. package/dist/src/session/group-anchor-store.test.js +101 -0
  25. package/dist/src/session/group-anchor-store.test.js.map +1 -0
  26. package/dist/src/turn/subagent-monitor.d.ts.map +1 -1
  27. package/dist/src/turn/subagent-monitor.js +7 -1
  28. package/dist/src/turn/subagent-monitor.js.map +1 -1
  29. package/dist/src/turn/turn-agent-event-subscription.d.ts.map +1 -1
  30. package/dist/src/turn/turn-agent-event-subscription.js +42 -16
  31. package/dist/src/turn/turn-agent-event-subscription.js.map +1 -1
  32. package/dist/src/turn/turn-agent-event-subscription.test.js +65 -0
  33. package/dist/src/turn/turn-agent-event-subscription.test.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/src/plan-store-access.d.ts +0 -25
  36. package/dist/src/plan-store-access.d.ts.map +0 -1
  37. package/dist/src/plan-store-access.js +0 -100
  38. package/dist/src/plan-store-access.js.map +0 -1
  39. package/dist/src/plan-store-access.test.d.ts +0 -2
  40. package/dist/src/plan-store-access.test.d.ts.map +0 -1
  41. package/dist/src/plan-store-access.test.js +0 -207
  42. package/dist/src/plan-store-access.test.js.map +0 -1
@@ -0,0 +1,218 @@
1
+ /**
2
+ * 群级 IM 锚点持久化:按 groupId 保存「该群最近一次入站消息 id」(即事件发送所需的 replyToMsgId 锚点)。
3
+ *
4
+ * 用途:plan / SUBAGENT_STAT 等事件在拿不到活跃轮次或 requester.messageId 时用它兜底。
5
+ * 关键场景是网关重启——进程内的锚点(ActiveRound / session-im-context / subagent groupAnchors)
6
+ * 会随进程消失,只有落盘的锚点能恢复,让重启后迟到的事件(如子任务收尾的 PLAN_STAT)仍能带上
7
+ * 非空 replyToMsgId 发出去,而不是被 `buildSendEventPayload` 因空锚点静默丢弃。
8
+ *
9
+ * 持久化:写入防抖落盘到 stateDir/xgjktech/group-anchors.json;启动加载时与每天一次清理掉
10
+ * 超过 7 天未更新的群,避免文件无限增长。任何失败都降级为纯内存模式,绝不抛。
11
+ */
12
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
13
+ import { dirname, join } from "node:path";
14
+ import { getOrCreateShared, getSharedMap } from "../plugin/process-shared-store.js";
15
+ export const GROUP_ANCHOR_FILE_NAME = "group-anchors.json";
16
+ /** 超过该时间未更新的群锚点会被清理(加载时 + 每天一次)。 */
17
+ export const GROUP_ANCHOR_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
18
+ const CLEANUP_INTERVAL_MS = 24 * 60 * 60 * 1000;
19
+ const PERSIST_DEBOUNCE_MS = 300;
20
+ const MAX_ID_LENGTH = 64;
21
+ const LOG_PREFIX = "[xg_cwork_im] [group-anchor]";
22
+ const groupAnchors = getSharedMap("group-anchors");
23
+ /** 进程级共享的落盘/清理机器:跨模块重载只初始化一次,避免新代 init 覆盖旧代数据。 */
24
+ const persistHolder = getOrCreateShared("group-anchor-persist", () => ({
25
+ persistPath: undefined,
26
+ persistTimer: undefined,
27
+ dailyCleanupTimer: undefined,
28
+ persistDirty: false,
29
+ warnedPersistError: false,
30
+ loadedOnce: false,
31
+ }));
32
+ function isRecord(value) {
33
+ return typeof value === "object" && value !== null && !Array.isArray(value);
34
+ }
35
+ function validId(value) {
36
+ return (typeof value === "string" &&
37
+ value.trim().length > 0 &&
38
+ value.length <= MAX_ID_LENGTH &&
39
+ !/[\0\r\n]/.test(value));
40
+ }
41
+ function warnPersistError(message, cause) {
42
+ if (!persistHolder.warnedPersistError) {
43
+ persistHolder.warnedPersistError = true;
44
+ console.warn(`${LOG_PREFIX} ${message} 原因=${String(cause)};本次进程降级为纯内存模式`);
45
+ }
46
+ }
47
+ function resolvePersistPath(stateDir) {
48
+ return join(stateDir, "xgjktech", GROUP_ANCHOR_FILE_NAME);
49
+ }
50
+ function persistNow() {
51
+ if (!persistHolder.persistPath)
52
+ return;
53
+ try {
54
+ const entries = {};
55
+ for (const [groupId, entry] of groupAnchors) {
56
+ entries[groupId] = { msgId: entry.msgId, updatedAt: entry.updatedAt };
57
+ }
58
+ const payload = JSON.stringify({ version: 1, entries });
59
+ mkdirSync(dirname(persistHolder.persistPath), { recursive: true });
60
+ const tmpPath = `${persistHolder.persistPath}.${process.pid}.tmp`;
61
+ writeFileSync(tmpPath, payload, { encoding: "utf8", mode: 0o600 });
62
+ renameSync(tmpPath, persistHolder.persistPath);
63
+ }
64
+ catch (cause) {
65
+ warnPersistError(`写入 ${persistHolder.persistPath ?? "<unset>"} 失败`, cause);
66
+ }
67
+ }
68
+ function markPersistDirty() {
69
+ if (!persistHolder.persistPath)
70
+ return;
71
+ persistHolder.persistDirty = true;
72
+ if (persistHolder.persistTimer)
73
+ return;
74
+ persistHolder.persistTimer = setTimeout(() => {
75
+ persistHolder.persistTimer = undefined;
76
+ if (persistHolder.persistDirty) {
77
+ persistHolder.persistDirty = false;
78
+ persistNow();
79
+ }
80
+ }, PERSIST_DEBOUNCE_MS).unref?.();
81
+ }
82
+ function loadPersistedAnchors() {
83
+ if (!persistHolder.persistPath)
84
+ return;
85
+ let raw;
86
+ try {
87
+ raw = readFileSync(persistHolder.persistPath, "utf8");
88
+ }
89
+ catch (cause) {
90
+ if (cause.code !== "ENOENT") {
91
+ warnPersistError(`读取 ${persistHolder.persistPath} 失败`, cause);
92
+ }
93
+ return;
94
+ }
95
+ try {
96
+ const parsed = JSON.parse(raw);
97
+ const entries = isRecord(parsed) ? parsed.entries : undefined;
98
+ if (!isRecord(entries))
99
+ return;
100
+ const now = Date.now();
101
+ for (const [groupId, value] of Object.entries(entries)) {
102
+ if (!isRecord(value) || !validId(groupId))
103
+ continue;
104
+ const msgId = validId(value.msgId) ? value.msgId : "";
105
+ const updatedAt = typeof value.updatedAt === "number" ? value.updatedAt : 0;
106
+ if (!msgId)
107
+ continue;
108
+ if (now - updatedAt > GROUP_ANCHOR_RETENTION_MS)
109
+ continue;
110
+ groupAnchors.set(groupId, { msgId, updatedAt: updatedAt || now });
111
+ }
112
+ }
113
+ catch (cause) {
114
+ warnPersistError(`解析 ${persistHolder.persistPath} 失败`, cause);
115
+ }
116
+ }
117
+ function scheduleDailyCleanup() {
118
+ if (persistHolder.dailyCleanupTimer)
119
+ return;
120
+ persistHolder.dailyCleanupTimer = setInterval(() => {
121
+ try {
122
+ pruneGroupAnchors();
123
+ if (persistHolder.persistDirty)
124
+ flushGroupAnchorPersistence();
125
+ }
126
+ catch (cause) {
127
+ console.warn(`${LOG_PREFIX} 每日清理失败已吞: ${String(cause)}`);
128
+ }
129
+ }, CLEANUP_INTERVAL_MS);
130
+ persistHolder.dailyCleanupTimer.unref?.();
131
+ }
132
+ /**
133
+ * 记录某群最近一次入站消息 id(锚点)。非法/空值忽略。
134
+ * 写入后防抖落盘,进程重启可恢复。
135
+ */
136
+ export function noteGroupAnchor(groupId, msgId) {
137
+ if (!validId(groupId) || !validId(msgId))
138
+ return;
139
+ groupAnchors.set(groupId.trim(), { msgId: msgId.trim(), updatedAt: Date.now() });
140
+ markPersistDirty();
141
+ }
142
+ /** 读取某群锚点;超过保留期视为不存在并顺带回收。 */
143
+ export function getGroupAnchor(groupId, now = Date.now()) {
144
+ if (!groupId)
145
+ return undefined;
146
+ const gid = groupId.trim();
147
+ const entry = groupAnchors.get(gid);
148
+ if (!entry)
149
+ return undefined;
150
+ if (now - entry.updatedAt > GROUP_ANCHOR_RETENTION_MS) {
151
+ groupAnchors.delete(gid);
152
+ markPersistDirty();
153
+ return undefined;
154
+ }
155
+ return entry.msgId;
156
+ }
157
+ /** 清理超过保留期的群锚点,返回清理条数(每天一次 + 加载时调用)。 */
158
+ export function pruneGroupAnchors(now = Date.now()) {
159
+ let removed = 0;
160
+ for (const [groupId, entry] of groupAnchors) {
161
+ if (now - entry.updatedAt > GROUP_ANCHOR_RETENTION_MS) {
162
+ groupAnchors.delete(groupId);
163
+ removed += 1;
164
+ }
165
+ }
166
+ if (removed > 0)
167
+ markPersistDirty();
168
+ return removed;
169
+ }
170
+ /**
171
+ * 初始化持久化(register(api) 时调用一次,传入 api.runtime.state.resolveStateDir())。
172
+ * 读盘加载并清理过期项、登记每日清理定时器;失败降级为纯内存模式,绝不抛。
173
+ * 进程级共享:整个进程只从磁盘加载一次,避免插件重载后新模块实例重新 init 覆盖共享内存态。
174
+ */
175
+ export function initGroupAnchorStore(stateDir) {
176
+ persistHolder.persistPath = resolvePersistPath(stateDir);
177
+ persistHolder.warnedPersistError = false;
178
+ if (!persistHolder.loadedOnce) {
179
+ persistHolder.loadedOnce = true;
180
+ loadPersistedAnchors();
181
+ pruneGroupAnchors();
182
+ }
183
+ scheduleDailyCleanup();
184
+ }
185
+ /** 立即落盘(测试 / 进程退出钩子使用)。 */
186
+ export function flushGroupAnchorPersistence() {
187
+ if (persistHolder.persistTimer) {
188
+ clearTimeout(persistHolder.persistTimer);
189
+ persistHolder.persistTimer = undefined;
190
+ }
191
+ if (persistHolder.persistDirty) {
192
+ persistHolder.persistDirty = false;
193
+ persistNow();
194
+ }
195
+ }
196
+ export function __resetGroupAnchorStoreForTests() {
197
+ disposeGroupAnchorStore();
198
+ }
199
+ /**
200
+ * 插件真卸载/网关停止时:先落盘,再清空共享内存、定时器并复位持久化机器
201
+ * (下次进程/重载可重新从磁盘加载)。热重载接管场景不应调用本函数。
202
+ */
203
+ export function disposeGroupAnchorStore() {
204
+ flushGroupAnchorPersistence();
205
+ groupAnchors.clear();
206
+ if (persistHolder.persistTimer) {
207
+ clearTimeout(persistHolder.persistTimer);
208
+ persistHolder.persistTimer = undefined;
209
+ }
210
+ if (persistHolder.dailyCleanupTimer) {
211
+ clearInterval(persistHolder.dailyCleanupTimer);
212
+ persistHolder.dailyCleanupTimer = undefined;
213
+ }
214
+ persistHolder.persistPath = undefined;
215
+ persistHolder.warnedPersistError = false;
216
+ persistHolder.loadedOnce = false;
217
+ }
218
+ //# sourceMappingURL=group-anchor-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-anchor-store.js","sourceRoot":"","sources":["../../../src/session/group-anchor-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=group-anchor-store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-anchor-store.test.d.ts","sourceRoot":"","sources":["../../../src/session/group-anchor-store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import assert from "node:assert/strict";
2
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { afterEach, describe, it } from "node:test";
6
+ import { __resetGroupAnchorStoreForTests, flushGroupAnchorPersistence, getGroupAnchor, GROUP_ANCHOR_RETENTION_MS, initGroupAnchorStore, noteGroupAnchor, pruneGroupAnchors, } from "./group-anchor-store.js";
7
+ afterEach(() => __resetGroupAnchorStoreForTests());
8
+ function makeStateDir() {
9
+ return mkdtempSync(join(tmpdir(), "xg-group-anchor-"));
10
+ }
11
+ function persistFileFor(stateDir) {
12
+ return join(stateDir, "xgjktech", "group-anchors.json");
13
+ }
14
+ describe("group anchor store", () => {
15
+ it("记录并读取群锚点(trim 前后空白)", () => {
16
+ noteGroupAnchor(" g-1 ", " msg-1 ");
17
+ assert.equal(getGroupAnchor("g-1"), "msg-1");
18
+ assert.equal(getGroupAnchor(" g-1 "), "msg-1");
19
+ });
20
+ it("忽略空 / 超长 / 含控制字符的 groupId 与 msgId", () => {
21
+ noteGroupAnchor("", "msg-1");
22
+ noteGroupAnchor("g-1", "");
23
+ noteGroupAnchor("g-1", "x".repeat(65));
24
+ noteGroupAnchor("g-1", "a\0b");
25
+ noteGroupAnchor("g-1", "a\r\nb");
26
+ assert.equal(getGroupAnchor("g-1"), undefined);
27
+ assert.equal(getGroupAnchor(""), undefined);
28
+ assert.equal(getGroupAnchor(undefined), undefined);
29
+ });
30
+ it("重复记录同群锚点覆盖为最新值", () => {
31
+ noteGroupAnchor("g-1", "msg-1");
32
+ noteGroupAnchor("g-1", "msg-2");
33
+ assert.equal(getGroupAnchor("g-1"), "msg-2");
34
+ });
35
+ it("超过保留期的锚点读取时视为不存在并回收", () => {
36
+ noteGroupAnchor("g-1", "msg-1");
37
+ const future = Date.now() + GROUP_ANCHOR_RETENTION_MS + 1;
38
+ assert.equal(getGroupAnchor("g-1", future), undefined);
39
+ // 已被回收:用当前时间也读不到
40
+ assert.equal(getGroupAnchor("g-1"), undefined);
41
+ });
42
+ it("pruneGroupAnchors 清理过期项并返回条数", () => {
43
+ noteGroupAnchor("g-1", "msg-1");
44
+ noteGroupAnchor("g-2", "msg-2");
45
+ assert.equal(pruneGroupAnchors(Date.now()), 0);
46
+ assert.equal(pruneGroupAnchors(Date.now() + GROUP_ANCHOR_RETENTION_MS + 1), 2);
47
+ assert.equal(getGroupAnchor("g-1"), undefined);
48
+ assert.equal(getGroupAnchor("g-2"), undefined);
49
+ });
50
+ });
51
+ describe("group anchor store persistence", () => {
52
+ it("flush 落盘后 reset + init 同目录可恢复", () => {
53
+ const stateDir = makeStateDir();
54
+ initGroupAnchorStore(stateDir);
55
+ noteGroupAnchor("g-1", "msg-1");
56
+ flushGroupAnchorPersistence();
57
+ const file = persistFileFor(stateDir);
58
+ assert.equal(existsSync(file), true);
59
+ const parsed = JSON.parse(readFileSync(file, "utf8"));
60
+ assert.equal(parsed.version, 1);
61
+ assert.equal(parsed.entries["g-1"]?.msgId, "msg-1");
62
+ // 模拟进程重启:清空内存后重新 init
63
+ __resetGroupAnchorStoreForTests();
64
+ assert.equal(getGroupAnchor("g-1"), undefined);
65
+ initGroupAnchorStore(stateDir);
66
+ assert.equal(getGroupAnchor("g-1"), "msg-1");
67
+ });
68
+ it("加载时丢弃超过保留期的条目", () => {
69
+ const stateDir = makeStateDir();
70
+ const file = persistFileFor(stateDir);
71
+ mkdirSync(join(stateDir, "xgjktech"), { recursive: true });
72
+ writeFileSync(file, JSON.stringify({
73
+ version: 1,
74
+ entries: {
75
+ fresh: { msgId: "m-fresh", updatedAt: Date.now() - 1000 },
76
+ stale: { msgId: "m-stale", updatedAt: Date.now() - GROUP_ANCHOR_RETENTION_MS - 1 },
77
+ },
78
+ }), "utf8");
79
+ initGroupAnchorStore(stateDir);
80
+ assert.equal(getGroupAnchor("fresh"), "m-fresh");
81
+ assert.equal(getGroupAnchor("stale"), undefined);
82
+ });
83
+ it("加载时跳过损坏/非法条目,不抛", () => {
84
+ const stateDir = makeStateDir();
85
+ const file = persistFileFor(stateDir);
86
+ mkdirSync(join(stateDir, "xgjktech"), { recursive: true });
87
+ writeFileSync(file, "{not-json", "utf8");
88
+ assert.doesNotThrow(() => initGroupAnchorStore(stateDir));
89
+ assert.equal(getGroupAnchor("g-1"), undefined);
90
+ });
91
+ it("dispose 会先落盘待写数据", () => {
92
+ const stateDir = makeStateDir();
93
+ initGroupAnchorStore(stateDir);
94
+ noteGroupAnchor("g-1", "msg-1");
95
+ // 不显式 flush,dispose 内部应 flush
96
+ __resetGroupAnchorStoreForTests();
97
+ const parsed = JSON.parse(readFileSync(persistFileFor(stateDir), "utf8"));
98
+ assert.equal(parsed.entries["g-1"]?.msgId, "msg-1");
99
+ });
100
+ });
101
+ //# sourceMappingURL=group-anchor-store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-anchor-store.test.js","sourceRoot":"","sources":["../../../src/session/group-anchor-store.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../../src/turn/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;;;;;;;GAWG;AAEH,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;AAwED,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAsCzD;AA+CD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK7E;AAuDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAkEV;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKhF;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,MAAM,GACxB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAWlF;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,CA8BnF;AAuND,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,IAAI,IAAI,CAU7C"}
1
+ {"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../../src/turn/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE;;;;;;;;;;;GAWG;AAEH,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;AAwED,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAsCzD;AA+CD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAO7E;AAuDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAsEV;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKhF;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,MAAM,GACxB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAWlF;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,CA8BnF;AAuND,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,IAAI,IAAI,CAU7C"}
@@ -1,5 +1,6 @@
1
1
  import { getOrCreateShared, getSharedMap } from "../plugin/process-shared-store.js";
2
2
  import { turnOnAllChildrenDone } from "./turn-end-controller.js";
3
+ import { getGroupAnchor, noteGroupAnchor } from "../session/group-anchor-store.js";
3
4
  /** 模块实例 ID:用于确认插件是否被重复加载(若日志出现两个不同 id,则存在双实例)。 */
4
5
  const MODULE_INSTANCE_ID = `m${Date.now().toString(36)}${Math.random().toString(36).slice(2, 8)}`;
5
6
  console.log(`[subagent-monitor] module loaded instance=${MODULE_INSTANCE_ID} pid=${process.pid} title=${(process.title || "(none)").trim()}`);
@@ -120,6 +121,8 @@ export function noteSubagentGroupAnchor(groupId, anchor) {
120
121
  if (!gid || !a)
121
122
  return;
122
123
  groupAnchors.set(gid, { anchor: a, expiresAt: Date.now() + GROUP_ANCHOR_TTL_MS });
124
+ // 同步落盘,供网关重启后恢复锚点(进程内 groupAnchors 会随进程消失)。
125
+ noteGroupAnchor(gid, a);
123
126
  }
124
127
  function prune(now = Date.now()) {
125
128
  for (const [key, expiresAt] of roundAdmissionTombstones) {
@@ -203,7 +206,10 @@ export function registerSubagent(params) {
203
206
  });
204
207
  targets.delete(params.childSessionKey);
205
208
  }
206
- const anchor = (params.replyToMsgId ?? "").trim() || groupAnchors.get(params.groupId)?.anchor || "";
209
+ const anchor = (params.replyToMsgId ?? "").trim() ||
210
+ groupAnchors.get(params.groupId)?.anchor ||
211
+ getGroupAnchor(params.groupId) ||
212
+ "";
207
213
  if (anchor) {
208
214
  noteSubagentGroupAnchor(params.groupId, anchor);
209
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-monitor.js","sourceRoot":"","sources":["../../../src/turn/subagent-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent-monitor.js","sourceRoot":"","sources":["../../../src/turn/subagent-monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"turn-agent-event-subscription.d.ts","sourceRoot":"","sources":["../../../src/turn/turn-agent-event-subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AA2GnF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKxE;AAED,wBAAgB,2BAA2B,IAAI,UAAU,CACrD,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,gCAAgC,CAAC,CACzE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CA6Pb;AAED,qBAAqB;AACrB,wBAAgB,sBAAsB,IAAI,IAAI,CAQ7C;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAQ/E"}
1
+ {"version":3,"file":"turn-agent-event-subscription.d.ts","sourceRoot":"","sources":["../../../src/turn/turn-agent-event-subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AA2HnF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKxE;AAED,wBAAgB,2BAA2B,IAAI,UAAU,CACrD,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,gCAAgC,CAAC,CACzE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAsQb;AAED,qBAAqB;AACrB,wBAAgB,sBAAsB,IAAI,IAAI,CAQ7C;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAQ/E"}
@@ -47,6 +47,22 @@ function isXgImGroupSessionKey(sessionKey) {
47
47
  return (sessionKey.startsWith("agent:") &&
48
48
  sessionKey.includes(":xg_cwork_im:group:"));
49
49
  }
50
+ /** 从 `agent:<agentId>:xg_cwork_im:group:<groupId>` 解析 agentId(== 流客户端登记的 key)。 */
51
+ function parseImSessionAgentId(sessionKey) {
52
+ if (!sessionKey.startsWith("agent:"))
53
+ return undefined;
54
+ const rest = sessionKey.slice("agent:".length);
55
+ const end = rest.indexOf(":");
56
+ return (end > 0 ? rest.slice(0, end) : rest).trim() || undefined;
57
+ }
58
+ /** 从 `agent:<agentId>:xg_cwork_im:group:<groupId>` 解析 groupId。 */
59
+ function parseImSessionGroupId(sessionKey) {
60
+ const marker = ":xg_cwork_im:group:";
61
+ const idx = sessionKey.indexOf(marker);
62
+ if (idx < 0)
63
+ return undefined;
64
+ return sessionKey.slice(idx + marker.length).trim() || undefined;
65
+ }
50
66
  function clipWsDisplay(text, max) {
51
67
  const t = text.trim().replace(/\r\n/g, "\n").replace(/\n+/g, " ");
52
68
  if (!t)
@@ -264,15 +280,23 @@ export function createTurnAgentEventHandler() {
264
280
  // (ActiveRound / plan-ws-registry),不再绑 replyOptions.onPlanUpdate。
265
281
  // 这样首段与子任务返回后的 resume/settle 段走同一条路径,整轮最终计划状态
266
282
  // 不会因为 resume 段绕开 wrapper 而丢失。
267
- const sessionKey = runIdToSessionKey.get(runId);
268
- if (!sessionKey)
283
+ //
284
+ // 与轮次解耦:网关重启后恢复的 settle 段、或迟到的计划更新可能没有活跃轮次。
285
+ // 此时不再直接丢弃,而是把 groupId/agentId 从 sessionKey 解析出来交给
286
+ // handleCorePlanUpdate,由 sendPlanStat 用「进程级 stream client + 落盘群锚点」
287
+ // 兜底发送(见 plan-stat-event.ts resolveTarget),保证最终 PLAN_STAT 送达。
288
+ const sessionKey = event.sessionKey ?? runIdToSessionKey.get(runId);
289
+ if (!sessionKey || !isXgImGroupSessionKey(sessionKey))
269
290
  return;
270
291
  const round = findActiveRoundForSession(sessionKey);
271
- if (!round)
292
+ if (round)
293
+ turnOnActivity(round.roundKey, round.generation);
294
+ const agentId = round?.agentId ?? parseImSessionAgentId(sessionKey);
295
+ const groupId = round?.groupId ?? parseImSessionGroupId(sessionKey);
296
+ if (!agentId || !groupId)
272
297
  return;
273
- turnOnActivity(round.roundKey, round.generation);
274
298
  console.log(`${LOG_PREFIX} plan forward runId=${runId} session=${sessionKey} ` +
275
- `round=${round.roundKey}#${round.generation}`);
299
+ `round=${round ? `${round.roundKey}#${round.generation}` : "(none)"}`);
276
300
  const payload = {
277
301
  ...(typeof event.data?.phase === "string" ? { phase: event.data.phase } : {}),
278
302
  ...(typeof event.data?.title === "string" ? { title: event.data.title } : {}),
@@ -284,25 +308,27 @@ export function createTurnAgentEventHandler() {
284
308
  : {}),
285
309
  ...(typeof event.data?.source === "string" ? { source: event.data.source } : {}),
286
310
  };
287
- const card = readCoreProgressCard({ agentId: round.agentId, sessionKey });
311
+ const card = readCoreProgressCard({ agentId, sessionKey });
288
312
  handleCorePlanUpdate({
289
313
  sessionKey,
290
- groupId: round.groupId,
291
- accountId: round.accountId,
314
+ groupId,
315
+ accountId: agentId,
292
316
  payload,
293
317
  ...(card?.markdown ? { markdown: card.markdown } : {}),
294
318
  // 事件 steps 为空时(如最后一次 progress_card 只更新 markdown、
295
319
  // 或事件投影与落库卡不一致)用落库卡 steps 兜底,避免漏发 PLAN_STAT。
296
320
  ...(card?.steps?.length ? { cardSteps: card.steps } : {}),
297
321
  });
298
- const title = typeof event.data?.title === "string" ? event.data.title.trim() : "";
299
- const explanation = typeof event.data?.explanation === "string" ? event.data.explanation.trim() : "";
300
- const display = title.length > 0
301
- ? clipWsDisplay(`正在更新计划:${title}`, 160)
302
- : explanation.length > 0
303
- ? clipWsDisplay(`计划更新:${explanation}`, 160)
304
- : "正在更新执行计划…";
305
- void safeStreamProgress(round, "PLAN_UPDATE", display);
322
+ if (round) {
323
+ const title = typeof event.data?.title === "string" ? event.data.title.trim() : "";
324
+ const explanation = typeof event.data?.explanation === "string" ? event.data.explanation.trim() : "";
325
+ const display = title.length > 0
326
+ ? clipWsDisplay(`正在更新计划:${title}`, 160)
327
+ : explanation.length > 0
328
+ ? clipWsDisplay(`计划更新:${explanation}`, 160)
329
+ : "正在更新执行计划…";
330
+ void safeStreamProgress(round, "PLAN_UPDATE", display);
331
+ }
306
332
  return;
307
333
  }
308
334
  if (stream === "thinking" || stream === "compaction") {