sema-core 2.0.4 → 2.0.6
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/dist/core/Conversation.d.ts.map +1 -1
- package/dist/core/Conversation.js +6 -3
- package/dist/core/Conversation.js.map +1 -1
- package/dist/core/SemaEngine.d.ts.map +1 -1
- package/dist/core/SemaEngine.js +9 -1
- package/dist/core/SemaEngine.js.map +1 -1
- package/dist/events/types.d.ts +15 -0
- package/dist/events/types.d.ts.map +1 -1
- package/dist/manager/PermissionManager.d.ts.map +1 -1
- package/dist/manager/PermissionManager.js +74 -90
- package/dist/manager/PermissionManager.js.map +1 -1
- package/dist/manager/StateManager.d.ts +6 -1
- package/dist/manager/StateManager.d.ts.map +1 -1
- package/dist/manager/StateManager.js +12 -2
- package/dist/manager/StateManager.js.map +1 -1
- package/dist/prompt/memory.d.ts.map +1 -1
- package/dist/prompt/memory.js +23 -12
- package/dist/prompt/memory.js.map +1 -1
- package/dist/prompt/permission.d.ts +1 -1
- package/dist/prompt/permission.d.ts.map +1 -1
- package/dist/prompt/permission.js +43 -7
- package/dist/prompt/permission.js.map +1 -1
- package/dist/services/commands/runCommand.js +23 -11
- package/dist/services/commands/runCommand.js.map +1 -1
- package/dist/tools/FetchUrl.js +3 -3
- package/dist/tools/FetchUrl.js.map +1 -1
- package/dist/tools/RunShell.d.ts.map +1 -1
- package/dist/tools/RunShell.js +8 -7
- package/dist/tools/RunShell.js.map +1 -1
- package/dist/util/commands.d.ts.map +1 -1
- package/dist/util/commands.js +48 -4
- package/dist/util/commands.js.map +1 -1
- package/dist/util/commands.test.d.ts +2 -0
- package/dist/util/commands.test.d.ts.map +1 -0
- package/dist/util/commands.test.js +93 -0
- package/dist/util/commands.test.js.map +1 -0
- package/dist/util/compact.d.ts +40 -6
- package/dist/util/compact.d.ts.map +1 -1
- package/dist/util/compact.js +152 -63
- package/dist/util/compact.js.map +1 -1
- package/dist/util/fetchSafety.d.ts +11 -0
- package/dist/util/fetchSafety.d.ts.map +1 -0
- package/dist/util/fetchSafety.js +86 -0
- package/dist/util/fetchSafety.js.map +1 -0
- package/dist/util/fetchSafety.test.d.ts +2 -0
- package/dist/util/fetchSafety.test.d.ts.map +1 -0
- package/dist/util/fetchSafety.test.js +44 -0
- package/dist/util/fetchSafety.test.js.map +1 -0
- package/dist/util/fetchUrl.d.ts +1 -1
- package/dist/util/fetchUrl.d.ts.map +1 -1
- package/dist/util/fetchUrl.js +2 -2
- package/dist/util/fetchUrl.js.map +1 -1
- package/dist/util/fileReference.js +3 -3
- package/dist/util/fileReference.js.map +1 -1
- package/dist/util/history.d.ts +11 -1
- package/dist/util/history.d.ts.map +1 -1
- package/dist/util/history.js +19 -4
- package/dist/util/history.js.map +1 -1
- package/dist/util/savePath.d.ts +3 -1
- package/dist/util/savePath.d.ts.map +1 -1
- package/dist/util/savePath.js +4 -3
- package/dist/util/savePath.js.map +1 -1
- package/dist/util/shellSafety.d.ts +34 -0
- package/dist/util/shellSafety.d.ts.map +1 -0
- package/dist/util/shellSafety.js +122 -0
- package/dist/util/shellSafety.js.map +1 -0
- package/dist/util/shellSafety.test.d.ts +2 -0
- package/dist/util/shellSafety.test.d.ts.map +1 -0
- package/dist/util/shellSafety.test.js +103 -0
- package/dist/util/shellSafety.test.js.map +1 -0
- package/dist/util/snapshotStore.d.ts.map +1 -1
- package/dist/util/snapshotStore.js +9 -4
- package/dist/util/snapshotStore.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunShell.d.ts","sourceRoot":"","sources":["../../src/tools/RunShell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAQ,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAepD,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAC/C,eAAO,MAAM,4BAA4B,SAAS,CAAC;AA8BnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RunShell.d.ts","sourceRoot":"","sources":["../../src/tools/RunShell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAQ,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAepD,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAC/C,eAAO,MAAM,4BAA4B,SAAS,CAAC;AA8BnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAmBrB,CAAA;AAGF,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;qBAY4B,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;qEAmEtB,MAAM;;;;;;qBAmB9C,GAAG;;;;;CA+KQ,CAAA"}
|
package/dist/tools/RunShell.js
CHANGED
|
@@ -50,14 +50,15 @@ exports.toolParams = zod_1.z.strictObject({
|
|
|
50
50
|
.number()
|
|
51
51
|
.optional()
|
|
52
52
|
.describe(`Timeout duration in milliseconds, up to ${exports.RUN_SHELL_MAX_TIMEOUT_MS}ms (${exports.RUN_SHELL_MAX_TIMEOUT_MS / 60000} min). Defaults to ${exports.DEFAULT_RUN_SHELL_TIMEOUT_MS}ms if omitted.`),
|
|
53
|
-
description: zod_1.z.string().describe(`
|
|
53
|
+
description: zod_1.z.string().describe(`LANGUAGE: Write this summary in the same language you use to respond to the user (NOT the system prompt language). If you reply to the user in Chinese, this summary MUST be in Chinese.
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
A brief active-voice summary (5-10 words) explaining what this command does. Required for every call so users can understand the command at a glance. Keep it simple for common commands, add context for complex ones.
|
|
56
|
+
|
|
57
|
+
Structure (translate the summary into your reply language):
|
|
58
|
+
pwd → print current working directory
|
|
59
|
+
git log --oneline -5 → show last 5 commits
|
|
60
|
+
docker ps → list running containers
|
|
61
|
+
cat .env | wc -l → count lines in .env file`),
|
|
61
62
|
background: zod_1.z
|
|
62
63
|
.boolean()
|
|
63
64
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunShell.js","sourceRoot":"","sources":["../../src/tools/RunShell.ts"],"names":[],"mappings":";;;AAAA,2BAAwB;AACxB,+BAAoD;AACpD,6BAAuB;AAEvB,+CAA+C;AAC/C,uCAA4C;AAC5C,yCAA8F;AAC9F,wDAAuD;AACvD,qCAA4C;AAC5C,yCAA2E;AAC3E,uDAA6D;AAC7D,wDAAuD;AACvD,yCAA4F;AAC5F,uDAAmD;AAEnD,0DAAuD;AACvD,6CAAoD;AAEvC,QAAA,wBAAwB,GAAG,MAAM,CAAC,CAAC,eAAe;AAClD,QAAA,4BAA4B,GAAG,MAAM,CAAC,CAAC,cAAc;AAElE,MAAM,eAAe,GAAG;IACtB,OAAO;IACP,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,aAAa;IACb,QAAQ;IACR,SAAS;IACT,QAAQ;CACT,CAAA;AAED,cAAc;AACd,SAAS,QAAQ,CAAC,KAA4B;IAC5C,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IACD,OAAO,0BAAmB,CAAA;AAC5B,CAAC;AAEY,QAAA,UAAU,GAAG,OAAC,CAAC,YAAY,CAAC;IACvC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxD,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,gCAAwB,OAAO,gCAAwB,GAAG,KAAK,sBAAsB,oCAA4B,gBAAgB,CAAC;IACzL,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"RunShell.js","sourceRoot":"","sources":["../../src/tools/RunShell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,sBAAsB,GAC9B;IACE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,wBAAwB,EAAE,KAAK,CAAA;CAChC,GACD;IAAE,wBAAwB,EAAE,IAAI,CAAA;CAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,sBAAsB,GAC9B;IACE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,wBAAwB,EAAE,KAAK,CAAA;CAChC,GACD;IAAE,wBAAwB,EAAE,IAAI,CAAA;CAAE,CAAA;AAQtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkC5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA+GtD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAuDxC"}
|
package/dist/util/commands.js
CHANGED
|
@@ -10,11 +10,55 @@ const commands_1 = require("../prompt/commands");
|
|
|
10
10
|
const SQ_PLACEHOLDER = '__SQ_PLACEHOLDER__';
|
|
11
11
|
const DQ_PLACEHOLDER = '__DQ_PLACEHOLDER__';
|
|
12
12
|
const BS_PLACEHOLDER = '__BS_PLACEHOLDER__';
|
|
13
|
-
// 命令注入特征:反引号 / $( / 换行 / && / || /
|
|
14
|
-
//
|
|
15
|
-
|
|
13
|
+
// 命令注入特征:反引号 / $( / 换行 / && / || / ;。
|
|
14
|
+
// 但必须区分引号内外——引号里的换行/分号是字面数据(如 echo "多行文本"),不是命令分隔:
|
|
15
|
+
// - 单引号内:全部字面,shell 不做任何解释 → 一律忽略
|
|
16
|
+
// - 双引号内:换行 / ; / && / || 是字面,但 $( 与反引号仍是命令替换 → 仅检出这两者
|
|
17
|
+
// - 引号外:换行 / ; / && / || / $( / 反引号 全部视为注入
|
|
18
|
+
// 反斜杠转义会跳过下一个字符,避免把 \" \' 误判为引号边界。解析始终保守(fail-closed)。
|
|
16
19
|
function hasCommandInjection(command) {
|
|
17
|
-
|
|
20
|
+
let inSingle = false;
|
|
21
|
+
let inDouble = false;
|
|
22
|
+
for (let i = 0; i < command.length; i++) {
|
|
23
|
+
const c = command[i];
|
|
24
|
+
const next = command[i + 1];
|
|
25
|
+
if (inSingle) {
|
|
26
|
+
// 单引号内无转义,仅 ' 结束
|
|
27
|
+
if (c === "'")
|
|
28
|
+
inSingle = false;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (c === '\\') {
|
|
32
|
+
// 引号外或双引号内:反斜杠转义下一个字符,跳过
|
|
33
|
+
i++;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (inDouble) {
|
|
37
|
+
if (c === '`')
|
|
38
|
+
return true;
|
|
39
|
+
if (c === '$' && next === '(')
|
|
40
|
+
return true;
|
|
41
|
+
if (c === '"')
|
|
42
|
+
inDouble = false;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
// 引号外
|
|
46
|
+
if (c === "'") {
|
|
47
|
+
inSingle = true;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (c === '"') {
|
|
51
|
+
inDouble = true;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (c === '`' || c === '\n' || c === ';')
|
|
55
|
+
return true;
|
|
56
|
+
if (c === '$' && next === '(')
|
|
57
|
+
return true;
|
|
58
|
+
if ((c === '&' || c === '|') && next === c)
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
18
62
|
}
|
|
19
63
|
/**
|
|
20
64
|
* 根据shell操作符将命令字符串拆分为单个命令
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.test.d.ts","sourceRoot":"","sources":["../../src/util/commands.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const commands_1 = require("./commands");
|
|
9
|
+
(0, node_test_1.test)('引号外元字符判为注入', () => {
|
|
10
|
+
for (const c of [
|
|
11
|
+
'echo a; rm x',
|
|
12
|
+
'ls && rm',
|
|
13
|
+
'ls || rm',
|
|
14
|
+
'echo $(id)',
|
|
15
|
+
'echo `id`',
|
|
16
|
+
'cat a\nrm b',
|
|
17
|
+
]) {
|
|
18
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)(c), true, c);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
(0, node_test_1.test)('回归: 引号内的换行/分号是字面数据,不得判为注入', () => {
|
|
22
|
+
// 多行 echo —— 此前因双引号内换行被误判为注入,导致 AutoRun 不调模型直接转人工
|
|
23
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "banana\napple\n100"'), false);
|
|
24
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "a;b"'), false);
|
|
25
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)("echo 'a;b;c'"), false);
|
|
26
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)("echo '$(id)'"), false);
|
|
27
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "he said \\"hi\\""'), false);
|
|
28
|
+
});
|
|
29
|
+
(0, node_test_1.test)('双引号内命令替换仍生效,必须判为注入', () => {
|
|
30
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "$(id)"'), true);
|
|
31
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "`id`"'), true);
|
|
32
|
+
});
|
|
33
|
+
// ============ 误伤回归:以下都是合法命令,绝不能判为注入 ============
|
|
34
|
+
(0, node_test_1.test)('误伤回归: 引号内含 shell 元字符的合法命令', () => {
|
|
35
|
+
for (const c of [
|
|
36
|
+
'echo "hello world"',
|
|
37
|
+
'git commit -m "fix: handle a, b and c"',
|
|
38
|
+
'python -c "print(\'hello\')"', // 双引号内嵌单引号
|
|
39
|
+
'node -e "console.log(1+1)"',
|
|
40
|
+
'grep -E "foo|bar" file', // 双引号内管道是字面
|
|
41
|
+
"grep -E 'foo|bar' .", // 单引号内管道是字面
|
|
42
|
+
"awk '{print $1}' data.txt", // 单引号内 $1
|
|
43
|
+
"sed 's/a/b/g' file",
|
|
44
|
+
'echo "price is $5 today"', // $ 后非 ( 不算替换
|
|
45
|
+
'echo "say \\"hi\\" now"', // 双引号内转义引号
|
|
46
|
+
'echo "a && b || c ; d"', // 全在双引号内 → 字面
|
|
47
|
+
"echo 'a && b || c ; d'", // 单引号内 → 字面
|
|
48
|
+
'psql -c "SELECT 1; SELECT 2;"', // 双引号内分号是合法 SQL
|
|
49
|
+
'echo "var=${HOME}/bin"', // ${} 不是命令替换
|
|
50
|
+
'echo "literal backslash-n: a\\nb"', // 字面 \n(非真换行)
|
|
51
|
+
'find . -name "*.ts"',
|
|
52
|
+
'git log --pretty=format:"%h %s"',
|
|
53
|
+
'echo "url=http://a.com?x=1&y=2"', // 单个 & 在双引号内
|
|
54
|
+
]) {
|
|
55
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)(c), false, `不应误伤: ${JSON.stringify(c)}`);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
(0, node_test_1.test)('误伤回归: 多行文本(你的原始场景)', () => {
|
|
59
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "banana\napple\ncherry\n100"'), false);
|
|
60
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)("printf '%s\\n' 'line1\nline2'"), false);
|
|
61
|
+
});
|
|
62
|
+
// ============ 真注入:必须检出 ============
|
|
63
|
+
(0, node_test_1.test)('真注入: 引号外的命令分隔/替换必须检出', () => {
|
|
64
|
+
for (const c of [
|
|
65
|
+
'ls; rm -rf /',
|
|
66
|
+
'ls && rm x',
|
|
67
|
+
'ls || rm x',
|
|
68
|
+
'echo $(whoami)',
|
|
69
|
+
'echo `whoami`',
|
|
70
|
+
'cat a\nrm b', // 引号外真实换行
|
|
71
|
+
'echo "$(cat /etc/passwd)"', // 双引号内命令替换
|
|
72
|
+
'foo "abc"; rm bar', // 引号闭合后的分号
|
|
73
|
+
"cat 'x'`id`", // 单引号闭合后反引号
|
|
74
|
+
]) {
|
|
75
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)(c), true, `应检出注入: ${JSON.stringify(c)}`);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// ============ 边界行为文档化(断言实际行为,便于回归对比)============
|
|
79
|
+
(0, node_test_1.test)('边界: 反斜杠转义的字符不参与判定', () => {
|
|
80
|
+
// 双引号内转义的 $ / 反引号是字面,不是命令替换
|
|
81
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "\\$(not sub)"'), false);
|
|
82
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "\\`not sub\\`"'), false);
|
|
83
|
+
// 行连接符 \<换行> 是续行,被转义跳过,不算注入
|
|
84
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo a \\\nb'), false);
|
|
85
|
+
});
|
|
86
|
+
(0, node_test_1.test)('边界: $(( 算术展开仍按注入处理(与历史行为一致,偏保守)', () => {
|
|
87
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo $((1+1))'), true);
|
|
88
|
+
});
|
|
89
|
+
(0, node_test_1.test)('边界: 未闭合引号内的分隔符不检出(命令本身在 shell 中即语法错误)', () => {
|
|
90
|
+
// 双引号未闭合 → 整段被当引号内,; 不检出;该命令在 shell 中会因 EOF 报错而不执行
|
|
91
|
+
strict_1.default.equal((0, commands_1.hasCommandInjection)('echo "a; rm b'), false);
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=commands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/util/commands.test.ts"],"names":[],"mappings":"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"}
|
package/dist/util/compact.d.ts
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
import { Message } from '../types/message';
|
|
2
|
+
import { queryLLM } from '../services/api/queryLLM';
|
|
2
3
|
import { Tool } from '../tools/base/Tool';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
declare const defaultCompactDependencies: {
|
|
5
|
+
queryLLM: typeof queryLLM;
|
|
6
|
+
getModelManager: () => import("../manager/ModelManager").ModelManager;
|
|
7
|
+
getEventBus: () => import("../events/EventSystem").EventBus;
|
|
8
|
+
};
|
|
9
|
+
export declare const __compactTestHooks: {
|
|
10
|
+
setDependencies(dependencies: Partial<typeof defaultCompactDependencies>): void;
|
|
11
|
+
resetDependencies(): void;
|
|
12
|
+
};
|
|
13
|
+
export type CompactTruncatedReason = 'EMPTY_SUMMARY' | 'INVALID_COMPACT_RESPONSE' | 'COMPACT_ERROR';
|
|
14
|
+
export type CompactResult = {
|
|
15
|
+
kind: 'unchanged';
|
|
16
|
+
messages: Message[];
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'summary';
|
|
19
|
+
messages: Message[];
|
|
20
|
+
summary: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'truncated';
|
|
23
|
+
messages: Message[];
|
|
24
|
+
reason: CompactTruncatedReason;
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'failed';
|
|
27
|
+
error: unknown;
|
|
28
|
+
};
|
|
29
|
+
export type AutoCompactResult = {
|
|
30
|
+
changed: true;
|
|
31
|
+
messages: Message[];
|
|
32
|
+
mode: 'summary' | 'truncated';
|
|
33
|
+
} | {
|
|
34
|
+
changed: false;
|
|
35
|
+
messages: Message[];
|
|
36
|
+
error?: unknown;
|
|
37
|
+
};
|
|
7
38
|
/**
|
|
8
39
|
* 根据令牌使用量判断是否应触发自动压缩
|
|
9
40
|
* 只计算输入token数,因为API调用时主要关心的是输入token限制
|
|
@@ -21,7 +52,9 @@ export declare function needsAutoCompact(messages: Message[]): boolean;
|
|
|
21
52
|
* - 确保系统在各种异常情况下都能保持功能正常
|
|
22
53
|
* - 提供多层降级方案以避免完全失败
|
|
23
54
|
*/
|
|
24
|
-
export declare function compactMessages(messages: Message[], abortController: AbortController, sessionId?: string
|
|
55
|
+
export declare function compactMessages(messages: Message[], abortController: AbortController, sessionId?: string, options?: {
|
|
56
|
+
allowTruncationFallback?: boolean;
|
|
57
|
+
}): Promise<CompactResult>;
|
|
25
58
|
/**
|
|
26
59
|
* 自动上下文压缩的主要入口函数
|
|
27
60
|
*
|
|
@@ -34,11 +67,12 @@ export declare function compactMessages(messages: Message[], abortController: Ab
|
|
|
34
67
|
*
|
|
35
68
|
* 执行自动压缩(调用前应先通过 needsAutoCompact 判断是否需要压缩)
|
|
36
69
|
*/
|
|
37
|
-
export declare function autoCompact(messages: Message[], abortController: AbortController, sessionId?: string): Promise<
|
|
70
|
+
export declare function autoCompact(messages: Message[], abortController: AbortController, sessionId?: string): Promise<AutoCompactResult>;
|
|
38
71
|
/**
|
|
39
72
|
* Null Tool - 用于占位避免工具调用
|
|
40
73
|
* 在某些场景下(如压缩),模型必须提供 tools 参数,但我们不希望模型调用任何工具
|
|
41
74
|
* 此工具作为占位符,确保 API 调用合法但不会被实际使用
|
|
42
75
|
*/
|
|
43
76
|
export declare const NULL_TOOL: Tool;
|
|
77
|
+
export {};
|
|
44
78
|
//# sourceMappingURL=compact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAKnD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAKzC,QAAA,MAAM,0BAA0B;;;;CAI/B,CAAA;AAID,eAAO,MAAM,kBAAkB;kCACC,OAAO,CAAC,OAAO,0BAA0B,CAAC,GAAG,IAAI;yBAG1D,IAAI;CAG1B,CAAA;AASD,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,0BAA0B,GAC1B,eAAe,CAAA;AAEnB,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAEL,MAAM,MAAM,iBAAiB,GACzB;IACE,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,IAAI,EAAE,SAAS,GAAG,WAAW,CAAA;CAC9B,GACD;IACE,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AA+LL;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAO7D;AAGD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,aAAa,CAAC,CAsExB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAwD5B;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,IASvB,CAAA"}
|