@xgjktech/xg_cwork_im 1.17.21 → 1.17.23
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 +55 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/src/account-connection.d.ts.map +1 -1
- package/dist/src/account-connection.js +97 -7
- package/dist/src/account-connection.js.map +1 -1
- package/dist/src/action-run-event.d.ts +8 -0
- package/dist/src/action-run-event.d.ts.map +1 -0
- package/dist/src/action-run-event.js +35 -0
- package/dist/src/action-run-event.js.map +1 -0
- package/dist/src/action-run-event.test.d.ts +2 -0
- package/dist/src/action-run-event.test.d.ts.map +1 -0
- package/dist/src/action-run-event.test.js +51 -0
- package/dist/src/action-run-event.test.js.map +1 -0
- package/dist/src/action-store-access.d.ts +27 -0
- package/dist/src/action-store-access.d.ts.map +1 -0
- package/dist/src/action-store-access.js +74 -0
- package/dist/src/action-store-access.js.map +1 -0
- package/dist/src/agent-context-types.d.ts +85 -10
- package/dist/src/agent-context-types.d.ts.map +1 -1
- package/dist/src/agent-context-types.js +50 -7
- package/dist/src/agent-context-types.js.map +1 -1
- package/dist/src/agent-context-types.test.js +55 -2
- package/dist/src/agent-context-types.test.js.map +1 -1
- package/dist/src/auto-model-router.d.ts +36 -0
- package/dist/src/auto-model-router.d.ts.map +1 -0
- package/dist/src/auto-model-router.js +60 -0
- package/dist/src/auto-model-router.js.map +1 -0
- package/dist/src/auto-model-router.test.d.ts +2 -0
- package/dist/src/auto-model-router.test.d.ts.map +1 -0
- package/dist/src/auto-model-router.test.js +99 -0
- package/dist/src/auto-model-router.test.js.map +1 -0
- package/dist/src/build-project-prompt.d.ts.map +1 -1
- package/dist/src/build-project-prompt.js +53 -17
- package/dist/src/build-project-prompt.js.map +1 -1
- package/dist/src/build-project-prompt.test.d.ts +2 -0
- package/dist/src/build-project-prompt.test.d.ts.map +1 -0
- package/dist/src/build-project-prompt.test.js +100 -0
- package/dist/src/build-project-prompt.test.js.map +1 -0
- package/dist/src/channel-config.d.ts +191 -1
- package/dist/src/channel-config.d.ts.map +1 -1
- package/dist/src/channel-config.js +83 -0
- package/dist/src/channel-config.js.map +1 -1
- package/dist/src/channel-config.test.d.ts +2 -0
- package/dist/src/channel-config.test.d.ts.map +1 -0
- package/dist/src/channel-config.test.js +56 -0
- package/dist/src/channel-config.test.js.map +1 -0
- package/dist/src/channel-disabled-account.test.d.ts +2 -0
- package/dist/src/channel-disabled-account.test.d.ts.map +1 -0
- package/dist/src/channel-disabled-account.test.js +44 -0
- package/dist/src/channel-disabled-account.test.js.map +1 -0
- package/dist/src/dispatch-mentioned-reply.d.ts +8 -0
- package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
- package/dist/src/dispatch-mentioned-reply.js +42 -3
- package/dist/src/dispatch-mentioned-reply.js.map +1 -1
- package/dist/src/gateway-session-queue.d.ts +8 -0
- package/dist/src/gateway-session-queue.d.ts.map +1 -1
- package/dist/src/gateway-session-queue.js +3 -0
- package/dist/src/gateway-session-queue.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-model.d.ts +22 -5
- package/dist/src/inbound-model.d.ts.map +1 -1
- package/dist/src/inbound-model.js +27 -11
- package/dist/src/inbound-model.js.map +1 -1
- package/dist/src/inbound-model.test.d.ts +2 -0
- package/dist/src/inbound-model.test.d.ts.map +1 -0
- package/dist/src/inbound-model.test.js +66 -0
- package/dist/src/inbound-model.test.js.map +1 -0
- package/dist/src/nas-volumes.d.ts +43 -0
- package/dist/src/nas-volumes.d.ts.map +1 -0
- package/dist/src/nas-volumes.js +191 -0
- package/dist/src/nas-volumes.js.map +1 -0
- package/dist/src/nas-volumes.test.d.ts +2 -0
- package/dist/src/nas-volumes.test.d.ts.map +1 -0
- package/dist/src/nas-volumes.test.js +111 -0
- package/dist/src/nas-volumes.test.js.map +1 -0
- package/dist/src/plan-tool-middleware.d.ts +5 -0
- package/dist/src/plan-tool-middleware.d.ts.map +1 -1
- package/dist/src/plan-tool-middleware.js +27 -0
- package/dist/src/plan-tool-middleware.js.map +1 -1
- package/dist/src/plan-tool-middleware.test.js +28 -0
- package/dist/src/plan-tool-middleware.test.js.map +1 -1
- package/dist/src/single-chat-no-reply-fallback.d.ts +14 -0
- package/dist/src/single-chat-no-reply-fallback.d.ts.map +1 -0
- package/dist/src/single-chat-no-reply-fallback.js +20 -0
- package/dist/src/single-chat-no-reply-fallback.js.map +1 -0
- package/dist/src/subagent-progress-hooks.d.ts +11 -0
- package/dist/src/subagent-progress-hooks.d.ts.map +1 -0
- package/dist/src/subagent-progress-hooks.js +41 -0
- package/dist/src/subagent-progress-hooks.js.map +1 -0
- package/dist/src/types.d.ts +26 -2
- 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 +1 -0
- package/dist/src/user-facing-errors.d.ts.map +1 -1
- package/dist/src/user-facing-errors.js +7 -0
- package/dist/src/user-facing-errors.js.map +1 -1
- package/dist/src/user-facing-errors.test.js +8 -1
- package/dist/src/user-facing-errors.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { isKnowledgeBaseByPath, isKnowledgeBaseByProjectIdOnly, } from "./agent-context-types.js";
|
|
5
5
|
import { normalizeWorkspaceRelativeSegment, resolveLocalAbsolutePath, } from "./project-path-normalize.js";
|
|
6
|
+
import { normalizeNasVolumesForPrompt } from "./nas-volumes.js";
|
|
6
7
|
const DEFAULT_SANDBOX_PREFIX = "/workspace";
|
|
7
8
|
const DEFAULT_PROJECT_PROMPT_MAX_CHARS = 15_000;
|
|
8
9
|
export function resolvePromptMaxChars(config) {
|
|
@@ -96,35 +97,70 @@ export function buildAgentContextPromptBlock(input) {
|
|
|
96
97
|
const { agentContext, config, workspaceHostRoot, log } = input;
|
|
97
98
|
const lines = [];
|
|
98
99
|
const maxChars = resolvePromptMaxChars(config);
|
|
99
|
-
const pathInfo =
|
|
100
|
+
const pathInfo = agentContext.localRoot
|
|
101
|
+
? resolveSandboxProjectPath(agentContext.localRoot, config)
|
|
102
|
+
: undefined;
|
|
103
|
+
const nasVolumes = normalizeNasVolumesForPrompt(agentContext.nasVolumes);
|
|
100
104
|
lines.push("## 当前项目");
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
if (pathInfo) {
|
|
106
|
+
lines.push("");
|
|
107
|
+
lines.push(`- 项目根目录:\`${pathInfo.sandboxPath}\``);
|
|
108
|
+
if (pathInfo.workspaceRelativeSegment) {
|
|
109
|
+
lines.push(`- Workspace 相对路径:\`${pathInfo.workspaceRelativeSegment}\``);
|
|
110
|
+
lines.push(`- 本条消息入站附件:\`${pathInfo.sandboxPath}/input\``);
|
|
111
|
+
if (pathInfo.pathMode === "relative") {
|
|
112
|
+
lines.push(`- 未配置 \`inboundMediaSandboxRootPrefix\`,默认采用 workspace 相对路径(\`./...\`)以兼容沙箱与非沙箱环境。`);
|
|
113
|
+
lines.push(`- 若当前运行时要求绝对前缀路径,请在通道配置中显式设置 \`inboundMediaSandboxRootPrefix\`(例如 \`${DEFAULT_SANDBOX_PREFIX}\`)。`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (pathInfo.hostNote) {
|
|
117
|
+
lines.push(`- ${pathInfo.hostNote}`);
|
|
118
|
+
lines.push(`- 注意:host_absolute 模式下附件落盘路径为宿主机绝对路径,沙箱 Agent 可能无法读取`);
|
|
109
119
|
}
|
|
110
120
|
}
|
|
111
|
-
if (
|
|
112
|
-
lines.push(
|
|
113
|
-
lines.push(
|
|
121
|
+
if (nasVolumes.length > 0) {
|
|
122
|
+
lines.push("");
|
|
123
|
+
lines.push("### 本次会话文件目录");
|
|
124
|
+
lines.push("本次会话需要读取的文件位于以下已授权目录:");
|
|
125
|
+
for (const volume of nasVolumes) {
|
|
126
|
+
lines.push(`- \`${volume.sandboxDir}\`(${volume.mode === "ro" ? "只读" : "可读写"})`);
|
|
127
|
+
}
|
|
128
|
+
const preferredWritePath = pathInfo?.sandboxPath ?? nasVolumes.find((volume) => volume.mode === "rw")?.sandboxDir;
|
|
129
|
+
if (preferredWritePath) {
|
|
130
|
+
lines.push(`- 首选文件写入目录:\`${preferredWritePath}\`${pathInfo ? "(localRoot 优先)" : ""}`);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
lines.push("- 当前 NAS 目录均为只读;不要尝试向这些目录写入文件。");
|
|
134
|
+
}
|
|
114
135
|
}
|
|
115
136
|
lines.push("");
|
|
116
137
|
lines.push("### 目录用途");
|
|
117
|
-
|
|
138
|
+
if (pathInfo) {
|
|
139
|
+
lines.push("- **项目产出**:项目相关文件的创建与修改应保存在项目根目录或其子目录下;子目录结构由已启用的 skill 决定。");
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const writableNas = nasVolumes.find((volume) => volume.mode === "rw");
|
|
143
|
+
lines.push(writableNas
|
|
144
|
+
? `- **项目产出**:项目相关文件优先保存到可写目录 \`${writableNas.sandboxDir}\` 或其子目录。`
|
|
145
|
+
: "- **项目产出**:当前未指定可写项目目录;除非用户另有明确要求,不要向只读 NAS 目录写入。");
|
|
146
|
+
}
|
|
118
147
|
const kbLine = knowledgeBasePurposeLine(agentContext);
|
|
119
148
|
if (kbLine) {
|
|
120
149
|
lines.push(kbLine);
|
|
121
150
|
}
|
|
122
151
|
lines.push("");
|
|
123
152
|
lines.push("### 操作约束");
|
|
124
|
-
|
|
125
|
-
|
|
153
|
+
if (pathInfo) {
|
|
154
|
+
lines.push(nasVolumes.length > 0
|
|
155
|
+
? "- 仅在本项目根目录及上述已授权 NAS 目录下处理项目相关文件;不要在 workspace 其他位置查找类似目录。"
|
|
156
|
+
: "- 仅在本项目根目录下处理项目相关文件;不要在 workspace 其他位置查找类似目录。");
|
|
157
|
+
lines.push("- 项目根目录可能尚无文件或仅有部分内容,向用户如实说明即可,不要猜测其他路径。");
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
lines.push("- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。");
|
|
161
|
+
}
|
|
126
162
|
lines.push('- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。');
|
|
127
|
-
if (workspaceHostRoot?.trim() && agentContext.localRoot
|
|
163
|
+
if (workspaceHostRoot?.trim() && agentContext.localRoot?.kind === "workspace_relative") {
|
|
128
164
|
try {
|
|
129
165
|
resolveLocalAbsolutePath(agentContext.localRoot, workspaceHostRoot);
|
|
130
166
|
}
|
|
@@ -141,7 +177,7 @@ export function buildAgentContextPromptBlock(input) {
|
|
|
141
177
|
}
|
|
142
178
|
return {
|
|
143
179
|
block: lines.join("\n"),
|
|
144
|
-
sandboxProjectPath: pathInfo
|
|
180
|
+
sandboxProjectPath: pathInfo?.sandboxPath,
|
|
145
181
|
};
|
|
146
182
|
}
|
|
147
183
|
//# sourceMappingURL=build-project-prompt.js.map
|
|
@@ -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,EACrB,8BAA8B,GAEjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,iCAAiC,EACjC,wBAAwB,GAE3B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"build-project-prompt.js","sourceRoot":"","sources":["../../src/build-project-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-project-prompt.test.d.ts","sourceRoot":"","sources":["../../src/build-project-prompt.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { buildAgentContextPromptBlock } from "./build-project-prompt.js";
|
|
4
|
+
const config = { baseUrl: "https://im.example.test" };
|
|
5
|
+
describe("buildAgentContextPromptBlock nasVolumes", () => {
|
|
6
|
+
it("lists NAS directories and selects the first rw directory without localRoot", () => {
|
|
7
|
+
const result = buildAgentContextPromptBlock({
|
|
8
|
+
config,
|
|
9
|
+
agentContext: {
|
|
10
|
+
nasVolumes: [
|
|
11
|
+
{ realDir: "/data/touqian/a", dockerDir: "case/archive", mode: "ro" },
|
|
12
|
+
{ realDir: "/data/touqian/b", dockerDir: "case/output", mode: "rw" },
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
assert.match(result.block, /本次会话需要读取的文件位于以下已授权目录/);
|
|
17
|
+
assert.match(result.block, /`\/workspace\/case\/archive`(只读)/);
|
|
18
|
+
assert.match(result.block, /`\/workspace\/case\/output`(可读写)/);
|
|
19
|
+
assert.match(result.block, /首选文件写入目录:`\/workspace\/case\/output`/);
|
|
20
|
+
});
|
|
21
|
+
it("prefers localRoot as the write directory", () => {
|
|
22
|
+
const result = buildAgentContextPromptBlock({
|
|
23
|
+
config,
|
|
24
|
+
agentContext: {
|
|
25
|
+
localRoot: { kind: "workspace_relative", path: "project/main" },
|
|
26
|
+
nasVolumes: [{ realDir: "/data/touqian/b", dockerDir: "case/output", mode: "rw" }],
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
assert.match(result.block, /首选文件写入目录:`\.\/project\/main`(localRoot 优先)/);
|
|
30
|
+
});
|
|
31
|
+
it("keeps the legacy prompt unchanged when nasVolumes is empty", () => {
|
|
32
|
+
const base = {
|
|
33
|
+
config,
|
|
34
|
+
agentContext: { localRoot: { kind: "workspace_relative", path: "project/main" } },
|
|
35
|
+
};
|
|
36
|
+
const omitted = buildAgentContextPromptBlock(base);
|
|
37
|
+
const empty = buildAgentContextPromptBlock({
|
|
38
|
+
...base,
|
|
39
|
+
agentContext: { ...base.agentContext, nasVolumes: [] },
|
|
40
|
+
});
|
|
41
|
+
assert.equal(empty.block, omitted.block);
|
|
42
|
+
assert.ok(empty.block.includes("仅在本项目根目录下处理项目相关文件"));
|
|
43
|
+
assert.ok(!empty.block.includes("NAS"));
|
|
44
|
+
});
|
|
45
|
+
it("renders the touqian workbench context with the rw input directory as output", () => {
|
|
46
|
+
const background = [
|
|
47
|
+
"用户从工作台待办进入,请结合以下背景信息协助用户处理待办:",
|
|
48
|
+
"待办内容:Rezpegaldesleukin-Nektar Therapeutics-特应性皮炎,斑秃-初级BD快核",
|
|
49
|
+
"待办分类:产品引进-投前",
|
|
50
|
+
"分组名称:无",
|
|
51
|
+
"业务类型:touqian",
|
|
52
|
+
"业务ID:3090270000000000307",
|
|
53
|
+
"引用内容:使用bd-fast-review-revision这个skill进行处理,按BD首轮复核指示函的事项描述进行首轮核验。",
|
|
54
|
+
"引用技能:这是投前报告修订业务,处理待办的时候需要使用bd-fast-review-revision(skill)处理待办的流程",
|
|
55
|
+
].join("\n");
|
|
56
|
+
const result = buildAgentContextPromptBlock({
|
|
57
|
+
config,
|
|
58
|
+
agentContext: {
|
|
59
|
+
nasVolumes: [
|
|
60
|
+
{
|
|
61
|
+
realDir: "/data/touqian/CP202205250005/deliverables",
|
|
62
|
+
dockerDir: "touqian/2026/08/3090270000000000307/CP202205250005/deliverables",
|
|
63
|
+
mode: "ro",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
realDir: "/data/touqian/CP202205250005/sequences/0000",
|
|
67
|
+
dockerDir: "touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000",
|
|
68
|
+
mode: "ro",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
realDir: "/data/touqian/CP202205250005/sequences/0001/input",
|
|
72
|
+
dockerDir: "touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input",
|
|
73
|
+
mode: "rw",
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
background,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
assert.equal(result.block, `## 当前项目
|
|
80
|
+
|
|
81
|
+
### 本次会话文件目录
|
|
82
|
+
本次会话需要读取的文件位于以下已授权目录:
|
|
83
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读)
|
|
84
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读)
|
|
85
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写)
|
|
86
|
+
- 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
|
|
87
|
+
|
|
88
|
+
### 目录用途
|
|
89
|
+
- **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
|
|
90
|
+
|
|
91
|
+
### 操作约束
|
|
92
|
+
- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
|
|
93
|
+
- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
|
|
94
|
+
|
|
95
|
+
## 项目背景
|
|
96
|
+
|
|
97
|
+
${background}`);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=build-project-prompt.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-project-prompt.test.js","sourceRoot":"","sources":["../../src/build-project-prompt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import type { OpenClawChatType } from "./inbound-chat-type.js";
|
|
7
|
-
import type { XgImConfig } from "./types.js";
|
|
7
|
+
import type { XgImConfig, AutoModelRoutingConfig } from "./types.js";
|
|
8
8
|
export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
9
9
|
robotKey: z.ZodOptional<z.ZodString>;
|
|
10
10
|
appKey: z.ZodOptional<z.ZodString>;
|
|
@@ -29,6 +29,7 @@ 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
|
+
nasVolumeAllowedRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
32
33
|
blockStreaming: z.ZodOptional<z.ZodBoolean>;
|
|
33
34
|
blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
|
|
34
35
|
minChars: z.ZodOptional<z.ZodNumber>;
|
|
@@ -46,6 +47,36 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
46
47
|
deliverModelFallbackNotice: z.ZodOptional<z.ZodBoolean>;
|
|
47
48
|
deliverSegmentBuffer: z.ZodOptional<z.ZodBoolean>;
|
|
48
49
|
deliverPartialSnapshot: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
autoModelRouting: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
52
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
53
|
+
simpleModel: z.ZodOptional<z.ZodString>;
|
|
54
|
+
standardModel: z.ZodOptional<z.ZodString>;
|
|
55
|
+
complexModel: z.ZodOptional<z.ZodString>;
|
|
56
|
+
criticalModel: z.ZodOptional<z.ZodString>;
|
|
57
|
+
/** 指定模型模式的模型默认推理等级映射(key 为完整 model ref)。 */
|
|
58
|
+
thinkingDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["off", "minimal", "low", "medium", "high", "xhigh", "adaptive", "max"]>>>;
|
|
59
|
+
/** 允许启用自动路由的 Agent ID 白名单;缺省/空表示不启用任何 Agent。 */
|
|
60
|
+
agentAllowlist: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
enabled: boolean;
|
|
63
|
+
version: string;
|
|
64
|
+
agentAllowlist: string[];
|
|
65
|
+
simpleModel?: string | undefined;
|
|
66
|
+
standardModel?: string | undefined;
|
|
67
|
+
complexModel?: string | undefined;
|
|
68
|
+
criticalModel?: string | undefined;
|
|
69
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
70
|
+
}, {
|
|
71
|
+
enabled?: boolean | undefined;
|
|
72
|
+
version?: string | undefined;
|
|
73
|
+
simpleModel?: string | undefined;
|
|
74
|
+
standardModel?: string | undefined;
|
|
75
|
+
complexModel?: string | undefined;
|
|
76
|
+
criticalModel?: string | undefined;
|
|
77
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
78
|
+
agentAllowlist?: string[] | undefined;
|
|
79
|
+
}>>;
|
|
49
80
|
accounts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
50
81
|
robotKey: z.ZodOptional<z.ZodString>;
|
|
51
82
|
appKey: z.ZodOptional<z.ZodString>;
|
|
@@ -63,6 +94,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
63
94
|
maxPendingMessages: z.ZodOptional<z.ZodNumber>;
|
|
64
95
|
syncServiceBaseUrl: z.ZodOptional<z.ZodString>;
|
|
65
96
|
projectPromptMaxChars: z.ZodOptional<z.ZodNumber>;
|
|
97
|
+
nasVolumeAllowedRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
66
98
|
/**
|
|
67
99
|
* 为 false 时关闭:assistant 在 tool 前的 text 块不再提前 HTTP deliver(整轮结束才发)。
|
|
68
100
|
* 未配置时默认开启。
|
|
@@ -92,6 +124,37 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
92
124
|
* 未配置且 blockStreaming 开启时默认开启。
|
|
93
125
|
*/
|
|
94
126
|
deliverSegmentBuffer: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
+
/** Auto Model Routing(模型 + 推理等级自动路由);默认关闭。 */
|
|
128
|
+
autoModelRouting: z.ZodOptional<z.ZodObject<{
|
|
129
|
+
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
130
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
131
|
+
simpleModel: z.ZodOptional<z.ZodString>;
|
|
132
|
+
standardModel: z.ZodOptional<z.ZodString>;
|
|
133
|
+
complexModel: z.ZodOptional<z.ZodString>;
|
|
134
|
+
criticalModel: z.ZodOptional<z.ZodString>;
|
|
135
|
+
/** 指定模型模式的模型默认推理等级映射(key 为完整 model ref)。 */
|
|
136
|
+
thinkingDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["off", "minimal", "low", "medium", "high", "xhigh", "adaptive", "max"]>>>;
|
|
137
|
+
/** 允许启用自动路由的 Agent ID 白名单;缺省/空表示不启用任何 Agent。 */
|
|
138
|
+
agentAllowlist: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
enabled: boolean;
|
|
141
|
+
version: string;
|
|
142
|
+
agentAllowlist: string[];
|
|
143
|
+
simpleModel?: string | undefined;
|
|
144
|
+
standardModel?: string | undefined;
|
|
145
|
+
complexModel?: string | undefined;
|
|
146
|
+
criticalModel?: string | undefined;
|
|
147
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
enabled?: boolean | undefined;
|
|
150
|
+
version?: string | undefined;
|
|
151
|
+
simpleModel?: string | undefined;
|
|
152
|
+
standardModel?: string | undefined;
|
|
153
|
+
complexModel?: string | undefined;
|
|
154
|
+
criticalModel?: string | undefined;
|
|
155
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
156
|
+
agentAllowlist?: string[] | undefined;
|
|
157
|
+
}>>;
|
|
95
158
|
}, "strip", z.ZodTypeAny, {
|
|
96
159
|
agentId: string;
|
|
97
160
|
groupPolicy: "open" | "mention";
|
|
@@ -108,6 +171,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
108
171
|
maxPendingMessages?: number | undefined;
|
|
109
172
|
syncServiceBaseUrl?: string | undefined;
|
|
110
173
|
projectPromptMaxChars?: number | undefined;
|
|
174
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
111
175
|
blockStreaming?: boolean | undefined;
|
|
112
176
|
blockStreamingCoalesce?: {
|
|
113
177
|
minChars?: number | undefined;
|
|
@@ -116,6 +180,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
116
180
|
} | undefined;
|
|
117
181
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
118
182
|
deliverSegmentBuffer?: boolean | undefined;
|
|
183
|
+
autoModelRouting?: {
|
|
184
|
+
enabled: boolean;
|
|
185
|
+
version: string;
|
|
186
|
+
agentAllowlist: string[];
|
|
187
|
+
simpleModel?: string | undefined;
|
|
188
|
+
standardModel?: string | undefined;
|
|
189
|
+
complexModel?: string | undefined;
|
|
190
|
+
criticalModel?: string | undefined;
|
|
191
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
192
|
+
} | undefined;
|
|
119
193
|
}, {
|
|
120
194
|
robotKey?: string | undefined;
|
|
121
195
|
appKey?: string | undefined;
|
|
@@ -132,6 +206,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
132
206
|
maxPendingMessages?: number | undefined;
|
|
133
207
|
syncServiceBaseUrl?: string | undefined;
|
|
134
208
|
projectPromptMaxChars?: number | undefined;
|
|
209
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
135
210
|
blockStreaming?: boolean | undefined;
|
|
136
211
|
blockStreamingCoalesce?: {
|
|
137
212
|
minChars?: number | undefined;
|
|
@@ -140,6 +215,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
140
215
|
} | undefined;
|
|
141
216
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
142
217
|
deliverSegmentBuffer?: boolean | undefined;
|
|
218
|
+
autoModelRouting?: {
|
|
219
|
+
enabled?: boolean | undefined;
|
|
220
|
+
version?: string | undefined;
|
|
221
|
+
simpleModel?: string | undefined;
|
|
222
|
+
standardModel?: string | undefined;
|
|
223
|
+
complexModel?: string | undefined;
|
|
224
|
+
criticalModel?: string | undefined;
|
|
225
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
226
|
+
agentAllowlist?: string[] | undefined;
|
|
227
|
+
} | undefined;
|
|
143
228
|
}>>>;
|
|
144
229
|
}, "strip", z.ZodTypeAny, {
|
|
145
230
|
agentId: string;
|
|
@@ -169,6 +254,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
169
254
|
maxPendingMessages?: number | undefined;
|
|
170
255
|
syncServiceBaseUrl?: string | undefined;
|
|
171
256
|
projectPromptMaxChars?: number | undefined;
|
|
257
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
172
258
|
blockStreaming?: boolean | undefined;
|
|
173
259
|
blockStreamingCoalesce?: {
|
|
174
260
|
minChars?: number | undefined;
|
|
@@ -177,6 +263,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
177
263
|
} | undefined;
|
|
178
264
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
179
265
|
deliverSegmentBuffer?: boolean | undefined;
|
|
266
|
+
autoModelRouting?: {
|
|
267
|
+
enabled: boolean;
|
|
268
|
+
version: string;
|
|
269
|
+
agentAllowlist: string[];
|
|
270
|
+
simpleModel?: string | undefined;
|
|
271
|
+
standardModel?: string | undefined;
|
|
272
|
+
complexModel?: string | undefined;
|
|
273
|
+
criticalModel?: string | undefined;
|
|
274
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
275
|
+
} | undefined;
|
|
180
276
|
}> | undefined;
|
|
181
277
|
robotKey?: string | undefined;
|
|
182
278
|
appKey?: string | undefined;
|
|
@@ -190,6 +286,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
190
286
|
systemPrompt?: string | undefined;
|
|
191
287
|
syncServiceBaseUrl?: string | undefined;
|
|
192
288
|
projectPromptMaxChars?: number | undefined;
|
|
289
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
193
290
|
blockStreaming?: boolean | undefined;
|
|
194
291
|
blockStreamingCoalesce?: {
|
|
195
292
|
minChars?: number | undefined;
|
|
@@ -199,6 +296,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
199
296
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
200
297
|
deliverSegmentBuffer?: boolean | undefined;
|
|
201
298
|
deliverPartialSnapshot?: boolean | undefined;
|
|
299
|
+
autoModelRouting?: {
|
|
300
|
+
enabled: boolean;
|
|
301
|
+
version: string;
|
|
302
|
+
agentAllowlist: string[];
|
|
303
|
+
simpleModel?: string | undefined;
|
|
304
|
+
standardModel?: string | undefined;
|
|
305
|
+
complexModel?: string | undefined;
|
|
306
|
+
criticalModel?: string | undefined;
|
|
307
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
308
|
+
} | undefined;
|
|
202
309
|
}, {
|
|
203
310
|
baseUrl: string;
|
|
204
311
|
accounts?: Record<string, {
|
|
@@ -217,6 +324,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
217
324
|
maxPendingMessages?: number | undefined;
|
|
218
325
|
syncServiceBaseUrl?: string | undefined;
|
|
219
326
|
projectPromptMaxChars?: number | undefined;
|
|
327
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
220
328
|
blockStreaming?: boolean | undefined;
|
|
221
329
|
blockStreamingCoalesce?: {
|
|
222
330
|
minChars?: number | undefined;
|
|
@@ -225,6 +333,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
225
333
|
} | undefined;
|
|
226
334
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
227
335
|
deliverSegmentBuffer?: boolean | undefined;
|
|
336
|
+
autoModelRouting?: {
|
|
337
|
+
enabled?: boolean | undefined;
|
|
338
|
+
version?: string | undefined;
|
|
339
|
+
simpleModel?: string | undefined;
|
|
340
|
+
standardModel?: string | undefined;
|
|
341
|
+
complexModel?: string | undefined;
|
|
342
|
+
criticalModel?: string | undefined;
|
|
343
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
344
|
+
agentAllowlist?: string[] | undefined;
|
|
345
|
+
} | undefined;
|
|
228
346
|
}> | undefined;
|
|
229
347
|
robotKey?: string | undefined;
|
|
230
348
|
appKey?: string | undefined;
|
|
@@ -248,6 +366,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
248
366
|
maxPendingMessages?: number | undefined;
|
|
249
367
|
syncServiceBaseUrl?: string | undefined;
|
|
250
368
|
projectPromptMaxChars?: number | undefined;
|
|
369
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
251
370
|
blockStreaming?: boolean | undefined;
|
|
252
371
|
blockStreamingCoalesce?: {
|
|
253
372
|
minChars?: number | undefined;
|
|
@@ -257,6 +376,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
257
376
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
258
377
|
deliverSegmentBuffer?: boolean | undefined;
|
|
259
378
|
deliverPartialSnapshot?: boolean | undefined;
|
|
379
|
+
autoModelRouting?: {
|
|
380
|
+
enabled?: boolean | undefined;
|
|
381
|
+
version?: string | undefined;
|
|
382
|
+
simpleModel?: string | undefined;
|
|
383
|
+
standardModel?: string | undefined;
|
|
384
|
+
complexModel?: string | undefined;
|
|
385
|
+
criticalModel?: string | undefined;
|
|
386
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
387
|
+
agentAllowlist?: string[] | undefined;
|
|
388
|
+
} | undefined;
|
|
260
389
|
}>, {
|
|
261
390
|
agentId: string;
|
|
262
391
|
baseUrl: string;
|
|
@@ -285,6 +414,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
285
414
|
maxPendingMessages?: number | undefined;
|
|
286
415
|
syncServiceBaseUrl?: string | undefined;
|
|
287
416
|
projectPromptMaxChars?: number | undefined;
|
|
417
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
288
418
|
blockStreaming?: boolean | undefined;
|
|
289
419
|
blockStreamingCoalesce?: {
|
|
290
420
|
minChars?: number | undefined;
|
|
@@ -293,6 +423,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
293
423
|
} | undefined;
|
|
294
424
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
295
425
|
deliverSegmentBuffer?: boolean | undefined;
|
|
426
|
+
autoModelRouting?: {
|
|
427
|
+
enabled: boolean;
|
|
428
|
+
version: string;
|
|
429
|
+
agentAllowlist: string[];
|
|
430
|
+
simpleModel?: string | undefined;
|
|
431
|
+
standardModel?: string | undefined;
|
|
432
|
+
complexModel?: string | undefined;
|
|
433
|
+
criticalModel?: string | undefined;
|
|
434
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
435
|
+
} | undefined;
|
|
296
436
|
}> | undefined;
|
|
297
437
|
robotKey?: string | undefined;
|
|
298
438
|
appKey?: string | undefined;
|
|
@@ -306,6 +446,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
306
446
|
systemPrompt?: string | undefined;
|
|
307
447
|
syncServiceBaseUrl?: string | undefined;
|
|
308
448
|
projectPromptMaxChars?: number | undefined;
|
|
449
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
309
450
|
blockStreaming?: boolean | undefined;
|
|
310
451
|
blockStreamingCoalesce?: {
|
|
311
452
|
minChars?: number | undefined;
|
|
@@ -315,6 +456,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
315
456
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
316
457
|
deliverSegmentBuffer?: boolean | undefined;
|
|
317
458
|
deliverPartialSnapshot?: boolean | undefined;
|
|
459
|
+
autoModelRouting?: {
|
|
460
|
+
enabled: boolean;
|
|
461
|
+
version: string;
|
|
462
|
+
agentAllowlist: string[];
|
|
463
|
+
simpleModel?: string | undefined;
|
|
464
|
+
standardModel?: string | undefined;
|
|
465
|
+
complexModel?: string | undefined;
|
|
466
|
+
criticalModel?: string | undefined;
|
|
467
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
468
|
+
} | undefined;
|
|
318
469
|
}, {
|
|
319
470
|
baseUrl: string;
|
|
320
471
|
accounts?: Record<string, {
|
|
@@ -333,6 +484,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
333
484
|
maxPendingMessages?: number | undefined;
|
|
334
485
|
syncServiceBaseUrl?: string | undefined;
|
|
335
486
|
projectPromptMaxChars?: number | undefined;
|
|
487
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
336
488
|
blockStreaming?: boolean | undefined;
|
|
337
489
|
blockStreamingCoalesce?: {
|
|
338
490
|
minChars?: number | undefined;
|
|
@@ -341,6 +493,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
341
493
|
} | undefined;
|
|
342
494
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
343
495
|
deliverSegmentBuffer?: boolean | undefined;
|
|
496
|
+
autoModelRouting?: {
|
|
497
|
+
enabled?: boolean | undefined;
|
|
498
|
+
version?: string | undefined;
|
|
499
|
+
simpleModel?: string | undefined;
|
|
500
|
+
standardModel?: string | undefined;
|
|
501
|
+
complexModel?: string | undefined;
|
|
502
|
+
criticalModel?: string | undefined;
|
|
503
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
504
|
+
agentAllowlist?: string[] | undefined;
|
|
505
|
+
} | undefined;
|
|
344
506
|
}> | undefined;
|
|
345
507
|
robotKey?: string | undefined;
|
|
346
508
|
appKey?: string | undefined;
|
|
@@ -364,6 +526,7 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
364
526
|
maxPendingMessages?: number | undefined;
|
|
365
527
|
syncServiceBaseUrl?: string | undefined;
|
|
366
528
|
projectPromptMaxChars?: number | undefined;
|
|
529
|
+
nasVolumeAllowedRoots?: string[] | undefined;
|
|
367
530
|
blockStreaming?: boolean | undefined;
|
|
368
531
|
blockStreamingCoalesce?: {
|
|
369
532
|
minChars?: number | undefined;
|
|
@@ -373,6 +536,16 @@ export declare const XgImConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
373
536
|
deliverModelFallbackNotice?: boolean | undefined;
|
|
374
537
|
deliverSegmentBuffer?: boolean | undefined;
|
|
375
538
|
deliverPartialSnapshot?: boolean | undefined;
|
|
539
|
+
autoModelRouting?: {
|
|
540
|
+
enabled?: boolean | undefined;
|
|
541
|
+
version?: string | undefined;
|
|
542
|
+
simpleModel?: string | undefined;
|
|
543
|
+
standardModel?: string | undefined;
|
|
544
|
+
complexModel?: string | undefined;
|
|
545
|
+
criticalModel?: string | undefined;
|
|
546
|
+
thinkingDefaults?: Record<string, "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max"> | undefined;
|
|
547
|
+
agentAllowlist?: string[] | undefined;
|
|
548
|
+
} | undefined;
|
|
376
549
|
}>;
|
|
377
550
|
/** 将 `robotKey`(推荐)或旧字段 `appKey` 归一为鉴权可用的密钥(两字段同步为同一非空值)。 */
|
|
378
551
|
export declare function normalizeRobotKey<T extends {
|
|
@@ -414,6 +587,23 @@ export declare function resolveDispatchOpenClawCfg(cfg: OpenClawConfig, config:
|
|
|
414
587
|
*/
|
|
415
588
|
export declare function resolveXgImGroupSystemPrompt(cfg: OpenClawConfig, accountId: string): string | undefined;
|
|
416
589
|
export declare function isConfigured(cfg: OpenClawConfig): boolean;
|
|
590
|
+
/** Auto Model Routing 运行时配置(归一默认值)。 */
|
|
591
|
+
export declare function resolveAutoModelRoutingConfig(config: XgImConfig): AutoModelRoutingConfig;
|
|
592
|
+
/**
|
|
593
|
+
* Auto 路由是否对本 Agent 生效:enabled=true 且 Agent 在白名单。
|
|
594
|
+
* allowlist 缺省/为空时不启用任何 Agent(安全默认,避免未经灰度就自动路由)。
|
|
595
|
+
*/
|
|
596
|
+
export declare function isAutoModelRoutingEnabled(cfg: AutoModelRoutingConfig, agentId: string): boolean;
|
|
597
|
+
/**
|
|
598
|
+
* 解析 Auto Router 的四模型槽位;任一槽位缺失即视为未就绪(返回 undefined,
|
|
599
|
+
* 由调用方回退 Agent 默认配置,绝不把半套配置用于路由)。
|
|
600
|
+
*/
|
|
601
|
+
export declare function resolveAutoModelRoutingSlots(cfg: AutoModelRoutingConfig): {
|
|
602
|
+
simpleModel: string;
|
|
603
|
+
standardModel: string;
|
|
604
|
+
complexModel: string;
|
|
605
|
+
criticalModel: string;
|
|
606
|
+
} | undefined;
|
|
417
607
|
export declare function resolveInboundCommandAuthorized(rt: unknown, cfg: OpenClawConfig, p: {
|
|
418
608
|
accountId: string;
|
|
419
609
|
senderId: string | undefined;
|
|
@@ -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":"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"}
|