@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.
Files changed (30) hide show
  1. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -1
  2. package/bin/executor/core-engine/CoreEngineContextCompaction.js +62 -6
  3. package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -1
  4. package/bin/executor/messages/SessionAttachmentMapper.d.ts +1 -1
  5. package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
  6. package/bin/executor/messages/SessionAttachmentMapper.js +2 -6
  7. package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
  8. package/bin/executor/messages/SessionMessageCodec.d.ts.map +1 -1
  9. package/bin/executor/messages/SessionMessageCodec.js +63 -1
  10. package/bin/executor/messages/SessionMessageCodec.js.map +1 -1
  11. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -1
  12. package/bin/session/messages/SessionAssistantMessageWriter.js +10 -2
  13. package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -1
  14. package/bin/session/messages/SessionMessageCodec.d.ts.map +1 -1
  15. package/bin/session/messages/SessionMessageCodec.js +5 -3
  16. package/bin/session/messages/SessionMessageCodec.js.map +1 -1
  17. package/bin/workspace/tool/FileTools.js +1 -1
  18. package/bin/workspace/tool/FileTools.js.map +1 -1
  19. package/package.json +6 -6
  20. package/scripts/core-engine-context-compaction.test.mjs +15 -2
  21. package/scripts/image-plugin-job.test.mjs +128 -2
  22. package/scripts/session-attachments.test.mjs +2 -3
  23. package/scripts/session-messages.test.mjs +98 -0
  24. package/src/executor/core-engine/CoreEngineContextCompaction.ts +84 -15
  25. package/src/executor/messages/SessionAttachmentMapper.ts +2 -6
  26. package/src/executor/messages/SessionMessageCodec.ts +69 -1
  27. package/src/session/messages/SessionAssistantMessageWriter.ts +14 -2
  28. package/src/session/messages/SessionMessageCodec.ts +7 -3
  29. package/src/workspace/tool/FileTools.ts +1 -1
  30. 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,gQAAgQ;QAClQ,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"}
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.331",
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.168",
20
- "@downcity/type": "0.1.194",
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.32",
36
- "@downcity/sandbox-macos": "^0.1.32",
37
- "@downcity/sandbox-windows-mxc": "^0.1.32",
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
- { type: "reasoning", text: "latest reasoning".repeat(2_000) },
288
- { type: "text", text: "running tools" },
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 { workspace_path };
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.equal("result" in result.data, false);
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 落盘后使用相对路径和真实文件名保存 Message", async () => {
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, path.basename(part.url));
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
- reasoning: "all",
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 relevant_parts = message.content.filter((part) => part.type !== "reasoning");
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
- if (part.type === "tool-call" || part.type === "tool-result") {
354
- return selected_tool_call_ids.has(part.toolCallId);
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 始终使用落盘路径的 basename,避免展示名与真实文件名不一致。
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;