@lvce-editor/chat-debug-view 10.2.0 → 10.4.0

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.
@@ -2245,6 +2245,7 @@ const createDefaultState = () => {
2245
2245
  timelineEndSeconds: '',
2246
2246
  timelineEvents: [],
2247
2247
  timelineFilterDescription: '',
2248
+ timelineHeight: 81,
2248
2249
  timelineHoverPercent: null,
2249
2250
  timelineHoverSeconds: '',
2250
2251
  timelineInfo: emptyTimelineInfo,
@@ -2292,7 +2293,7 @@ const RenderFocusContext = 4;
2292
2293
  const RenderFocus = 5;
2293
2294
 
2294
2295
  const diff = (oldState, newState) => {
2295
- if (oldState.categoryFilters !== newState.categoryFilters || oldState.detailTabs !== newState.detailTabs || oldState.errorMessage !== newState.errorMessage || oldState.events !== newState.events || oldState.filterValue !== newState.filterValue || oldState.previewTextCursorColumnIndex !== newState.previewTextCursorColumnIndex || oldState.previewTextCursorRowIndex !== newState.previewTextCursorRowIndex || oldState.sessionId !== newState.sessionId || oldState.showEventStreamFinishedEvents !== newState.showEventStreamFinishedEvents || oldState.showInputEvents !== newState.showInputEvents || oldState.showResponsePartEvents !== newState.showResponsePartEvents || oldState.sortColumn !== newState.sortColumn || oldState.sortDescending !== newState.sortDescending || oldState.tableColumnWidths !== newState.tableColumnWidths || oldState.tableDeltaY !== newState.tableDeltaY || oldState.tableMaxLineY !== newState.tableMaxLineY || oldState.tableMinLineY !== newState.tableMinLineY || oldState.tableWidth !== newState.tableWidth || oldState.timelineEndSeconds !== newState.timelineEndSeconds || oldState.timelineHoverPercent !== newState.timelineHoverPercent || oldState.timelineHoverSeconds !== newState.timelineHoverSeconds || oldState.timelineSelectionActive !== newState.timelineSelectionActive || oldState.timelineSelectionAnchorSeconds !== newState.timelineSelectionAnchorSeconds || oldState.timelineSelectionFocusSeconds !== newState.timelineSelectionFocusSeconds || oldState.timelineStartSeconds !== newState.timelineStartSeconds || oldState.useDevtoolsLayout !== newState.useDevtoolsLayout || oldState.tableColumns !== newState.tableColumns || oldState.selectedEvent !== newState.selectedEvent || oldState.selectedEventIndex !== newState.selectedEventIndex || oldState.focus !== newState.focus || oldState.width !== newState.width || oldState.uid !== newState.uid) {
2296
+ if (oldState.categoryFilters !== newState.categoryFilters || oldState.detailTabs !== newState.detailTabs || oldState.errorMessage !== newState.errorMessage || oldState.events !== newState.events || oldState.filterValue !== newState.filterValue || oldState.previewTextCursorColumnIndex !== newState.previewTextCursorColumnIndex || oldState.previewTextCursorRowIndex !== newState.previewTextCursorRowIndex || oldState.sessionId !== newState.sessionId || oldState.showEventStreamFinishedEvents !== newState.showEventStreamFinishedEvents || oldState.showInputEvents !== newState.showInputEvents || oldState.showResponsePartEvents !== newState.showResponsePartEvents || oldState.sortColumn !== newState.sortColumn || oldState.sortDescending !== newState.sortDescending || oldState.tableColumnWidths !== newState.tableColumnWidths || oldState.tableDeltaY !== newState.tableDeltaY || oldState.tableMaxLineY !== newState.tableMaxLineY || oldState.tableMinLineY !== newState.tableMinLineY || oldState.tableWidth !== newState.tableWidth || oldState.timelineEndSeconds !== newState.timelineEndSeconds || oldState.timelineHeight !== newState.timelineHeight || oldState.timelineHoverPercent !== newState.timelineHoverPercent || oldState.timelineHoverSeconds !== newState.timelineHoverSeconds || oldState.timelineSelectionActive !== newState.timelineSelectionActive || oldState.timelineSelectionAnchorSeconds !== newState.timelineSelectionAnchorSeconds || oldState.timelineSelectionFocusSeconds !== newState.timelineSelectionFocusSeconds || oldState.timelineStartSeconds !== newState.timelineStartSeconds || oldState.useDevtoolsLayout !== newState.useDevtoolsLayout || oldState.tableColumns !== newState.tableColumns || oldState.selectedEvent !== newState.selectedEvent || oldState.selectedEventIndex !== newState.selectedEventIndex || oldState.focus !== newState.focus || oldState.width !== newState.width || oldState.uid !== newState.uid) {
2296
2297
  return [RenderIncremental, RenderCss];
2297
2298
  }
2298
2299
  return [];
@@ -2383,6 +2384,76 @@ const mergeToolExecutionEvents = (startedEvent, finishedEvent, type = mergedEven
2383
2384
  return mergedEvent;
2384
2385
  };
2385
2386
 
2387
+ const requestEventTypes = new Set(['request', 'ai-request']);
2388
+ const responseEventTypes = new Set(['response', 'ai-response-success']);
2389
+ const getPairId = event => {
2390
+ const {
2391
+ request_id: requestIdSnake,
2392
+ requestId,
2393
+ requestID,
2394
+ turn_id: turnIdSnake,
2395
+ turnId
2396
+ } = event;
2397
+ if (typeof requestId === 'string' || typeof requestId === 'number') {
2398
+ return requestId;
2399
+ }
2400
+ if (typeof requestIdSnake === 'string' || typeof requestIdSnake === 'number') {
2401
+ return requestIdSnake;
2402
+ }
2403
+ if (typeof requestID === 'string' || typeof requestID === 'number') {
2404
+ return requestID;
2405
+ }
2406
+ if (typeof turnId === 'string' || typeof turnId === 'number') {
2407
+ return turnId;
2408
+ }
2409
+ if (typeof turnIdSnake === 'string' || typeof turnIdSnake === 'number') {
2410
+ return turnIdSnake;
2411
+ }
2412
+ const {
2413
+ body,
2414
+ request,
2415
+ response,
2416
+ value
2417
+ } = event;
2418
+ const bodyPairId = body?.requestId ?? body?.request_id ?? body?.requestID ?? body?.turnId ?? body?.turn_id;
2419
+ if (typeof bodyPairId === 'string' || typeof bodyPairId === 'number') {
2420
+ return bodyPairId;
2421
+ }
2422
+ const requestPairId = request?.requestId ?? request?.request_id ?? request?.requestID ?? request?.turnId ?? request?.turn_id;
2423
+ if (typeof requestPairId === 'string' || typeof requestPairId === 'number') {
2424
+ return requestPairId;
2425
+ }
2426
+ const valuePairId = value?.requestId ?? value?.request_id ?? value?.requestID ?? value?.turnId ?? value?.turn_id;
2427
+ if (typeof valuePairId === 'string' || typeof valuePairId === 'number') {
2428
+ return valuePairId;
2429
+ }
2430
+ const responsePairId = response?.requestId ?? response?.request_id ?? response?.requestID ?? response?.turnId ?? response?.turn_id;
2431
+ if (typeof responsePairId === 'string' || typeof responsePairId === 'number') {
2432
+ return responsePairId;
2433
+ }
2434
+ return undefined;
2435
+ };
2436
+ const mergeRequestResponseEvents = (startedEvent, finishedEvent) => {
2437
+ return {
2438
+ ...mergeToolExecutionEvents(startedEvent, finishedEvent, startedEvent.type),
2439
+ requestEvent: startedEvent,
2440
+ responseEvent: finishedEvent
2441
+ };
2442
+ };
2443
+ const isMatchingRequestResponsePair = (startedEvent, finishedEvent) => {
2444
+ if (!requestEventTypes.has(startedEvent.type) || !responseEventTypes.has(finishedEvent.type)) {
2445
+ return false;
2446
+ }
2447
+ if (startedEvent.sessionId !== finishedEvent.sessionId) {
2448
+ return false;
2449
+ }
2450
+ const startedPairId = getPairId(startedEvent);
2451
+ const finishedPairId = getPairId(finishedEvent);
2452
+ if (startedPairId !== undefined && finishedPairId !== undefined) {
2453
+ return startedPairId === finishedPairId;
2454
+ }
2455
+ return startedEvent.type === 'ai-request' && finishedEvent.type === 'ai-response-success';
2456
+ };
2386
2457
  const isMatchingHandleSubmitPair = (startedEvent, finishedEvent) => {
2387
2458
  return startedEvent.type === handleSubmitEventType && finishedEvent.type === sseResponseCompletedEventType && startedEvent.sessionId === finishedEvent.sessionId;
2388
2459
  };
@@ -2396,6 +2467,11 @@ const collapseToolExecutionEvents = events => {
2396
2467
  i++;
2397
2468
  continue;
2398
2469
  }
2470
+ if (nextEvent && isMatchingRequestResponsePair(event, nextEvent)) {
2471
+ collapsedEvents.push(mergeRequestResponseEvents(event, nextEvent));
2472
+ i++;
2473
+ continue;
2474
+ }
2399
2475
  if (nextEvent && isMatchingHandleSubmitPair(event, nextEvent)) {
2400
2476
  collapsedEvents.push(mergeToolExecutionEvents(event, nextEvent, handleSubmitEventType));
2401
2477
  i++;
@@ -2644,6 +2720,30 @@ const loadSelectedEvent = async (_databaseName, _dataBaseVersion, _eventStoreNam
2644
2720
  return loadSelectedEvent$1(sessionId, eventId, type);
2645
2721
  };
2646
2722
 
2723
+ const mergeSelectedEventDetails = (selectedEvent, selectedEventDetails) => {
2724
+ if (!selectedEventDetails) {
2725
+ return selectedEvent;
2726
+ }
2727
+ const {
2728
+ requestEvent,
2729
+ responseEvent
2730
+ } = selectedEvent;
2731
+ if (!requestEvent || !responseEvent || typeof requestEvent !== 'object' || typeof responseEvent !== 'object') {
2732
+ return selectedEventDetails;
2733
+ }
2734
+ const selectedEventDetailsType = selectedEventDetails.type;
2735
+ const resolvedResponseEvent = selectedEventDetailsType === 'response' || selectedEventDetailsType === 'ai-response-success' ? selectedEventDetails : responseEvent;
2736
+ return {
2737
+ ...selectedEventDetails,
2738
+ ...selectedEvent,
2739
+ requestEvent: {
2740
+ ...requestEvent,
2741
+ ...selectedEventDetails
2742
+ },
2743
+ responseEvent: resolvedResponseEvent
2744
+ };
2745
+ };
2746
+
2647
2747
  const devtoolsTableHeaderHeight = 24;
2648
2748
  const devtoolsTableRowHeight = 24;
2649
2749
  const devtoolsTableScrollBarWidth = 12;
@@ -2654,7 +2754,10 @@ const devtoolsRootGap = 4;
2654
2754
  const devtoolsTopHeight = 28;
2655
2755
  const devtoolsTimelineHeight = 88;
2656
2756
  const getTableBodyY = (state, hasTimeline) => {
2657
- return state.y + viewPadding + devtoolsTopHeight + devtoolsRootGap + (hasTimeline ? devtoolsTimelineHeight : 0) + devtoolsTableHeaderHeight;
2757
+ const {
2758
+ y
2759
+ } = state;
2760
+ return y + viewPadding + devtoolsTopHeight + devtoolsRootGap + (hasTimeline ? devtoolsTimelineHeight : 0) + devtoolsTableHeaderHeight;
2658
2761
  };
2659
2762
 
2660
2763
  const getTableBodyHeight = (state, eventCount) => {
@@ -2883,7 +2986,7 @@ const selectEventAtIndex = async (state, selectedEventIndex, dependencies = sele
2883
2986
  };
2884
2987
  }
2885
2988
  const selectedEventDetails = await dependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
2886
- const resolvedSelectedEvent = await withPreparedSelectedEventPreview(selectedEventDetails ?? selectedEvent);
2989
+ const resolvedSelectedEvent = await withPreparedSelectedEventPreview(mergeSelectedEventDetails(selectedEvent, selectedEventDetails));
2887
2990
  return withSelectedEventVisible({
2888
2991
  ...state,
2889
2992
  detailTabs: createDetailTabs(selectedDetailTab, resolvedSelectedEvent),
@@ -2991,24 +3094,32 @@ const show2 = async (uid, menuId, x, y, args) => {
2991
3094
  };
2992
3095
 
2993
3096
  const getTableBodyEventIndex = (state, eventX, eventY) => {
2994
- if (!state.useDevtoolsLayout) {
3097
+ const {
3098
+ tableMaxLineY,
3099
+ tableMinLineY,
3100
+ tableWidth,
3101
+ useDevtoolsLayout,
3102
+ width,
3103
+ x
3104
+ } = state;
3105
+ if (!useDevtoolsLayout) {
2995
3106
  return -1;
2996
3107
  }
2997
3108
  const currentEvents = getCurrentEvents$1(state);
2998
3109
  if (currentEvents.length === 0) {
2999
3110
  return -1;
3000
3111
  }
3001
- const tableX = state.x + leftPadding;
3002
- const tableWidth = clampTableWidth(state.width, state.tableWidth);
3112
+ const tableX = x + leftPadding;
3113
+ const tableWidthNew = clampTableWidth(width, tableWidth);
3003
3114
  const hasTimeline = currentEvents.length > 0;
3004
3115
  const tableBodyY = getTableBodyY(state, hasTimeline);
3005
3116
  const relativeX = eventX - tableX;
3006
3117
  const relativeY = eventY - tableBodyY;
3007
- if (relativeX < 0 || relativeX >= tableWidth || relativeY < 0) {
3118
+ if (relativeX < 0 || relativeX >= tableWidthNew || relativeY < 0) {
3008
3119
  return -1;
3009
3120
  }
3010
- const eventIndex = state.tableMinLineY + Math.floor(relativeY / devtoolsTableRowHeight);
3011
- if (eventIndex < state.tableMinLineY || eventIndex >= state.tableMaxLineY || eventIndex >= currentEvents.length) {
3121
+ const eventIndex = tableMinLineY + Math.floor(relativeY / devtoolsTableRowHeight);
3122
+ if (eventIndex < tableMinLineY || eventIndex >= tableMaxLineY || eventIndex >= currentEvents.length) {
3012
3123
  return -1;
3013
3124
  }
3014
3125
  return eventIndex;
@@ -3251,7 +3362,7 @@ const restoreSelectedEvent = async state => {
3251
3362
  };
3252
3363
  }
3253
3364
  const selectedEventDetails = await loadEventsDependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
3254
- const resolvedSelectedEvent = selectedEventDetails ? await withPreparedSelectedEventPreview(selectedEventDetails) : null;
3365
+ const resolvedSelectedEvent = await withPreparedSelectedEventPreview(mergeSelectedEventDetails(selectedEvent, selectedEventDetails));
3255
3366
  return {
3256
3367
  ...state,
3257
3368
  previewTextCursorColumnIndex: null,
@@ -3699,6 +3810,22 @@ const shouldIncludeArguments = (event, name) => {
3699
3810
  };
3700
3811
 
3701
3812
  const getPayloadEvent = event => {
3813
+ const {
3814
+ requestEvent
3815
+ } = event;
3816
+ if (requestEvent && typeof requestEvent === 'object' && typeof requestEvent.type === 'string') {
3817
+ const mergedRequestEvent = requestEvent;
3818
+ if (mergedRequestEvent.body !== undefined) {
3819
+ return mergedRequestEvent.body;
3820
+ }
3821
+ if (mergedRequestEvent.value !== undefined) {
3822
+ return mergedRequestEvent.value;
3823
+ }
3824
+ if (hasOwn(mergedRequestEvent, 'arguments')) {
3825
+ return mergedRequestEvent.arguments;
3826
+ }
3827
+ return requestEvent;
3828
+ }
3702
3829
  const name = getPreviewName(event);
3703
3830
  if (name === 'list_files' && hasOwn(event, 'arguments')) {
3704
3831
  return event.arguments;
@@ -3951,14 +4078,18 @@ const handleTableFocus = state => {
3951
4078
  };
3952
4079
 
3953
4080
  const handleTableHeaderClick = (state, value) => {
4081
+ const {
4082
+ sortColumn,
4083
+ sortDescending
4084
+ } = state;
3954
4085
  if (!isTableColumn(value)) {
3955
4086
  return state;
3956
4087
  }
3957
- const sortDescending = state.sortColumn === value ? !state.sortDescending : false;
4088
+ const newSortDescending = sortColumn === value ? !sortDescending : false;
3958
4089
  const nextState = {
3959
4090
  ...state,
3960
4091
  sortColumn: value,
3961
- sortDescending
4092
+ sortDescending: newSortDescending
3962
4093
  };
3963
4094
  return withPreservedSelection$1(state, nextState);
3964
4095
  };
@@ -4345,6 +4476,87 @@ const loadContent = async (state, savedState) => {
4345
4476
  });
4346
4477
  };
4347
4478
 
4479
+ const isAttachmentImagePreview = value => {
4480
+ return typeof value === 'object' && value !== null && value.previewType === 'image';
4481
+ };
4482
+
4483
+ const getResponseEvent = event => {
4484
+ const {
4485
+ responseEvent
4486
+ } = event;
4487
+ if (responseEvent && typeof responseEvent === 'object' && typeof responseEvent.type === 'string') {
4488
+ const mergedResponseEvent = responseEvent;
4489
+ if (mergedResponseEvent.value !== undefined) {
4490
+ return mergedResponseEvent.value;
4491
+ }
4492
+ return responseEvent;
4493
+ }
4494
+ return event;
4495
+ };
4496
+
4497
+ const getStringLineCount = value => {
4498
+ return value.split('\n').length;
4499
+ };
4500
+ const isChatViewEvent$1 = value => {
4501
+ return typeof value === 'object' && value !== null && typeof value.type === 'string';
4502
+ };
4503
+ const getJsonLineCount = value => {
4504
+ const renderedValue = isChatViewEvent$1(value) ? {
4505
+ ...value,
4506
+ type: getEventTypeLabel(value)
4507
+ } : value;
4508
+ const json = JSON.stringify(renderedValue, null, 2);
4509
+ if (!json) {
4510
+ return 1;
4511
+ }
4512
+ let lineCount = 1;
4513
+ for (let i = 0; i < json.length; i++) {
4514
+ if (json[i] === '\n') {
4515
+ lineCount++;
4516
+ }
4517
+ }
4518
+ return lineCount;
4519
+ };
4520
+ const getPreviewLineCount = selectedEvent => {
4521
+ const previewEvent = getPreviewEvent(selectedEvent);
4522
+ if (previewEvent === undefined || isAttachmentImagePreview(previewEvent)) {
4523
+ return 0;
4524
+ }
4525
+ if (typeof previewEvent === 'string') {
4526
+ if (previewEvent === ImageCouldNotBeLoaded || isChatMessageUpdatedEvent(selectedEvent)) {
4527
+ return 0;
4528
+ }
4529
+ return getStringLineCount(previewEvent);
4530
+ }
4531
+ return getJsonLineCount(previewEvent);
4532
+ };
4533
+ const getLineCount = state => {
4534
+ const {
4535
+ selectedEvent
4536
+ } = state;
4537
+ if (!selectedEvent) {
4538
+ return 0;
4539
+ }
4540
+ const selectedDetailTab = getSelectedDetailTab(state.detailTabs);
4541
+ if (selectedDetailTab === Timing) {
4542
+ return 0;
4543
+ }
4544
+ if (selectedDetailTab === Preview) {
4545
+ return getPreviewLineCount(selectedEvent);
4546
+ }
4547
+ if (selectedDetailTab === Payload) {
4548
+ return getJsonLineCount(getPayloadEvent(selectedEvent));
4549
+ }
4550
+ return getJsonLineCount(getResponseEvent(selectedEvent));
4551
+ };
4552
+ const getDetailsLineNumberWidth = state => {
4553
+ const lineCount = getLineCount(state);
4554
+ if (lineCount === 0) {
4555
+ return 0;
4556
+ }
4557
+ return String(lineCount).length * defaultPreviewTextColumnWidth;
4558
+ };
4559
+
4348
4560
  // cspell:ignore liga calt
4349
4561
 
4350
4562
  const getCss = state => {
@@ -4358,6 +4570,7 @@ const getCss = state => {
4358
4570
  const scrollBarOffset = getScrollBarOffset(state.tableDeltaY, maxDeltaY, tableBodyHeight, scrollBarHeight);
4359
4571
  const tableContentWidth = Math.max(0, tableWidth - (showScrollBar ? devtoolsTableScrollBarWidth : 0));
4360
4572
  const detailsWidth = hasSelectedEvent ? getDetailsWidth(state.width, state.tableWidth) : 0;
4573
+ const detailsLineNumberWidth = getDetailsLineNumberWidth(state);
4361
4574
  const topSize = state.width >= state.largeBreakpoint ? 30 : state.width >= state.mediumBreakpoint ? 60 : 60;
4362
4575
  const tableColumnLayout = getTableColumnLayout(tableContentWidth, getVisibleTableColumns(state.tableColumns), state.tableColumnWidths);
4363
4576
  const [tableColZeroWidth = 0, tableColOneWidth = 0, tableColTwoWidth = 0] = tableColumnLayout.visibleColumnWidths;
@@ -4374,6 +4587,7 @@ const getCss = state => {
4374
4587
  --ChatDebugViewTableColZeroWidth: ${tableColZeroWidth}px;
4375
4588
  --ChatDebugViewTableColOneWidth: ${tableColOneWidth}px;
4376
4589
  --ChatDebugViewTableColTwoWidth: ${tableColTwoWidth}px;
4590
+ --ChatDebugViewDetailsLineNumberWidth: ${detailsLineNumberWidth}px;
4377
4591
  --ChatDebugViewDetailsWidth: ${detailsWidth}px;
4378
4592
  --ChatDebugViewDurationColumnWidth: ${state.tableColumnWidths.duration}px;
4379
4593
  --ChatDebugViewTableRowHeight: ${devtoolsTableRowHeight}px;
@@ -4384,12 +4598,14 @@ const getCss = state => {
4384
4598
  --ResizerTwoLeft: ${resizerTwoLeft}px;
4385
4599
  --ChatDebugViewSashWidth: ${sashWidth}px;
4386
4600
  --ChatDebugViewTableWidth: ${tableWidth}px;
4601
+ --ChatDebugViewTimelineHeight: ${state.timelineHeight}px;
4387
4602
  --ChatDebugViewTimelineCursorGuideLeft: ${state.timelineHoverPercent ?? 0}%;
4388
4603
  --ChatDebugViewTimelineSelectionEndLeft: ${selectionEndPercent ?? 0}%;
4389
4604
  --ChatDebugViewTimelineSelectionStartLeft: ${selectionStartPercent ?? 0}%;
4390
4605
  --ChatDebugViewTopSize: ${topSize}px;
4391
4606
  --ChatDebugViewTypeColumnWidth: ${state.tableColumnWidths.type}px;
4392
4607
  padding: ${viewPadding}px;
4608
+ padding-right: 0;
4393
4609
  }
4394
4610
 
4395
4611
  .TableWrapper {
@@ -4402,6 +4618,31 @@ const getCss = state => {
4402
4618
  width: calc(100% - var(--ChatDebugViewTableScrollBarWidth));
4403
4619
  }
4404
4620
 
4621
+ .ChatDebugViewTimeline {
4622
+ contain: strict;
4623
+ display: flex;
4624
+ flex-direction: column;
4625
+ gap: 8px;
4626
+ height: var(--ChatDebugViewTimelineHeight);
4627
+ }
4628
+
4629
+ .ChatDebugViewTimelineInteractive {
4630
+ flex: 1;
4631
+ min-height: 0;
4632
+ position: relative;
4633
+ }
4634
+
4635
+ .ChatDebugViewDetailsBottom .Gutter {
4636
+ flex: 0 0 var(--ChatDebugViewDetailsLineNumberWidth);
4637
+ width: var(--ChatDebugViewDetailsLineNumberWidth);
4638
+ }
4639
+
4640
+ .ChatDebugViewDetailsBottom .ChatDebugViewEventLineNumber {
4641
+ display: inline-block;
4642
+ min-width: var(--ChatDebugViewDetailsLineNumberWidth);
4643
+ width: var(--ChatDebugViewDetailsLineNumberWidth);
4644
+ }
4645
+
4405
4646
  .TableScrollBar {
4406
4647
  background: rgba(255, 255, 255, 0.06);
4407
4648
  border-radius: 999px;
@@ -5222,10 +5463,6 @@ const getPanelId = detailTab => {
5222
5463
  return `ChatDebugViewDetailsPanel-${detailTab}`;
5223
5464
  };
5224
5465
 
5225
- const isAttachmentImagePreview = value => {
5226
- return typeof value === 'object' && value !== null && value.previewType === 'image';
5227
- };
5228
-
5229
5466
  const getImagePreviewLabelDom = preview => {
5230
5467
  if (preview.stats === undefined) {
5231
5468
  return [{
@@ -5806,7 +6043,6 @@ const getTableScrollBarDom = visible => {
5806
6043
 
5807
6044
  const getTableWrapperDom = (rowNodes, eventCount, visibleTableColumns = defaultVisibleTableColumns, tableColumns = createTableColumns(), summary = '', focus = 0, className = '', role = '', showScrollBar = false) => {
5808
6045
  const tableWrapperClassName = mergeClassNames(TableWrapper, focus === FocusChatDebugTable ? FocusOutline : '', className);
5809
- const scrollBarNodes = getTableScrollBarDom(showScrollBar);
5810
6046
  const tableWrapperNode = {
5811
6047
  childCount: showScrollBar ? 3 : 2,
5812
6048
  className: tableWrapperClassName,
@@ -5816,7 +6052,7 @@ const getTableWrapperDom = (rowNodes, eventCount, visibleTableColumns = defaultV
5816
6052
  role
5817
6053
  } : {})
5818
6054
  };
5819
- return [tableWrapperNode, ...getTableDom(rowNodes, eventCount, visibleTableColumns, tableColumns, summary, focus), ...getTableResizersDom(visibleTableColumns), ...scrollBarNodes];
6055
+ return [tableWrapperNode, ...getTableDom(rowNodes, eventCount, visibleTableColumns, tableColumns, summary, focus), ...getTableResizersDom(visibleTableColumns), ...getTableScrollBarDom(showScrollBar)];
5820
6056
  };
5821
6057
 
5822
6058
  const getTableWrapperWrapperDom = (rowNodes, eventCount, visibleTableColumns = defaultVisibleTableColumns, tableColumns = createTableColumns(), summary = '', focus = 0, className = '', role = '', showScrollBar = false) => {
@@ -6008,7 +6244,7 @@ const getDevtoolsDom = (events, selectedEvent, selectedEventIndex, timelineEvent
6008
6244
  rowIndex: previewTextCursorRowIndex
6009
6245
  });
6010
6246
  const payloadEventNodes = selectedEvent ? getEventNode(getPayloadEvent(selectedEvent)) : [];
6011
- const responseEventNodes = selectedEvent ? getEventNode(selectedEvent) : [];
6247
+ const responseEventNodes = selectedEvent ? getEventNode(getResponseEvent(selectedEvent)) : [];
6012
6248
  const hasSelectedEvent = responseEventNodes.length > 0;
6013
6249
  const eventsClassName = getEventsClassName(hasSelectedEvent);
6014
6250
  const summary = getTableSummary(events);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-debug-view",
3
- "version": "10.2.0",
3
+ "version": "10.4.0",
4
4
  "description": "Chat Debug View Worker",
5
5
  "repository": {
6
6
  "type": "git",