@metrevals/inspect-log-viewer 0.3.152-beta.1764620368 → 0.3.152-beta.20251203154326

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/index.js CHANGED
@@ -18252,6 +18252,15 @@ function formatDuration(start2, end2) {
18252
18252
  const durationSec = durationMs / 1e3;
18253
18253
  return formatTime$1(durationSec);
18254
18254
  }
18255
+ const errorType = (message2) => {
18256
+ if (!message2) {
18257
+ return "Error";
18258
+ }
18259
+ if (message2.includes("(")) {
18260
+ return message2.split("(")[0];
18261
+ }
18262
+ return "Error";
18263
+ };
18255
18264
  const circle$1 = "_circle_qymy9_1";
18256
18265
  const green$1 = "_green_qymy9_12";
18257
18266
  const red$1 = "_red_qymy9_18";
@@ -23350,8 +23359,8 @@ function useStatefulScrollPosition(elementRef, elementKey, delay = 1e3, scrollab
23350
23359
  const setScrollPosition = useStore(
23351
23360
  (state) => state.appActions.setScrollPosition
23352
23361
  );
23353
- const handleScroll = useCallback(
23354
- debounce$2((e) => {
23362
+ const handleScroll = useMemo(
23363
+ () => debounce$2((e) => {
23355
23364
  const target2 = e.target;
23356
23365
  const position = target2.scrollTop;
23357
23366
  log$2.debug(`Storing scroll position`, elementKey, position);
@@ -23422,7 +23431,7 @@ function useStatefulScrollPosition(elementRef, elementKey, delay = 1e3, scrollab
23422
23431
  log$2.warn("Element has no way to remove event listener", element);
23423
23432
  }
23424
23433
  };
23425
- }, [elementKey, elementRef, handleScroll]);
23434
+ }, [elementKey, elementRef, getScrollPosition, handleScroll, scrollable2]);
23426
23435
  return { restoreScrollPosition };
23427
23436
  }
23428
23437
  const useVirtuosoState = (virtuosoRef, elementKey, delay = 1e3) => {
@@ -23729,7 +23738,7 @@ const RecordTree = ({
23729
23738
  {}
23730
23739
  );
23731
23740
  setCollapsedIds(id, defaultCollapsedIds);
23732
- }, [collapsedIds, items]);
23741
+ }, [collapsedIds, defaultExpandLevel, id, items, setCollapsedIds]);
23733
23742
  const keyUpHandler = useCallback(
23734
23743
  (itemId, index) => {
23735
23744
  return (event) => {
@@ -23782,7 +23791,7 @@ const RecordTree = ({
23782
23791
  }
23783
23792
  };
23784
23793
  },
23785
- [collapsedIds, items]
23794
+ [collapsedIds, id, items.length, setCollapsed]
23786
23795
  );
23787
23796
  const renderRow = (index) => {
23788
23797
  const item2 = items[index];
@@ -24221,7 +24230,15 @@ const useSampleMessageUrl = (messageId, sampleId, sampleEpoch) => {
24221
24230
  urlSampleId,
24222
24231
  urlEpoch
24223
24232
  ) : void 0;
24224
- }, [targetLogPath, messageId, sampleId, urlSampleId, sampleEpoch, urlEpoch]);
24233
+ }, [
24234
+ messageId,
24235
+ targetLogPath,
24236
+ builder,
24237
+ sampleId,
24238
+ urlSampleId,
24239
+ sampleEpoch,
24240
+ urlEpoch
24241
+ ]);
24225
24242
  return messageUrl;
24226
24243
  };
24227
24244
  const useSampleEventUrl = (eventId, sampleId, sampleEpoch) => {
@@ -24245,7 +24262,15 @@ const useSampleEventUrl = (eventId, sampleId, sampleEpoch) => {
24245
24262
  urlSampleId,
24246
24263
  urlEpoch
24247
24264
  ) : void 0;
24248
- }, [targetLogPath, eventId, sampleId, urlSampleId, sampleEpoch, urlEpoch]);
24265
+ }, [
24266
+ targetLogPath,
24267
+ builder,
24268
+ eventId,
24269
+ sampleId,
24270
+ urlSampleId,
24271
+ sampleEpoch,
24272
+ urlEpoch
24273
+ ]);
24249
24274
  return eventUrl;
24250
24275
  };
24251
24276
  const sampleMessageUrl = (builder, messageId, logPath, sampleId, sampleEpoch) => {
@@ -94726,7 +94751,7 @@ const MarkdownDivComponent = forwardRef(
94726
94751
  return () => {
94727
94752
  cancel();
94728
94753
  };
94729
- }, [markdown, omitMedia, cachedHtml, renderedHtml]);
94754
+ }, [markdown, omitMedia, cachedHtml, renderedHtml, cacheKey]);
94730
94755
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
94731
94756
  "div",
94732
94757
  {
@@ -99567,7 +99592,7 @@ const createSamplesDescriptor = (samples, evalDescriptor, selectedScores) => {
99567
99592
  selectedScores.forEach((scoreLabel, index) => {
99568
99593
  const score2 = evalDescriptor.score(current2, scoreLabel);
99569
99594
  const scoreValue = score2?.value;
99570
- const scoreText = scoreValue ? String(scoreValue) : current2.error ? String(current2.error) : "";
99595
+ const scoreText = scoreValue ? String(scoreValue) : current2.error ? errorType(current2.error) : "";
99571
99596
  const currentSize = Math.max(
99572
99597
  scoreText.length,
99573
99598
  scoreLabel.name.length
@@ -102732,7 +102757,7 @@ const useLogSelection = () => {
102732
102757
  loadedLog,
102733
102758
  sample: selectedSampleSummary
102734
102759
  };
102735
- }, [selectedLogFile, selectedSampleSummary]);
102760
+ }, [loadedLog, selectedLogFile, selectedSampleSummary]);
102736
102761
  };
102737
102762
  const useCollapseSampleEvent = (scope, id) => {
102738
102763
  const collapsed2 = useStore((state) => state.sample.collapsedEvents);
@@ -102744,7 +102769,7 @@ const useCollapseSampleEvent = (scope, id) => {
102744
102769
  collapseEvent(scope, id, value2);
102745
102770
  };
102746
102771
  return [isCollapsed, set3];
102747
- }, [collapsed2, collapseEvent, id]);
102772
+ }, [collapsed2, scope, id, collapseEvent]);
102748
102773
  };
102749
102774
  const useCollapsibleIds = (key2) => {
102750
102775
  const collapsedIds = useStore(
@@ -102755,7 +102780,7 @@ const useCollapsibleIds = (key2) => {
102755
102780
  (id, value2) => {
102756
102781
  setCollapsed(key2, id, value2);
102757
102782
  },
102758
- [setCollapsed]
102783
+ [setCollapsed, key2]
102759
102784
  );
102760
102785
  const clearCollapsedIds = useStore(
102761
102786
  (state) => state.sampleActions.clearCollapsedIds
@@ -102779,7 +102804,7 @@ const useCollapsedState = (id, defaultValue, scope) => {
102779
102804
  setCollapsed(stateId, value2);
102780
102805
  };
102781
102806
  return [collapsed2, set3];
102782
- }, [collapsed2, setCollapsed]);
102807
+ }, [collapsed2, id, scope, setCollapsed, stateId]);
102783
102808
  };
102784
102809
  const useMessageVisibility = (id, scope) => {
102785
102810
  const visible2 = useStore(
@@ -102853,7 +102878,7 @@ function useProperty(id, propertyName2, options2) {
102853
102878
  removePropertyValue(id, propertyName2);
102854
102879
  }
102855
102880
  };
102856
- }, [id, propertyName2, removePropertyValue]);
102881
+ }, [id, options2.cleanup, propertyName2, removePropertyValue]);
102857
102882
  return [propertyValue, setValue, removeValue];
102858
102883
  }
102859
102884
  const usePrevious = (value2) => {
@@ -103154,7 +103179,7 @@ const useFlowServerData = (dir) => {
103154
103179
  if (dir !== flowDir) {
103155
103180
  fetchFlow();
103156
103181
  }
103157
- }, [dir, flowDir, api2]);
103182
+ }, [dir, flowDir, api2, updateFlowData]);
103158
103183
  };
103159
103184
  const wrapper$4 = "_wrapper_1tajk_1";
103160
103185
  const container$l = "_container_1tajk_12";
@@ -104812,7 +104837,7 @@ const PopOver = ({
104812
104837
  window.clearTimeout(hoverTimerRef.current);
104813
104838
  }
104814
104839
  };
104815
- }, [isOpen, positionEl, hoverDelay]);
104840
+ }, [isOpen, positionEl, hoverDelay, setIsOpen]);
104816
104841
  useEffect(() => {
104817
104842
  if (usePortal && isOpen && shouldShowPopover) {
104818
104843
  let container2 = document.getElementById(id);
@@ -104882,7 +104907,7 @@ const PopOver = ({
104882
104907
  }, 10);
104883
104908
  return () => clearTimeout(timer);
104884
104909
  }
104885
- }, [update, isOpen, shouldShowPopover, showArrow, arrowRef.current]);
104910
+ }, [update, isOpen, shouldShowPopover, showArrow]);
104886
104911
  const getArrowDataPlacement = () => {
104887
104912
  if (!state || !state.placement) return placement;
104888
104913
  return state.placement;
@@ -105152,7 +105177,7 @@ const ViewerOptionsPopover = ({
105152
105177
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.fullWidth, styles$1s.fullWidthPadded), children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: styles$1s.logDir, children: logDir2 }) }),
105153
105178
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.spacer) }),
105154
105179
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx("text-style-label", "text-style-secondary"), children: "Version" }),
105155
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: "0.3.151-27-g7a39cfb8f" }),
105180
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: "0.3.151-21-g6652c2625" }),
105156
105181
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx("text-style-label", "text-style-secondary"), children: "Schema" }),
105157
105182
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: DB_VERSION }),
105158
105183
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.spacer) }),
@@ -105294,7 +105319,7 @@ const useBreadcrumbTruncation = (segments2, containerRef) => {
105294
105319
  return () => {
105295
105320
  resizeObserver.disconnect();
105296
105321
  };
105297
- }, [measureAndTruncate]);
105322
+ }, [containerRef, measureAndTruncate]);
105298
105323
  return truncatedData;
105299
105324
  };
105300
105325
  const Navbar = ({
@@ -105329,7 +105354,7 @@ const Navbar = ({
105329
105354
  { text: baseLogName, url: fnNavigationUrl("", logDir2) },
105330
105355
  ...dirSegments
105331
105356
  ];
105332
- }, [baseLogDir, baseLogName, currentPath, logDir2]);
105357
+ }, [baseLogDir, baseLogName, currentPath, fnNavigationUrl, logDir2]);
105333
105358
  const { visibleSegments, showEllipsis } = useBreadcrumbTruncation(
105334
105359
  segments2,
105335
105360
  pathContainerRef
@@ -108911,7 +108936,7 @@ const LogListGrid = forwardRef(
108911
108936
  }, [sorting]);
108912
108937
  useEffect(() => {
108913
108938
  setSorting([{ id: "icon", desc: false }]);
108914
- }, []);
108939
+ }, [setSorting]);
108915
108940
  useEffect(() => {
108916
108941
  const currentSort = sortingRef.current?.find(
108917
108942
  (sort2) => sort2.id === "task" || sort2.id === "model" || sort2.id === "score"
@@ -108919,7 +108944,7 @@ const LogListGrid = forwardRef(
108919
108944
  if (currentSort) {
108920
108945
  setSorting([...sortingRef.current || []]);
108921
108946
  }
108922
- }, [logPreviews]);
108947
+ }, [logPreviews, setSorting]);
108923
108948
  const columns = useMemo(() => {
108924
108949
  return getColumns$1();
108925
108950
  }, []);
@@ -108975,7 +109000,7 @@ const LogListGrid = forwardRef(
108975
109000
  useEffect(() => {
108976
109001
  const filteredRowCount = table2.getFilteredRowModel().rows.length;
108977
109002
  setFilteredCount(filteredRowCount);
108978
- }, [table2.getFilteredRowModel().rows.length, setFilteredCount]);
109003
+ }, [setFilteredCount, table2]);
108979
109004
  const filterText = useRef(globalFilter);
108980
109005
  useEffect(() => {
108981
109006
  const timeoutId = setTimeout(() => {
@@ -109549,7 +109574,7 @@ const LogsPanel = ({ maybeShowSingleLog }) => {
109549
109574
  }
109550
109575
  const collapsedLogItems = collapseLogItems(evalSet, logItems2);
109551
109576
  return appendPendingItems(evalSet, existingLogTaskIds, collapsedLogItems);
109552
- }, [currentDir, logFiles, logPreviews, evalSet]);
109577
+ }, [evalSet, logFiles, currentDir, logDir2, logPreviews]);
109553
109578
  const progress2 = useMemo(() => {
109554
109579
  let pending = 0;
109555
109580
  let total = 0;
@@ -109585,7 +109610,7 @@ const LogsPanel = ({ maybeShowSingleLog }) => {
109585
109610
  navigate(onlyItem.url);
109586
109611
  }
109587
109612
  }
109588
- }, [logItems, maybeShowSingleLog]);
109613
+ }, [logItems, maybeShowSingleLog, navigate]);
109589
109614
  function handleKeyDown(e) {
109590
109615
  if (e.key === "f" && (e.metaKey || e.ctrlKey)) {
109591
109616
  e.preventDefault();
@@ -109801,29 +109826,6 @@ const FindBand = () => {
109801
109826
  const { extendedFindTerm } = useExtendedFind();
109802
109827
  const lastFoundItem = useRef(null);
109803
109828
  const currentSearchTerm = useRef("");
109804
- useEffect(() => {
109805
- setTimeout(() => {
109806
- searchBoxRef.current?.focus();
109807
- searchBoxRef.current?.select();
109808
- }, 10);
109809
- const handleGlobalKeydown = (e) => {
109810
- if ((e.ctrlKey || e.metaKey) && e.key === "f") {
109811
- e.preventDefault();
109812
- e.stopPropagation();
109813
- searchBoxRef.current?.focus();
109814
- searchBoxRef.current?.select();
109815
- } else if ((e.ctrlKey || e.metaKey) && e.key === "g") {
109816
- e.preventDefault();
109817
- e.stopPropagation();
109818
- const back = e.shiftKey;
109819
- handleSearch(back);
109820
- }
109821
- };
109822
- document.addEventListener("keydown", handleGlobalKeydown, true);
109823
- return () => {
109824
- document.removeEventListener("keydown", handleGlobalKeydown, true);
109825
- };
109826
- }, []);
109827
109829
  const getParentExpandablePanel = useCallback(
109828
109830
  (selection) => {
109829
109831
  let node2 = selection.anchorNode;
@@ -109890,6 +109892,29 @@ const FindBand = () => {
109890
109892
  },
109891
109893
  [getParentExpandablePanel, extendedFindTerm]
109892
109894
  );
109895
+ useEffect(() => {
109896
+ setTimeout(() => {
109897
+ searchBoxRef.current?.focus();
109898
+ searchBoxRef.current?.select();
109899
+ }, 10);
109900
+ const handleGlobalKeydown = (e) => {
109901
+ if ((e.ctrlKey || e.metaKey) && e.key === "f") {
109902
+ e.preventDefault();
109903
+ e.stopPropagation();
109904
+ searchBoxRef.current?.focus();
109905
+ searchBoxRef.current?.select();
109906
+ } else if ((e.ctrlKey || e.metaKey) && e.key === "g") {
109907
+ e.preventDefault();
109908
+ e.stopPropagation();
109909
+ const back = e.shiftKey;
109910
+ handleSearch(back);
109911
+ }
109912
+ };
109913
+ document.addEventListener("keydown", handleGlobalKeydown, true);
109914
+ return () => {
109915
+ document.removeEventListener("keydown", handleGlobalKeydown, true);
109916
+ };
109917
+ }, [handleSearch]);
109893
109918
  const handleKeyDown = useCallback(
109894
109919
  (e) => {
109895
109920
  if (e.key === "Escape") {
@@ -110601,7 +110626,14 @@ const useInfoTabConfig = (evalSpec, evalPlan, evalError, evalResults, evalStatus
110601
110626
  },
110602
110627
  scrollRef
110603
110628
  };
110604
- }, [evalSpec, evalPlan, evalError, evalResults, totalSampleCount]);
110629
+ }, [
110630
+ evalSpec,
110631
+ evalPlan,
110632
+ evalError,
110633
+ evalResults,
110634
+ evalStatus,
110635
+ totalSampleCount
110636
+ ]);
110605
110637
  };
110606
110638
  const InfoTab = ({
110607
110639
  evalSpec,
@@ -111080,7 +111112,7 @@ const useModelsTab = (evalSpec, evalStats, evalStatus) => {
111080
111112
  evalStatus
111081
111113
  }
111082
111114
  };
111083
- }, [evalSpec, evalStats]);
111115
+ }, [evalSpec, evalStats, evalStatus]);
111084
111116
  };
111085
111117
  const ModelTab = ({
111086
111118
  evalSpec,
@@ -111241,12 +111273,10 @@ const useSampleNavigation = () => {
111241
111273
  }
111242
111274
  },
111243
111275
  [
111244
- sampleSummaries,
111245
111276
  resolveLogPath,
111246
111277
  selectSample,
111247
111278
  setShowingSampleDialog,
111248
111279
  navigate,
111249
- tabId,
111250
111280
  sampleTabId
111251
111281
  ]
111252
111282
  );
@@ -111272,13 +111302,12 @@ const useSampleNavigation = () => {
111272
111302
  }
111273
111303
  },
111274
111304
  [
111275
- selectedSampleHandle,
111276
- showSample,
111277
- sampleTabId,
111278
111305
  sampleSummaries,
111279
111306
  showingSampleDialog,
111280
111307
  resolveLogPath,
111281
- navigate
111308
+ sampleTabId,
111309
+ navigate,
111310
+ selectSample
111282
111311
  ]
111283
111312
  );
111284
111313
  const nextSample = useCallback(() => {
@@ -111311,7 +111340,7 @@ const useSampleNavigation = () => {
111311
111340
  }
111312
111341
  return void 0;
111313
111342
  },
111314
- [resolveLogPath, tabId, sampleTabId]
111343
+ [resolveLogPath, sampleTabId]
111315
111344
  );
111316
111345
  const clearSampleUrl = useCallback(() => {
111317
111346
  const resolvedPath = resolveLogPath();
@@ -111547,7 +111576,7 @@ const LiveVirtualList = ({
111547
111576
  if (followOutput === null) {
111548
111577
  setFollowOutput(!!live);
111549
111578
  }
111550
- }, []);
111579
+ }, [followOutput, live, setFollowOutput]);
111551
111580
  const prevLive = usePrevious(live);
111552
111581
  useEffect(() => {
111553
111582
  if (!live && prevLive && followOutput && scrollRef?.current) {
@@ -111558,7 +111587,7 @@ const LiveVirtualList = ({
111558
111587
  }
111559
111588
  }, 100);
111560
111589
  }
111561
- }, [live, followOutput]);
111590
+ }, [live, followOutput, prevLive, scrollRef, setFollowOutput]);
111562
111591
  const handleScroll = useRafThrottle(() => {
111563
111592
  if (isAutoScrollingRef.current) return;
111564
111593
  if (!live) return;
@@ -111584,16 +111613,16 @@ const LiveVirtualList = ({
111584
111613
  }
111585
111614
  });
111586
111615
  },
111587
- [scrollRef, followOutput, live]
111616
+ [followOutput, live, scrollRef, listHandle]
111588
111617
  );
111618
+ const forceUpdate = useCallback(() => forceRender({}), []);
111589
111619
  useEffect(() => {
111590
111620
  const timer = setTimeout(() => {
111591
111621
  forceUpdate();
111592
111622
  }, 0);
111593
111623
  return () => clearTimeout(timer);
111594
- }, []);
111624
+ }, [forceUpdate]);
111595
111625
  const [, forceRender] = useState({});
111596
- const forceUpdate = useCallback(() => forceRender({}), []);
111597
111626
  const defaultSearchInItem = useCallback(
111598
111627
  (item2, searchTerm) => {
111599
111628
  const searchLower = searchTerm.toLowerCase();
@@ -111626,7 +111655,14 @@ const LiveVirtualList = ({
111626
111655
  }
111627
111656
  return false;
111628
111657
  },
111629
- [data, searchInItem, defaultSearchInItem, visibleRange]
111658
+ [
111659
+ data,
111660
+ searchInItem,
111661
+ defaultSearchInItem,
111662
+ visibleRange.endIndex,
111663
+ visibleRange.startIndex,
111664
+ listHandle
111665
+ ]
111630
111666
  );
111631
111667
  useEffect(() => {
111632
111668
  const unregister = registerVirtualList(id, searchInData);
@@ -111656,7 +111692,7 @@ const LiveVirtualList = ({
111656
111692
  }, 50);
111657
111693
  return () => clearTimeout(timer);
111658
111694
  }
111659
- }, [initialTopMostItemIndex]);
111695
+ }, [initialTopMostItemIndex, listHandle, offsetTop]);
111660
111696
  useEffect(() => {
111661
111697
  if (!isCurrentlyScrolling && pendingSearchCallback.current) {
111662
111698
  setTimeout(() => {
@@ -111718,7 +111754,7 @@ const ChatViewVirtualList = memo$2(
111718
111754
  const setNativeFind = useStore((state) => state.appActions.setNativeFind);
111719
111755
  useEffect(() => {
111720
111756
  setNativeFind(!useVirtuoso);
111721
- }, [useVirtuoso]);
111757
+ }, [setNativeFind, useVirtuoso]);
111722
111758
  useEffect(() => {
111723
111759
  const handleKeyDown = (event) => {
111724
111760
  if (event.metaKey || event.ctrlKey) {
@@ -111761,7 +111797,7 @@ const ChatViewVirtualList = memo$2(
111761
111797
  scrollElement.removeEventListener("keydown", handleKeyDown);
111762
111798
  };
111763
111799
  }
111764
- }, [scrollRef, messages2]);
111800
+ }, [scrollRef, messages2, useVirtuoso]);
111765
111801
  if (!useVirtuoso) {
111766
111802
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
111767
111803
  ChatView,
@@ -111845,7 +111881,14 @@ const ChatViewVirtualListComponent = memo$2(
111845
111881
  }
111846
111882
  );
111847
111883
  },
111848
- [id, numbered, indented2, toolCallStyle, collapsedMessages]
111884
+ [
111885
+ collapsedMessages.length,
111886
+ numbered,
111887
+ id,
111888
+ indented2,
111889
+ toolCallStyle,
111890
+ allowLinking
111891
+ ]
111849
111892
  );
111850
111893
  const Item = ({
111851
111894
  children: children2,
@@ -111910,15 +111953,6 @@ const styles$U = {
111910
111953
  iconSmall: iconSmall$1,
111911
111954
  lineBase
111912
111955
  };
111913
- const errorType = (message2) => {
111914
- if (!message2) {
111915
- return "Error";
111916
- }
111917
- if (message2.includes("(")) {
111918
- return message2.split("(")[0];
111919
- }
111920
- return "Error";
111921
- };
111922
111956
  const FlatSampleError = ({ message: message2 }) => {
111923
111957
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: clsx(styles$U.flatBody), children: [
111924
111958
  /* @__PURE__ */ jsxRuntimeExports.jsx("i", { className: clsx(ApplicationIcons.error, styles$U.iconSmall) }),
@@ -112396,7 +112430,7 @@ const useTranscriptFilter = () => {
112396
112430
  }
112397
112431
  setFilteredEventTypes(Array.from(newFiltered));
112398
112432
  },
112399
- [filtered]
112433
+ [filtered, setFilteredEventTypes]
112400
112434
  );
112401
112435
  const setDebugFilter = useCallback(() => {
112402
112436
  setFilteredEventTypes([]);
@@ -113635,7 +113669,7 @@ const EventPanel = ({
113635
113669
  gridColumns2.push("minmax(0, max-content)");
113636
113670
  const toggleCollapse = useCallback(() => {
113637
113671
  setCollapsed(!collapsed2);
113638
- }, [setCollapsed, collapsed2, childIds]);
113672
+ }, [setCollapsed, collapsed2]);
113639
113673
  const [mouseOver, setMouseOver] = useState(false);
113640
113674
  const titleEl = title2 || icon2 || filteredArrChildren.length > 1 ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
113641
113675
  "div",
@@ -121974,6 +122008,25 @@ const AsciinemaPlayer = ({
121974
122008
  }
121975
122009
  );
121976
122010
  };
122011
+ function useRevokableUrls() {
122012
+ const urlsRef = useRef([]);
122013
+ const createRevokableUrl = useCallback(
122014
+ (data, type = "text/plain") => {
122015
+ const blob = new Blob([data], { type });
122016
+ const url = URL.createObjectURL(blob);
122017
+ urlsRef.current.push(url);
122018
+ return url;
122019
+ },
122020
+ []
122021
+ );
122022
+ useEffect(() => {
122023
+ return () => {
122024
+ urlsRef.current.forEach((url) => URL.revokeObjectURL(url));
122025
+ urlsRef.current = [];
122026
+ };
122027
+ }, []);
122028
+ return createRevokableUrl;
122029
+ }
121977
122030
  const carouselThumbs = "_carouselThumbs_1mvg8_1";
121978
122031
  const carouselThumb = "_carouselThumb_1mvg8_1";
121979
122032
  const carouselPlayIcon = "_carouselPlayIcon_1mvg8_16";
@@ -122008,7 +122061,7 @@ const LightboxCarousel = ({ id, slides }) => {
122008
122061
  setShowOverlay(true);
122009
122062
  setTimeout(() => setIsOpen(true), 10);
122010
122063
  },
122011
- [setIsOpen]
122064
+ [setCurrentIndex, setIsOpen, setShowOverlay]
122012
122065
  );
122013
122066
  const closeLightbox = useCallback(() => {
122014
122067
  setIsOpen(false);
@@ -122023,10 +122076,10 @@ const LightboxCarousel = ({ id, slides }) => {
122023
122076
  }, [isOpen, showOverlay, setShowOverlay]);
122024
122077
  const showNext = useCallback(() => {
122025
122078
  setCurrentIndex(currentIndex + 1);
122026
- }, [slides, setCurrentIndex]);
122079
+ }, [setCurrentIndex, currentIndex]);
122027
122080
  const showPrev = useCallback(() => {
122028
122081
  setCurrentIndex((currentIndex - 1 + slides.length) % slides.length);
122029
- }, [slides, setCurrentIndex]);
122082
+ }, [setCurrentIndex, currentIndex, slides.length]);
122030
122083
  useEffect(() => {
122031
122084
  if (!isOpen) return;
122032
122085
  const handleKeyUp = (e) => {
@@ -122042,7 +122095,7 @@ const LightboxCarousel = ({ id, slides }) => {
122042
122095
  };
122043
122096
  window.addEventListener("keyup", handleKeyUp, true);
122044
122097
  return () => window.removeEventListener("keyup", handleKeyUp);
122045
- }, [isOpen, showNext, showPrev]);
122098
+ }, [closeLightbox, isOpen, showNext, showPrev]);
122046
122099
  const handleThumbClick = useCallback(
122047
122100
  (e) => {
122048
122101
  const index = Number(e.currentTarget.dataset.index);
@@ -122124,19 +122177,8 @@ const HumanBaselineView = ({
122124
122177
  running,
122125
122178
  sessionLogs
122126
122179
  }) => {
122180
+ const createRevokableUrl = useRevokableUrls();
122127
122181
  const player_fns = [];
122128
- const revokableUrls = [];
122129
- const revokableUrl = (data) => {
122130
- const blob = new Blob([data], { type: "text/plain" });
122131
- const url = URL.createObjectURL(blob);
122132
- revokableUrls.push(url);
122133
- return url;
122134
- };
122135
- useEffect(() => {
122136
- return () => {
122137
- revokableUrls.forEach((url) => URL.revokeObjectURL(url));
122138
- };
122139
- }, []);
122140
122182
  let count2 = 1;
122141
122183
  for (const sessionLog of sessionLogs) {
122142
122184
  const rows = extractSize(sessionLog.output, "LINES", 24);
@@ -122149,9 +122191,9 @@ const HumanBaselineView = ({
122149
122191
  AsciinemaPlayer,
122150
122192
  {
122151
122193
  id: `player-${currentCount}`,
122152
- inputUrl: revokableUrl(sessionLog.input),
122153
- outputUrl: revokableUrl(sessionLog.output),
122154
- timingUrl: revokableUrl(sessionLog.timing),
122194
+ inputUrl: createRevokableUrl(sessionLog.input),
122195
+ outputUrl: createRevokableUrl(sessionLog.output),
122196
+ timingUrl: createRevokableUrl(sessionLog.timing),
122155
122197
  rows,
122156
122198
  cols,
122157
122199
  className: "asciinema-player",
@@ -122486,14 +122528,14 @@ const StateEventView = ({
122486
122528
  const changePreview = useMemo(() => {
122487
122529
  const isStore = eventNode.event.event === "store";
122488
122530
  return generatePreview(event.changes, structuredClone(after), isStore);
122489
- }, [event.changes, after]);
122531
+ }, [eventNode.event.event, event.changes, after]);
122490
122532
  const title2 = event.event === "state" ? "State Updated" : "Store Updated";
122491
122533
  const collapseEvent = useStore((state) => state.sampleActions.collapseEvent);
122492
122534
  useEffect(() => {
122493
122535
  if (changePreview === void 0) {
122494
122536
  collapseEvent(kTranscriptCollapseScope, eventNode.id, true);
122495
122537
  }
122496
- }, [changePreview, collapseEvent]);
122538
+ }, [changePreview, collapseEvent, eventNode.id]);
122497
122539
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
122498
122540
  EventPanel,
122499
122541
  {
@@ -122946,7 +122988,7 @@ const ToolEventView = ({
122946
122988
  approvalNode: approvalNode2,
122947
122989
  lastModelNode: lastModelNode2
122948
122990
  };
122949
- }, [event.events]);
122991
+ }, [children2]);
122950
122992
  const title2 = `Tool: ${event.view?.title || event.function}`;
122951
122993
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
122952
122994
  EventPanel,
@@ -123237,7 +123279,7 @@ const TranscriptVirtualListComponent = ({
123237
123279
  const setNativeFind = useStore((state) => state.appActions.setNativeFind);
123238
123280
  useEffect(() => {
123239
123281
  setNativeFind(!useVirtualization);
123240
- }, [useVirtualization]);
123282
+ }, [setNativeFind, useVirtualization]);
123241
123283
  const initialEventIndex = useMemo(() => {
123242
123284
  if (initialEventId === null || initialEventId === void 0) {
123243
123285
  return void 0;
@@ -123893,7 +123935,13 @@ const TranscriptPanel = memo$2((props) => {
123893
123935
  if (!collapsedEvents && Object.keys(defaultCollapsedIds).length > 0) {
123894
123936
  setCollapsedEvents(kTranscriptCollapseScope, defaultCollapsedIds);
123895
123937
  }
123896
- }, [defaultCollapsedIds, collapsedEvents, setCollapsedEvents]);
123938
+ }, [
123939
+ defaultCollapsedIds,
123940
+ collapsedEvents,
123941
+ setCollapsedEvents,
123942
+ events.length,
123943
+ collapsedMode
123944
+ ]);
123897
123945
  const allNodesList = useMemo(() => {
123898
123946
  return flatTree(eventNodes, null);
123899
123947
  }, [eventNodes]);
@@ -123909,7 +123957,7 @@ const TranscriptPanel = memo$2((props) => {
123909
123957
  }
123910
123958
  });
123911
123959
  setCollapsedEvents(kTranscriptCollapseScope, collapseIds);
123912
- }, [collapsedMode, events, allNodesList]);
123960
+ }, [collapsedMode, events, allNodesList, setCollapsedEvents]);
123913
123961
  const { logPath } = useLogRouteParams();
123914
123962
  const [collapsed2, setCollapsed] = useCollapsedState(
123915
123963
  `transcript-panel-${logPath || "na"}`,
@@ -124020,7 +124068,7 @@ const SampleDisplay = ({
124020
124068
  const sampleData = useSampleData();
124021
124069
  const sample2 = useMemo(() => {
124022
124070
  return sampleData.getSelectedSample();
124023
- }, [sampleData.selectedSampleIdentifier, sampleData.getSelectedSample]);
124071
+ }, [sampleData]);
124024
124072
  const runningSampleData = sampleData.running;
124025
124073
  const evalSpec = useStore((state) => state.log.selectedLogDetails?.eval);
124026
124074
  const { setDocumentTitle } = useDocumentTitle();
@@ -124039,7 +124087,7 @@ const SampleDisplay = ({
124039
124087
  return height;
124040
124088
  }
124041
124089
  return -1;
124042
- }, [tabsRef.current]);
124090
+ }, []);
124043
124091
  const selectedSampleSummary = useSelectedSampleSummary();
124044
124092
  const sampleEvents = sample2?.events || runningSampleData;
124045
124093
  const sampleMessages = useMemo(() => {
@@ -124062,7 +124110,7 @@ const SampleDisplay = ({
124062
124110
  scrollRef.current?.focus();
124063
124111
  }
124064
124112
  }, 10);
124065
- }, []);
124113
+ }, [focusOnLoad, scrollRef]);
124066
124114
  const sampleUrlBuilder = useSampleUrlBuilder();
124067
124115
  const onSelectedTab = useCallback(
124068
124116
  (e) => {
@@ -124074,7 +124122,15 @@ const SampleDisplay = ({
124074
124122
  navigate(url);
124075
124123
  }
124076
124124
  },
124077
- [sampleTabId, urlLogPath, urlSampleId, urlEpoch, navigate, setSelectedTab]
124125
+ [
124126
+ setSelectedTab,
124127
+ sampleTabId,
124128
+ urlLogPath,
124129
+ sampleUrlBuilder,
124130
+ urlSampleId,
124131
+ urlEpoch,
124132
+ navigate
124133
+ ]
124078
124134
  );
124079
124135
  const sampleMetadatas = metadataViewsForSample(
124080
124136
  `${baseId}-${id}`,
@@ -124093,7 +124149,7 @@ const SampleDisplay = ({
124093
124149
  const optionsRef = useRef(null);
124094
124150
  const handlePrintClick = useCallback(() => {
124095
124151
  printSample(id, targetId);
124096
- }, [printSample, id, targetId]);
124152
+ }, [id, targetId]);
124097
124153
  const toggleFilter = useCallback(() => {
124098
124154
  setShowing(!isShowing);
124099
124155
  }, [setShowing, isShowing]);
@@ -124524,7 +124580,12 @@ const InlineSampleDisplay = ({
124524
124580
  if (sampleData.running && logSelection.logFile && logSelection.sample) {
124525
124581
  pollSample(logSelection.logFile, logSelection.sample);
124526
124582
  }
124527
- }, []);
124583
+ }, [
124584
+ logSelection.logFile,
124585
+ logSelection.sample,
124586
+ pollSample,
124587
+ sampleData.running
124588
+ ]);
124528
124589
  const prevCompleted = usePrevious(
124529
124590
  logSelection.sample?.completed !== void 0 ? logSelection.sample.completed : true
124530
124591
  );
@@ -124546,7 +124607,12 @@ const InlineSampleDisplay = ({
124546
124607
  logSelection.sample?.completed,
124547
124608
  sampleData.selectedSampleIdentifier?.id,
124548
124609
  sampleData.selectedSampleIdentifier?.epoch,
124549
- sampleData.sampleNeedsReload
124610
+ sampleData.sampleNeedsReload,
124611
+ logSelection.sample,
124612
+ prevLogFile,
124613
+ prevCompleted,
124614
+ prevSampleNeedsReload,
124615
+ loadSample
124550
124616
  ]);
124551
124617
  const scrollRef = useRef(null);
124552
124618
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: clsx(className2, styles$t.container), children: [
@@ -124713,7 +124779,12 @@ const SampleDialog = ({
124713
124779
  if (sampleData.running && logSelection.logFile && logSelection.sample) {
124714
124780
  pollSample(logSelection.logFile, logSelection.sample);
124715
124781
  }
124716
- }, []);
124782
+ }, [
124783
+ logSelection.logFile,
124784
+ logSelection.sample,
124785
+ pollSample,
124786
+ sampleData.running
124787
+ ]);
124717
124788
  const prevCompleted = usePrevious(
124718
124789
  logSelection.sample?.completed !== void 0 ? logSelection.sample.completed : true
124719
124790
  );
@@ -124735,7 +124806,12 @@ const SampleDialog = ({
124735
124806
  logSelection.sample?.completed,
124736
124807
  sampleData.selectedSampleIdentifier?.id,
124737
124808
  sampleData.selectedSampleIdentifier?.epoch,
124738
- sampleData.sampleNeedsReload
124809
+ sampleData.sampleNeedsReload,
124810
+ logSelection.sample,
124811
+ prevLogFile,
124812
+ prevCompleted,
124813
+ prevSampleNeedsReload,
124814
+ loadSample
124739
124815
  ]);
124740
124816
  const sampleNavigation = useSampleNavigation();
124741
124817
  const tools2 = useMemo(() => {
@@ -124775,11 +124851,7 @@ const SampleDialog = ({
124775
124851
  break;
124776
124852
  }
124777
124853
  },
124778
- [
124779
- sampleNavigation.nextSample,
124780
- sampleNavigation.previousSample,
124781
- sampleNavigation.clearSampleUrl
124782
- ]
124854
+ [sampleNavigation]
124783
124855
  );
124784
124856
  const onHide = useCallback(() => {
124785
124857
  sampleNavigation.clearSampleUrl();
@@ -149859,8 +149931,8 @@ const SampleFilter = () => {
149859
149931
  () => linter((view) => getLints(view, filterError)),
149860
149932
  [filterError]
149861
149933
  );
149862
- const debounceSetFilter = useCallback(
149863
- debounce$2((value2) => {
149934
+ const debounceSetFilter = useMemo(
149935
+ () => debounce$2((value2) => {
149864
149936
  setFilter(value2);
149865
149937
  }, 200),
149866
149938
  [setFilter]
@@ -149872,7 +149944,7 @@ const SampleFilter = () => {
149872
149944
  debounceSetFilter(newValue);
149873
149945
  }
149874
149946
  }),
149875
- [setFilter]
149947
+ [debounceSetFilter, evalDescriptor]
149876
149948
  );
149877
149949
  useEffect(() => {
149878
149950
  editorViewRef.current?.destroy();
@@ -149895,7 +149967,7 @@ const SampleFilter = () => {
149895
149967
  })
149896
149968
  });
149897
149969
  return () => editorViewRef.current?.destroy();
149898
- }, []);
149970
+ }, [filter, handleFocus, makeAutocompletion, makeLinter, makeUpdateListener]);
149899
149971
  useEffect(() => {
149900
149972
  if (!editorViewRef.current) return;
149901
149973
  const currentValue = editorViewRef.current.state.doc.toString();
@@ -149912,17 +149984,17 @@ const SampleFilter = () => {
149912
149984
  editorViewRef.current?.dispatch({
149913
149985
  effects: updateListenerCompartment.current.reconfigure(makeUpdateListener())
149914
149986
  });
149915
- }, [evalDescriptor]);
149987
+ }, [evalDescriptor, makeUpdateListener]);
149916
149988
  useEffect(() => {
149917
149989
  editorViewRef.current?.dispatch({
149918
149990
  effects: autocompletionCompartment.current.reconfigure(makeAutocompletion())
149919
149991
  });
149920
- }, [filterItems, samples]);
149992
+ }, [filterItems, makeAutocompletion, samples]);
149921
149993
  useEffect(() => {
149922
149994
  editorViewRef.current?.dispatch({
149923
149995
  effects: linterCompartment.current.reconfigure(makeLinter())
149924
149996
  });
149925
- }, [filterError]);
149997
+ }, [filterError, makeLinter]);
149926
149998
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex" }, children: [
149927
149999
  /* @__PURE__ */ jsxRuntimeExports.jsx(
149928
150000
  "span",
@@ -150491,7 +150563,7 @@ const SampleList = memo$2((props) => {
150491
150563
  );
150492
150564
  useEffect(() => {
150493
150565
  listHandle.current?.scrollTo({ top: 0, behavior: "instant" });
150494
- }, [selectedLogFile]);
150566
+ }, [listHandle, selectedLogFile]);
150495
150567
  const sampleNavigation = useSampleNavigation();
150496
150568
  const selectedSampleHandle = useStore(
150497
150569
  (state) => state.log.selectedSampleHandle
@@ -150520,7 +150592,7 @@ const SampleList = memo$2((props) => {
150520
150592
  }, 100);
150521
150593
  }
150522
150594
  prevRunningRef.current = running;
150523
- }, [running, followOutput, listHandle]);
150595
+ }, [running, followOutput, listHandle, setFollowOutput]);
150524
150596
  const loaded = useRef(false);
150525
150597
  const handleAtBottomStateChange = useCallback(
150526
150598
  (atBottom) => {
@@ -150529,7 +150601,7 @@ const SampleList = memo$2((props) => {
150529
150601
  }
150530
150602
  loaded.current = true;
150531
150603
  },
150532
- [running, setFollowOutput, followOutput]
150604
+ [running, setFollowOutput]
150533
150605
  );
150534
150606
  const onkeydown = useCallback(
150535
150607
  (e) => {
@@ -150578,11 +150650,11 @@ const SampleList = memo$2((props) => {
150578
150650
  }
150579
150651
  },
150580
150652
  [
150581
- selectedSampleHandle,
150582
- sampleNavigation.nextSample,
150583
- sampleNavigation.previousSample,
150584
- sampleNavigation.showSample,
150585
- listHandle
150653
+ sampleNavigation,
150654
+ listHandle,
150655
+ items,
150656
+ selectedSampleHandle?.id,
150657
+ selectedSampleHandle?.epoch
150586
150658
  ]
150587
150659
  );
150588
150660
  const selectedScores = useSelectedScores();
@@ -150626,7 +150698,12 @@ const SampleList = memo$2((props) => {
150626
150698
  return null;
150627
150699
  }
150628
150700
  },
150629
- [gridColumnsTemplate]
150701
+ [
150702
+ gridColumnsTemplate,
150703
+ sampleNavigation,
150704
+ selectedSampleHandle?.epoch,
150705
+ selectedSampleHandle?.id
150706
+ ]
150630
150707
  );
150631
150708
  const { input: input2, limit, answer: answer2, target: target2, retries } = gridColumns(samplesDescriptor);
150632
150709
  const sampleCount = items?.reduce((prev, current2) => {
@@ -150933,7 +151010,6 @@ const getCounter = (itemCount, groupCount, order2) => {
150933
151010
  const useSamplesTabConfig = (evalStatus, refreshLog) => {
150934
151011
  const totalSampleCount = useTotalSampleCount();
150935
151012
  const samplesDescriptor = useSampleDescriptor();
150936
- const sampleSummaries = useFilteredSamples();
150937
151013
  const streamSamples = useStore((state) => state.capabilities.streamSamples);
150938
151014
  return useMemo(() => {
150939
151015
  return {
@@ -150960,8 +151036,8 @@ const useSamplesTabConfig = (evalStatus, refreshLog) => {
150960
151036
  }, [
150961
151037
  evalStatus,
150962
151038
  refreshLog,
150963
- sampleSummaries,
150964
151039
  samplesDescriptor,
151040
+ streamSamples,
150965
151041
  totalSampleCount
150966
151042
  ]);
150967
151043
  };
@@ -150975,7 +151051,11 @@ const SamplesTab = ({ running }) => {
150975
151051
  const limit = selectedLogDetails?.eval.config.limit;
150976
151052
  const limitCount = limit === null || limit === void 0 ? void 0 : typeof limit === "number" ? limit : limit[1] - limit[0];
150977
151053
  return (limitCount || selectedLogDetails?.eval.dataset.samples || 0) * (selectedLogDetails?.eval.config.epochs || 0);
150978
- }, [selectedLogDetails?.eval.config.limit]);
151054
+ }, [
151055
+ selectedLogDetails?.eval.config.epochs,
151056
+ selectedLogDetails?.eval.config.limit,
151057
+ selectedLogDetails?.eval.dataset.samples
151058
+ ]);
150979
151059
  const totalSampleCount = useTotalSampleCount();
150980
151060
  const samplesDescriptor = useSampleDescriptor();
150981
151061
  const groupBy = useGroupBy();
@@ -152236,7 +152316,7 @@ const LogView = () => {
152236
152316
  navigation.selectTab(id);
152237
152317
  }
152238
152318
  },
152239
- [setSelectedTab, navigation.selectTab]
152319
+ [setSelectedTab, navigation]
152240
152320
  );
152241
152321
  if (evalSpec === void 0) {
152242
152322
  return /* @__PURE__ */ jsxRuntimeExports.jsx(EmptyPanel, {});
@@ -152394,7 +152474,7 @@ const LogViewContainer = () => {
152394
152474
  return () => {
152395
152475
  unloadLog();
152396
152476
  };
152397
- }, []);
152477
+ }, [unloadLog]);
152398
152478
  useEffect(() => {
152399
152479
  if (logPath && sampleUuid && sampleSummaries) {
152400
152480
  const sample2 = sampleSummaries.find((s) => s.uuid === sampleUuid);
@@ -152410,7 +152490,14 @@ const LogViewContainer = () => {
152410
152490
  return;
152411
152491
  }
152412
152492
  }
152413
- }, [sampleSummaries, logPath, sampleUuid, searchParams]);
152493
+ }, [
152494
+ sampleSummaries,
152495
+ logPath,
152496
+ sampleUuid,
152497
+ searchParams,
152498
+ sampleTabId,
152499
+ navigate
152500
+ ]);
152414
152501
  useEffect(() => {
152415
152502
  if (initialState2 && !evalSpec) {
152416
152503
  const url = baseUrl(
@@ -152421,7 +152508,7 @@ const LogViewContainer = () => {
152421
152508
  clearInitialState();
152422
152509
  navigate(url);
152423
152510
  }
152424
- }, [initialState2, evalSpec]);
152511
+ }, [initialState2, evalSpec, clearInitialState, navigate]);
152425
152512
  const prevLogPath = usePrevious(logPath);
152426
152513
  const syncLogs = useStore((state) => state.logsActions.syncLogs);
152427
152514
  const initLogDir = useStore((state) => state.logsActions.initLogDir);
@@ -152443,7 +152530,17 @@ const LogViewContainer = () => {
152443
152530
  }
152444
152531
  };
152445
152532
  loadLogFromPath();
152446
- }, [logPath, tabId, setSelectedLogFile, setWorkspaceTab]);
152533
+ }, [
152534
+ logPath,
152535
+ tabId,
152536
+ setSelectedLogFile,
152537
+ setWorkspaceTab,
152538
+ initLogDir,
152539
+ syncLogs,
152540
+ prevLogPath,
152541
+ clearSelectedSample,
152542
+ clearSelectedLogSummary
152543
+ ]);
152447
152544
  useEffect(() => {
152448
152545
  if (sampleId && filteredSamples) {
152449
152546
  const targetEpoch = epoch ? parseInt(epoch, 10) : 1;
@@ -209603,7 +209700,7 @@ const SamplesGrid = ({
209603
209700
  } else {
209604
209701
  return gridState;
209605
209702
  }
209606
- }, [gridState, prevSamplesPath, clearDisplayedSamples]);
209703
+ }, [prevSamplesPath, samplesPath, clearDisplayedSamples, gridState]);
209607
209704
  const filteredLogDetails = useMemo(() => {
209608
209705
  if (!samplesPath) {
209609
209706
  return logDetails;
@@ -209618,7 +209715,7 @@ const SamplesGrid = ({
209618
209715
  },
209619
209716
  {}
209620
209717
  );
209621
- }, [logDetails, samplesPath]);
209718
+ }, [logDetails, logDir2, samplesPath]);
209622
209719
  useEffect(() => {
209623
209720
  gridContainerRef.current?.focus();
209624
209721
  }, []);
@@ -209651,11 +209748,11 @@ const SamplesGrid = ({
209651
209748
  return rows;
209652
209749
  }, [filteredLogDetails]);
209653
209750
  const columns = useSampleColumns(data, filteredLogDetails);
209654
- const resizeGridColumns = useCallback(
209655
- debounce$2(() => {
209751
+ const resizeGridColumns = useMemo(
209752
+ () => debounce$2(() => {
209656
209753
  gridRef.current?.api?.sizeColumnsToFit();
209657
209754
  }, 10),
209658
- []
209755
+ [gridRef]
209659
209756
  );
209660
209757
  const handleRowClick = useCallback(
209661
209758
  (e) => {
@@ -209767,7 +209864,7 @@ const SamplesGrid = ({
209767
209864
  }
209768
209865
  }
209769
209866
  },
209770
- [navigateToSampleDetail]
209867
+ [gridRef, navigateToSampleDetail]
209771
209868
  );
209772
209869
  useEffect(() => {
209773
209870
  const gridElement = gridContainerRef.current;
@@ -209920,7 +210017,7 @@ const SamplesPanel = () => {
209920
210017
  }
209921
210018
  }
209922
210019
  return files;
209923
- }, [logDir2, logFiles]);
210020
+ }, [currentDir, logFiles]);
209924
210021
  const totalTaskCount = useMemo(() => {
209925
210022
  const currentDirTaskIds = new Set(currentDirLogFiles.map((f) => f.task_id));
209926
210023
  let count2 = currentDirLogFiles.length;
@@ -210139,14 +210236,14 @@ const SampleDetailView = () => {
210139
210236
  }
210140
210237
  };
210141
210238
  void exec2();
210142
- }, [selectedLogFile, selectedSampleSummary]);
210239
+ }, [loadSample, selectedLogFile, selectedSampleSummary]);
210143
210240
  useEffect(() => {
210144
210241
  return () => {
210145
210242
  clearSelectedLogDetails();
210146
210243
  clearLog();
210147
210244
  clearSampleTab();
210148
210245
  };
210149
- }, [clearLog, clearSelectedLogDetails]);
210246
+ }, [clearLog, clearSampleTab, clearSelectedLogDetails]);
210150
210247
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(ExtendedFindProvider, { children: [
210151
210248
  showFind ? /* @__PURE__ */ jsxRuntimeExports.jsx(FindBand, {}) : "",
210152
210249
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: styles.detail, children: [
@@ -210340,7 +210437,7 @@ const App = ({ api: api2 }) => {
210340
210437
  }
210341
210438
  }
210342
210439
  },
210343
- [logDir2, setSelectedLogFile, syncLogs, api2]
210440
+ [setInitialState, setLogDir, logDir2, setSelectedLogFile, api2, syncLogs]
210344
210441
  );
210345
210442
  useEffect(() => {
210346
210443
  window.addEventListener("message", onMessage);
@@ -210374,7 +210471,15 @@ const App = ({ api: api2 }) => {
210374
210471
  new ClipboardJS(".clipboard-button,.copy-button");
210375
210472
  };
210376
210473
  loadLogsAndState();
210377
- }, [setLogDir, setLogFiles, setSelectedLogFile, syncLogs, onMessage]);
210474
+ }, [
210475
+ setLogDir,
210476
+ setLogFiles,
210477
+ setSelectedLogFile,
210478
+ syncLogs,
210479
+ onMessage,
210480
+ rehydrated,
210481
+ setSingleFileMode
210482
+ ]);
210378
210483
  return /* @__PURE__ */ jsxRuntimeExports.jsx(RouterProvider2, { router: AppRouter });
210379
210484
  };
210380
210485
  export {