@xgjktech/xg_cwork_im 1.17.25 → 1.17.26

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 (68) hide show
  1. package/README.md +484 -484
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/account-connection.d.ts.map +1 -1
  6. package/dist/src/account-connection.js +32 -18
  7. package/dist/src/account-connection.js.map +1 -1
  8. package/dist/src/account-reconciler.d.ts.map +1 -1
  9. package/dist/src/account-reconciler.js +6 -6
  10. package/dist/src/account-reconciler.js.map +1 -1
  11. package/dist/src/active-round-registry.d.ts +29 -0
  12. package/dist/src/active-round-registry.d.ts.map +1 -0
  13. package/dist/src/active-round-registry.js +60 -0
  14. package/dist/src/active-round-registry.js.map +1 -0
  15. package/dist/src/active-round-registry.test.d.ts +2 -0
  16. package/dist/src/active-round-registry.test.d.ts.map +1 -0
  17. package/dist/src/active-round-registry.test.js +62 -0
  18. package/dist/src/active-round-registry.test.js.map +1 -0
  19. package/dist/src/agent-context-types.js +2 -2
  20. package/dist/src/agent-context-types.js.map +1 -1
  21. package/dist/src/agent-context-types.test.js +9 -0
  22. package/dist/src/agent-context-types.test.js.map +1 -1
  23. package/dist/src/build-project-prompt.test.js +18 -18
  24. package/dist/src/channel-config.d.ts +60 -12
  25. package/dist/src/channel-config.d.ts.map +1 -1
  26. package/dist/src/channel-config.js +6 -2
  27. package/dist/src/channel-config.js.map +1 -1
  28. package/dist/src/dispatch-mentioned-reply.d.ts +3 -0
  29. package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
  30. package/dist/src/dispatch-mentioned-reply.js +43 -16
  31. package/dist/src/dispatch-mentioned-reply.js.map +1 -1
  32. package/dist/src/gateway-session-queue.d.ts +3 -0
  33. package/dist/src/gateway-session-queue.d.ts.map +1 -1
  34. package/dist/src/gateway-session-queue.js +1 -0
  35. package/dist/src/gateway-session-queue.js.map +1 -1
  36. package/dist/src/interrupt-round.d.ts +9 -0
  37. package/dist/src/interrupt-round.d.ts.map +1 -0
  38. package/dist/src/interrupt-round.js +44 -0
  39. package/dist/src/interrupt-round.js.map +1 -0
  40. package/dist/src/interrupt-round.test.d.ts +2 -0
  41. package/dist/src/interrupt-round.test.d.ts.map +1 -0
  42. package/dist/src/interrupt-round.test.js +133 -0
  43. package/dist/src/interrupt-round.test.js.map +1 -0
  44. package/dist/src/nas-volumes.d.ts.map +1 -1
  45. package/dist/src/nas-volumes.js +145 -29
  46. package/dist/src/nas-volumes.js.map +1 -1
  47. package/dist/src/nas-volumes.test.js +135 -17
  48. package/dist/src/nas-volumes.test.js.map +1 -1
  49. package/dist/src/session-im-context.d.ts +1 -0
  50. package/dist/src/session-im-context.d.ts.map +1 -1
  51. package/dist/src/session-im-context.js +9 -0
  52. package/dist/src/session-im-context.js.map +1 -1
  53. package/dist/src/single-chat-no-reply-fallback.d.ts +14 -0
  54. package/dist/src/single-chat-no-reply-fallback.d.ts.map +1 -0
  55. package/dist/src/single-chat-no-reply-fallback.js +20 -0
  56. package/dist/src/single-chat-no-reply-fallback.js.map +1 -0
  57. package/dist/src/subagent-monitor.d.ts +16 -10
  58. package/dist/src/subagent-monitor.d.ts.map +1 -1
  59. package/dist/src/subagent-monitor.js +210 -329
  60. package/dist/src/subagent-monitor.js.map +1 -1
  61. package/dist/src/subagent-progress-hooks.d.ts +11 -0
  62. package/dist/src/subagent-progress-hooks.d.ts.map +1 -0
  63. package/dist/src/subagent-progress-hooks.js +41 -0
  64. package/dist/src/subagent-progress-hooks.js.map +1 -0
  65. package/dist/src/types.d.ts +9 -4
  66. package/dist/src/types.d.ts.map +1 -1
  67. package/dist/src/types.js.map +1 -1
  68. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import assert from "node:assert/strict";
2
- import { mkdtemp, mkdir, rm } from "node:fs/promises";
2
+ import { mkdtemp, mkdir, rm, stat } from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { afterEach, describe, it } from "node:test";
@@ -27,6 +27,12 @@ function openClawCfg() {
27
27
  },
28
28
  };
29
29
  }
30
+ function mappingConfig(hostRoot) {
31
+ return {
32
+ baseUrl: "https://im.example.test",
33
+ nasVolumeRootMappings: [{ logicalRoot: "/data/touqian", hostRoot }],
34
+ };
35
+ }
30
36
  describe("nasVolumes", () => {
31
37
  it("normalizes workspace-relative dockerDir", () => {
32
38
  assert.equal(normalizeNasDockerDir("/workspace/touqian/2026/08/a/"), "touqian/2026/08/a");
@@ -44,14 +50,14 @@ describe("nasVolumes", () => {
44
50
  assert.equal(result.specHash, undefined);
45
51
  });
46
52
  it("injects binds and reuses the same session spec", async () => {
47
- const { root, caseA } = await fixture();
48
- const config = { baseUrl: "https://im.example.test", nasVolumeAllowedRoots: [root] };
53
+ const { root } = await fixture();
54
+ const config = mappingConfig(root);
49
55
  const args = {
50
56
  cfg: openClawCfg(),
51
57
  config,
52
58
  agentId: "main",
53
59
  sessionKey: "agent:main:xg_cwork_im:group-1",
54
- volumes: [{ realDir: caseA, dockerDir: "touqian/case-a", mode: "ro" }],
60
+ volumes: [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case-a", mode: "ro" }],
55
61
  };
56
62
  const first = resolveNasVolumeDispatchConfig(args);
57
63
  const second = resolveNasVolumeDispatchConfig(args);
@@ -64,10 +70,125 @@ describe("nasVolumes", () => {
64
70
  assert.ok(docker.binds.some((bind) => bind.endsWith(":/workspace/touqian/case-a:ro")));
65
71
  assert.equal(docker.dangerouslyAllowExternalBindSources, true);
66
72
  assert.equal(docker.dangerouslyAllowReservedContainerTargets, true);
73
+ assert.equal(docker.binds.at(-1), `${path.resolve(root, "case-a")}:/workspace/touqian/case-a:ro`);
74
+ });
75
+ it("rejects a NAS target that conflicts with an existing sandbox bind", async () => {
76
+ const { root } = await fixture();
77
+ const cfg = openClawCfg();
78
+ cfg.agents.defaults.sandbox.docker.binds.push("/other/source:/workspace/touqian/case-a:ro");
79
+ assert.throws(() => resolveNasVolumeDispatchConfig({
80
+ cfg,
81
+ config: mappingConfig(root),
82
+ agentId: "main",
83
+ sessionKey: "agent:main:xg_cwork_im:existing-bind-conflict",
84
+ volumes: [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case-a", mode: "ro" }],
85
+ }), /NAS_VOLUME_TARGET_CONFLICT/);
86
+ const recovered = resolveNasVolumeDispatchConfig({
87
+ cfg: openClawCfg(),
88
+ config: mappingConfig(root),
89
+ agentId: "main",
90
+ sessionKey: "agent:main:xg_cwork_im:existing-bind-conflict",
91
+ volumes: [{ realDir: "/data/touqian/case-b", dockerDir: "touqian/case-b", mode: "ro" }],
92
+ });
93
+ assert.equal(recovered.reused, false, "失败的配置注入不得污染会话挂载缓存");
94
+ });
95
+ it("expires an idle session mount state after two hours", async () => {
96
+ const { root } = await fixture();
97
+ const originalNow = Date.now;
98
+ let now = originalNow();
99
+ Date.now = () => now;
100
+ try {
101
+ const common = {
102
+ config: mappingConfig(root),
103
+ agentId: "main",
104
+ sessionKey: "agent:main:xg_cwork_im:ttl-session",
105
+ };
106
+ resolveNasVolumeDispatchConfig({
107
+ ...common,
108
+ cfg: openClawCfg(),
109
+ volumes: [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case-a", mode: "ro" }],
110
+ });
111
+ now += 2 * 60 * 60 * 1_000 + 1;
112
+ const cfg = openClawCfg();
113
+ const expired = resolveNasVolumeDispatchConfig({ ...common, cfg });
114
+ assert.strictEqual(expired.cfg, cfg);
115
+ assert.equal(expired.specHash, undefined);
116
+ }
117
+ finally {
118
+ Date.now = originalNow;
119
+ }
120
+ });
121
+ it("caps cached session mount states and evicts the least recently used entry", async () => {
122
+ const { root } = await fixture();
123
+ const config = mappingConfig(root);
124
+ const volume = [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case-a", mode: "ro" }];
125
+ for (let index = 0; index <= 2_000; index += 1) {
126
+ resolveNasVolumeDispatchConfig({
127
+ cfg: openClawCfg(),
128
+ config,
129
+ agentId: "main",
130
+ sessionKey: `agent:main:xg_cwork_im:bounded-${index}`,
131
+ volumes: volume,
132
+ });
133
+ }
134
+ const oldestCfg = openClawCfg();
135
+ const oldest = resolveNasVolumeDispatchConfig({
136
+ cfg: oldestCfg,
137
+ config,
138
+ agentId: "main",
139
+ sessionKey: "agent:main:xg_cwork_im:bounded-0",
140
+ });
141
+ assert.strictEqual(oldest.cfg, oldestCfg);
142
+ assert.equal(oldest.specHash, undefined);
143
+ const newest = resolveNasVolumeDispatchConfig({
144
+ cfg: openClawCfg(),
145
+ config,
146
+ agentId: "main",
147
+ sessionKey: "agent:main:xg_cwork_im:bounded-2000",
148
+ });
149
+ assert.ok(newest.specHash);
150
+ assert.equal(newest.reused, true);
151
+ });
152
+ it("creates a missing business source directory below an allowed root", async () => {
153
+ const { root } = await fixture();
154
+ const missing = path.join(root, "CP202205250005", "sequences", "0001", "input");
155
+ const result = resolveNasVolumeDispatchConfig({
156
+ cfg: openClawCfg(),
157
+ config: {
158
+ baseUrl: "https://im.example.test",
159
+ nasVolumeRootMappings: [
160
+ { logicalRoot: "/data/touqian", hostRoot: root },
161
+ ],
162
+ },
163
+ agentId: "main",
164
+ sessionKey: "agent:main:xg_cwork_im:group-create",
165
+ volumes: [
166
+ {
167
+ realDir: "/data/touqian/CP202205250005/sequences/0001/input",
168
+ dockerDir: "touqian/case/input",
169
+ mode: "rw",
170
+ },
171
+ ],
172
+ });
173
+ assert.equal((await stat(missing)).isDirectory(), true);
174
+ const docker = result.cfg.agents.defaults.sandbox.docker;
175
+ assert.ok(docker.binds.some((bind) => bind.endsWith(":/workspace/touqian/case/input:rw")));
176
+ });
177
+ it("never creates a missing directory outside the allowed root", async () => {
178
+ const { root } = await fixture();
179
+ const outside = path.join(root, "outside", "must-not-exist");
180
+ assert.throws(() => resolveNasVolumeDispatchConfig({
181
+ cfg: openClawCfg(),
182
+ config: mappingConfig(root),
183
+ agentId: "main",
184
+ sessionKey: "agent:main:xg_cwork_im:group-outside",
185
+ volumes: [{ realDir: "/data/other/must-not-exist", dockerDir: "touqian/outside", mode: "rw" }],
186
+ }), /NAS_VOLUME_SOURCE_FORBIDDEN/);
187
+ await assert.rejects(stat(outside), /ENOENT/);
67
188
  });
68
189
  it("rejects changing NAS directories in the same session", async () => {
69
- const { root, caseA, caseB } = await fixture();
70
- const config = { baseUrl: "https://im.example.test", nasVolumeAllowedRoots: [root] };
190
+ const { root } = await fixture();
191
+ const config = mappingConfig(root);
71
192
  const common = {
72
193
  cfg: openClawCfg(),
73
194
  config,
@@ -76,15 +197,15 @@ describe("nasVolumes", () => {
76
197
  };
77
198
  resolveNasVolumeDispatchConfig({
78
199
  ...common,
79
- volumes: [{ realDir: caseA, dockerDir: "touqian/case", mode: "ro" }],
200
+ volumes: [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case", mode: "ro" }],
80
201
  });
81
202
  assert.throws(() => resolveNasVolumeDispatchConfig({
82
203
  ...common,
83
- volumes: [{ realDir: caseB, dockerDir: "touqian/case", mode: "ro" }],
204
+ volumes: [{ realDir: "/data/touqian/case-b", dockerDir: "touqian/case", mode: "ro" }],
84
205
  }), /NAS_VOLUME_SESSION_CONFLICT/);
85
206
  });
86
- it("requires a configured realDir allowlist and rejects overlapping targets", async () => {
87
- const { root, caseA, caseB } = await fixture();
207
+ it("requires root mappings and rejects overlapping targets", async () => {
208
+ const { root } = await fixture();
88
209
  const common = {
89
210
  cfg: openClawCfg(),
90
211
  agentId: "main",
@@ -93,17 +214,14 @@ describe("nasVolumes", () => {
93
214
  assert.throws(() => resolveNasVolumeDispatchConfig({
94
215
  ...common,
95
216
  config: { baseUrl: "https://im.example.test" },
96
- volumes: [{ realDir: caseA, dockerDir: "touqian/case", mode: "ro" }],
217
+ volumes: [{ realDir: "/data/touqian/case-a", dockerDir: "touqian/case", mode: "ro" }],
97
218
  }), /NAS_VOLUME_ROOTS_NOT_CONFIGURED/);
98
219
  assert.throws(() => resolveNasVolumeDispatchConfig({
99
220
  ...common,
100
- config: {
101
- baseUrl: "https://im.example.test",
102
- nasVolumeAllowedRoots: [root],
103
- },
221
+ config: mappingConfig(root),
104
222
  volumes: [
105
- { realDir: caseA, dockerDir: "touqian/case", mode: "ro" },
106
- { realDir: caseB, dockerDir: "touqian/case/output", mode: "rw" },
223
+ { realDir: "/data/touqian/case-a", dockerDir: "touqian/case", mode: "ro" },
224
+ { realDir: "/data/touqian/case-b", dockerDir: "touqian/case/output", mode: "rw" },
107
225
  ],
108
226
  }), /NAS_VOLUME_TARGET_CONFLICT/);
109
227
  });
@@ -1 +1 @@
1
- {"version":3,"file":"nas-volumes.test.js","sourceRoot":"","sources":["../../src/nas-volumes.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nas-volumes.test.js","sourceRoot":"","sources":["../../src/nas-volumes.test.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,6 @@ export declare function getSessionImContext(sessionKey: string): {
8
8
  replyToMsgId: string;
9
9
  agentId: string;
10
10
  } | undefined;
11
+ export declare function clearSessionImContext(sessionKey: string, expectedReplyToMsgId?: string): boolean;
11
12
  export declare function touchSessionImContext(sessionKey: string): void;
12
13
  //# sourceMappingURL=session-im-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-im-context.d.ts","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AA6BA,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D,IAAI,CAGN;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOxE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAK9D"}
1
+ {"version":3,"file":"session-im-context.d.ts","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AA6BA,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D,IAAI,CAGN;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOxE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAQhG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAK9D"}
@@ -27,6 +27,15 @@ export function getSessionImContext(sessionKey) {
27
27
  }
28
28
  return undefined;
29
29
  }
30
+ export function clearSessionImContext(sessionKey, expectedReplyToMsgId) {
31
+ const current = sessionCtxMap.get(sessionKey);
32
+ if (!current || (expectedReplyToMsgId && current.replyToMsgId !== expectedReplyToMsgId)) {
33
+ return false;
34
+ }
35
+ clearCleanupTimer(sessionKey);
36
+ sessionCtxMap.delete(sessionKey);
37
+ return true;
38
+ }
30
39
  export function touchSessionImContext(sessionKey) {
31
40
  if (sessionCtxMap.has(sessionKey)) {
32
41
  clearCleanupTimer(sessionKey);
@@ -1 +1 @@
1
- {"version":3,"file":"session-im-context.js","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAIzB,CAAA;AAEJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyC,CAAA;AAEtE,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC7B,aAAa,CAAC,GAAG,CACf,UAAU,EACV,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,GAA+D;IAE/D,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAClC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB;IAElB,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session-im-context.js","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAIzB,CAAA;AAEJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyC,CAAA;AAEtE,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC7B,aAAa,CAAC,GAAG,CACf,UAAU,EACV,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,GAA+D;IAE/D,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAClC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB;IAElB,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,oBAA6B;IACrF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,YAAY,KAAK,oBAAoB,CAAC,EAAE,CAAC;QACxF,OAAO,KAAK,CAAA;IACd,CAAC;IACD,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC7B,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 单聊轮次结束但未向 IM 发出正文时的兜底话术(如模型输出 NO_REPLY、deliver 未被调用)。
3
+ */
4
+ import type { WsMessageParams } from "./types.js";
5
+ export declare function shouldSendSingleChatNoReplyFallback(args: {
6
+ params: WsMessageParams;
7
+ hasFirstReply: boolean;
8
+ deliverCallCount: number;
9
+ dispatchError?: unknown;
10
+ lastDeliverError?: unknown;
11
+ }): boolean;
12
+ /** 单聊静默轮次兜底:简短告知并引导重试。 */
13
+ export declare function buildSingleChatNoReplyFallbackText(): string;
14
+ //# sourceMappingURL=single-chat-no-reply-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-chat-no-reply-fallback.d.ts","sourceRoot":"","sources":["../../src/single-chat-no-reply-fallback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACtD,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAMV;AAED,0BAA0B;AAC1B,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 单聊轮次结束但未向 IM 发出正文时的兜底话术(如模型输出 NO_REPLY、deliver 未被调用)。
3
+ */
4
+ import { isImSingleChat } from "./inbound-chat-type.js";
5
+ export function shouldSendSingleChatNoReplyFallback(args) {
6
+ if (args.hasFirstReply)
7
+ return false;
8
+ if (args.dispatchError !== undefined || args.lastDeliverError !== undefined)
9
+ return false;
10
+ if (!isImSingleChat(args.params))
11
+ return false;
12
+ if (args.deliverCallCount > 0)
13
+ return false;
14
+ return true;
15
+ }
16
+ /** 单聊静默轮次兜底:简短告知并引导重试。 */
17
+ export function buildSingleChatNoReplyFallbackText() {
18
+ return "消息已收到,但这一轮没有生成回复。请换个说法或把需求说具体一些后再试。";
19
+ }
20
+ //# sourceMappingURL=single-chat-no-reply-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-chat-no-reply-fallback.js","sourceRoot":"","sources":["../../src/single-chat-no-reply-fallback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,UAAU,mCAAmC,CAAC,IAMnD;IACG,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,kCAAkC;IAC9C,OAAO,qCAAqC,CAAC;AACjD,CAAC"}
@@ -1,24 +1,30 @@
1
1
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
+ import type { ImStreamClient } from "./connection.js";
2
3
  interface SubagentSpawnInfo {
3
4
  childSessionKey: string;
4
5
  runId: string;
5
6
  label?: string;
6
7
  }
7
- export type SendMessageFn = (text: string) => Promise<void>;
8
+ export interface InterruptedSubagent {
9
+ runId: string;
10
+ label: string;
11
+ status: "completed" | "suspended";
12
+ messages: string[];
13
+ }
8
14
  export declare function setPluginApi(api: OpenClawPluginApi): void;
9
- /** hook 调用:立即启动监控,发 HTTP 推送,首次 poll 立即执行 */
10
15
  export declare function startMonitor(params: {
16
+ roundKey: string;
17
+ generation: number;
11
18
  groupId: string;
12
19
  agentId: string;
20
+ streamClient: ImStreamClient;
21
+ replyToMsgId: string;
13
22
  spawn: SubagentSpawnInfo;
14
- }): void;
15
- /** dispatch BEGIN 后调用:写入 replyToMsgId */
16
- export declare function storeReplyToMsgId(groupId: string, replyToMsgId: string): void;
17
- /** 检查指定 groupId 是否有活跃的 subagent(用于判断是否延迟 FINISHED) */
18
- export declare function hasActiveSubagents(groupId: string): boolean;
19
- /** 记录延迟的 FINISHED,等所有 subagent 完成后发送 */
20
- export declare function deferFinished(groupId: string, reason: string, replyToMsgId: string): void;
21
- /** subagent_ended hook 调用 */
23
+ }): boolean;
24
+ export declare function hasActiveSubagents(roundKey: string, generation: number): boolean;
25
+ export declare function deferFinished(roundKey: string, generation: number, reason: string): void;
26
+ export declare function prepareSubagentInterrupt(roundKey: string, generation: number, now?: number): InterruptedSubagent[];
22
27
  export declare function markSubagentCompleted(childSessionKey: string, runId: string): void;
28
+ export declare function __resetSubagentMonitorForTests(): void;
23
29
  export {};
24
30
  //# sourceMappingURL=subagent-monitor.d.ts.map
@@ -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,qBAAqB,CAAC;AAM7D,UAAU,iBAAiB;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAiC5D,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGzD;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GAAG,IAAI,CA8CP;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAc7E;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS3D;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAGzF;AA8BD,6BAA6B;AAC7B,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA8ElF"}
1
+ {"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../src/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,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;AAmBD,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;AAiBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAEzD;AAkCD,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,CAuCV;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,CAiBvB;AAED,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAmBlF;AAiID,wBAAgB,8BAA8B,IAAI,IAAI,CASrD"}