@downcity/agent 1.1.331 → 1.1.335
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/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineContextCompaction.js +62 -6
- package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.d.ts +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.js +2 -6
- package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
- package/bin/executor/messages/SessionMessageCodec.d.ts.map +1 -1
- package/bin/executor/messages/SessionMessageCodec.js +63 -1
- package/bin/executor/messages/SessionMessageCodec.js.map +1 -1
- package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -1
- package/bin/session/messages/SessionAssistantMessageWriter.js +10 -2
- package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -1
- package/bin/session/messages/SessionMessageCodec.d.ts.map +1 -1
- package/bin/session/messages/SessionMessageCodec.js +5 -3
- package/bin/session/messages/SessionMessageCodec.js.map +1 -1
- package/bin/workspace/tool/FileTools.js +1 -1
- package/bin/workspace/tool/FileTools.js.map +1 -1
- package/package.json +6 -6
- package/scripts/core-engine-context-compaction.test.mjs +15 -2
- package/scripts/image-plugin-job.test.mjs +128 -2
- package/scripts/session-attachments.test.mjs +2 -3
- package/scripts/session-messages.test.mjs +98 -0
- package/src/executor/core-engine/CoreEngineContextCompaction.ts +84 -15
- package/src/executor/messages/SessionAttachmentMapper.ts +2 -6
- package/src/executor/messages/SessionMessageCodec.ts +69 -1
- package/src/session/messages/SessionAssistantMessageWriter.ts +14 -2
- package/src/session/messages/SessionMessageCodec.ts +7 -3
- package/src/workspace/tool/FileTools.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionMessageCodec.js","sourceRoot":"","sources":["../../../src/session/messages/SessionMessageCodec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionMessageCodec.js","sourceRoot":"","sources":["../../../src/session/messages/SessionMessageCodec.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { edit_file_tool_input_schema, read_file_tool_input_schema, write_file_to
|
|
|
11
11
|
/** 创建 Workspace 持有的结构化文件工具。 */
|
|
12
12
|
export function create_file_tools(runner) {
|
|
13
13
|
const read = tool({
|
|
14
|
-
description: "Read a project file instead of using cat or sed. Images and PDFs are attached to the next model step as local file parts. Text output is limited to 500 lines and 256KB by default; use offset and limit to continue. Other binary files return metadata only.",
|
|
14
|
+
description: "Read a project file instead of using cat or sed. For a chat attachment, use the file part's url (the .downcity/... storage path) as path; filename is only the user's display name and is not a project path. Images and PDFs are attached to the next model step as local file parts. Text output is limited to 500 lines and 256KB by default; use offset and limit to continue. Other binary files return metadata only.",
|
|
15
15
|
inputSchema: read_file_tool_input_schema,
|
|
16
16
|
execute: async (input) => {
|
|
17
17
|
const output = await runner.run_file_action({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileTools.js","sourceRoot":"","sources":["../../../src/workspace/tool/FileTools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAY1B,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,qCAAqC,CAAC;AAE7C,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC;QAChB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"FileTools.js","sourceRoot":"","sources":["../../../src/workspace/tool/FileTools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAY1B,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,qCAAqC,CAAC;AAE7C,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC;QAChB,WAAW,EACT,6ZAA6Z;QAC/Z,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK,EACZ,KAAwB,EACmB,EAAE;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;gBAC1C,MAAM,EAAE,MAAM;gBACd,KAAK;aACN,CAAuB,CAAC;YACzB,MAAM,QAAQ,GAAiD,EAAE,CAAC;YAClE,IACE,MAAM,CAAC,OAAO;gBACd,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,iBAAiB,CAAC,EACnE,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC;4BACN,IAAI,EAAE,MAAM;4BACZ,GAAG,EAAE,MAAM,CAAC,SAAS;4BACrB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,0BAA0B;4BACzD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;yBAC1C,CAAC;iBACH,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,CAAC;QACjB,WAAW,EACT,sKAAsK;QACxK,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,KAAK,EACZ,KAAyB,EACmB,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;gBAC1C,MAAM,EAAE,OAAO;gBACf,KAAK;aACN,CAAwB,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC;QAChB,WAAW,EACT,wNAAwN;QAC1N,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK,EACZ,KAAwB,EACmB,EAAE;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;gBAC1C,MAAM,EAAE,MAAM;gBACd,KAAK;aACN,CAAuB,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClC,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/agent",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.335",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity Agent 运行时 — 单 Agent 执行壳与本机 RPC 能力",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@downcity/shell": "^0.1.
|
|
20
|
-
"@downcity/type": "0.1.
|
|
19
|
+
"@downcity/shell": "^0.1.170",
|
|
20
|
+
"@downcity/type": "0.1.196",
|
|
21
21
|
"ai": "^6.0.193",
|
|
22
22
|
"commander": "^15.0.0",
|
|
23
23
|
"dotenv": "^17.4.2",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"zod": "^4.4.3"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@downcity/sandbox-linux": "^0.1.
|
|
36
|
-
"@downcity/sandbox-macos": "^0.1.
|
|
37
|
-
"@downcity/sandbox-windows-mxc": "^0.1.
|
|
35
|
+
"@downcity/sandbox-linux": "^0.1.34",
|
|
36
|
+
"@downcity/sandbox-macos": "^0.1.34",
|
|
37
|
+
"@downcity/sandbox-windows-mxc": "^0.1.34",
|
|
38
38
|
"@ai-sdk/openai": "^3.0.67",
|
|
39
39
|
"@types/fs-extra": "^11.0.4",
|
|
40
40
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -284,8 +284,18 @@ test("deep compact 删除 reasoning,并完整保留最新并行 tool transacti
|
|
|
284
284
|
{
|
|
285
285
|
role: "assistant",
|
|
286
286
|
content: [
|
|
287
|
-
{
|
|
288
|
-
|
|
287
|
+
{
|
|
288
|
+
type: "reasoning",
|
|
289
|
+
text: "latest reasoning".repeat(2_000),
|
|
290
|
+
providerOptions: { openai: { itemId: "rs_latest" } },
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
type: "text",
|
|
294
|
+
text: "running tools",
|
|
295
|
+
providerOptions: {
|
|
296
|
+
openai: { itemId: "msg_latest", phase: "final_answer" },
|
|
297
|
+
},
|
|
298
|
+
},
|
|
289
299
|
{
|
|
290
300
|
type: "tool-call",
|
|
291
301
|
toolCallId: "call-a",
|
|
@@ -325,6 +335,9 @@ test("deep compact 删除 reasoning,并完整保留最新并行 tool transacti
|
|
|
325
335
|
const serialized = JSON.stringify(compacted);
|
|
326
336
|
assert.equal(serialized.includes("old reasoning"), false);
|
|
327
337
|
assert.equal(serialized.includes("latest reasoning"), false);
|
|
338
|
+
assert.equal(serialized.includes('"itemId":"rs_latest"'), true);
|
|
339
|
+
assert.equal(serialized.includes('"itemId":"msg_latest"'), false);
|
|
340
|
+
assert.equal(serialized.includes('"phase":"final_answer"'), true);
|
|
328
341
|
assert.equal(serialized.includes("latest request"), true);
|
|
329
342
|
assert.equal(serialized.includes("call-a"), true);
|
|
330
343
|
assert.equal(serialized.includes("call-b"), true);
|
|
@@ -31,8 +31,28 @@ function create_image_message() {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
function create_files(workspace_path) {
|
|
35
|
+
return {
|
|
36
|
+
root_path: workspace_path,
|
|
37
|
+
resolve_path: (...segments) => path.resolve(workspace_path, ...segments),
|
|
38
|
+
path_exists: async (file_path) => {
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(file_path);
|
|
41
|
+
return true;
|
|
42
|
+
} catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
ensure_directory: (directory_path) => fs.mkdir(directory_path, { recursive: true }),
|
|
47
|
+
write_file_atomically: (file_path, content) => fs.writeFile(file_path, content),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
34
51
|
function create_context(workspace_path = process.cwd()) {
|
|
35
|
-
return {
|
|
52
|
+
return {
|
|
53
|
+
workspace_path,
|
|
54
|
+
files: create_files(workspace_path),
|
|
55
|
+
};
|
|
36
56
|
}
|
|
37
57
|
|
|
38
58
|
function create_registry(plugin, workspace_path = process.cwd()) {
|
|
@@ -185,13 +205,119 @@ test("ImagePlugin image_result returns final message when succeeded", async () =
|
|
|
185
205
|
assert.equal(result.success, true);
|
|
186
206
|
assert.equal(result.data.job_id, "img_1");
|
|
187
207
|
assert.equal(result.data.status, "succeeded");
|
|
188
|
-
assert.
|
|
208
|
+
assert.deepEqual(result.data.result, message);
|
|
189
209
|
assert.deepEqual(result.messages, [{
|
|
190
210
|
role: "assistant",
|
|
191
211
|
parts: message.parts,
|
|
192
212
|
}]);
|
|
193
213
|
});
|
|
194
214
|
|
|
215
|
+
test("ImagePlugin image_result stores remote images locally and preserves source URLs", async (t) => {
|
|
216
|
+
const workspace_path = await fs.mkdtemp(path.join(os.tmpdir(), "image-plugin-result-"));
|
|
217
|
+
t.after(() => fs.rm(workspace_path, { recursive: true, force: true }));
|
|
218
|
+
t.mock.method(globalThis, "fetch", async (url) => {
|
|
219
|
+
const is_webp = String(url).endsWith("/second.webp");
|
|
220
|
+
return new Response(is_webp ? "webp-bytes" : "png-bytes", {
|
|
221
|
+
status: 200,
|
|
222
|
+
headers: {
|
|
223
|
+
"content-type": is_webp ? "image/webp" : "image/png",
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
const remote_message = {
|
|
229
|
+
id: "msg_remote_images",
|
|
230
|
+
role: "assistant",
|
|
231
|
+
parts: [
|
|
232
|
+
{
|
|
233
|
+
type: "file",
|
|
234
|
+
mediaType: "image/png",
|
|
235
|
+
url: "https://storage.example.com/first.png",
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
type: "file",
|
|
239
|
+
mediaType: "image/webp",
|
|
240
|
+
url: "https://storage.example.com/second.webp",
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
};
|
|
244
|
+
const plugin = new ImagePlugin({
|
|
245
|
+
image_create: () => ({ job_id: "img_remote", status: "queued" }),
|
|
246
|
+
image_result: () => ({
|
|
247
|
+
job_id: "img_remote",
|
|
248
|
+
status: "succeeded",
|
|
249
|
+
result: remote_message,
|
|
250
|
+
}),
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
const result = await plugin.actions.image_result.execute({
|
|
254
|
+
context: create_context(workspace_path),
|
|
255
|
+
input: { job_id: "img_remote" },
|
|
256
|
+
plugin_name: "image",
|
|
257
|
+
action_name: "image_result",
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
assert.equal(result.success, true);
|
|
261
|
+
assert.deepEqual(result.data.result.parts.map((part) => part.url), [
|
|
262
|
+
".downcity/image/results/img_remote/image_01.png",
|
|
263
|
+
".downcity/image/results/img_remote/image_02.webp",
|
|
264
|
+
]);
|
|
265
|
+
assert.deepEqual(
|
|
266
|
+
result.data.result.parts.map((part) => part.providerMetadata.downcity.source_url),
|
|
267
|
+
remote_message.parts.map((part) => part.url),
|
|
268
|
+
);
|
|
269
|
+
assert.equal(
|
|
270
|
+
await fs.readFile(path.join(workspace_path, result.data.result.parts[0].url), "utf8"),
|
|
271
|
+
"png-bytes",
|
|
272
|
+
);
|
|
273
|
+
assert.equal(
|
|
274
|
+
await fs.readFile(path.join(workspace_path, result.data.result.parts[1].url), "utf8"),
|
|
275
|
+
"webp-bytes",
|
|
276
|
+
);
|
|
277
|
+
assert.deepEqual(result.messages[0].parts, result.data.result.parts);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
test("ImagePlugin image_result keeps remote URL when local storage fails", async (t) => {
|
|
281
|
+
const workspace_path = await fs.mkdtemp(path.join(os.tmpdir(), "image-plugin-fallback-"));
|
|
282
|
+
t.after(() => fs.rm(workspace_path, { recursive: true, force: true }));
|
|
283
|
+
t.mock.method(globalThis, "fetch", async () => {
|
|
284
|
+
return new Response("unavailable", { status: 503 });
|
|
285
|
+
});
|
|
286
|
+
const remote_url = "https://storage.example.com/failed.png";
|
|
287
|
+
const plugin = new ImagePlugin({
|
|
288
|
+
image_create: () => ({ job_id: "img_fallback", status: "queued" }),
|
|
289
|
+
image_result: () => ({
|
|
290
|
+
job_id: "img_fallback",
|
|
291
|
+
status: "succeeded",
|
|
292
|
+
result: {
|
|
293
|
+
id: "msg_remote_fallback",
|
|
294
|
+
role: "assistant",
|
|
295
|
+
parts: [{ type: "file", mediaType: "image/png", url: remote_url }],
|
|
296
|
+
},
|
|
297
|
+
}),
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
const result = await plugin.actions.image_result.execute({
|
|
301
|
+
context: create_context(workspace_path),
|
|
302
|
+
input: { job_id: "img_fallback" },
|
|
303
|
+
plugin_name: "image",
|
|
304
|
+
action_name: "image_result",
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
assert.equal(result.success, true);
|
|
308
|
+
assert.equal(result.data.result.parts[0].url, remote_url);
|
|
309
|
+
assert.equal(
|
|
310
|
+
result.data.result.parts[0].providerMetadata.downcity.source_url,
|
|
311
|
+
remote_url,
|
|
312
|
+
);
|
|
313
|
+
assert.match(
|
|
314
|
+
result.data.result.parts[0].providerMetadata.downcity.localization_error,
|
|
315
|
+
/HTTP 503/,
|
|
316
|
+
);
|
|
317
|
+
assert.match(result.message, /kept as remote URLs/);
|
|
318
|
+
assert.deepEqual(result.messages[0].parts, result.data.result.parts);
|
|
319
|
+
});
|
|
320
|
+
|
|
195
321
|
test("ImagePlugin image_result reports failed terminal job", async () => {
|
|
196
322
|
const plugin = new ImagePlugin({
|
|
197
323
|
image_create: () => ({ job_id: "img_1", status: "queued", poll_after_ms: 1 }),
|
|
@@ -29,7 +29,7 @@ async function create_harness() {
|
|
|
29
29
|
return { root_path, store, messages };
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
test("Data URL
|
|
32
|
+
test("Data URL 落盘后保留用户文件名并保存相对路径", async () => {
|
|
33
33
|
const harness = await create_harness();
|
|
34
34
|
const result = await harness.messages.append_prompt_message({
|
|
35
35
|
turn_id: "turn-1",
|
|
@@ -49,8 +49,7 @@ test("Data URL 落盘后使用相对路径和真实文件名保存 Message", asy
|
|
|
49
49
|
assert.equal(part.type, "file");
|
|
50
50
|
assert.match(part.url, /^\.downcity\/agents\/attachment-test-agent\/sessions\/attachment-test-session\/attachments\/att_/);
|
|
51
51
|
assert.equal(part.url.endsWith(".png"), true);
|
|
52
|
-
assert.equal(part.filename,
|
|
53
|
-
assert.notEqual(part.filename, "diagram.png");
|
|
52
|
+
assert.equal(part.filename, "diagram.png");
|
|
54
53
|
assert.equal(
|
|
55
54
|
(await fs.readFile(path.join(harness.root_path, part.url))).toString(),
|
|
56
55
|
"hello",
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
to_executor_history,
|
|
21
21
|
to_executor_ui_message,
|
|
22
22
|
} from "../bin/session/messages/SessionMessageCodec.js";
|
|
23
|
+
import { to_model_messages } from "../bin/executor/messages/SessionMessageCodec.js";
|
|
23
24
|
import { convertToModelMessages } from "ai";
|
|
24
25
|
import { MockLanguageModelV3 } from "ai/test";
|
|
25
26
|
|
|
@@ -1199,6 +1200,103 @@ test("step 最终快照忽略没有 delta 的空 Text 与 Reasoning Part", async
|
|
|
1199
1200
|
assert.equal(assistant.parts[0].tool_call_id, "call-1");
|
|
1200
1201
|
});
|
|
1201
1202
|
|
|
1203
|
+
test("空 Reasoning 携带 Provider metadata 时作为跨轮重放协议 Part 保存", async () => {
|
|
1204
|
+
const { recorder, file_path } = await create_recorder("empty-provider-reasoning-test");
|
|
1205
|
+
const writer = await recorder.open_assistant_message({
|
|
1206
|
+
turn_id: "turn-empty-provider-reasoning",
|
|
1207
|
+
});
|
|
1208
|
+
const reasoning_metadata = {
|
|
1209
|
+
openai: { itemId: "rs_required" },
|
|
1210
|
+
};
|
|
1211
|
+
const message_metadata = {
|
|
1212
|
+
openai: { itemId: "msg_required", phase: "final_answer" },
|
|
1213
|
+
};
|
|
1214
|
+
|
|
1215
|
+
await writer.begin_step();
|
|
1216
|
+
await writer.apply_chunk({
|
|
1217
|
+
type: "reasoning-start",
|
|
1218
|
+
id: "reasoning-empty-provider",
|
|
1219
|
+
providerMetadata: reasoning_metadata,
|
|
1220
|
+
});
|
|
1221
|
+
await writer.apply_chunk({
|
|
1222
|
+
type: "reasoning-end",
|
|
1223
|
+
id: "reasoning-empty-provider",
|
|
1224
|
+
providerMetadata: reasoning_metadata,
|
|
1225
|
+
});
|
|
1226
|
+
await writer.apply_chunk({ type: "text-start", id: "text-provider" });
|
|
1227
|
+
await writer.apply_chunk({
|
|
1228
|
+
type: "text-delta",
|
|
1229
|
+
id: "text-provider",
|
|
1230
|
+
delta: "完成",
|
|
1231
|
+
});
|
|
1232
|
+
await writer.apply_chunk({
|
|
1233
|
+
type: "text-end",
|
|
1234
|
+
id: "text-provider",
|
|
1235
|
+
providerMetadata: message_metadata,
|
|
1236
|
+
});
|
|
1237
|
+
const final_parts = from_ui_assistant_parts([
|
|
1238
|
+
{
|
|
1239
|
+
type: "reasoning",
|
|
1240
|
+
text: "",
|
|
1241
|
+
state: "done",
|
|
1242
|
+
providerMetadata: reasoning_metadata,
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
type: "text",
|
|
1246
|
+
text: "完成",
|
|
1247
|
+
state: "done",
|
|
1248
|
+
providerMetadata: message_metadata,
|
|
1249
|
+
},
|
|
1250
|
+
]);
|
|
1251
|
+
assert.deepEqual(final_parts.map((part) => part.type), ["reasoning", "text"]);
|
|
1252
|
+
await writer.finish_step(final_parts);
|
|
1253
|
+
await writer.complete();
|
|
1254
|
+
|
|
1255
|
+
const assistant = (await read_jsonl(file_path))[0];
|
|
1256
|
+
assert.deepEqual(assistant.parts.map((part) => part.type), ["reasoning", "text"]);
|
|
1257
|
+
assert.equal(assistant.parts[0].text, "");
|
|
1258
|
+
assert.deepEqual(assistant.parts[0].provider_metadata, reasoning_metadata);
|
|
1259
|
+
assert.deepEqual(assistant.parts[1].provider_metadata, message_metadata);
|
|
1260
|
+
|
|
1261
|
+
const restored = to_executor_ui_message(assistant);
|
|
1262
|
+
const model_messages = await to_model_messages([restored], {});
|
|
1263
|
+
const model_parts = model_messages.flatMap((message) =>
|
|
1264
|
+
Array.isArray(message.content) ? message.content : []
|
|
1265
|
+
);
|
|
1266
|
+
assert.deepEqual(model_parts.map((part) => part.type), ["reasoning", "text"]);
|
|
1267
|
+
assert.deepEqual(model_parts[0].providerOptions, reasoning_metadata);
|
|
1268
|
+
assert.deepEqual(model_parts[1].providerOptions, message_metadata);
|
|
1269
|
+
});
|
|
1270
|
+
|
|
1271
|
+
test("旧 Session 缺少 Reasoning 协议 Part 时移除孤立 msg_* 引用", async () => {
|
|
1272
|
+
const model_messages = await to_model_messages([{
|
|
1273
|
+
id: "assistant-legacy",
|
|
1274
|
+
role: "assistant",
|
|
1275
|
+
metadata: {
|
|
1276
|
+
v: 1,
|
|
1277
|
+
ts: 1,
|
|
1278
|
+
session_id: "legacy-session",
|
|
1279
|
+
source: "egress",
|
|
1280
|
+
kind: "normal",
|
|
1281
|
+
},
|
|
1282
|
+
parts: [{
|
|
1283
|
+
type: "text",
|
|
1284
|
+
text: "已持久化的回复",
|
|
1285
|
+
state: "done",
|
|
1286
|
+
providerMetadata: {
|
|
1287
|
+
openai: { itemId: "msg_orphaned", phase: "final_answer" },
|
|
1288
|
+
},
|
|
1289
|
+
}],
|
|
1290
|
+
}], {});
|
|
1291
|
+
const text_part = model_messages
|
|
1292
|
+
.flatMap((message) => Array.isArray(message.content) ? message.content : [])
|
|
1293
|
+
.find((part) => part.type === "text");
|
|
1294
|
+
assert.equal(text_part.text, "已持久化的回复");
|
|
1295
|
+
assert.deepEqual(text_part.providerOptions, {
|
|
1296
|
+
openai: { phase: "final_answer" },
|
|
1297
|
+
});
|
|
1298
|
+
});
|
|
1299
|
+
|
|
1202
1300
|
test("空 Text Start 不会抢占后续 Tool 的真实顺序", async () => {
|
|
1203
1301
|
const { recorder, events, file_path } = await create_recorder("deferred-text-order-test");
|
|
1204
1302
|
const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
|
|
@@ -84,7 +84,9 @@ export function deep_compact_model_messages(
|
|
|
84
84
|
const depth = Math.max(0, Math.min(8, Math.floor(compact_depth)));
|
|
85
85
|
const pruned_messages = pruneMessages({
|
|
86
86
|
messages,
|
|
87
|
-
|
|
87
|
+
// Reasoning 由本模块在确定最新 Tool 事务后再清理,避免先丢失
|
|
88
|
+
// OpenAI Responses API 中与 Tool item 原子关联的协议 Part。
|
|
89
|
+
reasoning: "none",
|
|
88
90
|
// 工具事务由本模块按 toolCallId/approvalId 选择;先让 SDK 保留完整关联,
|
|
89
91
|
// 避免 approval response 作为最后一条消息时 SDK 丢掉更早的 tool-call。
|
|
90
92
|
toolCalls: "none",
|
|
@@ -343,25 +345,38 @@ function compact_retained_message(
|
|
|
343
345
|
content: fold_compacted_text(message.content, message_limit),
|
|
344
346
|
} as ModelMessage;
|
|
345
347
|
}
|
|
346
|
-
const
|
|
348
|
+
const retained_non_reasoning_parts = message.content.filter((part) => {
|
|
349
|
+
if (part.type === "reasoning") return false;
|
|
350
|
+
if (part.type === "tool-call" || part.type === "tool-result") {
|
|
351
|
+
return selected_tool_call_ids.has(part.toolCallId);
|
|
352
|
+
}
|
|
353
|
+
if (part.type === "tool-approval-request") {
|
|
354
|
+
return selected_tool_call_ids.has(part.toolCallId);
|
|
355
|
+
}
|
|
356
|
+
if (part.type === "tool-approval-response") {
|
|
357
|
+
const tool_call_id = approval_to_tool_call.get(part.approvalId);
|
|
358
|
+
return Boolean(tool_call_id && selected_tool_call_ids.has(tool_call_id));
|
|
359
|
+
}
|
|
360
|
+
return true;
|
|
361
|
+
});
|
|
362
|
+
const requires_provider_reasoning = retained_non_reasoning_parts.some(
|
|
363
|
+
(part) =>
|
|
364
|
+
(part.type === "tool-call" || part.type === "tool-result") &&
|
|
365
|
+
has_openai_item_reference(part as unknown as Record<string, unknown>),
|
|
366
|
+
);
|
|
367
|
+
const relevant_parts = message.content.filter((part) =>
|
|
368
|
+
part.type !== "reasoning" ||
|
|
369
|
+
(requires_provider_reasoning &&
|
|
370
|
+
has_openai_reasoning_replay_data(part as unknown as Record<string, unknown>))
|
|
371
|
+
);
|
|
347
372
|
const part_limit = Math.max(
|
|
348
373
|
MIN_FOLDED_PART_CHARS,
|
|
349
374
|
Math.floor(message_limit / Math.max(1, relevant_parts.length)),
|
|
350
375
|
);
|
|
351
376
|
const content = relevant_parts
|
|
352
|
-
.filter((part) =>
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}
|
|
356
|
-
if (part.type === "tool-approval-request") {
|
|
357
|
-
return selected_tool_call_ids.has(part.toolCallId);
|
|
358
|
-
}
|
|
359
|
-
if (part.type === "tool-approval-response") {
|
|
360
|
-
const tool_call_id = approval_to_tool_call.get(part.approvalId);
|
|
361
|
-
return Boolean(tool_call_id && selected_tool_call_ids.has(tool_call_id));
|
|
362
|
-
}
|
|
363
|
-
return true;
|
|
364
|
-
})
|
|
377
|
+
.filter((part) =>
|
|
378
|
+
part.type === "reasoning" || retained_non_reasoning_parts.includes(part)
|
|
379
|
+
)
|
|
365
380
|
.map((part) =>
|
|
366
381
|
compact_model_part(
|
|
367
382
|
part as unknown as Record<string, unknown>,
|
|
@@ -380,8 +395,14 @@ function compact_model_part(
|
|
|
380
395
|
return {
|
|
381
396
|
...part,
|
|
382
397
|
text: fold_compacted_text(String(part.text || ""), part_limit),
|
|
398
|
+
...without_openai_item_reference(part),
|
|
383
399
|
};
|
|
384
400
|
}
|
|
401
|
+
if (part.type === "reasoning") {
|
|
402
|
+
// 压缩不保留可见思维文本,但必须保留与最新 Tool 事务关联的
|
|
403
|
+
// Responses API itemId / encrypted content,否则 Provider 会拒绝孤立的 Tool item。
|
|
404
|
+
return { ...part, text: "" };
|
|
405
|
+
}
|
|
385
406
|
if (part.type === "tool-call") {
|
|
386
407
|
return {
|
|
387
408
|
...part,
|
|
@@ -420,6 +441,54 @@ function compact_model_part(
|
|
|
420
441
|
return part;
|
|
421
442
|
}
|
|
422
443
|
|
|
444
|
+
/** 判断 Part 是否引用 OpenAI Responses API 中已存储的 item。 */
|
|
445
|
+
function has_openai_item_reference(part: Record<string, unknown>): boolean {
|
|
446
|
+
const provider_options = read_record(part.providerOptions);
|
|
447
|
+
const openai_options = read_record(provider_options?.openai);
|
|
448
|
+
return typeof openai_options?.itemId === "string" && openai_options.itemId.length > 0;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/** 判断空 Reasoning 是否仍携带可用于跨轮重放的 Provider 协议数据。 */
|
|
452
|
+
function has_openai_reasoning_replay_data(part: Record<string, unknown>): boolean {
|
|
453
|
+
const provider_options = read_record(part.providerOptions);
|
|
454
|
+
const openai_options = read_record(provider_options?.openai);
|
|
455
|
+
return (
|
|
456
|
+
(typeof openai_options?.itemId === "string" && openai_options.itemId.length > 0) ||
|
|
457
|
+
(typeof openai_options?.reasoningEncryptedContent === "string" &&
|
|
458
|
+
openai_options.reasoningEncryptedContent.length > 0)
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* 压缩后的 Text 已经是新的语义投影,不能继续引用 Provider 中的原始 msg_* item。
|
|
464
|
+
*/
|
|
465
|
+
function without_openai_item_reference(
|
|
466
|
+
part: Record<string, unknown>,
|
|
467
|
+
): Pick<Record<string, unknown>, "providerOptions"> | Record<string, never> {
|
|
468
|
+
const provider_options = read_record(part.providerOptions);
|
|
469
|
+
const openai_options = read_record(provider_options?.openai);
|
|
470
|
+
if (!provider_options || !openai_options || !("itemId" in openai_options)) {
|
|
471
|
+
return {};
|
|
472
|
+
}
|
|
473
|
+
const { itemId: _item_id, ...remaining_openai_options } = openai_options;
|
|
474
|
+
const next_provider_options = { ...provider_options };
|
|
475
|
+
if (Object.keys(remaining_openai_options).length > 0) {
|
|
476
|
+
next_provider_options.openai = remaining_openai_options;
|
|
477
|
+
} else {
|
|
478
|
+
delete next_provider_options.openai;
|
|
479
|
+
}
|
|
480
|
+
return Object.keys(next_provider_options).length > 0
|
|
481
|
+
? { providerOptions: next_provider_options }
|
|
482
|
+
: { providerOptions: undefined };
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/** 安全读取普通 JSON object。 */
|
|
486
|
+
function read_record(value: unknown): Record<string, unknown> | undefined {
|
|
487
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
488
|
+
? value as Record<string, unknown>
|
|
489
|
+
: undefined;
|
|
490
|
+
}
|
|
491
|
+
|
|
423
492
|
function fold_compacted_value(value: unknown, max_chars: number): unknown {
|
|
424
493
|
const serialized = safe_stringify(value);
|
|
425
494
|
if (serialized.length <= max_chars) return value;
|
|
@@ -121,7 +121,7 @@ async function hydrateFileUrlPart(
|
|
|
121
121
|
* 关键点(中文)
|
|
122
122
|
* - 只有 Data URL 会在此处落盘;远程 URL 和本地路径保持引用不变。
|
|
123
123
|
* - 附件成功落盘后才把 URL 替换为相对 Workspace 根目录的路径。
|
|
124
|
-
* - canonical filename
|
|
124
|
+
* - canonical filename 保留调用侧传入的用户可见文件名;真实落盘路径只写入 url。
|
|
125
125
|
*/
|
|
126
126
|
export async function persist_user_prompt_file_parts(
|
|
127
127
|
parts: SessionUserMessagePart[],
|
|
@@ -148,11 +148,7 @@ export async function persist_user_prompt_file_parts(
|
|
|
148
148
|
media_type: String(file_part.mediaType || "").trim(),
|
|
149
149
|
...(file_part.filename ? { filename: file_part.filename } : {}),
|
|
150
150
|
});
|
|
151
|
-
out.push({
|
|
152
|
-
...file_part,
|
|
153
|
-
url: stored_path,
|
|
154
|
-
filename: path.basename(stored_path),
|
|
155
|
-
} as SessionUserMessagePart);
|
|
151
|
+
out.push({ ...file_part, url: stored_path } as SessionUserMessagePart);
|
|
156
152
|
}
|
|
157
153
|
|
|
158
154
|
return out;
|