@downcity/agent 1.1.270 → 1.1.276

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 (35) hide show
  1. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  2. package/bin/executor/core-engine/CoreEngineRunner.js +18 -0
  3. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  4. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts +1 -1
  5. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts.map +1 -1
  6. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js +6 -4
  7. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js.map +1 -1
  8. package/bin/executor/types/SessionRun.d.ts +14 -1
  9. package/bin/executor/types/SessionRun.d.ts.map +1 -1
  10. package/bin/session/SessionMessages.d.ts +2 -0
  11. package/bin/session/SessionMessages.d.ts.map +1 -1
  12. package/bin/session/SessionMessages.js +21 -0
  13. package/bin/session/SessionMessages.js.map +1 -1
  14. package/bin/session/SessionTurn.d.ts.map +1 -1
  15. package/bin/session/SessionTurn.js +20 -7
  16. package/bin/session/SessionTurn.js.map +1 -1
  17. package/bin/session/messages/SessionAssistantMessageWriter.d.ts +21 -8
  18. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -1
  19. package/bin/session/messages/SessionAssistantMessageWriter.js +116 -23
  20. package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -1
  21. package/bin/types/executor/SessionRunContext.d.ts +21 -1
  22. package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
  23. package/package.json +3 -3
  24. package/scripts/core-engine-ui-stream-collector.test.mjs +38 -0
  25. package/scripts/executor-failure-result.test.mjs +104 -1
  26. package/scripts/session-messages.test.mjs +161 -2
  27. package/scripts/session-turn-failure.test.mjs +108 -1
  28. package/src/executor/core-engine/CoreEngineRunner.ts +23 -0
  29. package/src/executor/core-engine/CoreEngineUiStreamCollector.ts +6 -4
  30. package/src/executor/types/SessionRun.ts +20 -1
  31. package/src/session/SessionMessages.ts +31 -0
  32. package/src/session/SessionTurn.ts +19 -7
  33. package/src/session/messages/SessionAssistantMessageWriter.ts +143 -26
  34. package/src/types/executor/SessionRunContext.ts +26 -0
  35. package/tsconfig.tsbuildinfo +1 -1
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { UIMessageChunk } from "ai";
8
8
  import type { SessionMessages } from "../../session/SessionMessages.js";
9
- import type { SessionAssistantFilePart, SessionAssistantMessagePart, SessionAssistantToolPart } from "../../types/session/SessionMessage.js";
9
+ import type { SessionAssistantFilePart, SessionAssistantMessagePart } from "../../types/session/SessionMessage.js";
10
10
  import type { SessionToolInputReady } from "../../types/session/SessionTool.js";
11
11
  /** 单个 Assistant segment 的流式 writer。 */
12
12
  export declare class SessionAssistantMessageWriter {
@@ -14,22 +14,29 @@ export declare class SessionAssistantMessageWriter {
14
14
  private readonly recorder;
15
15
  private readonly pending_text_parts;
16
16
  private readonly active_text_part_ids;
17
+ private readonly current_step_part_ids;
17
18
  private write_chain;
19
+ private step_index;
20
+ private step_active;
18
21
  private closed;
19
22
  constructor(recorder: SessionMessages, message_id: string);
20
23
  /** 应用一个原始 AI SDK UI chunk。 */
21
24
  apply_chunk(chunk: UIMessageChunk): Promise<void>;
25
+ /** 建立一个独立模型 UI stream 的 canonical step 作用域。 */
26
+ begin_step(): Promise<void>;
27
+ /**
28
+ * 校验当前 step 的最终快照并原子补充 metadata。
29
+ *
30
+ * 最终快照不能创建、删除或重排 Part;任何不一致都表示 canonical chunk
31
+ * 链路不完整,必须让当前 Turn 失败。
32
+ */
33
+ finish_step(parts: SessionAssistantMessagePart[]): Promise<void>;
34
+ /** 释放异常结束的 step 作用域并保留已经写入的 canonical Parts。 */
35
+ abort_step(): Promise<void>;
22
36
  /** 在当前 Assistant writer 的单写者队列中应用原始 chunk。 */
23
37
  private apply_chunk_serialized;
24
38
  /** 写入一个完整 Assistant part。 */
25
39
  upsert_part(part: SessionAssistantMessagePart): Promise<void>;
26
- /**
27
- * 用 AI SDK 最终 UIMessage 中的 Tool 快照校准流式写入结果。
28
- *
29
- * 关键点(中文):最终快照只覆盖实际存在的字段;缺失 metadata 时继续保留
30
- * 流式阶段已经写入的 Provider 快照。
31
- */
32
- reconcile_final_tool_part(part: SessionAssistantToolPart): Promise<void>;
33
40
  /** Executor 在调用 Tool 实现前写入完整输入。 */
34
41
  prepare_tool_input(input: SessionToolInputReady): Promise<void>;
35
42
  /** 把最终结果中的文件补入当前 Assistant,并对流式已写入文件去重。 */
@@ -46,6 +53,12 @@ export declare class SessionAssistantMessageWriter {
46
53
  private current_message;
47
54
  /** 读取当前 Assistant 中的指定 Tool Part。 */
48
55
  private find_tool;
56
+ /** 校验并合并同一位置的 canonical Part 与 step 最终快照。 */
57
+ private merge_step_part;
58
+ /** 构造不包含正文与工具输出的结构化 step 快照错误。 */
59
+ private step_snapshot_error;
60
+ /** 清理当前 step 的临时关联状态。 */
61
+ private reset_step_state;
49
62
  /** 计算下一个不可变 Part 顺序号。 */
50
63
  private next_part_sequence;
51
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SessionAssistantMessageWriter.d.ts","sourceRoot":"","sources":["../../../src/session/messages/SessionAssistantMessageWriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,OAAO,KAAK,EACV,wBAAwB,EAExB,2BAA2B,EAE3B,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAG5E,uCAAuC;AACvC,qBAAa,6BAA6B;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAG/B;IACJ,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAKzD,8BAA8B;IACxB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,8CAA8C;YAChC,sBAAsB;IAqUpC,6BAA6B;IACvB,WAAW,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;OAKG;IACG,yBAAyB,CAC7B,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAYhB,mCAAmC;IAC7B,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,2CAA2C;IACrC,gBAAgB,CACpB,KAAK,EAAE,IAAI,CACT,wBAAwB,EACxB,UAAU,GAAG,YAAY,GAAG,mBAAmB,GAAG,KAAK,CACxD,GACA,OAAO,CAAC,IAAI,CAAC;IAqChB,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,gCAAgC;IAC1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,0CAA0C;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,mCAAmC;IAC7B,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,iCAAiC;IACjC,OAAO,CAAC,eAAe;IAQvB,qCAAqC;IACrC,OAAO,CAAC,SAAS;IAOjB,yBAAyB;IACzB,OAAO,CAAC,kBAAkB;IAO1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAY5B,uBAAuB;IACvB,OAAO,CAAC,mBAAmB;IAO3B,uCAAuC;YACzB,gBAAgB;IAuC9B,4BAA4B;YACd,WAAW;IAgBzB,wCAAwC;YAC1B,aAAa;IAM3B,kCAAkC;YACpB,gBAAgB;CAS/B"}
1
+ {"version":3,"file":"SessionAssistantMessageWriter.d.ts","sourceRoot":"","sources":["../../../src/session/messages/SessionAssistantMessageWriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,OAAO,KAAK,EACV,wBAAwB,EAExB,2BAA2B,EAG5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAG5E,uCAAuC;AACvC,qBAAa,6BAA6B;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAG/B;IACJ,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAKzD,8BAA8B;IACxB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,+CAA+C;IACzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;;;;OAKG;IACG,WAAW,CAAC,KAAK,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCtE,gDAAgD;IAC1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,8CAA8C;YAChC,sBAAsB;IAuUpC,6BAA6B;IACvB,WAAW,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE,mCAAmC;IAC7B,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,2CAA2C;IACrC,gBAAgB,CACpB,KAAK,EAAE,IAAI,CACT,wBAAwB,EACxB,UAAU,GAAG,YAAY,GAAG,mBAAmB,GAAG,KAAK,CACxD,GACA,OAAO,CAAC,IAAI,CAAC;IAsChB,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,gCAAgC;IAC1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,0CAA0C;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,mCAAmC;IAC7B,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,iCAAiC;IACjC,OAAO,CAAC,eAAe;IAQvB,qCAAqC;IACrC,OAAO,CAAC,SAAS;IAOjB,6CAA6C;IAC7C,OAAO,CAAC,eAAe;IAmDvB,kCAAkC;IAClC,OAAO,CAAC,mBAAmB;IAM3B,yBAAyB;IACzB,OAAO,CAAC,gBAAgB;IAOxB,yBAAyB;IACzB,OAAO,CAAC,kBAAkB;IAO1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAY5B,uBAAuB;IACvB,OAAO,CAAC,mBAAmB;IAO3B,uCAAuC;YACzB,gBAAgB;IAuC9B,4BAA4B;YACd,WAAW;IAgBzB,wCAAwC;YAC1B,aAAa;IAM3B,kCAAkC;YACpB,gBAAgB;CAQ/B"}
@@ -12,7 +12,10 @@ export class SessionAssistantMessageWriter {
12
12
  recorder;
13
13
  pending_text_parts = new Map();
14
14
  active_text_part_ids = new Map();
15
+ current_step_part_ids = new Set();
15
16
  write_chain = Promise.resolve();
17
+ step_index = 0;
18
+ step_active = false;
16
19
  closed = false;
17
20
  constructor(recorder, message_id) {
18
21
  this.recorder = recorder;
@@ -24,6 +27,57 @@ export class SessionAssistantMessageWriter {
24
27
  await this.apply_chunk_serialized(chunk);
25
28
  });
26
29
  }
30
+ /** 建立一个独立模型 UI stream 的 canonical step 作用域。 */
31
+ async begin_step() {
32
+ await this.enqueue_write(async () => {
33
+ if (this.closed)
34
+ throw new Error("Assistant Message writer is closed");
35
+ if (this.step_active) {
36
+ throw new Error("Assistant canonical step is already active");
37
+ }
38
+ this.step_index += 1;
39
+ this.step_active = true;
40
+ this.current_step_part_ids.clear();
41
+ this.pending_text_parts.clear();
42
+ this.active_text_part_ids.clear();
43
+ });
44
+ }
45
+ /**
46
+ * 校验当前 step 的最终快照并原子补充 metadata。
47
+ *
48
+ * 最终快照不能创建、删除或重排 Part;任何不一致都表示 canonical chunk
49
+ * 链路不完整,必须让当前 Turn 失败。
50
+ */
51
+ async finish_step(parts) {
52
+ await this.enqueue_write(async () => {
53
+ if (!this.step_active) {
54
+ throw new Error("Assistant canonical step is not active");
55
+ }
56
+ const current = this.current_message();
57
+ const current_step_parts = current.parts.filter((part) => this.current_step_part_ids.has(part.part_id) &&
58
+ part.type !== "step-start");
59
+ const final_step_parts = parts.filter((part) => part.type !== "step-start");
60
+ if (current_step_parts.length !== final_step_parts.length) {
61
+ throw this.step_snapshot_error(`part count ${current_step_parts.length} != ${final_step_parts.length}`);
62
+ }
63
+ const merged_parts = new Map();
64
+ for (let index = 0; index < current_step_parts.length; index += 1) {
65
+ const current_part = current_step_parts[index];
66
+ const final_part = final_step_parts[index];
67
+ merged_parts.set(current_part.part_id, this.merge_step_part(current_part, final_part, index));
68
+ }
69
+ await this.recorder.commit_assistant_step(this.message_id, current.parts.map((part) => merged_parts.get(part.part_id) || part));
70
+ this.reset_step_state();
71
+ });
72
+ }
73
+ /** 释放异常结束的 step 作用域并保留已经写入的 canonical Parts。 */
74
+ async abort_step() {
75
+ await this.enqueue_write(async () => {
76
+ if (!this.step_active)
77
+ return;
78
+ this.reset_step_state();
79
+ });
80
+ }
27
81
  /** 在当前 Assistant writer 的单写者队列中应用原始 chunk。 */
28
82
  async apply_chunk_serialized(chunk) {
29
83
  if (this.closed)
@@ -265,7 +319,7 @@ export class SessionAssistantMessageWriter {
265
319
  });
266
320
  return;
267
321
  case "source-url": {
268
- const part_id = `source:${chunk.sourceId}`;
322
+ const part_id = `source:${this.step_index}:${chunk.sourceId}`;
269
323
  const current_part = current.parts.find((part) => part.part_id === part_id);
270
324
  const provider_metadata = to_session_provider_metadata(chunk.providerMetadata);
271
325
  await this.upsert_part({
@@ -283,7 +337,7 @@ export class SessionAssistantMessageWriter {
283
337
  return;
284
338
  }
285
339
  case "source-document": {
286
- const part_id = `source:${chunk.sourceId}`;
340
+ const part_id = `source:${this.step_index}:${chunk.sourceId}`;
287
341
  const current_part = current.parts.find((part) => part.part_id === part_id);
288
342
  const provider_metadata = to_session_provider_metadata(chunk.providerMetadata);
289
343
  await this.upsert_part({
@@ -316,7 +370,9 @@ export class SessionAssistantMessageWriter {
316
370
  const data_id = typeof data_chunk.id === "string"
317
371
  ? data_chunk.id
318
372
  : undefined;
319
- const part_id = `data:${data_id ?? generateId()}`;
373
+ const part_id = data_id
374
+ ? `data:${this.step_index}:${data_id}`
375
+ : `data:${generateId()}`;
320
376
  const current_part = current.parts.find((part) => part.part_id === part_id);
321
377
  await this.upsert_part({
322
378
  part_id,
@@ -334,23 +390,8 @@ export class SessionAssistantMessageWriter {
334
390
  /** 写入一个完整 Assistant part。 */
335
391
  async upsert_part(part) {
336
392
  await this.recorder.update_assistant_part(this.message_id, part);
337
- }
338
- /**
339
- * 用 AI SDK 最终 UIMessage 中的 Tool 快照校准流式写入结果。
340
- *
341
- * 关键点(中文):最终快照只覆盖实际存在的字段;缺失 metadata 时继续保留
342
- * 流式阶段已经写入的 Provider 快照。
343
- */
344
- async reconcile_final_tool_part(part) {
345
- await this.enqueue_write(async () => {
346
- const current = this.find_tool(part.tool_call_id);
347
- await this.upsert_part({
348
- ...(current || {}),
349
- ...part,
350
- part_id: current?.part_id || `tool:${part.tool_call_id}`,
351
- sequence: current?.sequence || this.next_part_sequence(),
352
- });
353
- });
393
+ if (this.step_active)
394
+ this.current_step_part_ids.add(part.part_id);
354
395
  }
355
396
  /** Executor 在调用 Tool 实现前写入完整输入。 */
356
397
  async prepare_tool_input(input) {
@@ -371,6 +412,7 @@ export class SessionAssistantMessageWriter {
371
412
  const filename = String(input.filename || "").trim();
372
413
  const current = this.current_message();
373
414
  const existing = current.parts.find((part) => part.type === "file" &&
415
+ (!this.step_active || this.current_step_part_ids.has(part.part_id)) &&
374
416
  part.url === input.url &&
375
417
  part.media_type === input.media_type);
376
418
  if (existing?.type === "file") {
@@ -432,6 +474,58 @@ export class SessionAssistantMessageWriter {
432
474
  find_tool(tool_call_id) {
433
475
  return this.current_message().parts.find((part) => part.type === "tool" && part.tool_call_id === tool_call_id);
434
476
  }
477
+ /** 校验并合并同一位置的 canonical Part 与 step 最终快照。 */
478
+ merge_step_part(current_part, final_part, index) {
479
+ if (current_part.type !== final_part.type) {
480
+ throw this.step_snapshot_error(`part ${index + 1} type ${current_part.type} != ${final_part.type}`);
481
+ }
482
+ if ((current_part.type === "text" || current_part.type === "reasoning") &&
483
+ (final_part.type === "text" || final_part.type === "reasoning")) {
484
+ if (current_part.text !== final_part.text) {
485
+ throw this.step_snapshot_error(`part ${index + 1} text differs`);
486
+ }
487
+ }
488
+ else if (current_part.type === "tool" && final_part.type === "tool") {
489
+ if (current_part.tool_call_id !== final_part.tool_call_id) {
490
+ throw this.step_snapshot_error(`part ${index + 1} tool_call_id differs`);
491
+ }
492
+ }
493
+ else if (current_part.type === "file" && final_part.type === "file") {
494
+ if (current_part.url !== final_part.url ||
495
+ current_part.media_type !== final_part.media_type) {
496
+ throw this.step_snapshot_error(`part ${index + 1} file identity differs`);
497
+ }
498
+ }
499
+ else if (current_part.type === "source" && final_part.type === "source") {
500
+ if (current_part.source_type !== final_part.source_type ||
501
+ current_part.source_id !== final_part.source_id) {
502
+ throw this.step_snapshot_error(`part ${index + 1} source identity differs`);
503
+ }
504
+ }
505
+ else if (current_part.type === "data" && final_part.type === "data") {
506
+ if (current_part.data_type !== final_part.data_type ||
507
+ current_part.data_id !== final_part.data_id) {
508
+ throw this.step_snapshot_error(`part ${index + 1} data identity differs`);
509
+ }
510
+ }
511
+ return {
512
+ ...current_part,
513
+ ...final_part,
514
+ part_id: current_part.part_id,
515
+ sequence: current_part.sequence,
516
+ };
517
+ }
518
+ /** 构造不包含正文与工具输出的结构化 step 快照错误。 */
519
+ step_snapshot_error(detail) {
520
+ return new Error(`Assistant canonical step ${this.step_index} snapshot mismatch: ${detail}`);
521
+ }
522
+ /** 清理当前 step 的临时关联状态。 */
523
+ reset_step_state() {
524
+ this.step_active = false;
525
+ this.current_step_part_ids.clear();
526
+ this.pending_text_parts.clear();
527
+ this.active_text_part_ids.clear();
528
+ }
435
529
  /** 计算下一个不可变 Part 顺序号。 */
436
530
  next_part_sequence() {
437
531
  return this.current_message().parts.reduce((value, part) => Math.max(value, part.sequence + 1), 1);
@@ -453,7 +547,7 @@ export class SessionAssistantMessageWriter {
453
547
  }
454
548
  /** 构造当前流片段使用的临时关联键。 */
455
549
  source_text_part_id(type, chunk_id) {
456
- return `${type}:${chunk_id}`;
550
+ return `${this.step_index}:${type}:${chunk_id}`;
457
551
  }
458
552
  /** 在首个有效 Delta 到达时才固定文本 Part 的真实顺序。 */
459
553
  async ensure_text_part(part_id, type, provider_metadata) {
@@ -508,8 +602,7 @@ export class SessionAssistantMessageWriter {
508
602
  async close_serialized(status) {
509
603
  if (this.closed)
510
604
  return;
511
- this.pending_text_parts.clear();
512
- this.active_text_part_ids.clear();
605
+ this.reset_step_state();
513
606
  await this.recorder.complete_assistant_message(this.message_id, status);
514
607
  this.closed = true;
515
608
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionAssistantMessageWriter.js","sourceRoot":"","sources":["../../../src/session/messages/SessionAssistantMessageWriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAShD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,uCAAuC;AACvC,MAAM,OAAO,6BAA6B;IAC/B,UAAU,CAAS;IACX,QAAQ,CAAkB;IAC1B,kBAAkB,GAAG,IAAI,GAAG,EAG1C,CAAC;IACa,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1D,WAAW,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,QAAyB,EAAE,UAAkB;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,WAAW,CAAC,KAAqB;QACrC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IACtC,KAAK,CAAC,sBAAsB,CAAC,KAAqB;QACxD,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC;YAClB,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE;wBACnC,IAAI;wBACJ,iBAAiB,EAAE,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC;qBACxE,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,YAAY,CAAC;YAClB,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,gBAAgB,CACzB,OAAO,EACP,IAAI,EACJ,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACrD,CAAC;gBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CACxC,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,EACJ,KAAK,CAAC,KAAK,CACZ,CAAC;gBACF,OAAO;YACT,CAAC;YACD,KAAK,UAAU,CAAC;YAChB,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gBACpE,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;oBACxD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC/E,MAAM,IAAI,CAAC,WAAW,CAAC;wBACrB,GAAG,IAAI;wBACP,KAAK,EAAE,MAAM;wBACb,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClE,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,sBAAsB,GAAG,4BAA4B,CACzD,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,IAAI,IAAI,EAAE,CAAC;oBACT,IACE,sBAAsB,KAAK,SAAS;wBACpC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACpC,KAAK,CAAC,KAAK,KAAK,SAAS;wBACzB,aAAa,KAAK,SAAS;wBAC3B,KAAK,CAAC,OAAO,KAAK,SAAS;wBAC3B,OAAO;oBACT,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;wBACvC,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,CAAC,sBAAsB,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE;4BAC5B,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;4BAC/C,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,KAAK,CAAC,QAAQ;oBACzB,KAAK,EAAE,iBAAiB;oBACxB,UAAU,EAAE,EAAE;oBACd,GAAG,CAAC,sBAAsB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE;wBAC5B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB;oBAAE,OAAO;gBACrD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;oBACvC,KAAK,EAAE,iBAAiB;oBACxB,UAAU,EAAE,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE;iBAC/D,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,sBAAsB,GAAG,4BAA4B,CACzD,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;oBAC7C,IACE,sBAAsB,KAAK,SAAS;wBACpC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACpC,KAAK,CAAC,KAAK,KAAK,SAAS;wBACzB,aAAa,KAAK,SAAS;wBAC3B,KAAK,CAAC,OAAO,KAAK,SAAS;wBAC3B,OAAO;oBACT,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;wBACvC,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,CAAC,sBAAsB,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE;4BAC5B,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;4BAC/C,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,KAAK,CAAC,QAAQ;oBACzB,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;oBACzC,GAAG,CAAC,sBAAsB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE;wBAC5B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,sBAAsB,GAAG,4BAA4B,CACzD,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,KAAK,CAAC,QAAQ;oBACzB,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;oBACzC,KAAK,EAAE,KAAK,CAAC,SAAS;oBACtB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;wBAClF,CAAC,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;wBACtD,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,sBAAsB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE;wBAC5B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;oBACvC,KAAK,EAAE,mBAAmB;oBAC1B,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE;iBAC5C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,IACE,IAAI,EAAE,KAAK,KAAK,QAAQ;oBACxB,CAAC,IAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI,IAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC;oBACvE,OAAO;gBACT,MAAM,wBAAwB,GAAG,4BAA4B,CAC3D,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;oBACvC,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC3C,GAAG,CAAC,wBAAwB,KAAK,SAAS;wBACxC,CAAC,CAAC,EAAE,wBAAwB,EAAE;wBAC9B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;wBACjC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;wBACpC,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,wBAAwB,GAAG,4BAA4B,CAC3D,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;oBACvC,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,KAAK,CAAC,SAAS;oBACtB,GAAG,CAAC,wBAAwB,KAAK,SAAS;wBACxC,CAAC,CAAC,EAAE,wBAAwB,EAAE;wBAC9B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;oBACvC,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,oBAAoB;oBAC3B,QAAQ,EAAE;wBACR,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;wBACzB,WAAW,EACT,IAAI,EAAE,QAAQ,EAAE,WAAW,IAAI,YAAY,KAAK,CAAC,UAAU,EAAE;wBAC/D,QAAQ,EAAE,KAAK;qBAChB;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,gBAAgB,CAAC;oBAC1B,UAAU,EAAE,KAAK,CAAC,SAAS;oBAC3B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,iBAAiB,EAAE,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC;iBACxE,CAAC,CAAC;gBACH,OAAO;YACT,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gBAC5E,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC/E,MAAM,IAAI,CAAC,WAAW,CAAC;oBACrB,OAAO;oBACP,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC7D,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,QAAQ;oBACzB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,iBAAiB,KAAK,SAAS;wBACjC,CAAC,CAAC,EAAE,iBAAiB,EAAE;wBACvB,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gBAC5E,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC/E,MAAM,IAAI,CAAC,WAAW,CAAC;oBACrB,OAAO;oBACP,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC7D,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,KAAK,CAAC,QAAQ;oBACzB,UAAU,EAAE,KAAK,CAAC,SAAS;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,iBAAiB,KAAK,SAAS;wBACjC,CAAC,CAAC,EAAE,iBAAiB,EAAE;wBACvB,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,YAAY;gBACf,MAAM,IAAI,CAAC,WAAW,CAAC;oBACrB,OAAO,EAAE,QAAQ,UAAU,EAAE,EAAE;oBAC/B,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE;oBACnC,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;gBACH,OAAO;YACT,OAAO,CAAC,CAAC,CAAC;gBACR,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,MAAM,UAAU,GAAG,KAA2C,CAAC;oBAC/D,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI;wBAAE,OAAO;oBAC1C,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,EAAE,KAAK,QAAQ;wBAC/C,CAAC,CAAC,UAAU,CAAC,EAAE;wBACf,CAAC,CAAC,SAAS,CAAC;oBACd,MAAM,OAAO,GAAG,QAAQ,OAAO,IAAI,UAAU,EAAE,EAAE,CAAC;oBAClD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;oBAC5E,MAAM,IAAI,CAAC,WAAW,CAAC;wBACrB,OAAO;wBACP,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;wBAC7D,IAAI,EAAE,MAAM;wBACZ,SAAS,EAAE,KAAK,CAAC,IAAI;wBACrB,IAAI,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC5C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9C,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,WAAW,CAAC,IAAiC;QACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,yBAAyB,CAC7B,IAA8B;QAE9B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAClB,GAAG,IAAI;gBACP,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,YAAY,EAAE;gBACxD,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;aACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,kBAAkB,CAAC,KAA4B;QACnD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,iBAAiB,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CACb,sCAAsC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,EAAE,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE;gBACzC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,gBAAgB,CACpB,KAGC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,MAAM;YACpB,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YACtB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CACvC,CAAC;QACF,IAAI,QAAQ,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,IACE,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;gBACjE,KAAK,CAAC,iBAAiB,KAAK,SAAS,EACrC,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC;oBACrB,GAAG,QAAQ;oBACX,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;wBACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;wBAChD,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,QAAQ,UAAU,EAAE,EAAE;YAC/B,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE;YACnC,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC;IACzB,eAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,qCAAqC;IAC7B,SAAS,CAAC,YAAoB;QACpC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CACtC,CAAC,IAAI,EAAoC,EAAE,CACzC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAC7D,CAAC;IACJ,CAAC;IAED,yBAAyB;IACjB,kBAAkB;QACxB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAM,CACxC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EACnD,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAC1B,IAA0B,EAC1B,QAAgB;QAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uBAAuB;IACf,mBAAmB,CACzB,IAA0B,EAC1B,QAAgB;QAEhB,OAAO,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,uCAAuC;IAC/B,KAAK,CAAC,gBAAgB,CAC5B,OAAe,EACf,IAA0B,EAC1B,iBAAiE;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CACnC,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,IACE,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;gBAC3D,iBAAiB,KAAK,SAAS,EAC/B,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE;YACnC,IAAI;YACJ,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,WAAW;YAClB,GAAG,CAAC,iBAAiB,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,iBAAiB,EAAE;gBACvB,CAAC,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;oBAClD,CAAC,CAAC,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,4BAA4B;IACpB,KAAK,CAAC,WAAW,CACvB,YAAoB,EACpB,OACsG;QAEtG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClB,OAAO,EAAE,QAAQ,YAAY,EAAE;YAC/B,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACxD,IAAI,EAAE,MAAM;YACZ,YAAY;YACZ,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IAChC,KAAK,CAAC,aAAa,CAAC,SAA8B;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC;IAChB,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,gBAAgB,CAC5B,MAA0C;QAE1C,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"SessionAssistantMessageWriter.js","sourceRoot":"","sources":["../../../src/session/messages/SessionAssistantMessageWriter.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * - tool 回调通过单次 tool execution context 显式读取该对象。
8
8
  */
9
9
  import type { AgentSessionActionCallback, AgentSessionActionEvent, AgentSessionActionRecord } from "../../types/sdk/AgentSessionAction.js";
10
- import type { SessionAssistantStepCallback, SessionUiMessageChunkCallback } from "../../executor/types/SessionRun.js";
10
+ import type { SessionAssistantStepCallback, SessionUiMessageChunkCallback, SessionUiMessageStepAbortCallback, SessionUiMessageStepFinishCallback, SessionUiMessageStepStartCallback } from "../../executor/types/SessionRun.js";
11
11
  import type { SessionUserMessageV1 } from "../../executor/types/SessionRecords.js";
12
12
  import type { FileUIPart } from "ai";
13
13
  import type { AgentPluginExecutionLease } from "../../types/plugin/PluginRuntime.js";
@@ -87,6 +87,26 @@ export interface SessionRunContext {
87
87
  * - 用于把底层模型 UI chunk 旁路输出到订阅流或 transport。
88
88
  */
89
89
  onUiMessageChunkCallback?: SessionUiMessageChunkCallback;
90
+ /**
91
+ * 单个模型 UI stream 开始回调。
92
+ *
93
+ * 关键点(中文):Session writer 用它建立独立 step 作用域,确保重复 chunk id
94
+ * 不会跨模型调用复用同一个 canonical Part。
95
+ */
96
+ on_ui_message_step_start?: SessionUiMessageStepStartCallback;
97
+ /**
98
+ * 单个模型 UI stream 完成快照回调。
99
+ *
100
+ * 关键点(中文):最终快照只校验当前 step 的顺序并补充 metadata,不能创建、
101
+ * 删除或重排 canonical Part。
102
+ */
103
+ on_ui_message_step_finish?: SessionUiMessageStepFinishCallback;
104
+ /**
105
+ * 单个模型 UI stream 异常结束回调。
106
+ *
107
+ * 关键点(中文):用于释放 step 作用域;已经持久化的流式 Part 继续保留。
108
+ */
109
+ on_ui_message_step_abort?: SessionUiMessageStepAbortCallback;
90
110
  /** Tool 实现开始执行前提交完整输入的顺序屏障。 */
91
111
  on_tool_input_ready?: (input: SessionToolInputReady) => Promise<void>;
92
112
  /** 当前 Session 拥有的 unrestricted 审批网关。 */
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRunContext.d.ts","sourceRoot":"","sources":["../../../src/types/executor/SessionRunContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEvD;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC;IAEpC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5C,mDAAmD;IACnD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAEzC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAC;IAEvD;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,6BAA6B,CAAC;IAEzD,+BAA+B;IAC/B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,wCAAwC;IACxC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;IAE9C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAE9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;;OAMG;IACH,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,6BAA6B,EAAE,oBAAoB,EAAE,CAAC;IAEtD;;;;;;OAMG;IACH,yBAAyB,EAAE,UAAU,EAAE,CAAC;CACzC;AAED,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GACzB,CAAC"}
1
+ {"version":3,"file":"SessionRunContext.d.ts","sourceRoot":"","sources":["../../../src/types/executor/SessionRunContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEvD;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC;IAEpC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5C,mDAAmD;IACnD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAEzC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAC;IAEvD;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,6BAA6B,CAAC;IAEzD;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,iCAAiC,CAAC;IAE7D;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,kCAAkC,CAAC;IAE/D;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,iCAAiC,CAAC;IAE7D,+BAA+B;IAC/B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,wCAAwC;IACxC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;IAE9C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAE9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;;OAMG;IACH,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,6BAA6B,EAAE,oBAAoB,EAAE,CAAC;IAEtD;;;;;;OAMG;IACH,yBAAyB,EAAE,UAAU,EAAE,CAAC;CACzC;AAED,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@downcity/agent",
3
- "version": "1.1.270",
3
+ "version": "1.1.276",
4
4
  "type": "module",
5
5
  "description": "Downcity Agent 运行时 — 单 Agent 执行壳与本机 RPC 能力",
6
6
  "main": "./bin/index.js",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@downcity/shell": "^0.1.125",
16
- "@downcity/type": "0.1.155",
15
+ "@downcity/shell": "^0.1.129",
16
+ "@downcity/type": "0.1.159",
17
17
  "ai": "^6.0.193",
18
18
  "commander": "^15.0.0",
19
19
  "dotenv": "^17.4.2",
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @file 验证 UI stream 收敛时 canonical message 回调失败会终止执行。
3
+ */
4
+
5
+ import assert from "node:assert/strict";
6
+ import test from "node:test";
7
+
8
+ import { collectFinalAssistantMessageFromUiStream } from "../bin/executor/core-engine/CoreEngineUiStreamCollector.js";
9
+
10
+ test("canonical message chunk 写入失败时拒绝继续完成 turn", async () => {
11
+ const abort_controller = new AbortController();
12
+ abort_controller.abort();
13
+ const result = {
14
+ toUIMessageStream: () => ({
15
+ async *[Symbol.asyncIterator]() {
16
+ yield { type: "text-delta", id: "text-1", delta: "partial" };
17
+ },
18
+ }),
19
+ };
20
+
21
+ await assert.rejects(
22
+ collectFinalAssistantMessageFromUiStream({
23
+ result,
24
+ sessionId: "callback-failure-test",
25
+ abortSignal: abort_controller.signal,
26
+ logger: { log: async () => {} },
27
+ buildFallbackAssistantMessage: (text) => ({
28
+ id: "assistant-1",
29
+ role: "assistant",
30
+ parts: [{ type: "text", text }],
31
+ }),
32
+ onUiMessageChunkCallback: async () => {
33
+ throw new Error("canonical write failed");
34
+ },
35
+ }),
36
+ /canonical write failed/,
37
+ );
38
+ });
@@ -9,12 +9,57 @@ import { MockLanguageModelV3 } from "ai/test";
9
9
  import { CoreEngineRunner } from "../bin/executor/core-engine/CoreEngineRunner.js";
10
10
  import { ExecutorRecoveryPolicy } from "../bin/executor/services/ExecutorRecoveryPolicy.js";
11
11
 
12
- function create_run_context() {
12
+ function create_run_context(overrides = {}) {
13
13
  return {
14
14
  sessionId: "executor-failure-test",
15
15
  injectedUserMessages: [],
16
16
  deferredPersistedUserMessages: [],
17
17
  pendingAssistantFileParts: [],
18
+ ...overrides,
19
+ };
20
+ }
21
+
22
+ function create_text_stream(text) {
23
+ return {
24
+ stream: new ReadableStream({
25
+ start(controller) {
26
+ controller.enqueue({ type: "stream-start", warnings: [] });
27
+ controller.enqueue({ type: "text-start", id: "text-1" });
28
+ controller.enqueue({ type: "text-delta", id: "text-1", delta: text });
29
+ controller.enqueue({ type: "text-end", id: "text-1" });
30
+ controller.enqueue({
31
+ type: "finish",
32
+ finishReason: { unified: "stop", raw: "stop" },
33
+ usage: {
34
+ inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },
35
+ outputTokens: { total: 0, text: 0, reasoning: 0 },
36
+ },
37
+ });
38
+ controller.close();
39
+ },
40
+ }),
41
+ };
42
+ }
43
+
44
+ function create_runner_input(model, run_context) {
45
+ const messages = [{
46
+ id: "user-1",
47
+ role: "user",
48
+ metadata: {
49
+ v: 1,
50
+ ts: 1,
51
+ sessionId: "executor-failure-test",
52
+ source: "ingress",
53
+ kind: "normal",
54
+ },
55
+ parts: [{ type: "text", text: "hello" }],
56
+ }];
57
+ return {
58
+ execute_input: { query: "hello", system: [], messages, tools: {} },
59
+ model,
60
+ run_context,
61
+ resolve_step_inputs: async () => ({ model, system: [], tools: {} }),
62
+ reload_history: async () => messages,
18
63
  };
19
64
  }
20
65
 
@@ -56,6 +101,64 @@ test("CoreEngine Provider 失败时只返回结构化错误", async () => {
56
101
  assert.equal(result.assistantMessage, undefined);
57
102
  });
58
103
 
104
+ test("CoreEngine 成功流按 start、chunks、finish 完成 canonical step", async () => {
105
+ const events = [];
106
+ const model = new MockLanguageModelV3({
107
+ modelId: "canonical-step-model",
108
+ doStream: async () => create_text_stream("done"),
109
+ });
110
+ const runner = new CoreEngineRunner({
111
+ session_id: "executor-failure-test",
112
+ logger: { log: async () => {} },
113
+ should_compact_on_error: () => false,
114
+ });
115
+ const result = await runner.run(create_runner_input(
116
+ model,
117
+ create_run_context({
118
+ on_ui_message_step_start: async () => events.push("start"),
119
+ onUiMessageChunkCallback: async (chunk) => events.push(chunk.type),
120
+ on_ui_message_step_finish: async (message) => {
121
+ events.push(`finish:${message.parts.map((part) => part.type).join(",")}`);
122
+ },
123
+ on_ui_message_step_abort: async () => events.push("abort"),
124
+ }),
125
+ ));
126
+
127
+ assert.equal(result.success, true);
128
+ assert.equal(events[0], "start");
129
+ assert.equal(events.includes("text-delta"), true);
130
+ assert.match(events.at(-1), /^finish:/);
131
+ assert.equal(events.includes("abort"), false);
132
+ });
133
+
134
+ test("CoreEngine chunk 写入失败时中止 canonical step", async () => {
135
+ const events = [];
136
+ const model = new MockLanguageModelV3({
137
+ modelId: "canonical-step-failure-model",
138
+ doStream: async () => create_text_stream("partial"),
139
+ });
140
+ const runner = new CoreEngineRunner({
141
+ session_id: "executor-failure-test",
142
+ logger: { log: async () => {} },
143
+ should_compact_on_error: () => false,
144
+ });
145
+ const result = await runner.run(create_runner_input(
146
+ model,
147
+ create_run_context({
148
+ on_ui_message_step_start: async () => events.push("start"),
149
+ onUiMessageChunkCallback: async () => {
150
+ throw new Error("canonical write failed");
151
+ },
152
+ on_ui_message_step_finish: async () => events.push("finish"),
153
+ on_ui_message_step_abort: async () => events.push("abort"),
154
+ }),
155
+ ));
156
+
157
+ assert.equal(result.success, false);
158
+ assert.match(result.error, /canonical write failed/);
159
+ assert.deepEqual(events, ["start", "abort"]);
160
+ });
161
+
59
162
  test("恢复策略捕获普通异常后只返回结构化错误", async () => {
60
163
  const policy = new ExecutorRecoveryPolicy({
61
164
  session_id: "executor-failure-test",