@xgjktech/xg_cwork_im 1.17.56 → 1.18.1

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 (43) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +5 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/account-connection.d.ts.map +1 -1
  5. package/dist/src/account-connection.js +34 -8
  6. package/dist/src/account-connection.js.map +1 -1
  7. package/dist/src/channel-config.d.ts +13 -0
  8. package/dist/src/channel-config.d.ts.map +1 -1
  9. package/dist/src/channel-config.js +3 -0
  10. package/dist/src/channel-config.js.map +1 -1
  11. package/dist/src/connection.d.ts +24 -0
  12. package/dist/src/connection.d.ts.map +1 -1
  13. package/dist/src/connection.js +123 -78
  14. package/dist/src/connection.js.map +1 -1
  15. package/dist/src/connection.test.d.ts +2 -0
  16. package/dist/src/connection.test.d.ts.map +1 -0
  17. package/dist/src/connection.test.js +110 -0
  18. package/dist/src/connection.test.js.map +1 -0
  19. package/dist/src/cron-appkey-binding-store.test.js +41 -3
  20. package/dist/src/cron-appkey-binding-store.test.js.map +1 -1
  21. package/dist/src/dispatch-mentioned-reply.d.ts +5 -0
  22. package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
  23. package/dist/src/dispatch-mentioned-reply.js +24 -2
  24. package/dist/src/dispatch-mentioned-reply.js.map +1 -1
  25. package/dist/src/register-exec-env-hook.d.ts.map +1 -1
  26. package/dist/src/register-exec-env-hook.js +8 -1
  27. package/dist/src/register-exec-env-hook.js.map +1 -1
  28. package/dist/src/reply-dispatch-driver.d.ts +74 -0
  29. package/dist/src/reply-dispatch-driver.d.ts.map +1 -0
  30. package/dist/src/reply-dispatch-driver.js +175 -0
  31. package/dist/src/reply-dispatch-driver.js.map +1 -0
  32. package/dist/src/reply-dispatch-driver.test.d.ts +2 -0
  33. package/dist/src/reply-dispatch-driver.test.d.ts.map +1 -0
  34. package/dist/src/reply-dispatch-driver.test.js +233 -0
  35. package/dist/src/reply-dispatch-driver.test.js.map +1 -0
  36. package/dist/src/session-env-store.js +1 -1
  37. package/dist/src/session-env-store.js.map +1 -1
  38. package/dist/src/types.d.ts +9 -0
  39. package/dist/src/types.d.ts.map +1 -1
  40. package/dist/src/types.js.map +1 -1
  41. package/dist/src/workspace-event.d.ts +1 -1
  42. package/dist/src/workspace-event.d.ts.map +1 -1
  43. package/package.json +2 -2
@@ -13,18 +13,119 @@ import { OPENCLAW_WORKSPACE_EVENT_CMD } from "./workspace-event-protocol.js";
13
13
  import { parseWsInboundMessage } from "./ws-inbound-schema.js";
14
14
  export const OPENCLAW_APPLY_SYNC_MAPPING_CMD = "openclawApplySyncMapping";
15
15
  export { OPENCLAW_WORKSPACE_EVENT_CMD } from "./workspace-event-protocol.js";
16
+ /**
17
+ * 构建 BEGIN 载荷。
18
+ * groupId / replyToMsgId 任一为空白时返回 null(对应原实现直接 return,不发帧)。
19
+ */
20
+ export function buildBeginPayload(opts) {
21
+ const gid = opts.groupId?.trim();
22
+ const anchor = opts.replyToMsgId?.trim();
23
+ if (!gid || !anchor)
24
+ return null;
25
+ return {
26
+ cmd: "im_stream_msg",
27
+ params: {
28
+ event: "BEGIN",
29
+ data: {
30
+ groupId: gid,
31
+ replyToMsgId: anchor,
32
+ toUserId: opts.toUserId ?? null,
33
+ },
34
+ },
35
+ };
36
+ }
37
+ /**
38
+ * 构建进度事件载荷(TOOL_PHASE / PLAN_UPDATE / RUN_EVENT 等)。
39
+ * groupId / replyToMsgId / displayText 任一空白时返回 null;summary 超长裁剪为 200 字(… 结尾)。
40
+ */
41
+ export function buildProgressPayload(opts) {
42
+ const gid = opts.groupId?.trim();
43
+ const anchor = opts.replyToMsgId?.trim();
44
+ const displayText = opts.displayText?.trim();
45
+ if (!gid || !anchor || !displayText)
46
+ return null;
47
+ const data = { groupId: gid, replyToMsgId: anchor, displayText };
48
+ const rawSum = opts.summary?.trim();
49
+ if (rawSum) {
50
+ data.summary =
51
+ rawSum.length > WS_PROGRESS_SUMMARY_MAX
52
+ ? `${rawSum.slice(0, WS_PROGRESS_SUMMARY_MAX - 1)}…`
53
+ : rawSum;
54
+ }
55
+ return {
56
+ cmd: "im_stream_msg",
57
+ params: {
58
+ event: opts.event,
59
+ data,
60
+ },
61
+ };
62
+ }
63
+ /** 构建 RUN_USAGE 载荷;groupId / replyToMsgId 任一空白时返回 null。 */
64
+ export function buildRunUsagePayload(data) {
65
+ const gid = data.groupId?.trim();
66
+ const anchor = data.replyToMsgId?.trim();
67
+ if (!gid || !anchor)
68
+ return null;
69
+ return {
70
+ cmd: "im_stream_msg",
71
+ params: {
72
+ event: "RUN_USAGE",
73
+ data: {
74
+ groupId: gid,
75
+ replyToMsgId: anchor,
76
+ usage: data.usage,
77
+ },
78
+ },
79
+ };
80
+ }
81
+ /** 构建自定义事件载荷(SUBAGENT_STAT / PLAN_STAT / ACTION_DISPATCH / CHAT_FILE 等);空锚点时返回 null。 */
82
+ export function buildSendEventPayload(opts) {
83
+ const gid = opts.groupId?.trim();
84
+ const anchor = opts.replyToMsgId?.trim();
85
+ if (!gid || !anchor)
86
+ return null;
87
+ return {
88
+ cmd: "im_stream_msg",
89
+ params: {
90
+ event: opts.event,
91
+ data: {
92
+ groupId: gid,
93
+ replyToMsgId: anchor,
94
+ ...opts.data,
95
+ },
96
+ },
97
+ };
98
+ }
99
+ /** 构建 FINISHED 载荷;groupId / replyToMsgId 任一空白时返回 null。 */
100
+ export function buildFinishedPayload(reason, ctx) {
101
+ const gid = ctx?.groupId?.trim();
102
+ const anchor = ctx?.replyToMsgId?.trim();
103
+ if (!gid || !anchor)
104
+ return null;
105
+ return {
106
+ cmd: "im_stream_msg",
107
+ params: {
108
+ event: "FINISHED",
109
+ data: {
110
+ groupId: gid,
111
+ replyToMsgId: anchor,
112
+ reason,
113
+ },
114
+ },
115
+ };
116
+ }
16
117
  /** 心跳间隔(ms):每 5 秒发一次 ping,防止连接被后台剔除(ws-notify 空闲超时约 10 秒) */
17
118
  const PING_INTERVAL_MS = 5_000;
18
119
  /** 心跳日志间隔(ms):每 10 分钟输出一次 info 日志,避免刷屏 */
19
120
  const PING_LOG_INTERVAL_MS = 600_000;
121
+ /** 进度 `data.summary` 最大长度(与产品约定一致) */
122
+ const WS_PROGRESS_SUMMARY_MAX = 200;
20
123
  /** 计算指数退避延迟(带随机抖动) */
21
124
  function calcDelay(attempt, initial, max, jitter) {
22
125
  const base = Math.min(initial * 2 ** attempt, max);
23
126
  const jitterMs = base * jitter * Math.random();
24
127
  return Math.round(base + jitterMs);
25
128
  }
26
- /** 进度 `data.summary` 最大长度(与产品约定一致) */
27
- const WS_PROGRESS_SUMMARY_MAX = 200;
28
129
  /**
29
130
  * 启动 WebSocket 连接并监听消息。
30
131
  *
@@ -244,22 +345,12 @@ export function startWebSocket(config, token, onMessage, log, hooks) {
244
345
  connect();
245
346
  const streamClient = {
246
347
  async start(opts) {
247
- const gid = opts.groupId?.trim();
248
- const anchor = opts.replyToMsgId?.trim();
249
- if (!gid || !anchor)
348
+ const payload = buildBeginPayload(opts);
349
+ if (!payload)
250
350
  return;
351
+ const gid = payload.params.data.groupId;
352
+ const anchor = payload.params.data.replyToMsgId;
251
353
  const socket = ensureSocketReady();
252
- const payload = {
253
- cmd: "im_stream_msg",
254
- params: {
255
- event: "BEGIN",
256
- data: {
257
- groupId: gid,
258
- replyToMsgId: anchor,
259
- toUserId: opts.toUserId ?? null,
260
- },
261
- },
262
- };
263
354
  log.info(`${logPrefix} ⇒ WS BEGIN stream: groupId=${gid} replyToMsgId=${anchor.length <= 40 ? anchor : `${anchor.slice(0, 20)}…(len=${anchor.length})`}`);
264
355
  await new Promise((resolve, reject) => {
265
356
  socket.send(JSON.stringify(payload), (err) => {
@@ -271,26 +362,11 @@ export function startWebSocket(config, token, onMessage, log, hooks) {
271
362
  });
272
363
  },
273
364
  async streamProgress(opts) {
274
- const gid = opts.groupId?.trim();
275
- const anchor = opts.replyToMsgId?.trim();
276
- const displayText = opts.displayText?.trim();
277
- if (!gid || !anchor || !displayText)
365
+ const payload = buildProgressPayload(opts);
366
+ if (!payload)
278
367
  return;
279
- const data = { groupId: gid, replyToMsgId: anchor, displayText };
280
- const rawSum = opts.summary?.trim();
281
- if (rawSum) {
282
- data.summary =
283
- rawSum.length > WS_PROGRESS_SUMMARY_MAX
284
- ? `${rawSum.slice(0, WS_PROGRESS_SUMMARY_MAX - 1)}…`
285
- : rawSum;
286
- }
287
- const payload = {
288
- cmd: "im_stream_msg",
289
- params: {
290
- event: opts.event,
291
- data,
292
- },
293
- };
368
+ const displayText = payload.params.data.displayText;
369
+ const gid = payload.params.data.groupId;
294
370
  const socket = ensureSocketReady();
295
371
  if (config.debug) {
296
372
  log.debug?.(`${logPrefix} ⇒ WS ${opts.event}: ${displayText.length > 96 ? `${displayText.slice(0, 93)}…` : displayText}`);
@@ -308,23 +384,12 @@ export function startWebSocket(config, token, onMessage, log, hooks) {
308
384
  });
309
385
  },
310
386
  async streamUsage(data) {
311
- const gid = data.groupId?.trim();
312
- const anchor = data.replyToMsgId?.trim();
313
- if (!gid || !anchor)
387
+ const payload = buildRunUsagePayload(data);
388
+ if (!payload)
314
389
  return;
315
- const socket = ensureSocketReady();
390
+ const gid = payload.params.data.groupId;
316
391
  const usage = data.usage;
317
- const payload = {
318
- cmd: "im_stream_msg",
319
- params: {
320
- event: "RUN_USAGE",
321
- data: {
322
- groupId: gid,
323
- replyToMsgId: anchor,
324
- usage,
325
- },
326
- },
327
- };
392
+ const socket = ensureSocketReady();
328
393
  log.info(`${logPrefix} ⇒ WS RUN_USAGE: groupId=${gid} ` +
329
394
  `modelRef=${usage.modelRef ?? "(none)"} ` +
330
395
  `in=${usage.inputTokens ?? "?"} out=${usage.outputTokens ?? "?"} ` +
@@ -339,22 +404,12 @@ export function startWebSocket(config, token, onMessage, log, hooks) {
339
404
  });
340
405
  },
341
406
  async sendEvent(opts) {
342
- const gid = opts.groupId?.trim();
343
- const anchor = opts.replyToMsgId?.trim();
344
- if (!gid || !anchor)
407
+ const payload = buildSendEventPayload(opts);
408
+ if (!payload)
345
409
  return;
410
+ const gid = payload.params.data.groupId;
411
+ const anchor = payload.params.data.replyToMsgId;
346
412
  const socket = ensureSocketReady();
347
- const payload = {
348
- cmd: "im_stream_msg",
349
- params: {
350
- event: opts.event,
351
- data: {
352
- groupId: gid,
353
- replyToMsgId: anchor,
354
- ...opts.data,
355
- },
356
- },
357
- };
358
413
  if (config.debug) {
359
414
  log.debug?.(`${logPrefix} ⇒ WS ${opts.event} event sent`);
360
415
  }
@@ -368,22 +423,12 @@ export function startWebSocket(config, token, onMessage, log, hooks) {
368
423
  });
369
424
  },
370
425
  async end(reason, ctx) {
371
- const gid = ctx?.groupId?.trim();
372
- const anchor = ctx?.replyToMsgId?.trim();
373
- if (!gid || !anchor)
426
+ const payload = buildFinishedPayload(reason, ctx);
427
+ if (!payload)
374
428
  return;
429
+ const gid = payload.params.data.groupId;
430
+ const anchor = payload.params.data.replyToMsgId;
375
431
  const socket = ensureSocketReady();
376
- const payload = {
377
- cmd: "im_stream_msg",
378
- params: {
379
- event: "FINISHED",
380
- data: {
381
- groupId: gid,
382
- replyToMsgId: anchor,
383
- reason,
384
- },
385
- },
386
- };
387
432
  log.info(`${logPrefix} ⇒ WS FINISHED stream: groupId=${gid} replyToMsgId=${anchor.length <= 40 ? anchor : `${anchor.slice(0, 20)}…(len=${anchor.length})`} reason=${reason}`);
388
433
  await new Promise((resolve, reject) => {
389
434
  socket.send(JSON.stringify(payload), (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.d.ts","sourceRoot":"","sources":["../../src/connection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ import assert from "node:assert/strict";
2
+ import { describe, it } from "node:test";
3
+ import { buildBeginPayload, buildFinishedPayload, buildProgressPayload, buildRunUsagePayload, buildSendEventPayload, } from "./connection.js";
4
+ /**
5
+ * WS `im_stream_msg` 出站契约(前端逐字节依赖,改造/重构不得破坏):
6
+ * cmd 恒为 `im_stream_msg`;params.event 为事件名;params.data 字段序固定。
7
+ * 以下断言 JSON.stringify 后的字节,字段顺序变化会立即失败。
8
+ */
9
+ function wire(payload) {
10
+ return JSON.stringify(payload);
11
+ }
12
+ describe("WS im_stream_msg payload builders (frontend wire contract)", () => {
13
+ it("BEGIN 载荷字节与字段顺序稳定", () => {
14
+ const p = buildBeginPayload({ groupId: "g-1", replyToMsgId: "msg-1" });
15
+ assert.notEqual(p, null);
16
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"BEGIN","data":{"groupId":"g-1","replyToMsgId":"msg-1","toUserId":null}}}');
17
+ });
18
+ it("BEGIN 缺锚点时不发(返回 null)", () => {
19
+ assert.equal(buildBeginPayload({ groupId: "g-1" }), null);
20
+ assert.equal(buildBeginPayload({ groupId: "", replyToMsgId: "msg-1" }), null);
21
+ assert.equal(buildBeginPayload({}), null);
22
+ });
23
+ it("BEGIN 的 groupId/replyToMsgId 会 trim", () => {
24
+ const p = buildBeginPayload({ groupId: " g-1 ", replyToMsgId: " msg-1 " });
25
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"BEGIN","data":{"groupId":"g-1","replyToMsgId":"msg-1","toUserId":null}}}');
26
+ });
27
+ it("TOOL_PHASE / RUN_EVENT 进度载荷:data 字段序 groupId→replyToMsgId→displayText→summary", () => {
28
+ const p = buildProgressPayload({
29
+ groupId: "g-1",
30
+ replyToMsgId: "msg-1",
31
+ event: "RUN_EVENT",
32
+ displayText: "正在调用「工具」…",
33
+ summary: "run cmd (in wd)",
34
+ });
35
+ assert.notEqual(p, null);
36
+ assert.equal(p.params.event, "RUN_EVENT");
37
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"RUN_EVENT","data":{"groupId":"g-1","replyToMsgId":"msg-1","displayText":"正在调用「工具」…","summary":"run cmd (in wd)"}}}');
38
+ });
39
+ it("进度载荷缺 displayText / 锚点时返回 null", () => {
40
+ assert.equal(buildProgressPayload({ groupId: "g-1", replyToMsgId: "m", event: "RUN_EVENT", displayText: " " }), null);
41
+ assert.equal(buildProgressPayload({ groupId: "g-1", replyToMsgId: "", event: "RUN_EVENT", displayText: "x" }), null);
42
+ });
43
+ it("进度 summary 超过 200 字截断并以 … 结尾(无 summary 时 data 不含该键)", () => {
44
+ const short = buildProgressPayload({
45
+ groupId: "g-1",
46
+ replyToMsgId: "m",
47
+ event: "TOOL_PHASE",
48
+ displayText: "x",
49
+ });
50
+ assert.equal("summary" in short.params.data, false);
51
+ const raw = "s".repeat(205);
52
+ const p = buildProgressPayload({
53
+ groupId: "g-1",
54
+ replyToMsgId: "m",
55
+ event: "TOOL_PHASE",
56
+ displayText: "x",
57
+ summary: raw,
58
+ });
59
+ const summary = p.params.data.summary;
60
+ assert.equal(summary.length, 200);
61
+ assert.equal(summary.endsWith("…"), true);
62
+ assert.equal(summary.slice(0, 199), "s".repeat(199));
63
+ });
64
+ it("RUN_USAGE 载荷:event=RUN_USAGE,usage 原样内嵌(键序保持 source 在前)", () => {
65
+ const p = buildRunUsagePayload({
66
+ groupId: "g-1",
67
+ replyToMsgId: "msg-1",
68
+ usage: {
69
+ source: "session",
70
+ provider: "anthropic",
71
+ model: "claude-sonnet",
72
+ modelRef: "anthropic/claude-sonnet",
73
+ inputTokens: 100,
74
+ outputTokens: 50,
75
+ totalTokens: 150,
76
+ runId: "run-1",
77
+ },
78
+ });
79
+ assert.notEqual(p, null);
80
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"RUN_USAGE","data":{"groupId":"g-1","replyToMsgId":"msg-1","usage":{"source":"session","provider":"anthropic","model":"claude-sonnet","modelRef":"anthropic/claude-sonnet","inputTokens":100,"outputTokens":50,"totalTokens":150,"runId":"run-1"}}}}');
81
+ });
82
+ it("sendEvent 自定义事件:groupId/replyToMsgId 先于透传 data;data 展开覆盖顺序稳定", () => {
83
+ const p = buildSendEventPayload({
84
+ groupId: "g-1",
85
+ replyToMsgId: "msg-1",
86
+ event: "SUBAGENT_STAT",
87
+ data: { subagentList: [{ runId: "r1", status: "running", messages: [] }] },
88
+ });
89
+ assert.notEqual(p, null);
90
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"SUBAGENT_STAT","data":{"groupId":"g-1","replyToMsgId":"msg-1","subagentList":[{"runId":"r1","status":"running","messages":[]}]}}}');
91
+ });
92
+ it("sendEvent data 展开位于 groupId/replyToMsgId 之后(现有语义:重叠键会被 data 覆盖,调用方不传重叠键)", () => {
93
+ const p = buildSendEventPayload({
94
+ groupId: "g-1",
95
+ replyToMsgId: "msg-1",
96
+ event: "X",
97
+ data: { groupId: "g-hack" },
98
+ });
99
+ assert.equal(p.params.data.groupId, "g-hack");
100
+ assert.equal(p.params.data.replyToMsgId, "msg-1");
101
+ });
102
+ it("FINISHED 载荷:event=FINISHED,reason 原样透传", () => {
103
+ const p = buildFinishedPayload("stop", { groupId: "g-1", replyToMsgId: "msg-1" });
104
+ assert.notEqual(p, null);
105
+ assert.equal(wire(p), '{"cmd":"im_stream_msg","params":{"event":"FINISHED","data":{"groupId":"g-1","replyToMsgId":"msg-1","reason":"stop"}}}');
106
+ assert.equal(buildFinishedPayload("aborted", {}), null);
107
+ assert.equal(buildFinishedPayload("stop"), null);
108
+ });
109
+ });
110
+ //# sourceMappingURL=connection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../src/connection.test.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,12 @@ import { __resetActiveCronContextStoreForTests, getActiveCronContexts, setActive
7
7
  import { __resetCronAppKeyBindingStoreForTests, bindCronAppKey, getCronAppKeyBinding, initCronAppKeyBindingStore, } from "./cron-appkey-binding-store.js";
8
8
  import { disposePluginModule } from "./plugin-dispose.js";
9
9
  import { extractCronJobIdFromResult, isCronCreateCommand, parseCronSessionKey, parseCronSessionTarget, registerCronAppKeyBindingHook, registerExecEnvHook } from "./register-exec-env-hook.js";
10
- import { setSessionEnvEntry, setSessionUserContext, XG_OPENAPI_APP_KEY } from "./session-env-store.js";
10
+ import { __resetSessionEnvStoreForTests, flushSessionEnvPersistence, getSessionEnv, initSessionEnvPersistence, setSessionEnvEntry, setSessionUserContext, XG_OPENAPI_APP_KEY, } from "./session-env-store.js";
11
11
  let dirs = [];
12
12
  afterEach(() => {
13
13
  __resetActiveCronContextStoreForTests();
14
14
  __resetCronAppKeyBindingStoreForTests();
15
+ __resetSessionEnvStoreForTests();
15
16
  for (const dir of dirs.splice(0))
16
17
  rmSync(dir, { recursive: true, force: true });
17
18
  });
@@ -116,7 +117,7 @@ describe("cron appKey binding store", () => {
116
117
  assert.equal(parseCronSessionTarget("main"), undefined);
117
118
  assert.equal(parseCronSessionTarget("session:main"), undefined);
118
119
  });
119
- it("sessionTarget=session:... injects its exact active Cron binding", () => {
120
+ it("sessionTarget=session:... keeps its exact Cron binding after finished cleanup", () => {
120
121
  const dir = mkdtempSync(join(tmpdir(), "xg-cron-binding-"));
121
122
  dirs.push(dir);
122
123
  initCronAppKeyBindingStore(join(dir, "state"));
@@ -141,6 +142,8 @@ describe("cron appKey binding store", () => {
141
142
  agentId: "agent-a",
142
143
  job: { sessionTarget: `session:${sessionKey}` },
143
144
  }, {});
145
+ changed?.({ action: "finished", jobId: "job-1", agentId: "agent-a" }, {});
146
+ assert.equal(getActiveCronContexts("agent-a", sessionKey).length, 0);
144
147
  const result = before?.({ toolName: "exec", params: { env: { XG_OPENAPI_APP_KEY: "ai-wrong" } } }, { sessionKey, agentId: "agent-a" });
145
148
  assert.equal(result.params.env.XG_OPENAPI_APP_KEY, "key-1");
146
149
  });
@@ -166,7 +169,7 @@ describe("cron appKey binding store", () => {
166
169
  const result = newBefore?.({ toolName: "exec", params: { env: {} } }, { sessionKey, agentId: "agent-a" });
167
170
  assert.equal(result.params.env.XG_OPENAPI_APP_KEY, "key-1");
168
171
  });
169
- it("sessionTarget Cron child inherits through its persisted parent chain", () => {
172
+ it("sessionTarget Cron child inherits through its persisted parent chain after finished", () => {
170
173
  const dir = mkdtempSync(join(tmpdir(), "xg-cron-binding-"));
171
174
  dirs.push(dir);
172
175
  initCronAppKeyBindingStore(join(dir, "state"));
@@ -193,9 +196,44 @@ describe("cron appKey binding store", () => {
193
196
  registerExecEnvHook(api);
194
197
  registerCronAppKeyBindingHook(api);
195
198
  changed?.({ action: "started", jobId: "job-1", job: { sessionTarget: `session:${parentSessionKey}` } }, {});
199
+ changed?.({ action: "finished", jobId: "job-1", agentId: "agent-a" }, {});
196
200
  const result = before?.({ toolName: "exec", params: { env: {} } }, { sessionKey: childSessionKey, agentId: "agent-a" });
197
201
  assert.equal(result.params.env.XG_OPENAPI_APP_KEY, "key-1");
198
202
  });
203
+ it("sessionTarget Cron binding survives session store restart after finished", () => {
204
+ const dir = mkdtempSync(join(tmpdir(), "xg-cron-binding-"));
205
+ dirs.push(dir);
206
+ const stateDir = join(dir, "state");
207
+ initCronAppKeyBindingStore(stateDir);
208
+ initSessionEnvPersistence(stateDir);
209
+ bindCronAppKey({ agentId: "agent-a", jobId: "job-1", appKey: "key-1" });
210
+ const sessionKey = "agent:agent-a:xg_cwork_im:group:g1";
211
+ let changed;
212
+ registerCronAppKeyBindingHook({
213
+ on: (name, handler) => { if (name === "cron_changed")
214
+ changed = handler; },
215
+ });
216
+ changed?.({ action: "started", jobId: "job-1", agentId: "agent-a", sessionTarget: `session:${sessionKey}` }, {});
217
+ changed?.({ action: "finished", jobId: "job-1", agentId: "agent-a" }, {});
218
+ flushSessionEnvPersistence();
219
+ __resetSessionEnvStoreForTests();
220
+ initSessionEnvPersistence(stateDir);
221
+ assert.deepEqual(getSessionEnv(sessionKey), { [XG_OPENAPI_APP_KEY]: "key-1" });
222
+ });
223
+ it("sessionTarget Cron with no exact binding clears a stale session AppKey", () => {
224
+ const dir = mkdtempSync(join(tmpdir(), "xg-cron-binding-"));
225
+ dirs.push(dir);
226
+ initCronAppKeyBindingStore(join(dir, "state"));
227
+ const sessionKey = "agent:agent-a:xg_cwork_im:group:g1";
228
+ setSessionEnvEntry(sessionKey, XG_OPENAPI_APP_KEY, "stale-key");
229
+ let changed;
230
+ registerCronAppKeyBindingHook({
231
+ on: (name, handler) => { if (name === "cron_changed")
232
+ changed = handler; },
233
+ });
234
+ changed?.({ action: "started", jobId: "job-missing", agentId: "agent-a", sessionTarget: `session:${sessionKey}` }, {});
235
+ assert.equal(getSessionEnv(sessionKey), undefined);
236
+ });
199
237
  it("finished removes active context immediately and TTL removes a missing-finished context", () => {
200
238
  const sessionKey = "agent:agent-a:xg_cwork_im:group:g1";
201
239
  setActiveCronContext({ agentId: "agent-a", sessionKey, jobId: "job-1", ttlMs: 100, now: 1_000 });