@deepseek-ai/dsh-client-ui-trajectory 0.1.5-rc.2 → 0.1.6-alpha.2

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/lib/client.js CHANGED
@@ -41,6 +41,15 @@ window.__ModuleLoader__.load({
41
41
  return (0, _deepseek_ai_dsh_client_store.createSnapshotStore)(false, { persist: { name: "dsh.trajectory.duration" } });
42
42
  }
43
43
  //#endregion
44
+ //#region lib/types/client/string-wrapping-store.js
45
+ /**
46
+ * Create the browser-wide default for expanded JSON strings.
47
+ * @returns A persisted preference sampled only when a string is expanded.
48
+ */
49
+ function createTrajectoryStringWrappingStore() {
50
+ return (0, _deepseek_ai_dsh_client_store.createSnapshotStore)(false, { persist: { name: "dsh.trajectory.jsonStringWrapping" } });
51
+ }
52
+ //#endregion
44
53
  //#region lib/types/client/locales.js
45
54
  /** `trajectory` namespace dictionaries for the complete trajectory surface. */
46
55
  /** Dictionary namespace owned by this plugin. */
@@ -79,7 +88,7 @@ window.__ModuleLoader__.load({
79
88
  "turn.label": "第 {turn} 轮",
80
89
  "section.betweenTurns": "轮次之间",
81
90
  "group.message": "消息",
82
- "group.step": "步骤 {step}",
91
+ "group.step": "第 {step} 步",
83
92
  "group.compaction": "压缩 {seq}",
84
93
  "status.failed": "失败",
85
94
  "status.pending": "等待中",
@@ -156,6 +165,13 @@ window.__ModuleLoader__.load({
156
165
  "record.payloadJson": "参数 JSON",
157
166
  "record.outputJson": "结果 JSON",
158
167
  "record.thinking": "思考",
168
+ "record.wrapLines": "自动换行",
169
+ "code.source": "代码",
170
+ "code.output": "输出",
171
+ "code.copySource": "复制代码",
172
+ "code.copyOutput": "复制输出",
173
+ "code.originalJson": "原始 JSON",
174
+ "code.running": "执行中…",
159
175
  "record.systemPromptMissing": "本次请求没有系统提示词",
160
176
  "record.toolsMissing": "本次请求没有工具",
161
177
  "record.systemPrompt": "系统提示词",
@@ -215,7 +231,9 @@ window.__ModuleLoader__.load({
215
231
  "layout.compactionFailed": "上下文压缩失败",
216
232
  "layout.compacted": "上下文已压缩",
217
233
  "layout.toolCallOnly": "仅工具调用",
218
- "layout.imageOnly": "图片 ×{count}",
234
+ "attachment.list": "附件",
235
+ "attachment.imageName": "图片 {index}",
236
+ "layout.imageCount": "图片 ×{count}",
219
237
  "layout.fileAttachments": "文件 ×{count}",
220
238
  "layout.initialSystemPrompt": "初始系统提示词",
221
239
  "layout.systemPromptUpdated": "系统提示词已更新",
@@ -334,6 +352,13 @@ window.__ModuleLoader__.load({
334
352
  "record.payloadJson": "Payload JSON",
335
353
  "record.outputJson": "Result JSON",
336
354
  "record.thinking": "Thinking",
355
+ "record.wrapLines": "Wrap lines",
356
+ "code.source": "Code",
357
+ "code.output": "Output",
358
+ "code.copySource": "Copy code",
359
+ "code.copyOutput": "Copy output",
360
+ "code.originalJson": "Original JSON",
361
+ "code.running": "Running…",
337
362
  "record.systemPromptMissing": "No system prompt in this request",
338
363
  "record.toolsMissing": "No tools in this request",
339
364
  "record.systemPrompt": "System Prompt",
@@ -393,7 +418,9 @@ window.__ModuleLoader__.load({
393
418
  "layout.compactionFailed": "Compaction failed",
394
419
  "layout.compacted": "Context compacted",
395
420
  "layout.toolCallOnly": "Tool call only",
396
- "layout.imageOnly": "Images ×{count}",
421
+ "attachment.list": "Attachments",
422
+ "attachment.imageName": "Image {index}",
423
+ "layout.imageCount": "Images ×{count}",
397
424
  "layout.fileAttachments": "Files ×{count}",
398
425
  "layout.initialSystemPrompt": "Initial System Prompt",
399
426
  "layout.systemPromptUpdated": "System Prompt Updated",
@@ -402,6 +429,53 @@ window.__ModuleLoader__.load({
402
429
  "layout.compactionInterrupted": "Compaction was interrupted before completion."
403
430
  };
404
431
  //#endregion
432
+ //#region ../../llm/llm/src/assistant-stream.ts
433
+ /**
434
+ * Whether one chunk carries the model's first output token for latency measurement.
435
+ * @param chunk - any stream chunk.
436
+ * @returns true for a non-empty text, reasoning, or Tool-call arguments fragment and for
437
+ * every name-bearing Tool-call delta; false for block, usage, and finish chunks.
438
+ */
439
+ function isTokenDelta$1(chunk) {
440
+ switch (chunk.type) {
441
+ case "text-delta":
442
+ case "reasoning-delta": return chunk.text !== "";
443
+ case "tool-call-delta": return chunk.argumentsDelta !== "" || chunk.name !== void 0;
444
+ default: return false;
445
+ }
446
+ }
447
+ function firstRunMemberTime(run, predicate) {
448
+ const fragments = run.type === "tool-call-chunks" ? run.args : run.texts;
449
+ let time = run.time0;
450
+ for (let index = 0; index < fragments.length; index += 1) {
451
+ if (index > 0) time += run.dt[index - 1];
452
+ if (predicate(fragments[index])) return time;
453
+ }
454
+ }
455
+ /**
456
+ * Time of the first member of one packed run that {@link isTokenDelta} accepts: a
457
+ * name-bearing Tool-call run starts at its first member, otherwise the first non-empty fragment.
458
+ * Stops scanning at that member.
459
+ * @param run - one packed delta run.
460
+ * @returns the member's reconstructed time, or undefined when no member qualifies.
461
+ */
462
+ function runFirstTokenTime(run) {
463
+ if (run.type === "tool-call-chunks" && run.name !== void 0) return run.time0;
464
+ return firstRunMemberTime(run, (fragment) => fragment !== "");
465
+ }
466
+ /**
467
+ * Time of the first token in one compact stream per {@link isTokenDelta}, read from the
468
+ * records themselves and stopping at the first qualifying member.
469
+ * @param stream - compact records from one durable Assistant settlement.
470
+ * @returns the first token's time, or undefined when the stream carries no token.
471
+ */
472
+ function assistantStreamFirstTokenTime(stream) {
473
+ for (const record of stream) {
474
+ const time = record.type === "chunk" ? isTokenDelta$1(record.chunk) ? record.time : void 0 : runFirstTokenTime(record);
475
+ if (time !== void 0) return time;
476
+ }
477
+ }
478
+ //#endregion
405
479
  //#region lib/types/client/trajectory-definition-common.js
406
480
  /**
407
481
  * Wrap one contribution in the Engine-owned target envelope.
@@ -470,7 +544,7 @@ window.__ModuleLoader__.load({
470
544
  * @param source - Logged `user/message` source.
471
545
  * @returns Role and label rendered by Trajectory.
472
546
  */
473
- function contextProvenance(source) {
547
+ function contextProducer(source) {
474
548
  const record = asRecord(source);
475
549
  const kind = record === null ? null : readString(record, "kind");
476
550
  if (record === null || kind === null) return {
@@ -722,10 +796,17 @@ window.__ModuleLoader__.load({
722
796
  ...isTokenDelta(chunk) && state.firstTokenTime === void 0 ? { firstTokenTime: time } : {}
723
797
  };
724
798
  }
799
+ /** The Step retains its first token across live chunks and settled retry attempts. */
800
+ function settleTiming(state, event) {
801
+ return {
802
+ ...state,
803
+ firstTokenTime: state.firstTokenTime ?? assistantStreamFirstTokenTime(event.data.stream)
804
+ };
805
+ }
725
806
  function settleMessage(state, match, event) {
726
807
  const blocks = toAssistantBlocks(event.data.message.content);
727
808
  return {
728
- ...state,
809
+ ...settleTiming(state, event),
729
810
  sawChunk: false,
730
811
  blocks,
731
812
  visibleBlocks: countVisibleBlocks(blocks),
@@ -746,6 +827,9 @@ window.__ModuleLoader__.load({
746
827
  if (event.type === "assistant/live-chunk") {
747
828
  state ??= initialState(event.data.turn, event.data.step, event.seq, event.time, false);
748
829
  state = updateChunk(state, event.data.chunk, event.seq, event.time);
830
+ } else if (event.type === "assistant/attempt") {
831
+ state ??= initialState(event.data.turn, event.data.step, event.seq, event.time, false);
832
+ state = settleTiming(state, event);
749
833
  } else if (event.type === "assistant/message") {
750
834
  state ??= initialState(event.data.turn, event.data.step, event.seq, event.time, false);
751
835
  state = settleMessage(state, match, event);
@@ -769,7 +853,7 @@ window.__ModuleLoader__.load({
769
853
  step: state.step,
770
854
  blocks: toAssistantBlocks(event.data.message.content),
771
855
  usage: event.data.usage,
772
- provenance: {
856
+ providerMetadata: {
773
857
  provider: event.data.message.source.provider,
774
858
  model: event.data.message.source.model
775
859
  },
@@ -815,7 +899,7 @@ window.__ModuleLoader__.load({
815
899
  },
816
900
  ...node?.messageId === void 0 ? {} : {
817
901
  resultSeq: node.seq,
818
- ...node.provenance === void 0 ? {} : { provenance: node.provenance }
902
+ ...node.providerMetadata === void 0 ? {} : { providerMetadata: node.providerMetadata }
819
903
  },
820
904
  ...state.usage === void 0 ? {} : { usage: state.usage }
821
905
  };
@@ -829,7 +913,7 @@ window.__ModuleLoader__.load({
829
913
  id: `${event.data.turn}:${event.data.step}`,
830
914
  role: "start"
831
915
  };
832
- if (event.type === "assistant/live-chunk" || event.type === "assistant/message" || event.type === "llm/retry" || event.type === "step/end") return {
916
+ if (event.type === "assistant/live-chunk" || event.type === "assistant/message" || event.type === "assistant/attempt" || event.type === "llm/retry" || event.type === "step/end") return {
833
917
  id: `${event.data.turn}:${event.data.step}`,
834
918
  role: "update"
835
919
  };
@@ -842,6 +926,7 @@ window.__ModuleLoader__.load({
842
926
  update: (context, match) => {
843
927
  if (match.event.type === "assistant/live-chunk") return updateChunk(context.state, match.event.data.chunk, match.event.seq, match.event.time);
844
928
  if (match.event.type === "assistant/message") return settleMessage(context.state, match, match.event);
929
+ if (match.event.type === "assistant/attempt") return settleTiming(context.state, match.event);
845
930
  if (match.event.type === "step/end") return {
846
931
  ...context.state,
847
932
  stepEnd: match
@@ -863,7 +948,7 @@ window.__ModuleLoader__.load({
863
948
  };
864
949
  },
865
950
  publication: (match) => {
866
- if (match.event.type === "step/start") return "none";
951
+ if (match.event.type === "step/start" || match.event.type === "assistant/attempt") return "none";
867
952
  if (match.event.type !== "assistant/live-chunk") return "immediate";
868
953
  const type = match.event.data.chunk.type;
869
954
  return type === "usage" || type === "finish" ? "none" : "animation-frame";
@@ -958,7 +1043,7 @@ window.__ModuleLoader__.load({
958
1043
  resultSeq: summary.seq,
959
1044
  summary: summary.data.summary,
960
1045
  ...summary.data.rawOutput === void 0 ? {} : { rawOutput: summary.data.rawOutput },
961
- provenance: {
1046
+ providerMetadata: {
962
1047
  provider: summary.data.provider,
963
1048
  model: summary.data.model
964
1049
  },
@@ -1134,7 +1219,7 @@ window.__ModuleLoader__.load({
1134
1219
  time: event.time,
1135
1220
  content: event.data.content,
1136
1221
  source: event.data.source,
1137
- provenance: contextProvenance(event.data.source),
1222
+ producer: contextProducer(event.data.source),
1138
1223
  form: contextForm(event.data.source)
1139
1224
  };
1140
1225
  return reader.previous("trajectory-inbox-next-step")?.state.currentClaimed.has(String(event.data.id)) === true ? {
@@ -1598,6 +1683,7 @@ window.__ModuleLoader__.load({
1598
1683
  callTime: previous === void 0 || "kind" in previous ? null : previous.time,
1599
1684
  content: data.content ?? [],
1600
1685
  isError: data.isError === true,
1686
+ ...data.error === void 0 ? {} : { error: data.error },
1601
1687
  subCalls: []
1602
1688
  };
1603
1689
  }
@@ -1766,7 +1852,7 @@ window.__ModuleLoader__.load({
1766
1852
  }
1767
1853
  };
1768
1854
  /**
1769
- * Register the Trajectory Tool lifecycle.
1855
+ * Register the Trajectory Tool lifecycle with raw native and PTC error details.
1770
1856
  *
1771
1857
  * @param ctx - Plugin context receiving the Definition.
1772
1858
  */
@@ -3657,8 +3743,49 @@ window.__ModuleLoader__.load({
3657
3743
  return source.length < text.length || preview.length < compact.length ? `${preview}…` : preview;
3658
3744
  }
3659
3745
  //#endregion
3746
+ //#region lib/types/client/code-program.js
3747
+ /** Recorded name of the programmatic tool-calling entry point. */
3748
+ const PTC_TOOL_NAME = "run_code";
3749
+ function record(value) {
3750
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
3751
+ }
3752
+ function parseRecord(value) {
3753
+ if (value === void 0) return void 0;
3754
+ try {
3755
+ return record(JSON.parse(value));
3756
+ } catch {
3757
+ return;
3758
+ }
3759
+ }
3760
+ function recordedLanguage(schemaRaw) {
3761
+ const description = record(record(record(parseRecord(schemaRaw)?.parameters)?.properties)?.code)?.description;
3762
+ if (typeof description !== "string") return void 0;
3763
+ const typescript = /\bTypeScript\b/i.test(description);
3764
+ if (typescript === /\bPython\b/i.test(description)) return void 0;
3765
+ return typescript ? "typescript" : "python";
3766
+ }
3767
+ /**
3768
+ * Resolve a PTC program without guessing its language from source or current runtime settings.
3769
+ * @param cell - Recorded tool arguments and the schema visible at call time.
3770
+ * @returns The program, or undefined for another tool or unsupported arguments.
3771
+ */
3772
+ function codeProgram(cell) {
3773
+ if (cell.kind !== "tool" && cell.kind !== "subtool") return void 0;
3774
+ if (cell.toolName !== "run_code" || cell.inputDetail === void 0) return void 0;
3775
+ const args = parseRecord(cell.inputDetail);
3776
+ if (typeof args?.code !== "string") return void 0;
3777
+ if (args.description !== void 0 && typeof args.description !== "string") return void 0;
3778
+ return {
3779
+ rawInput: cell.inputDetail,
3780
+ source: args.code,
3781
+ description: typeof args.description === "string" && args.description.trim() !== "" ? args.description : args.code.split(/\r?\n/).find((line) => line.trim() !== "")?.trim() ?? "",
3782
+ arguments: args,
3783
+ language: recordedLanguage(cell.schemaDetail)
3784
+ };
3785
+ }
3786
+ //#endregion
3660
3787
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-trajectory/src/client/TrajectoryTable.module.css.mjs
3661
- const css$3 = ".Y0dWHa_split{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);background:var(--dsw-alias-bg-layer-1);flex:1;width:100%;min-height:0;display:flex;position:relative;overflow:hidden;container-type:inline-size}.Y0dWHa_tablePane{min-width:0;padding-bottom:var(--dsh-trajectory-bottom-clearance,0px);flex:1;position:relative;overflow:hidden auto;container:Y0dWHa_trajectory-table/inline-size}.Y0dWHa_historyLoading{z-index:5;pointer-events:none;height:0;position:sticky;top:0;overflow:visible}.Y0dWHa_historyLoadingBar{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;height:30px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);justify-content:center;align-items:center;gap:6px;display:flex}.Y0dWHa_historyLoadingSpinner{box-sizing:border-box;border:1.5px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-state-business-primary);corner-shape:round;border-radius:50%;width:10px;height:10px;animation:.7s linear infinite Y0dWHa_history-loading-spin}.Y0dWHa_table tbody .Y0dWHa_historyLoadRow td{height:30px;padding:0}.Y0dWHa_table tbody .Y0dWHa_historyLoadRow+tr[data-turn-start=true] td:before{content:none}.Y0dWHa_historyLoadButton{background:var(--dsw-alias-bg-layer-1);width:100%;height:29px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:var(--dsw-font-xxs-12);border:0;justify-content:center;align-items:center;gap:6px;display:flex}.Y0dWHa_historyLoadButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Y0dWHa_historyLoadButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.Y0dWHa_historyLoadButton:disabled{cursor:default}.Y0dWHa_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.Y0dWHa_table:not([data-scroll-ready=true]){visibility:hidden}@keyframes Y0dWHa_history-loading-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.Y0dWHa_historyLoadingSpinner{animation:none}}.Y0dWHa_table{--trajectory-turn-accent:color-mix(in srgb, var(--dsw-static-blue-500) 22%, var(--dsw-alias-bg-layer-1));border-spacing:0;table-layout:fixed;width:100%;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:var(--dsw-font-xxs-12)}.Y0dWHa_eventColumn{width:122px}.Y0dWHa_contentColumn{width:auto}.Y0dWHa_table th{z-index:3;box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);height:30px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-specific-sidebar-fill);font:var(--dsw-font-xxs-12);text-align:left;text-overflow:ellipsis;user-select:none;white-space:nowrap;padding:0 8px;font-weight:500;position:sticky;top:0;overflow:hidden}.Y0dWHa_eventHeader{text-align:right!important;padding-right:4px!important}.Y0dWHa_table td{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l1);text-overflow:ellipsis;white-space:nowrap;height:30px;padding:0 8px;overflow:hidden}.Y0dWHa_table tbody .Y0dWHa_virtualSpacer{pointer-events:none}.Y0dWHa_table tbody .Y0dWHa_virtualSpacer td{height:var(--trajectory-virtual-spacer-height);border:0;padding:0}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):not([data-virtual-spacer]):not([data-history-load]){cursor:default;transition:background-color .12s var(--ds-ease-in-out), opacity .12s var(--ds-ease-in-out);outline:none}.Y0dWHa_table tbody tr[data-timeline-focus=outside]{opacity:.24}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):not([data-virtual-spacer]):not([data-history-load]):not([data-selected=true]):hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_table tbody tr[data-request-only=true]:hover{background:0 0}.Y0dWHa_table tbody tr[data-request-only=true] td{border-bottom:0;height:0;padding-top:0;padding-bottom:0}.Y0dWHa_table tbody tr[data-terminal-request-boundary=true] td{height:9px}.Y0dWHa_table tbody tr[data-request-only=true] .Y0dWHa_turnRail{top:-15px;bottom:0}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):focus-visible{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary)}.Y0dWHa_table tbody tr[data-selected=true]{background:var(--dsw-alias-interactive-bg-active)}.Y0dWHa_requestBoundaryControl{--request-boundary-base-left:12px;z-index:6;top:-8px;left:calc(var(--request-boundary-base-left) + var(--request-boundary-offset,0px));cursor:pointer;background:0 0;border:0;width:16px;height:16px;padding:0;position:absolute}.Y0dWHa_requestBoundaryControl:before{corner-shape:round;background:var(--dsw-alias-label-caption);width:5px;height:5px;box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-1), 0 0 0 3px transparent;content:\"\";transition:background .12s var(--ds-ease-in-out), box-shadow .12s var(--ds-ease-in-out);border-radius:50%;position:absolute;top:5.5px;left:5.5px}.Y0dWHa_requestBoundaryControl:after{border:.5px solid var(--dsw-alias-border-l1);width:max-content;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);content:attr(data-label);font:9px/12px var(--ds-font-family-code);opacity:0;pointer-events:none;transition:opacity .12s var(--ds-ease-in-out), transform .12s var(--ds-ease-in-out);user-select:none;white-space:nowrap;border-radius:2px;padding:0 4px;position:absolute;top:2px;left:17px;transform:translate(-2px);box-shadow:0 2px 6px #0000001f}.Y0dWHa_requestBoundaryControl:hover:before,.Y0dWHa_requestBoundaryControl:focus-visible:before{background:var(--dsw-alias-brand-primary-new-colorprimary-new-color)}.Y0dWHa_requestBoundaryControlActive:before,.Y0dWHa_requestBoundaryControlActive:hover:before,.Y0dWHa_requestBoundaryControlActive:focus-visible:before{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 18%, var(--dsw-alias-bg-layer-1));box-shadow:0 0 0 1.5px var(--dsw-alias-brand-primary-new-colorprimary-new-color)}.Y0dWHa_requestBoundaryControl[data-request-status=error]:before,.Y0dWHa_requestBoundaryControl[data-request-status=error]:hover:before,.Y0dWHa_requestBoundaryControl[data-request-status=error]:focus-visible:before{background:var(--dsw-alias-state-error-primary)}.Y0dWHa_requestBoundaryControl:hover:after,.Y0dWHa_requestBoundaryControl:focus-visible:after{opacity:1;transform:translate(0)}.Y0dWHa_requestBoundaryControl:focus-visible{outline:none}.Y0dWHa_table tbody tr:has(.Y0dWHa_requestBoundaryControl:hover):not([data-selected=true]){background:0 0}.Y0dWHa_event{position:relative}.Y0dWHa_turnRail,.Y0dWHa_selectionRail{background:var(--dsw-alias-brand-primary-new-colorprimary-new-color);pointer-events:none;position:absolute;left:0}.Y0dWHa_turnRail{z-index:4;background:var(--trajectory-turn-accent);width:2px;top:-1px;bottom:-1px}.Y0dWHa_table tbody tr[data-turn-end=true] .Y0dWHa_turnRail{bottom:0}.Y0dWHa_selectionRail{z-index:5;width:3px;top:0;bottom:0}.Y0dWHa_table tbody tr[data-error=true] .Y0dWHa_turnRail{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 22%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_table tbody tr[data-error=true] .Y0dWHa_selectionRail{background:var(--dsw-alias-state-error-primary)}.Y0dWHa_table tbody tr[data-turn-start=true] td{position:relative;overflow:visible}.Y0dWHa_table tbody tr[data-turn-start=true]:not(:first-child) td:before{z-index:1;background:var(--dsw-alias-border-l1);content:\"\";pointer-events:none;height:2px;position:absolute;top:0;left:0;right:0;transform:translateY(-50%)}.Y0dWHa_event{padding-left:36px!important;padding-right:4px!important;overflow:visible!important}.Y0dWHa_turnLabel{z-index:3;box-sizing:border-box;width:max-content;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-module-platform);font:8px/10px var(--ds-font-family-code);font-variant-numeric:tabular-nums;user-select:none;white-space:nowrap;border-radius:0 0 2px;flex:none;align-items:center;padding:1px 5px;display:inline-grid;position:absolute;top:0;left:0}.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{opacity:1;white-space:nowrap;grid-area:1/1;max-width:64px;overflow:hidden}.Y0dWHa_turnLabelCompact{opacity:0;max-width:0}.Y0dWHa_turnLabelActive{color:color-mix(in srgb, var(--dsw-static-blue-500) 55%, var(--dsw-alias-label-tertiary));background:var(--trajectory-turn-accent)}.Y0dWHa_eventInner{justify-content:flex-start;align-items:center;min-width:0;height:100%;display:flex}.Y0dWHa_kindSlot{flex:none;justify-content:flex-end;align-items:flex-end;width:76px;display:flex}.Y0dWHa_kindSlot [role=tooltip]{background:var(--dsw-alias-bg-layer-2);box-shadow:var(--dsw-elevation-panel);color:var(--dsw-alias-label-primary);border:0}.Y0dWHa_content{color:var(--dsw-alias-label-primary);padding-left:4px!important}.Y0dWHa_kindTag{box-sizing:border-box;letter-spacing:.035em;user-select:none;border:1px solid #0000;border-radius:4px;flex:none;align-items:center;height:19px;padding:0 5px;font-size:10px;font-weight:650;line-height:16px;display:inline-flex}.Y0dWHa_kindTagIcon{opacity:0;flex:none;justify-content:center;align-items:center;width:0;height:13px;display:inline-flex;overflow:hidden;transform:scale(.8)}.Y0dWHa_kindTagLabel{opacity:1;white-space:nowrap;max-width:72px;display:inline-block;overflow:hidden}.Y0dWHa_table .Y0dWHa_kindSlot .Y0dWHa_message{justify-content:center;width:100%}@container Y0dWHa_trajectory-table (width<=620px){.Y0dWHa_eventColumn{width:50px}.Y0dWHa_event{padding-left:28px!important;padding-right:3px!important}.Y0dWHa_requestBoundaryControl{--request-boundary-base-left:6px}.Y0dWHa_kindSlot{width:19px}.Y0dWHa_kindTag,.Y0dWHa_table .Y0dWHa_kindSlot .Y0dWHa_message{justify-content:center;width:19px;padding-left:0;padding-right:0}.Y0dWHa_kindTagIcon{opacity:1;width:13px;transform:scale(1)}.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull{opacity:0;max-width:0}.Y0dWHa_turnLabelCompact{opacity:1;max-width:64px}}@media (prefers-reduced-motion:no-preference){.Y0dWHa_eventColumn,.Y0dWHa_event,.Y0dWHa_requestBoundaryControl,.Y0dWHa_kindSlot,.Y0dWHa_kindTag,.Y0dWHa_kindTagIcon,.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{transition-duration:.18s;transition-timing-function:var(--ds-ease-in-out)}.Y0dWHa_eventColumn,.Y0dWHa_kindSlot{transition-property:width}.Y0dWHa_event{transition-property:padding-right,padding-left}.Y0dWHa_requestBoundaryControl{transition-property:left}.Y0dWHa_kindTag{transition-property:padding-right,padding-left}.Y0dWHa_kindTagIcon{transition-property:width,opacity,transform}.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{transition-property:max-width,opacity}}.Y0dWHa_user{color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-tertiary)}.Y0dWHa_systemNeutral{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform)}.Y0dWHa_contextGreen{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 68%, var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-success-tertiary)}.Y0dWHa_compacted{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform)}.Y0dWHa_compactedSummary{font:var(--dsw-font-xs-13);margin-top:12px;padding:0 0 14px}.Y0dWHa_promptDiffSections{flex-direction:column;gap:14px;max-height:100%;padding:10px 14px 14px;display:flex;overflow:auto}.Y0dWHa_promptDiffSection{min-width:0}.Y0dWHa_promptDiffTitle{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-strong-13);user-select:none;margin:0 0 6px}.Y0dWHa_promptDiff{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:11px/17px var(--ds-font-family-code);white-space:pre;margin:0;overflow:auto}.Y0dWHa_promptDiff span{min-width:max-content;padding:0 6px;display:block}.Y0dWHa_promptDiffLinemeta{color:var(--dsw-alias-label-caption);background:var(--dsw-alias-bg-module-platform);user-select:none}.Y0dWHa_promptDiffLinecontext{color:var(--dsw-alias-label-secondary)}.Y0dWHa_promptDiffLineadded{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 72%, var(--dsw-alias-label-primary));background:var(--dsw-alias-state-success-tertiary)}.Y0dWHa_promptDiffLineremoved{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_assistantVioletBright{color:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 60%, var(--dsw-alias-state-error-secondary));background:color-mix(in srgb, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 55%, var(--dsw-alias-state-error-secondary)) 15%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_toolAmber{color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary)}.Y0dWHa_subtoolAmber{color:color-mix(in srgb, var(--dsw-alias-state-warn-label) 62%, var(--dsw-alias-label-tertiary));background:color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 58%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_contentText{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.Y0dWHa_toolCallOnly{color:var(--dsw-alias-label-tertiary)}.Y0dWHa_table tbody tr[data-collapsed-summary=turn] td,.Y0dWHa_table tbody tr[data-collapsed-summary=assistant] td{height:20px}.Y0dWHa_table tbody tr[data-collapsed-summary]{cursor:pointer;transition:background-color .12s var(--ds-ease-in-out);outline:none}.Y0dWHa_table tbody tr[data-collapsed-summary]:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_table tbody tr[data-collapsed-summary]:focus-visible{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary)}.Y0dWHa_collapsedTurnContent{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;font-size:12px;line-height:16px;display:flex}.Y0dWHa_collapsedTurnEllipsis{color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;margin-right:6px;font-weight:600}.Y0dWHa_collapsedTurnText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.Y0dWHa_resultPreview{grid-template-columns:clamp(180px, var(--trajectory-tool-request-width,calc(36cqw - 56px)), 480px) minmax(0, 1fr);align-items:center;gap:8px;min-width:0;display:grid}.Y0dWHa_resultRequest,.Y0dWHa_inlineResultText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.Y0dWHa_toolCallNameTypeface{color:var(--dsw-alias-label-primary);font:400 12px/18px Menlo,Consolas,Liberation Mono,PingFang SC,Microsoft YaHei}.Y0dWHa_toolCallPayload{color:var(--dsw-alias-label-secondary);font:400 12px/18px var(--ds-font-family-code);margin-left:7px}.Y0dWHa_table tbody tr[data-kind=tool] .Y0dWHa_contentText,.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_contentText,.Y0dWHa_table tbody tr[data-kind=tool] .Y0dWHa_resultPreview,.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_resultPreview{font-family:var(--ds-font-family-code);font-size:12px}.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_content{padding-left:26px}.Y0dWHa_inlineResult{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;display:flex}.Y0dWHa_noOutputText{color:var(--dsw-alias-label-caption)}.Y0dWHa_arrow{color:var(--dsw-alias-label-caption);flex:none;margin-right:8px}.Y0dWHa_error,.Y0dWHa_overview dd.Y0dWHa_error,.Y0dWHa_details .Y0dWHa_errorPayload{color:var(--dsw-alias-state-error-primary)}.Y0dWHa_details .Y0dWHa_errorPayload .Y0dWHa_resultBlockText{color:inherit}.Y0dWHa_details .Y0dWHa_jsonPayload.Y0dWHa_errorPayload,.Y0dWHa_details .Y0dWHa_jsonPreview.Y0dWHa_errorPayload{--json-tree-property:var(--dsw-alias-state-error-primary);--json-tree-string:var(--dsw-alias-state-error-primary);--json-tree-number:var(--dsw-alias-state-error-primary);--json-tree-keyword:var(--dsw-alias-state-error-primary);--json-tree-punctuation:var(--dsw-alias-state-error-primary);--json-tree-icon:var(--dsw-alias-state-error-primary)}.Y0dWHa_details{border-left:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-direction:column;flex:none;width:clamp(320px,38%,440px);min-width:0;max-width:calc(100% - 280px);min-height:0;display:flex;position:relative}.Y0dWHa_detailsResizeHandle{z-index:6;cursor:col-resize;touch-action:none;user-select:none;background:0 0;border:0;width:8px;padding:0;position:absolute;top:0;bottom:0;left:-4px}.Y0dWHa_detailsResizeHandle:focus-visible{outline:none}.Y0dWHa_detailsHeader{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);flex:none;justify-content:space-between;align-items:center;height:42px;padding:0 8px 0 12px;display:flex}.Y0dWHa_detailsTitle{min-width:0;color:var(--dsw-alias-label-primary);align-items:center;gap:8px;display:flex}.Y0dWHa_requestDetailsDot{corner-shape:round;background:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;width:5px;height:5px}.Y0dWHa_requestDetailsName{font:500 12px/16px var(--ds-font-family-code);flex:none}.Y0dWHa_detailsLocation{min-width:0;color:var(--dsw-alias-label-tertiary);font:11px/16px var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_close{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:18px;display:inline-flex}.Y0dWHa_close:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_detailTabs{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);overscroll-behavior-x:contain;scrollbar-width:none;white-space:nowrap;flex:none;gap:1px;width:100%;min-width:0;max-width:100%;height:34px;padding:0 8px;display:flex;overflow:auto hidden}.Y0dWHa_detailTabs::-webkit-scrollbar{display:none}.Y0dWHa_detailTab{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:var(--dsw-font-xs-13);background:0 0;border:0;flex:none;padding:0 9px;position:relative}.Y0dWHa_detailTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_detailTabActive{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_detailTabActive:after{background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:1px 1px 0 0;height:2px;position:absolute;bottom:0;left:9px;right:9px}.Y0dWHa_close:focus-visible,.Y0dWHa_detailTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_detailBody{min-height:0;padding-bottom:var(--dsh-trajectory-bottom-clearance,0px);scrollbar-gutter:stable;flex:1;overflow:hidden auto}.Y0dWHa_detailBodySummary{box-sizing:border-box;padding-bottom:calc(12px + var(--dsh-trajectory-bottom-clearance,0px));flex-direction:column;display:flex;overflow:hidden}.Y0dWHa_detailBodySummary>.Y0dWHa_overview{overscroll-behavior:contain;flex:0 auto;min-height:0;overflow:auto}.Y0dWHa_detailBodySummary>.Y0dWHa_compactedSummary{flex:1;min-height:0;overflow:auto}.Y0dWHa_summaryScrollRegion{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.Y0dWHa_summaryScrollRegion:hover,.Y0dWHa_summaryScrollRegion:focus-within{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2)}.Y0dWHa_compactedSummary .Y0dWHa_markdownPayload{padding-right:18px}.Y0dWHa_overview{font:var(--dsw-font-xs-13);margin:0;padding:8px 0}.Y0dWHa_overviewParentLinks{gap:14px;display:flex}.Y0dWHa_overviewHierarchyNavLink{all:unset;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;opacity:1;align-items:center;gap:1px;display:inline-flex}.Y0dWHa_overviewHierarchyNavLink:hover{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewHierarchyJumpIconTight{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_overviewHierarchyNavLink:hover .Y0dWHa_overviewHierarchyJumpIconTight,.Y0dWHa_overviewHierarchyNavLink:focus-visible .Y0dWHa_overviewHierarchyJumpIconTight{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewHierarchyNavLink:focus-visible{color:var(--dsw-alias-label-primary);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overview>div{grid-template-columns:94px minmax(0,1fr);align-items:center;min-height:22px;padding:0 14px;display:grid}.Y0dWHa_overview>.Y0dWHa_requestTokenDetail dt{padding-left:12px}.Y0dWHa_usagePanel{padding:4px 0 10px}.Y0dWHa_usageGroup+.Y0dWHa_usageGroup{margin-top:8px}.Y0dWHa_usageHeading{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-strong-13);user-select:none;margin:0;padding:4px 14px 1px}.Y0dWHa_usageGroup .Y0dWHa_overview{padding:0}.Y0dWHa_overview dt{color:var(--dsw-alias-label-tertiary)}.Y0dWHa_overview dd{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.Y0dWHa_timestampToggle{all:unset;color:inherit;cursor:pointer;font:inherit;user-select:text}.Y0dWHa_timestampToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overviewSections{border-top:0;flex-direction:column;flex:1;min-height:min-content;display:flex;overflow:hidden}.Y0dWHa_overviewSection{flex-direction:column;flex:1 1 0;min-height:28px;max-height:max-content;display:flex;overflow:hidden}.Y0dWHa_overviewSection+.Y0dWHa_overviewSection{padding-top:8px}.Y0dWHa_overviewHeading{box-sizing:border-box;width:100%;height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);font:var(--dsw-font-xs-strong-13);user-select:none;flex:none;align-items:flex-end;margin:0;padding:0 0 3px 14px;display:flex}.Y0dWHa_overviewTitle{width:max-content;height:auto;color:inherit;cursor:pointer;font:inherit;user-select:none;background:0 0;border:0;flex:none;align-items:center;gap:3px;padding:0;line-height:1;display:inline-flex}.Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_overviewTitle:hover .Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewTitle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overviewTitle:focus-visible .Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_overviewPreview{overscroll-behavior:contain;background:var(--dsw-alias-bg-layer-1);flex:1;min-height:0;overflow:auto}.Y0dWHa_overviewPreview>:last-child{margin-bottom:0;padding-bottom:0}.Y0dWHa_overviewPreview .Y0dWHa_jsonPreview>:first-child,.Y0dWHa_overviewPreview .Y0dWHa_schemaTree>:first-child{padding-bottom:0}.Y0dWHa_overviewPreview .Y0dWHa_schemaTree{margin-bottom:0}.Y0dWHa_overviewPreview .Y0dWHa_overview{padding:2px 0 0}.Y0dWHa_overviewPreview .Y0dWHa_overview>div{min-height:22px}.Y0dWHa_markdownPreview,.Y0dWHa_markdownPayload{color:var(--dsw-alias-label-primary)}.Y0dWHa_markdownPreview>div,.Y0dWHa_markdownPayload>div{font:var(--dsw-font-xs-13);gap:8px}.Y0dWHa_markdownPreview>div h1,.Y0dWHa_markdownPayload>div h1{font:600 16px/22px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div h2,.Y0dWHa_markdownPayload>div h2{font:600 15px/22px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div :where(h3,h4,h5,h6),.Y0dWHa_markdownPayload>div :where(h3,h4,h5,h6){font:600 14px/20px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div :not(pre)>code,.Y0dWHa_markdownPayload>div :not(pre)>code{font:12px/18px var(--ds-font-family-code)}.Y0dWHa_markdownPreview>div table,.Y0dWHa_markdownPayload>div table{font:var(--dsw-font-xs-13)}.Y0dWHa_markdownPreview>div>:first-child{margin-top:0}.Y0dWHa_markdownPreview>div>:last-child{margin-bottom:0}.Y0dWHa_markdownPreview>div :where(h1,h2,h3){margin:12px 0 6px}.Y0dWHa_markdownPreview>div :where(h4,h5,h6){margin:10px 0 5px}.Y0dWHa_markdownPreview>div :where(p,ul,ol){margin:8px 0}.Y0dWHa_markdownPreview>div li:not(:first-child){margin-top:3px}.Y0dWHa_markdownPreview>div blockquote{margin-top:8px}.Y0dWHa_markdownPreview>div hr{margin:14px 0}.Y0dWHa_markdownPreview>div>.md-code-block{margin:10px 0}.Y0dWHa_assistantContent .Y0dWHa_markdownPayload,.Y0dWHa_assistantContent .Y0dWHa_payload{min-height:0}.Y0dWHa_thinkingQuote{border-left:2px solid var(--dsw-alias-markdown-citation);color:var(--dsw-alias-label-secondary);background:0 0;margin:6px 14px 0 12px;padding-left:6px}.Y0dWHa_thinkingQuoteOnlyPreview{margin-bottom:8px}.Y0dWHa_detailBody>.Y0dWHa_assistantContentRendered .Y0dWHa_thinkingQuote{margin-top:14px}.Y0dWHa_thinkingToggle{width:max-content;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:600 12px/18px var(--dsw-font-family);user-select:none;background:0 0;border:0;align-items:center;gap:2px;padding:0;display:flex}.Y0dWHa_thinkingChevron{transition:transform .12s var(--ds-ease-in-out);flex:none}.Y0dWHa_thinkingToggle[aria-expanded=true] .Y0dWHa_thinkingChevron{transform:rotate(90deg)}.Y0dWHa_thinkingToggle:hover{color:var(--dsw-alias-label-secondary)}.Y0dWHa_thinkingToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_thinkingQuote .Y0dWHa_markdownPreview,.Y0dWHa_thinkingQuote .Y0dWHa_markdownPayload,.Y0dWHa_thinkingQuote .Y0dWHa_payload{min-height:0;color:var(--dsw-alias-label-secondary);background:0 0;padding:2px 0}.Y0dWHa_assistantOutput{background:var(--dsw-alias-bg-layer-1)}.Y0dWHa_markdownPreview{padding:6px 14px 8px}.Y0dWHa_markdownPayload{min-height:100%;padding:14px}.Y0dWHa_jsonPayload{min-height:100%}.Y0dWHa_jsonPreview{min-height:0}.Y0dWHa_schema{background:var(--dsw-alias-bg-layer-1);min-height:100%}.Y0dWHa_schemaPreview{min-height:0}.Y0dWHa_schemaIntro{padding:12px 14px 6px}.Y0dWHa_schemaPreview .Y0dWHa_schemaIntro{padding-top:6px}.Y0dWHa_schemaName{color:var(--dsw-alias-label-primary);font:600 12px/18px var(--ds-font-family-code);margin:0}.Y0dWHa_schemaDescription{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);white-space:pre-wrap;margin:2px 0 0}.Y0dWHa_schemaParameters{min-width:0}.Y0dWHa_schemaParametersTitle{color:var(--dsw-alias-label-tertiary);font:600 11px/16px var(--dsw-font-family);user-select:none;margin:0;padding:4px 14px 2px}.Y0dWHa_schemaTree{margin:0 6px 8px 0}.Y0dWHa_payload{box-sizing:border-box;overflow-wrap:anywhere;min-height:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;margin:0;padding:14px}.Y0dWHa_payloadPreview{min-height:0;padding:6px 14px 8px}.Y0dWHa_sourceBlocks{box-sizing:border-box;min-height:100%;padding:12px 14px}.Y0dWHa_sourceBlock+.Y0dWHa_sourceBlock{margin-top:14px}.Y0dWHa_sourceBlockHeader,.Y0dWHa_sourceBlockJumpTarget{user-select:none;align-items:center;gap:3px;width:max-content;margin-bottom:3px;display:flex}.Y0dWHa_sourceBlockJumpTarget{all:unset;cursor:pointer;user-select:none;align-items:center;gap:3px;width:max-content;margin-bottom:3px;display:flex}.Y0dWHa_sourceBlockLabel{color:var(--dsw-alias-label-tertiary);font:11px/16px var(--ds-font-family-code)}.Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_sourceBlockJumpTarget:hover .Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-label-primary)}.Y0dWHa_sourceBlockJumpTarget:focus-visible{outline:none}.Y0dWHa_sourceBlockJumpTarget:focus-visible .Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_sourceBlockContent{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;background:0 0;margin:0}.Y0dWHa_messageImages{flex-direction:column;gap:8px;margin:8px 14px 14px;display:flex}.Y0dWHa_messageImagesPreview{gap:6px;margin:6px 14px 8px}.Y0dWHa_assistantToolCalls{box-sizing:border-box;max-width:100%;color:var(--dsw-alias-label-secondary);font:11px/17px var(--ds-font-family-code);margin:2px 14px 12px;padding:0;list-style:none}.Y0dWHa_assistantToolCallsPreview{margin-top:2px;margin-bottom:8px}.Y0dWHa_assistantToolCalls li{min-width:0}.Y0dWHa_assistantToolCallButton{all:unset;box-sizing:border-box;cursor:pointer;border-radius:3px;align-items:center;width:calc(100% + 4px);min-width:0;height:19px;margin-left:-4px;padding:0 4px;display:flex}.Y0dWHa_assistantToolCallButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_assistantToolCallButton:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_assistantToolCallIcon{color:var(--dsw-alias-label-caption);flex:none;margin-right:5px}.Y0dWHa_assistantToolCallButton:hover .Y0dWHa_assistantToolCallIcon,.Y0dWHa_assistantToolCallButton:focus-visible .Y0dWHa_assistantToolCallIcon{color:var(--dsw-alias-label-secondary)}.Y0dWHa_assistantToolCallText{white-space:nowrap;flex:1;min-width:0;display:flex;overflow:hidden}.Y0dWHa_assistantToolCallName{color:var(--dsw-alias-label-secondary);flex:none;margin-right:5px;font-weight:500}.Y0dWHa_assistantToolCallArgs{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_systemPrompt{box-sizing:border-box}.Y0dWHa_toolCatalog{min-height:100%;padding:8px 0 16px}.Y0dWHa_toolCatalogItem{border-bottom:.5px solid var(--dsw-alias-border-l1)}.Y0dWHa_toolCatalogSummary{box-sizing:border-box;cursor:pointer;user-select:none;grid-template-columns:12px 12px max-content minmax(0,1fr);align-items:center;gap:5px;min-height:30px;padding:4px 12px;list-style:none;display:grid}.Y0dWHa_toolCatalogSummary::-webkit-details-marker{display:none}.Y0dWHa_toolCatalogSummary:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_toolCatalogSummary:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_toolCatalogChevron,.Y0dWHa_toolCatalogIcon{color:var(--dsw-alias-label-caption)}.Y0dWHa_toolCatalogChevron{transition:transform .1s var(--ds-ease-in-out)}.Y0dWHa_toolCatalogItem[open] .Y0dWHa_toolCatalogChevron{transform:rotate(90deg)}.Y0dWHa_toolCatalogName{color:var(--dsw-alias-label-primary);font:500 12px/18px var(--ds-font-family-code)}.Y0dWHa_toolCatalogDescription{min-width:0;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_toolCatalogDefinition{background:var(--dsw-alias-bg-base);padding:0 0 8px 29px}.Y0dWHa_toolCatalogFullDescription{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);white-space:pre-wrap;margin:0;padding:7px 14px 4px 0}.Y0dWHa_toolCatalogTree{margin-left:-14px;margin-right:6px}.Y0dWHa_resultBlocks{box-sizing:border-box;flex-direction:column;gap:10px;min-height:100%;padding:14px;display:flex}.Y0dWHa_resultBlocksPreview{gap:6px;min-height:0;padding:6px 14px 8px}.Y0dWHa_resultBlockText{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;background:0 0;margin:0}.Y0dWHa_overviewPreview .Y0dWHa_noPayload{padding:6px 14px 8px}.Y0dWHa_noPayload{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);margin:0;padding:18px 14px}@media (width<=760px){.Y0dWHa_details{z-index:5;border-left-color:var(--dsw-alias-border-l3);width:min(92%,420px);max-width:92%;position:absolute;top:0;bottom:0;right:0;box-shadow:-12px 0 32px #00000024}}";
3788
+ const css$3 = ".Y0dWHa_split{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);background:var(--dsw-alias-bg-layer-1);flex:1;width:100%;min-height:0;display:flex;position:relative;overflow:hidden;container-type:inline-size}.Y0dWHa_tablePane{min-width:0;padding-bottom:var(--dsh-trajectory-bottom-clearance,0px);flex:1;position:relative;overflow:hidden auto;container:Y0dWHa_trajectory-table/inline-size}.Y0dWHa_historyLoading{z-index:5;pointer-events:none;height:0;position:sticky;top:0;overflow:visible}.Y0dWHa_historyLoadingBar{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;height:30px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);justify-content:center;align-items:center;gap:6px;display:flex}.Y0dWHa_historyLoadingSpinner{box-sizing:border-box;border:1.5px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-state-business-primary);corner-shape:round;border-radius:50%;width:10px;height:10px;animation:.7s linear infinite Y0dWHa_history-loading-spin}.Y0dWHa_table tbody .Y0dWHa_historyLoadRow td{height:30px;padding:0}.Y0dWHa_table tbody .Y0dWHa_historyLoadRow+tr[data-turn-start=true] td:before{content:none}.Y0dWHa_historyLoadButton{background:var(--dsw-alias-bg-layer-1);width:100%;height:29px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:var(--dsw-font-xxs-12);border:0;justify-content:center;align-items:center;gap:6px;display:flex}.Y0dWHa_historyLoadButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Y0dWHa_historyLoadButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.Y0dWHa_historyLoadButton:disabled{cursor:default}.Y0dWHa_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.Y0dWHa_table:not([data-scroll-ready=true]){visibility:hidden}@keyframes Y0dWHa_history-loading-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.Y0dWHa_historyLoadingSpinner{animation:none}}.Y0dWHa_table{--trajectory-turn-accent:color-mix(in srgb, var(--dsw-static-blue-500) 22%, var(--dsw-alias-bg-layer-1));border-spacing:0;table-layout:fixed;width:100%;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:var(--dsw-font-xxs-12)}.Y0dWHa_eventColumn{width:122px}.Y0dWHa_eventColumn:where(:lang(zh)){width:84px}.Y0dWHa_contentColumn{width:auto}.Y0dWHa_table th{z-index:3;box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);height:30px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-specific-sidebar-fill);font:var(--dsw-font-xxs-12);text-align:left;text-overflow:ellipsis;user-select:none;white-space:nowrap;padding:0 8px;font-weight:500;position:sticky;top:0;overflow:hidden}.Y0dWHa_eventHeader{text-align:right!important;padding-right:4px!important}.Y0dWHa_table td{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l1);text-overflow:ellipsis;white-space:nowrap;height:30px;padding:0 8px;overflow:hidden}.Y0dWHa_table tbody .Y0dWHa_virtualSpacer{pointer-events:none}.Y0dWHa_table tbody .Y0dWHa_virtualSpacer td{height:var(--trajectory-virtual-spacer-height);border:0;padding:0}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):not([data-virtual-spacer]):not([data-history-load]){cursor:default;transition:background-color .12s var(--ds-ease-in-out), opacity .12s var(--ds-ease-in-out);outline:none}.Y0dWHa_table tbody tr[data-timeline-focus=outside]{opacity:.24}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):not([data-virtual-spacer]):not([data-history-load]):not([data-selected=true]):hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_table tbody tr[data-request-only=true]:hover{background:0 0}.Y0dWHa_table tbody tr[data-request-only=true] td{border-bottom:0;height:0;padding-top:0;padding-bottom:0}.Y0dWHa_table tbody tr[data-terminal-request-boundary=true] td{height:9px}.Y0dWHa_table tbody tr[data-request-only=true] .Y0dWHa_turnRail{top:-15px;bottom:0}.Y0dWHa_table tbody tr:not([data-collapsed-summary]):focus-visible{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary)}.Y0dWHa_table tbody tr[data-selected=true]{background:var(--dsw-alias-interactive-bg-active)}.Y0dWHa_requestBoundaryControl{--request-boundary-base-left:12px;z-index:6;top:-8px;left:calc(var(--request-boundary-base-left) + var(--request-boundary-offset,0px));cursor:pointer;background:0 0;border:0;width:16px;height:16px;padding:0;position:absolute}.Y0dWHa_requestBoundaryControl:before{corner-shape:round;background:var(--dsw-alias-label-caption);width:5px;height:5px;box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-1), 0 0 0 3px transparent;content:\"\";transition:background .12s var(--ds-ease-in-out), box-shadow .12s var(--ds-ease-in-out);border-radius:50%;position:absolute;top:5.5px;left:5.5px}.Y0dWHa_requestBoundaryControl:after{border:.5px solid var(--dsw-alias-border-l1);width:max-content;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);content:attr(data-label);font:9px/12px var(--ds-font-family-code);opacity:0;pointer-events:none;transition:opacity .12s var(--ds-ease-in-out), transform .12s var(--ds-ease-in-out);user-select:none;white-space:nowrap;border-radius:2px;padding:0 4px;position:absolute;top:2px;left:17px;transform:translate(-2px);box-shadow:0 2px 6px #0000001f}.Y0dWHa_requestBoundaryControl:hover:before,.Y0dWHa_requestBoundaryControl:focus-visible:before{background:var(--dsw-alias-brand-primary-new-colorprimary-new-color)}.Y0dWHa_requestBoundaryControlActive:before,.Y0dWHa_requestBoundaryControlActive:hover:before,.Y0dWHa_requestBoundaryControlActive:focus-visible:before{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 18%, var(--dsw-alias-bg-layer-1));box-shadow:0 0 0 1.5px var(--dsw-alias-brand-primary-new-colorprimary-new-color)}.Y0dWHa_requestBoundaryControl[data-request-status=error]:before,.Y0dWHa_requestBoundaryControl[data-request-status=error]:hover:before,.Y0dWHa_requestBoundaryControl[data-request-status=error]:focus-visible:before{background:var(--dsw-alias-state-error-primary)}.Y0dWHa_requestBoundaryControl:hover:after,.Y0dWHa_requestBoundaryControl:focus-visible:after{opacity:1;transform:translate(0)}.Y0dWHa_requestBoundaryControl:focus-visible{outline:none}.Y0dWHa_table tbody tr:has(.Y0dWHa_requestBoundaryControl:hover):not([data-selected=true]){background:0 0}.Y0dWHa_event{position:relative}.Y0dWHa_turnRail,.Y0dWHa_selectionRail{background:var(--dsw-alias-brand-primary-new-colorprimary-new-color);pointer-events:none;position:absolute;left:0}.Y0dWHa_turnRail{z-index:4;background:var(--trajectory-turn-accent);width:2px;top:-1px;bottom:-1px}.Y0dWHa_table tbody tr[data-turn-end=true] .Y0dWHa_turnRail{bottom:0}.Y0dWHa_selectionRail{z-index:5;width:3px;top:0;bottom:0}.Y0dWHa_table tbody tr[data-error=true] .Y0dWHa_turnRail{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 22%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_table tbody tr[data-error=true] .Y0dWHa_selectionRail{background:var(--dsw-alias-state-error-primary)}.Y0dWHa_table tbody tr[data-turn-start=true] td{position:relative;overflow:visible}.Y0dWHa_table tbody tr[data-turn-start=true]:not(:first-child) td:before{z-index:1;background:var(--dsw-alias-border-l1);content:\"\";pointer-events:none;height:2px;position:absolute;top:0;left:0;right:0;transform:translateY(-50%)}.Y0dWHa_event{padding-left:36px!important;padding-right:4px!important;overflow:visible!important}.Y0dWHa_turnLabel{z-index:3;box-sizing:border-box;width:max-content;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-module-platform);font:8px/10px var(--ds-font-family-code);font-variant-numeric:tabular-nums;user-select:none;white-space:nowrap;border-radius:0 0 2px;flex:none;align-items:center;padding:1px 5px;display:inline-grid;position:absolute;top:0;left:0}.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{opacity:1;white-space:nowrap;grid-area:1/1;max-width:64px;overflow:hidden}.Y0dWHa_turnLabelCompact{opacity:0;max-width:0}.Y0dWHa_turnLabelActive{color:color-mix(in srgb, var(--dsw-static-blue-500) 55%, var(--dsw-alias-label-tertiary));background:var(--trajectory-turn-accent)}.Y0dWHa_eventInner{justify-content:flex-start;align-items:center;min-width:0;height:100%;display:flex}.Y0dWHa_kindSlot{flex:none;justify-content:flex-end;align-items:flex-end;width:76px;display:flex}.Y0dWHa_kindSlot:where(:lang(zh)){width:44px}.Y0dWHa_kindSlot [role=tooltip]{background:var(--dsw-alias-bg-layer-2);box-shadow:var(--dsw-elevation-panel);color:var(--dsw-alias-label-primary);border:0}.Y0dWHa_content{color:var(--dsw-alias-label-primary);padding-left:4px!important}.Y0dWHa_kindTag{box-sizing:border-box;letter-spacing:.035em;user-select:none;border:1px solid #0000;border-radius:4px;flex:none;align-items:center;height:19px;padding:0 5px;font-size:10px;font-weight:650;line-height:16px;display:inline-flex}.Y0dWHa_kindTagIcon{opacity:0;flex:none;justify-content:center;align-items:center;width:0;height:13px;display:inline-flex;overflow:hidden;transform:scale(.8)}.Y0dWHa_kindTagLabel{opacity:1;white-space:nowrap;max-width:72px;display:inline-block;overflow:hidden}.Y0dWHa_table .Y0dWHa_kindSlot .Y0dWHa_message{justify-content:center;width:100%}@container Y0dWHa_trajectory-table (width<=620px){.Y0dWHa_eventColumn{width:50px}.Y0dWHa_event{padding-left:28px!important;padding-right:3px!important}.Y0dWHa_requestBoundaryControl{--request-boundary-base-left:6px}.Y0dWHa_kindSlot{width:19px}.Y0dWHa_kindTag,.Y0dWHa_table .Y0dWHa_kindSlot .Y0dWHa_message{justify-content:center;width:19px;padding-left:0;padding-right:0}.Y0dWHa_kindTagIcon{opacity:1;width:13px;transform:scale(1)}.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull{opacity:0;max-width:0}.Y0dWHa_turnLabelCompact{opacity:1;max-width:64px}}@media (prefers-reduced-motion:no-preference){.Y0dWHa_eventColumn,.Y0dWHa_event,.Y0dWHa_requestBoundaryControl,.Y0dWHa_kindSlot,.Y0dWHa_kindTag,.Y0dWHa_kindTagIcon,.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{transition-duration:.18s;transition-timing-function:var(--ds-ease-in-out)}.Y0dWHa_eventColumn,.Y0dWHa_kindSlot{transition-property:width}.Y0dWHa_event{transition-property:padding-right,padding-left}.Y0dWHa_requestBoundaryControl{transition-property:left}.Y0dWHa_kindTag{transition-property:padding-right,padding-left}.Y0dWHa_kindTagIcon{transition-property:width,opacity,transform}.Y0dWHa_kindTagLabel,.Y0dWHa_turnLabelFull,.Y0dWHa_turnLabelCompact{transition-property:max-width,opacity}}.Y0dWHa_user{color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-tertiary)}.Y0dWHa_systemNeutral{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform)}.Y0dWHa_contextGreen{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 68%, var(--dsw-alias-label-secondary));background:var(--dsw-alias-state-success-tertiary)}.Y0dWHa_compacted{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform)}.Y0dWHa_compactedSummary{font:var(--dsw-font-xs-13);margin-top:12px;padding:0 0 14px}.Y0dWHa_promptDiffSections{flex-direction:column;gap:14px;max-height:100%;padding:10px 14px 14px;display:flex;overflow:auto}.Y0dWHa_promptDiffSection{min-width:0}.Y0dWHa_promptDiffTitle{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-strong-13);user-select:none;margin:0 0 6px}.Y0dWHa_promptDiff{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:11px/17px var(--ds-font-family-code);white-space:pre;margin:0;overflow:auto}.Y0dWHa_promptDiff span{min-width:max-content;padding:0 6px;display:block}.Y0dWHa_promptDiffLinemeta{color:var(--dsw-alias-label-caption);background:var(--dsw-alias-bg-module-platform);user-select:none}.Y0dWHa_promptDiffLinecontext{color:var(--dsw-alias-label-secondary)}.Y0dWHa_promptDiffLineadded{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 72%, var(--dsw-alias-label-primary));background:var(--dsw-alias-state-success-tertiary)}.Y0dWHa_promptDiffLineremoved{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_assistantVioletBright{color:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 60%, var(--dsw-alias-state-error-secondary));background:color-mix(in srgb, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 55%, var(--dsw-alias-state-error-secondary)) 15%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_toolAmber{color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary)}.Y0dWHa_subtoolAmber{color:color-mix(in srgb, var(--dsw-alias-state-warn-label) 62%, var(--dsw-alias-label-tertiary));background:color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 58%, var(--dsw-alias-bg-layer-1))}.Y0dWHa_contentText{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.Y0dWHa_toolCallOnly{color:var(--dsw-alias-label-tertiary)}.Y0dWHa_table tbody tr[data-collapsed-summary=turn] td,.Y0dWHa_table tbody tr[data-collapsed-summary=assistant] td{height:20px}.Y0dWHa_table tbody tr[data-collapsed-summary]{cursor:pointer;transition:background-color .12s var(--ds-ease-in-out);outline:none}.Y0dWHa_table tbody tr[data-collapsed-summary]:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_table tbody tr[data-collapsed-summary]:focus-visible{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary)}.Y0dWHa_collapsedTurnContent{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;font-size:12px;line-height:16px;display:flex}.Y0dWHa_collapsedTurnEllipsis{color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;margin-right:6px;font-weight:600}.Y0dWHa_collapsedTurnText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.Y0dWHa_resultPreview{grid-template-columns:clamp(180px, var(--trajectory-tool-request-width,calc(36cqw - 56px)), 480px) minmax(0, 1fr);align-items:center;gap:8px;min-width:0;display:grid}.Y0dWHa_resultRequest,.Y0dWHa_inlineResultText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.Y0dWHa_toolCallNameTypeface{color:var(--dsw-alias-label-primary);font:400 12px/18px Menlo,Consolas,Liberation Mono,PingFang SC,Microsoft YaHei}.Y0dWHa_toolCallPayload{color:var(--dsw-alias-label-secondary);font:400 12px/18px var(--ds-font-family-code);margin-left:7px}.Y0dWHa_table tbody tr[data-kind=tool] .Y0dWHa_contentText,.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_contentText,.Y0dWHa_table tbody tr[data-kind=tool] .Y0dWHa_resultPreview,.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_resultPreview{font-family:var(--ds-font-family-code);font-size:12px}.Y0dWHa_table tbody tr[data-kind=subtool] .Y0dWHa_content{padding-left:26px}.Y0dWHa_inlineResult{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;display:flex}.Y0dWHa_noOutputText{color:var(--dsw-alias-label-caption)}.Y0dWHa_arrow{color:var(--dsw-alias-label-caption);flex:none;margin-right:8px}.Y0dWHa_error,.Y0dWHa_overview dd.Y0dWHa_error,.Y0dWHa_details .Y0dWHa_errorPayload{color:var(--dsw-alias-state-error-primary)}.Y0dWHa_details .Y0dWHa_errorPayload .Y0dWHa_resultBlockText{color:inherit}.Y0dWHa_details .Y0dWHa_jsonPayload.Y0dWHa_errorPayload,.Y0dWHa_details .Y0dWHa_jsonPreview.Y0dWHa_errorPayload{--json-tree-property:var(--dsw-alias-state-error-primary);--json-tree-string:var(--dsw-alias-state-error-primary);--json-tree-number:var(--dsw-alias-state-error-primary);--json-tree-keyword:var(--dsw-alias-state-error-primary);--json-tree-punctuation:var(--dsw-alias-state-error-primary);--json-tree-icon:var(--dsw-alias-state-error-primary)}.Y0dWHa_details{border-left:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-direction:column;flex:none;width:clamp(320px,38%,440px);min-width:0;max-width:calc(100% - 280px);min-height:0;display:flex;position:relative}.Y0dWHa_detailsResizeHandle{z-index:6;cursor:col-resize;touch-action:none;user-select:none;background:0 0;border:0;width:8px;padding:0;position:absolute;top:0;bottom:0;left:-4px}.Y0dWHa_detailsResizeHandle:focus-visible{outline:none}.Y0dWHa_detailsHeader{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);flex:none;justify-content:space-between;align-items:center;height:42px;padding:0 8px 0 12px;display:flex}.Y0dWHa_detailsTitle{min-width:0;color:var(--dsw-alias-label-primary);align-items:center;gap:8px;display:flex}.Y0dWHa_requestDetailsDot{corner-shape:round;background:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;width:5px;height:5px}.Y0dWHa_requestDetailsName{font:500 12px/16px var(--ds-font-family-code);flex:none}.Y0dWHa_detailsLocation{min-width:0;color:var(--dsw-alias-label-tertiary);font:11px/16px var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_close{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:18px;display:inline-flex}.Y0dWHa_close:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_detailTabs{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l2);overscroll-behavior-x:contain;scrollbar-width:none;white-space:nowrap;flex:none;gap:1px;width:100%;min-width:0;max-width:100%;height:34px;padding:0 8px;display:flex;overflow:auto hidden}.Y0dWHa_detailTabs::-webkit-scrollbar{display:none}.Y0dWHa_detailTab{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:var(--dsw-font-xs-13);background:0 0;border:0;flex:none;padding:0 9px;position:relative}.Y0dWHa_detailTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_detailTabActive{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_detailTabActive:after{background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:1px 1px 0 0;height:2px;position:absolute;bottom:0;left:9px;right:9px}.Y0dWHa_close:focus-visible,.Y0dWHa_detailTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_detailBody{min-height:0;padding-bottom:var(--dsh-trajectory-bottom-clearance,0px);scrollbar-gutter:stable;flex:1;overflow:hidden auto}.Y0dWHa_detailBodySummary{box-sizing:border-box;padding-bottom:calc(12px + var(--dsh-trajectory-bottom-clearance,0px));flex-direction:column;display:flex;overflow:hidden}.Y0dWHa_detailBodySummary>.Y0dWHa_overview{overscroll-behavior:contain;flex:0 auto;min-height:0;padding-bottom:0;overflow:auto}.Y0dWHa_detailBodySummary>.Y0dWHa_compactedSummary{flex:1;min-height:0;overflow:auto}.Y0dWHa_summaryScrollRegion{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.Y0dWHa_summaryScrollRegion:hover,.Y0dWHa_summaryScrollRegion:focus-within{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2)}.Y0dWHa_compactedSummary .Y0dWHa_markdownPayload{padding-right:18px}.Y0dWHa_overview{font:var(--dsw-font-xs-13);margin:0;padding:8px 0}.Y0dWHa_overviewParentLinks{gap:14px;display:flex}.Y0dWHa_overviewHierarchyNavLink{all:unset;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;opacity:1;align-items:center;gap:1px;display:inline-flex}.Y0dWHa_overviewHierarchyNavLink:hover{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewHierarchyJumpIconTight{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_overviewHierarchyNavLink:hover .Y0dWHa_overviewHierarchyJumpIconTight,.Y0dWHa_overviewHierarchyNavLink:focus-visible .Y0dWHa_overviewHierarchyJumpIconTight{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewHierarchyNavLink:focus-visible{color:var(--dsw-alias-label-primary);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overview>div{grid-template-columns:94px minmax(0,1fr);align-items:center;min-height:22px;padding:0 14px;display:grid}.Y0dWHa_overview>.Y0dWHa_requestTokenDetail dt{padding-left:12px}.Y0dWHa_usagePanel{padding:4px 0 10px}.Y0dWHa_usageGroup+.Y0dWHa_usageGroup{margin-top:8px}.Y0dWHa_usageHeading{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-strong-13);user-select:none;margin:0;padding:4px 14px 1px}.Y0dWHa_usageGroup .Y0dWHa_overview{padding:0}.Y0dWHa_overview dt{color:var(--dsw-alias-label-tertiary)}.Y0dWHa_overview dd{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.Y0dWHa_timestampToggle{all:unset;color:inherit;cursor:pointer;font:inherit;user-select:text}.Y0dWHa_timestampToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overviewSections{border-top:0;flex-direction:column;flex:1;min-height:min-content;display:flex;overflow:hidden}.Y0dWHa_overviewSection{flex-direction:column;flex:1 1 0;min-height:24px;max-height:max-content;display:flex;overflow:hidden}.Y0dWHa_overviewSection+.Y0dWHa_overviewSection{padding-top:2px}.Y0dWHa_overviewHeading{box-sizing:border-box;width:100%;height:24px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);font:var(--dsw-font-xs-strong-13);user-select:none;flex:none;align-items:flex-end;margin:0;padding:0 0 3px 14px;display:flex}.Y0dWHa_overviewTitle{width:max-content;height:auto;color:inherit;cursor:pointer;font:inherit;user-select:none;background:0 0;border:0;flex:none;align-items:center;gap:3px;padding:0;line-height:1;display:inline-flex}.Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_overviewTitle:hover .Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-label-primary)}.Y0dWHa_overviewTitle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_overviewTitle:focus-visible .Y0dWHa_overviewTitleIcon{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_overviewPreview{overscroll-behavior:contain;background:var(--dsw-alias-bg-layer-1);flex:1;min-height:0;overflow:auto}.Y0dWHa_overviewPreview[data-scroll-more]{mask-image:linear-gradient(#000 calc(100% - 12px),#0000)}.Y0dWHa_overviewPreview>:last-child{margin-bottom:0;padding-bottom:0}.Y0dWHa_programDescription{color:var(--dsw-alias-label-primary);font:var(--dsw-font-xs-13);white-space:pre-wrap;overflow-wrap:anywhere;flex:none;margin:0;padding:8px 14px 2px}.Y0dWHa_programIcon{vertical-align:-2px;margin-right:4px}.Y0dWHa_programSummary{font-family:var(--dsw-font-family);margin-left:5px}.Y0dWHa_detailBodyProgram,.Y0dWHa_programPanel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.Y0dWHa_programPanel{background:var(--dsw-alias-bg-layer-1);flex:1}.Y0dWHa_programActions{flex:none;align-items:center;gap:4px;height:16px;margin-left:auto;padding-right:14px;display:inline-flex}.Y0dWHa_programLanguage{color:var(--dsw-alias-label-tertiary);font:11px/16px var(--ds-font-family-code);padding-right:4px}.Y0dWHa_programAction{box-sizing:border-box;width:20px;height:16px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.Y0dWHa_programAction:hover{color:var(--dsw-alias-label-primary)}.Y0dWHa_programAction[aria-pressed=true]{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_programAction[data-state=failed]{color:var(--dsw-alias-state-error-primary)}.Y0dWHa_programAction:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_programContent{min-width:0;min-height:0}.Y0dWHa_programPanel>.Y0dWHa_programContent{overscroll-behavior:contain;flex:1;overflow:auto}.Y0dWHa_programSource{background:var(--dsw-alias-bg-layer-1);--dsl-code-block-line-white-space:pre;border-radius:0;margin:0!important}.Y0dWHa_programSource :where(pre){font:12px/16px var(--ds-font-family-code);overflow-wrap:normal;word-break:normal;tab-size:2;border-radius:0;padding:2px 14px 8px;overflow:visible;background:var(--dsw-alias-bg-layer-1)!important}.Y0dWHa_programSource pre code>.line{box-sizing:border-box;width:max-content;min-width:100%}.Y0dWHa_programContent[data-wrap=true] .Y0dWHa_programSource{--dsl-code-block-line-white-space:pre-wrap}.Y0dWHa_programContent[data-wrap=true] .Y0dWHa_programSource pre code>.line{overflow-wrap:anywhere;word-break:break-all;width:auto}.Y0dWHa_programOutput{color:var(--dsw-alias-label-primary);font:12px/16px var(--ds-font-family-code);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:2px 14px 8px}.Y0dWHa_programError:first-line{color:var(--dsw-alias-state-error-primary);font-weight:600}.Y0dWHa_overviewPreview .Y0dWHa_jsonPreview>:first-child,.Y0dWHa_overviewPreview .Y0dWHa_schemaTree>:first-child{padding-top:2px;padding-bottom:0}.Y0dWHa_overviewPreview .Y0dWHa_schemaTree{margin-bottom:0}.Y0dWHa_overviewPreview .Y0dWHa_overview{padding:2px 0 0}.Y0dWHa_overviewPreview .Y0dWHa_overview>div{min-height:22px}.Y0dWHa_markdownPreview,.Y0dWHa_markdownPayload{color:var(--dsw-alias-label-primary)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]),.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]){font:var(--dsw-font-xs-13);gap:8px}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) h1,.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]) h1{font:600 16px/22px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) h2,.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]) h2{font:600 15px/22px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) :where(h3,h4,h5,h6),.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]) :where(h3,h4,h5,h6){font:600 14px/20px var(--dsw-font-family)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) :not(pre)>code,.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]) :not(pre)>code{font:12px/18px var(--ds-font-family-code)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) table,.Y0dWHa_markdownPayload>div:not([data-markdown-variant=compact]) table{font:var(--dsw-font-xs-13)}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact])>:first-child{margin-top:0}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact])>:last-child{margin-bottom:0}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) :where(h1,h2,h3){margin:12px 0 6px}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) :where(h4,h5,h6){margin:10px 0 5px}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) :where(p,ul,ol){margin:8px 0}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) li:not(:first-child){margin-top:3px}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) blockquote{margin-top:8px}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact]) hr{margin:14px 0}.Y0dWHa_markdownPreview>div:not([data-markdown-variant=compact])>.md-code-block{margin:10px 0}.Y0dWHa_assistantContent .Y0dWHa_markdownPayload,.Y0dWHa_assistantContent .Y0dWHa_payload{min-height:0}.Y0dWHa_thinkingQuote{--dsh-content-font-size-secondary:13px;--dsh-content-font-delta-secondary:0px;border-left:2px solid var(--dsw-alias-markdown-citation);color:var(--dsw-alias-label-secondary);background:0 0;margin:6px 14px 0 12px;padding-left:6px}.Y0dWHa_thinkingQuoteOnlyPreview{margin-bottom:8px}.Y0dWHa_detailBody>.Y0dWHa_assistantContentRendered .Y0dWHa_thinkingQuote{margin-top:14px}.Y0dWHa_thinkingToggle{width:max-content;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:600 12px/18px var(--dsw-font-family);user-select:none;background:0 0;border:0;align-items:center;gap:2px;padding:0;display:flex}.Y0dWHa_thinkingChevron{transition:transform .12s var(--ds-ease-in-out);flex:none}.Y0dWHa_thinkingToggle[aria-expanded=true] .Y0dWHa_thinkingChevron{transform:rotate(90deg)}.Y0dWHa_thinkingToggle:hover{color:var(--dsw-alias-label-secondary)}.Y0dWHa_thinkingToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_thinkingQuote .Y0dWHa_markdownPreview,.Y0dWHa_thinkingQuote .Y0dWHa_markdownPayload,.Y0dWHa_thinkingQuote .Y0dWHa_payload{min-height:0;color:var(--dsw-alias-label-secondary);background:0 0;padding:2px 0}.Y0dWHa_assistantOutput{background:var(--dsw-alias-bg-layer-1)}.Y0dWHa_markdownPreview{padding:2px 14px 8px}.Y0dWHa_markdownPayload{min-height:100%;padding:14px}.Y0dWHa_jsonPayload{min-height:100%}.Y0dWHa_jsonPreview{min-height:0}.Y0dWHa_schema{background:var(--dsw-alias-bg-layer-1);min-height:100%}.Y0dWHa_schemaPreview{min-height:0}.Y0dWHa_schemaIntro{padding:12px 14px 6px}.Y0dWHa_schemaPreview .Y0dWHa_schemaIntro{padding-top:2px}.Y0dWHa_schemaName{color:var(--dsw-alias-label-primary);font:600 12px/18px var(--ds-font-family-code);margin:0}.Y0dWHa_schemaDescription{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);white-space:pre-wrap;margin:2px 0 0}.Y0dWHa_schemaParameters{min-width:0}.Y0dWHa_schemaParametersTitle{color:var(--dsw-alias-label-tertiary);font:600 11px/16px var(--dsw-font-family);user-select:none;margin:0;padding:4px 14px 2px}.Y0dWHa_schemaTree{margin:0 6px 8px 0}.Y0dWHa_payload{box-sizing:border-box;overflow-wrap:anywhere;min-height:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;margin:0;padding:14px}.Y0dWHa_payloadPreview{min-height:0;padding:2px 14px 8px}.Y0dWHa_sourceBlocks{box-sizing:border-box;min-height:100%;padding:12px 14px}.Y0dWHa_sourceBlock+.Y0dWHa_sourceBlock{margin-top:14px}.Y0dWHa_sourceBlockHeader,.Y0dWHa_sourceBlockJumpTarget{user-select:none;align-items:center;gap:3px;width:max-content;margin-bottom:3px;display:flex}.Y0dWHa_sourceBlockJumpTarget{all:unset;cursor:pointer;user-select:none;align-items:center;gap:3px;width:max-content;margin-bottom:3px;display:flex}.Y0dWHa_sourceBlockLabel{color:var(--dsw-alias-label-tertiary);font:11px/16px var(--ds-font-family-code)}.Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-label-caption);flex:none}.Y0dWHa_sourceBlockJumpTarget:hover .Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-label-primary)}.Y0dWHa_sourceBlockJumpTarget:focus-visible{outline:none}.Y0dWHa_sourceBlockJumpTarget:focus-visible .Y0dWHa_sourceBlockJumpIcon{color:var(--dsw-alias-state-business-primary)}.Y0dWHa_sourceBlockContent{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;background:0 0;margin:0}.Y0dWHa_messageImages{flex-direction:column;gap:8px;margin:8px 14px 14px;display:flex}.Y0dWHa_attachments{flex-direction:column;gap:8px;margin:8px 14px 14px;padding:0;list-style:none;display:flex}.Y0dWHa_attachmentsPreview{gap:6px;margin-block:6px 8px}.Y0dWHa_attachmentRow{border:.5px solid var(--dsw-alias-border-l2-darkmode-thin);border-radius:12px;align-items:center;gap:10px;min-width:0;padding:8px;display:flex}.Y0dWHa_attachmentIcon{flex:0 0 48px;place-items:center;width:48px;height:48px;display:grid}.Y0dWHa_attachmentInfo{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.Y0dWHa_attachmentName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.Y0dWHa_attachmentMetadata{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.Y0dWHa_attachmentDisclosure{border:.5px solid var(--dsw-alias-border-l2-darkmode-thin);border-radius:8px;margin-block:8px}.Y0dWHa_attachmentDisclosure>summary{cursor:pointer;padding:8px}.Y0dWHa_attachmentDisclosure>summary .Y0dWHa_attachmentName{display:block}.Y0dWHa_attachmentDisclosure>summary:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.Y0dWHa_attachmentDisclosure>pre{padding:0 8px 8px}.Y0dWHa_assistantToolCalls{box-sizing:border-box;max-width:100%;color:var(--dsw-alias-label-secondary);font:11px/17px var(--ds-font-family-code);margin:2px 14px 12px;padding:0;list-style:none}.Y0dWHa_assistantToolCallsPreview{margin-top:2px;margin-bottom:8px}.Y0dWHa_assistantToolCalls li{min-width:0}.Y0dWHa_assistantToolCallButton{all:unset;box-sizing:border-box;cursor:pointer;border-radius:3px;align-items:center;width:calc(100% + 4px);min-width:0;height:19px;margin-left:-4px;padding:0 4px;display:flex}.Y0dWHa_assistantToolCallButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_assistantToolCallButton:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_assistantToolCallIcon{color:var(--dsw-alias-label-caption);flex:none;margin-right:5px}.Y0dWHa_assistantToolCallButton:hover .Y0dWHa_assistantToolCallIcon,.Y0dWHa_assistantToolCallButton:focus-visible .Y0dWHa_assistantToolCallIcon{color:var(--dsw-alias-label-secondary)}.Y0dWHa_assistantToolCallText{white-space:nowrap;flex:1;min-width:0;display:flex;overflow:hidden}.Y0dWHa_assistantToolCallName{color:var(--dsw-alias-label-secondary);flex:none;margin-right:5px;font-weight:500}.Y0dWHa_assistantToolCallArgs{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_systemPrompt{box-sizing:border-box}.Y0dWHa_toolCatalog{min-height:100%;padding:8px 0 16px}.Y0dWHa_toolCatalogItem{border-bottom:.5px solid var(--dsw-alias-border-l1)}.Y0dWHa_toolCatalogSummary{box-sizing:border-box;cursor:pointer;user-select:none;grid-template-columns:12px 12px max-content minmax(0,1fr);align-items:center;gap:5px;min-height:30px;padding:4px 12px;list-style:none;display:grid}.Y0dWHa_toolCatalogSummary::-webkit-details-marker{display:none}.Y0dWHa_toolCatalogSummary:hover{background:var(--dsw-alias-interactive-bg-hover)}.Y0dWHa_toolCatalogSummary:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Y0dWHa_toolCatalogChevron,.Y0dWHa_toolCatalogIcon{color:var(--dsw-alias-label-caption)}.Y0dWHa_toolCatalogChevron{transition:transform .1s var(--ds-ease-in-out)}.Y0dWHa_toolCatalogItem[open] .Y0dWHa_toolCatalogChevron{transform:rotate(90deg)}.Y0dWHa_toolCatalogName{color:var(--dsw-alias-label-primary);font:500 12px/18px var(--ds-font-family-code)}.Y0dWHa_toolCatalogDescription{min-width:0;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Y0dWHa_toolCatalogDefinition{background:var(--dsw-alias-bg-base);padding:0 0 8px 29px}.Y0dWHa_toolCatalogFullDescription{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);white-space:pre-wrap;margin:0;padding:7px 14px 4px 0}.Y0dWHa_toolCatalogTree{margin-left:-14px;margin-right:6px}.Y0dWHa_resultBlocks{box-sizing:border-box;flex-direction:column;gap:10px;min-height:100%;padding:14px;display:flex}.Y0dWHa_resultBlocksPreview{gap:6px;min-height:0;padding:2px 14px 8px}.Y0dWHa_resultBlockText{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);font:12px/19px var(--ds-font-family-code);tab-size:2;white-space:pre-wrap;background:0 0;margin:0}.Y0dWHa_overviewPreview .Y0dWHa_noPayload{padding:2px 14px 0}.Y0dWHa_noPayload{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);margin:0;padding:18px 14px}@media (width<=760px){.Y0dWHa_details{z-index:5;border-left-color:var(--dsw-alias-border-l3);width:min(92%,420px);max-width:92%;position:absolute;top:0;bottom:0;right:0;box-shadow:-12px 0 32px #00000024}}";
3662
3789
  const tagId$3 = "@deepseek-ai/dsh-client-ui-trajectory/TrajectoryTable.module.css";
3663
3790
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
3664
3791
  const tag = document.createElement("style");
@@ -3680,6 +3807,14 @@ window.__ModuleLoader__.load({
3680
3807
  "assistantToolCalls": "Y0dWHa_assistantToolCalls",
3681
3808
  "assistantToolCallsPreview": "Y0dWHa_assistantToolCallsPreview",
3682
3809
  "assistantVioletBright": "Y0dWHa_assistantVioletBright",
3810
+ "attachmentDisclosure": "Y0dWHa_attachmentDisclosure",
3811
+ "attachmentIcon": "Y0dWHa_attachmentIcon",
3812
+ "attachmentInfo": "Y0dWHa_attachmentInfo",
3813
+ "attachmentMetadata": "Y0dWHa_attachmentMetadata",
3814
+ "attachmentName": "Y0dWHa_attachmentName",
3815
+ "attachmentRow": "Y0dWHa_attachmentRow",
3816
+ "attachments": "Y0dWHa_attachments",
3817
+ "attachmentsPreview": "Y0dWHa_attachmentsPreview",
3683
3818
  "close": "Y0dWHa_close",
3684
3819
  "collapsedTurnContent": "Y0dWHa_collapsedTurnContent",
3685
3820
  "collapsedTurnEllipsis": "Y0dWHa_collapsedTurnEllipsis",
@@ -3691,6 +3826,7 @@ window.__ModuleLoader__.load({
3691
3826
  "contentText": "Y0dWHa_contentText",
3692
3827
  "contextGreen": "Y0dWHa_contextGreen",
3693
3828
  "detailBody": "Y0dWHa_detailBody",
3829
+ "detailBodyProgram": "Y0dWHa_detailBodyProgram",
3694
3830
  "detailBodySummary": "Y0dWHa_detailBodySummary",
3695
3831
  "detailTab": "Y0dWHa_detailTab",
3696
3832
  "detailTabActive": "Y0dWHa_detailTabActive",
@@ -3724,7 +3860,6 @@ window.__ModuleLoader__.load({
3724
3860
  "markdownPreview": "Y0dWHa_markdownPreview",
3725
3861
  "message": "Y0dWHa_message",
3726
3862
  "messageImages": "Y0dWHa_messageImages",
3727
- "messageImagesPreview": "Y0dWHa_messageImagesPreview",
3728
3863
  "noOutputText": "Y0dWHa_noOutputText",
3729
3864
  "noPayload": "Y0dWHa_noPayload",
3730
3865
  "overview": "Y0dWHa_overview",
@@ -3739,6 +3874,17 @@ window.__ModuleLoader__.load({
3739
3874
  "overviewTitleIcon": "Y0dWHa_overviewTitleIcon",
3740
3875
  "payload": "Y0dWHa_payload",
3741
3876
  "payloadPreview": "Y0dWHa_payloadPreview",
3877
+ "programAction": "Y0dWHa_programAction",
3878
+ "programActions": "Y0dWHa_programActions",
3879
+ "programContent": "Y0dWHa_programContent",
3880
+ "programDescription": "Y0dWHa_programDescription",
3881
+ "programError": "Y0dWHa_programError",
3882
+ "programIcon": "Y0dWHa_programIcon",
3883
+ "programLanguage": "Y0dWHa_programLanguage",
3884
+ "programOutput": "Y0dWHa_programOutput",
3885
+ "programPanel": "Y0dWHa_programPanel",
3886
+ "programSource": "Y0dWHa_programSource",
3887
+ "programSummary": "Y0dWHa_programSummary",
3742
3888
  "promptDiff": "Y0dWHa_promptDiff",
3743
3889
  "promptDiffLineadded": "Y0dWHa_promptDiffLineadded",
3744
3890
  "promptDiffLinecontext": "Y0dWHa_promptDiffLinecontext",
@@ -3971,8 +4117,8 @@ window.__ModuleLoader__.load({
3971
4117
  copyCompactJson: t("copy.compactJson"),
3972
4118
  copied: t("copied"),
3973
4119
  copyFailed: t("copy.failed"),
3974
- collapseNode: t("json.collapseNode"),
3975
- expandNode: t("json.expandNode"),
4120
+ collapseNode: t("collapse"),
4121
+ expandNode: t("expand"),
3976
4122
  copyButtonTitle: (action) => t("copy.optionsHint", { action })
3977
4123
  };
3978
4124
  }
@@ -4321,13 +4467,15 @@ window.__ModuleLoader__.load({
4321
4467
  })]
4322
4468
  });
4323
4469
  }
4324
- function RequestOptions({ options, preview = false, t }) {
4470
+ function RequestOptions({ options, preview = false, stringWrapping, t }) {
4325
4471
  if (options === void 0) return (0, react_jsx_runtime.jsx)("p", {
4326
4472
  className: TrajectoryTable_module_css_default.noPayload,
4327
4473
  children: t("options.notRecorded")
4328
4474
  });
4329
4475
  return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4330
4476
  data: options,
4477
+ stringWrapping,
4478
+ collapsedStringLines: preview ? 3 : 12,
4331
4479
  label: t("options.json"),
4332
4480
  labels: jsonTreeLabels(t),
4333
4481
  className: preview ? TrajectoryTable_module_css_default.jsonPreview : TrajectoryTable_module_css_default.jsonPayload
@@ -4349,7 +4497,7 @@ window.__ModuleLoader__.load({
4349
4497
  if (typeof kind !== "string" || kind === "") return t("source.unknown");
4350
4498
  return `${kind[0]?.toUpperCase() ?? ""}${kind.slice(1)}`;
4351
4499
  }
4352
- function MessageSource({ record, t }) {
4500
+ function MessageSource({ record, stringWrapping, t }) {
4353
4501
  const source = record.cell.messageSource;
4354
4502
  if (source === void 0) return (0, react_jsx_runtime.jsx)("p", {
4355
4503
  className: TrajectoryTable_module_css_default.noPayload,
@@ -4357,6 +4505,8 @@ window.__ModuleLoader__.load({
4357
4505
  });
4358
4506
  return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4359
4507
  data: typeof source === "object" && source !== null ? source : { value: source },
4508
+ stringWrapping,
4509
+ collapsedStringLines: 12,
4360
4510
  label: t("source.messageJson"),
4361
4511
  labels: jsonTreeLabels(t),
4362
4512
  className: TrajectoryTable_module_css_default.jsonPayload
@@ -4427,9 +4577,9 @@ window.__ModuleLoader__.load({
4427
4577
  },
4428
4578
  ...record.cell.inputDetail ? [{
4429
4579
  id: "input",
4430
- labelKey: "tab.payload"
4580
+ labelKey: codeProgram(record.cell) === void 0 ? "tab.payload" : "code.source"
4431
4581
  }] : [],
4432
- ...record.cell.outputDetail ? [{
4582
+ ...record.cell.outputDetail || codeProgram(record.cell) !== void 0 ? [{
4433
4583
  id: "output",
4434
4584
  labelKey: "tab.result"
4435
4585
  }] : [],
@@ -4445,6 +4595,8 @@ window.__ModuleLoader__.load({
4445
4595
  }
4446
4596
  function recordDisplayText(cell, t) {
4447
4597
  if (isToolCallOnly(cell, t)) return "";
4598
+ const program = codeProgram(cell);
4599
+ if (program !== void 0) return `${PTC_TOOL_NAME} · ${program.description.replace(/\s+/g, " ")}`;
4448
4600
  if (cell.previewMarkdown !== void 0) {
4449
4601
  const preview = trajectoryPreviewText(cell.previewMarkdown);
4450
4602
  if (cell.text === "") return preview;
@@ -4457,11 +4609,16 @@ window.__ModuleLoader__.load({
4457
4609
  function recordResultText(cell) {
4458
4610
  return cell.resultPreviewMarkdown === void 0 ? cell.result : trajectoryPreviewText(cell.resultPreviewMarkdown);
4459
4611
  }
4460
- function toolCallTextParts(kind, text) {
4461
- if (kind !== "tool" && kind !== "subtool") return void 0;
4612
+ function toolCallTextParts(cell, text) {
4613
+ if (cell.kind !== "tool" && cell.kind !== "subtool") return void 0;
4614
+ const program = cell.toolName === PTC_TOOL_NAME;
4462
4615
  const separator = text.indexOf(" · ");
4463
- if (separator === -1) return { name: text };
4616
+ if (separator === -1) return {
4617
+ name: text,
4618
+ program
4619
+ };
4464
4620
  return {
4621
+ program,
4465
4622
  name: text.slice(0, separator),
4466
4623
  args: text.slice(separator + 3)
4467
4624
  };
@@ -4473,6 +4630,7 @@ window.__ModuleLoader__.load({
4473
4630
  const displayText = (0, react.useMemo)(() => recordDisplayText(cell, t), [
4474
4631
  cell.kind,
4475
4632
  cell.text,
4633
+ cell.toolName,
4476
4634
  cell.previewMarkdown,
4477
4635
  cell.inputDetail,
4478
4636
  cell.outputDetail,
@@ -4481,7 +4639,7 @@ window.__ModuleLoader__.load({
4481
4639
  ]);
4482
4640
  const resultText = (0, react.useMemo)(() => recordResultText(cell), [cell.result, cell.resultPreviewMarkdown]);
4483
4641
  const toolCallOnly = isToolCallOnly(cell, t);
4484
- const toolCallText = toolCallTextParts(cell.kind, displayText);
4642
+ const toolCallText = toolCallTextParts(cell, displayText);
4485
4643
  return children({
4486
4644
  displayText,
4487
4645
  listDisplayText: toolCallOnly ? t("record.toolCallOnly") : toolCallText === void 0 ? displayText : [toolCallText.name, toolCallText.args].filter(Boolean).join(" "),
@@ -4496,21 +4654,25 @@ window.__ModuleLoader__.load({
4496
4654
  children: t("record.toolCallOnly")
4497
4655
  });
4498
4656
  if (toolCallText === void 0) return displayText || "—";
4499
- return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("span", {
4657
+ return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)("span", {
4500
4658
  className: TrajectoryTable_module_css_default.toolCallNameTypeface,
4501
- children: toolCallText.name || "—"
4659
+ children: [toolCallText.program && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutline16, {
4660
+ className: TrajectoryTable_module_css_default.programIcon,
4661
+ size: 12
4662
+ }), toolCallText.name || "—"]
4502
4663
  }), toolCallText.args !== void 0 && (0, react_jsx_runtime.jsx)("span", {
4503
- className: TrajectoryTable_module_css_default.toolCallPayload,
4664
+ className: toolCallText.program ? TrajectoryTable_module_css_default.programSummary : TrajectoryTable_module_css_default.toolCallPayload,
4504
4665
  children: toolCallText.args
4505
4666
  })] });
4506
4667
  }
4507
- function MarkdownFragment({ text, rendered, preview, t }) {
4668
+ function MarkdownFragment({ text, rendered, preview, variant = "body", t }) {
4508
4669
  const labels = (0, react.useMemo)(() => markdownLabels(t), [t]);
4509
4670
  if (rendered) return (0, react_jsx_runtime.jsx)("div", {
4510
4671
  className: preview ? TrajectoryTable_module_css_default.markdownPreview : TrajectoryTable_module_css_default.markdownPayload,
4511
4672
  children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
4512
4673
  text,
4513
- labels
4674
+ labels,
4675
+ variant
4514
4676
  })
4515
4677
  });
4516
4678
  return (0, react_jsx_runtime.jsx)("pre", {
@@ -4518,60 +4680,113 @@ window.__ModuleLoader__.load({
4518
4680
  children: text
4519
4681
  });
4520
4682
  }
4521
- function SourceBlocks({ blocks, onOpenCall, renderImages, t }) {
4683
+ function SourceBlocks({ blocks, onOpenCall, t }) {
4684
+ const attachments = new Map(recordAttachments(blocks, t).map((entry) => [entry.index, entry]));
4522
4685
  return (0, react_jsx_runtime.jsx)("div", {
4523
4686
  className: TrajectoryTable_module_css_default.sourceBlocks,
4524
- children: blocks.map((block, index) => (0, react_jsx_runtime.jsxs)("section", {
4525
- className: TrajectoryTable_module_css_default.sourceBlock,
4526
- children: [block.callId !== void 0 ? (0, react_jsx_runtime.jsxs)("button", {
4527
- type: "button",
4528
- className: TrajectoryTable_module_css_default.sourceBlockJumpTarget,
4529
- "aria-label": t("block.openSummary", { index: index + 1 }),
4530
- title: t("block.openSummaryTitle"),
4531
- onClick: () => {
4532
- if (block.callId !== void 0) onOpenCall(block.callId);
4533
- },
4534
- children: [(0, react_jsx_runtime.jsx)("span", {
4687
+ children: blocks.map((block, index) => {
4688
+ const attachment = attachments.get(index);
4689
+ return attachment !== void 0 ? (0, react_jsx_runtime.jsxs)("details", {
4690
+ className: TrajectoryTable_module_css_default.attachmentDisclosure,
4691
+ children: [(0, react_jsx_runtime.jsxs)("summary", { children: [(0, react_jsx_runtime.jsx)("span", {
4535
4692
  className: TrajectoryTable_module_css_default.sourceBlockLabel,
4536
4693
  children: t("block.label", {
4537
4694
  index: index + 1,
4538
4695
  type: block.type
4539
4696
  })
4540
- }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
4541
- className: TrajectoryTable_module_css_default.sourceBlockJumpIcon,
4542
- size: 12
4697
+ }), (0, react_jsx_runtime.jsx)("span", {
4698
+ className: TrajectoryTable_module_css_default.attachmentName,
4699
+ title: attachment.name,
4700
+ children: attachment.name
4701
+ })] }), (0, react_jsx_runtime.jsx)("pre", {
4702
+ className: TrajectoryTable_module_css_default.sourceBlockContent,
4703
+ children: block.content
4543
4704
  })]
4544
- }) : (0, react_jsx_runtime.jsx)("div", {
4545
- className: TrajectoryTable_module_css_default.sourceBlockHeader,
4546
- children: (0, react_jsx_runtime.jsx)("span", {
4547
- className: TrajectoryTable_module_css_default.sourceBlockLabel,
4548
- children: t("block.label", {
4549
- index: index + 1,
4550
- type: block.type
4705
+ }, index) : (0, react_jsx_runtime.jsxs)("section", {
4706
+ className: TrajectoryTable_module_css_default.sourceBlock,
4707
+ children: [block.callId !== void 0 ? (0, react_jsx_runtime.jsxs)("button", {
4708
+ type: "button",
4709
+ className: TrajectoryTable_module_css_default.sourceBlockJumpTarget,
4710
+ "aria-label": t("block.openSummary", { index: index + 1 }),
4711
+ title: t("block.openSummaryTitle"),
4712
+ onClick: () => {
4713
+ if (block.callId !== void 0) onOpenCall(block.callId);
4714
+ },
4715
+ children: [(0, react_jsx_runtime.jsx)("span", {
4716
+ className: TrajectoryTable_module_css_default.sourceBlockLabel,
4717
+ children: t("block.label", {
4718
+ index: index + 1,
4719
+ type: block.type
4720
+ })
4721
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
4722
+ className: TrajectoryTable_module_css_default.sourceBlockJumpIcon,
4723
+ size: 12
4724
+ })]
4725
+ }) : (0, react_jsx_runtime.jsx)("div", {
4726
+ className: TrajectoryTable_module_css_default.sourceBlockHeader,
4727
+ children: (0, react_jsx_runtime.jsx)("span", {
4728
+ className: TrajectoryTable_module_css_default.sourceBlockLabel,
4729
+ children: t("block.label", {
4730
+ index: index + 1,
4731
+ type: block.type
4732
+ })
4551
4733
  })
4552
- })
4553
- }), block.attachment !== void 0 ? renderImages({
4554
- images: [{ attachment: block.attachment }],
4555
- align: "start"
4556
- }) : (0, react_jsx_runtime.jsx)("pre", {
4557
- className: TrajectoryTable_module_css_default.sourceBlockContent,
4558
- children: block.content
4559
- })]
4560
- }, index))
4734
+ }), (0, react_jsx_runtime.jsx)("pre", {
4735
+ className: TrajectoryTable_module_css_default.sourceBlockContent,
4736
+ children: block.content
4737
+ })]
4738
+ }, index);
4739
+ })
4561
4740
  });
4562
4741
  }
4563
- function recordImages(blocks) {
4564
- return (blocks ?? []).flatMap((block) => block.attachment !== void 0 ? [{ attachment: block.attachment }] : []);
4742
+ function recordAttachments(blocks, t) {
4743
+ let imageIndex = 0;
4744
+ return (blocks ?? []).flatMap((block, index) => {
4745
+ const ref = block.attachment ?? block.file;
4746
+ if (ref === void 0) return [];
4747
+ if (block.attachment !== void 0) imageIndex += 1;
4748
+ return [{
4749
+ block,
4750
+ index,
4751
+ name: ref.name ?? t("attachment.imageName", { index: imageIndex }),
4752
+ metadata: [
4753
+ block.attachment?.mediaType ?? (0, _deepseek_ai_dsh_client_ui_primitives.fileExtension)(ref.name ?? "").toUpperCase(),
4754
+ (0, _deepseek_ai_dsh_client_ui_primitives.fileSizeText)(ref.bytes),
4755
+ ...block.attachment === void 0 ? [] : [`${block.attachment.width} × ${block.attachment.height}`]
4756
+ ].filter(Boolean).join(" · ")
4757
+ }];
4758
+ });
4565
4759
  }
4566
- function MessageImages({ blocks, preview, renderImages }) {
4567
- const images = recordImages(blocks);
4568
- if (images.length === 0) return null;
4569
- return (0, react_jsx_runtime.jsx)("div", {
4570
- className: preview ? `${TrajectoryTable_module_css_default.messageImages} ${TrajectoryTable_module_css_default.messageImagesPreview}` : TrajectoryTable_module_css_default.messageImages,
4571
- children: renderImages({
4572
- images,
4573
- align: "start"
4574
- })
4760
+ function RecordAttachments({ blocks, preview, renderImages, t }) {
4761
+ const attachments = recordAttachments(blocks, t);
4762
+ if (attachments.length === 0) return null;
4763
+ return (0, react_jsx_runtime.jsx)("ul", {
4764
+ className: preview ? `${TrajectoryTable_module_css_default.attachments} ${TrajectoryTable_module_css_default.attachmentsPreview}` : TrajectoryTable_module_css_default.attachments,
4765
+ "aria-label": t("attachment.list"),
4766
+ children: attachments.map(({ block, index, name, metadata }) => (0, react_jsx_runtime.jsxs)("li", {
4767
+ className: TrajectoryTable_module_css_default.attachmentRow,
4768
+ children: [block.attachment !== void 0 ? renderImages({
4769
+ images: [{
4770
+ attachment: block.attachment,
4771
+ label: name
4772
+ }],
4773
+ align: "start",
4774
+ thumbnail: true
4775
+ }) : (0, react_jsx_runtime.jsx)("span", {
4776
+ className: TrajectoryTable_module_css_default.attachmentIcon,
4777
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, { path: name })
4778
+ }), (0, react_jsx_runtime.jsxs)("div", {
4779
+ className: TrajectoryTable_module_css_default.attachmentInfo,
4780
+ children: [(0, react_jsx_runtime.jsx)("span", {
4781
+ className: TrajectoryTable_module_css_default.attachmentName,
4782
+ title: name,
4783
+ children: name
4784
+ }), (0, react_jsx_runtime.jsx)("span", {
4785
+ className: TrajectoryTable_module_css_default.attachmentMetadata,
4786
+ children: metadata
4787
+ })]
4788
+ })]
4789
+ }, index))
4575
4790
  });
4576
4791
  }
4577
4792
  function AssistantToolCalls({ blocks, preview, onOpenCall, t }) {
@@ -4630,7 +4845,7 @@ window.__ModuleLoader__.load({
4630
4845
  })
4631
4846
  });
4632
4847
  }
4633
- function ToolCatalog({ tools, t }) {
4848
+ function ToolCatalog({ tools, stringWrapping, t }) {
4634
4849
  if (tools.length === 0) return (0, react_jsx_runtime.jsx)("p", {
4635
4850
  className: TrajectoryTable_module_css_default.noPayload,
4636
4851
  children: t("record.toolsMissing")
@@ -4663,6 +4878,7 @@ window.__ModuleLoader__.load({
4663
4878
  children: tool.description
4664
4879
  }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4665
4880
  data: tool.parameters,
4881
+ stringWrapping,
4666
4882
  label: t("record.namedParametersJson", { name: tool.name }),
4667
4883
  labels: jsonTreeLabels(t),
4668
4884
  className: TrajectoryTable_module_css_default.toolCatalogTree
@@ -4757,7 +4973,6 @@ window.__ModuleLoader__.load({
4757
4973
  if (!rendered && record.cell.sourceBlocks && record.cell.sourceBlocks.length > 0) return (0, react_jsx_runtime.jsx)(SourceBlocks, {
4758
4974
  blocks: record.cell.sourceBlocks,
4759
4975
  onOpenCall,
4760
- renderImages,
4761
4976
  t
4762
4977
  });
4763
4978
  if (record.cell.thinkingDetail) {
@@ -4787,6 +5002,7 @@ window.__ModuleLoader__.load({
4787
5002
  text: record.cell.thinkingDetail,
4788
5003
  rendered,
4789
5004
  preview,
5005
+ variant: "compact",
4790
5006
  t
4791
5007
  })]
4792
5008
  }),
@@ -4805,25 +5021,26 @@ window.__ModuleLoader__.load({
4805
5021
  onOpenCall,
4806
5022
  t
4807
5023
  }),
4808
- (0, react_jsx_runtime.jsx)(MessageImages, {
5024
+ (0, react_jsx_runtime.jsx)(RecordAttachments, {
4809
5025
  blocks: record.cell.sourceBlocks,
4810
5026
  preview,
4811
- renderImages
5027
+ renderImages,
5028
+ t
4812
5029
  })
4813
5030
  ]
4814
5031
  });
4815
5032
  }
4816
5033
  const source = markdownSource(record);
4817
- const hasImages = record.cell.sourceBlocks?.some((block) => block.attachment !== void 0) === true;
5034
+ const hasAttachments = record.cell.sourceBlocks?.some((block) => block.attachment !== void 0 || block.file !== void 0) === true;
4818
5035
  const hasToolCalls = record.cell.kind === "message" && record.cell.sourceBlocks?.some((block) => block.type === "tool-call") === true;
4819
- if (!source && !hasImages && !hasToolCalls) {
5036
+ if (!source && !hasAttachments && !hasToolCalls) {
4820
5037
  const emptyLabel = isToolCallOnly(record.cell, t) ? t("record.toolCallOnly") : record.cell.text || t("record.noContent");
4821
5038
  return (0, react_jsx_runtime.jsx)("p", {
4822
5039
  className: TrajectoryTable_module_css_default.noPayload,
4823
5040
  children: emptyLabel
4824
5041
  });
4825
5042
  }
4826
- if (!rendered || !hasImages && !hasToolCalls) return (0, react_jsx_runtime.jsx)(MarkdownFragment, {
5043
+ if (!rendered || !hasAttachments && !hasToolCalls) return (0, react_jsx_runtime.jsx)(MarkdownFragment, {
4827
5044
  text: source ?? "",
4828
5045
  rendered,
4829
5046
  preview,
@@ -4842,14 +5059,15 @@ window.__ModuleLoader__.load({
4842
5059
  onOpenCall,
4843
5060
  t
4844
5061
  }),
4845
- (0, react_jsx_runtime.jsx)(MessageImages, {
5062
+ (0, react_jsx_runtime.jsx)(RecordAttachments, {
4846
5063
  blocks: record.cell.sourceBlocks,
4847
5064
  preview,
4848
- renderImages
5065
+ renderImages,
5066
+ t
4849
5067
  })
4850
5068
  ] });
4851
5069
  }
4852
- function RecordTiming({ record, t }) {
5070
+ function RecordTiming({ record, preview = false, t }) {
4853
5071
  return record.cell.kind === "message" && record.cell.assistantMetrics !== void 0 ? (0, react_jsx_runtime.jsx)(AssistantTimingPanel, {
4854
5072
  metrics: record.cell.assistantMetrics,
4855
5073
  t
@@ -4861,13 +5079,14 @@ window.__ModuleLoader__.load({
4861
5079
  t
4862
5080
  })] }),
4863
5081
  (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.duration") }), (0, react_jsx_runtime.jsx)("dd", { children: formatElapsedSeconds(record.cell.timeSeconds, t) })] }),
4864
- (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.source") }), (0, react_jsx_runtime.jsx)("dd", { children: record.cell.timeSeconds === null ? t("timing.notAvailable") : t("timing.sessionTimestamps") })] })
5082
+ !preview && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.source") }), (0, react_jsx_runtime.jsx)("dd", { children: record.cell.timeSeconds === null ? t("timing.notAvailable") : t("timing.sessionTimestamps") })] })
4865
5083
  ]
4866
5084
  });
4867
5085
  }
4868
- function RequestTiming({ assistant, anchor, request, t }) {
5086
+ function RequestTiming({ assistant, anchor, request, preview = false, t }) {
4869
5087
  if (assistant !== void 0) return (0, react_jsx_runtime.jsx)(RecordTiming, {
4870
5088
  record: assistant,
5089
+ preview,
4871
5090
  t
4872
5091
  });
4873
5092
  if (request?.startedAt !== void 0) {
@@ -4880,7 +5099,7 @@ window.__ModuleLoader__.load({
4880
5099
  t
4881
5100
  })] }),
4882
5101
  (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.duration") }), (0, react_jsx_runtime.jsx)("dd", { children: formatElapsedSeconds(duration, t) })] }),
4883
- (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.source") }), (0, react_jsx_runtime.jsx)("dd", { children: duration === null ? t("timing.sessionTimestampsRunning") : t("timing.sessionTimestamps") })] })
5102
+ !preview && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.source") }), (0, react_jsx_runtime.jsx)("dd", { children: duration === null ? t("timing.sessionTimestampsRunning") : t("timing.sessionTimestamps") })] })
4884
5103
  ]
4885
5104
  });
4886
5105
  }
@@ -4892,7 +5111,7 @@ window.__ModuleLoader__.load({
4892
5111
  })] }), (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.duration") }), (0, react_jsx_runtime.jsx)("dd", { children: formatElapsedSeconds(null, t) })] })]
4893
5112
  });
4894
5113
  }
4895
- function RecordPayload({ record, direction, preview = false, renderImages, t }) {
5114
+ function RecordPayload({ record, direction, preview = false, renderImages, stringWrapping, t }) {
4896
5115
  const value = direction === "input" ? record.cell.inputDetail : record.cell.outputDetail;
4897
5116
  const missing = direction === "input" ? t("record.noPayload") : t("record.noResult");
4898
5117
  if (!value) return (0, react_jsx_runtime.jsx)("p", {
@@ -4905,6 +5124,8 @@ window.__ModuleLoader__.load({
4905
5124
  const json = parseJsonContainer(value);
4906
5125
  if (direction === "output" && record.cell.outputBlocks?.length === 1 && record.cell.outputBlocks[0]?.type === "text" && json !== void 0) return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4907
5126
  data: json,
5127
+ stringWrapping,
5128
+ collapsedStringLines: preview ? 3 : 12,
4908
5129
  label: t("record.resultJson"),
4909
5130
  labels: jsonTreeLabels(t),
4910
5131
  className: payloadClassName
@@ -4925,6 +5146,8 @@ window.__ModuleLoader__.load({
4925
5146
  });
4926
5147
  if (json !== void 0) return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4927
5148
  data: json,
5149
+ stringWrapping,
5150
+ collapsedStringLines: preview ? 3 : 12,
4928
5151
  label: t(direction === "input" ? "record.payloadJson" : "record.outputJson"),
4929
5152
  labels: jsonTreeLabels(t),
4930
5153
  className: payloadClassName
@@ -4939,7 +5162,7 @@ window.__ModuleLoader__.load({
4939
5162
  children: value
4940
5163
  });
4941
5164
  }
4942
- function RecordSchema({ record, preview = false, t }) {
5165
+ function RecordSchema({ record, preview = false, stringWrapping, t }) {
4943
5166
  if (!record.cell.schemaDetail) return (0, react_jsx_runtime.jsx)("p", {
4944
5167
  className: TrajectoryTable_module_css_default.noPayload,
4945
5168
  children: t("record.schemaUnavailable")
@@ -4963,6 +5186,8 @@ window.__ModuleLoader__.load({
4963
5186
  children: t("record.parameters")
4964
5187
  }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
4965
5188
  data: schema.parameters,
5189
+ stringWrapping,
5190
+ collapsedStringLines: preview ? 3 : 12,
4966
5191
  label: t("record.namedParametersJson", { name: schema.name }),
4967
5192
  labels: jsonTreeLabels(t),
4968
5193
  className: TrajectoryTable_module_css_default.schemaTree
@@ -4997,12 +5222,184 @@ window.__ModuleLoader__.load({
4997
5222
  return;
4998
5223
  }
4999
5224
  }
5000
- function OverviewSection({ label, onOpen, children }) {
5225
+ function InspectorCopyButton({ text, label, t }) {
5226
+ const [state, setState] = (0, react.useState)("idle");
5227
+ (0, react.useEffect)(() => {
5228
+ if (state === "idle") return;
5229
+ const timer = setTimeout(() => {
5230
+ setState("idle");
5231
+ }, 1500);
5232
+ return () => {
5233
+ clearTimeout(timer);
5234
+ };
5235
+ }, [state]);
5236
+ const title = state === "idle" ? label : t(state === "copied" ? "copied" : "copy.failed");
5237
+ return (0, react_jsx_runtime.jsx)("button", {
5238
+ type: "button",
5239
+ className: TrajectoryTable_module_css_default.programAction,
5240
+ "data-state": state,
5241
+ "aria-label": title,
5242
+ title,
5243
+ onClick: () => {
5244
+ (0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(text).then((ok) => {
5245
+ setState(ok ? "copied" : "failed");
5246
+ });
5247
+ },
5248
+ children: state === "copied" ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutline16, { size: 12 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCopyOutline16, { size: 12 })
5249
+ });
5250
+ }
5251
+ function ProgramInput({ program, initialWrapped, stringWrapping, onOpen, t }) {
5252
+ const contentsId = (0, react.useId)();
5253
+ const [wrapped, setWrapped] = (0, react.useState)(initialWrapped);
5254
+ const [showJson, setShowJson] = (0, react.useState)(false);
5255
+ const actions = (0, react_jsx_runtime.jsxs)("span", {
5256
+ className: TrajectoryTable_module_css_default.programActions,
5257
+ children: [
5258
+ !showJson && program.language !== void 0 && (0, react_jsx_runtime.jsx)("span", {
5259
+ className: TrajectoryTable_module_css_default.programLanguage,
5260
+ children: program.language
5261
+ }),
5262
+ !showJson && (0, react_jsx_runtime.jsx)("button", {
5263
+ type: "button",
5264
+ className: TrajectoryTable_module_css_default.programAction,
5265
+ "aria-label": t("record.wrapLines"),
5266
+ title: t("record.wrapLines"),
5267
+ "aria-pressed": wrapped,
5268
+ "aria-controls": contentsId,
5269
+ onClick: () => {
5270
+ const next = !wrapped;
5271
+ setWrapped(next);
5272
+ stringWrapping?.setDefault(next);
5273
+ },
5274
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWrapLinesOutline16, { size: 12 })
5275
+ }),
5276
+ onOpen === void 0 && (0, react_jsx_runtime.jsx)("button", {
5277
+ type: "button",
5278
+ className: TrajectoryTable_module_css_default.programAction,
5279
+ "aria-label": t("code.originalJson"),
5280
+ title: t("code.originalJson"),
5281
+ "aria-pressed": showJson,
5282
+ "aria-controls": contentsId,
5283
+ onClick: () => {
5284
+ setShowJson((value) => !value);
5285
+ },
5286
+ children: (0, react_jsx_runtime.jsxs)("svg", {
5287
+ width: "12",
5288
+ height: "12",
5289
+ viewBox: "0 0 16 16",
5290
+ fill: "none",
5291
+ stroke: "currentColor",
5292
+ strokeWidth: "1.5",
5293
+ strokeLinecap: "round",
5294
+ strokeLinejoin: "round",
5295
+ "aria-hidden": "true",
5296
+ children: [(0, react_jsx_runtime.jsx)("path", { d: "M6 2H5a2 2 0 0 0-2 2v2a2 2 0 0 1-2 2 2 2 0 0 1 2 2v2a2 2 0 0 0 2 2h1" }), (0, react_jsx_runtime.jsx)("path", { d: "M10 2h1a2 2 0 0 1 2 2v2a2 2 0 0 0 2 2 2 2 0 0 0-2 2v2a2 2 0 0 1-2 2h-1" })]
5297
+ })
5298
+ }),
5299
+ (0, react_jsx_runtime.jsx)(InspectorCopyButton, {
5300
+ text: showJson ? program.rawInput : program.source,
5301
+ label: t(showJson ? "copy.json" : "code.copySource"),
5302
+ t
5303
+ })
5304
+ ]
5305
+ });
5306
+ const body = (0, react_jsx_runtime.jsx)("div", {
5307
+ id: contentsId,
5308
+ className: TrajectoryTable_module_css_default.programContent,
5309
+ "data-wrap": wrapped,
5310
+ children: showJson ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
5311
+ data: program.arguments,
5312
+ label: t("record.parametersJson"),
5313
+ labels: jsonTreeLabels(t),
5314
+ stringWrapping
5315
+ }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
5316
+ code: program.source,
5317
+ lang: program.language,
5318
+ lineNumbers: true,
5319
+ showHeader: false,
5320
+ className: TrajectoryTable_module_css_default.programSource,
5321
+ copyLabel: t("code.copySource"),
5322
+ copiedLabel: t("copied")
5323
+ })
5324
+ });
5325
+ return onOpen === void 0 ? (0, react_jsx_runtime.jsxs)("section", {
5326
+ className: TrajectoryTable_module_css_default.programPanel,
5327
+ children: [(0, react_jsx_runtime.jsxs)("header", {
5328
+ className: TrajectoryTable_module_css_default.overviewHeading,
5329
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t("code.source") }), actions]
5330
+ }), body]
5331
+ }) : (0, react_jsx_runtime.jsx)(OverviewSection, {
5332
+ label: t("code.source"),
5333
+ onOpen,
5334
+ actions,
5335
+ children: body
5336
+ });
5337
+ }
5338
+ function ProgramOutput({ record, stringWrapping, onOpen, t }) {
5339
+ const output = record.cell.outputDetail;
5340
+ const json = output === void 0 || record.cell.isError === true ? void 0 : parseJsonContainer(output);
5341
+ const actions = output === void 0 ? void 0 : (0, react_jsx_runtime.jsx)("span", {
5342
+ className: TrajectoryTable_module_css_default.programActions,
5343
+ children: (0, react_jsx_runtime.jsx)(InspectorCopyButton, {
5344
+ text: output,
5345
+ label: t("code.copyOutput"),
5346
+ t
5347
+ })
5348
+ });
5349
+ const body = (0, react_jsx_runtime.jsx)("div", {
5350
+ className: TrajectoryTable_module_css_default.programContent,
5351
+ children: output === void 0 || output === "" ? (0, react_jsx_runtime.jsx)("p", {
5352
+ className: TrajectoryTable_module_css_default.noPayload,
5353
+ children: t(stateOf(record) === "running" ? "code.running" : "record.noOutput")
5354
+ }) : json !== void 0 ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.JsonTree, {
5355
+ data: json,
5356
+ label: t("record.outputJson"),
5357
+ labels: jsonTreeLabels(t),
5358
+ stringWrapping,
5359
+ collapsedStringLines: onOpen === void 0 ? 12 : 3
5360
+ }) : (0, react_jsx_runtime.jsx)("pre", {
5361
+ className: `${TrajectoryTable_module_css_default.programOutput} ${record.cell.isError === true ? TrajectoryTable_module_css_default.programError : ""}`,
5362
+ children: output
5363
+ })
5364
+ });
5365
+ return onOpen === void 0 ? (0, react_jsx_runtime.jsxs)("section", {
5366
+ className: TrajectoryTable_module_css_default.programPanel,
5367
+ children: [(0, react_jsx_runtime.jsxs)("header", {
5368
+ className: TrajectoryTable_module_css_default.overviewHeading,
5369
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t("code.output") }), actions]
5370
+ }), body]
5371
+ }) : (0, react_jsx_runtime.jsx)(OverviewSection, {
5372
+ label: t("code.output"),
5373
+ onOpen,
5374
+ actions,
5375
+ children: body
5376
+ });
5377
+ }
5378
+ function OverviewSection({ label, onOpen, actions, children }) {
5379
+ const previewRef = (0, react.useRef)(null);
5380
+ const [hasMore, setHasMore] = (0, react.useState)(false);
5381
+ const measureOverflow = (0, react.useCallback)((preview) => {
5382
+ setHasMore(preview.scrollHeight - preview.clientHeight - preview.scrollTop > 1);
5383
+ }, []);
5384
+ (0, react.useLayoutEffect)(() => {
5385
+ const preview = previewRef.current;
5386
+ const measure = () => {
5387
+ measureOverflow(preview);
5388
+ };
5389
+ measure();
5390
+ if (typeof ResizeObserver === "undefined") return;
5391
+ const observer = new ResizeObserver(measure);
5392
+ observer.observe(preview);
5393
+ for (const child of preview.children) observer.observe(child);
5394
+ return () => {
5395
+ observer.disconnect();
5396
+ };
5397
+ }, [children, measureOverflow]);
5001
5398
  return (0, react_jsx_runtime.jsxs)("section", {
5002
5399
  className: TrajectoryTable_module_css_default.overviewSection,
5003
- children: [(0, react_jsx_runtime.jsx)("h3", {
5400
+ children: [(0, react_jsx_runtime.jsxs)("h3", {
5004
5401
  className: TrajectoryTable_module_css_default.overviewHeading,
5005
- children: (0, react_jsx_runtime.jsxs)("button", {
5402
+ children: [(0, react_jsx_runtime.jsxs)("button", {
5006
5403
  type: "button",
5007
5404
  className: TrajectoryTable_module_css_default.overviewTitle,
5008
5405
  onClick: onOpen,
@@ -5010,10 +5407,15 @@ window.__ModuleLoader__.load({
5010
5407
  className: TrajectoryTable_module_css_default.overviewTitleIcon,
5011
5408
  size: 12
5012
5409
  })]
5013
- })
5410
+ }), actions]
5014
5411
  }), (0, react_jsx_runtime.jsx)("div", {
5412
+ ref: previewRef,
5015
5413
  className: `${TrajectoryTable_module_css_default.overviewPreview} ${TrajectoryTable_module_css_default.summaryScrollRegion}`,
5016
5414
  "data-summary-scroll-region": "",
5415
+ "data-scroll-more": hasMore || void 0,
5416
+ onScroll: (event) => {
5417
+ measureOverflow(event.currentTarget);
5418
+ },
5017
5419
  children
5018
5420
  })]
5019
5421
  });
@@ -5024,11 +5426,12 @@ window.__ModuleLoader__.load({
5024
5426
  * @param props - Grouped trajectory data and whole-ledger fold state.
5025
5427
  * @returns The ledger and an optional local record inspector.
5026
5428
  */
5027
- function TrajectoryTable({ t, renderImages, requestNumbers: sessionRequestNumbers, turns, streamingCells = [], timelineFocusIndexes = null, searchMatchIndexes = null, onSelectedIndexChange, onRecordSelect, recordSelection = null, recordFocus = null, historyLoading = false, olderHistoryLoading = false, historyStartSeq, hasOlderRecords = false, onLoadOlder, onClearSelection, collapsedTurns, onToggleTurn, collapsedAssistants, onToggleAssistant, inspectCallId = null, onInspectApplied }) {
5429
+ function TrajectoryTable({ t, stringWrapping, renderImages, requestNumbers: sessionRequestNumbers, turns, streamingCells = [], timelineFocusIndexes = null, searchMatchIndexes = null, onSelectedIndexChange, onRecordSelect, recordSelection = null, recordFocus = null, historyLoading = false, olderHistoryLoading = false, historyStartSeq, hasOlderRecords = false, onLoadOlder, onClearSelection, collapsedTurns, onToggleTurn, collapsedAssistants, onToggleAssistant, inspectCallId = null, onInspectApplied }) {
5028
5430
  const [selectedRecordId, setSelectedRecordId] = (0, react.useState)(null);
5029
5431
  const [selectedRequest, setSelectedRequest] = (0, react.useState)(null);
5030
5432
  const [activeTab, setActiveTab] = (0, react.useState)("overview");
5031
- const [thinkingExpanded, setThinkingExpanded] = (0, react.useState)(false);
5433
+ const [codeWrappingOnOpen, setCodeWrappingOnOpen] = (0, react.useState)(false);
5434
+ const [thinkingDisclosure, setThinkingDisclosure] = (0, react.useState)();
5032
5435
  const [detailsWidth, setDetailsWidth] = (0, react.useState)(null);
5033
5436
  const [toolRequestOffset, setToolRequestOffset] = (0, react.useState)(null);
5034
5437
  const detailsResizeDrag = (0, react.useRef)(null);
@@ -5055,6 +5458,14 @@ window.__ModuleLoader__.load({
5055
5458
  }, [streamingCellsByIndex]);
5056
5459
  const selectedTemplate = (0, react.useMemo)(() => selectedRecordId === null ? void 0 : allRecords.find((record) => trajectoryRecordId(record.cell) === selectedRecordId), [allRecords, selectedRecordId]);
5057
5460
  const selected = selectedTemplate === void 0 ? void 0 : currentRecord(selectedTemplate);
5461
+ const selectedProgram = selected === void 0 ? void 0 : codeProgram(selected.cell);
5462
+ const thinkingExpanded = thinkingDisclosure?.recordId === selectedRecordId ? thinkingDisclosure.expanded : selected?.cell.kind === "message" && Boolean(selected.cell.thinkingDetail?.trim());
5463
+ const setThinkingExpanded = (expanded) => {
5464
+ if (selectedRecordId !== null) setThinkingDisclosure({
5465
+ recordId: selectedRecordId,
5466
+ expanded
5467
+ });
5468
+ };
5058
5469
  const selectedIndex = selected?.cell.index ?? null;
5059
5470
  (0, react.useEffect)(() => {
5060
5471
  onSelectedIndexChange?.(selectedIndex);
@@ -5155,6 +5566,7 @@ window.__ModuleLoader__.load({
5155
5566
  const hasSelectedHierarchy = selectedAssistantRequestTarget !== void 0 || selectedParents.message !== void 0 || selectedParents.tool !== void 0;
5156
5567
  const splitStyle = toolRequestOffset === null ? void 0 : { "--trajectory-tool-request-width": `calc(58cqw - ${toolRequestOffset}px)` };
5157
5568
  const activateTab = (tab) => {
5569
+ setCodeWrappingOnOpen(stringWrapping?.getDefault() ?? false);
5158
5570
  tabHistory.current.delete(tab);
5159
5571
  tabHistory.current.add(tab);
5160
5572
  setActiveTab(tab);
@@ -5168,6 +5580,7 @@ window.__ModuleLoader__.load({
5168
5580
  onClearSelection?.();
5169
5581
  };
5170
5582
  const selectRecord = (0, react.useCallback)((index) => {
5583
+ setCodeWrappingOnOpen(stringWrapping?.getDefault() ?? false);
5171
5584
  const record = allRecords.find((candidate) => candidate.cell.index === index);
5172
5585
  onRecordSelect?.(index);
5173
5586
  setSelectedRequest(null);
@@ -5176,7 +5589,11 @@ window.__ModuleLoader__.load({
5176
5589
  const tabs = detailTabs(record);
5177
5590
  const available = new Set(tabs.map((tab) => tab.id));
5178
5591
  setActiveTab([...tabHistory.current].reverse().find((tab) => available.has(tab)) ?? tabs[0]?.id ?? "overview");
5179
- }, [allRecords, onRecordSelect]);
5592
+ }, [
5593
+ allRecords,
5594
+ onRecordSelect,
5595
+ stringWrapping
5596
+ ]);
5180
5597
  (0, react.useEffect)(() => {
5181
5598
  if (recordSelection === null || appliedRecordSelection.current === recordSelection) return;
5182
5599
  appliedRecordSelection.current = recordSelection;
@@ -5754,7 +6171,7 @@ window.__ModuleLoader__.load({
5754
6171
  }),
5755
6172
  (0, react_jsx_runtime.jsxs)("div", {
5756
6173
  id: "trajectory-detail-panel",
5757
- className: activeTab === "overview" ? `${TrajectoryTable_module_css_default.detailBody} ${TrajectoryTable_module_css_default.detailBodySummary}` : TrajectoryTable_module_css_default.detailBody,
6174
+ className: activeTab === "overview" ? `${TrajectoryTable_module_css_default.detailBody} ${TrajectoryTable_module_css_default.detailBodySummary}` : selectedProgram !== void 0 && (activeTab === "input" || activeTab === "output") ? `${TrajectoryTable_module_css_default.detailBody} ${TrajectoryTable_module_css_default.detailBodyProgram}` : TrajectoryTable_module_css_default.detailBody,
5758
6175
  role: "tabpanel",
5759
6176
  "aria-labelledby": `trajectory-detail-${activeTab}`,
5760
6177
  children: [
@@ -5810,6 +6227,7 @@ window.__ModuleLoader__.load({
5810
6227
  children: (0, react_jsx_runtime.jsx)(RequestOptions, {
5811
6228
  options: selectedRequestOptions,
5812
6229
  preview: true,
6230
+ stringWrapping,
5813
6231
  t
5814
6232
  })
5815
6233
  }),
@@ -5832,6 +6250,7 @@ window.__ModuleLoader__.load({
5832
6250
  assistant: selectedRequestAssistant,
5833
6251
  anchor: selectedRequestAnchor,
5834
6252
  request: selectedRequestInfo,
6253
+ preview: true,
5835
6254
  t
5836
6255
  })
5837
6256
  })
@@ -5839,6 +6258,7 @@ window.__ModuleLoader__.load({
5839
6258
  })] }),
5840
6259
  selectedRequestInfo !== void 0 && activeTab === "options" && (0, react_jsx_runtime.jsx)(RequestOptions, {
5841
6260
  options: selectedRequestOptions,
6261
+ stringWrapping,
5842
6262
  t
5843
6263
  }),
5844
6264
  selectedRequestInfo !== void 0 && activeTab === "usage" && (0, react_jsx_runtime.jsx)(RequestUsagePanel, {
@@ -5869,6 +6289,7 @@ window.__ModuleLoader__.load({
5869
6289
  })),
5870
6290
  selectedPrompt !== void 0 && activeTab === "tools" && (0, react_jsx_runtime.jsx)(ToolCatalog, {
5871
6291
  tools: selectedPrompt.tools,
6292
+ stringWrapping,
5872
6293
  t
5873
6294
  }),
5874
6295
  !promptSelected && selected?.cell.kind === "compacted" && selectedState !== void 0 && activeTab === "overview" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)("dl", {
@@ -5895,151 +6316,178 @@ window.__ModuleLoader__.load({
5895
6316
  t
5896
6317
  })
5897
6318
  })] }),
5898
- !promptSelected && selected !== void 0 && selected.cell.kind !== "compacted" && selectedState !== void 0 && activeTab === "overview" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)("dl", {
5899
- className: `${TrajectoryTable_module_css_default.overview} ${TrajectoryTable_module_css_default.summaryScrollRegion}`,
5900
- "data-summary-scroll-region": "",
5901
- children: [
5902
- selected.cell.messageSource !== void 0 && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("details.source") }), (0, react_jsx_runtime.jsx)("dd", {
5903
- className: TrajectoryTable_module_css_default.overviewParentLinks,
5904
- children: (0, react_jsx_runtime.jsxs)("button", {
5905
- type: "button",
5906
- className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
5907
- onClick: () => {
5908
- activateTab("source");
5909
- },
5910
- children: [(0, react_jsx_runtime.jsx)("span", { children: messageSourceLabel(selected.cell.messageSource, t) }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
5911
- className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
5912
- size: 11
5913
- })]
5914
- })
5915
- })] }),
5916
- hasSelectedHierarchy && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: selectedAssistantRequestTarget !== void 0 ? t("details.source") : t("details.hierarchy") }), (0, react_jsx_runtime.jsxs)("dd", {
5917
- className: TrajectoryTable_module_css_default.overviewParentLinks,
5918
- children: [
5919
- selectedAssistantRequestTarget !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
5920
- type: "button",
5921
- className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
5922
- onClick: () => {
5923
- selectRequest(selectedAssistantRequestTarget);
5924
- },
5925
- children: [(0, react_jsx_runtime.jsx)("span", { children: t("request.label", { request: selectedAssistantRequest ?? "—" }) }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
5926
- className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
5927
- size: 11
5928
- })]
5929
- }),
5930
- selectedParentMessage !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
5931
- type: "button",
5932
- className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
5933
- onClick: () => {
5934
- openRecordSummary(selectedParentMessage);
5935
- },
5936
- children: [(0, react_jsx_runtime.jsx)("span", { children: t("details.assistantMessage") }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
5937
- className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
5938
- size: 11
5939
- })]
5940
- }),
5941
- selectedParentTool !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
6319
+ !promptSelected && selected !== void 0 && selected.cell.kind !== "compacted" && selectedState !== void 0 && activeTab === "overview" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
6320
+ selectedProgram !== void 0 && selectedProgram.description !== "" && (0, react_jsx_runtime.jsx)("p", {
6321
+ className: TrajectoryTable_module_css_default.programDescription,
6322
+ children: selectedProgram.description
6323
+ }),
6324
+ (0, react_jsx_runtime.jsxs)("dl", {
6325
+ className: `${TrajectoryTable_module_css_default.overview} ${TrajectoryTable_module_css_default.summaryScrollRegion}`,
6326
+ "data-summary-scroll-region": "",
6327
+ children: [
6328
+ selected.cell.messageSource !== void 0 && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("details.source") }), (0, react_jsx_runtime.jsx)("dd", {
6329
+ className: TrajectoryTable_module_css_default.overviewParentLinks,
6330
+ children: (0, react_jsx_runtime.jsxs)("button", {
5942
6331
  type: "button",
5943
6332
  className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
5944
6333
  onClick: () => {
5945
- openRecordSummary(selectedParentTool);
6334
+ activateTab("source");
5946
6335
  },
5947
- children: [(0, react_jsx_runtime.jsx)("span", { children: t("details.toolCall") }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
6336
+ children: [(0, react_jsx_runtime.jsx)("span", { children: messageSourceLabel(selected.cell.messageSource, t) }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
5948
6337
  className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
5949
6338
  size: 11
5950
6339
  })]
5951
6340
  })
5952
- ]
5953
- })] }),
5954
- (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("details.status") }), (0, react_jsx_runtime.jsx)("dd", {
5955
- className: selectedState === "error" ? TrajectoryTable_module_css_default.error : void 0,
5956
- children: statusLabel(selectedState, t)
5957
- })] }),
5958
- selected.cell.kind === "message" && (0, react_jsx_runtime.jsx)(TokenRows, {
5959
- cell: selected.cell,
5960
- t
5961
- }),
5962
- (selected.cell.kind === "user" || selected.cell.kind === "context") && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.duration") }), (0, react_jsx_runtime.jsx)("dd", { children: formatElapsedSeconds(selected.cell.timeSeconds, t) })] })
5963
- ]
5964
- }), (0, react_jsx_runtime.jsxs)("div", {
5965
- className: TrajectoryTable_module_css_default.overviewSections,
5966
- children: [
5967
- isMarkdownRecord(selected) ? (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: (0, react_jsx_runtime.jsx)(OverviewSection, {
5968
- label: t("tab.preview"),
5969
- onOpen: () => {
5970
- activateTab("rendered");
5971
- },
5972
- children: (0, react_jsx_runtime.jsx)(MarkdownRecordContent, {
5973
- record: selected,
5974
- renderImages,
5975
- rendered: true,
5976
- preview: true,
5977
- thinkingExpanded,
5978
- onThinkingExpandedChange: setThinkingExpanded,
5979
- onOpenCall: openCallSummary,
6341
+ })] }),
6342
+ hasSelectedHierarchy && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: selectedAssistantRequestTarget !== void 0 ? t("details.source") : t("details.hierarchy") }), (0, react_jsx_runtime.jsxs)("dd", {
6343
+ className: TrajectoryTable_module_css_default.overviewParentLinks,
6344
+ children: [
6345
+ selectedAssistantRequestTarget !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
6346
+ type: "button",
6347
+ className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
6348
+ onClick: () => {
6349
+ selectRequest(selectedAssistantRequestTarget);
6350
+ },
6351
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t("request.label", { request: selectedAssistantRequest ?? "—" }) }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
6352
+ className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
6353
+ size: 11
6354
+ })]
6355
+ }),
6356
+ selectedParentMessage !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
6357
+ type: "button",
6358
+ className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
6359
+ onClick: () => {
6360
+ openRecordSummary(selectedParentMessage);
6361
+ },
6362
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t("details.assistantMessage") }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
6363
+ className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
6364
+ size: 11
6365
+ })]
6366
+ }),
6367
+ selectedParentTool !== void 0 && (0, react_jsx_runtime.jsxs)("button", {
6368
+ type: "button",
6369
+ className: TrajectoryTable_module_css_default.overviewHierarchyNavLink,
6370
+ onClick: () => {
6371
+ openRecordSummary(selectedParentTool);
6372
+ },
6373
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t("details.toolCall") }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {
6374
+ className: TrajectoryTable_module_css_default.overviewHierarchyJumpIconTight,
6375
+ size: 11
6376
+ })]
6377
+ })
6378
+ ]
6379
+ })] }),
6380
+ (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("details.status") }), (0, react_jsx_runtime.jsx)("dd", {
6381
+ className: selectedState === "error" ? TrajectoryTable_module_css_default.error : void 0,
6382
+ children: statusLabel(selectedState, t)
6383
+ })] }),
6384
+ selected.cell.kind === "message" && (0, react_jsx_runtime.jsx)(TokenRows, {
6385
+ cell: selected.cell,
5980
6386
  t
5981
- })
5982
- }) }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
5983
- selected.cell.inputDetail && (0, react_jsx_runtime.jsx)(OverviewSection, {
5984
- label: t("tab.payload"),
6387
+ }),
6388
+ (selected.cell.kind === "user" || selected.cell.kind === "context") && (0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("dt", { children: t("timing.duration") }), (0, react_jsx_runtime.jsx)("dd", { children: formatElapsedSeconds(selected.cell.timeSeconds, t) })] })
6389
+ ]
6390
+ }),
6391
+ (0, react_jsx_runtime.jsxs)("div", {
6392
+ className: TrajectoryTable_module_css_default.overviewSections,
6393
+ children: [
6394
+ selectedProgram !== void 0 ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(ProgramInput, {
6395
+ program: selectedProgram,
6396
+ initialWrapped: codeWrappingOnOpen,
6397
+ stringWrapping,
5985
6398
  onOpen: () => {
5986
6399
  activateTab("input");
5987
6400
  },
5988
- children: (0, react_jsx_runtime.jsx)(RecordPayload, {
6401
+ t
6402
+ }, `preview:${selectedRecordId}`), (0, react_jsx_runtime.jsx)(ProgramOutput, {
6403
+ record: selected,
6404
+ stringWrapping,
6405
+ onOpen: () => {
6406
+ activateTab("output");
6407
+ },
6408
+ t
6409
+ })] }) : isMarkdownRecord(selected) ? (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: (0, react_jsx_runtime.jsx)(OverviewSection, {
6410
+ label: t("tab.preview"),
6411
+ onOpen: () => {
6412
+ activateTab("rendered");
6413
+ },
6414
+ children: (0, react_jsx_runtime.jsx)(MarkdownRecordContent, {
5989
6415
  record: selected,
5990
- direction: "input",
5991
- preview: true,
5992
6416
  renderImages,
6417
+ rendered: true,
6418
+ preview: true,
6419
+ thinkingExpanded,
6420
+ onThinkingExpandedChange: setThinkingExpanded,
6421
+ onOpenCall: openCallSummary,
5993
6422
  t
5994
6423
  })
5995
- }),
5996
- selected.cell.outputDetail && (0, react_jsx_runtime.jsx)(OverviewSection, {
5997
- label: t("tab.result"),
6424
+ }) }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
6425
+ selected.cell.inputDetail && (0, react_jsx_runtime.jsx)(OverviewSection, {
6426
+ label: t("tab.payload"),
6427
+ onOpen: () => {
6428
+ activateTab("input");
6429
+ },
6430
+ children: (0, react_jsx_runtime.jsx)(RecordPayload, {
6431
+ record: selected,
6432
+ direction: "input",
6433
+ preview: true,
6434
+ renderImages,
6435
+ stringWrapping,
6436
+ t
6437
+ })
6438
+ }),
6439
+ selected.cell.outputDetail && (0, react_jsx_runtime.jsx)(OverviewSection, {
6440
+ label: t("tab.result"),
6441
+ onOpen: () => {
6442
+ activateTab("output");
6443
+ },
6444
+ children: (0, react_jsx_runtime.jsx)(RecordPayload, {
6445
+ record: selected,
6446
+ direction: "output",
6447
+ preview: true,
6448
+ renderImages,
6449
+ stringWrapping,
6450
+ t
6451
+ })
6452
+ }),
6453
+ (0, react_jsx_runtime.jsx)(OverviewSection, {
6454
+ label: t("tab.schema"),
6455
+ onOpen: () => {
6456
+ activateTab("schema");
6457
+ },
6458
+ children: (0, react_jsx_runtime.jsx)(RecordSchema, {
6459
+ record: selected,
6460
+ preview: true,
6461
+ stringWrapping,
6462
+ t
6463
+ })
6464
+ })
6465
+ ] }),
6466
+ selectedAssistantRequestTarget !== void 0 && (0, react_jsx_runtime.jsx)(OverviewSection, {
6467
+ label: t("timing.request"),
5998
6468
  onOpen: () => {
5999
- activateTab("output");
6469
+ selectRequest(selectedAssistantRequestTarget, "timing");
6000
6470
  },
6001
- children: (0, react_jsx_runtime.jsx)(RecordPayload, {
6471
+ children: (0, react_jsx_runtime.jsx)(RecordTiming, {
6002
6472
  record: selected,
6003
- direction: "output",
6004
6473
  preview: true,
6005
- renderImages,
6006
6474
  t
6007
6475
  })
6008
6476
  }),
6009
- (0, react_jsx_runtime.jsx)(OverviewSection, {
6010
- label: t("tab.schema"),
6477
+ (selected.cell.kind === "tool" || selected.cell.kind === "subtool") && (0, react_jsx_runtime.jsx)(OverviewSection, {
6478
+ label: t("tab.timing"),
6011
6479
  onOpen: () => {
6012
- activateTab("schema");
6480
+ activateTab("timing");
6013
6481
  },
6014
- children: (0, react_jsx_runtime.jsx)(RecordSchema, {
6482
+ children: (0, react_jsx_runtime.jsx)(RecordTiming, {
6015
6483
  record: selected,
6016
6484
  preview: true,
6017
6485
  t
6018
6486
  })
6019
6487
  })
6020
- ] }),
6021
- selectedAssistantRequestTarget !== void 0 && (0, react_jsx_runtime.jsx)(OverviewSection, {
6022
- label: t("timing.request"),
6023
- onOpen: () => {
6024
- selectRequest(selectedAssistantRequestTarget, "timing");
6025
- },
6026
- children: (0, react_jsx_runtime.jsx)(RecordTiming, {
6027
- record: selected,
6028
- t
6029
- })
6030
- }),
6031
- (selected.cell.kind === "tool" || selected.cell.kind === "subtool") && (0, react_jsx_runtime.jsx)(OverviewSection, {
6032
- label: t("tab.timing"),
6033
- onOpen: () => {
6034
- activateTab("timing");
6035
- },
6036
- children: (0, react_jsx_runtime.jsx)(RecordTiming, {
6037
- record: selected,
6038
- t
6039
- })
6040
- })
6041
- ]
6042
- })] }),
6488
+ ]
6489
+ })
6490
+ ] }),
6043
6491
  !promptSelected && selected !== void 0 && activeTab === "rendered" && (0, react_jsx_runtime.jsx)(MarkdownRecordContent, {
6044
6492
  record: selected,
6045
6493
  renderImages,
@@ -6060,22 +6508,35 @@ window.__ModuleLoader__.load({
6060
6508
  }),
6061
6509
  !promptSelected && selected !== void 0 && activeTab === "source" && (0, react_jsx_runtime.jsx)(MessageSource, {
6062
6510
  record: selected,
6511
+ stringWrapping,
6063
6512
  t
6064
6513
  }),
6065
- !promptSelected && selected !== void 0 && activeTab === "input" && (0, react_jsx_runtime.jsx)(RecordPayload, {
6514
+ !promptSelected && selected !== void 0 && activeTab === "input" && (selectedProgram === void 0 ? (0, react_jsx_runtime.jsx)(RecordPayload, {
6066
6515
  record: selected,
6067
6516
  direction: "input",
6068
6517
  renderImages,
6518
+ stringWrapping,
6069
6519
  t
6070
- }),
6071
- !promptSelected && selected !== void 0 && activeTab === "output" && (0, react_jsx_runtime.jsx)(RecordPayload, {
6520
+ }) : (0, react_jsx_runtime.jsx)(ProgramInput, {
6521
+ program: selectedProgram,
6522
+ initialWrapped: codeWrappingOnOpen,
6523
+ stringWrapping,
6524
+ t
6525
+ }, `input:${selectedRecordId}`)),
6526
+ !promptSelected && selected !== void 0 && activeTab === "output" && (selectedProgram === void 0 ? (0, react_jsx_runtime.jsx)(RecordPayload, {
6072
6527
  record: selected,
6073
6528
  direction: "output",
6074
6529
  renderImages,
6530
+ stringWrapping,
6075
6531
  t
6076
- }),
6532
+ }) : (0, react_jsx_runtime.jsx)(ProgramOutput, {
6533
+ record: selected,
6534
+ stringWrapping,
6535
+ t
6536
+ })),
6077
6537
  !promptSelected && selected !== void 0 && activeTab === "schema" && (0, react_jsx_runtime.jsx)(RecordSchema, {
6078
6538
  record: selected,
6539
+ stringWrapping,
6079
6540
  t
6080
6541
  }),
6081
6542
  !promptSelected && selected !== void 0 && activeTab === "timing" && (0, react_jsx_runtime.jsx)(RecordTiming, {
@@ -6874,7 +7335,7 @@ window.__ModuleLoader__.load({
6874
7335
  const images = imageBlockCount(node.content);
6875
7336
  const files = fileBlockCount(node.content);
6876
7337
  return {
6877
- text: [previewMarkdown === void 0 && images > 0 ? t("layout.imageOnly", { count: images }) : void 0, files > 0 ? t("layout.fileAttachments", { count: files }) : void 0].filter((value) => value !== void 0).join(" · "),
7338
+ text: [images > 0 ? t("layout.imageCount", { count: images }) : void 0, files > 0 ? t("layout.fileAttachments", { count: files }) : void 0].filter((value) => value !== void 0).join(" · "),
6878
7339
  ...previewMarkdown === void 0 ? {} : { previewMarkdown },
6879
7340
  sourceSeq: node.seq,
6880
7341
  messageSource: node.source,
@@ -7399,7 +7860,7 @@ window.__ModuleLoader__.load({
7399
7860
  }
7400
7861
  if (tools.size > 0) return t("layout.toolCallOnly");
7401
7862
  const images = blocks.filter((block) => block.kind === "image").length;
7402
- if (images > 0) return t("layout.imageOnly", { count: images });
7863
+ if (images > 0) return t("layout.imageCount", { count: images });
7403
7864
  return "";
7404
7865
  }
7405
7866
  function promptChangeLabel(change, t) {
@@ -7424,11 +7885,10 @@ window.__ModuleLoader__.load({
7424
7885
  callId: block.callId,
7425
7886
  toolName: block.name
7426
7887
  };
7427
- case "image": return {
7888
+ case "image": return sourceBlock({
7428
7889
  type: "image",
7429
- content: "",
7430
7890
  attachment: block.attachment
7431
- };
7891
+ });
7432
7892
  case "other": return sourceBlock(block.block);
7433
7893
  }
7434
7894
  }
@@ -7443,10 +7903,10 @@ window.__ModuleLoader__.load({
7443
7903
  type: type === "reasoning" ? "thinking" : type,
7444
7904
  content: block.text
7445
7905
  };
7446
- if (type === "image" && typeof block.attachment === "object" && block.attachment !== null && typeof block.attachment.attachmentId === "string") return {
7906
+ if ((type === "image" || type === "file") && typeof block.attachment === "object" && block.attachment !== null && typeof block.attachment.attachmentId === "string") return {
7447
7907
  type,
7448
- content: "",
7449
- attachment: block.attachment
7908
+ content: stringifySourceValue(value),
7909
+ ...type === "image" ? { attachment: block.attachment } : { file: block.attachment }
7450
7910
  };
7451
7911
  return {
7452
7912
  type,
@@ -7595,6 +8055,7 @@ window.__ModuleLoader__.load({
7595
8055
  }
7596
8056
  function summarizeCall(name, argsRaw) {
7597
8057
  return {
8058
+ toolName: name,
7598
8059
  text: name,
7599
8060
  ...argsRaw === "" ? {} : { previewMarkdown: argsRaw }
7600
8061
  };
@@ -7606,7 +8067,7 @@ window.__ModuleLoader__.load({
7606
8067
  resultPreviewMarkdown: block.text
7607
8068
  };
7608
8069
  const images = imageBlockCount(node.content);
7609
- if (images > 0) return { result: t("layout.imageOnly", { count: images }) };
8070
+ if (images > 0) return { result: t("layout.imageCount", { count: images }) };
7610
8071
  return { result: t("record.noOutput") };
7611
8072
  }
7612
8073
  function resultAsText(result) {
@@ -7620,7 +8081,7 @@ window.__ModuleLoader__.load({
7620
8081
  const text = node.content.filter((block) => block.type === "text" && typeof block.text === "string").map((block) => block.type === "text" ? block.text : "").join("\n");
7621
8082
  if (text !== "") return text;
7622
8083
  const images = imageBlockCount(node.content);
7623
- if (images > 0) return t("layout.imageOnly", { count: images });
8084
+ if (images > 0) return t("layout.imageCount", { count: images });
7624
8085
  if (node.content.length === 0 || node.content.every((block) => block.type === "text" && (typeof block.text !== "string" || block.text === ""))) return t("record.noOutput");
7625
8086
  return JSON.stringify(node.content, null, 2);
7626
8087
  }
@@ -7812,7 +8273,7 @@ window.__ModuleLoader__.load({
7812
8273
  ...total?.reasoning === void 0 && usage.reasoning === void 0 ? {} : { reasoning: (total?.reasoning ?? 0) + (usage.reasoning ?? 0) }
7813
8274
  };
7814
8275
  }
7815
- function TrajectoryView({ useSession, useTrajectory, useDuration, loadOlder, loadImage, setActualDuration, viewRequest, completeViewRequest, renderSlot, t }) {
8276
+ function TrajectoryView({ useSession, useTrajectory, useDuration, loadOlder, loadImage, setActualDuration, viewRequest, completeViewRequest, renderSlot, t, jsonStringWrapping }) {
7816
8277
  const [collapsedTurns, setCollapsedTurns] = (0, react.useState)(EMPTY_TURN_IDS);
7817
8278
  const renderImages = (0, react.useCallback)((owner) => renderSlot("conversation.trajectory.images", {
7818
8279
  ...owner,
@@ -7900,8 +8361,8 @@ window.__ModuleLoader__.load({
7900
8361
  const turn = request?.turn ?? node?.turn;
7901
8362
  const step = request?.step ?? node?.step;
7902
8363
  if (turn === void 0 || step === void 0) continue;
7903
- const provider = request?.provenance?.provider ?? node?.provenance?.provider;
7904
- const model = request?.provenance?.model ?? node?.provenance?.model;
8364
+ const provider = request?.providerMetadata?.provider ?? node?.providerMetadata?.provider;
8365
+ const model = request?.providerMetadata?.model ?? node?.providerMetadata?.model;
7905
8366
  const requestConfig = request?.requestConfig ?? node?.requestConfig;
7906
8367
  numbered.push({
7907
8368
  seq: entry.seq,
@@ -7940,8 +8401,8 @@ window.__ModuleLoader__.load({
7940
8401
  ...request.error === void 0 ? {} : { error: request.error },
7941
8402
  ...request.errorCode === void 0 ? {} : { errorCode: request.errorCode },
7942
8403
  resultSeq: request.startSeq,
7943
- ...request.provenance?.provider === void 0 ? {} : { provider: request.provenance.provider },
7944
- ...request.provenance?.model === void 0 ? {} : { model: request.provenance.model },
8404
+ ...request.providerMetadata?.provider === void 0 ? {} : { provider: request.providerMetadata.provider },
8405
+ ...request.providerMetadata?.model === void 0 ? {} : { model: request.providerMetadata.model },
7945
8406
  ...request.requestConfig === void 0 ? {} : { requestConfig: request.requestConfig },
7946
8407
  ...usage === void 0 ? {} : { usage },
7947
8408
  ...cumulativeUsage === void 0 ? {} : { cumulativeUsage }
@@ -8147,6 +8608,10 @@ window.__ModuleLoader__.load({
8147
8608
  className: views_module_css_default.ledger,
8148
8609
  children: (0, react_jsx_runtime.jsx)(TrajectoryTable, {
8149
8610
  t,
8611
+ stringWrapping: jsonStringWrapping === void 0 ? void 0 : {
8612
+ ...jsonStringWrapping,
8613
+ label: t("record.wrapLines")
8614
+ },
8150
8615
  renderImages,
8151
8616
  requestNumbers,
8152
8617
  turns: timelineTurns,
@@ -8211,6 +8676,7 @@ window.__ModuleLoader__.load({
8211
8676
  }), "ui-trajectory: dictionaries");
8212
8677
  const t = ctx.locale.bind(NS);
8213
8678
  const duration = createTrajectoryDurationStore();
8679
+ const stringWrapping = createTrajectoryStringWrappingStore();
8214
8680
  registerTrajectoryMessageDefinitions(ctx);
8215
8681
  registerTrajectoryRequestHeaderDefinition(ctx);
8216
8682
  registerTrajectoryAssistantDefinition(ctx);
@@ -8237,6 +8703,12 @@ window.__ModuleLoader__.load({
8237
8703
  const trajectory = ctx.uiConversation.binding(sessionId).target("trajectory");
8238
8704
  return {
8239
8705
  hooks: { duration },
8706
+ jsonStringWrapping: {
8707
+ getDefault: () => stringWrapping.getSnapshot(),
8708
+ setDefault: (value) => {
8709
+ stringWrapping.set(value);
8710
+ }
8711
+ },
8240
8712
  loadOlder: async () => {
8241
8713
  const before = trajectory.getSnapshot();
8242
8714
  await session.loadOlder();