@invergent/agent-chat-react 1.4.4 → 1.4.6

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/dist/index.cjs CHANGED
@@ -6524,44 +6524,63 @@ function WorkspacePanel({
6524
6524
  const [deleteTarget, setDeleteTarget] = react.useState(null);
6525
6525
  const [expandedPaths, setExpandedPaths] = react.useState(/* @__PURE__ */ new Set());
6526
6526
  const [width, setWidth] = react.useState(DEFAULT_WIDTH);
6527
+ const sessionIdRef = react.useRef(sessionId);
6527
6528
  const isResizing = react.useRef(false);
6528
6529
  const startX = react.useRef(0);
6529
6530
  const startWidth = react.useRef(DEFAULT_WIDTH);
6531
+ sessionIdRef.current = sessionId;
6530
6532
  const fetchTree = react.useCallback(async () => {
6531
6533
  if (!sessionId) {
6532
6534
  setEntries([]);
6533
6535
  setRootName("workspace");
6536
+ setExpandedPaths(/* @__PURE__ */ new Set());
6537
+ setTreeLoading(false);
6534
6538
  setTreeError(null);
6535
6539
  return;
6536
6540
  }
6541
+ const requestedSessionId = sessionId;
6537
6542
  setTreeLoading(true);
6538
6543
  setTreeError(null);
6539
6544
  try {
6540
- const tree = await adapter.getWorkspaceTree({ sessionId });
6545
+ const tree = await adapter.getWorkspaceTree({
6546
+ sessionId: requestedSessionId
6547
+ });
6548
+ if (sessionIdRef.current !== requestedSessionId) return;
6541
6549
  setEntries(tree.entries);
6542
6550
  setRootName(tree.root || "workspace");
6543
6551
  setExpandedPaths(new Set(collectExpandedPaths(tree.entries)));
6544
6552
  } catch (error) {
6553
+ if (sessionIdRef.current !== requestedSessionId) return;
6545
6554
  setEntries([]);
6546
6555
  setRootName("workspace");
6547
6556
  setTreeError(error.message);
6548
6557
  } finally {
6549
- setTreeLoading(false);
6558
+ if (sessionIdRef.current === requestedSessionId) {
6559
+ setTreeLoading(false);
6560
+ }
6550
6561
  }
6551
6562
  }, [adapter, sessionId]);
6552
6563
  const fetchFile = react.useCallback(
6553
6564
  async (path) => {
6554
6565
  if (!sessionId) return;
6566
+ const requestedSessionId = sessionId;
6555
6567
  setFileLoading(true);
6556
6568
  setFileError(null);
6557
6569
  try {
6558
- const nextFile = await adapter.getWorkspaceFile({ sessionId, path });
6570
+ const nextFile = await adapter.getWorkspaceFile({
6571
+ sessionId: requestedSessionId,
6572
+ path
6573
+ });
6574
+ if (sessionIdRef.current !== requestedSessionId) return;
6559
6575
  setFile(nextFile);
6560
6576
  } catch (error) {
6577
+ if (sessionIdRef.current !== requestedSessionId) return;
6561
6578
  setFile(null);
6562
6579
  setFileError(error.message);
6563
6580
  } finally {
6564
- setFileLoading(false);
6581
+ if (sessionIdRef.current === requestedSessionId) {
6582
+ setFileLoading(false);
6583
+ }
6565
6584
  }
6566
6585
  },
6567
6586
  [adapter, sessionId]