@lvce-editor/chat-debug-view 10.20.0 → 10.21.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.
@@ -1441,6 +1441,7 @@ const TimelineStartSeconds = 'timelineStartSeconds';
1441
1441
  const TimelineEndSeconds = 'timelineEndSeconds';
1442
1442
  const TimelineRangePreset = 'timelineRangePreset';
1443
1443
  const Refresh$1 = 'refresh';
1444
+ const ToggleHeadersSection = 'toggleHeadersSection';
1444
1445
  const All$1 = 'all';
1445
1446
  const Tools$1 = 'tools';
1446
1447
  const Network$1 = 'network';
@@ -1476,7 +1477,7 @@ const FailedToLoadChatDebugSession = 'Failed to load chat debug session "{PH1}".
1476
1477
  const FailedToLoadChatDebugSessionWithError = 'Failed to load chat debug session "{PH1}": {PH2}';
1477
1478
  const FilterEvents = 'Filter events';
1478
1479
  const FromSeconds = 'from {PH1}s';
1479
- const General = 'General';
1480
+ const General$1 = 'General';
1480
1481
  const Headers = 'Headers';
1481
1482
  const ImageCouldNotBeLoaded = 'image could not be loaded';
1482
1483
  const InputTokens = 'Input Tokens';
@@ -1497,11 +1498,11 @@ const Preview = 'Preview';
1497
1498
  const Refresh = 'Refresh';
1498
1499
  const RefreshEvents = 'Refresh events';
1499
1500
  const ResetColumns = 'Reset columns';
1500
- const RequestHeaders = 'Request Headers';
1501
+ const RequestHeaders$1 = 'Request Headers';
1501
1502
  const RequestMethod = 'Request Method';
1502
1503
  const RequestUrl = 'Request URL';
1503
1504
  const Response = 'Response';
1504
- const ResponseHeaders = 'Response Headers';
1505
+ const ResponseHeaders$1 = 'Response Headers';
1505
1506
  const SecondsRange = '{PH1}s-{PH2}s';
1506
1507
  const Size$1 = 'Size';
1507
1508
  const Started = 'Started';
@@ -1567,7 +1568,7 @@ const fromSeconds = seconds => {
1567
1568
  });
1568
1569
  };
1569
1570
  const general = () => {
1570
- return i18nString(General);
1571
+ return i18nString(General$1);
1571
1572
  };
1572
1573
  const headers = () => {
1573
1574
  return i18nString(Headers);
@@ -1628,7 +1629,7 @@ const refreshEvents$1 = () => {
1628
1629
  return i18nString(RefreshEvents);
1629
1630
  };
1630
1631
  const requestHeaders = () => {
1631
- return i18nString(RequestHeaders);
1632
+ return i18nString(RequestHeaders$1);
1632
1633
  };
1633
1634
  const requestMethod = () => {
1634
1635
  return i18nString(RequestMethod);
@@ -1637,7 +1638,7 @@ const requestUrl = () => {
1637
1638
  return i18nString(RequestUrl);
1638
1639
  };
1639
1640
  const responseHeaders = () => {
1640
- return i18nString(ResponseHeaders);
1641
+ return i18nString(ResponseHeaders$1);
1641
1642
  };
1642
1643
  const resetColumns = () => {
1643
1644
  return i18nString(ResetColumns);
@@ -2441,6 +2442,7 @@ const createDefaultState = () => {
2441
2442
  return {
2442
2443
  assetDir: '',
2443
2444
  categoryFilters: createCategoryFilters(),
2445
+ collapsedHeaderSections: [],
2444
2446
  databaseName: 'lvce-chat-view-sessions',
2445
2447
  dataBaseVersion: 2,
2446
2448
  defaultTableWidth,
@@ -2540,7 +2542,7 @@ const RenderFocusContext = 4;
2540
2542
  const RenderFocus = 5;
2541
2543
 
2542
2544
  const diff = (oldState, newState) => {
2543
- 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.previewTextDeltaY !== newState.previewTextDeltaY || 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) {
2545
+ if (oldState.categoryFilters !== newState.categoryFilters || oldState.collapsedHeaderSections !== newState.collapsedHeaderSections || 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.previewTextDeltaY !== newState.previewTextDeltaY || 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) {
2544
2546
  return [RenderIncremental, RenderCss];
2545
2547
  }
2546
2548
  return [];
@@ -2800,25 +2802,38 @@ const getFilteredEvents = (events, filterValue, eventCategoryFilters, showInputE
2800
2802
  return filteredByCategory.filter(event => JSON.stringify(event).toLowerCase().includes(filterText));
2801
2803
  };
2802
2804
 
2805
+ const formatDurationSeconds = value => {
2806
+ return `${value.toFixed(1)}s`;
2807
+ };
2808
+
2809
+ const formatDurationText = durationMs => {
2810
+ if (durationMs >= 1000) {
2811
+ return formatDurationSeconds(durationMs / 1000);
2812
+ }
2813
+ return `${durationMs}ms`;
2814
+ };
2803
2815
  const getDurationText = event => {
2804
2816
  if (event.time) {
2805
2817
  return event.time;
2806
2818
  }
2807
2819
  const explicitDuration = event.durationMs ?? event.duration;
2808
2820
  if (typeof explicitDuration === 'number' && Number.isFinite(explicitDuration)) {
2809
- return `${explicitDuration}ms`;
2821
+ return formatDurationText(explicitDuration);
2810
2822
  }
2811
2823
  const start = toTimeNumber(event.started ?? event.startTime ?? event.startTimestamp ?? event.timestamp);
2812
2824
  const end = toTimeNumber(event.ended ?? event.endTime ?? event.endTimestamp ?? event.timestamp);
2813
2825
  if (start === undefined || end === undefined || end < start) {
2814
2826
  return '-';
2815
2827
  }
2816
- return `${end - start}ms`;
2828
+ return formatDurationText(end - start);
2817
2829
  };
2818
2830
 
2819
2831
  const getEventTableDurationText = event => {
2820
2832
  const durationText = getDurationText(event);
2821
2833
  if (!durationText.endsWith('ms')) {
2834
+ if (durationText.endsWith('s')) {
2835
+ return `${durationText.slice(0, -1)} s`;
2836
+ }
2822
2837
  return durationText;
2823
2838
  }
2824
2839
  return `${durationText.slice(0, -2)} ms`;
@@ -3995,6 +4010,28 @@ const getBoolean = value => {
3995
4010
  return value === true || value === 'true' || value === 'on' || value === '1';
3996
4011
  };
3997
4012
 
4013
+ const General = 'general';
4014
+ const RequestHeaders = 'requestHeaders';
4015
+ const ResponseHeaders = 'responseHeaders';
4016
+ const headerSectionKeys = [General, RequestHeaders, ResponseHeaders];
4017
+ const isHeaderSectionKey = value => {
4018
+ return headerSectionKeys.includes(value);
4019
+ };
4020
+
4021
+ const removeSection = (collapsedHeaderSections, section) => {
4022
+ return collapsedHeaderSections.filter(value => value !== section);
4023
+ };
4024
+ const toggleHeadersSection = (state, value) => {
4025
+ if (!isHeaderSectionKey(value)) {
4026
+ return state;
4027
+ }
4028
+ const isCollapsed = state.collapsedHeaderSections.includes(value);
4029
+ return {
4030
+ ...state,
4031
+ collapsedHeaderSections: isCollapsed ? removeSection(state.collapsedHeaderSections, value) : [...state.collapsedHeaderSections, value]
4032
+ };
4033
+ };
4034
+
3998
4035
  const parseTimelineRangePreset$1 = value => {
3999
4036
  if (!value) {
4000
4037
  return {
@@ -4164,6 +4201,9 @@ const handleDetailTab = (state, value) => {
4164
4201
  detailTabs
4165
4202
  };
4166
4203
  };
4204
+ const handleToggleHeadersSection = (state, value) => {
4205
+ return toggleHeadersSection(state, value);
4206
+ };
4167
4207
  const inputHandlers = {
4168
4208
  [CloseDetails$1]: handleCloseDetails,
4169
4209
  [DetailTab]: handleDetailTab,
@@ -4176,6 +4216,7 @@ const inputHandlers = {
4176
4216
  [TimelineEndSeconds]: handleTimelineEndSeconds$1,
4177
4217
  [TimelineRangePreset]: handleTimelineRangePreset$1,
4178
4218
  [TimelineStartSeconds]: handleTimelineStartSeconds$1,
4219
+ [ToggleHeadersSection]: handleToggleHeadersSection,
4179
4220
  [UseDevtoolsLayout]: handleUseDevtoolsLayout
4180
4221
  };
4181
4222
  const handleInput = (state, name, value, checked) => {
@@ -4278,9 +4319,6 @@ const getPayloadObject = (event, name) => {
4278
4319
  };
4279
4320
  };
4280
4321
  const getPayloadEvent = event => {
4281
- if (event && event.type === 'ai-request') {
4282
- return event.body;
4283
- }
4284
4322
  const {
4285
4323
  requestEvent
4286
4324
  } = event;
@@ -4288,6 +4326,9 @@ const getPayloadEvent = event => {
4288
4326
  if (mergedRequestPayloadEvent.found) {
4289
4327
  return mergedRequestPayloadEvent.value;
4290
4328
  }
4329
+ if (event && event.type === 'ai-request') {
4330
+ return event.body;
4331
+ }
4291
4332
  const name = getPreviewName(event);
4292
4333
  if (name === 'list_files' && hasOwn(event, 'arguments')) {
4293
4334
  return event.arguments;
@@ -4307,57 +4348,75 @@ const isChatMessageUpdatedEvent = event => {
4307
4348
  return event.type === 'chat-message-updated';
4308
4349
  };
4309
4350
 
4351
+ const getObjectValue = value => {
4352
+ if (!value || typeof value !== 'object') {
4353
+ return undefined;
4354
+ }
4355
+ return value;
4356
+ };
4310
4357
  const getResponseContentText = content => {
4311
- if (!content || typeof content !== 'object') {
4358
+ const contentObject = getObjectValue(content);
4359
+ if (!contentObject) {
4312
4360
  return undefined;
4313
4361
  }
4314
4362
  if (Array.isArray(content)) {
4315
4363
  const [firstContentItem] = content;
4316
- if (!firstContentItem || typeof firstContentItem !== 'object') {
4364
+ const firstContentItemObject = getObjectValue(firstContentItem);
4365
+ if (!firstContentItemObject) {
4317
4366
  return undefined;
4318
4367
  }
4319
4368
  const {
4320
4369
  text
4321
- } = firstContentItem;
4370
+ } = firstContentItemObject;
4322
4371
  return typeof text === 'string' ? text : undefined;
4323
4372
  }
4324
4373
  const {
4325
4374
  text
4326
- } = content;
4375
+ } = contentObject;
4327
4376
  return typeof text === 'string' ? text : undefined;
4328
4377
  };
4329
- const getResponseOutput = event => {
4330
- if (event.type === 'sse-response-completed') {
4331
- const {
4332
- value
4333
- } = event;
4334
- if (!value || typeof value !== 'object') {
4335
- return undefined;
4336
- }
4337
- const {
4338
- response
4339
- } = value;
4340
- if (!response || typeof response !== 'object') {
4341
- return undefined;
4342
- }
4343
- const {
4344
- output
4345
- } = response;
4346
- return Array.isArray(output) ? output : undefined;
4378
+ const getOutput = value => {
4379
+ const valueObject = getObjectValue(value);
4380
+ if (!valueObject) {
4381
+ return undefined;
4347
4382
  }
4348
- if (event.type === 'ai-response') {
4349
- const {
4350
- value
4351
- } = event;
4352
- if (!value || typeof value !== 'object') {
4383
+ const {
4384
+ output
4385
+ } = valueObject;
4386
+ return Array.isArray(output) ? output : undefined;
4387
+ };
4388
+ const getAiRequestResponseOutput = event => {
4389
+ const {
4390
+ endValue
4391
+ } = event;
4392
+ const endValueObject = getObjectValue(endValue);
4393
+ if (!endValueObject) {
4394
+ return undefined;
4395
+ }
4396
+ return getOutput(endValueObject.value);
4397
+ };
4398
+ const getCompletedResponseOutput = event => {
4399
+ const valueObject = getObjectValue(event.value);
4400
+ if (!valueObject) {
4401
+ return undefined;
4402
+ }
4403
+ const responseObject = getObjectValue(valueObject.response);
4404
+ if (!responseObject) {
4405
+ return undefined;
4406
+ }
4407
+ return getOutput(responseObject);
4408
+ };
4409
+ const getResponseOutput = event => {
4410
+ switch (event.type) {
4411
+ case 'ai-request':
4412
+ return getAiRequestResponseOutput(event);
4413
+ case 'ai-response':
4414
+ return getOutput(event.value);
4415
+ case 'sse-response-completed':
4416
+ return getCompletedResponseOutput(event);
4417
+ default:
4353
4418
  return undefined;
4354
- }
4355
- const {
4356
- output
4357
- } = value;
4358
- return Array.isArray(output) ? output : undefined;
4359
4419
  }
4360
- return undefined;
4361
4420
  };
4362
4421
  const getResponsePreviewText = event => {
4363
4422
  const output = getResponseOutput(event);
@@ -4365,12 +4424,13 @@ const getResponsePreviewText = event => {
4365
4424
  return undefined;
4366
4425
  }
4367
4426
  const [firstOutput] = output;
4368
- if (!firstOutput || typeof firstOutput !== 'object') {
4427
+ const firstOutputObject = getObjectValue(firstOutput);
4428
+ if (!firstOutputObject) {
4369
4429
  return undefined;
4370
4430
  }
4371
4431
  const {
4372
4432
  content
4373
- } = firstOutput;
4433
+ } = firstOutputObject;
4374
4434
  return getResponseContentText(content);
4375
4435
  };
4376
4436
  const getPreviewMessageText = event => {
@@ -5460,14 +5520,26 @@ const getCss = state => {
5460
5520
  }
5461
5521
 
5462
5522
  .ChatDebugViewHeadersSectionHeading {
5523
+ align-items: center;
5524
+ background: transparent;
5525
+ border: 0;
5463
5526
  color: var(--vscode-descriptionForeground, rgba(255, 255, 255, 0.7));
5527
+ cursor: pointer;
5528
+ display: flex;
5464
5529
  font-size: 11px;
5465
5530
  font-weight: 600;
5531
+ justify-content: flex-start;
5466
5532
  letter-spacing: 0.08em;
5467
5533
  margin-bottom: 6px;
5534
+ padding: 0;
5535
+ text-align: left;
5468
5536
  text-transform: uppercase;
5469
5537
  }
5470
5538
 
5539
+ .ChatDebugViewHeadersSectionHeading:hover {
5540
+ color: var(--vscode-editor-foreground);
5541
+ }
5542
+
5471
5543
  .ChatDebugViewHeadersRow {
5472
5544
  display: grid;
5473
5545
  grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
@@ -6437,18 +6509,23 @@ const getHeadersTableNodes = headers => {
6437
6509
  type: Ul
6438
6510
  }, ...headerRows];
6439
6511
  };
6440
- const getHeaderSectionNodes = (label, headers) => {
6512
+ const getHeaderSectionNodes = (section, label, headers, collapsedHeaderSections) => {
6513
+ const isCollapsed = collapsedHeaderSections.includes(section);
6441
6514
  return [{
6442
- childCount: 2,
6515
+ childCount: isCollapsed ? 1 : 2,
6443
6516
  className: ChatDebugViewHeadersSection,
6444
6517
  type: Div
6445
6518
  }, {
6446
6519
  childCount: 1,
6447
6520
  className: ChatDebugViewHeadersSectionHeading,
6448
- type: Div
6449
- }, text(label), ...getHeadersTableNodes(headers)];
6521
+ name: ToggleHeadersSection,
6522
+ onChange: HandleFilterInput,
6523
+ onClick: HandleFilterInput,
6524
+ type: Button$1,
6525
+ value: section
6526
+ }, text(label), ...(isCollapsed ? [] : getHeadersTableNodes(headers))];
6450
6527
  };
6451
- const getHeadersContentNodes = (responseEventNodes, selectedEvent) => {
6528
+ const getHeadersContentNodes = (responseEventNodes, selectedEvent, collapsedHeaderSections = []) => {
6452
6529
  const generalEntries = getGeneralEntries(selectedEvent);
6453
6530
  const requestHeaders$1 = getHeaders(selectedEvent?.headers);
6454
6531
  const responseHeaders$1 = getHeaders(isHeadersRecord(selectedEvent?.endValue) ? selectedEvent.endValue.headers : undefined);
@@ -6457,13 +6534,13 @@ const getHeadersContentNodes = (responseEventNodes, selectedEvent) => {
6457
6534
  }
6458
6535
  const nodes = [];
6459
6536
  if (generalEntries.length > 0) {
6460
- nodes.push(...getHeaderSectionNodes(general(), generalEntries));
6537
+ nodes.push(...getHeaderSectionNodes(General, general(), generalEntries, collapsedHeaderSections));
6461
6538
  }
6462
6539
  if (requestHeaders$1.length > 0) {
6463
- nodes.push(...getHeaderSectionNodes(requestHeaders(), requestHeaders$1));
6540
+ nodes.push(...getHeaderSectionNodes(RequestHeaders, requestHeaders(), requestHeaders$1, collapsedHeaderSections));
6464
6541
  }
6465
6542
  if (responseHeaders$1.length > 0) {
6466
- nodes.push(...getHeaderSectionNodes(responseHeaders(), responseHeaders$1));
6543
+ nodes.push(...getHeaderSectionNodes(ResponseHeaders, responseHeaders(), responseHeaders$1, collapsedHeaderSections));
6467
6544
  }
6468
6545
  return nodes;
6469
6546
  };
@@ -7557,7 +7634,7 @@ const getTokenUsageContentNodes = (responseEventNodes, selectedEvent) => {
7557
7634
  return getTokenUsageDetailsDom(selectedEvent);
7558
7635
  };
7559
7636
 
7560
- const getSelectedContentNodes = (safeSelectedDetailTab, previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualization) => {
7637
+ const getSelectedContentNodes = (safeSelectedDetailTab, previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualization, collapsedHeaderSections = []) => {
7561
7638
  if (safeSelectedDetailTab === Tokens$1) {
7562
7639
  return getTokenUsageContentNodes(responseEventNodes, selectedEvent);
7563
7640
  }
@@ -7571,19 +7648,19 @@ const getSelectedContentNodes = (safeSelectedDetailTab, previewEventNodes, paylo
7571
7648
  return getPayloadContentNodes(payloadEventNodes, selectedEvent);
7572
7649
  }
7573
7650
  if (safeSelectedDetailTab === Headers$1) {
7574
- return getHeadersContentNodes(responseEventNodes, selectedEvent);
7651
+ return getHeadersContentNodes(responseEventNodes, selectedEvent, collapsedHeaderSections);
7575
7652
  }
7576
7653
  return getResponseContentNodes(responseEventNodes, selectedEvent);
7577
7654
  };
7578
7655
 
7579
- const getDetailsDom = (previewEventNodes, payloadEventNodes = previewEventNodes, responseEventNodes = payloadEventNodes, selectedEvent = null, detailTabs = createDetailTabs(), previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, previewVirtualization) => {
7656
+ const getDetailsDom = (previewEventNodes, payloadEventNodes = previewEventNodes, responseEventNodes = payloadEventNodes, selectedEvent = null, detailTabs = createDetailTabs(), previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, previewVirtualization, collapsedHeaderSections = []) => {
7580
7657
  if (previewEventNodes.length === 0 && payloadEventNodes.length === 0 && responseEventNodes.length === 0) {
7581
7658
  return [];
7582
7659
  }
7583
7660
  const normalizedDetailTabs = getNormalizedDetailTabs(selectedEvent, detailTabs);
7584
7661
  const safeSelectedDetailTab = getSelectedDetailTab(normalizedDetailTabs);
7585
7662
  const selectedDetailTab = normalizedDetailTabs.find(detailTab => detailTab.name === safeSelectedDetailTab) ?? normalizedDetailTabs[0];
7586
- const contentNodes = getSelectedContentNodes(safeSelectedDetailTab, previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualization);
7663
+ const contentNodes = getSelectedContentNodes(safeSelectedDetailTab, previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualization, collapsedHeaderSections);
7587
7664
  return [{
7588
7665
  childCount: 2,
7589
7666
  className: ChatDebugViewDetails,
@@ -8125,7 +8202,7 @@ const getTimelineDom = (timelineInfo, hoverPercent = null) => {
8125
8202
  }, ...selectionNodes];
8126
8203
  };
8127
8204
 
8128
- const getDevtoolsDom = (events, selectedEvent, selectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage = noEventsFound(), timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', detailTabs = createDetailTabs(), visibleTableColumns = defaultVisibleTableColumns, tableColumns = createTableColumns(), timelineInfo, timelineHoverPercent = null, focus = 0, previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, previewTextDeltaY = 0, previewTextViewportHeight = 0, minLineY = 0, maxLineY = events.length) => {
8205
+ const getDevtoolsDom = (events, selectedEvent, selectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage = noEventsFound(), timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', detailTabs = createDetailTabs(), visibleTableColumns = defaultVisibleTableColumns, tableColumns = createTableColumns(), timelineInfo, timelineHoverPercent = null, focus = 0, previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, previewTextDeltaY = 0, previewTextViewportHeight = 0, minLineY = 0, maxLineY = events.length, collapsedHeaderSections = []) => {
8129
8206
  const visibleEvents = events.slice(minLineY, maxLineY);
8130
8207
  const rows = createDevtoolsRows(visibleEvents, selectedEventIndex, minLineY);
8131
8208
  const rowNodes = getDevtoolsRows(rows, visibleTableColumns);
@@ -8150,7 +8227,7 @@ const getDevtoolsDom = (events, selectedEvent, selectedEventIndex, timelineEvent
8150
8227
  const summary = getTableSummary(events);
8151
8228
  const showScrollBar = visibleEvents.length < events.length;
8152
8229
  const tableNodes = events.length === 0 ? getEmptyStateDom(emptyMessage) : getTableWrapperWrapperDom(rowNodes, visibleEvents.length, visibleTableColumns, tableColumns, summary, focus, '', '', showScrollBar);
8153
- const detailsNodes = getDetailsDom(previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, detailTabs, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualizationOptions);
8230
+ const detailsNodes = getDetailsDom(previewEventNodes, payloadEventNodes, responseEventNodes, selectedEvent, detailTabs, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewVirtualizationOptions, collapsedHeaderSections);
8154
8231
  const sashNodes = getSashNodesDom(hasSelectedEvent);
8155
8232
  const splitChildCount = hasSelectedEvent ? 3 : 1;
8156
8233
  const rootChildCount = 3;
@@ -8204,7 +8281,7 @@ const getEventCategoryFilterDescription = eventCategoryFilters => {
8204
8281
  }
8205
8282
  return eventCategoryFilters.map(eventCategoryFilter => getEventCategoryFilterLabel(eventCategoryFilter).toLowerCase()).join(', ');
8206
8283
  };
8207
- const getChatDebugViewDom = (errorMessage, filterValue, eventCategoryFilters, categoryFilters, _showEventStreamFinishedEvents, _showInputEvents, _showResponsePartEvents, useDevtoolsLayout, selectedEvent, selectedEventIndex, timelineStartSeconds, timelineEndSeconds, timelineFilterDescription, timelineEvents, events, timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', visibleTableColumns = defaultVisibleTableColumns, detailTabs = createDetailTabs(), tableColumns = createTableColumns(), timelineInfo, timelineHoverPercent = null, focus = 0, previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, minLineY = 0, maxLineY = events.length, previewTextDeltaY = 0, previewTextViewportHeight = 0) => {
8284
+ const getChatDebugViewDom = (errorMessage, filterValue, eventCategoryFilters, categoryFilters, _showEventStreamFinishedEvents, _showInputEvents, _showResponsePartEvents, useDevtoolsLayout, selectedEvent, selectedEventIndex, timelineStartSeconds, timelineEndSeconds, timelineFilterDescription, timelineEvents, events, timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', visibleTableColumns = defaultVisibleTableColumns, detailTabs = createDetailTabs(), tableColumns = createTableColumns(), timelineInfo, timelineHoverPercent = null, focus = 0, previewTextCursorRowIndex = null, previewTextCursorColumnIndex = null, minLineY = 0, maxLineY = events.length, previewTextDeltaY = 0, previewTextViewportHeight = 0, collapsedHeaderSections = []) => {
8208
8285
  if (errorMessage) {
8209
8286
  return getDebugErrorDom(errorMessage);
8210
8287
  }
@@ -8228,7 +8305,7 @@ const getChatDebugViewDom = (errorMessage, filterValue, eventCategoryFilters, ca
8228
8305
  const emptyMessage = getEmptyMessage(events.length, hasFilterValue, useNoToolCallEventsMessage, noFilteredEventsMessage);
8229
8306
  const safeSelectedEventIndex = selectedEventIndex === null || selectedEventIndex < 0 || selectedEventIndex >= events.length ? null : selectedEventIndex;
8230
8307
  if (useDevtoolsLayout) {
8231
- const devtoolsDom = getDevtoolsDom(events, selectedEvent, safeSelectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds, detailTabs, visibleTableColumns, tableColumns, timelineInfo, timelineHoverPercent, focus, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewTextDeltaY, previewTextViewportHeight, minLineY, maxLineY);
8308
+ const devtoolsDom = getDevtoolsDom(events, selectedEvent, safeSelectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds, detailTabs, visibleTableColumns, tableColumns, timelineInfo, timelineHoverPercent, focus, previewTextCursorRowIndex, previewTextCursorColumnIndex, previewTextDeltaY, previewTextViewportHeight, minLineY, maxLineY, collapsedHeaderSections);
8232
8309
  const devtoolsContentNodes = devtoolsDom.slice(1);
8233
8310
  const topLevelNodes = [...getDebugViewTopDom(filterValue, useDevtoolsLayout, categoryFilters), ...devtoolsContentNodes];
8234
8311
  const rootChildCount = getTopLevelChildCount(topLevelNodes);
@@ -8264,7 +8341,7 @@ const renderItems = (oldState, newState) => {
8264
8341
  }
8265
8342
  const filteredEvents = getCurrentEvents$1(newState);
8266
8343
  const previewTextViewportHeight = getPreviewTextViewportHeight(newState);
8267
- const dom = getChatDebugViewDom(newState.errorMessage, newState.filterValue, getSelectedEventCategoryFilters(newState.categoryFilters), newState.categoryFilters, newState.showEventStreamFinishedEvents, newState.showInputEvents, newState.showResponsePartEvents, newState.useDevtoolsLayout, newState.selectedEvent, newState.selectedEventIndex, newState.timelineStartSeconds, newState.timelineEndSeconds, newState.timelineFilterDescription, withSessionEventIds(newState.timelineEvents), withSessionEventIds(filteredEvents), newState.timelineSelectionActive, newState.timelineSelectionAnchorSeconds, newState.timelineSelectionFocusSeconds, getVisibleTableColumns(newState.tableColumns), newState.detailTabs, newState.tableColumns, newState.timelineInfo, newState.timelineHoverPercent, newState.focus, newState.previewTextCursorRowIndex, newState.previewTextCursorColumnIndex, newState.tableMinLineY, newState.tableMaxLineY, newState.previewTextDeltaY, previewTextViewportHeight);
8344
+ const dom = getChatDebugViewDom(newState.errorMessage, newState.filterValue, getSelectedEventCategoryFilters(newState.categoryFilters), newState.categoryFilters, newState.showEventStreamFinishedEvents, newState.showInputEvents, newState.showResponsePartEvents, newState.useDevtoolsLayout, newState.selectedEvent, newState.selectedEventIndex, newState.timelineStartSeconds, newState.timelineEndSeconds, newState.timelineFilterDescription, withSessionEventIds(newState.timelineEvents), withSessionEventIds(filteredEvents), newState.timelineSelectionActive, newState.timelineSelectionAnchorSeconds, newState.timelineSelectionFocusSeconds, getVisibleTableColumns(newState.tableColumns), newState.detailTabs, newState.tableColumns, newState.timelineInfo, newState.timelineHoverPercent, newState.focus, newState.previewTextCursorRowIndex, newState.previewTextCursorColumnIndex, newState.tableMinLineY, newState.tableMaxLineY, newState.previewTextDeltaY, previewTextViewportHeight, newState.collapsedHeaderSections);
8268
8345
  return [SetDom2, newState.uid, dom];
8269
8346
  };
8270
8347
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-debug-view",
3
- "version": "10.20.0",
3
+ "version": "10.21.0",
4
4
  "description": "Chat Debug View Worker",
5
5
  "repository": {
6
6
  "type": "git",