@xgjktech/xg_cwork_im 1.13.1 → 1.15.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.
- package/README.md +3 -0
- package/dist/src/agent-context-types.d.ts +39 -1
- package/dist/src/agent-context-types.d.ts.map +1 -1
- package/dist/src/agent-context-types.js +52 -7
- package/dist/src/agent-context-types.js.map +1 -1
- package/dist/src/agent-context-types.test.d.ts +2 -0
- package/dist/src/agent-context-types.test.d.ts.map +1 -0
- package/dist/src/agent-context-types.test.js +61 -0
- package/dist/src/agent-context-types.test.js.map +1 -0
- package/dist/src/block-streaming-config.test.d.ts +2 -0
- package/dist/src/block-streaming-config.test.d.ts.map +1 -0
- package/dist/src/block-streaming-config.test.js +41 -0
- package/dist/src/block-streaming-config.test.js.map +1 -0
- package/dist/src/build-project-prompt.d.ts.map +1 -1
- package/dist/src/build-project-prompt.js +5 -1
- package/dist/src/build-project-prompt.js.map +1 -1
- package/dist/src/channel-config.d.ts +128 -0
- package/dist/src/channel-config.d.ts.map +1 -1
- package/dist/src/channel-config.js +67 -0
- package/dist/src/channel-config.js.map +1 -1
- package/dist/src/channel.d.ts.map +1 -1
- package/dist/src/channel.js +22 -7
- package/dist/src/channel.js.map +1 -1
- package/dist/src/connection.d.ts +7 -0
- package/dist/src/connection.d.ts.map +1 -1
- package/dist/src/connection.js +16 -1
- package/dist/src/connection.js.map +1 -1
- package/dist/src/deliver-text.d.ts +13 -0
- package/dist/src/deliver-text.d.ts.map +1 -0
- package/dist/src/deliver-text.js +28 -0
- package/dist/src/deliver-text.js.map +1 -0
- package/dist/src/deliver-text.test.d.ts +2 -0
- package/dist/src/deliver-text.test.d.ts.map +1 -0
- package/dist/src/deliver-text.test.js +31 -0
- package/dist/src/deliver-text.test.js.map +1 -0
- package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
- package/dist/src/dispatch-mentioned-reply.js +96 -20
- package/dist/src/dispatch-mentioned-reply.js.map +1 -1
- package/dist/src/inbound-display.d.ts +2 -0
- package/dist/src/inbound-display.d.ts.map +1 -1
- package/dist/src/inbound-display.js +16 -5
- package/dist/src/inbound-display.js.map +1 -1
- package/dist/src/inbound-input-media.js +1 -1
- package/dist/src/inbound-input-media.js.map +1 -1
- package/dist/src/inbound-media-local.js +1 -1
- package/dist/src/inbound-media-local.js.map +1 -1
- package/dist/src/inbound-terminal-delivery.d.ts +9 -3
- package/dist/src/inbound-terminal-delivery.d.ts.map +1 -1
- package/dist/src/inbound-terminal-delivery.js +74 -16
- package/dist/src/inbound-terminal-delivery.js.map +1 -1
- package/dist/src/inbound-terminal-state.d.ts +18 -2
- package/dist/src/inbound-terminal-state.d.ts.map +1 -1
- package/dist/src/inbound-terminal-state.js +71 -23
- package/dist/src/inbound-terminal-state.js.map +1 -1
- package/dist/src/inbound-terminal-state.test.js +69 -7
- package/dist/src/inbound-terminal-state.test.js.map +1 -1
- package/dist/src/per-message-fallback-notice.d.ts +11 -1
- package/dist/src/per-message-fallback-notice.d.ts.map +1 -1
- package/dist/src/per-message-fallback-notice.js +16 -1
- package/dist/src/per-message-fallback-notice.js.map +1 -1
- package/dist/src/per-message-fallback-notice.test.d.ts +2 -0
- package/dist/src/per-message-fallback-notice.test.d.ts.map +1 -0
- package/dist/src/per-message-fallback-notice.test.js +47 -0
- package/dist/src/per-message-fallback-notice.test.js.map +1 -0
- package/dist/src/recommended-system-prompt.d.ts +1 -1
- package/dist/src/recommended-system-prompt.d.ts.map +1 -1
- package/dist/src/recommended-system-prompt.js +1 -1
- package/dist/src/recommended-system-prompt.js.map +1 -1
- package/dist/src/resource-file.d.ts +20 -1
- package/dist/src/resource-file.d.ts.map +1 -1
- package/dist/src/resource-file.js +160 -36
- package/dist/src/resource-file.js.map +1 -1
- package/dist/src/resource-file.test.d.ts +2 -0
- package/dist/src/resource-file.test.d.ts.map +1 -0
- package/dist/src/resource-file.test.js +64 -0
- package/dist/src/resource-file.test.js.map +1 -0
- package/dist/src/send-service.d.ts +2 -0
- package/dist/src/send-service.d.ts.map +1 -1
- package/dist/src/send-service.js +38 -8
- package/dist/src/send-service.js.map +1 -1
- package/dist/src/thinking-ws-progress.d.ts +24 -0
- package/dist/src/thinking-ws-progress.d.ts.map +1 -0
- package/dist/src/thinking-ws-progress.js +45 -0
- package/dist/src/thinking-ws-progress.js.map +1 -0
- package/dist/src/thinking-ws-progress.test.d.ts +2 -0
- package/dist/src/thinking-ws-progress.test.d.ts.map +1 -0
- package/dist/src/thinking-ws-progress.test.js +41 -0
- package/dist/src/thinking-ws-progress.test.js.map +1 -0
- package/dist/src/types.d.ts +27 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/user-facing-errors.d.ts +20 -0
- package/dist/src/user-facing-errors.d.ts.map +1 -0
- package/dist/src/user-facing-errors.js +105 -0
- package/dist/src/user-facing-errors.js.map +1 -0
- package/dist/src/user-facing-errors.test.d.ts +2 -0
- package/dist/src/user-facing-errors.test.d.ts.map +1 -0
- package/dist/src/user-facing-errors.test.js +62 -0
- package/dist/src/user-facing-errors.test.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -253,6 +253,9 @@ openclaw gateway restart
|
|
|
253
253
|
| `inboundMediaSandboxRootPrefix` | string | — | **可选**。沙箱内 workspace 挂载根,填 `**/workspace`** 时,在 `workspaceRelative` 模式下 `MediaPath` 为 `**/workspace/xg_im_inbound/...**`,避免 `./` 被 `read` 等工具按**进程 cwd**解析导致「不可访问」。须以 `/` 开头。 |
|
|
254
254
|
| `syncServiceBaseUrl` | string | — | **可选**。openclaw-xgkb-sync **管理 API** 根地址(如 `http://127.0.0.1:9090`)。配置后插件可处理 IM 下发的 `openclawApplySyncMapping` 信令并登记目录映射。详见 `docs/im服务接口说明.md`。 |
|
|
255
255
|
| `projectPromptMaxChars` | number | `15000` | `agentContext.background` 与 `userInfo.background` 单段最大字符数;超出尾部截断。 |
|
|
256
|
+
| `blockStreaming` | boolean | `true`(未配置时) | 开启后,assistant 每个 **text 块结束(tool 调用前)** 即 HTTP 发送中间正文(OpenClaw `text_end`);tool 过程仍走 WS `TOOL_PHASE`。设为 `false` 恢复整轮结束才 deliver 一次。 |
|
|
257
|
+
| `blockStreamingCoalesce` | object | 不配 | 可选:合并同一 text 块内 token 碎片(`minChars` / `maxChars` / `idleMs`)。IM 默认不配;**若未在通道配置,插件会自动注入 `minChars:1 idleMs:0`,覆盖 `agents.defaults` 里偏大的 coalesce**。 |
|
|
258
|
+
| `deliverModelFallbackNotice` | boolean | `false`(未配置时) | 为 `true` 时向 IM 用户发送 OpenClaw 模型降级运营通知(`↪️ Model Fallback: …`)。默认不发送,仅保留 gateway 日志。 |
|
|
256
259
|
|
|
257
260
|
|
|
258
261
|
### 账户配置(`accounts.<accountId>`,对象 map)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* robotMention.params.agentContext — 项目工作区路径 + 可选知识库绑定 + 可选项目背景
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
/** 知识库空间 ID +
|
|
5
|
+
/** 知识库空间 ID + 逻辑目录路径 */
|
|
6
6
|
declare const knowledgeBaseByPathSchema: z.ZodObject<{
|
|
7
7
|
projectId: z.ZodString;
|
|
8
8
|
folderPath: z.ZodString;
|
|
@@ -13,6 +13,14 @@ declare const knowledgeBaseByPathSchema: z.ZodObject<{
|
|
|
13
13
|
projectId: string;
|
|
14
14
|
folderPath: string;
|
|
15
15
|
}>;
|
|
16
|
+
/** IM 常见:仅传知识库空间 ID(无 folderPath) */
|
|
17
|
+
declare const knowledgeBaseByProjectIdOnlySchema: z.ZodObject<{
|
|
18
|
+
projectId: z.ZodString;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
projectId: string;
|
|
21
|
+
}, {
|
|
22
|
+
projectId: string;
|
|
23
|
+
}>;
|
|
16
24
|
export declare const agentContextKnowledgeBaseSchema: z.ZodUnion<[z.ZodObject<{
|
|
17
25
|
rootFileId: z.ZodString;
|
|
18
26
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -28,6 +36,12 @@ export declare const agentContextKnowledgeBaseSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
28
36
|
}, {
|
|
29
37
|
projectId: string;
|
|
30
38
|
folderPath: string;
|
|
39
|
+
}>, z.ZodObject<{
|
|
40
|
+
projectId: z.ZodString;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
projectId: string;
|
|
43
|
+
}, {
|
|
44
|
+
projectId: string;
|
|
31
45
|
}>]>;
|
|
32
46
|
export type AgentContextKnowledgeBase = z.infer<typeof agentContextKnowledgeBaseSchema>;
|
|
33
47
|
/** 与 IM 后台约定的 `params.agentContext` 结构 */
|
|
@@ -57,6 +71,12 @@ export declare const robotMentionAgentContextSchema: z.ZodObject<{
|
|
|
57
71
|
}, {
|
|
58
72
|
projectId: string;
|
|
59
73
|
folderPath: string;
|
|
74
|
+
}>, z.ZodObject<{
|
|
75
|
+
projectId: z.ZodString;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
projectId: string;
|
|
78
|
+
}, {
|
|
79
|
+
projectId: string;
|
|
60
80
|
}>]>>;
|
|
61
81
|
background: z.ZodOptional<z.ZodString>;
|
|
62
82
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -69,6 +89,8 @@ export declare const robotMentionAgentContextSchema: z.ZodObject<{
|
|
|
69
89
|
} | {
|
|
70
90
|
projectId: string;
|
|
71
91
|
folderPath: string;
|
|
92
|
+
} | {
|
|
93
|
+
projectId: string;
|
|
72
94
|
} | undefined;
|
|
73
95
|
background?: string | undefined;
|
|
74
96
|
}, {
|
|
@@ -81,12 +103,28 @@ export declare const robotMentionAgentContextSchema: z.ZodObject<{
|
|
|
81
103
|
} | {
|
|
82
104
|
projectId: string;
|
|
83
105
|
folderPath: string;
|
|
106
|
+
} | {
|
|
107
|
+
projectId: string;
|
|
84
108
|
} | undefined;
|
|
85
109
|
background?: string | undefined;
|
|
86
110
|
}>;
|
|
87
111
|
export type RobotMentionAgentContext = z.infer<typeof robotMentionAgentContextSchema>;
|
|
112
|
+
export type ParseRobotMentionAgentContextResult = {
|
|
113
|
+
agentContext?: RobotMentionAgentContext;
|
|
114
|
+
/** localRoot 缺失等致命错误 */
|
|
115
|
+
fatalError?: string;
|
|
116
|
+
/** knowledgeBase 存在但无法解析时被丢弃 */
|
|
117
|
+
knowledgeBaseDropped?: boolean;
|
|
118
|
+
knowledgeBaseDropReason?: string;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* 解析 agentContext;knowledgeBase 非法时丢弃该字段,仍保留 localRoot + background。
|
|
122
|
+
*/
|
|
123
|
+
export declare function parseRobotMentionAgentContextDetailed(params: unknown): ParseRobotMentionAgentContextResult;
|
|
88
124
|
export declare function parseRobotMentionAgentContext(params: unknown): RobotMentionAgentContext | undefined;
|
|
89
125
|
/** 判断 knowledgeBase 是否为 projectId + folderPath 形式 */
|
|
90
126
|
export declare function isKnowledgeBaseByPath(kb: AgentContextKnowledgeBase): kb is z.infer<typeof knowledgeBaseByPathSchema>;
|
|
127
|
+
/** 判断 knowledgeBase 是否仅有 projectId(无 folderPath / rootFileId) */
|
|
128
|
+
export declare function isKnowledgeBaseByProjectIdOnly(kb: AgentContextKnowledgeBase): kb is z.infer<typeof knowledgeBaseByProjectIdOnlySchema>;
|
|
91
129
|
export {};
|
|
92
130
|
//# sourceMappingURL=agent-context-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-context-types.d.ts","sourceRoot":"","sources":["../../src/agent-context-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,
|
|
1
|
+
{"version":3,"file":"agent-context-types.d.ts","sourceRoot":"","sources":["../../src/agent-context-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,wBAAwB;AACxB,QAAA,MAAM,yBAAyB;;;;;;;;;EAG7B,CAAC;AAEH,qCAAqC;AACrC,QAAA,MAAM,kCAAkC;;;;;;EAEtC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;IAI1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,0CAA0C;AAC1C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,MAAM,MAAM,mCAAmC,GAAG;IAC9C,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAQF;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,OAAO,GAAG,mCAAmC,CAuC1G;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,wBAAwB,GAAG,SAAS,CAEnG;AAED,qDAAqD;AACrD,wBAAgB,qBAAqB,CACjC,EAAE,EAAE,yBAAyB,GAC9B,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAEjD;AAED,iEAAiE;AACjE,wBAAgB,8BAA8B,CAC1C,EAAE,EAAE,yBAAyB,GAC9B,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAE1D"}
|
|
@@ -7,18 +7,23 @@ const localRootSchema = z.object({
|
|
|
7
7
|
kind: z.enum(LOCAL_ROOT_KINDS),
|
|
8
8
|
path: z.string().min(1),
|
|
9
9
|
});
|
|
10
|
-
/** 知识库目录 fileId(与 projectId
|
|
10
|
+
/** 知识库目录 fileId(与 projectId 形式二选一) */
|
|
11
11
|
const knowledgeBaseByFileIdSchema = z.object({
|
|
12
12
|
rootFileId: z.string().min(1),
|
|
13
13
|
});
|
|
14
|
-
/** 知识库空间 ID +
|
|
14
|
+
/** 知识库空间 ID + 逻辑目录路径 */
|
|
15
15
|
const knowledgeBaseByPathSchema = z.object({
|
|
16
16
|
projectId: z.string().min(1),
|
|
17
17
|
folderPath: z.string().min(1),
|
|
18
18
|
});
|
|
19
|
+
/** IM 常见:仅传知识库空间 ID(无 folderPath) */
|
|
20
|
+
const knowledgeBaseByProjectIdOnlySchema = z.object({
|
|
21
|
+
projectId: z.string().min(1),
|
|
22
|
+
});
|
|
19
23
|
export const agentContextKnowledgeBaseSchema = z.union([
|
|
20
24
|
knowledgeBaseByFileIdSchema,
|
|
21
25
|
knowledgeBaseByPathSchema,
|
|
26
|
+
knowledgeBaseByProjectIdOnlySchema,
|
|
22
27
|
]);
|
|
23
28
|
/** 与 IM 后台约定的 `params.agentContext` 结构 */
|
|
24
29
|
export const robotMentionAgentContextSchema = z.object({
|
|
@@ -26,19 +31,59 @@ export const robotMentionAgentContextSchema = z.object({
|
|
|
26
31
|
knowledgeBase: agentContextKnowledgeBaseSchema.optional(),
|
|
27
32
|
background: z.string().optional(),
|
|
28
33
|
});
|
|
29
|
-
|
|
34
|
+
function formatZodIssue(err) {
|
|
35
|
+
const issue = err.issues[0];
|
|
36
|
+
const path = issue?.path?.length ? issue.path.join(".") : "agentContext";
|
|
37
|
+
return `${path}: ${issue?.message ?? err.message}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 解析 agentContext;knowledgeBase 非法时丢弃该字段,仍保留 localRoot + background。
|
|
41
|
+
*/
|
|
42
|
+
export function parseRobotMentionAgentContextDetailed(params) {
|
|
30
43
|
if (params == null || typeof params !== "object") {
|
|
31
|
-
return
|
|
44
|
+
return {};
|
|
32
45
|
}
|
|
33
46
|
const raw = params.agentContext;
|
|
34
47
|
if (raw == null || typeof raw !== "object") {
|
|
35
|
-
return
|
|
48
|
+
return {};
|
|
36
49
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
50
|
+
const record = raw;
|
|
51
|
+
const localRootParsed = localRootSchema.safeParse(record.localRoot);
|
|
52
|
+
if (!localRootParsed.success) {
|
|
53
|
+
return { fatalError: formatZodIssue(localRootParsed.error) };
|
|
54
|
+
}
|
|
55
|
+
let knowledgeBase;
|
|
56
|
+
let knowledgeBaseDropped = false;
|
|
57
|
+
let knowledgeBaseDropReason;
|
|
58
|
+
if (record.knowledgeBase != null) {
|
|
59
|
+
const kbParsed = agentContextKnowledgeBaseSchema.safeParse(record.knowledgeBase);
|
|
60
|
+
if (kbParsed.success) {
|
|
61
|
+
knowledgeBase = kbParsed.data;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
knowledgeBaseDropped = true;
|
|
65
|
+
knowledgeBaseDropReason = formatZodIssue(kbParsed.error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const background = typeof record.background === "string" ? record.background : undefined;
|
|
69
|
+
return {
|
|
70
|
+
agentContext: {
|
|
71
|
+
localRoot: localRootParsed.data,
|
|
72
|
+
...(knowledgeBase ? { knowledgeBase } : {}),
|
|
73
|
+
...(background !== undefined ? { background } : {}),
|
|
74
|
+
},
|
|
75
|
+
...(knowledgeBaseDropped ? { knowledgeBaseDropped, knowledgeBaseDropReason } : {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function parseRobotMentionAgentContext(params) {
|
|
79
|
+
return parseRobotMentionAgentContextDetailed(params).agentContext;
|
|
39
80
|
}
|
|
40
81
|
/** 判断 knowledgeBase 是否为 projectId + folderPath 形式 */
|
|
41
82
|
export function isKnowledgeBaseByPath(kb) {
|
|
42
83
|
return "projectId" in kb && "folderPath" in kb;
|
|
43
84
|
}
|
|
85
|
+
/** 判断 knowledgeBase 是否仅有 projectId(无 folderPath / rootFileId) */
|
|
86
|
+
export function isKnowledgeBaseByProjectIdOnly(kb) {
|
|
87
|
+
return "projectId" in kb && !("folderPath" in kb) && !("rootFileId" in kb);
|
|
88
|
+
}
|
|
44
89
|
//# sourceMappingURL=agent-context-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-context-types.js","sourceRoot":"","sources":["../../src/agent-context-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"agent-context-types.js","sourceRoot":"","sources":["../../src/agent-context-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-context-types.test.d.ts","sourceRoot":"","sources":["../../src/agent-context-types.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { parseRobotMentionAgentContext, parseRobotMentionAgentContextDetailed, } from "./agent-context-types.js";
|
|
4
|
+
const USER_PAYLOAD = {
|
|
5
|
+
agentContext: {
|
|
6
|
+
background: "- 项目名称:Sitavig\n\n该项目对应的知识库根目录id为:2072258063360479234\n\n### 会话背景信息:\n待办内容:BD初审修订任务",
|
|
7
|
+
knowledgeBase: { projectId: "1660820549716893698" },
|
|
8
|
+
localRoot: { kind: "workspace_relative", path: "project/202607/2074431529933336577" },
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
describe("parseRobotMentionAgentContext", () => {
|
|
12
|
+
it("accepts knowledgeBase with projectId only (IM 常见形态)", () => {
|
|
13
|
+
const ctx = parseRobotMentionAgentContext(USER_PAYLOAD);
|
|
14
|
+
assert.ok(ctx);
|
|
15
|
+
assert.equal(ctx.localRoot.path, "project/202607/2074431529933336577");
|
|
16
|
+
assert.deepEqual(ctx.knowledgeBase, { projectId: "1660820549716893698" });
|
|
17
|
+
assert.ok(ctx.background?.includes("Sitavig"));
|
|
18
|
+
});
|
|
19
|
+
it("accepts knowledgeBase with projectId and folderPath", () => {
|
|
20
|
+
const ctx = parseRobotMentionAgentContext({
|
|
21
|
+
agentContext: {
|
|
22
|
+
localRoot: { kind: "workspace_relative", path: "data/a" },
|
|
23
|
+
knowledgeBase: { projectId: "p1", folderPath: "团队文档/项目A" },
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
assert.deepEqual(ctx.knowledgeBase, {
|
|
27
|
+
projectId: "p1",
|
|
28
|
+
folderPath: "团队文档/项目A",
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
it("accepts knowledgeBase with rootFileId", () => {
|
|
32
|
+
const ctx = parseRobotMentionAgentContext({
|
|
33
|
+
agentContext: {
|
|
34
|
+
localRoot: { kind: "workspace_relative", path: "data/a" },
|
|
35
|
+
knowledgeBase: { rootFileId: "2072258063360479234" },
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
assert.deepEqual(ctx.knowledgeBase, { rootFileId: "2072258063360479234" });
|
|
39
|
+
});
|
|
40
|
+
it("rejects missing localRoot", () => {
|
|
41
|
+
const result = parseRobotMentionAgentContextDetailed({
|
|
42
|
+
agentContext: { background: "x" },
|
|
43
|
+
});
|
|
44
|
+
assert.equal(result.agentContext, undefined);
|
|
45
|
+
assert.ok(result.fatalError);
|
|
46
|
+
});
|
|
47
|
+
it("drops invalid knowledgeBase but keeps localRoot and background", () => {
|
|
48
|
+
const result = parseRobotMentionAgentContextDetailed({
|
|
49
|
+
agentContext: {
|
|
50
|
+
localRoot: { kind: "workspace_relative", path: "data/a" },
|
|
51
|
+
knowledgeBase: { rootFileId: "" },
|
|
52
|
+
background: "项目说明",
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
assert.ok(result.agentContext);
|
|
56
|
+
assert.equal(result.agentContext.background, "项目说明");
|
|
57
|
+
assert.equal(result.agentContext.knowledgeBase, undefined);
|
|
58
|
+
assert.equal(result.knowledgeBaseDropped, true);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=agent-context-types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-context-types.test.js","sourceRoot":"","sources":["../../src/agent-context-types.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-streaming-config.test.d.ts","sourceRoot":"","sources":["../../src/block-streaming-config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { IM_BLOCK_STREAMING_COALESCE_DEFAULT, isInboundBlockStreamingEnabled, resolveBlockStreamingReplyOptions, resolveDispatchOpenClawCfg, } from "./channel-config.js";
|
|
4
|
+
function cfg(overrides = {}) {
|
|
5
|
+
return { baseUrl: "https://example.com", ...overrides };
|
|
6
|
+
}
|
|
7
|
+
const baseOpenClawCfg = {
|
|
8
|
+
agents: {
|
|
9
|
+
defaults: {
|
|
10
|
+
blockStreamingCoalesce: { minChars: 2400, maxChars: 12000, idleMs: 3000 },
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
channels: { xg_cwork_im: { baseUrl: "https://example.com" } },
|
|
14
|
+
};
|
|
15
|
+
describe("block streaming config", () => {
|
|
16
|
+
it("enabled by default when blockStreaming unset", () => {
|
|
17
|
+
assert.equal(isInboundBlockStreamingEnabled(cfg()), true);
|
|
18
|
+
assert.deepEqual(resolveBlockStreamingReplyOptions(cfg()), { disableBlockStreaming: false });
|
|
19
|
+
});
|
|
20
|
+
it("disabled when blockStreaming is false", () => {
|
|
21
|
+
assert.equal(isInboundBlockStreamingEnabled(cfg({ blockStreaming: false })), false);
|
|
22
|
+
assert.deepEqual(resolveBlockStreamingReplyOptions(cfg({ blockStreaming: false })), {
|
|
23
|
+
disableBlockStreaming: true,
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
it("explicit true forces enable", () => {
|
|
27
|
+
assert.equal(isInboundBlockStreamingEnabled(cfg({ blockStreaming: true })), true);
|
|
28
|
+
});
|
|
29
|
+
it("resolveDispatchOpenClawCfg injects IM coalesce when channel omits it", () => {
|
|
30
|
+
const patched = resolveDispatchOpenClawCfg(baseOpenClawCfg, cfg());
|
|
31
|
+
const xg = patched
|
|
32
|
+
.channels?.xg_cwork_im;
|
|
33
|
+
assert.deepEqual(xg?.blockStreamingCoalesce, { ...IM_BLOCK_STREAMING_COALESCE_DEFAULT });
|
|
34
|
+
});
|
|
35
|
+
it("resolveDispatchOpenClawCfg leaves cfg when channel coalesce set", () => {
|
|
36
|
+
const custom = { minChars: 100, idleMs: 50 };
|
|
37
|
+
const patched = resolveDispatchOpenClawCfg(baseOpenClawCfg, cfg({ blockStreamingCoalesce: custom }));
|
|
38
|
+
assert.equal(patched, baseOpenClawCfg);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=block-streaming-config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-streaming-config.test.js","sourceRoot":"","sources":["../../src/block-streaming-config.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACH,mCAAmC,EACnC,8BAA8B,EAC9B,iCAAiC,EACjC,0BAA0B,GAC7B,MAAM,qBAAqB,CAAC;AAG7B,SAAS,GAAG,CAAC,YAAiC,EAAE;IAC5C,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,eAAe,GAAG;IACpB,MAAM,EAAE;QACJ,QAAQ,EAAE;YACN,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;SAC5E;KACJ;IACD,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;CACL,CAAC;AAE7D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;YAChF,qBAAqB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,OAAO,GAAG,0BAA0B,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,GAAI,OAAiF;aACxF,QAAQ,EAAE,WAAW,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,sBAAsB,EAAE,EAAE,GAAG,mCAAmC,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,0BAA0B,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-project-prompt.d.ts","sourceRoot":"","sources":["../../src/build-project-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"build-project-prompt.d.ts","sourceRoot":"","sources":["../../src/build-project-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAGH,KAAK,wBAAwB,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGH,KAAK,aAAa,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED,MAAM,WAAW,uBAAuB;IACpC,YAAY,EAAE,wBAAwB,CAAC;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAQD,0CAA0C;AAC1C,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,UAAU,GACnB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;CAAE,CAuB3H;AAOD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAmB7F;AAkCD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAgErG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 将 IM 下发的 agentContext 渲染为 GroupSystemPrompt 追加段。
|
|
3
3
|
*/
|
|
4
|
-
import { isKnowledgeBaseByPath, } from "./agent-context-types.js";
|
|
4
|
+
import { isKnowledgeBaseByPath, isKnowledgeBaseByProjectIdOnly, } from "./agent-context-types.js";
|
|
5
5
|
import { normalizeWorkspaceRelativeSegment, resolveLocalAbsolutePath, } from "./project-path-normalize.js";
|
|
6
6
|
const DEFAULT_SANDBOX_PREFIX = "/workspace";
|
|
7
7
|
const DEFAULT_PROJECT_PROMPT_MAX_CHARS = 15_000;
|
|
@@ -81,6 +81,10 @@ function knowledgeBasePurposeLine(agentContext) {
|
|
|
81
81
|
return (`- **知识库资料**:本项目已与知识库(空间 \`${kb.projectId.trim()}\`)目录「${folder}」建立同步;` +
|
|
82
82
|
`来自知识库的文件会出现在项目根目录及子路径中,可作为背景资料使用。`);
|
|
83
83
|
}
|
|
84
|
+
if (isKnowledgeBaseByProjectIdOnly(kb)) {
|
|
85
|
+
return (`- **知识库资料**:本项目已与知识库空间 \`${kb.projectId.trim()}\` 关联;` +
|
|
86
|
+
`来自知识库的文件会出现在项目根目录及子路径中,可作为背景资料使用。`);
|
|
87
|
+
}
|
|
84
88
|
const fileId = kb.rootFileId.trim();
|
|
85
89
|
return (`- **知识库资料**:本项目已与知识库目录(fileId: \`${fileId}\`)建立同步;` +
|
|
86
90
|
`来自知识库的文件会出现在项目根目录及子路径中,可作为背景资料使用。`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-project-prompt.js","sourceRoot":"","sources":["../../src/build-project-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,qBAAqB,
|
|
1
|
+
{"version":3,"file":"build-project-prompt.js","sourceRoot":"","sources":["../../src/build-project-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,21 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
29
29
|
maxPendingMessages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
30
30
|
syncServiceBaseUrl: z.ZodOptional<z.ZodString>;
|
|
31
31
|
projectPromptMaxChars: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
blockStreaming: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
minChars: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
maxChars: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
idleMs: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
minChars?: number | undefined;
|
|
39
|
+
maxChars?: number | undefined;
|
|
40
|
+
idleMs?: number | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
minChars?: number | undefined;
|
|
43
|
+
maxChars?: number | undefined;
|
|
44
|
+
idleMs?: number | undefined;
|
|
45
|
+
}>>;
|
|
46
|
+
deliverModelFallbackNotice: z.ZodOptional<z.ZodBoolean>;
|
|
32
47
|
accounts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
33
48
|
robotKey: z.ZodOptional<z.ZodString>;
|
|
34
49
|
appKey: z.ZodOptional<z.ZodString>;
|
|
@@ -44,6 +59,30 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
44
59
|
maxPendingMessages: z.ZodOptional<z.ZodNumber>;
|
|
45
60
|
syncServiceBaseUrl: z.ZodOptional<z.ZodString>;
|
|
46
61
|
projectPromptMaxChars: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
/**
|
|
63
|
+
* 为 false 时关闭:assistant 在 tool 前的 text 块不再提前 HTTP deliver(整轮结束才发)。
|
|
64
|
+
* 未配置时默认开启。
|
|
65
|
+
*/
|
|
66
|
+
blockStreaming: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
/** 可选:合并同一 text 块内 token 级碎片;IM 默认不配(每个 text_end 立即 HTTP)。 */
|
|
68
|
+
blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
minChars: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
maxChars: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
idleMs: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
}, "strip", z.ZodTypeAny, {
|
|
73
|
+
minChars?: number | undefined;
|
|
74
|
+
maxChars?: number | undefined;
|
|
75
|
+
idleMs?: number | undefined;
|
|
76
|
+
}, {
|
|
77
|
+
minChars?: number | undefined;
|
|
78
|
+
maxChars?: number | undefined;
|
|
79
|
+
idleMs?: number | undefined;
|
|
80
|
+
}>>;
|
|
81
|
+
/**
|
|
82
|
+
* 为 true 时向 IM 用户发送 OpenClaw 模型降级运营通知(↪️ Model Fallback: …)。
|
|
83
|
+
* 未配置时默认不发送(仅 gateway 日志)。
|
|
84
|
+
*/
|
|
85
|
+
deliverModelFallbackNotice: z.ZodOptional<z.ZodBoolean>;
|
|
47
86
|
}, "strip", z.ZodTypeAny, {
|
|
48
87
|
agentId: string;
|
|
49
88
|
groupPolicy: "open" | "mention";
|
|
@@ -59,6 +98,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
59
98
|
maxPendingMessages?: number | undefined;
|
|
60
99
|
syncServiceBaseUrl?: string | undefined;
|
|
61
100
|
projectPromptMaxChars?: number | undefined;
|
|
101
|
+
blockStreaming?: boolean | undefined;
|
|
102
|
+
blockStreamingCoalesce?: {
|
|
103
|
+
minChars?: number | undefined;
|
|
104
|
+
maxChars?: number | undefined;
|
|
105
|
+
idleMs?: number | undefined;
|
|
106
|
+
} | undefined;
|
|
107
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
62
108
|
}, {
|
|
63
109
|
robotKey?: string | undefined;
|
|
64
110
|
appKey?: string | undefined;
|
|
@@ -74,6 +120,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
74
120
|
maxPendingMessages?: number | undefined;
|
|
75
121
|
syncServiceBaseUrl?: string | undefined;
|
|
76
122
|
projectPromptMaxChars?: number | undefined;
|
|
123
|
+
blockStreaming?: boolean | undefined;
|
|
124
|
+
blockStreamingCoalesce?: {
|
|
125
|
+
minChars?: number | undefined;
|
|
126
|
+
maxChars?: number | undefined;
|
|
127
|
+
idleMs?: number | undefined;
|
|
128
|
+
} | undefined;
|
|
129
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
77
130
|
}>>>;
|
|
78
131
|
}, "strip", z.ZodTypeAny, {
|
|
79
132
|
agentId: string;
|
|
@@ -102,6 +155,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
102
155
|
maxPendingMessages?: number | undefined;
|
|
103
156
|
syncServiceBaseUrl?: string | undefined;
|
|
104
157
|
projectPromptMaxChars?: number | undefined;
|
|
158
|
+
blockStreaming?: boolean | undefined;
|
|
159
|
+
blockStreamingCoalesce?: {
|
|
160
|
+
minChars?: number | undefined;
|
|
161
|
+
maxChars?: number | undefined;
|
|
162
|
+
idleMs?: number | undefined;
|
|
163
|
+
} | undefined;
|
|
164
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
105
165
|
}> | undefined;
|
|
106
166
|
robotKey?: string | undefined;
|
|
107
167
|
appKey?: string | undefined;
|
|
@@ -115,6 +175,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
115
175
|
systemPrompt?: string | undefined;
|
|
116
176
|
syncServiceBaseUrl?: string | undefined;
|
|
117
177
|
projectPromptMaxChars?: number | undefined;
|
|
178
|
+
blockStreaming?: boolean | undefined;
|
|
179
|
+
blockStreamingCoalesce?: {
|
|
180
|
+
minChars?: number | undefined;
|
|
181
|
+
maxChars?: number | undefined;
|
|
182
|
+
idleMs?: number | undefined;
|
|
183
|
+
} | undefined;
|
|
184
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
118
185
|
}, {
|
|
119
186
|
baseUrl: string;
|
|
120
187
|
accounts?: Record<string, {
|
|
@@ -132,6 +199,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
132
199
|
maxPendingMessages?: number | undefined;
|
|
133
200
|
syncServiceBaseUrl?: string | undefined;
|
|
134
201
|
projectPromptMaxChars?: number | undefined;
|
|
202
|
+
blockStreaming?: boolean | undefined;
|
|
203
|
+
blockStreamingCoalesce?: {
|
|
204
|
+
minChars?: number | undefined;
|
|
205
|
+
maxChars?: number | undefined;
|
|
206
|
+
idleMs?: number | undefined;
|
|
207
|
+
} | undefined;
|
|
208
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
135
209
|
}> | undefined;
|
|
136
210
|
robotKey?: string | undefined;
|
|
137
211
|
appKey?: string | undefined;
|
|
@@ -155,6 +229,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
155
229
|
maxPendingMessages?: number | undefined;
|
|
156
230
|
syncServiceBaseUrl?: string | undefined;
|
|
157
231
|
projectPromptMaxChars?: number | undefined;
|
|
232
|
+
blockStreaming?: boolean | undefined;
|
|
233
|
+
blockStreamingCoalesce?: {
|
|
234
|
+
minChars?: number | undefined;
|
|
235
|
+
maxChars?: number | undefined;
|
|
236
|
+
idleMs?: number | undefined;
|
|
237
|
+
} | undefined;
|
|
238
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
158
239
|
}>, {
|
|
159
240
|
agentId: string;
|
|
160
241
|
baseUrl: string;
|
|
@@ -182,6 +263,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
182
263
|
maxPendingMessages?: number | undefined;
|
|
183
264
|
syncServiceBaseUrl?: string | undefined;
|
|
184
265
|
projectPromptMaxChars?: number | undefined;
|
|
266
|
+
blockStreaming?: boolean | undefined;
|
|
267
|
+
blockStreamingCoalesce?: {
|
|
268
|
+
minChars?: number | undefined;
|
|
269
|
+
maxChars?: number | undefined;
|
|
270
|
+
idleMs?: number | undefined;
|
|
271
|
+
} | undefined;
|
|
272
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
185
273
|
}> | undefined;
|
|
186
274
|
robotKey?: string | undefined;
|
|
187
275
|
appKey?: string | undefined;
|
|
@@ -195,6 +283,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
195
283
|
systemPrompt?: string | undefined;
|
|
196
284
|
syncServiceBaseUrl?: string | undefined;
|
|
197
285
|
projectPromptMaxChars?: number | undefined;
|
|
286
|
+
blockStreaming?: boolean | undefined;
|
|
287
|
+
blockStreamingCoalesce?: {
|
|
288
|
+
minChars?: number | undefined;
|
|
289
|
+
maxChars?: number | undefined;
|
|
290
|
+
idleMs?: number | undefined;
|
|
291
|
+
} | undefined;
|
|
292
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
198
293
|
}, {
|
|
199
294
|
baseUrl: string;
|
|
200
295
|
accounts?: Record<string, {
|
|
@@ -212,6 +307,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
212
307
|
maxPendingMessages?: number | undefined;
|
|
213
308
|
syncServiceBaseUrl?: string | undefined;
|
|
214
309
|
projectPromptMaxChars?: number | undefined;
|
|
310
|
+
blockStreaming?: boolean | undefined;
|
|
311
|
+
blockStreamingCoalesce?: {
|
|
312
|
+
minChars?: number | undefined;
|
|
313
|
+
maxChars?: number | undefined;
|
|
314
|
+
idleMs?: number | undefined;
|
|
315
|
+
} | undefined;
|
|
316
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
215
317
|
}> | undefined;
|
|
216
318
|
robotKey?: string | undefined;
|
|
217
319
|
appKey?: string | undefined;
|
|
@@ -235,6 +337,13 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
235
337
|
maxPendingMessages?: number | undefined;
|
|
236
338
|
syncServiceBaseUrl?: string | undefined;
|
|
237
339
|
projectPromptMaxChars?: number | undefined;
|
|
340
|
+
blockStreaming?: boolean | undefined;
|
|
341
|
+
blockStreamingCoalesce?: {
|
|
342
|
+
minChars?: number | undefined;
|
|
343
|
+
maxChars?: number | undefined;
|
|
344
|
+
idleMs?: number | undefined;
|
|
345
|
+
} | undefined;
|
|
346
|
+
deliverModelFallbackNotice?: boolean | undefined;
|
|
238
347
|
}>;
|
|
239
348
|
/** 将 `robotKey`(推荐)或旧字段 `appKey` 归一为鉴权可用的密钥(两字段同步为同一非空值)。 */
|
|
240
349
|
export declare function normalizeRobotKey<T extends {
|
|
@@ -243,6 +352,25 @@ export declare function normalizeRobotKey<T extends {
|
|
|
243
352
|
}>(config: T): T;
|
|
244
353
|
/** 从顶层 cfg 中取出 XgImConfig,支持多账户(README:channels.xg_cwork_im) */
|
|
245
354
|
export declare function getXgImConfig(cfg: OpenClawConfig, accountId?: string | null): XgImConfig;
|
|
355
|
+
/** 入站 block streaming 是否开启(未显式 false 时默认开启)。 */
|
|
356
|
+
export declare function isInboundBlockStreamingEnabled(config: XgImConfig): boolean;
|
|
357
|
+
/** 是否向 IM 投递 OpenClaw 模型降级运营通知(仅显式 true 时发送)。 */
|
|
358
|
+
export declare function shouldDeliverModelFallbackNoticeToIm(config: XgImConfig): boolean;
|
|
359
|
+
/** IM 通道未配置 coalesce 时,用于覆盖 agents.defaults 中偏大值的即时 flush 策略 */
|
|
360
|
+
export declare const IM_BLOCK_STREAMING_COALESCE_DEFAULT: {
|
|
361
|
+
readonly minChars: 1;
|
|
362
|
+
readonly maxChars: 12000;
|
|
363
|
+
readonly idleMs: 0;
|
|
364
|
+
};
|
|
365
|
+
/** 传给 OpenClaw replyOptions,强制开启/关闭 text_end 中间块 deliver。 */
|
|
366
|
+
export declare function resolveBlockStreamingReplyOptions(config: XgImConfig): {
|
|
367
|
+
disableBlockStreaming: boolean;
|
|
368
|
+
};
|
|
369
|
+
/**
|
|
370
|
+
* 入站 dispatch 用 cfg:在 block streaming 开启且通道未配 coalesce 时,
|
|
371
|
+
* 为 `channels.xg_cwork_im` 注入 IM 友好 coalesce,避免 agents.defaults 的大 minChars/idleMs 推迟 tool 前 HTTP。
|
|
372
|
+
*/
|
|
373
|
+
export declare function resolveDispatchOpenClawCfg(cfg: OpenClawConfig, config: XgImConfig): OpenClawConfig;
|
|
246
374
|
/**
|
|
247
375
|
* 合并 `channels.xg_cwork_im` 顶层、`accounts.default`、以及 `accounts.<accountId>` 后的 `systemPrompt`,
|
|
248
376
|
* 写入 OpenClaw 入站 `GroupSystemPrompt`。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-config.d.ts","sourceRoot":"","sources":["../../src/channel-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"channel-config.d.ts","sourceRoot":"","sources":["../../src/channel-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuC7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAdzB;;;WAGG;;QAEH,8DAA8D;;;;;;;;;;;;;;QAE9D;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuFD,CAAC;AAEP,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAIhG;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAuBxF;AAED,gDAAgD;AAChD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAE1E;AAED,iDAAiD;AACjD,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEhF;AAED,gEAAgE;AAChE,eAAO,MAAM,mCAAmC;;;;CAItC,CAAC;AAEX,6DAA6D;AAC7D,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,qBAAqB,EAAE,OAAO,CAAA;CAAE,CAExG;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,CAsBlG;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBvG;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAOzD;AAUD,wBAAgB,+BAA+B,CAC3C,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB,CAAC;CAC9B,GACF,OAAO,CA6BT"}
|