@downcity/agent 1.1.232 → 1.1.237

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 (165) hide show
  1. package/bin/agent/local/Agent.d.ts +1 -1
  2. package/bin/agent/local/Agent.js +2 -2
  3. package/bin/agent/local/Agent.js.map +1 -1
  4. package/bin/agent/local/services/AgentSessions.d.ts +4 -4
  5. package/bin/agent/local/services/AgentSessions.d.ts.map +1 -1
  6. package/bin/agent/local/services/AgentSessions.js +8 -8
  7. package/bin/agent/local/services/AgentSessions.js.map +1 -1
  8. package/bin/agent/remote/RemoteSession.d.ts +2 -0
  9. package/bin/agent/remote/RemoteSession.d.ts.map +1 -1
  10. package/bin/agent/remote/RemoteSession.js +4 -0
  11. package/bin/agent/remote/RemoteSession.js.map +1 -1
  12. package/bin/agent/remote/RemoteTransport.d.ts +2 -0
  13. package/bin/agent/remote/RemoteTransport.d.ts.map +1 -1
  14. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +1 -0
  15. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -1
  16. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +11 -0
  17. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +1 -1
  18. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +1 -0
  19. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -1
  20. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +3 -0
  21. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +1 -1
  22. package/bin/executor/Executor.d.ts +20 -2
  23. package/bin/executor/Executor.d.ts.map +1 -1
  24. package/bin/executor/Executor.js +102 -18
  25. package/bin/executor/Executor.js.map +1 -1
  26. package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts +6 -0
  27. package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts.map +1 -1
  28. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts +0 -9
  29. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts.map +1 -1
  30. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js +4 -38
  31. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js.map +1 -1
  32. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts +1 -3
  33. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +1 -1
  34. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +7 -59
  35. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +1 -1
  36. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +38 -0
  37. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -0
  38. package/bin/executor/core-engine/CoreEngineContextCompaction.js +392 -0
  39. package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -0
  40. package/bin/executor/core-engine/CoreEngineMessageState.d.ts +15 -0
  41. package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +1 -1
  42. package/bin/executor/core-engine/CoreEngineMessageState.js +20 -0
  43. package/bin/executor/core-engine/CoreEngineMessageState.js.map +1 -1
  44. package/bin/executor/core-engine/CoreEngineRunner.d.ts +9 -5
  45. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  46. package/bin/executor/core-engine/CoreEngineRunner.js +146 -35
  47. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  48. package/bin/executor/store/history/SessionHistoryStore.d.ts +4 -10
  49. package/bin/executor/store/history/SessionHistoryStore.d.ts.map +1 -1
  50. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
  51. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +1 -3
  52. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
  53. package/bin/executor/types/SessionRun.d.ts +8 -0
  54. package/bin/executor/types/SessionRun.d.ts.map +1 -1
  55. package/bin/index.d.ts +1 -1
  56. package/bin/index.d.ts.map +1 -1
  57. package/bin/index.js +1 -1
  58. package/bin/index.js.map +1 -1
  59. package/bin/plugin/core/PluginLocalExecution.js +3 -3
  60. package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
  61. package/bin/plugin/core/PluginRegistry.d.ts +20 -2
  62. package/bin/plugin/core/PluginRegistry.d.ts.map +1 -1
  63. package/bin/plugin/core/PluginRegistry.js +100 -3
  64. package/bin/plugin/core/PluginRegistry.js.map +1 -1
  65. package/bin/rpc/Client.d.ts +6 -4
  66. package/bin/rpc/Client.d.ts.map +1 -1
  67. package/bin/rpc/Client.js +11 -0
  68. package/bin/rpc/Client.js.map +1 -1
  69. package/bin/session/Session.d.ts +7 -3
  70. package/bin/session/Session.d.ts.map +1 -1
  71. package/bin/session/Session.js +26 -19
  72. package/bin/session/Session.js.map +1 -1
  73. package/bin/session/SessionSystemBuilder.d.ts.map +1 -1
  74. package/bin/session/SessionSystemBuilder.js +3 -1
  75. package/bin/session/SessionSystemBuilder.js.map +1 -1
  76. package/bin/session/recorder/SessionRecorderCompaction.d.ts.map +1 -1
  77. package/bin/session/recorder/SessionRecorderCompaction.js +102 -60
  78. package/bin/session/recorder/SessionRecorderCompaction.js.map +1 -1
  79. package/bin/session/runtime/SessionPromptRuntime.d.ts +11 -7
  80. package/bin/session/runtime/SessionPromptRuntime.d.ts.map +1 -1
  81. package/bin/session/runtime/SessionPromptRuntime.js +22 -24
  82. package/bin/session/runtime/SessionPromptRuntime.js.map +1 -1
  83. package/bin/session/services/SessionStateService.d.ts +10 -6
  84. package/bin/session/services/SessionStateService.d.ts.map +1 -1
  85. package/bin/session/services/SessionStateService.js +29 -20
  86. package/bin/session/services/SessionStateService.js.map +1 -1
  87. package/bin/session/services/SessionTurnService.d.ts +13 -3
  88. package/bin/session/services/SessionTurnService.d.ts.map +1 -1
  89. package/bin/session/services/SessionTurnService.js +90 -7
  90. package/bin/session/services/SessionTurnService.js.map +1 -1
  91. package/bin/types/agent/SessionActor.d.ts +8 -0
  92. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  93. package/bin/types/executor/SessionRunContext.d.ts +16 -8
  94. package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
  95. package/bin/types/plugin/PluginRuntime.d.ts +36 -4
  96. package/bin/types/plugin/PluginRuntime.d.ts.map +1 -1
  97. package/bin/types/plugin/PluginState.d.ts +10 -0
  98. package/bin/types/plugin/PluginState.d.ts.map +1 -1
  99. package/bin/types/rpc/RpcProtocol.d.ts +21 -0
  100. package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
  101. package/bin/types/runtime/agent/AgentContext.d.ts +2 -2
  102. package/bin/types/runtime/agent/AgentContext.js +1 -1
  103. package/bin/types/session/SessionLocalState.d.ts +2 -2
  104. package/bin/types/session/SessionOptions.d.ts +5 -5
  105. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  106. package/bin/types/session/SessionQueueCommand.d.ts +68 -0
  107. package/bin/types/session/SessionQueueCommand.d.ts.map +1 -0
  108. package/bin/types/session/SessionQueueCommand.js +10 -0
  109. package/bin/types/session/SessionQueueCommand.js.map +1 -0
  110. package/bin/utils/logger/Logger.d.ts +7 -9
  111. package/bin/utils/logger/Logger.d.ts.map +1 -1
  112. package/bin/utils/logger/Logger.js +11 -9
  113. package/bin/utils/logger/Logger.js.map +1 -1
  114. package/package.json +3 -3
  115. package/scripts/core-engine-context-compaction.test.mjs +411 -0
  116. package/scripts/logger-isolation.test.mjs +55 -0
  117. package/scripts/multi-agent-plugin-isolation.test.mjs +289 -0
  118. package/scripts/plugin-tool-bridge.test.mjs +52 -0
  119. package/scripts/remote-session-reconnect.test.mjs +18 -0
  120. package/scripts/session-compaction-context-window.test.mjs +27 -26
  121. package/scripts/session-config-turn-boundary.test.mjs +80 -26
  122. package/scripts/session-prompt-runtime.test.mjs +23 -15
  123. package/scripts/session-recorder.test.mjs +15 -24
  124. package/src/agent/local/Agent.ts +2 -2
  125. package/src/agent/local/services/AgentSessions.ts +10 -10
  126. package/src/agent/remote/RemoteSession.ts +5 -0
  127. package/src/agent/remote/RemoteTransport.ts +2 -0
  128. package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +15 -0
  129. package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +4 -0
  130. package/src/executor/Executor.ts +111 -19
  131. package/src/executor/composer/compaction/SessionCompactionComposer.ts +7 -0
  132. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.ts +4 -57
  133. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +8 -66
  134. package/src/executor/core-engine/CoreEngineContextCompaction.ts +477 -0
  135. package/src/executor/core-engine/CoreEngineMessageState.ts +29 -0
  136. package/src/executor/core-engine/CoreEngineRunner.ts +200 -48
  137. package/src/executor/store/history/SessionHistoryStore.ts +4 -12
  138. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +1 -3
  139. package/src/executor/types/SessionRun.ts +9 -0
  140. package/src/index.ts +1 -1
  141. package/src/plugin/core/PluginLocalExecution.ts +3 -3
  142. package/src/plugin/core/PluginRegistry.ts +116 -3
  143. package/src/rpc/Client.ts +15 -2
  144. package/src/session/Session.ts +28 -20
  145. package/src/session/SessionSystemBuilder.ts +4 -1
  146. package/src/session/recorder/SessionRecorderCompaction.ts +113 -65
  147. package/src/session/runtime/SessionPromptRuntime.ts +31 -46
  148. package/src/session/services/SessionStateService.ts +34 -25
  149. package/src/session/services/SessionTurnService.ts +97 -8
  150. package/src/types/agent/SessionActor.ts +9 -0
  151. package/src/types/executor/SessionRunContext.ts +17 -8
  152. package/src/types/plugin/PluginRuntime.ts +38 -4
  153. package/src/types/plugin/PluginState.ts +10 -0
  154. package/src/types/rpc/RpcProtocol.ts +23 -0
  155. package/src/types/runtime/agent/AgentContext.ts +2 -2
  156. package/src/types/session/SessionLocalState.ts +2 -2
  157. package/src/types/session/SessionOptions.ts +6 -6
  158. package/src/types/session/SessionQueueCommand.ts +78 -0
  159. package/src/utils/logger/Logger.ts +10 -10
  160. package/tsconfig.tsbuildinfo +1 -1
  161. package/bin/types/session/SessionConfigMutation.d.ts +0 -68
  162. package/bin/types/session/SessionConfigMutation.d.ts.map +0 -1
  163. package/bin/types/session/SessionConfigMutation.js +0 -10
  164. package/bin/types/session/SessionConfigMutation.js.map +0 -1
  165. package/src/types/session/SessionConfigMutation.ts +0 -78
@@ -0,0 +1,392 @@
1
+ /**
2
+ * CoreEngine 模型上下文压缩。
3
+ *
4
+ * 关键点(中文)
5
+ * - 触发条件只读取 Provider 返回的真实 usage,不做调用前 token 预估。
6
+ * - 压缩只作用于本次运行的 ModelMessage,不修改 Session canonical Message。
7
+ * - reasoning、tool call、tool result 与 approval 按 AI SDK 关联关系清理。
8
+ * - 首级保留文本历史,后续深度把历史前缀折叠为 checkpoint;最后 user 与最新工具事务始终原子保留。
9
+ * - 字符上限只用于约束已经决定压缩后的单个 part,不参与是否触发压缩的判断。
10
+ */
11
+ import { pruneMessages } from "ai";
12
+ /** usage 达到模型上下文窗口 95% 时安排下一 step 压缩。 */
13
+ export const MODEL_CONTEXT_COMPACTION_TRIGGER_RATIO = 0.95;
14
+ /** 压缩后的真实 usage 需要回落到模型上下文窗口 50% 以内。 */
15
+ export const MODEL_CONTEXT_COMPACTION_TARGET_RATIO = 0.5;
16
+ /** 历史 checkpoint 的基础最大字符数,后续深度逐级减半。 */
17
+ const INITIAL_HISTORY_CHECKPOINT_CHARS = 24_000;
18
+ /** 单条保留消息的基础字符预算,后续深度逐级减半。 */
19
+ const INITIAL_RETAINED_MESSAGE_CHARS = 16_000;
20
+ /** 单项折叠后至少保留的字符数,避免深度压缩后完全丢失语义。 */
21
+ const MIN_FOLDED_PART_CHARS = 64;
22
+ /**
23
+ * 读取 Provider usage 中的实际总 token。
24
+ *
25
+ * 优先使用 `totalTokens`;Provider 未返回时才回退为 input 与 output 之和。
26
+ */
27
+ export function resolve_model_usage_tokens(usage) {
28
+ if (!usage || typeof usage !== "object")
29
+ return null;
30
+ const record = usage;
31
+ const total_tokens = read_non_negative_number(record.totalTokens);
32
+ if (total_tokens !== null)
33
+ return total_tokens;
34
+ const input_tokens = read_non_negative_number(record.inputTokens);
35
+ const output_tokens = read_non_negative_number(record.outputTokens);
36
+ if (input_tokens === null && output_tokens === null)
37
+ return null;
38
+ return (input_tokens || 0) + (output_tokens || 0);
39
+ }
40
+ /** 计算真实 usage 占当前模型上下文窗口的比例。 */
41
+ export function resolve_model_usage_ratio(usage, context_window) {
42
+ if (!Number.isSafeInteger(context_window) || Number(context_window) <= 0) {
43
+ return null;
44
+ }
45
+ const used_tokens = resolve_model_usage_tokens(usage);
46
+ if (used_tokens === null)
47
+ return null;
48
+ return used_tokens / Number(context_window);
49
+ }
50
+ /**
51
+ * 判断一次真实 usage 是否要求下一 step 继续压缩。
52
+ *
53
+ * 普通调用使用 95% 触发水位;刚执行过压缩的调用使用 50% 目标水位验收。
54
+ */
55
+ export function should_compact_after_usage(usage_ratio, validating_compaction) {
56
+ if (usage_ratio === null || !Number.isFinite(usage_ratio))
57
+ return false;
58
+ return validating_compaction
59
+ ? usage_ratio > MODEL_CONTEXT_COMPACTION_TARGET_RATIO
60
+ : usage_ratio >= MODEL_CONTEXT_COMPACTION_TRIGGER_RATIO;
61
+ }
62
+ /**
63
+ * 对当前 ModelMessage 做一次 part 级深度压缩。
64
+ *
65
+ * `compact_depth` 每增加一级都会把保留预算减半,用于真实 usage 未达到目标水位时继续收紧。
66
+ */
67
+ export function deep_compact_model_messages(messages, compact_depth = 0) {
68
+ if (!Array.isArray(messages) || messages.length === 0)
69
+ return [];
70
+ const depth = Math.max(0, Math.min(8, Math.floor(compact_depth)));
71
+ const pruned_messages = pruneMessages({
72
+ messages,
73
+ reasoning: "all",
74
+ // 工具事务由本模块按 toolCallId/approvalId 选择;先让 SDK 保留完整关联,
75
+ // 避免 approval response 作为最后一条消息时 SDK 丢掉更早的 tool-call。
76
+ toolCalls: "none",
77
+ emptyMessages: "remove",
78
+ });
79
+ if (pruned_messages.length === 0)
80
+ return [];
81
+ const approval_to_tool_call = collect_approval_tool_call_map(pruned_messages);
82
+ const last_user_index = find_last_message_index(pruned_messages, (message) => message.role === "user");
83
+ const selected_tool_call_ids = collect_latest_tool_transaction_ids(pruned_messages, last_user_index, approval_to_tool_call);
84
+ // 第一级只清理高噪声 part,保留全部文本历史;真实 usage 仍高于 50% 时,
85
+ // 后续深度才把历史前缀折叠为 checkpoint。
86
+ const retained_indices = depth === 0
87
+ ? new Set(pruned_messages.map((_message, index) => index))
88
+ : collect_retained_message_indices({
89
+ messages: pruned_messages,
90
+ last_user_index,
91
+ selected_tool_call_ids,
92
+ approval_to_tool_call,
93
+ });
94
+ const excluded_messages = pruned_messages.filter((_message, index) => !retained_indices.has(index));
95
+ const checkpoint_limit = resolve_depth_budget(INITIAL_HISTORY_CHECKPOINT_CHARS, depth);
96
+ const checkpoint_text = build_history_checkpoint(excluded_messages, checkpoint_limit);
97
+ const message_limit = resolve_depth_budget(INITIAL_RETAINED_MESSAGE_CHARS, depth);
98
+ const retained_messages = pruned_messages
99
+ .map((message, index) => ({ message, index }))
100
+ .filter(({ index }) => retained_indices.has(index))
101
+ .map(({ message }) => compact_retained_message(message, message_limit, selected_tool_call_ids, approval_to_tool_call))
102
+ .filter((message) => message !== null);
103
+ const checkpoint_message = checkpoint_text
104
+ ? [{ role: "assistant", content: checkpoint_text }]
105
+ : [];
106
+ const system_messages = retained_messages.filter((message) => message.role === "system");
107
+ const non_system_messages = retained_messages.filter((message) => message.role !== "system");
108
+ return remove_orphaned_tool_parts([
109
+ ...system_messages,
110
+ ...checkpoint_message,
111
+ ...non_system_messages,
112
+ ]);
113
+ }
114
+ /** 对文本做确定性的 head/tail 折叠。 */
115
+ export function fold_compacted_text(text, max_chars) {
116
+ const value = String(text || "");
117
+ const limit = Math.max(MIN_FOLDED_PART_CHARS, Math.floor(max_chars));
118
+ if (value.length <= limit)
119
+ return value;
120
+ const marker = `\n...[compacted ${String(value.length - limit)} chars]...\n`;
121
+ const content_limit = Math.max(0, limit - marker.length);
122
+ const head_chars = Math.ceil(content_limit / 2);
123
+ const tail_chars = Math.floor(content_limit / 2);
124
+ return `${value.slice(0, head_chars)}${marker}${value.slice(-tail_chars)}`;
125
+ }
126
+ function read_non_negative_number(value) {
127
+ return typeof value === "number" && Number.isFinite(value) && value >= 0
128
+ ? value
129
+ : null;
130
+ }
131
+ function resolve_depth_budget(initial_budget, depth) {
132
+ return Math.max(MIN_FOLDED_PART_CHARS, Math.floor(initial_budget / Math.pow(2, depth)));
133
+ }
134
+ function find_last_message_index(messages, predicate) {
135
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
136
+ if (predicate(messages[index]))
137
+ return index;
138
+ }
139
+ return -1;
140
+ }
141
+ function collect_approval_tool_call_map(messages) {
142
+ const output = new Map();
143
+ for (const message of messages) {
144
+ if (!Array.isArray(message.content))
145
+ continue;
146
+ for (const part of message.content) {
147
+ if (part.type !== "tool-approval-request")
148
+ continue;
149
+ output.set(part.approvalId, part.toolCallId);
150
+ }
151
+ }
152
+ return output;
153
+ }
154
+ function collect_latest_tool_transaction_ids(messages, last_user_index, approval_to_tool_call) {
155
+ for (let index = messages.length - 1; index > last_user_index; index -= 1) {
156
+ const message = messages[index];
157
+ if (!Array.isArray(message.content))
158
+ continue;
159
+ const ids = new Set();
160
+ for (const part of message.content) {
161
+ if (part.type === "tool-call" || part.type === "tool-result") {
162
+ ids.add(part.toolCallId);
163
+ }
164
+ else if (part.type === "tool-approval-request") {
165
+ ids.add(part.toolCallId);
166
+ }
167
+ else if (part.type === "tool-approval-response") {
168
+ const tool_call_id = approval_to_tool_call.get(part.approvalId);
169
+ if (tool_call_id)
170
+ ids.add(tool_call_id);
171
+ }
172
+ }
173
+ if (ids.size > 0)
174
+ return ids;
175
+ }
176
+ return new Set();
177
+ }
178
+ function collect_retained_message_indices(input) {
179
+ const retained = new Set();
180
+ input.messages.forEach((message, index) => {
181
+ if (message.role === "system")
182
+ retained.add(index);
183
+ if (index === input.last_user_index)
184
+ retained.add(index);
185
+ if (message_contains_selected_tool_transaction(message, input.selected_tool_call_ids, input.approval_to_tool_call)) {
186
+ retained.add(index);
187
+ }
188
+ });
189
+ if (input.selected_tool_call_ids.size === 0) {
190
+ const last_assistant_index = find_last_message_index(input.messages, (message) => message.role === "assistant");
191
+ if (last_assistant_index > input.last_user_index) {
192
+ retained.add(last_assistant_index);
193
+ }
194
+ }
195
+ if (retained.size === 0)
196
+ retained.add(input.messages.length - 1);
197
+ return retained;
198
+ }
199
+ function message_contains_selected_tool_transaction(message, selected_tool_call_ids, approval_to_tool_call) {
200
+ if (!Array.isArray(message.content) || selected_tool_call_ids.size === 0) {
201
+ return false;
202
+ }
203
+ return message.content.some((part) => {
204
+ if (part.type === "tool-call" || part.type === "tool-result") {
205
+ return selected_tool_call_ids.has(part.toolCallId);
206
+ }
207
+ if (part.type === "tool-approval-request") {
208
+ return selected_tool_call_ids.has(part.toolCallId);
209
+ }
210
+ if (part.type === "tool-approval-response") {
211
+ const tool_call_id = approval_to_tool_call.get(part.approvalId);
212
+ return Boolean(tool_call_id && selected_tool_call_ids.has(tool_call_id));
213
+ }
214
+ return false;
215
+ });
216
+ }
217
+ function build_history_checkpoint(messages, max_chars) {
218
+ if (messages.length === 0)
219
+ return "";
220
+ const body = messages
221
+ .map((message) => serialize_model_message_for_checkpoint(message))
222
+ .filter(Boolean)
223
+ .join("\n\n");
224
+ if (!body)
225
+ return "";
226
+ return [
227
+ "[Compacted conversation checkpoint]",
228
+ fold_compacted_text(body, max_chars),
229
+ ].join("\n");
230
+ }
231
+ function serialize_model_message_for_checkpoint(message) {
232
+ const role = message.role;
233
+ if (typeof message.content === "string") {
234
+ return `${role}: ${message.content}`;
235
+ }
236
+ const parts = message.content.map((part) => {
237
+ if (part.type === "text")
238
+ return part.text;
239
+ if (part.type === "reasoning")
240
+ return "";
241
+ if (part.type === "tool-call") {
242
+ return `[tool-call ${part.toolName} ${part.toolCallId}] ${safe_stringify(part.input)}`;
243
+ }
244
+ if (part.type === "tool-result") {
245
+ return `[tool-result ${part.toolName} ${part.toolCallId}] ${safe_stringify(part.output)}`;
246
+ }
247
+ if (part.type === "tool-approval-request") {
248
+ return `[tool-approval-request ${part.toolCallId} ${part.approvalId}]`;
249
+ }
250
+ if (part.type === "tool-approval-response") {
251
+ return `[tool-approval-response ${part.approvalId} approved=${String(part.approved)}]`;
252
+ }
253
+ if (part.type === "file") {
254
+ return `[file ${part.filename || "unnamed"} ${part.mediaType}]`;
255
+ }
256
+ if (part.type === "image")
257
+ return `[image ${part.mediaType || "unknown"}]`;
258
+ return `[${String(part.type || "part")}]`;
259
+ });
260
+ return `${role}: ${parts.filter(Boolean).join("\n")}`;
261
+ }
262
+ function compact_retained_message(message, message_limit, selected_tool_call_ids, approval_to_tool_call) {
263
+ if (typeof message.content === "string") {
264
+ return {
265
+ ...message,
266
+ content: fold_compacted_text(message.content, message_limit),
267
+ };
268
+ }
269
+ const relevant_parts = message.content.filter((part) => part.type !== "reasoning");
270
+ const part_limit = Math.max(MIN_FOLDED_PART_CHARS, Math.floor(message_limit / Math.max(1, relevant_parts.length)));
271
+ const content = relevant_parts
272
+ .filter((part) => {
273
+ if (part.type === "tool-call" || part.type === "tool-result") {
274
+ return selected_tool_call_ids.has(part.toolCallId);
275
+ }
276
+ if (part.type === "tool-approval-request") {
277
+ return selected_tool_call_ids.has(part.toolCallId);
278
+ }
279
+ if (part.type === "tool-approval-response") {
280
+ const tool_call_id = approval_to_tool_call.get(part.approvalId);
281
+ return Boolean(tool_call_id && selected_tool_call_ids.has(tool_call_id));
282
+ }
283
+ return true;
284
+ })
285
+ .map((part) => compact_model_part(part, part_limit));
286
+ if (content.length === 0)
287
+ return null;
288
+ return { ...message, content };
289
+ }
290
+ function compact_model_part(part, part_limit) {
291
+ if (part.type === "text") {
292
+ return {
293
+ ...part,
294
+ text: fold_compacted_text(String(part.text || ""), part_limit),
295
+ };
296
+ }
297
+ if (part.type === "tool-call") {
298
+ return {
299
+ ...part,
300
+ input: fold_compacted_value(part.input, part_limit),
301
+ };
302
+ }
303
+ if (part.type === "tool-result") {
304
+ const serialized_output = safe_stringify(part.output);
305
+ if (serialized_output.length <= part_limit)
306
+ return part;
307
+ return {
308
+ ...part,
309
+ output: {
310
+ type: "text",
311
+ value: fold_compacted_text(serialized_output, part_limit),
312
+ },
313
+ };
314
+ }
315
+ if (part.type === "file") {
316
+ const data = part.data;
317
+ if (typeof data === "string" && data.length > part_limit) {
318
+ return {
319
+ type: "text",
320
+ text: `[compacted file ${String(part.filename || "unnamed")} ${String(part.mediaType || "unknown")}, ${String(data.length)} chars]`,
321
+ };
322
+ }
323
+ }
324
+ if (part.type === "image") {
325
+ const image = part.image;
326
+ if (typeof image === "string" && image.length > part_limit) {
327
+ return {
328
+ type: "text",
329
+ text: `[compacted image ${String(part.mediaType || "unknown")}, ${String(image.length)} chars]`,
330
+ };
331
+ }
332
+ }
333
+ return part;
334
+ }
335
+ function fold_compacted_value(value, max_chars) {
336
+ const serialized = safe_stringify(value);
337
+ if (serialized.length <= max_chars)
338
+ return value;
339
+ return {
340
+ compacted: true,
341
+ preview: fold_compacted_text(serialized, max_chars),
342
+ };
343
+ }
344
+ function remove_orphaned_tool_parts(messages) {
345
+ const tool_call_ids = new Set();
346
+ const approval_ids = new Set();
347
+ for (const message of messages) {
348
+ if (!Array.isArray(message.content))
349
+ continue;
350
+ for (const part of message.content) {
351
+ if (part.type === "tool-call")
352
+ tool_call_ids.add(part.toolCallId);
353
+ }
354
+ }
355
+ for (const message of messages) {
356
+ if (!Array.isArray(message.content))
357
+ continue;
358
+ for (const part of message.content) {
359
+ if (part.type === "tool-approval-request" &&
360
+ tool_call_ids.has(part.toolCallId))
361
+ approval_ids.add(part.approvalId);
362
+ }
363
+ }
364
+ return messages
365
+ .map((message) => {
366
+ if (!Array.isArray(message.content))
367
+ return message;
368
+ const content = message.content.filter((part) => {
369
+ if (part.type === "tool-result") {
370
+ return tool_call_ids.has(part.toolCallId);
371
+ }
372
+ if (part.type === "tool-approval-request") {
373
+ return tool_call_ids.has(part.toolCallId);
374
+ }
375
+ if (part.type === "tool-approval-response") {
376
+ return approval_ids.has(part.approvalId);
377
+ }
378
+ return true;
379
+ });
380
+ return { ...message, content };
381
+ })
382
+ .filter((message) => message.content.length > 0);
383
+ }
384
+ function safe_stringify(value) {
385
+ try {
386
+ return JSON.stringify(value) || String(value || "");
387
+ }
388
+ catch {
389
+ return String(value || "");
390
+ }
391
+ }
392
+ //# sourceMappingURL=CoreEngineContextCompaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreEngineContextCompaction.js","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineContextCompaction.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,21 @@ export declare class CoreEngineMessageState {
66
66
  * 追加 SDK 返回的模型 response messages。
67
67
  */
68
68
  appendModelMessages(messages: ModelMessage[]): void;
69
+ /**
70
+ * 原子替换当前模型侧消息基线。
71
+ *
72
+ * 关键点(中文):compact 只替换 Provider 后续可见的 ModelMessage,
73
+ * Session 语义消息与持久化历史仍保持完整,等待 turn 收口后再单独归档。
74
+ */
75
+ replace_model_messages(messages: ModelMessage[]): void;
76
+ /**
77
+ * 使用 canonical records 原子替换两份消息基线。
78
+ *
79
+ * 关键点(中文)
80
+ * - 显式 compact 会重写持久化历史,旧的 SessionRecord 与 ModelMessage 必须同时失效。
81
+ * - tools 使用当前 step 的执行视图,避免配置 command 生效后仍按旧工具解码历史。
82
+ */
83
+ replace_session_messages(messages: SessionRecordV1[], tools: Record<string, Tool>): Promise<void>;
69
84
  private appendSessionMessagesAsModelMessages;
70
85
  }
71
86
  //# sourceMappingURL=CoreEngineMessageState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CoreEngineMessageState.d.ts","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineMessageState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAM1E;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,OAAO,CAAC,eAAe,CAAoB;IAE3C;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAiB;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IAEtC,OAAO;IAwBP;;OAEG;WACU,MAAM,CAAC,MAAM,EAAE;QAC1B;;WAEG;QACH,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgBnC;;OAEG;IACH,IAAI,aAAa,IAAI,YAAY,EAAE,CAElC;IAED;;OAEG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAM1B;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;IACH,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI3D;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;YAKrC,oCAAoC;CAoBnD"}
1
+ {"version":3,"file":"CoreEngineMessageState.d.ts","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineMessageState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAM1E;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,OAAO,CAAC,eAAe,CAAoB;IAE3C;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAiB;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IAEtC,OAAO;IAwBP;;OAEG;WACU,MAAM,CAAC,MAAM,EAAE;QAC1B;;WAEG;QACH,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgBnC;;OAEG;IACH,IAAI,aAAa,IAAI,YAAY,EAAE,CAElC;IAED;;OAEG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAM1B;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;IACH,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI3D;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAKnD;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAItD;;;;;;OAMG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,eAAe,EAAE,EAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC;YASF,oCAAoC;CAoBnD"}
@@ -82,6 +82,26 @@ export class CoreEngineMessageState {
82
82
  return;
83
83
  this.currentModelMessages = [...this.currentModelMessages, ...messages];
84
84
  }
85
+ /**
86
+ * 原子替换当前模型侧消息基线。
87
+ *
88
+ * 关键点(中文):compact 只替换 Provider 后续可见的 ModelMessage,
89
+ * Session 语义消息与持久化历史仍保持完整,等待 turn 收口后再单独归档。
90
+ */
91
+ replace_model_messages(messages) {
92
+ this.currentModelMessages = Array.isArray(messages) ? [...messages] : [];
93
+ }
94
+ /**
95
+ * 使用 canonical records 原子替换两份消息基线。
96
+ *
97
+ * 关键点(中文)
98
+ * - 显式 compact 会重写持久化历史,旧的 SessionRecord 与 ModelMessage 必须同时失效。
99
+ * - tools 使用当前 step 的执行视图,避免配置 command 生效后仍按旧工具解码历史。
100
+ */
101
+ async replace_session_messages(messages, tools) {
102
+ this.sessionMessages = Array.isArray(messages) ? [...messages] : [];
103
+ this.currentModelMessages = await toModelMessages(this.sessionMessages, tools, this.projectRoot);
104
+ }
85
105
  async appendSessionMessagesAsModelMessages(messages) {
86
106
  this.sessionMessages = [...this.sessionMessages, ...messages];
87
107
  const modelMessages = await toModelMessages(messages, this.tools, this.projectRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"CoreEngineMessageState.js","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineMessageState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreEngineMessageState.js","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineMessageState.ts"],"names":[],"mappings":"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"}
@@ -44,15 +44,17 @@ interface CoreEngineRunInput {
44
44
  */
45
45
  run_context: SessionRunContext;
46
46
  /**
47
- * 在统一输入队列提交后解析当前模型 turn 的 effective 配置。
47
+ * 在统一输入队列提交后解析当前 Session step 的 effective 配置。
48
48
  */
49
- resolve_model_turn: () => Promise<{
50
- /** 当前模型 turn 使用的模型。 */
49
+ resolve_step_inputs: () => Promise<{
50
+ /** 当前 Session step 使用的模型。 */
51
51
  model: LanguageModel;
52
- /** 当前模型 turn 使用的 system messages。 */
52
+ /** 当前 Session step 使用的 system messages。 */
53
53
  system: SessionExecuteInput["system"];
54
- /** 当前模型 turn 使用的工具集合。 */
54
+ /** 当前 Session step 使用的工具集合。 */
55
55
  tools: SessionExecuteInput["tools"];
56
+ /** 当前 Session step 模型支持的总上下文窗口长度。 */
57
+ context_window?: number;
56
58
  }>;
57
59
  }
58
60
  /**
@@ -63,6 +65,8 @@ export declare class CoreEngineRunner {
63
65
  private readonly context_composer;
64
66
  private readonly logger;
65
67
  private readonly should_compact_on_error;
68
+ /** 最近一次已经通过真实 usage 验收的持久化 Summary 标识。 */
69
+ private validated_compaction_summary_id;
66
70
  constructor(options: CoreEngineRunnerOptions);
67
71
  /**
68
72
  * 执行一次已装配完成的模型/tool-loop 运行。
@@ -1 +1 @@
1
- {"version":3,"file":"CoreEngineRunner.d.ts","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AA0BrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAgDxC,UAAU,uBAAuB;IAC/B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,gBAAgB,EAAE,sBAAsB,CAAC;IAEzC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACtD;AAED,UAAU,kBAAkB;IAC1B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,iBAAiB,CAAC;IAE/B;;OAEG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC;QAChC,uBAAuB;QACvB,KAAK,EAAE,aAAa,CAAC;QACrB,qCAAqC;QACrC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtC,yBAAyB;QACzB,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqD;gBAEjF,OAAO,EAAE,uBAAuB;IAO5C;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA8ThE"}
1
+ {"version":3,"file":"CoreEngineRunner.d.ts","sourceRoot":"","sources":["../../../src/executor/core-engine/CoreEngineRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,IAAI,CAAC;AA+BZ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAmDxC,UAAU,uBAAuB;IAC/B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,gBAAgB,EAAE,sBAAsB,CAAC;IAEzC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACtD;AAED,UAAU,kBAAkB;IAC1B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,iBAAiB,CAAC;IAE/B;;OAEG;IACH,mBAAmB,EAAE,MAAM,OAAO,CAAC;QACjC,6BAA6B;QAC7B,KAAK,EAAE,aAAa,CAAC;QACrB,2CAA2C;QAC3C,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtC,+BAA+B;QAC/B,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpC,qCAAqC;QACrC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqD;IAE7F,0CAA0C;IAC1C,OAAO,CAAC,+BAA+B,CAAM;gBAEjC,OAAO,EAAE,uBAAuB;IAO5C;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAobhE"}