@metrevals/inspect-log-viewer 0.3.152-beta.20251202095613 → 0.3.152-beta.20251203160129

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
@@ -11305,7 +11305,7 @@ const createImpl = (createState) => {
11305
11305
  return useBoundStore;
11306
11306
  };
11307
11307
  const create$2 = ((createState) => createImpl);
11308
- const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "library", "PROD": true, "SSR": false, "VITE_API_BASE_URL": "https://api.inspect-ai.internal.metr.org", "VITE_OIDC_AUDIENCE": "https://model-poking-3", "VITE_OIDC_CLIENT_ID": "0oa1wxy3qxaHOoGxG1d8", "VITE_OIDC_ISSUER": "https://metr.okta.com/oauth2/aus1ww3m0x41jKp3L1d8", "VITE_OIDC_TOKEN_PATH": "v1/token" };
11308
+ const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "library", "PROD": true, "SSR": false };
11309
11309
  const trackedConnections = /* @__PURE__ */ new Map();
11310
11310
  const getTrackedConnectionState = (name2) => {
11311
11311
  const api2 = trackedConnections.get(name2);
@@ -23359,8 +23359,8 @@ function useStatefulScrollPosition(elementRef, elementKey, delay = 1e3, scrollab
23359
23359
  const setScrollPosition = useStore(
23360
23360
  (state) => state.appActions.setScrollPosition
23361
23361
  );
23362
- const handleScroll = useCallback(
23363
- debounce$2((e) => {
23362
+ const handleScroll = useMemo(
23363
+ () => debounce$2((e) => {
23364
23364
  const target2 = e.target;
23365
23365
  const position = target2.scrollTop;
23366
23366
  log$2.debug(`Storing scroll position`, elementKey, position);
@@ -23431,7 +23431,7 @@ function useStatefulScrollPosition(elementRef, elementKey, delay = 1e3, scrollab
23431
23431
  log$2.warn("Element has no way to remove event listener", element);
23432
23432
  }
23433
23433
  };
23434
- }, [elementKey, elementRef, handleScroll]);
23434
+ }, [elementKey, elementRef, getScrollPosition, handleScroll, scrollable2]);
23435
23435
  return { restoreScrollPosition };
23436
23436
  }
23437
23437
  const useVirtuosoState = (virtuosoRef, elementKey, delay = 1e3) => {
@@ -23738,7 +23738,7 @@ const RecordTree = ({
23738
23738
  {}
23739
23739
  );
23740
23740
  setCollapsedIds(id, defaultCollapsedIds);
23741
- }, [collapsedIds, items]);
23741
+ }, [collapsedIds, defaultExpandLevel, id, items, setCollapsedIds]);
23742
23742
  const keyUpHandler = useCallback(
23743
23743
  (itemId, index) => {
23744
23744
  return (event) => {
@@ -23791,7 +23791,7 @@ const RecordTree = ({
23791
23791
  }
23792
23792
  };
23793
23793
  },
23794
- [collapsedIds, items]
23794
+ [collapsedIds, id, items.length, setCollapsed]
23795
23795
  );
23796
23796
  const renderRow = (index) => {
23797
23797
  const item2 = items[index];
@@ -24230,7 +24230,15 @@ const useSampleMessageUrl = (messageId, sampleId, sampleEpoch) => {
24230
24230
  urlSampleId,
24231
24231
  urlEpoch
24232
24232
  ) : void 0;
24233
- }, [targetLogPath, messageId, sampleId, urlSampleId, sampleEpoch, urlEpoch]);
24233
+ }, [
24234
+ messageId,
24235
+ targetLogPath,
24236
+ builder,
24237
+ sampleId,
24238
+ urlSampleId,
24239
+ sampleEpoch,
24240
+ urlEpoch
24241
+ ]);
24234
24242
  return messageUrl;
24235
24243
  };
24236
24244
  const useSampleEventUrl = (eventId, sampleId, sampleEpoch) => {
@@ -24254,7 +24262,15 @@ const useSampleEventUrl = (eventId, sampleId, sampleEpoch) => {
24254
24262
  urlSampleId,
24255
24263
  urlEpoch
24256
24264
  ) : void 0;
24257
- }, [targetLogPath, eventId, sampleId, urlSampleId, sampleEpoch, urlEpoch]);
24265
+ }, [
24266
+ targetLogPath,
24267
+ builder,
24268
+ eventId,
24269
+ sampleId,
24270
+ urlSampleId,
24271
+ sampleEpoch,
24272
+ urlEpoch
24273
+ ]);
24258
24274
  return eventUrl;
24259
24275
  };
24260
24276
  const sampleMessageUrl = (builder, messageId, logPath, sampleId, sampleEpoch) => {
@@ -94735,7 +94751,7 @@ const MarkdownDivComponent = forwardRef(
94735
94751
  return () => {
94736
94752
  cancel();
94737
94753
  };
94738
- }, [markdown, omitMedia, cachedHtml, renderedHtml]);
94754
+ }, [markdown, omitMedia, cachedHtml, renderedHtml, cacheKey]);
94739
94755
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
94740
94756
  "div",
94741
94757
  {
@@ -102741,7 +102757,7 @@ const useLogSelection = () => {
102741
102757
  loadedLog,
102742
102758
  sample: selectedSampleSummary
102743
102759
  };
102744
- }, [selectedLogFile, selectedSampleSummary]);
102760
+ }, [loadedLog, selectedLogFile, selectedSampleSummary]);
102745
102761
  };
102746
102762
  const useCollapseSampleEvent = (scope, id) => {
102747
102763
  const collapsed2 = useStore((state) => state.sample.collapsedEvents);
@@ -102753,7 +102769,7 @@ const useCollapseSampleEvent = (scope, id) => {
102753
102769
  collapseEvent(scope, id, value2);
102754
102770
  };
102755
102771
  return [isCollapsed, set3];
102756
- }, [collapsed2, collapseEvent, id]);
102772
+ }, [collapsed2, scope, id, collapseEvent]);
102757
102773
  };
102758
102774
  const useCollapsibleIds = (key2) => {
102759
102775
  const collapsedIds = useStore(
@@ -102764,7 +102780,7 @@ const useCollapsibleIds = (key2) => {
102764
102780
  (id, value2) => {
102765
102781
  setCollapsed(key2, id, value2);
102766
102782
  },
102767
- [setCollapsed]
102783
+ [setCollapsed, key2]
102768
102784
  );
102769
102785
  const clearCollapsedIds = useStore(
102770
102786
  (state) => state.sampleActions.clearCollapsedIds
@@ -102788,7 +102804,7 @@ const useCollapsedState = (id, defaultValue, scope) => {
102788
102804
  setCollapsed(stateId, value2);
102789
102805
  };
102790
102806
  return [collapsed2, set3];
102791
- }, [collapsed2, setCollapsed]);
102807
+ }, [collapsed2, id, scope, setCollapsed, stateId]);
102792
102808
  };
102793
102809
  const useMessageVisibility = (id, scope) => {
102794
102810
  const visible2 = useStore(
@@ -102862,7 +102878,7 @@ function useProperty(id, propertyName2, options2) {
102862
102878
  removePropertyValue(id, propertyName2);
102863
102879
  }
102864
102880
  };
102865
- }, [id, propertyName2, removePropertyValue]);
102881
+ }, [id, options2.cleanup, propertyName2, removePropertyValue]);
102866
102882
  return [propertyValue, setValue, removeValue];
102867
102883
  }
102868
102884
  const usePrevious = (value2) => {
@@ -103163,7 +103179,7 @@ const useFlowServerData = (dir) => {
103163
103179
  if (dir !== flowDir) {
103164
103180
  fetchFlow();
103165
103181
  }
103166
- }, [dir, flowDir, api2]);
103182
+ }, [dir, flowDir, api2, updateFlowData]);
103167
103183
  };
103168
103184
  const wrapper$4 = "_wrapper_1tajk_1";
103169
103185
  const container$l = "_container_1tajk_12";
@@ -104821,7 +104837,7 @@ const PopOver = ({
104821
104837
  window.clearTimeout(hoverTimerRef.current);
104822
104838
  }
104823
104839
  };
104824
- }, [isOpen, positionEl, hoverDelay]);
104840
+ }, [isOpen, positionEl, hoverDelay, setIsOpen]);
104825
104841
  useEffect(() => {
104826
104842
  if (usePortal && isOpen && shouldShowPopover) {
104827
104843
  let container2 = document.getElementById(id);
@@ -104891,7 +104907,7 @@ const PopOver = ({
104891
104907
  }, 10);
104892
104908
  return () => clearTimeout(timer);
104893
104909
  }
104894
- }, [update, isOpen, shouldShowPopover, showArrow, arrowRef.current]);
104910
+ }, [update, isOpen, shouldShowPopover, showArrow]);
104895
104911
  const getArrowDataPlacement = () => {
104896
104912
  if (!state || !state.placement) return placement;
104897
104913
  return state.placement;
@@ -105161,7 +105177,7 @@ const ViewerOptionsPopover = ({
105161
105177
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.fullWidth, styles$1s.fullWidthPadded), children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: styles$1s.logDir, children: logDir2 }) }),
105162
105178
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.spacer) }),
105163
105179
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx("text-style-label", "text-style-secondary"), children: "Version" }),
105164
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: "0.3.151-9-g7a3aeac3c" }),
105180
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: "0.3.151-21-g6652c2625" }),
105165
105181
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx("text-style-label", "text-style-secondary"), children: "Schema" }),
105166
105182
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(), children: DB_VERSION }),
105167
105183
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: clsx(styles$1s.spacer) }),
@@ -105303,7 +105319,7 @@ const useBreadcrumbTruncation = (segments2, containerRef) => {
105303
105319
  return () => {
105304
105320
  resizeObserver.disconnect();
105305
105321
  };
105306
- }, [measureAndTruncate]);
105322
+ }, [containerRef, measureAndTruncate]);
105307
105323
  return truncatedData;
105308
105324
  };
105309
105325
  const Navbar = ({
@@ -105338,7 +105354,7 @@ const Navbar = ({
105338
105354
  { text: baseLogName, url: fnNavigationUrl("", logDir2) },
105339
105355
  ...dirSegments
105340
105356
  ];
105341
- }, [baseLogDir, baseLogName, currentPath, logDir2]);
105357
+ }, [baseLogDir, baseLogName, currentPath, fnNavigationUrl, logDir2]);
105342
105358
  const { visibleSegments, showEllipsis } = useBreadcrumbTruncation(
105343
105359
  segments2,
105344
105360
  pathContainerRef
@@ -108920,7 +108936,7 @@ const LogListGrid = forwardRef(
108920
108936
  }, [sorting]);
108921
108937
  useEffect(() => {
108922
108938
  setSorting([{ id: "icon", desc: false }]);
108923
- }, []);
108939
+ }, [setSorting]);
108924
108940
  useEffect(() => {
108925
108941
  const currentSort = sortingRef.current?.find(
108926
108942
  (sort2) => sort2.id === "task" || sort2.id === "model" || sort2.id === "score"
@@ -108928,7 +108944,7 @@ const LogListGrid = forwardRef(
108928
108944
  if (currentSort) {
108929
108945
  setSorting([...sortingRef.current || []]);
108930
108946
  }
108931
- }, [logPreviews]);
108947
+ }, [logPreviews, setSorting]);
108932
108948
  const columns = useMemo(() => {
108933
108949
  return getColumns$1();
108934
108950
  }, []);
@@ -108984,7 +109000,7 @@ const LogListGrid = forwardRef(
108984
109000
  useEffect(() => {
108985
109001
  const filteredRowCount = table2.getFilteredRowModel().rows.length;
108986
109002
  setFilteredCount(filteredRowCount);
108987
- }, [table2.getFilteredRowModel().rows.length, setFilteredCount]);
109003
+ }, [setFilteredCount, table2]);
108988
109004
  const filterText = useRef(globalFilter);
108989
109005
  useEffect(() => {
108990
109006
  const timeoutId = setTimeout(() => {
@@ -109558,7 +109574,7 @@ const LogsPanel = ({ maybeShowSingleLog }) => {
109558
109574
  }
109559
109575
  const collapsedLogItems = collapseLogItems(evalSet, logItems2);
109560
109576
  return appendPendingItems(evalSet, existingLogTaskIds, collapsedLogItems);
109561
- }, [currentDir, logFiles, logPreviews, evalSet]);
109577
+ }, [evalSet, logFiles, currentDir, logDir2, logPreviews]);
109562
109578
  const progress2 = useMemo(() => {
109563
109579
  let pending = 0;
109564
109580
  let total = 0;
@@ -109594,7 +109610,7 @@ const LogsPanel = ({ maybeShowSingleLog }) => {
109594
109610
  navigate(onlyItem.url);
109595
109611
  }
109596
109612
  }
109597
- }, [logItems, maybeShowSingleLog]);
109613
+ }, [logItems, maybeShowSingleLog, navigate]);
109598
109614
  function handleKeyDown(e) {
109599
109615
  if (e.key === "f" && (e.metaKey || e.ctrlKey)) {
109600
109616
  e.preventDefault();
@@ -109810,29 +109826,6 @@ const FindBand = () => {
109810
109826
  const { extendedFindTerm } = useExtendedFind();
109811
109827
  const lastFoundItem = useRef(null);
109812
109828
  const currentSearchTerm = useRef("");
109813
- useEffect(() => {
109814
- setTimeout(() => {
109815
- searchBoxRef.current?.focus();
109816
- searchBoxRef.current?.select();
109817
- }, 10);
109818
- const handleGlobalKeydown = (e) => {
109819
- if ((e.ctrlKey || e.metaKey) && e.key === "f") {
109820
- e.preventDefault();
109821
- e.stopPropagation();
109822
- searchBoxRef.current?.focus();
109823
- searchBoxRef.current?.select();
109824
- } else if ((e.ctrlKey || e.metaKey) && e.key === "g") {
109825
- e.preventDefault();
109826
- e.stopPropagation();
109827
- const back = e.shiftKey;
109828
- handleSearch(back);
109829
- }
109830
- };
109831
- document.addEventListener("keydown", handleGlobalKeydown, true);
109832
- return () => {
109833
- document.removeEventListener("keydown", handleGlobalKeydown, true);
109834
- };
109835
- }, []);
109836
109829
  const getParentExpandablePanel = useCallback(
109837
109830
  (selection) => {
109838
109831
  let node2 = selection.anchorNode;
@@ -109899,6 +109892,29 @@ const FindBand = () => {
109899
109892
  },
109900
109893
  [getParentExpandablePanel, extendedFindTerm]
109901
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]);
109902
109918
  const handleKeyDown = useCallback(
109903
109919
  (e) => {
109904
109920
  if (e.key === "Escape") {
@@ -110610,7 +110626,14 @@ const useInfoTabConfig = (evalSpec, evalPlan, evalError, evalResults, evalStatus
110610
110626
  },
110611
110627
  scrollRef
110612
110628
  };
110613
- }, [evalSpec, evalPlan, evalError, evalResults, totalSampleCount]);
110629
+ }, [
110630
+ evalSpec,
110631
+ evalPlan,
110632
+ evalError,
110633
+ evalResults,
110634
+ evalStatus,
110635
+ totalSampleCount
110636
+ ]);
110614
110637
  };
110615
110638
  const InfoTab = ({
110616
110639
  evalSpec,
@@ -111089,7 +111112,7 @@ const useModelsTab = (evalSpec, evalStats, evalStatus) => {
111089
111112
  evalStatus
111090
111113
  }
111091
111114
  };
111092
- }, [evalSpec, evalStats]);
111115
+ }, [evalSpec, evalStats, evalStatus]);
111093
111116
  };
111094
111117
  const ModelTab = ({
111095
111118
  evalSpec,
@@ -111250,12 +111273,10 @@ const useSampleNavigation = () => {
111250
111273
  }
111251
111274
  },
111252
111275
  [
111253
- sampleSummaries,
111254
111276
  resolveLogPath,
111255
111277
  selectSample,
111256
111278
  setShowingSampleDialog,
111257
111279
  navigate,
111258
- tabId,
111259
111280
  sampleTabId
111260
111281
  ]
111261
111282
  );
@@ -111281,13 +111302,12 @@ const useSampleNavigation = () => {
111281
111302
  }
111282
111303
  },
111283
111304
  [
111284
- selectedSampleHandle,
111285
- showSample,
111286
- sampleTabId,
111287
111305
  sampleSummaries,
111288
111306
  showingSampleDialog,
111289
111307
  resolveLogPath,
111290
- navigate
111308
+ sampleTabId,
111309
+ navigate,
111310
+ selectSample
111291
111311
  ]
111292
111312
  );
111293
111313
  const nextSample = useCallback(() => {
@@ -111320,7 +111340,7 @@ const useSampleNavigation = () => {
111320
111340
  }
111321
111341
  return void 0;
111322
111342
  },
111323
- [resolveLogPath, tabId, sampleTabId]
111343
+ [resolveLogPath, sampleTabId]
111324
111344
  );
111325
111345
  const clearSampleUrl = useCallback(() => {
111326
111346
  const resolvedPath = resolveLogPath();
@@ -111556,7 +111576,7 @@ const LiveVirtualList = ({
111556
111576
  if (followOutput === null) {
111557
111577
  setFollowOutput(!!live);
111558
111578
  }
111559
- }, []);
111579
+ }, [followOutput, live, setFollowOutput]);
111560
111580
  const prevLive = usePrevious(live);
111561
111581
  useEffect(() => {
111562
111582
  if (!live && prevLive && followOutput && scrollRef?.current) {
@@ -111567,7 +111587,7 @@ const LiveVirtualList = ({
111567
111587
  }
111568
111588
  }, 100);
111569
111589
  }
111570
- }, [live, followOutput]);
111590
+ }, [live, followOutput, prevLive, scrollRef, setFollowOutput]);
111571
111591
  const handleScroll = useRafThrottle(() => {
111572
111592
  if (isAutoScrollingRef.current) return;
111573
111593
  if (!live) return;
@@ -111593,16 +111613,16 @@ const LiveVirtualList = ({
111593
111613
  }
111594
111614
  });
111595
111615
  },
111596
- [scrollRef, followOutput, live]
111616
+ [followOutput, live, scrollRef, listHandle]
111597
111617
  );
111618
+ const forceUpdate = useCallback(() => forceRender({}), []);
111598
111619
  useEffect(() => {
111599
111620
  const timer = setTimeout(() => {
111600
111621
  forceUpdate();
111601
111622
  }, 0);
111602
111623
  return () => clearTimeout(timer);
111603
- }, []);
111624
+ }, [forceUpdate]);
111604
111625
  const [, forceRender] = useState({});
111605
- const forceUpdate = useCallback(() => forceRender({}), []);
111606
111626
  const defaultSearchInItem = useCallback(
111607
111627
  (item2, searchTerm) => {
111608
111628
  const searchLower = searchTerm.toLowerCase();
@@ -111635,7 +111655,14 @@ const LiveVirtualList = ({
111635
111655
  }
111636
111656
  return false;
111637
111657
  },
111638
- [data, searchInItem, defaultSearchInItem, visibleRange]
111658
+ [
111659
+ data,
111660
+ searchInItem,
111661
+ defaultSearchInItem,
111662
+ visibleRange.endIndex,
111663
+ visibleRange.startIndex,
111664
+ listHandle
111665
+ ]
111639
111666
  );
111640
111667
  useEffect(() => {
111641
111668
  const unregister = registerVirtualList(id, searchInData);
@@ -111665,7 +111692,7 @@ const LiveVirtualList = ({
111665
111692
  }, 50);
111666
111693
  return () => clearTimeout(timer);
111667
111694
  }
111668
- }, [initialTopMostItemIndex]);
111695
+ }, [initialTopMostItemIndex, listHandle, offsetTop]);
111669
111696
  useEffect(() => {
111670
111697
  if (!isCurrentlyScrolling && pendingSearchCallback.current) {
111671
111698
  setTimeout(() => {
@@ -111727,7 +111754,7 @@ const ChatViewVirtualList = memo$2(
111727
111754
  const setNativeFind = useStore((state) => state.appActions.setNativeFind);
111728
111755
  useEffect(() => {
111729
111756
  setNativeFind(!useVirtuoso);
111730
- }, [useVirtuoso]);
111757
+ }, [setNativeFind, useVirtuoso]);
111731
111758
  useEffect(() => {
111732
111759
  const handleKeyDown = (event) => {
111733
111760
  if (event.metaKey || event.ctrlKey) {
@@ -111770,7 +111797,7 @@ const ChatViewVirtualList = memo$2(
111770
111797
  scrollElement.removeEventListener("keydown", handleKeyDown);
111771
111798
  };
111772
111799
  }
111773
- }, [scrollRef, messages2]);
111800
+ }, [scrollRef, messages2, useVirtuoso]);
111774
111801
  if (!useVirtuoso) {
111775
111802
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
111776
111803
  ChatView,
@@ -111854,7 +111881,14 @@ const ChatViewVirtualListComponent = memo$2(
111854
111881
  }
111855
111882
  );
111856
111883
  },
111857
- [id, numbered, indented2, toolCallStyle, collapsedMessages]
111884
+ [
111885
+ collapsedMessages.length,
111886
+ numbered,
111887
+ id,
111888
+ indented2,
111889
+ toolCallStyle,
111890
+ allowLinking
111891
+ ]
111858
111892
  );
111859
111893
  const Item = ({
111860
111894
  children: children2,
@@ -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 {