@tutti-os/agent-gui 0.0.131 → 0.0.132
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/agent-conversation/index.js +1 -1
- package/dist/agent-gui.js +2 -2
- package/dist/{chunk-WVWSFGBU.js → chunk-G75CPIVV.js} +2 -2
- package/dist/{chunk-2RSNLVOX.js → chunk-JZS4SWFJ.js} +197 -41
- package/dist/chunk-JZS4SWFJ.js.map +1 -0
- package/dist/index.js +2 -2
- package/package.json +14 -14
- package/dist/chunk-2RSNLVOX.js.map +0 -1
- /package/dist/{chunk-WVWSFGBU.js.map → chunk-G75CPIVV.js.map} +0 -0
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
projectAgentConversationVM,
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
8
|
useProjectedAgentConversation
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-JZS4SWFJ.js";
|
|
10
10
|
import "../chunk-XNE2ROCP.js";
|
|
11
11
|
import "../chunk-VMQNG2KI.js";
|
|
12
12
|
import "../chunk-FGLQZ6I4.js";
|
package/dist/agent-gui.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentGUI
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-G75CPIVV.js";
|
|
4
4
|
import "./chunk-A4WCTHWS.js";
|
|
5
5
|
import "./chunk-GCQYN7BR.js";
|
|
6
6
|
import "./chunk-TUWQV2MC.js";
|
|
@@ -8,7 +8,7 @@ import "./chunk-MHOYBRCY.js";
|
|
|
8
8
|
import "./chunk-PVTAFUDS.js";
|
|
9
9
|
import "./chunk-5HIF53K5.js";
|
|
10
10
|
import "./chunk-R2ZADXRB.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-JZS4SWFJ.js";
|
|
12
12
|
import "./chunk-XNE2ROCP.js";
|
|
13
13
|
import "./chunk-VMQNG2KI.js";
|
|
14
14
|
import "./chunk-UP3ZDYTN.js";
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
toLocalShortDateTime,
|
|
64
64
|
updateAgentComposerDraft,
|
|
65
65
|
useProjectedAgentConversation
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-JZS4SWFJ.js";
|
|
67
67
|
import {
|
|
68
68
|
agentRichTextContentToPromptText,
|
|
69
69
|
createAgentRichTextInputExtensions,
|
|
@@ -37231,4 +37231,4 @@ export {
|
|
|
37231
37231
|
resolveAgentGUIAgentTarget,
|
|
37232
37232
|
AgentGUI
|
|
37233
37233
|
};
|
|
37234
|
-
//# sourceMappingURL=chunk-
|
|
37234
|
+
//# sourceMappingURL=chunk-G75CPIVV.js.map
|
|
@@ -5012,11 +5012,11 @@ function AgentTranscriptSkeleton({
|
|
|
5012
5012
|
import {
|
|
5013
5013
|
Fragment as Fragment7,
|
|
5014
5014
|
memo as memo4,
|
|
5015
|
-
useCallback as
|
|
5015
|
+
useCallback as useCallback13,
|
|
5016
5016
|
useLayoutEffect as useLayoutEffect4,
|
|
5017
5017
|
useMemo as useMemo7,
|
|
5018
|
-
useRef as
|
|
5019
|
-
useState as
|
|
5018
|
+
useRef as useRef12,
|
|
5019
|
+
useState as useState24
|
|
5020
5020
|
} from "react";
|
|
5021
5021
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
5022
5022
|
|
|
@@ -5452,6 +5452,7 @@ function CollapsibleReveal({
|
|
|
5452
5452
|
children,
|
|
5453
5453
|
className,
|
|
5454
5454
|
innerClassName,
|
|
5455
|
+
onHeightTransitionEnd,
|
|
5455
5456
|
preMountOnIdle = false
|
|
5456
5457
|
}) {
|
|
5457
5458
|
"use memo";
|
|
@@ -5463,6 +5464,17 @@ function CollapsibleReveal({
|
|
|
5463
5464
|
const heightRef = useRef2(height);
|
|
5464
5465
|
const measuredHeightRef = useRef2(null);
|
|
5465
5466
|
const previousExpandedRef = useRef2(expanded);
|
|
5467
|
+
const heightTransitionPendingRef = useRef2(false);
|
|
5468
|
+
const setRootRef = useCallback2(
|
|
5469
|
+
(node) => {
|
|
5470
|
+
if (rootRef.current !== null && node === null && heightTransitionPendingRef.current) {
|
|
5471
|
+
heightTransitionPendingRef.current = false;
|
|
5472
|
+
onHeightTransitionEnd?.();
|
|
5473
|
+
}
|
|
5474
|
+
rootRef.current = node;
|
|
5475
|
+
},
|
|
5476
|
+
[onHeightTransitionEnd]
|
|
5477
|
+
);
|
|
5466
5478
|
const setRevealHeight = useCallback2((nextHeight) => {
|
|
5467
5479
|
heightRef.current = nextHeight;
|
|
5468
5480
|
setHeight(nextHeight);
|
|
@@ -5475,11 +5487,18 @@ function CollapsibleReveal({
|
|
|
5475
5487
|
setMounted(true);
|
|
5476
5488
|
return void 0;
|
|
5477
5489
|
}
|
|
5490
|
+
let mountFrameStarted = false;
|
|
5478
5491
|
const animationFrame = requestAnimationFrame(() => {
|
|
5492
|
+
mountFrameStarted = true;
|
|
5479
5493
|
setMounted(true);
|
|
5480
5494
|
});
|
|
5481
|
-
return () =>
|
|
5482
|
-
|
|
5495
|
+
return () => {
|
|
5496
|
+
cancelAnimationFrame(animationFrame);
|
|
5497
|
+
if (!mountFrameStarted) {
|
|
5498
|
+
onHeightTransitionEnd?.();
|
|
5499
|
+
}
|
|
5500
|
+
};
|
|
5501
|
+
}, [expanded, mounted, onHeightTransitionEnd, preMountOnIdle]);
|
|
5483
5502
|
useEffect2(() => {
|
|
5484
5503
|
if (!preMountOnIdle || mounted || expanded) {
|
|
5485
5504
|
return void 0;
|
|
@@ -5508,6 +5527,7 @@ function CollapsibleReveal({
|
|
|
5508
5527
|
if (wasExpanded && visible && height === "auto") {
|
|
5509
5528
|
return void 0;
|
|
5510
5529
|
}
|
|
5530
|
+
heightTransitionPendingRef.current = true;
|
|
5511
5531
|
setVisible(false);
|
|
5512
5532
|
setRevealHeight("0px");
|
|
5513
5533
|
const animationFrame2 = requestAnimationFrame(() => {
|
|
@@ -5518,6 +5538,7 @@ function CollapsibleReveal({
|
|
|
5518
5538
|
return () => cancelAnimationFrame(animationFrame2);
|
|
5519
5539
|
}
|
|
5520
5540
|
if (!wasExpanded) {
|
|
5541
|
+
heightTransitionPendingRef.current = false;
|
|
5521
5542
|
setVisible(false);
|
|
5522
5543
|
setRevealHeight("0px");
|
|
5523
5544
|
return void 0;
|
|
@@ -5526,6 +5547,7 @@ function CollapsibleReveal({
|
|
|
5526
5547
|
const cachedHeight = measuredHeightRef.current;
|
|
5527
5548
|
const measuredHeight = renderedHeight > 0 ? renderedHeight : cachedHeight ?? root.scrollHeight;
|
|
5528
5549
|
measuredHeightRef.current = measuredHeight;
|
|
5550
|
+
heightTransitionPendingRef.current = true;
|
|
5529
5551
|
setRevealHeight(`${measuredHeight}px`);
|
|
5530
5552
|
setVisible(false);
|
|
5531
5553
|
const animationFrame = requestAnimationFrame(() => {
|
|
@@ -5583,17 +5605,19 @@ function CollapsibleReveal({
|
|
|
5583
5605
|
}
|
|
5584
5606
|
if (visible) {
|
|
5585
5607
|
setRevealHeight("auto");
|
|
5586
|
-
|
|
5587
|
-
}
|
|
5588
|
-
if (!expanded && !preMountOnIdle) {
|
|
5608
|
+
} else if (!expanded && !preMountOnIdle) {
|
|
5589
5609
|
setMounted(false);
|
|
5590
5610
|
}
|
|
5611
|
+
if (heightTransitionPendingRef.current) {
|
|
5612
|
+
heightTransitionPendingRef.current = false;
|
|
5613
|
+
onHeightTransitionEnd?.();
|
|
5614
|
+
}
|
|
5591
5615
|
};
|
|
5592
5616
|
const rootStyle = { height };
|
|
5593
5617
|
return /* @__PURE__ */ jsx5(
|
|
5594
5618
|
"div",
|
|
5595
5619
|
{
|
|
5596
|
-
ref:
|
|
5620
|
+
ref: setRootRef,
|
|
5597
5621
|
className: ["agent-collapsible-reveal", className ?? ""].filter(Boolean).join(" "),
|
|
5598
5622
|
"data-expanded": preMountOnIdle && expanded ? "true" : visible ? "true" : "false",
|
|
5599
5623
|
"aria-hidden": visible ? void 0 : true,
|
|
@@ -12864,7 +12888,8 @@ function useAgentTurnDisclosureStoreState() {
|
|
|
12864
12888
|
}
|
|
12865
12889
|
|
|
12866
12890
|
// shared/agentConversation/components/AgentTurnWorkSection.tsx
|
|
12867
|
-
import {
|
|
12891
|
+
import { useCallback as useCallback11, useRef as useRef8 } from "react";
|
|
12892
|
+
import { Button as Button2 } from "@tutti-os/ui-system/components";
|
|
12868
12893
|
import { ChevronDownIcon } from "@tutti-os/ui-system/icons";
|
|
12869
12894
|
|
|
12870
12895
|
// shared/agentConversation/components/agentTurnWorkSectionModel.ts
|
|
@@ -13069,12 +13094,47 @@ function AgentTurnWorkSection({
|
|
|
13069
13094
|
turnKey,
|
|
13070
13095
|
showDivider = false,
|
|
13071
13096
|
disclosureStore,
|
|
13097
|
+
onDisclosureMotionChange,
|
|
13072
13098
|
renderRow
|
|
13073
13099
|
}) {
|
|
13074
13100
|
const { t } = useTranslation();
|
|
13075
13101
|
const disclosureKey = `${sessionId}:${turnKey}`;
|
|
13076
13102
|
const expanded = model.collapseEligible ? disclosureStore.expandedOverrides[disclosureKey] ?? false : true;
|
|
13077
13103
|
const toggleLabel = expanded ? t("agentHost.agentGui.collapseTurnWork") : t("agentHost.agentGui.expandTurnWork");
|
|
13104
|
+
const pendingRevealTransitionsRef = useRef8(0);
|
|
13105
|
+
const disclosureMotionActiveRef = useRef8(false);
|
|
13106
|
+
const collapsibleSectionCount = model.sections.reduce(
|
|
13107
|
+
(count, section) => count + (section.kind === "work" && model.collapseEligible ? 1 : 0),
|
|
13108
|
+
0
|
|
13109
|
+
);
|
|
13110
|
+
const finishDisclosureMotion = useCallback11(() => {
|
|
13111
|
+
if (!disclosureMotionActiveRef.current) {
|
|
13112
|
+
return;
|
|
13113
|
+
}
|
|
13114
|
+
disclosureMotionActiveRef.current = false;
|
|
13115
|
+
pendingRevealTransitionsRef.current = 0;
|
|
13116
|
+
onDisclosureMotionChange?.(turnKey, false);
|
|
13117
|
+
}, [onDisclosureMotionChange, turnKey]);
|
|
13118
|
+
const startDisclosureMotion = useCallback11(
|
|
13119
|
+
(anchorElement) => {
|
|
13120
|
+
pendingRevealTransitionsRef.current = collapsibleSectionCount;
|
|
13121
|
+
if (collapsibleSectionCount === 0) {
|
|
13122
|
+
return;
|
|
13123
|
+
}
|
|
13124
|
+
disclosureMotionActiveRef.current = true;
|
|
13125
|
+
onDisclosureMotionChange?.(turnKey, true, anchorElement);
|
|
13126
|
+
},
|
|
13127
|
+
[collapsibleSectionCount, onDisclosureMotionChange, turnKey]
|
|
13128
|
+
);
|
|
13129
|
+
const handleRevealTransitionEnd = useCallback11(() => {
|
|
13130
|
+
if (!disclosureMotionActiveRef.current) {
|
|
13131
|
+
return;
|
|
13132
|
+
}
|
|
13133
|
+
pendingRevealTransitionsRef.current -= 1;
|
|
13134
|
+
if (pendingRevealTransitionsRef.current <= 0) {
|
|
13135
|
+
finishDisclosureMotion();
|
|
13136
|
+
}
|
|
13137
|
+
}, [finishDisclosureMotion]);
|
|
13078
13138
|
return /* @__PURE__ */ jsxs45("div", { className: "grid min-w-0", "data-agent-turn-work-section": turnKey, children: [
|
|
13079
13139
|
showDivider ? /* @__PURE__ */ jsx64(
|
|
13080
13140
|
"div",
|
|
@@ -13085,31 +13145,42 @@ function AgentTurnWorkSection({
|
|
|
13085
13145
|
}
|
|
13086
13146
|
) : null,
|
|
13087
13147
|
model.leadingRows.length > 0 ? /* @__PURE__ */ jsx64("div", { className: "mb-4 grid gap-4", children: renderRows(model.leadingRows, renderRow) }) : null,
|
|
13088
|
-
/* @__PURE__ */
|
|
13148
|
+
/* @__PURE__ */ jsx64(
|
|
13089
13149
|
"div",
|
|
13090
13150
|
{
|
|
13091
13151
|
className: "flex min-h-6 items-center gap-0.5 text-[12px] text-[var(--text-tertiary)]",
|
|
13092
13152
|
"data-agent-turn-work-header": turnKey,
|
|
13093
|
-
children:
|
|
13094
|
-
|
|
13095
|
-
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
|
|
13103
|
-
|
|
13153
|
+
children: model.collapseEligible ? /* @__PURE__ */ jsxs45(
|
|
13154
|
+
Button2,
|
|
13155
|
+
{
|
|
13156
|
+
type: "button",
|
|
13157
|
+
variant: "chrome",
|
|
13158
|
+
size: "xs",
|
|
13159
|
+
className: "-ml-2 gap-0.5 px-2 text-[12px] font-normal",
|
|
13160
|
+
"aria-label": toggleLabel,
|
|
13161
|
+
"aria-expanded": expanded,
|
|
13162
|
+
title: toggleLabel,
|
|
13163
|
+
onClick: (event) => {
|
|
13164
|
+
startDisclosureMotion(
|
|
13165
|
+
event.currentTarget.closest(
|
|
13166
|
+
"[data-agent-turn-work-header]"
|
|
13167
|
+
)
|
|
13168
|
+
);
|
|
13169
|
+
disclosureStore.setExpandedOverride(disclosureKey, !expanded);
|
|
13170
|
+
},
|
|
13171
|
+
children: [
|
|
13172
|
+
/* @__PURE__ */ jsx64(AgentTurnDurationLabel, { timing: model.timing }),
|
|
13173
|
+
/* @__PURE__ */ jsx64(
|
|
13104
13174
|
ChevronDownIcon,
|
|
13105
13175
|
{
|
|
13106
13176
|
"aria-hidden": "true",
|
|
13177
|
+
"data-icon": "inline-end",
|
|
13107
13178
|
className: `transition-transform duration-150 ${expanded ? "rotate-0" : "-rotate-90"}`
|
|
13108
13179
|
}
|
|
13109
13180
|
)
|
|
13110
|
-
|
|
13111
|
-
|
|
13112
|
-
|
|
13181
|
+
]
|
|
13182
|
+
}
|
|
13183
|
+
) : /* @__PURE__ */ jsx64(AgentTurnDurationLabel, { timing: model.timing })
|
|
13113
13184
|
}
|
|
13114
13185
|
),
|
|
13115
13186
|
model.sections.map((section, sectionIndex) => {
|
|
@@ -13131,6 +13202,7 @@ function AgentTurnWorkSection({
|
|
|
13131
13202
|
{
|
|
13132
13203
|
expanded,
|
|
13133
13204
|
innerClassName: "grid gap-4 pt-4",
|
|
13205
|
+
onHeightTransitionEnd: handleRevealTransitionEnd,
|
|
13134
13206
|
children: content
|
|
13135
13207
|
},
|
|
13136
13208
|
`work:${firstRow?.renderKey ?? firstRow?.row.id ?? sectionIndex}`
|
|
@@ -13314,18 +13386,21 @@ function looksLikeTableSeparator(line) {
|
|
|
13314
13386
|
});
|
|
13315
13387
|
}
|
|
13316
13388
|
|
|
13389
|
+
// shared/agentConversation/components/useTurnDisclosureMotion.ts
|
|
13390
|
+
import { useCallback as useCallback12, useRef as useRef11, useState as useState23 } from "react";
|
|
13391
|
+
|
|
13317
13392
|
// shared/agentConversation/components/AgentMessageLocatorRail.tsx
|
|
13318
13393
|
import {
|
|
13319
13394
|
useEffect as useEffect13,
|
|
13320
13395
|
useLayoutEffect as useLayoutEffect3,
|
|
13321
|
-
useRef as
|
|
13396
|
+
useRef as useRef10,
|
|
13322
13397
|
useState as useState22
|
|
13323
13398
|
} from "react";
|
|
13324
13399
|
|
|
13325
13400
|
// shared/agentConversation/components/agentTranscriptModel.ts
|
|
13326
|
-
import { useLayoutEffect as useLayoutEffect2, useRef as
|
|
13401
|
+
import { useLayoutEffect as useLayoutEffect2, useRef as useRef9 } from "react";
|
|
13327
13402
|
function useEnteringTranscriptRows(rowKeys) {
|
|
13328
|
-
const previousKeysRef =
|
|
13403
|
+
const previousKeysRef = useRef9(null);
|
|
13329
13404
|
const previousKeys = previousKeysRef.current;
|
|
13330
13405
|
const enteringRowKeys = /* @__PURE__ */ new Set();
|
|
13331
13406
|
if (previousKeys) {
|
|
@@ -13464,14 +13539,14 @@ function AgentMessageLocatorRail({
|
|
|
13464
13539
|
label,
|
|
13465
13540
|
onLocate
|
|
13466
13541
|
}) {
|
|
13467
|
-
const locatorRef =
|
|
13468
|
-
const locatorViewportRef =
|
|
13469
|
-
const closePanelTimeoutRef =
|
|
13542
|
+
const locatorRef = useRef10(null);
|
|
13543
|
+
const locatorViewportRef = useRef10(null);
|
|
13544
|
+
const closePanelTimeoutRef = useRef10(null);
|
|
13470
13545
|
const [isPanelOpen, setIsPanelOpen] = useState22(false);
|
|
13471
13546
|
const [shouldRenderPanel, setShouldRenderPanel] = useState22(false);
|
|
13472
13547
|
const [activeKey, setActiveKey] = useState22(null);
|
|
13473
13548
|
const [selectedKey, setSelectedKey] = useState22(null);
|
|
13474
|
-
const previousAgentResponseByKeyRef =
|
|
13549
|
+
const previousAgentResponseByKeyRef = useRef10(null);
|
|
13475
13550
|
const [unreadAgentResponseKeys, setUnreadAgentResponseKeys] = useState22(/* @__PURE__ */ new Set());
|
|
13476
13551
|
const [visibleFrame, setVisibleFrame] = useState22(null);
|
|
13477
13552
|
useEffect13(() => {
|
|
@@ -13938,6 +14013,83 @@ function selectMessageLocatorItemAtViewportCenter(scrollParent, items) {
|
|
|
13938
14013
|
return nearest?.key ?? null;
|
|
13939
14014
|
}
|
|
13940
14015
|
|
|
14016
|
+
// shared/agentConversation/components/useTurnDisclosureMotion.ts
|
|
14017
|
+
var TurnDisclosureMotionController = class {
|
|
14018
|
+
movingTurnKeys = /* @__PURE__ */ new Set();
|
|
14019
|
+
scrollAnchor = null;
|
|
14020
|
+
setTurnMotionActive(turnKey, active, anchorElement) {
|
|
14021
|
+
if (active) {
|
|
14022
|
+
this.movingTurnKeys.add(turnKey);
|
|
14023
|
+
if (anchorElement) {
|
|
14024
|
+
this.scrollAnchor?.release();
|
|
14025
|
+
this.scrollAnchor = lockDisclosureRowPosition(anchorElement);
|
|
14026
|
+
}
|
|
14027
|
+
} else {
|
|
14028
|
+
this.movingTurnKeys.delete(turnKey);
|
|
14029
|
+
if (this.movingTurnKeys.size === 0) {
|
|
14030
|
+
this.scrollAnchor?.release();
|
|
14031
|
+
this.scrollAnchor = null;
|
|
14032
|
+
}
|
|
14033
|
+
}
|
|
14034
|
+
return this.movingTurnKeys.size > 0;
|
|
14035
|
+
}
|
|
14036
|
+
};
|
|
14037
|
+
function lockDisclosureRowPosition(anchorElement) {
|
|
14038
|
+
const scrollParent = findMessageLocatorScrollParent(anchorElement);
|
|
14039
|
+
if (!scrollParent) {
|
|
14040
|
+
return null;
|
|
14041
|
+
}
|
|
14042
|
+
const anchorTop = anchorElement.getBoundingClientRect().top;
|
|
14043
|
+
const previousOverflowAnchor = scrollParent.style.getPropertyValue("overflow-anchor");
|
|
14044
|
+
const previousOverflowAnchorPriority = scrollParent.style.getPropertyPriority("overflow-anchor");
|
|
14045
|
+
scrollParent.style.setProperty("overflow-anchor", "none");
|
|
14046
|
+
const preserveAnchorTop = () => {
|
|
14047
|
+
if (!anchorElement.isConnected) {
|
|
14048
|
+
return;
|
|
14049
|
+
}
|
|
14050
|
+
const topDelta = anchorElement.getBoundingClientRect().top - anchorTop;
|
|
14051
|
+
if (Math.abs(topDelta) < 0.5) {
|
|
14052
|
+
return;
|
|
14053
|
+
}
|
|
14054
|
+
scrollParent.scrollTop += topDelta;
|
|
14055
|
+
};
|
|
14056
|
+
scrollParent.addEventListener("scroll", preserveAnchorTop);
|
|
14057
|
+
return {
|
|
14058
|
+
release: () => {
|
|
14059
|
+
preserveAnchorTop();
|
|
14060
|
+
scrollParent.removeEventListener("scroll", preserveAnchorTop);
|
|
14061
|
+
if (previousOverflowAnchor) {
|
|
14062
|
+
scrollParent.style.setProperty(
|
|
14063
|
+
"overflow-anchor",
|
|
14064
|
+
previousOverflowAnchor,
|
|
14065
|
+
previousOverflowAnchorPriority
|
|
14066
|
+
);
|
|
14067
|
+
} else {
|
|
14068
|
+
scrollParent.style.removeProperty("overflow-anchor");
|
|
14069
|
+
}
|
|
14070
|
+
}
|
|
14071
|
+
};
|
|
14072
|
+
}
|
|
14073
|
+
function useTurnDisclosureMotion() {
|
|
14074
|
+
const motionControllerRef = useRef11(
|
|
14075
|
+
null
|
|
14076
|
+
);
|
|
14077
|
+
if (!motionControllerRef.current) {
|
|
14078
|
+
motionControllerRef.current = new TurnDisclosureMotionController();
|
|
14079
|
+
}
|
|
14080
|
+
const motionController = motionControllerRef.current;
|
|
14081
|
+
const [active, setActive] = useState23(false);
|
|
14082
|
+
const setTurnMotionActive = useCallback12(
|
|
14083
|
+
(turnKey, moving, anchorElement) => {
|
|
14084
|
+
setActive(
|
|
14085
|
+
motionController.setTurnMotionActive(turnKey, moving, anchorElement)
|
|
14086
|
+
);
|
|
14087
|
+
},
|
|
14088
|
+
[motionController]
|
|
14089
|
+
);
|
|
14090
|
+
return [active, setTurnMotionActive];
|
|
14091
|
+
}
|
|
14092
|
+
|
|
13941
14093
|
// shared/agentConversation/components/AgentTranscriptView.tsx
|
|
13942
14094
|
import { Fragment as Fragment8, jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
13943
14095
|
var AGENT_TRANSCRIPT_VIRTUALIZATION_OVERSCAN = 6;
|
|
@@ -13945,6 +14097,7 @@ var AGENT_TRANSCRIPT_ESTIMATED_TURN_HEIGHT_PX = 280;
|
|
|
13945
14097
|
var AGENT_TRANSCRIPT_DISCLOSURE_TURN_GAP_PX = 24;
|
|
13946
14098
|
var AGENT_TRANSCRIPT_LEGACY_TURN_GAP_PX = 12;
|
|
13947
14099
|
var AGENT_TRANSCRIPT_FALLBACK_TURN_COUNT = 3;
|
|
14100
|
+
var preventVirtualScrollAdjustment = () => false;
|
|
13948
14101
|
function transcriptLabelsEqual(previous, next) {
|
|
13949
14102
|
return previous === next || previous.thinkingLabel === next.thinkingLabel && previous.processing === next.processing && previous.turnSummary === next.turnSummary && previous.rawTimelineJson === next.rawTimelineJson && previous.userMessageLocator === next.userMessageLocator && previous.toolCallsLabel === next.toolCallsLabel;
|
|
13950
14103
|
}
|
|
@@ -13983,10 +14136,11 @@ var AgentTranscriptView = memo4(function AgentTranscriptView2({
|
|
|
13983
14136
|
labels
|
|
13984
14137
|
}) {
|
|
13985
14138
|
"use memo";
|
|
13986
|
-
const [expandedToolRows, setExpandedToolRows] =
|
|
14139
|
+
const [expandedToolRows, setExpandedToolRows] = useState24({});
|
|
14140
|
+
const [hasMovingTurnDisclosure, handleDisclosureMotionChange] = useTurnDisclosureMotion();
|
|
13987
14141
|
const turnDisclosureStore = useAgentTurnDisclosureStore();
|
|
13988
|
-
const virtualizerHostRef =
|
|
13989
|
-
const [virtualScrollElement, setVirtualScrollElement] =
|
|
14142
|
+
const virtualizerHostRef = useRef12(null);
|
|
14143
|
+
const [virtualScrollElement, setVirtualScrollElement] = useState24(null);
|
|
13990
14144
|
const rowKeys = useMemo7(
|
|
13991
14145
|
() => conversation.rows.map(transcriptRowKey),
|
|
13992
14146
|
[conversation.rows]
|
|
@@ -14008,7 +14162,7 @@ var AgentTranscriptView = memo4(function AgentTranscriptView2({
|
|
|
14008
14162
|
[conversation.rows, rowKeys, turnGroupIndexByRowIndex]
|
|
14009
14163
|
);
|
|
14010
14164
|
const enteringRowKeys = useEnteringTranscriptRows(rowKeys);
|
|
14011
|
-
const handleToolGroupExpandedChange =
|
|
14165
|
+
const handleToolGroupExpandedChange = useCallback13(
|
|
14012
14166
|
(key, expanded) => {
|
|
14013
14167
|
setExpandedToolRows((previous) => {
|
|
14014
14168
|
if (previous[key] === expanded) {
|
|
@@ -14062,7 +14216,7 @@ var AgentTranscriptView = memo4(function AgentTranscriptView2({
|
|
|
14062
14216
|
[turnGroups]
|
|
14063
14217
|
);
|
|
14064
14218
|
const rowVirtualizer = useVirtualizer({
|
|
14065
|
-
anchorTo: "end",
|
|
14219
|
+
anchorTo: shouldVirtualize && hasMovingTurnDisclosure ? "start" : "end",
|
|
14066
14220
|
count: turnGroups.length,
|
|
14067
14221
|
estimateSize: () => AGENT_TRANSCRIPT_ESTIMATED_TURN_HEIGHT_PX,
|
|
14068
14222
|
getItemKey: (index) => turnGroups[index]?.key ?? index,
|
|
@@ -14070,7 +14224,8 @@ var AgentTranscriptView = memo4(function AgentTranscriptView2({
|
|
|
14070
14224
|
overscan: AGENT_TRANSCRIPT_VIRTUALIZATION_OVERSCAN,
|
|
14071
14225
|
scrollEndThreshold: 24
|
|
14072
14226
|
});
|
|
14073
|
-
|
|
14227
|
+
rowVirtualizer.shouldAdjustScrollPositionOnItemSizeChange = shouldVirtualize && hasMovingTurnDisclosure ? preventVirtualScrollAdjustment : void 0;
|
|
14228
|
+
const handleLocateUserMessage = useCallback13(
|
|
14074
14229
|
(item) => {
|
|
14075
14230
|
const scrollParent = virtualizerHostRef.current ? findMessageLocatorScrollParent(virtualizerHostRef.current) : null;
|
|
14076
14231
|
const scrollToRenderedRow = () => {
|
|
@@ -14169,6 +14324,7 @@ var AgentTranscriptView = memo4(function AgentTranscriptView2({
|
|
|
14169
14324
|
({ rowIndex }) => dividerRowIndexes.has(rowIndex)
|
|
14170
14325
|
),
|
|
14171
14326
|
disclosureStore: turnDisclosureStore,
|
|
14327
|
+
onDisclosureMotionChange: handleDisclosureMotionChange,
|
|
14172
14328
|
renderRow
|
|
14173
14329
|
},
|
|
14174
14330
|
group.key
|
|
@@ -14282,13 +14438,13 @@ var AgentConversationFlow = memo5(function AgentConversationFlow2({
|
|
|
14282
14438
|
});
|
|
14283
14439
|
|
|
14284
14440
|
// shared/agentConversation/projection/useProjectedAgentConversation.ts
|
|
14285
|
-
import { useMemo as useMemo8, useRef as
|
|
14441
|
+
import { useMemo as useMemo8, useRef as useRef13 } from "react";
|
|
14286
14442
|
function useProjectedAgentConversation({
|
|
14287
14443
|
conversation,
|
|
14288
14444
|
detail,
|
|
14289
14445
|
avoidGroupingEdits = false
|
|
14290
14446
|
}) {
|
|
14291
|
-
const previousConversationRef =
|
|
14447
|
+
const previousConversationRef = useRef13(null);
|
|
14292
14448
|
return useMemo8(() => {
|
|
14293
14449
|
if (!conversation && !detail) {
|
|
14294
14450
|
previousConversationRef.current = null;
|
|
@@ -14344,4 +14500,4 @@ export {
|
|
|
14344
14500
|
AgentConversationFlow,
|
|
14345
14501
|
useProjectedAgentConversation
|
|
14346
14502
|
};
|
|
14347
|
-
//# sourceMappingURL=chunk-
|
|
14503
|
+
//# sourceMappingURL=chunk-JZS4SWFJ.js.map
|