sema-core 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/core/Conversation.d.ts.map +1 -1
  2. package/dist/core/Conversation.js +6 -3
  3. package/dist/core/Conversation.js.map +1 -1
  4. package/dist/core/SemaEngine.d.ts.map +1 -1
  5. package/dist/core/SemaEngine.js +9 -1
  6. package/dist/core/SemaEngine.js.map +1 -1
  7. package/dist/events/types.d.ts +2 -0
  8. package/dist/events/types.d.ts.map +1 -1
  9. package/dist/manager/PermissionManager.d.ts.map +1 -1
  10. package/dist/manager/PermissionManager.js +19 -4
  11. package/dist/manager/PermissionManager.js.map +1 -1
  12. package/dist/manager/StateManager.d.ts +5 -0
  13. package/dist/manager/StateManager.d.ts.map +1 -1
  14. package/dist/manager/StateManager.js +11 -1
  15. package/dist/manager/StateManager.js.map +1 -1
  16. package/dist/services/commands/runCommand.js +23 -11
  17. package/dist/services/commands/runCommand.js.map +1 -1
  18. package/dist/tools/FetchUrl.js +2 -2
  19. package/dist/tools/FetchUrl.js.map +1 -1
  20. package/dist/util/compact.d.ts +40 -6
  21. package/dist/util/compact.d.ts.map +1 -1
  22. package/dist/util/compact.js +152 -63
  23. package/dist/util/compact.js.map +1 -1
  24. package/dist/util/fileReference.js +3 -3
  25. package/dist/util/fileReference.js.map +1 -1
  26. package/dist/util/history.d.ts +11 -1
  27. package/dist/util/history.d.ts.map +1 -1
  28. package/dist/util/history.js +19 -4
  29. package/dist/util/history.js.map +1 -1
  30. package/dist/util/savePath.d.ts +3 -1
  31. package/dist/util/savePath.d.ts.map +1 -1
  32. package/dist/util/savePath.js +4 -3
  33. package/dist/util/savePath.js.map +1 -1
  34. package/dist/util/snapshotStore.d.ts.map +1 -1
  35. package/dist/util/snapshotStore.js +9 -4
  36. package/dist/util/snapshotStore.js.map +1 -1
  37. package/package.json +1 -1
@@ -71,21 +71,33 @@ async function handleCompactCommand(sessionId) {
71
71
  runtime.currentAbortController = new AbortController();
72
72
  try {
73
73
  (0, log_1.logDebug)(`开始手动压缩,当前消息数: ${messages.length}`);
74
- const compactedMessages = await (0, compact_1.compactMessages)(messages, runtime.currentAbortController, sessionId);
75
- const summaryContent = compactedMessages[1]?.message?.content;
76
- const summaryText = typeof summaryContent === 'string'
77
- ? summaryContent
78
- : Array.isArray(summaryContent)
79
- ? summaryContent
80
- .filter((b) => b.type === 'text')
81
- .map((b) => b.text)
82
- .join('\n')
83
- : '';
74
+ const result = await (0, compact_1.compactMessages)(messages, runtime.currentAbortController, sessionId, {
75
+ allowTruncationFallback: false,
76
+ });
77
+ if (result.kind === 'unchanged') {
78
+ (0, log_1.logInfo)('Not enough history to compact, skip compact');
79
+ return;
80
+ }
81
+ if (result.kind !== 'summary') {
82
+ const errorMsg = `Compact did not produce a valid summary: ${result.kind}`;
83
+ (0, log_1.logError)(errorMsg);
84
+ eventBus.emit('session:error', {
85
+ type: 'compact_error',
86
+ error: {
87
+ code: 'COMPACT_FAILED',
88
+ message: errorMsg,
89
+ details: result.kind === 'failed'
90
+ ? { error: result.error }
91
+ : { reason: result.reason },
92
+ },
93
+ }, sessionId);
94
+ return;
95
+ }
84
96
  // 压缩后清空 todos 和 readFileTimestamps(历史上下文已丢失,它们不再有意义)
85
97
  mainAgentState.updateTodosIntelligently([]);
86
98
  mainAgentState.setReadFileTimestamps({});
87
99
  mainAgentState.setMessageHistory([
88
- (0, message_1.buildUserMsg)(summaryText),
100
+ (0, message_1.buildUserMsg)(result.summary),
89
101
  ]);
90
102
  (0, log_1.logDebug)('压缩完成,已替换为 local-command 格式消息历史');
91
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../../src/services/commands/runCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../../src/services/commands/runCommand.ts"],"names":[],"mappings":"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"}
@@ -46,8 +46,8 @@ exports.FetchUrl = {
46
46
  },
47
47
  genToolPermission(input) {
48
48
  return {
49
- title: '',
50
- content: input.url,
49
+ title: input.url,
50
+ content: '',
51
51
  };
52
52
  },
53
53
  getDisplayTitle(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"FetchUrl.js","sourceRoot":"","sources":["../../src/tools/FetchUrl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FetchUrl.js","sourceRoot":"","sources":["../../src/tools/FetchUrl.ts"],"names":[],"mappings":"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"}
@@ -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): Promise<Message[]>;
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<Message[]>;
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,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAQ1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AA6HzC;;;GAGG;AACH;;;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,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC,CA8CpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC,CAgDpB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,IASvB,CAAA"}
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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NULL_TOOL = void 0;
3
+ exports.NULL_TOOL = exports.__compactTestHooks = void 0;
4
4
  exports.needsAutoCompact = needsAutoCompact;
5
5
  exports.compactMessages = compactMessages;
6
6
  exports.autoCompact = autoCompact;
@@ -13,6 +13,20 @@ const EventSystem_1 = require("../events/EventSystem");
13
13
  const zod_1 = require("zod");
14
14
  const tokens_2 = require("./tokens");
15
15
  const compact_1 = require("../prompt/compact");
16
+ const defaultCompactDependencies = {
17
+ queryLLM: queryLLM_1.queryLLM,
18
+ getModelManager: ModelManager_1.getModelManager,
19
+ getEventBus: EventSystem_1.getEventBus,
20
+ };
21
+ const compactDependencies = { ...defaultCompactDependencies };
22
+ exports.__compactTestHooks = {
23
+ setDependencies(dependencies) {
24
+ Object.assign(compactDependencies, dependencies);
25
+ },
26
+ resetDependencies() {
27
+ Object.assign(compactDependencies, defaultCompactDependencies);
28
+ },
29
+ };
16
30
  /**
17
31
  * 触发自动上下文压缩的阈值比例
18
32
  * 当上下文使用量超过模型限制的75%时,将自动激活紧凑化处理
@@ -21,7 +35,7 @@ const compact_1 = require("../prompt/compact");
21
35
  const AUTO_COMPACT_THRESHOLD_RATIO = 0.75;
22
36
  function getContextLimit() {
23
37
  try {
24
- return (0, ModelManager_1.getModelManager)().getModel('main')?.contextLength ?? 128_000;
38
+ return compactDependencies.getModelManager().getModel('main')?.contextLength ?? 128_000;
25
39
  }
26
40
  catch {
27
41
  return 128_000;
@@ -113,10 +127,59 @@ function truncateMessages(messages, targetTokenLimit) {
113
127
  function calculateCompactRate(tokenBefore, tokenAfter) {
114
128
  return tokenAfter / tokenBefore;
115
129
  }
116
- /**
117
- * 基于主模型能力计算上下文使用阈值
118
- * 采用主模型上下文长度作为基准,因为压缩任务需要由性能足够的模型处理
119
- */
130
+ function isInvalidCompactResponse(response) {
131
+ const usage = response.message.usage;
132
+ if (!usage || typeof usage !== 'object')
133
+ return true;
134
+ const inputTokens = usage.input_tokens ?? usage.prompt_tokens ?? 0;
135
+ const outputTokens = usage.output_tokens ?? usage.completion_tokens ?? 0;
136
+ if (response.message.stop_reason == null)
137
+ return true;
138
+ if (inputTokens === 0 && outputTokens === 0)
139
+ return true;
140
+ const content = response.message.content;
141
+ if (typeof content === 'string')
142
+ return content.length === 0;
143
+ return !Array.isArray(content) || content.length === 0;
144
+ }
145
+ function extractSummaryText(response) {
146
+ const content = response.message.content;
147
+ if (typeof content === 'string') {
148
+ return content;
149
+ }
150
+ if (Array.isArray(content)) {
151
+ const textBlock = content.find((block) => block.type === 'text');
152
+ return textBlock?.type === 'text' ? textBlock.text : '';
153
+ }
154
+ return '';
155
+ }
156
+ function emitCompactUsage(messagesBefore, messagesAfter, sessionId, mode, reason, error) {
157
+ try {
158
+ // `compact:exec` means a compacted transcript was actually committed.
159
+ // Failed compact attempts must not emit it, otherwise clients may hide the
160
+ // visible transcript even though persisted history remains unchanged.
161
+ if (mode === 'failed' || !messagesAfter) {
162
+ return;
163
+ }
164
+ const tokensBeforeInfo = (0, tokens_1.countTokens)(messagesBefore);
165
+ const tokenBefore = tokensBeforeInfo.inputTokens + tokensBeforeInfo.outputTokens;
166
+ const usage = (0, tokens_2.getTokens)(messagesAfter);
167
+ const eventBus = compactDependencies.getEventBus();
168
+ const compactExecData = {
169
+ tokenBefore,
170
+ tokenCompact: usage.useTokens,
171
+ compactRate: calculateCompactRate(tokenBefore, usage.useTokens),
172
+ mode,
173
+ reason,
174
+ errMsg: error instanceof Error ? error.message : error ? String(error) : undefined,
175
+ };
176
+ eventBus.emit('compact:exec', compactExecData, sessionId);
177
+ eventBus.emit('conversation:usage', { usage }, sessionId);
178
+ }
179
+ catch (usageError) {
180
+ (0, log_1.logError)(`Failed to emit compact usage: ${usageError}`);
181
+ }
182
+ }
120
183
  /**
121
184
  * 根据令牌使用量判断是否应触发自动压缩
122
185
  * 只计算输入token数,因为API调用时主要关心的是输入token限制
@@ -140,45 +203,66 @@ function needsAutoCompact(messages) {
140
203
  * - 确保系统在各种异常情况下都能保持功能正常
141
204
  * - 提供多层降级方案以避免完全失败
142
205
  */
143
- async function compactMessages(messages, abortController, sessionId) {
206
+ async function compactMessages(messages, abortController, sessionId, options = {}) {
207
+ const allowTruncationFallback = options.allowTruncationFallback ?? true;
144
208
  if (messages.length < 2) {
145
- return messages;
209
+ return { kind: 'unchanged', messages };
146
210
  }
147
- // 计算压缩前的输入token数
148
- const tokensBeforeInfo = (0, tokens_1.countTokens)(messages);
149
- const tokenBefore = tokensBeforeInfo.inputTokens + tokensBeforeInfo.outputTokens;
150
- let compactedMessages;
151
211
  try {
152
- compactedMessages = await executeAutoCompact(messages, abortController);
212
+ const summaryResult = await executeAutoCompact(messages, abortController);
213
+ if (summaryResult.kind === 'summary') {
214
+ emitCompactUsage(messages, summaryResult.messages, sessionId, 'summary');
215
+ return summaryResult;
216
+ }
217
+ if (!allowTruncationFallback) {
218
+ emitCompactUsage(messages, null, sessionId, 'failed', summaryResult.reason);
219
+ return {
220
+ kind: 'failed',
221
+ error: new Error(`Compact did not produce a valid summary: ${summaryResult.reason}`),
222
+ };
223
+ }
224
+ const contextLimit = getContextLimit();
225
+ const targetLimit = contextLimit * 0.5; // 截断到50%容量
226
+ const truncatedMessages = truncateMessages(messages, targetLimit);
227
+ emitCompactUsage(messages, truncatedMessages, sessionId, 'truncated', summaryResult.reason);
228
+ return {
229
+ kind: 'truncated',
230
+ messages: truncatedMessages,
231
+ reason: summaryResult.reason,
232
+ };
153
233
  }
154
234
  catch (error) {
235
+ if (!allowTruncationFallback) {
236
+ emitCompactUsage(messages, null, sessionId, 'failed', 'COMPACT_ERROR', error);
237
+ return {
238
+ kind: 'failed',
239
+ error,
240
+ };
241
+ }
155
242
  // 压缩完全失败时的备用策略:使用截断方式
156
243
  (0, log_1.logError)(`Compact failed, attempting truncation fallback: ${error}`);
157
244
  try {
158
245
  const contextLimit = getContextLimit();
159
246
  const targetLimit = contextLimit * 0.5; // 截断到50%容量
160
- compactedMessages = truncateMessages(messages, targetLimit);
161
- (0, log_1.logError)(`Successfully applied truncation fallback, reduced from ${messages.length} to ${compactedMessages.length} messages`);
247
+ const truncatedMessages = truncateMessages(messages, targetLimit);
248
+ (0, log_1.logError)(`Successfully applied truncation fallback, reduced from ${messages.length} to ${truncatedMessages.length} messages`);
249
+ emitCompactUsage(messages, truncatedMessages, sessionId, 'truncated', 'COMPACT_ERROR', error);
250
+ return {
251
+ kind: 'truncated',
252
+ messages: truncatedMessages,
253
+ reason: 'COMPACT_ERROR',
254
+ };
162
255
  }
163
256
  catch (truncationError) {
164
- // 如果连截断都失败,抛出错误
257
+ // 如果连截断都失败,返回失败结果
165
258
  (0, log_1.logError)(`Truncation fallback also failed: ${truncationError}`);
166
- throw truncationError;
259
+ emitCompactUsage(messages, null, sessionId, 'failed', 'COMPACT_ERROR', truncationError);
260
+ return {
261
+ kind: 'failed',
262
+ error: truncationError,
263
+ };
167
264
  }
168
265
  }
169
- // 计算压缩后的输入token数并触发事件
170
- const usage = (0, tokens_2.getTokens)(compactedMessages);
171
- // 触发压缩执行事件
172
- const eventBus = (0, EventSystem_1.getEventBus)();
173
- const compactExecData = {
174
- tokenBefore: tokenBefore,
175
- tokenCompact: usage.useTokens,
176
- compactRate: calculateCompactRate(tokenBefore, usage.useTokens)
177
- };
178
- eventBus.emit('compact:exec', compactExecData, sessionId);
179
- // 自动压缩后发送更新的 usage 事件
180
- eventBus.emit('conversation:usage', { usage }, sessionId);
181
- return compactedMessages;
182
266
  }
183
267
  /**
184
268
  * 自动上下文压缩的主要入口函数
@@ -209,7 +293,7 @@ async function autoCompact(messages, abortController, sessionId) {
209
293
  }
210
294
  if (lastRealUserIdx === -1) {
211
295
  // 没有找到真实用户消息,跳过压缩
212
- return messages;
296
+ return { changed: false, messages };
213
297
  }
214
298
  // 只压缩最后一条真实用户消息之前的历史
215
299
  const messagesToCompact = messages.slice(0, lastRealUserIdx);
@@ -217,23 +301,28 @@ async function autoCompact(messages, abortController, sessionId) {
217
301
  const messagesToKeep = messages.slice(lastRealUserIdx);
218
302
  if (messagesToCompact.length < 2) {
219
303
  // 历史消息太少,不值得压缩
220
- return messages;
304
+ return { changed: false, messages };
221
305
  }
222
- try {
223
- const compactedHistory = await compactMessages(messagesToCompact, abortController, sessionId);
306
+ const compactResult = await compactMessages(messagesToCompact, abortController, sessionId);
307
+ if (compactResult.kind === 'summary' || compactResult.kind === 'truncated') {
224
308
  // 组合结果示例(工具调用场景):
225
309
  // [compactNotice(user), summaryMsg(assistant), lastRealUserMsg(user), assistantMsg(assistant), toolResult(user)]
226
310
  // 组合结果示例(新查询场景):
227
311
  // [compactNotice(user), summaryMsg(assistant), newUserQuery(user)]
228
312
  // 两种场景均以 user 消息结尾,API 调用合法
229
- const finalMessages = [...compactedHistory, ...messagesToKeep];
313
+ const finalMessages = [...compactResult.messages, ...messagesToKeep];
230
314
  (0, log_1.logDebug)(`[Compact] Final messages count: ${finalMessages.length}, kept current turn: ${messagesToKeep.length} messages`);
231
- return finalMessages;
315
+ return {
316
+ changed: true,
317
+ messages: finalMessages,
318
+ mode: compactResult.kind,
319
+ };
232
320
  }
233
- catch (error) {
234
- (0, log_1.logError)(`Auto-compact failed completely: ${error}. Continuing with original messages`);
235
- return messages;
321
+ if (compactResult.kind === 'unchanged') {
322
+ return { changed: false, messages };
236
323
  }
324
+ (0, log_1.logError)(`Auto-compact failed completely: ${compactResult.error}. Continuing with original messages`);
325
+ return { changed: false, messages, error: compactResult.error };
237
326
  }
238
327
  /**
239
328
  * Null Tool - 用于占位避免工具调用
@@ -259,7 +348,7 @@ exports.NULL_TOOL = {
259
348
  * 1. 压缩传入的历史对话消息
260
349
  * 2. 返回结构:[压缩指令(user), 压缩摘要(assistant+usage)]
261
350
  *
262
- * 注意:新用户消息的分离和添加由 checkAutoCompact 统一处理
351
+ * 注意:新用户消息的分离和添加由 autoCompact 统一处理
263
352
  */
264
353
  async function executeAutoCompact(messages, abortController) {
265
354
  // 使用 null tool 作为占位,避免模型调用任何工具
@@ -269,30 +358,24 @@ async function executeAutoCompact(messages, abortController) {
269
358
  ...(0, message_1.prepareMessagesForApi)([...messages]),
270
359
  (0, message_1.buildUserMsg)(compact_1.COMPRESSION_PROMPT)
271
360
  ];
272
- const summaryResponse = await (0, queryLLM_1.queryLLM)(messagesWithPrompt, [
361
+ const summaryResponse = await compactDependencies.queryLLM(messagesWithPrompt, [
273
362
  {
274
363
  type: 'text',
275
364
  text: 'An AI assistant that helps summarize coding conversations.'
276
365
  }
277
366
  ], abortController.signal, tools, { modelPointer: 'main', disableChunkEvents: true });
278
- // 解析 summary 结果,兼容 Anthropic 和 OpenAI 两种格式
279
- const content = summaryResponse.message.content;
280
- let summary = null;
281
- if (typeof content === 'string') {
282
- // OpenAI 格式:content 直接是字符串
283
- summary = content;
367
+ if (isInvalidCompactResponse(summaryResponse)) {
368
+ return {
369
+ kind: 'invalid',
370
+ reason: 'INVALID_COMPACT_RESPONSE',
371
+ };
284
372
  }
285
- else if (Array.isArray(content)) {
286
- // Anthropic 格式:content ContentBlock[] 数组
287
- const textBlock = content.find(block => block.type === 'text');
288
- summary = textBlock?.type === 'text' ? textBlock.text : null;
289
- }
290
- if (!summary || summary.trim().length === 0) {
291
- // 压缩失败时的备用策略:尝试简单截断而不是完全失败
292
- const contextLimit = getContextLimit();
293
- const targetLimit = contextLimit * 0.5; // 截断到50%容量
294
- (0, log_1.logError)('压缩生成摘要失败,使用截断策略作为备用方案');
295
- return truncateMessages(messages, targetLimit);
373
+ const summary = extractSummaryText(summaryResponse);
374
+ if (summary.trim().length === 0) {
375
+ return {
376
+ kind: 'invalid',
377
+ reason: 'EMPTY_SUMMARY',
378
+ };
296
379
  }
297
380
  // 压缩后的消息结构:
298
381
  // 1. User: 压缩通知
@@ -308,6 +391,9 @@ The conversation has been automatically compressed due to token limit. Below is
308
391
  const originalUsage = summaryResponse.message.usage;
309
392
  const estimatedNoticeTokens = 30;
310
393
  const summaryTokens = originalUsage.completion_tokens || originalUsage.output_tokens || 0;
394
+ const correctedInputTokens = estimatedNoticeTokens + summaryTokens;
395
+ const originalInputTokens = originalUsage.input_tokens ?? originalUsage.prompt_tokens ?? 0;
396
+ const originalOutputTokens = originalUsage.output_tokens ?? originalUsage.completion_tokens ?? 0;
311
397
  // 创建修正后的 summary message
312
398
  const correctedSummaryMessage = {
313
399
  ...summaryResponse,
@@ -316,19 +402,22 @@ The conversation has been automatically compressed due to token limit. Below is
316
402
  usage: {
317
403
  ...originalUsage,
318
404
  // 修正 input_tokens:压缩通知 + 摘要内容
319
- input_tokens: estimatedNoticeTokens + summaryTokens,
405
+ input_tokens: correctedInputTokens,
320
406
  // 修正 output_tokens:摘要内容
321
407
  output_tokens: summaryTokens,
322
408
  // 如果是 OpenAI 格式,也要修正
323
- prompt_tokens: estimatedNoticeTokens + summaryTokens,
409
+ prompt_tokens: correctedInputTokens,
324
410
  completion_tokens: summaryTokens,
325
411
  }
326
412
  }
327
413
  };
328
- // logDebug(`[Compact] Original usage: input=${originalUsage.input_tokens || originalUsage.prompt_tokens}, output=${originalUsage.output_tokens || originalUsage.completion_tokens}`)
329
- // logDebug(`[Compact] Corrected usage: input=${estimatedNoticeTokens + summaryTokens}, output=${summaryTokens}`)
414
+ (0, log_1.logDebug)(`[Compact] Corrected summary usage: originalInput=${originalInputTokens}, originalOutput=${originalOutputTokens}, correctedInput=${correctedInputTokens}, correctedOutput=${summaryTokens}`);
330
415
  // 构建压缩后的消息列表(只包含压缩通知和摘要,不包含新用户消息)
331
416
  const compactedMessages = [compactNoticeMessage, correctedSummaryMessage];
332
- return compactedMessages;
417
+ return {
418
+ kind: 'summary',
419
+ messages: compactedMessages,
420
+ summary,
421
+ };
333
422
  }
334
423
  //# sourceMappingURL=compact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"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"}
@@ -159,7 +159,7 @@ async function processSingleReference(match, agentContext, fileReadTool) {
159
159
  const fullReference = match[0]; // 完整的引用字符串,如 @index.js:13-17
160
160
  const referenceText = match[1]; // 去掉@的部分,如 index.js:13-17
161
161
  // 解析文件引用
162
- const parsed = parseFileReference(referenceText);
162
+ const parsed = parseFileReference((referenceText ?? match[2]));
163
163
  const fullPath = (0, file_1.canonicalizeFilePath)(parsed.fileName);
164
164
  (0, log_1.logInfo)(`Processing file reference: ${fullReference} -> ${fullPath}${parsed.startLine ? `:${parsed.startLine}${parsed.endLine !== parsed.startLine ? `-${parsed.endLine}` : ''}` : ''}`);
165
165
  try {
@@ -339,7 +339,7 @@ async function processFileReferences(userInput, agentContext) {
339
339
  // 不含 . : / \ 等路径合法字符,避免截断文件名/路径
340
340
  // 左边界:@ 必须位于行首或边界字符之后(避免误匹配 email@example.com 等)
341
341
  // 右边界:遇到边界字符则停止
342
- const fileReferenceRegex = /(?:^|(?<=[\s。,、;:!?""''「」『』()《》〈〉【】,;!?]))@([^\s。,、;:!?""''「」『』()《》〈〉【】,;!?]+)/g;
342
+ const fileReferenceRegex = /(?:^|(?<=[\s。,、;:!?""''「」『』()《》〈〉【】,;!?]))@(?:"([^"]+)"|([^\s。,、;:!?""''「」『』()《》〈〉【】,;!?]+))/g;
343
343
  const allMatches = [...userInput.matchAll(fileReferenceRegex)];
344
344
  // 如果没有找到文件引用,直接返回
345
345
  if (allMatches.length === 0) {
@@ -348,7 +348,7 @@ async function processFileReferences(userInput, agentContext) {
348
348
  // 对文件引用进行去重,保持首次出现的顺序
349
349
  const seen = new Set();
350
350
  const matches = allMatches.filter(match => {
351
- const ref = match[1];
351
+ const ref = (match[1] ?? match[2]);
352
352
  if (seen.has(ref)) {
353
353
  return false;
354
354
  }