@downcity/agent 1.1.79 → 1.1.81
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 +1 -1
- package/bin/agent/local/Agent.d.ts +8 -121
- package/bin/agent/local/Agent.d.ts.map +1 -1
- package/bin/agent/local/Agent.js +63 -381
- package/bin/agent/local/Agent.js.map +1 -1
- package/bin/agent/local/AgentRuntimeFactory.d.ts +2 -2
- package/bin/agent/local/AgentRuntimeFactory.d.ts.map +1 -1
- package/bin/agent/local/AgentRuntimeFactory.js +2 -23
- package/bin/agent/local/AgentRuntimeFactory.js.map +1 -1
- package/bin/agent/local/services/AgentAssemblyService.d.ts +112 -0
- package/bin/agent/local/services/AgentAssemblyService.d.ts.map +1 -0
- package/bin/agent/local/services/AgentAssemblyService.js +135 -0
- package/bin/agent/local/services/AgentAssemblyService.js.map +1 -0
- package/bin/agent/local/services/AgentLifecycleService.d.ts +59 -0
- package/bin/agent/local/services/AgentLifecycleService.d.ts.map +1 -0
- package/bin/agent/local/services/AgentLifecycleService.js +136 -0
- package/bin/agent/local/services/AgentLifecycleService.js.map +1 -0
- package/bin/agent/local/services/AgentSessionManager.d.ts +106 -0
- package/bin/agent/local/services/AgentSessionManager.d.ts.map +1 -0
- package/bin/agent/local/services/AgentSessionManager.js +182 -0
- package/bin/agent/local/services/AgentSessionManager.js.map +1 -0
- package/bin/executor/Executor.d.ts +7 -24
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +73 -361
- package/bin/executor/Executor.js.map +1 -1
- package/bin/executor/SessionRunScope.d.ts +18 -34
- package/bin/executor/SessionRunScope.d.ts.map +1 -1
- package/bin/executor/SessionRunScope.js +42 -28
- package/bin/executor/SessionRunScope.js.map +1 -1
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts +5 -3
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts.map +1 -1
- package/bin/executor/composer/context/LocalSessionContextComposer.js +11 -18
- package/bin/executor/composer/context/LocalSessionContextComposer.js.map +1 -1
- package/bin/executor/composer/context/SessionContextComposer.d.ts +8 -3
- package/bin/executor/composer/context/SessionContextComposer.d.ts.map +1 -1
- package/bin/executor/composer/system/SessionSystemComposer.d.ts +2 -1
- package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +1 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +2 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +1 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +2 -4
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.d.ts +62 -0
- package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -0
- package/bin/executor/core-engine/CoreEngineRunner.js +309 -0
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -0
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts +5 -0
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.js +2 -4
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.js.map +1 -1
- package/bin/executor/services/ExecutorInflightService.d.ts +39 -0
- package/bin/executor/services/ExecutorInflightService.d.ts.map +1 -0
- package/bin/executor/services/ExecutorInflightService.js +75 -0
- package/bin/executor/services/ExecutorInflightService.js.map +1 -0
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +103 -0
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -0
- package/bin/executor/services/ExecutorRecoveryPolicy.js +87 -0
- package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -0
- package/bin/executor/tools/plugin/PluginToolBridge.d.ts +19 -0
- package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +1 -0
- package/bin/executor/tools/plugin/PluginToolBridge.js +143 -0
- package/bin/executor/tools/plugin/PluginToolBridge.js.map +1 -0
- package/bin/executor/tools/plugin/PluginToolDefinition.d.ts +32 -0
- package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +1 -0
- package/bin/executor/tools/plugin/PluginToolDefinition.js +27 -0
- package/bin/executor/tools/plugin/PluginToolDefinition.js.map +1 -0
- package/bin/executor/tools/plugin/PluginToolSchemas.d.ts +14 -0
- package/bin/executor/tools/plugin/PluginToolSchemas.d.ts.map +1 -0
- package/bin/executor/tools/plugin/PluginToolSchemas.js +19 -0
- package/bin/executor/tools/plugin/PluginToolSchemas.js.map +1 -0
- package/bin/executor/tools/plugin/types/PluginTool.d.ts +39 -0
- package/bin/executor/tools/plugin/types/PluginTool.d.ts.map +1 -0
- package/bin/executor/tools/plugin/types/PluginTool.js +9 -0
- package/bin/executor/tools/plugin/types/PluginTool.js.map +1 -0
- package/bin/executor/tools/shell/ShellToolBridge.js +3 -3
- package/bin/executor/tools/shell/ShellToolBridge.js.map +1 -1
- package/bin/executor/types/SessionRun.d.ts +18 -0
- package/bin/executor/types/SessionRun.d.ts.map +1 -1
- package/bin/index.d.ts +10 -1
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +3 -0
- package/bin/index.js.map +1 -1
- package/bin/plugin/core/BasePlugin.d.ts +2 -2
- package/bin/plugin/core/BasePlugin.d.ts.map +1 -1
- package/bin/plugin/core/BasePlugin.js.map +1 -1
- package/bin/plugin/core/ImagePlugin.d.ts +56 -0
- package/bin/plugin/core/ImagePlugin.d.ts.map +1 -0
- package/bin/plugin/core/ImagePlugin.js +109 -0
- package/bin/plugin/core/ImagePlugin.js.map +1 -0
- package/bin/session/Session.d.ts +14 -83
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +139 -362
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionSystemBuilder.d.ts +2 -1
- package/bin/session/SessionSystemBuilder.d.ts.map +1 -1
- package/bin/session/SessionSystemBuilder.js +2 -3
- package/bin/session/SessionSystemBuilder.js.map +1 -1
- package/bin/session/services/SessionStateService.d.ts +132 -0
- package/bin/session/services/SessionStateService.d.ts.map +1 -0
- package/bin/session/services/SessionStateService.js +242 -0
- package/bin/session/services/SessionStateService.js.map +1 -0
- package/bin/session/services/SessionTurnService.d.ts +66 -0
- package/bin/session/services/SessionTurnService.d.ts.map +1 -0
- package/bin/session/services/SessionTurnService.js +137 -0
- package/bin/session/services/SessionTurnService.js.map +1 -0
- package/bin/session/services/SessionViewService.d.ts +105 -0
- package/bin/session/services/SessionViewService.d.ts.map +1 -0
- package/bin/session/services/SessionViewService.js +184 -0
- package/bin/session/services/SessionViewService.js.map +1 -0
- package/bin/types/agent/AgentOptions.d.ts +18 -0
- package/bin/types/agent/AgentOptions.d.ts.map +1 -1
- package/bin/types/agent/AgentTypes.d.ts +3 -1
- package/bin/types/agent/AgentTypes.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/executor/SessionRunContext.d.ts +66 -0
- package/bin/types/executor/SessionRunContext.d.ts.map +1 -0
- package/bin/types/executor/SessionRunContext.js +10 -0
- package/bin/types/executor/SessionRunContext.js.map +1 -0
- package/bin/types/plugin/ImagePlugin.d.ts +94 -0
- package/bin/types/plugin/ImagePlugin.d.ts.map +1 -0
- package/bin/types/plugin/ImagePlugin.js +10 -0
- package/bin/types/plugin/ImagePlugin.js.map +1 -0
- package/bin/types/session/SessionComposerOptions.d.ts +90 -0
- package/bin/types/session/SessionComposerOptions.d.ts.map +1 -0
- package/bin/types/session/SessionComposerOptions.js +10 -0
- package/bin/types/session/SessionComposerOptions.js.map +1 -0
- package/bin/types/session/SessionLocalState.d.ts +35 -0
- package/bin/types/session/SessionLocalState.d.ts.map +1 -0
- package/bin/types/session/SessionLocalState.js +10 -0
- package/bin/types/session/SessionLocalState.js.map +1 -0
- package/bin/types/session/SessionOptions.d.ts +85 -0
- package/bin/types/session/SessionOptions.d.ts.map +1 -0
- package/bin/types/session/SessionOptions.js +10 -0
- package/bin/types/session/SessionOptions.js.map +1 -0
- package/package.json +1 -1
- package/src/agent/local/Agent.ts +74 -433
- package/src/agent/local/AgentRuntimeFactory.ts +4 -25
- package/src/agent/local/services/AgentAssemblyService.ts +268 -0
- package/src/agent/local/services/AgentLifecycleService.ts +187 -0
- package/src/agent/local/services/AgentSessionManager.ts +291 -0
- package/src/executor/Executor.ts +103 -441
- package/src/executor/README.md +4 -4
- package/src/executor/SessionRunScope.ts +47 -71
- package/src/executor/composer/context/LocalSessionContextComposer.ts +24 -20
- package/src/executor/composer/context/SessionContextComposer.ts +13 -3
- package/src/executor/composer/system/SessionSystemComposer.ts +2 -1
- package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +3 -4
- package/src/executor/core-engine/CoreEngineRunner.ts +433 -0
- package/src/executor/core-engine/CoreEngineUiStreamCollector.ts +7 -5
- package/src/executor/services/ExecutorInflightService.ts +101 -0
- package/src/executor/services/ExecutorRecoveryPolicy.ts +213 -0
- package/src/executor/tools/plugin/PluginToolBridge.ts +161 -0
- package/src/executor/tools/plugin/PluginToolDefinition.ts +32 -0
- package/src/executor/tools/plugin/PluginToolSchemas.ts +20 -0
- package/src/executor/tools/plugin/types/PluginTool.ts +41 -0
- package/src/executor/tools/shell/ShellToolBridge.ts +3 -3
- package/src/executor/types/SessionRun.ts +20 -0
- package/src/index.ts +33 -0
- package/src/plugin/core/BasePlugin.ts +2 -2
- package/src/plugin/core/ImagePlugin.ts +128 -0
- package/src/session/Session.ts +178 -485
- package/src/session/SessionSystemBuilder.ts +3 -3
- package/src/session/services/SessionStateService.ts +341 -0
- package/src/session/services/SessionTurnService.ts +202 -0
- package/src/session/services/SessionViewService.ts +301 -0
- package/src/types/agent/AgentOptions.ts +25 -0
- package/src/types/agent/AgentTypes.ts +10 -0
- package/src/types/agent/SessionTypes.ts +1 -0
- package/src/types/executor/SessionRunContext.ts +76 -0
- package/src/types/plugin/ImagePlugin.ts +103 -0
- package/src/types/session/SessionComposerOptions.ts +107 -0
- package/src/types/session/SessionLocalState.ts +40 -0
- package/src/types/session/SessionOptions.ts +99 -0
- package/tsconfig.tsbuildinfo +1 -1
package/bin/executor/Executor.js
CHANGED
|
@@ -6,24 +6,14 @@
|
|
|
6
6
|
* - 一个 Executor 只对应一个固定的 `sessionId`。
|
|
7
7
|
* - 负责 history 写入、run scope、executing 状态、Composer 编排与 tool-loop 执行。
|
|
8
8
|
*/
|
|
9
|
-
import { streamText } from "ai";
|
|
10
9
|
import { SessionHistoryWriter } from "./composer/history/SessionHistoryWriter.js";
|
|
11
10
|
import { withSessionRunScope } from "./SessionRunScope.js";
|
|
12
11
|
import { buildSessionStepParts } from "./messages/SessionStepEventMapper.js";
|
|
13
12
|
import { JsonlSessionCompactionComposer } from "./composer/compaction/jsonl/JsonlSessionCompactionComposer.js";
|
|
14
13
|
import { LocalSessionContextComposer } from "./composer/context/LocalSessionContextComposer.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { collectFinalAssistantMessageFromUiStream } from "./core-engine/CoreEngineUiStreamCollector.js";
|
|
19
|
-
import { CoreEngineMessageState } from "./core-engine/CoreEngineMessageState.js";
|
|
20
|
-
import { buildOpenAIResponsesProviderOptions, } from "./messages/SessionMessageCodec.js";
|
|
21
|
-
import { logAssistantMessageNow } from "./messages/SessionMessageLog.js";
|
|
22
|
-
import { generateId } from "../utils/Id.js";
|
|
23
|
-
/**
|
|
24
|
-
* 可压缩错误的最大重试次数。
|
|
25
|
-
*/
|
|
26
|
-
const MAX_COMPACTION_RETRY_ATTEMPTS = 3;
|
|
14
|
+
import { CoreEngineRunner } from "./core-engine/CoreEngineRunner.js";
|
|
15
|
+
import { ExecutorInflightService } from "./services/ExecutorInflightService.js";
|
|
16
|
+
import { ExecutorRecoveryPolicy } from "./services/ExecutorRecoveryPolicy.js";
|
|
27
17
|
/**
|
|
28
18
|
* Executor 单实例实现。
|
|
29
19
|
*/
|
|
@@ -40,8 +30,10 @@ export class Executor {
|
|
|
40
30
|
systemComposer;
|
|
41
31
|
contextComposer;
|
|
42
32
|
historyWriter;
|
|
33
|
+
inflight_service;
|
|
34
|
+
recovery_policy;
|
|
35
|
+
core_engine_runner;
|
|
43
36
|
executing = false;
|
|
44
|
-
retryCount = 0;
|
|
45
37
|
constructor(options) {
|
|
46
38
|
const sessionId = String(options.sessionId || "").trim();
|
|
47
39
|
if (!sessionId) {
|
|
@@ -66,6 +58,22 @@ export class Executor {
|
|
|
66
58
|
getHistoryStore: () => this.getHistoryStore(),
|
|
67
59
|
runAfterSessionUpdated: options.runAfterSessionUpdated,
|
|
68
60
|
});
|
|
61
|
+
this.inflight_service = new ExecutorInflightService({
|
|
62
|
+
session_id: this.sessionId,
|
|
63
|
+
history_store: this.historyStore,
|
|
64
|
+
run_after_session_updated_async: async () => await this.afterSessionUpdatedAsync(),
|
|
65
|
+
});
|
|
66
|
+
this.recovery_policy = new ExecutorRecoveryPolicy({
|
|
67
|
+
compaction_composer: this.compactionComposer,
|
|
68
|
+
context_composer: this.contextComposer,
|
|
69
|
+
logger: this.logger,
|
|
70
|
+
});
|
|
71
|
+
this.core_engine_runner = new CoreEngineRunner({
|
|
72
|
+
history_store: this.historyStore,
|
|
73
|
+
context_composer: this.contextComposer,
|
|
74
|
+
logger: this.logger,
|
|
75
|
+
should_compact_on_error: (error) => this.compactionComposer.shouldCompactOnError(error),
|
|
76
|
+
});
|
|
69
77
|
}
|
|
70
78
|
/**
|
|
71
79
|
* 返回当前 session 是否正在执行。
|
|
@@ -114,52 +122,6 @@ export class Executor {
|
|
|
114
122
|
async appendAssistantMessage(params) {
|
|
115
123
|
await this.historyWriter.appendAssistantMessage(params);
|
|
116
124
|
}
|
|
117
|
-
/**
|
|
118
|
-
* 把 step/tool 过程增量写入当前运行中的 assistant 快照。
|
|
119
|
-
*/
|
|
120
|
-
async appendAssistantStepPartsToInflight(parts) {
|
|
121
|
-
const normalized_parts = Array.isArray(parts)
|
|
122
|
-
? parts.filter((part) => part && typeof part === "object")
|
|
123
|
-
: [];
|
|
124
|
-
if (normalized_parts.length === 0)
|
|
125
|
-
return;
|
|
126
|
-
const current_inflight = await this.historyStore.readInflight();
|
|
127
|
-
const next_message = current_inflight
|
|
128
|
-
? {
|
|
129
|
-
...current_inflight,
|
|
130
|
-
metadata: {
|
|
131
|
-
...(current_inflight.metadata || {
|
|
132
|
-
v: 1,
|
|
133
|
-
ts: Date.now(),
|
|
134
|
-
sessionId: this.sessionId,
|
|
135
|
-
}),
|
|
136
|
-
ts: Date.now(),
|
|
137
|
-
sessionId: this.sessionId,
|
|
138
|
-
source: "egress",
|
|
139
|
-
kind: "normal",
|
|
140
|
-
},
|
|
141
|
-
parts: [
|
|
142
|
-
...(Array.isArray(current_inflight.parts)
|
|
143
|
-
? current_inflight.parts
|
|
144
|
-
: []),
|
|
145
|
-
...normalized_parts,
|
|
146
|
-
],
|
|
147
|
-
}
|
|
148
|
-
: {
|
|
149
|
-
id: `a:${this.sessionId}:${generateId()}`,
|
|
150
|
-
role: "assistant",
|
|
151
|
-
metadata: {
|
|
152
|
-
v: 1,
|
|
153
|
-
ts: Date.now(),
|
|
154
|
-
sessionId: this.sessionId,
|
|
155
|
-
source: "egress",
|
|
156
|
-
kind: "normal",
|
|
157
|
-
},
|
|
158
|
-
parts: normalized_parts,
|
|
159
|
-
};
|
|
160
|
-
await this.historyStore.writeInflight(next_message);
|
|
161
|
-
await this.afterSessionUpdatedAsync();
|
|
162
|
-
}
|
|
163
125
|
/**
|
|
164
126
|
* 运行当前 session 的一次请求。
|
|
165
127
|
*
|
|
@@ -174,18 +136,8 @@ export class Executor {
|
|
|
174
136
|
throw new Error("Executor.run does not support concurrent execution");
|
|
175
137
|
}
|
|
176
138
|
const query = String(params.query || "").trim();
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
? { onStepCallback: params.onStepCallback }
|
|
180
|
-
: {}),
|
|
181
|
-
...(typeof params.onAssistantStepCallback === "function"
|
|
182
|
-
? { onAssistantStepCallback: params.onAssistantStepCallback }
|
|
183
|
-
: {}),
|
|
184
|
-
...(typeof params.onUiMessageChunkCallback === "function"
|
|
185
|
-
? { onUiMessageChunkCallback: params.onUiMessageChunkCallback }
|
|
186
|
-
: {}),
|
|
187
|
-
};
|
|
188
|
-
const providedOnAssistantStepCallback = sessionRunScope.onAssistantStepCallback;
|
|
139
|
+
const run_context = this.createRunContext(params.runContext);
|
|
140
|
+
const providedOnAssistantStepCallback = run_context.onAssistantStepCallback;
|
|
189
141
|
const wrappedOnAssistantStepCallback = async (step) => {
|
|
190
142
|
const step_parts = buildSessionStepParts({
|
|
191
143
|
stepIndex: step.stepIndex,
|
|
@@ -194,85 +146,53 @@ export class Executor {
|
|
|
194
146
|
visibility: step.visibility,
|
|
195
147
|
});
|
|
196
148
|
if (step_parts.length > 0) {
|
|
197
|
-
await this.
|
|
149
|
+
await this.inflight_service.append_assistant_step_parts(step_parts);
|
|
198
150
|
}
|
|
199
151
|
if (typeof providedOnAssistantStepCallback === "function") {
|
|
200
152
|
await providedOnAssistantStepCallback(step);
|
|
201
153
|
}
|
|
202
154
|
};
|
|
155
|
+
run_context.onAssistantStepCallback = wrappedOnAssistantStepCallback;
|
|
203
156
|
this.executing = true;
|
|
204
|
-
this.
|
|
157
|
+
this.recovery_policy.reset_run_state();
|
|
205
158
|
try {
|
|
206
159
|
const result = await withSessionRunScope({
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
160
|
+
runContext: run_context,
|
|
161
|
+
}, async () => await this.recovery_policy.run_with_retry({
|
|
162
|
+
query,
|
|
163
|
+
model: this.resolveModelOrThrow(),
|
|
164
|
+
run_context,
|
|
165
|
+
prepare_execute_input: async ({ query: next_query, model, run_context: next_run_context, retry_count, }) => await this.prepareExecuteInput(next_query, model, next_run_context, retry_count),
|
|
166
|
+
execute_prepared_run: async ({ execute_input, model, run_context: next_run_context, }) => await this.executePreparedRun(execute_input, model, next_run_context),
|
|
167
|
+
}));
|
|
211
168
|
return result;
|
|
212
169
|
}
|
|
213
170
|
finally {
|
|
214
|
-
this.
|
|
171
|
+
this.recovery_policy.reset_run_state();
|
|
215
172
|
this.executing = false;
|
|
216
173
|
}
|
|
217
174
|
}
|
|
218
|
-
/**
|
|
219
|
-
* 执行一次 session run(带可压缩错误重试)。
|
|
220
|
-
*/
|
|
221
|
-
async runWithRetry(input) {
|
|
222
|
-
const model = this.resolveModelOrThrow();
|
|
223
|
-
try {
|
|
224
|
-
const query = String(input.query || "").trim();
|
|
225
|
-
const prepared = await this.prepareExecuteInput(query, model);
|
|
226
|
-
return await this.executePreparedRun(prepared, model);
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
if (this.compactionComposer.shouldCompactOnError(error)) {
|
|
230
|
-
await this.logger.log("info", "[agent] compacting", {
|
|
231
|
-
retryCount: this.retryCount,
|
|
232
|
-
error: String(error),
|
|
233
|
-
});
|
|
234
|
-
if (this.retryCount < MAX_COMPACTION_RETRY_ATTEMPTS) {
|
|
235
|
-
this.retryCount += 1;
|
|
236
|
-
return this.runWithRetry(input);
|
|
237
|
-
}
|
|
238
|
-
return {
|
|
239
|
-
success: false,
|
|
240
|
-
error: "Context length exceeded and retries failed. Please resend your question.",
|
|
241
|
-
assistantMessage: this.contextComposer.buildFallbackAssistantMessage("Context length exceeded and retries failed. Please resend your question."),
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
const errorMsg = String(error);
|
|
245
|
-
await this.logger.log("error", "Executor execution failed", {
|
|
246
|
-
error: errorMsg,
|
|
247
|
-
});
|
|
248
|
-
return {
|
|
249
|
-
success: false,
|
|
250
|
-
error: errorMsg,
|
|
251
|
-
assistantMessage: this.contextComposer.buildFallbackAssistantMessage(`Execution failed: ${errorMsg}`),
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
175
|
/**
|
|
256
176
|
* 调用 Composer 组装当前轮执行输入。
|
|
257
177
|
*/
|
|
258
|
-
async prepareExecuteInput(query, model) {
|
|
178
|
+
async prepareExecuteInput(query, model, run_context, retry_count) {
|
|
259
179
|
if (!String(this.historyComposer.sessionId || "").trim()) {
|
|
260
180
|
throw new Error("Executor.run requires historyComposer.sessionId");
|
|
261
181
|
}
|
|
262
|
-
const
|
|
263
|
-
const tools =
|
|
264
|
-
const system = await this.systemComposer.resolve();
|
|
182
|
+
const composed_context = await this.contextComposer.compose(run_context);
|
|
183
|
+
const tools = composed_context.tools;
|
|
184
|
+
const system = await this.systemComposer.resolve(run_context);
|
|
265
185
|
try {
|
|
266
|
-
if (
|
|
186
|
+
if (retry_count > 0) {
|
|
267
187
|
await this.logger.log("info", "[agent] compacting", {
|
|
268
|
-
retryCount:
|
|
188
|
+
retryCount: retry_count,
|
|
269
189
|
});
|
|
270
190
|
}
|
|
271
191
|
await this.compactionComposer.run({
|
|
272
192
|
historyStore: this.historyStore,
|
|
273
193
|
model,
|
|
274
194
|
system,
|
|
275
|
-
retryCount:
|
|
195
|
+
retryCount: retry_count,
|
|
276
196
|
});
|
|
277
197
|
}
|
|
278
198
|
catch {
|
|
@@ -283,7 +203,7 @@ export class Executor {
|
|
|
283
203
|
tools,
|
|
284
204
|
system,
|
|
285
205
|
model,
|
|
286
|
-
retryCount:
|
|
206
|
+
retryCount: retry_count,
|
|
287
207
|
});
|
|
288
208
|
return {
|
|
289
209
|
query,
|
|
@@ -295,240 +215,38 @@ export class Executor {
|
|
|
295
215
|
/**
|
|
296
216
|
* 执行一次已装配完成的运行材料。
|
|
297
217
|
*/
|
|
298
|
-
async executePreparedRun(input, model) {
|
|
299
|
-
return await this.
|
|
218
|
+
async executePreparedRun(input, model, run_context) {
|
|
219
|
+
return await this.core_engine_runner.run({
|
|
220
|
+
execute_input: input,
|
|
221
|
+
model,
|
|
222
|
+
run_context,
|
|
223
|
+
});
|
|
300
224
|
}
|
|
301
225
|
/**
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
* 关键点(中文)
|
|
305
|
-
* - CoreEngine 是 Executor 内部机制,不是第二个 Executor 实例。
|
|
306
|
-
* - 这里只返回最终 assistant message;是否写入长期 history 由外层 Session/Service 决定。
|
|
307
|
-
* - 运行中生成的内部续写 user message 只进入本轮内存态,不直接落盘。
|
|
226
|
+
* 归一化本轮显式运行上下文。
|
|
308
227
|
*/
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
typeof summary.toolResultCount === "number"
|
|
332
|
-
? summary.toolResultCount
|
|
333
|
-
: 0;
|
|
334
|
-
await this.logger.log("info", "[agent] step.finish", {
|
|
335
|
-
sessionId,
|
|
336
|
-
stepIndex: stepCount,
|
|
337
|
-
...summary,
|
|
338
|
-
});
|
|
339
|
-
await contextComposerOnStepFinish(stepResult);
|
|
340
|
-
};
|
|
341
|
-
const prepareStep = this.contextComposer.createPrepareStepHandler({
|
|
342
|
-
system,
|
|
343
|
-
appendMergedUserMessages,
|
|
344
|
-
});
|
|
345
|
-
let finalAssistantUiMessage = null;
|
|
346
|
-
let textOnlyContinuationCount = 0;
|
|
347
|
-
let incompleteResponseRecoveryCount = 0;
|
|
348
|
-
while (stepCount < MAX_TOOL_LOOP_STEPS) {
|
|
349
|
-
const result = streamText({
|
|
350
|
-
model,
|
|
351
|
-
system,
|
|
352
|
-
onStepFinish,
|
|
353
|
-
prepareStep,
|
|
354
|
-
messages: messageState.modelMessages,
|
|
355
|
-
tools,
|
|
356
|
-
providerOptions: buildOpenAIResponsesProviderOptions(),
|
|
357
|
-
onError: async ({ error }) => {
|
|
358
|
-
lastObservedStreamError = error;
|
|
359
|
-
await this.logger.log("error", "[agent] stream.error", {
|
|
360
|
-
sessionId,
|
|
361
|
-
...summarizeStreamError(error),
|
|
362
|
-
});
|
|
363
|
-
},
|
|
364
|
-
});
|
|
365
|
-
const stepAssistantUiMessage = await collectFinalAssistantMessageFromUiStream({
|
|
366
|
-
result,
|
|
367
|
-
sessionId,
|
|
368
|
-
logger: this.logger,
|
|
369
|
-
buildFallbackAssistantMessage: (text) => this.contextComposer.buildFallbackAssistantMessage(text),
|
|
370
|
-
});
|
|
371
|
-
const executedSteps = await result.steps;
|
|
372
|
-
const lastStep = executedSteps[executedSteps.length - 1];
|
|
373
|
-
if (!lastStep)
|
|
374
|
-
break;
|
|
375
|
-
const incompleteResponse = detectIncompleteResponse({
|
|
376
|
-
stepResult: lastStep,
|
|
377
|
-
assistantMessage: stepAssistantUiMessage,
|
|
378
|
-
});
|
|
379
|
-
const textOnlyContinuationReason = detectTextOnlyContinuationReason(lastStep);
|
|
380
|
-
const loopDecision = evaluateCoreEngineLoopDecision({
|
|
381
|
-
hasIncompleteResponse: incompleteResponse !== null,
|
|
382
|
-
incompleteRecoveryCount: incompleteResponseRecoveryCount,
|
|
383
|
-
maxIncompleteRecoveries: MAX_INCOMPLETE_RESPONSE_RECOVERIES,
|
|
384
|
-
textOnlyContinuationReason,
|
|
385
|
-
textOnlyContinuationCount,
|
|
386
|
-
maxTextOnlyContinuations: MAX_TEXT_ONLY_CONTINUATIONS,
|
|
387
|
-
hasTools: Object.keys(tools).length > 0,
|
|
388
|
-
toolCallCount: lastStep.toolCalls.length,
|
|
389
|
-
});
|
|
390
|
-
await this.logger.log("info", "[agent] loop.decision", {
|
|
391
|
-
sessionId,
|
|
392
|
-
stepIndex: stepCount,
|
|
393
|
-
continueForToolCalls: loopDecision.continueForToolCalls,
|
|
394
|
-
continueForTextOnly: loopDecision.continueForTextOnly,
|
|
395
|
-
continueForIncompleteRecovery: loopDecision.continueForIncompleteRecovery,
|
|
396
|
-
decisionKind: loopDecision.kind,
|
|
397
|
-
textOnlyContinuationReason,
|
|
398
|
-
textOnlyContinuationCount,
|
|
399
|
-
incompleteResponseReason: incompleteResponse?.reason ?? null,
|
|
400
|
-
incompleteResponseRecoveryCount,
|
|
401
|
-
toolCallCount: lastStep.toolCalls.length,
|
|
402
|
-
toolResultCount: lastStep.toolResults.length,
|
|
403
|
-
finishReason: lastStep.finishReason,
|
|
404
|
-
textPreview: toInlinePreview(lastStep.text),
|
|
405
|
-
});
|
|
406
|
-
if (loopDecision.continueForIncompleteRecovery && incompleteResponse) {
|
|
407
|
-
incompleteResponseRecoveryCount += 1;
|
|
408
|
-
await this.logger.log("warn", "[agent] incomplete_response.recover", {
|
|
409
|
-
sessionId,
|
|
410
|
-
stepIndex: stepCount,
|
|
411
|
-
recoveryCount: incompleteResponseRecoveryCount,
|
|
412
|
-
reason: incompleteResponse.reason,
|
|
413
|
-
...incompleteResponse.details,
|
|
414
|
-
});
|
|
415
|
-
const recoveryMessage = this.historyStore.userText({
|
|
416
|
-
text: buildIncompleteResponseRecoveryNudge(incompleteResponseRecoveryCount),
|
|
417
|
-
metadata: {
|
|
418
|
-
sessionId,
|
|
419
|
-
extra: {
|
|
420
|
-
internal: "agent_incomplete_response_recover",
|
|
421
|
-
reason: incompleteResponse.reason,
|
|
422
|
-
stepIndex: stepCount,
|
|
423
|
-
},
|
|
424
|
-
},
|
|
425
|
-
});
|
|
426
|
-
await messageState.appendUserTextMessage(recoveryMessage);
|
|
427
|
-
continue;
|
|
428
|
-
}
|
|
429
|
-
if (incompleteResponse) {
|
|
430
|
-
await this.logger.log("error", "[agent] incomplete_response", {
|
|
431
|
-
sessionId,
|
|
432
|
-
stepIndex: stepCount,
|
|
433
|
-
reason: incompleteResponse.reason,
|
|
434
|
-
recoveryCount: incompleteResponseRecoveryCount,
|
|
435
|
-
...incompleteResponse.details,
|
|
436
|
-
});
|
|
437
|
-
throw new Error(`Agent received incomplete response (${incompleteResponse.reason})`);
|
|
438
|
-
}
|
|
439
|
-
const responseMessages = Array.isArray(lastStep.response?.messages)
|
|
440
|
-
? lastStep.response.messages
|
|
441
|
-
: [];
|
|
442
|
-
messageState.appendModelMessages(responseMessages);
|
|
443
|
-
finalAssistantUiMessage = mergeAssistantUiMessages(finalAssistantUiMessage, stepAssistantUiMessage);
|
|
444
|
-
// 关键点(中文):把本 step 的 assistant UI 消息并入运行时上下文,保证后续全量重算不丢历史。
|
|
445
|
-
messageState.appendRuntimeSessionMessage(stepAssistantUiMessage);
|
|
446
|
-
if (loopDecision.continueForToolCalls) {
|
|
447
|
-
textOnlyContinuationCount = 0;
|
|
448
|
-
incompleteResponseRecoveryCount = 0;
|
|
449
|
-
continue;
|
|
450
|
-
}
|
|
451
|
-
if (loopDecision.continueForTextOnly) {
|
|
452
|
-
textOnlyContinuationCount += 1;
|
|
453
|
-
incompleteResponseRecoveryCount = 0;
|
|
454
|
-
const continuationMessage = this.historyStore.userText({
|
|
455
|
-
text: buildTextOnlyContinuationNudge(textOnlyContinuationCount),
|
|
456
|
-
metadata: {
|
|
457
|
-
sessionId,
|
|
458
|
-
extra: {
|
|
459
|
-
internal: "agent_loop_auto_continue",
|
|
460
|
-
reason: textOnlyContinuationReason,
|
|
461
|
-
stepIndex: stepCount,
|
|
462
|
-
},
|
|
463
|
-
},
|
|
464
|
-
});
|
|
465
|
-
await messageState.appendUserTextMessage(continuationMessage);
|
|
466
|
-
continue;
|
|
467
|
-
}
|
|
468
|
-
// 关键点(中文):stop 前做 tail merge,覆盖最后一个 step 后才入队的新 user 消息。
|
|
469
|
-
const tailPrepared = await prepareStep({ messages: [] });
|
|
470
|
-
const tailMergedMessageCount = Array.isArray(tailPrepared.messages)
|
|
471
|
-
? tailPrepared.messages.length
|
|
472
|
-
: 0;
|
|
473
|
-
if (shouldContinueForTailMergedUserMessages({
|
|
474
|
-
mergedUserMessageCount: tailMergedMessageCount,
|
|
475
|
-
})) {
|
|
476
|
-
textOnlyContinuationCount = 0;
|
|
477
|
-
incompleteResponseRecoveryCount = 0;
|
|
478
|
-
await this.logger.log("info", "[agent] loop.tail_merge_continue", {
|
|
479
|
-
sessionId,
|
|
480
|
-
stepIndex: stepCount,
|
|
481
|
-
mergedUserMessageCount: tailMergedMessageCount,
|
|
482
|
-
});
|
|
483
|
-
continue;
|
|
484
|
-
}
|
|
485
|
-
break;
|
|
486
|
-
}
|
|
487
|
-
if (stepCount >= MAX_TOOL_LOOP_STEPS) {
|
|
488
|
-
await this.logger.log("warn", "[agent] loop.max_steps_reached", {
|
|
489
|
-
sessionId,
|
|
490
|
-
stepCount,
|
|
491
|
-
totalToolCallCount,
|
|
492
|
-
totalToolResultCount,
|
|
493
|
-
});
|
|
494
|
-
}
|
|
495
|
-
const finalMessage = finalAssistantUiMessage ||
|
|
496
|
-
this.contextComposer.buildFallbackAssistantMessage("Execution completed");
|
|
497
|
-
await this.logger.log("info", "[agent] final.message", {
|
|
498
|
-
sessionId,
|
|
499
|
-
...summarizeUiMessageForDebug(finalMessage),
|
|
500
|
-
});
|
|
501
|
-
await logAssistantMessageNow(this.logger, finalMessage);
|
|
502
|
-
const duration = Date.now() - startTime;
|
|
503
|
-
await this.logger.log("info", "[agent] finish", {
|
|
504
|
-
sessionId,
|
|
505
|
-
duration,
|
|
506
|
-
stepCount,
|
|
507
|
-
totalToolCallCount,
|
|
508
|
-
totalToolResultCount,
|
|
509
|
-
});
|
|
510
|
-
return {
|
|
511
|
-
success: true,
|
|
512
|
-
assistantMessage: finalMessage,
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
|
-
catch (error) {
|
|
516
|
-
if (this.compactionComposer.shouldCompactOnError(error)) {
|
|
517
|
-
throw error;
|
|
518
|
-
}
|
|
519
|
-
const errorMsg = resolveEffectiveCoreEngineError({
|
|
520
|
-
error,
|
|
521
|
-
streamError: lastObservedStreamError,
|
|
522
|
-
});
|
|
523
|
-
await this.logger.log("error", "CoreEngine execution failed", {
|
|
524
|
-
error: errorMsg,
|
|
525
|
-
});
|
|
526
|
-
return {
|
|
527
|
-
success: false,
|
|
528
|
-
error: errorMsg,
|
|
529
|
-
assistantMessage: this.contextComposer.buildFallbackAssistantMessage(`Execution failed: ${errorMsg}`),
|
|
530
|
-
};
|
|
531
|
-
}
|
|
228
|
+
createRunContext(input) {
|
|
229
|
+
return {
|
|
230
|
+
sessionId: String(input?.sessionId || this.sessionId).trim(),
|
|
231
|
+
...(typeof input?.onStepCallback === "function"
|
|
232
|
+
? { onStepCallback: input.onStepCallback }
|
|
233
|
+
: {}),
|
|
234
|
+
...(typeof input?.onAssistantStepCallback === "function"
|
|
235
|
+
? { onAssistantStepCallback: input.onAssistantStepCallback }
|
|
236
|
+
: {}),
|
|
237
|
+
...(typeof input?.onUiMessageChunkCallback === "function"
|
|
238
|
+
? { onUiMessageChunkCallback: input.onUiMessageChunkCallback }
|
|
239
|
+
: {}),
|
|
240
|
+
injectedUserMessages: Array.isArray(input?.injectedUserMessages)
|
|
241
|
+
? [...input.injectedUserMessages]
|
|
242
|
+
: [],
|
|
243
|
+
deferredPersistedUserMessages: Array.isArray(input?.deferredPersistedUserMessages)
|
|
244
|
+
? [...input.deferredPersistedUserMessages]
|
|
245
|
+
: [],
|
|
246
|
+
pendingAssistantFileParts: Array.isArray(input?.pendingAssistantFileParts)
|
|
247
|
+
? [...input.pendingAssistantFileParts]
|
|
248
|
+
: [],
|
|
249
|
+
};
|
|
532
250
|
}
|
|
533
251
|
/**
|
|
534
252
|
* 读取当前 session 模型。
|
|
@@ -540,11 +258,5 @@ export class Executor {
|
|
|
540
258
|
}
|
|
541
259
|
return model;
|
|
542
260
|
}
|
|
543
|
-
/**
|
|
544
|
-
* 重置当前 run 级状态。
|
|
545
|
-
*/
|
|
546
|
-
resetRunState() {
|
|
547
|
-
this.retryCount = 0;
|
|
548
|
-
}
|
|
549
261
|
}
|
|
550
262
|
//# sourceMappingURL=Executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.js","sourceRoot":"","sources":["../../src/executor/Executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Executor.js","sourceRoot":"","sources":["../../src/executor/Executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,54 +1,26 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import type { FileUIPart } from "ai";
|
|
2
3
|
import type { SessionUserMessageV1 } from "../executor/types/SessionMessages.js";
|
|
3
|
-
import type {
|
|
4
|
+
import type { SessionRunContext } from "../types/executor/SessionRunContext.js";
|
|
4
5
|
/**
|
|
5
6
|
* SessionRunScope(单次请求作用域)。
|
|
6
7
|
*
|
|
7
8
|
* 关键点(中文)
|
|
8
9
|
* - 这是 session run 层请求作用域上下文,不属于具体 plugin 业务模块。
|
|
9
|
-
* -
|
|
10
|
+
* - 当前阶段仅作为深层工具回调读取 `runContext` 的薄包装。
|
|
10
11
|
*/
|
|
11
12
|
export type SessionRunScope = {
|
|
12
|
-
sessionId?: string;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* 关键点(中文)
|
|
17
|
-
* - 由调用侧(如 chat queue)注入。
|
|
18
|
-
* - Orchestrator 从 SessionRunScope 读取并编排到本轮运行上下文。
|
|
14
|
+
* 当前显式运行上下文。
|
|
19
15
|
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* assistant step 完成回调(可选)。
|
|
23
|
-
*
|
|
24
|
-
* 关键点(中文)
|
|
25
|
-
* - 在每个 LLM step 结束时触发。
|
|
26
|
-
* - 用于把中间文本增量派发到外部通道(如 direct 模式分步发送)。
|
|
27
|
-
*/
|
|
28
|
-
onAssistantStepCallback?: SessionAssistantStepCallback;
|
|
29
|
-
/**
|
|
30
|
-
* UI stream chunk 回调(可选)。
|
|
31
|
-
*
|
|
32
|
-
* 关键点(中文)
|
|
33
|
-
* - 用于把底层模型 UI stream 事件向上层 SDK / transport 旁路输出。
|
|
34
|
-
* - 不影响最终 assistantMessage 的收敛与落盘。
|
|
35
|
-
*/
|
|
36
|
-
onUiMessageChunkCallback?: SessionUiMessageChunkCallback;
|
|
37
|
-
/**
|
|
38
|
-
* 运行时注入的 user 消息队列(可选)。
|
|
39
|
-
*
|
|
40
|
-
* 关键点(中文)
|
|
41
|
-
* - 用于在 tool 执行后向下一 step 注入结构化 user 消息。
|
|
42
|
-
* - 队列内容由上层 plugin runtime 通过统一协议下发,main 不感知业务语义。
|
|
43
|
-
*/
|
|
44
|
-
injectedUserMessages?: SessionUserMessageV1[];
|
|
16
|
+
runContext: SessionRunContext;
|
|
45
17
|
};
|
|
46
18
|
/**
|
|
47
19
|
* AsyncLocalStorage 容器(请求作用域)。
|
|
48
20
|
*
|
|
49
21
|
* 关键点(中文)
|
|
50
22
|
* - 同一条异步调用链内可读取一致的 SessionRunScope。
|
|
51
|
-
* -
|
|
23
|
+
* - 当前主要用于 tool 深层桥接层读取活跃 runContext。
|
|
52
24
|
*/
|
|
53
25
|
export declare const sessionRunScopeStorage: AsyncLocalStorage<SessionRunScope>;
|
|
54
26
|
/**
|
|
@@ -59,6 +31,10 @@ export declare function withSessionRunScope<T>(ctx: SessionRunScope, fn: () => T
|
|
|
59
31
|
* 读取当前异步链路上的 session run 作用域。
|
|
60
32
|
*/
|
|
61
33
|
export declare function getSessionRunScope(): SessionRunScope | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* 读取当前异步链路上的显式 runContext。
|
|
36
|
+
*/
|
|
37
|
+
export declare function getSessionRunContext(): SessionRunContext | undefined;
|
|
62
38
|
/**
|
|
63
39
|
* 入队一条“待注入 user 消息”。
|
|
64
40
|
*
|
|
@@ -81,4 +57,12 @@ export declare function enqueueDeferredPersistedUserMessage(sessionId: string, m
|
|
|
81
57
|
* 读取并清空指定 session 的待持久化 user 消息。
|
|
82
58
|
*/
|
|
83
59
|
export declare function drainDeferredPersistedUserMessages(sessionId: string): SessionUserMessageV1[];
|
|
60
|
+
/**
|
|
61
|
+
* 入队一组“待并入 assistant 消息的 file parts”。
|
|
62
|
+
*/
|
|
63
|
+
export declare function enqueueAssistantFileParts(parts: FileUIPart[]): void;
|
|
64
|
+
/**
|
|
65
|
+
* 读取当前 run 内待并入 assistant 消息的 file parts。
|
|
66
|
+
*/
|
|
67
|
+
export declare function readPendingAssistantFileParts(): FileUIPart[];
|
|
84
68
|
//# sourceMappingURL=SessionRunScope.d.ts.map
|