@truefoundry/trueforge-ui 0.3.0-rc.1 → 0.3.0-rc.10
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/CHANGELOG.md +143 -0
- package/README.md +23 -8
- package/dist/{AgentCodeSnippets-NZOFJE57.js → AgentCodeSnippets-RJBB4DDE.js} +38 -23
- package/dist/AgentCodeSnippets-RJBB4DDE.js.map +1 -0
- package/dist/AgentMetricChart-UPGSJ2WP.js +15 -0
- package/dist/{AgentOverview-EEBHJC32.js → AgentOverview-U5WIQXZN.js} +11 -9
- package/dist/AgentOverview-U5WIQXZN.js.map +1 -0
- package/dist/{AgentSessionEventTimeline-26Z6IB3B.js → AgentSessionEventTimeline-GRGIQTRE.js} +19 -10
- package/dist/AgentSessionEventTimeline-GRGIQTRE.js.map +1 -0
- package/dist/{AgentSessionEventTimelineChart-CGCU7WBK.js → AgentSessionEventTimelineChart-GNF4VOUT.js} +144 -57
- package/dist/AgentSessionEventTimelineChart-GNF4VOUT.js.map +1 -0
- package/dist/{AgentSessions-3MPDZASK.js → AgentSessions-5OTF2BUW.js} +72 -24
- package/dist/AgentSessions-5OTF2BUW.js.map +1 -0
- package/dist/{ConnectorSettings-MXFRWWR6.js → ConnectorSettings-HDKGLDCY.js} +162 -126
- package/dist/ConnectorSettings-HDKGLDCY.js.map +1 -0
- package/dist/{DockLayout-LM4AFMFY.js → DockLayout-D2FPQCAL.js} +10 -10
- package/dist/{DrawerLayout-JR3O6RRB.js → DrawerLayout-HUV7RAWL.js} +14 -12
- package/dist/DrawerLayout-HUV7RAWL.js.map +1 -0
- package/dist/{ModelSettings-G7IFNC2Y.js → ModelSettings-VNQ7HPKH.js} +22 -28
- package/dist/ModelSettings-VNQ7HPKH.js.map +1 -0
- package/dist/OpenUiFenceBlock-KPZFLUSC.js +9 -0
- package/dist/{SandboxSettings-NXAANMAX.js → SandboxSettings-ZLXGMFBF.js} +17 -21
- package/dist/SandboxSettings-ZLXGMFBF.js.map +1 -0
- package/dist/SchedulesPage-QKYI2Z3A.js +15 -0
- package/dist/{SettingsBuilder-L34IQ56S.js → SettingsBuilder-RVVYXOJW.js} +9 -9
- package/dist/{SettingsBuilder-L34IQ56S.js.map → SettingsBuilder-RVVYXOJW.js.map} +1 -1
- package/dist/{ShellRouteSync-CEBETGEJ.js → ShellRouteSync-SJXFKUAJ.js} +171 -26
- package/dist/ShellRouteSync-SJXFKUAJ.js.map +1 -0
- package/dist/{SidebarLayout-A2HJPPHS.js → SidebarLayout-KYA76FQ7.js} +80 -58
- package/dist/SidebarLayout-KYA76FQ7.js.map +1 -0
- package/dist/{SkillSettings-FGGMSUNO.js → SkillSettings-7OHT7FPI.js} +24 -22
- package/dist/SkillSettings-7OHT7FPI.js.map +1 -0
- package/dist/{TrueForgeUIWithRouter-MZVJWJMB.js → TrueForgeUIWithRouter-LKG4XLW6.js} +9 -9
- package/dist/{WidgetLayout-6QM45OQQ.js → WidgetLayout-W2RGGOQ3.js} +10 -10
- package/dist/{chunk-U7KURWW3.js → chunk-2GIZY3JJ.js} +276 -54
- package/dist/chunk-2GIZY3JJ.js.map +1 -0
- package/dist/{chunk-WVE3F724.js → chunk-2QTH6JHX.js} +21 -4
- package/dist/chunk-2QTH6JHX.js.map +1 -0
- package/dist/{chunk-XAU7QFG3.js → chunk-3ZW74FHC.js} +68 -256
- package/dist/chunk-3ZW74FHC.js.map +1 -0
- package/dist/{chunk-FJW36PD7.js → chunk-67ZO7Z2W.js} +28 -24
- package/dist/chunk-67ZO7Z2W.js.map +1 -0
- package/dist/{chunk-QC42MLAK.js → chunk-7AAO4UDQ.js} +4 -3
- package/dist/chunk-7AAO4UDQ.js.map +1 -0
- package/dist/{chunk-MPNSO7E6.js → chunk-CG75X77Q.js} +2 -2
- package/dist/chunk-DPPOEFBD.js +517 -0
- package/dist/chunk-DPPOEFBD.js.map +1 -0
- package/dist/{chunk-6O6FWUDW.js → chunk-EPAL2HD5.js} +641 -388
- package/dist/chunk-EPAL2HD5.js.map +1 -0
- package/dist/{chunk-ZTMKFZQ3.js → chunk-GG23N2GW.js} +5099 -3295
- package/dist/chunk-GG23N2GW.js.map +1 -0
- package/dist/chunk-JCL3Q7RW.js +587 -0
- package/dist/chunk-JCL3Q7RW.js.map +1 -0
- package/dist/{chunk-M62XY4NC.js → chunk-JKEBMGLH.js} +235 -108
- package/dist/chunk-JKEBMGLH.js.map +1 -0
- package/dist/{chunk-DMMZSZTN.js → chunk-KSGNKS2D.js} +60 -16
- package/dist/chunk-KSGNKS2D.js.map +1 -0
- package/dist/{chunk-CYHJDKFB.js → chunk-PCI6VMB5.js} +189 -52
- package/dist/chunk-PCI6VMB5.js.map +1 -0
- package/dist/{chunk-ZKNUMH2M.js → chunk-PQ7VWBQQ.js} +13 -11
- package/dist/chunk-PQ7VWBQQ.js.map +1 -0
- package/dist/chunk-T6QQV5LK.js +238 -0
- package/dist/chunk-T6QQV5LK.js.map +1 -0
- package/dist/{createTrueFoundryServer-CmZnBh_l.d.ts → createTrueFoundryServer-B_FYhSdn.d.ts} +8 -5
- package/dist/index.d.ts +369 -108
- package/dist/index.js +69 -488
- package/dist/index.js.map +1 -1
- package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +49 -14
- package/dist/plugins/trueforge-agent-server-adapter/index.js +138 -50
- package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -4
- package/dist/AgentCodeSnippets-NZOFJE57.js.map +0 -1
- package/dist/AgentMetricChart-JPU3MFQ2.js +0 -15
- package/dist/AgentOverview-EEBHJC32.js.map +0 -1
- package/dist/AgentSessionEventTimeline-26Z6IB3B.js.map +0 -1
- package/dist/AgentSessionEventTimelineChart-CGCU7WBK.js.map +0 -1
- package/dist/AgentSessions-3MPDZASK.js.map +0 -1
- package/dist/ConnectorSettings-MXFRWWR6.js.map +0 -1
- package/dist/DrawerLayout-JR3O6RRB.js.map +0 -1
- package/dist/ModelSettings-G7IFNC2Y.js.map +0 -1
- package/dist/OpenUiFenceBlock-2TV5TQ6P.js +0 -9
- package/dist/SandboxSettings-NXAANMAX.js.map +0 -1
- package/dist/SchedulesPage-KKLUDO6B.js +0 -15
- package/dist/ShellRouteSync-CEBETGEJ.js.map +0 -1
- package/dist/SidebarLayout-A2HJPPHS.js.map +0 -1
- package/dist/SkillSettings-FGGMSUNO.js.map +0 -1
- package/dist/chunk-2XPPBEYF.js +0 -74
- package/dist/chunk-2XPPBEYF.js.map +0 -1
- package/dist/chunk-6O6FWUDW.js.map +0 -1
- package/dist/chunk-7Z2C2K7F.js +0 -578
- package/dist/chunk-7Z2C2K7F.js.map +0 -1
- package/dist/chunk-CYHJDKFB.js.map +0 -1
- package/dist/chunk-DMMZSZTN.js.map +0 -1
- package/dist/chunk-FJW36PD7.js.map +0 -1
- package/dist/chunk-M62XY4NC.js.map +0 -1
- package/dist/chunk-QC42MLAK.js.map +0 -1
- package/dist/chunk-SFZNIO6U.js +0 -18
- package/dist/chunk-SFZNIO6U.js.map +0 -1
- package/dist/chunk-U7KURWW3.js.map +0 -1
- package/dist/chunk-WVE3F724.js.map +0 -1
- package/dist/chunk-XAU7QFG3.js.map +0 -1
- package/dist/chunk-ZKNUMH2M.js.map +0 -1
- package/dist/chunk-ZTMKFZQ3.js.map +0 -1
- /package/dist/{AgentMetricChart-JPU3MFQ2.js.map → AgentMetricChart-UPGSJ2WP.js.map} +0 -0
- /package/dist/{DockLayout-LM4AFMFY.js.map → DockLayout-D2FPQCAL.js.map} +0 -0
- /package/dist/{OpenUiFenceBlock-2TV5TQ6P.js.map → OpenUiFenceBlock-KPZFLUSC.js.map} +0 -0
- /package/dist/{SchedulesPage-KKLUDO6B.js.map → SchedulesPage-QKYI2Z3A.js.map} +0 -0
- /package/dist/{TrueForgeUIWithRouter-MZVJWJMB.js.map → TrueForgeUIWithRouter-LKG4XLW6.js.map} +0 -0
- /package/dist/{WidgetLayout-6QM45OQQ.js.map → WidgetLayout-W2RGGOQ3.js.map} +0 -0
- /package/dist/{chunk-MPNSO7E6.js.map → chunk-CG75X77Q.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
+
ThreadListContainer
|
|
4
|
+
} from "./chunk-DPPOEFBD.js";
|
|
5
|
+
import {
|
|
6
|
+
ApprovalNavContainer,
|
|
3
7
|
AskUserContainer,
|
|
4
8
|
ComposerContainer,
|
|
5
9
|
CustomActionContainer,
|
|
@@ -10,13 +14,14 @@ import {
|
|
|
10
14
|
ThreadContainer,
|
|
11
15
|
UserEditComposerContainer,
|
|
12
16
|
threadHasPendingMcpAuth,
|
|
17
|
+
useApprovalNav,
|
|
13
18
|
useComposerPauseView
|
|
14
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-JKEBMGLH.js";
|
|
15
20
|
import {
|
|
16
21
|
ServerInitLoader,
|
|
17
22
|
TrueForgeUIShell,
|
|
18
23
|
TrueFoundryChatProvider
|
|
19
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-PCI6VMB5.js";
|
|
20
25
|
import "./chunk-DJUFS2BW.js";
|
|
21
26
|
import {
|
|
22
27
|
ComposerBusyProvider,
|
|
@@ -26,19 +31,10 @@ import {
|
|
|
26
31
|
} from "./chunk-BSIPI3KV.js";
|
|
27
32
|
import {
|
|
28
33
|
AgentMetricChart
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import {
|
|
31
|
-
ScheduleFormDrawer,
|
|
32
|
-
ScheduleFormFields,
|
|
33
|
-
ScheduleLastRunsCell,
|
|
34
|
-
ScheduleRunChip,
|
|
35
|
-
ScheduleStatusBadge,
|
|
36
|
-
SchedulesPage,
|
|
37
|
-
TestScheduleScreen
|
|
38
|
-
} from "./chunk-6O6FWUDW.js";
|
|
34
|
+
} from "./chunk-PQ7VWBQQ.js";
|
|
39
35
|
import {
|
|
40
36
|
createTrueFoundryServer
|
|
41
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-7AAO4UDQ.js";
|
|
42
38
|
import "./chunk-Y6S4OVVQ.js";
|
|
43
39
|
import {
|
|
44
40
|
IS_CREATE_AGENT_METADATA_KEY,
|
|
@@ -46,11 +42,21 @@ import {
|
|
|
46
42
|
readSessionIsCreateAgent,
|
|
47
43
|
sessionIsCreateAgent
|
|
48
44
|
} from "./chunk-RDXBMTP5.js";
|
|
45
|
+
import {
|
|
46
|
+
ScheduleFormDrawer,
|
|
47
|
+
ScheduleFormFields,
|
|
48
|
+
ScheduleLastRunsCell,
|
|
49
|
+
ScheduleRunChip,
|
|
50
|
+
ScheduleStatusBadge,
|
|
51
|
+
SchedulesPage,
|
|
52
|
+
TestScheduleScreen
|
|
53
|
+
} from "./chunk-EPAL2HD5.js";
|
|
49
54
|
import {
|
|
50
55
|
AgentCodeBlock,
|
|
51
56
|
AgentConfigEditors,
|
|
52
57
|
AgentConfigPanel,
|
|
53
58
|
AgentConfigSection,
|
|
59
|
+
AgentCustomParametersEditor,
|
|
54
60
|
AgentDetailsHeader,
|
|
55
61
|
AgentDetailsPage,
|
|
56
62
|
AgentDetailsTabs,
|
|
@@ -58,6 +64,7 @@ import {
|
|
|
58
64
|
AgentInstructionsDrawer,
|
|
59
65
|
AgentMcpEditorContent,
|
|
60
66
|
AgentMetricCard,
|
|
67
|
+
AgentMetricStatistics,
|
|
61
68
|
AgentMetricsContainer,
|
|
62
69
|
AgentMetricsTimeRangeFilter,
|
|
63
70
|
AgentMetricsView,
|
|
@@ -67,8 +74,8 @@ import {
|
|
|
67
74
|
AgentOverviewCard,
|
|
68
75
|
AgentResourceConfigModal,
|
|
69
76
|
AgentResourceEditorContent,
|
|
77
|
+
AgentRuntimeConfigDrawer,
|
|
70
78
|
AgentRuntimeConfigFields,
|
|
71
|
-
AgentRuntimeConfigModal,
|
|
72
79
|
AgentRuntimeEditorContent,
|
|
73
80
|
AgentSessionsFilters,
|
|
74
81
|
AgentSkillsEditorContent,
|
|
@@ -76,6 +83,7 @@ import {
|
|
|
76
83
|
AgentStepsContainer,
|
|
77
84
|
AgentsLibrary,
|
|
78
85
|
AgentsLibraryButton,
|
|
86
|
+
ApprovalNavBanner,
|
|
79
87
|
AssistantMessageBubble,
|
|
80
88
|
AssistantMessageContainer,
|
|
81
89
|
AssistantTextContainer,
|
|
@@ -87,6 +95,7 @@ import {
|
|
|
87
95
|
AvatarImage,
|
|
88
96
|
BottomSheet,
|
|
89
97
|
BrandLogo,
|
|
98
|
+
Button,
|
|
90
99
|
CenteredModal,
|
|
91
100
|
ChatFileDownload,
|
|
92
101
|
ClearChatButton,
|
|
@@ -100,11 +109,11 @@ import {
|
|
|
100
109
|
DEFAULT_TABLE_PAGE_SIZE,
|
|
101
110
|
DraftAgentConfigTrigger,
|
|
102
111
|
DraftCapabilitiesPanel,
|
|
112
|
+
DraftComposerActionsMenu,
|
|
103
113
|
DraftComposerLeftSection,
|
|
104
114
|
DraftComposerRightSection,
|
|
105
115
|
DraftCompositeSelector,
|
|
106
116
|
DraftModelSelector,
|
|
107
|
-
DropdownMenuItem,
|
|
108
117
|
HistoryLoader,
|
|
109
118
|
MCP_AUTH_POPUP_CHANNEL,
|
|
110
119
|
Markdown,
|
|
@@ -116,17 +125,17 @@ import {
|
|
|
116
125
|
MessageListSkeleton,
|
|
117
126
|
MessageTimestamp,
|
|
118
127
|
MonacoEditorCore,
|
|
128
|
+
PermissionGuard,
|
|
119
129
|
PopoverSelect,
|
|
120
130
|
ReasoningContainer,
|
|
131
|
+
ResponsiveDropdownMenu,
|
|
121
132
|
ResumeUnavailable,
|
|
122
133
|
SandboxArtifactDownload,
|
|
123
134
|
SandboxToolCallCard,
|
|
124
135
|
SaveAgentButton,
|
|
125
136
|
SaveAgentForm,
|
|
126
|
-
SaveAgentFormFields,
|
|
127
137
|
SchedulesButton,
|
|
128
138
|
ScrollToBottomButton,
|
|
129
|
-
SearchInput_default,
|
|
130
139
|
SelectAgentEmptyState,
|
|
131
140
|
SessionsBrowserButton,
|
|
132
141
|
SessionsPage,
|
|
@@ -164,43 +173,39 @@ import {
|
|
|
164
173
|
ToolCallContentBlockContainer,
|
|
165
174
|
ToolGroupCard,
|
|
166
175
|
USER_MESSAGE_ATTACHMENT_PREVIEW_REM,
|
|
176
|
+
UserAvatar,
|
|
167
177
|
UserMessageActionBar,
|
|
168
178
|
UserMessageBubble,
|
|
169
179
|
UserMessageContainer,
|
|
170
180
|
UserMessageEdit,
|
|
171
181
|
WelcomeScreen,
|
|
172
|
-
canReuseMutableShell,
|
|
173
182
|
computeAgentStepsSplit,
|
|
174
183
|
defaultSlots,
|
|
184
|
+
findSubAgentAncestorsForApproval,
|
|
175
185
|
preloadMarkdownOpenUI,
|
|
176
|
-
readThreadAgentName,
|
|
177
186
|
resolveBrandChrome,
|
|
178
|
-
themePortalRoot,
|
|
179
|
-
threadListIndicesByRecency,
|
|
180
|
-
threadListItemIsMutable,
|
|
181
187
|
useBrandName,
|
|
182
|
-
|
|
188
|
+
useCanCreateAgent,
|
|
183
189
|
useMCPAuth,
|
|
184
|
-
|
|
190
|
+
useOptionalCurrentUser,
|
|
191
|
+
useResourcePermissions,
|
|
185
192
|
useSlot,
|
|
186
193
|
useThemeMode,
|
|
187
194
|
useToaster,
|
|
188
195
|
useToasterOptional
|
|
189
|
-
} from "./chunk-
|
|
190
|
-
import "./chunk-
|
|
196
|
+
} from "./chunk-GG23N2GW.js";
|
|
197
|
+
import "./chunk-T6QQV5LK.js";
|
|
191
198
|
import {
|
|
192
199
|
DraftCatalogProvider,
|
|
193
200
|
Icon,
|
|
194
|
-
auiButtonClass,
|
|
195
|
-
getErrorMessage,
|
|
196
201
|
registerIcons,
|
|
197
|
-
useCompactLayout,
|
|
198
202
|
useDraftCatalog
|
|
199
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-3ZW74FHC.js";
|
|
200
204
|
import {
|
|
201
205
|
DEFAULT_AGENT_CONFIG,
|
|
202
206
|
ServerProvider,
|
|
203
207
|
ShellModeProvider,
|
|
208
|
+
getErrorMessage,
|
|
204
209
|
libraryAgentId,
|
|
205
210
|
shellIsCreateAgent,
|
|
206
211
|
shellIsMutable,
|
|
@@ -210,6 +215,7 @@ import {
|
|
|
210
215
|
useOptionalAgentMetricsServer,
|
|
211
216
|
useOptionalAgentSessionsServer,
|
|
212
217
|
useOptionalCatalogServer,
|
|
218
|
+
useOptionalPermissionsServer,
|
|
213
219
|
useOptionalScheduleServer,
|
|
214
220
|
useOptionalServer,
|
|
215
221
|
useOptionalShellMode,
|
|
@@ -217,25 +223,24 @@ import {
|
|
|
217
223
|
useServer,
|
|
218
224
|
useServerCapabilities,
|
|
219
225
|
useShellMode
|
|
220
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-2GIZY3JJ.js";
|
|
221
227
|
import {
|
|
222
228
|
useAui,
|
|
223
229
|
useAuiState
|
|
224
230
|
} from "./chunk-M6MHLVSO.js";
|
|
225
231
|
import {
|
|
226
232
|
OpenUiFenceBlock
|
|
227
|
-
} from "./chunk-
|
|
233
|
+
} from "./chunk-CG75X77Q.js";
|
|
228
234
|
import {
|
|
229
235
|
PRESETS,
|
|
230
236
|
ThemeProvider,
|
|
231
|
-
cn,
|
|
232
237
|
resolvePresetTokens,
|
|
233
238
|
useBrand,
|
|
234
239
|
useContentClassNames,
|
|
235
240
|
useOptionalContentClassNames,
|
|
236
241
|
useTheme,
|
|
237
242
|
useThemeIcons
|
|
238
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-JCL3Q7RW.js";
|
|
239
244
|
|
|
240
245
|
// src/icons/agent-2.svg
|
|
241
246
|
import * as React from "react";
|
|
@@ -399,454 +404,14 @@ var PostMcpOauthScreen = () => {
|
|
|
399
404
|
};
|
|
400
405
|
var PostMcpOauthScreen_default = PostMcpOauthScreen;
|
|
401
406
|
|
|
402
|
-
// src/containers/ThreadListContainer.tsx
|
|
403
|
-
import {
|
|
404
|
-
ThreadListItemByIndexProvider,
|
|
405
|
-
ThreadListItemMorePrimitive,
|
|
406
|
-
ThreadListItemPrimitive,
|
|
407
|
-
ThreadListPrimitive,
|
|
408
|
-
useAui as useAui2,
|
|
409
|
-
useAuiState as useAuiState2
|
|
410
|
-
} from "@assistant-ui/react";
|
|
411
|
-
import { useCallback, useEffect as useEffect3, useMemo, useRef as useRef2, useState as useState3 } from "react";
|
|
412
|
-
|
|
413
|
-
// src/atoms/AgentHistoryFilterButton.tsx
|
|
414
|
-
import { useEffect as useEffect2, useId, useLayoutEffect, useRef, useState as useState2 } from "react";
|
|
415
|
-
import { createPortal } from "react-dom";
|
|
416
|
-
import { Fragment, jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
417
|
-
function AgentHistoryFilterButton() {
|
|
418
|
-
const shell = useOptionalShellMode();
|
|
419
|
-
const server = useOptionalServer();
|
|
420
|
-
const isMobile = useIsMobile();
|
|
421
|
-
const compact = useCompactLayout();
|
|
422
|
-
const useSheet = isMobile || compact;
|
|
423
|
-
const [open, setOpen] = useState2(false);
|
|
424
|
-
const [query, setQuery] = useState2("");
|
|
425
|
-
const [menuPos, setMenuPos] = useState2(null);
|
|
426
|
-
const buttonRef = useRef(null);
|
|
427
|
-
const menuRef = useRef(null);
|
|
428
|
-
const menuId = useId();
|
|
429
|
-
const enabled = shell?.isLibraryEnabled === true && server != null;
|
|
430
|
-
const selected = shell?.historyAgentFilter ?? null;
|
|
431
|
-
useEffect2(() => {
|
|
432
|
-
if (!open) setQuery("");
|
|
433
|
-
}, [open]);
|
|
434
|
-
const { agents, isInitialLoading, isSearching, loadingMore, hasMore, listRef, sentinelRef } = useSearchAgentsList({
|
|
435
|
-
enabled: open && enabled,
|
|
436
|
-
query
|
|
437
|
-
});
|
|
438
|
-
useLayoutEffect(() => {
|
|
439
|
-
if (!open || useSheet) {
|
|
440
|
-
setMenuPos(null);
|
|
441
|
-
return;
|
|
442
|
-
}
|
|
443
|
-
const update = () => {
|
|
444
|
-
const rect = buttonRef.current?.getBoundingClientRect();
|
|
445
|
-
if (!rect) return;
|
|
446
|
-
setMenuPos({ top: rect.top, left: rect.right + 4 });
|
|
447
|
-
};
|
|
448
|
-
update();
|
|
449
|
-
window.addEventListener("resize", update);
|
|
450
|
-
window.addEventListener("scroll", update, true);
|
|
451
|
-
return () => {
|
|
452
|
-
window.removeEventListener("resize", update);
|
|
453
|
-
window.removeEventListener("scroll", update, true);
|
|
454
|
-
};
|
|
455
|
-
}, [open, useSheet]);
|
|
456
|
-
useEffect2(() => {
|
|
457
|
-
if (!open || useSheet) return;
|
|
458
|
-
const handler = (e) => {
|
|
459
|
-
const target = e.target;
|
|
460
|
-
if (buttonRef.current?.contains(target) || menuRef.current?.contains(target)) return;
|
|
461
|
-
setOpen(false);
|
|
462
|
-
};
|
|
463
|
-
document.addEventListener("mousedown", handler);
|
|
464
|
-
return () => document.removeEventListener("mousedown", handler);
|
|
465
|
-
}, [open, useSheet]);
|
|
466
|
-
if (!enabled) return null;
|
|
467
|
-
const pick = (agentId) => {
|
|
468
|
-
shell?.setHistoryAgentFilter(agentId);
|
|
469
|
-
setOpen(false);
|
|
470
|
-
};
|
|
471
|
-
const filterBody = /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
472
|
-
/* @__PURE__ */ jsxs7("div", { className: "p-1", onMouseDown: (e) => e.stopPropagation(), children: [
|
|
473
|
-
/* @__PURE__ */ jsx11(SearchInput_default, { query, setQuery, placeholder: "Search agents" }),
|
|
474
|
-
isSearching ? /* @__PURE__ */ jsx11("p", { className: "text-text-secondary px-1 pt-1 text-[11px]", role: "status", children: "Searching\u2026" }) : null
|
|
475
|
-
] }),
|
|
476
|
-
/* @__PURE__ */ jsxs7(
|
|
477
|
-
"div",
|
|
478
|
-
{
|
|
479
|
-
ref: listRef,
|
|
480
|
-
className: cn("mt-1 overflow-y-auto", useSheet ? "min-h-0 flex-1 px-1 pb-2" : "min-h-48 max-h-64"),
|
|
481
|
-
children: [
|
|
482
|
-
query.trim() === "" ? /* @__PURE__ */ jsxs7(
|
|
483
|
-
DropdownMenuItem,
|
|
484
|
-
{
|
|
485
|
-
className: cn(
|
|
486
|
-
"justify-between",
|
|
487
|
-
selected == null && "bg-dropdown-selected-item-bg text-dropdown-selected-item-text"
|
|
488
|
-
),
|
|
489
|
-
onClick: () => pick(null),
|
|
490
|
-
children: [
|
|
491
|
-
"All chats",
|
|
492
|
-
selected == null ? /* @__PURE__ */ jsx11(Icon, { name: "check", className: "size-3.5 shrink-0" }) : null
|
|
493
|
-
]
|
|
494
|
-
}
|
|
495
|
-
) : null,
|
|
496
|
-
isInitialLoading ? /* @__PURE__ */ jsx11("p", { className: "px-2 py-3 text-center text-xs text-text-secondary", children: "Loading\u2026" }) : agents.length === 0 ? /* @__PURE__ */ jsx11("p", { className: "text-text-secondary px-2 py-6 text-center text-xs", role: "status", children: query.trim() ? `No agents match "${query.trim()}".` : "No agents yet." }) : /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
497
|
-
agents.map((agent) => {
|
|
498
|
-
const id = libraryAgentId(agent);
|
|
499
|
-
const active = selected === id;
|
|
500
|
-
return /* @__PURE__ */ jsxs7(
|
|
501
|
-
DropdownMenuItem,
|
|
502
|
-
{
|
|
503
|
-
className: cn(
|
|
504
|
-
"justify-between gap-2 text-left",
|
|
505
|
-
active && "bg-dropdown-selected-item-bg text-dropdown-selected-item-text"
|
|
506
|
-
),
|
|
507
|
-
onClick: () => pick(id),
|
|
508
|
-
children: [
|
|
509
|
-
/* @__PURE__ */ jsx11("span", { className: "min-w-0 truncate", children: agent.name }),
|
|
510
|
-
active ? /* @__PURE__ */ jsx11(Icon, { name: "check", className: "size-3.5 shrink-0" }) : null
|
|
511
|
-
]
|
|
512
|
-
},
|
|
513
|
-
id
|
|
514
|
-
);
|
|
515
|
-
}),
|
|
516
|
-
hasMore ? /* @__PURE__ */ jsx11("div", { ref: sentinelRef, className: "flex h-6 shrink-0 items-center justify-center", "aria-hidden": true, children: loadingMore ? /* @__PURE__ */ jsx11("span", { className: "text-text-secondary text-[11px]", role: "status", children: "Loading more\u2026" }) : null }) : null
|
|
517
|
-
] })
|
|
518
|
-
]
|
|
519
|
-
}
|
|
520
|
-
)
|
|
521
|
-
] });
|
|
522
|
-
return /* @__PURE__ */ jsxs7("div", { className: "relative shrink-0", children: [
|
|
523
|
-
/* @__PURE__ */ jsxs7(
|
|
524
|
-
"button",
|
|
525
|
-
{
|
|
526
|
-
ref: buttonRef,
|
|
527
|
-
type: "button",
|
|
528
|
-
"aria-label": selected != null ? `Filter chat history by agent (${selected})` : "Filter chat history by agent",
|
|
529
|
-
"aria-haspopup": useSheet ? "dialog" : "menu",
|
|
530
|
-
"aria-expanded": open,
|
|
531
|
-
"aria-controls": open ? menuId : void 0,
|
|
532
|
-
title: "Filter by agent",
|
|
533
|
-
className: auiButtonClass({
|
|
534
|
-
variant: "ghost",
|
|
535
|
-
size: "icon",
|
|
536
|
-
className: cn(
|
|
537
|
-
"relative size-7 shrink-0 text-text-secondary hover:bg-ghost-button-hover hover:text-ghost-button-text",
|
|
538
|
-
selected != null && "text-text-primary"
|
|
539
|
-
)
|
|
540
|
-
}),
|
|
541
|
-
onClick: () => setOpen((v) => !v),
|
|
542
|
-
children: [
|
|
543
|
-
/* @__PURE__ */ jsx11(Icon, { name: "funnel", className: "size-3.5" }),
|
|
544
|
-
selected != null ? /* @__PURE__ */ jsx11(
|
|
545
|
-
"span",
|
|
546
|
-
{
|
|
547
|
-
className: "bg-primary-button-bg absolute top-1 right-1 size-1.5 rounded-full",
|
|
548
|
-
"aria-hidden": true,
|
|
549
|
-
"data-testid": "history-filter-active-dot"
|
|
550
|
-
}
|
|
551
|
-
) : null
|
|
552
|
-
]
|
|
553
|
-
}
|
|
554
|
-
),
|
|
555
|
-
useSheet && open ? /* @__PURE__ */ jsx11(BottomSheet, { open: true, onOpenChange: setOpen, id: menuId, "aria-label": "Filter agents", children: /* @__PURE__ */ jsx11("div", { className: "flex min-h-0 flex-1 flex-col p-2", role: "menu", children: filterBody }) }) : null,
|
|
556
|
-
!useSheet && open && menuPos != null ? createPortal(
|
|
557
|
-
/* @__PURE__ */ jsx11(
|
|
558
|
-
"div",
|
|
559
|
-
{
|
|
560
|
-
ref: menuRef,
|
|
561
|
-
id: menuId,
|
|
562
|
-
role: "menu",
|
|
563
|
-
"aria-label": "Filter agents",
|
|
564
|
-
style: { top: menuPos.top, left: menuPos.left },
|
|
565
|
-
className: "font-sans-flex fixed z-50 w-56 rounded-md border border-border bg-card-bg p-1 text-text-primary shadow-md",
|
|
566
|
-
children: filterBody
|
|
567
|
-
}
|
|
568
|
-
),
|
|
569
|
-
themePortalRoot(buttonRef.current)
|
|
570
|
-
) : null
|
|
571
|
-
] });
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
// src/containers/ThreadListContainer.tsx
|
|
575
|
-
import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
576
|
-
var deleteItemClass = "flex w-full cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium text-failure-bg outline-none transition-colors hover:bg-failure-bg/12 hover:text-failure-bg focus:bg-failure-bg/12 focus:text-failure-bg data-[highlighted]:bg-failure-bg/12 data-[highlighted]:text-failure-bg";
|
|
577
|
-
function ThreadListItemDeleteMenu() {
|
|
578
|
-
const compact = useCompactLayout();
|
|
579
|
-
const isMobile = useIsMobile();
|
|
580
|
-
const [sheetOpen, setSheetOpen] = useState3(false);
|
|
581
|
-
const [portalContainer, setPortalContainer] = useState3();
|
|
582
|
-
const useSheet = isMobile || compact;
|
|
583
|
-
const setTriggerElement = useCallback((element) => {
|
|
584
|
-
const themeRoot = element?.closest(".aui-theme-root");
|
|
585
|
-
setPortalContainer(themeRoot instanceof HTMLElement ? themeRoot : void 0);
|
|
586
|
-
}, []);
|
|
587
|
-
const moreButtonClass = auiButtonClass({
|
|
588
|
-
variant: "ghost",
|
|
589
|
-
size: "icon",
|
|
590
|
-
className: "size-7 shrink-0 text-text-secondary hover:bg-transparent hover:text-text-primary"
|
|
591
|
-
});
|
|
592
|
-
if (useSheet) {
|
|
593
|
-
return /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
594
|
-
/* @__PURE__ */ jsx12(
|
|
595
|
-
"button",
|
|
596
|
-
{
|
|
597
|
-
type: "button",
|
|
598
|
-
"aria-label": "Session actions",
|
|
599
|
-
title: "Session actions",
|
|
600
|
-
"aria-haspopup": "dialog",
|
|
601
|
-
"aria-expanded": sheetOpen,
|
|
602
|
-
className: moreButtonClass,
|
|
603
|
-
onClick: () => setSheetOpen(true),
|
|
604
|
-
children: /* @__PURE__ */ jsx12(Icon, { name: "ellipsis", className: "size-3.5" })
|
|
605
|
-
}
|
|
606
|
-
),
|
|
607
|
-
sheetOpen ? /* @__PURE__ */ jsx12(BottomSheet, { open: true, onOpenChange: setSheetOpen, "aria-label": "Session actions", children: /* @__PURE__ */ jsx12("div", { className: "flex flex-col gap-1 p-2", role: "menu", children: /* @__PURE__ */ jsxs8(ThreadListItemPrimitive.Delete, { className: deleteItemClass, onClick: () => setSheetOpen(false), children: [
|
|
608
|
-
/* @__PURE__ */ jsx12(Icon, { name: "trash", className: "size-3.5" }),
|
|
609
|
-
"Delete"
|
|
610
|
-
] }) }) }) : null
|
|
611
|
-
] });
|
|
612
|
-
}
|
|
613
|
-
return /* @__PURE__ */ jsxs8(ThreadListItemMorePrimitive.Root, { sharedFocusGroup: true, children: [
|
|
614
|
-
/* @__PURE__ */ jsx12(
|
|
615
|
-
ThreadListItemMorePrimitive.Trigger,
|
|
616
|
-
{
|
|
617
|
-
ref: setTriggerElement,
|
|
618
|
-
"aria-label": "Session actions",
|
|
619
|
-
title: "Session actions",
|
|
620
|
-
className: moreButtonClass,
|
|
621
|
-
children: /* @__PURE__ */ jsx12(Icon, { name: "ellipsis", className: "size-3.5" })
|
|
622
|
-
}
|
|
623
|
-
),
|
|
624
|
-
/* @__PURE__ */ jsx12(
|
|
625
|
-
ThreadListItemMorePrimitive.Content,
|
|
626
|
-
{
|
|
627
|
-
portalProps: { container: portalContainer },
|
|
628
|
-
align: "end",
|
|
629
|
-
sideOffset: 4,
|
|
630
|
-
className: "font-sans-flex z-50 min-w-[8rem] rounded-md border border-border bg-card-bg p-1 text-text-primary shadow-md",
|
|
631
|
-
children: /* @__PURE__ */ jsx12(ThreadListItemPrimitive.Delete, { asChild: true, children: /* @__PURE__ */ jsxs8(ThreadListItemMorePrimitive.Item, { className: deleteItemClass, children: [
|
|
632
|
-
/* @__PURE__ */ jsx12(Icon, { name: "trash", className: "size-3.5" }),
|
|
633
|
-
"Delete"
|
|
634
|
-
] }) })
|
|
635
|
-
}
|
|
636
|
-
)
|
|
637
|
-
] });
|
|
638
|
-
}
|
|
639
|
-
function ThreadListItemRow({
|
|
640
|
-
onThreadOpen,
|
|
641
|
-
canDeleteSession
|
|
642
|
-
}) {
|
|
643
|
-
const aui = useAui2();
|
|
644
|
-
const shell = useOptionalShellMode();
|
|
645
|
-
const ThreadListRow2 = useSlot("ThreadListRow");
|
|
646
|
-
const id = useAuiState2((s) => s.threadListItem.id);
|
|
647
|
-
const remoteId = useAuiState2((s) => s.threadListItem.remoteId);
|
|
648
|
-
const title = useAuiState2((s) => s.threadListItem.title);
|
|
649
|
-
const lastMessageAt = useAuiState2((s) => s.threadListItem.lastMessageAt);
|
|
650
|
-
const custom = useAuiState2((s) => s.threadListItem.custom);
|
|
651
|
-
const mainThreadId = useAuiState2((s) => s.threads.mainThreadId);
|
|
652
|
-
const agentName = readThreadAgentName(custom);
|
|
653
|
-
const showDelete = canDeleteSession && remoteId != null;
|
|
654
|
-
const sidebarNavOpen = shell?.libraryOpen === true || shell?.sessionsOpen === true || shell?.schedulesOpen === true;
|
|
655
|
-
return /* @__PURE__ */ jsx12(ThreadListItemPrimitive.Root, { className: "min-w-0", children: /* @__PURE__ */ jsx12(
|
|
656
|
-
ThreadListRow2,
|
|
657
|
-
{
|
|
658
|
-
title: title ?? "New Chat",
|
|
659
|
-
active: id === mainThreadId && !sidebarNavOpen,
|
|
660
|
-
agentName,
|
|
661
|
-
lastMessageAt,
|
|
662
|
-
onSelect: () => {
|
|
663
|
-
onThreadOpen?.();
|
|
664
|
-
shell?.setSettingsOpen(false);
|
|
665
|
-
shell?.setLibraryOpen(false);
|
|
666
|
-
shell?.setSessionsOpen(false);
|
|
667
|
-
shell?.setSchedulesOpen(false);
|
|
668
|
-
const sessionMutable = threadListItemIsMutable(custom);
|
|
669
|
-
const sameImmutable = !sessionMutable && shell?.mode.status === "active" && !shell.mode.isMutable && (agentName == null ? shell.mode.agentName == null && shell.mode.agentId == null : shell.mode.agentName === agentName || shell.mode.agentId === agentName);
|
|
670
|
-
const sameMutable = canReuseMutableShell({
|
|
671
|
-
sessionMutable,
|
|
672
|
-
shellMutable: shell?.mode.status === "active" && shell.mode.isMutable,
|
|
673
|
-
...shell?.mode.status === "active" && shell.mode.isMutable ? { shellAgentName: shell.mode.agentName, shellAgentId: shell.mode.agentId } : {},
|
|
674
|
-
remoteId,
|
|
675
|
-
pendingSessionId: shell?.pendingSessionId
|
|
676
|
-
});
|
|
677
|
-
if ((sameImmutable || sameMutable) && remoteId != null) {
|
|
678
|
-
void Promise.resolve(aui.threads().switchToThread(id)).catch(() => void 0);
|
|
679
|
-
return;
|
|
680
|
-
}
|
|
681
|
-
if (remoteId != null) {
|
|
682
|
-
shell?.openHistorySession({
|
|
683
|
-
sessionId: remoteId,
|
|
684
|
-
isMutable: sessionMutable,
|
|
685
|
-
...agentName != null ? { agentName } : {}
|
|
686
|
-
});
|
|
687
|
-
return;
|
|
688
|
-
}
|
|
689
|
-
void Promise.resolve(aui.threads().switchToThread(id)).catch(() => void 0);
|
|
690
|
-
},
|
|
691
|
-
actions: showDelete ? /* @__PURE__ */ jsx12(ThreadListItemDeleteMenu, {}) : void 0
|
|
692
|
-
}
|
|
693
|
-
) });
|
|
694
|
-
}
|
|
695
|
-
function useThreadListIndicesByRecency() {
|
|
696
|
-
const threadIds = useAuiState2((s) => s.threads.threadIds);
|
|
697
|
-
const threadItems = useAuiState2((s) => s.threads.threadItems);
|
|
698
|
-
return useMemo(() => threadListIndicesByRecency({ threadIds, threadItems }), [threadIds, threadItems]);
|
|
699
|
-
}
|
|
700
|
-
function ThreadListItemsByRecency({
|
|
701
|
-
onThreadOpen,
|
|
702
|
-
canDeleteSession
|
|
703
|
-
}) {
|
|
704
|
-
const indices = useThreadListIndicesByRecency();
|
|
705
|
-
const threadIds = useAuiState2((s) => s.threads.threadIds);
|
|
706
|
-
return /* @__PURE__ */ jsx12(Fragment2, { children: indices.map((index) => {
|
|
707
|
-
const key = threadIds[index] ?? String(index);
|
|
708
|
-
return /* @__PURE__ */ jsx12(ThreadListItemByIndexProvider, { index, archived: false, children: /* @__PURE__ */ jsx12(ThreadListItemRow, { onThreadOpen, canDeleteSession }) }, key);
|
|
709
|
-
}) });
|
|
710
|
-
}
|
|
711
|
-
var THREAD_LIST_VIEWPORT_SLOT = "aui_thread-list-viewport";
|
|
712
|
-
var LOAD_MORE_BOTTOM_PX = 80;
|
|
713
|
-
function ChatHistorySection({ children, viewportRef }) {
|
|
714
|
-
const [expanded, setExpanded] = useState3(true);
|
|
715
|
-
const shell = useOptionalShellMode();
|
|
716
|
-
const showFilter = shell?.isLibraryEnabled === true;
|
|
717
|
-
return /* @__PURE__ */ jsxs8("div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
718
|
-
/* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-1 px-1 py-1", children: [
|
|
719
|
-
/* @__PURE__ */ jsxs8(
|
|
720
|
-
"button",
|
|
721
|
-
{
|
|
722
|
-
type: "button",
|
|
723
|
-
"aria-expanded": expanded,
|
|
724
|
-
className: "flex min-w-0 flex-1 items-center gap-1 rounded-md px-1.5 py-1 text-left text-sm font-medium text-text-secondary hover:bg-ghost-button-hover hover:text-text-primary",
|
|
725
|
-
onClick: () => setExpanded((v) => !v),
|
|
726
|
-
children: [
|
|
727
|
-
/* @__PURE__ */ jsx12("span", { className: "truncate", children: "Chat History" }),
|
|
728
|
-
/* @__PURE__ */ jsx12(
|
|
729
|
-
Icon,
|
|
730
|
-
{
|
|
731
|
-
name: "chevron-down",
|
|
732
|
-
className: cn("size-3.5 shrink-0 transition-transform", !expanded && "-rotate-90")
|
|
733
|
-
}
|
|
734
|
-
)
|
|
735
|
-
]
|
|
736
|
-
}
|
|
737
|
-
),
|
|
738
|
-
showFilter ? /* @__PURE__ */ jsx12(AgentHistoryFilterButton, {}) : null
|
|
739
|
-
] }),
|
|
740
|
-
expanded ? /* @__PURE__ */ jsx12(
|
|
741
|
-
"div",
|
|
742
|
-
{
|
|
743
|
-
ref: viewportRef,
|
|
744
|
-
"data-slot": THREAD_LIST_VIEWPORT_SLOT,
|
|
745
|
-
className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",
|
|
746
|
-
children
|
|
747
|
-
}
|
|
748
|
-
) : null
|
|
749
|
-
] });
|
|
750
|
-
}
|
|
751
|
-
function ThreadListContainer({ onThreadOpen } = {}) {
|
|
752
|
-
const aui = useAui2();
|
|
753
|
-
const server = useOptionalServer();
|
|
754
|
-
const isLoading = useAuiState2((s) => s.threads.isLoading);
|
|
755
|
-
const isLoadingMore = useAuiState2((s) => s.threads.isLoadingMore);
|
|
756
|
-
const hasMore = useAuiState2((s) => s.threads.hasMore);
|
|
757
|
-
const threadIds = useAuiState2((s) => s.threads.threadIds);
|
|
758
|
-
const shell = useOptionalShellMode();
|
|
759
|
-
const ThreadListShell2 = useSlot("ThreadListShell");
|
|
760
|
-
const ThreadListNewButton2 = useSlot("ThreadListNewButton");
|
|
761
|
-
const AgentsLibraryButton2 = useSlot("AgentsLibraryButton");
|
|
762
|
-
const SessionsBrowserButton2 = useSlot("SessionsBrowserButton");
|
|
763
|
-
const SchedulesButton2 = useSlot("SchedulesButton");
|
|
764
|
-
const ThreadListRowSkeleton2 = useSlot("ThreadListRowSkeleton");
|
|
765
|
-
const ThreadListEmptyState2 = useSlot("ThreadListEmptyState");
|
|
766
|
-
const viewportRef = useRef2(null);
|
|
767
|
-
const hasMoreRef = useRef2(hasMore);
|
|
768
|
-
const auiRef = useRef2(aui);
|
|
769
|
-
hasMoreRef.current = hasMore;
|
|
770
|
-
auiRef.current = aui;
|
|
771
|
-
const showNewChat = shell?.isNewChatEnabled !== false;
|
|
772
|
-
const isIdle = shell?.mode.status === "idle";
|
|
773
|
-
const canDeleteSession = typeof server?.deleteSession === "function";
|
|
774
|
-
useEffect3(() => {
|
|
775
|
-
if (isIdle || isLoading || isLoadingMore) return;
|
|
776
|
-
const viewport = viewportRef.current;
|
|
777
|
-
if (!viewport) return;
|
|
778
|
-
let cancelled = false;
|
|
779
|
-
const tryLoadMore = () => {
|
|
780
|
-
if (cancelled || !hasMoreRef.current) return;
|
|
781
|
-
if (viewport.clientHeight <= 0) return;
|
|
782
|
-
const remaining = viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;
|
|
783
|
-
if (viewport.scrollHeight > viewport.clientHeight && remaining > LOAD_MORE_BOTTOM_PX) return;
|
|
784
|
-
void auiRef.current.threads().loadMore();
|
|
785
|
-
};
|
|
786
|
-
viewport.addEventListener("scroll", tryLoadMore, { passive: true });
|
|
787
|
-
const resizeObserver = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(() => tryLoadMore());
|
|
788
|
-
if (resizeObserver) {
|
|
789
|
-
resizeObserver.observe(viewport);
|
|
790
|
-
} else {
|
|
791
|
-
window.addEventListener("resize", tryLoadMore);
|
|
792
|
-
}
|
|
793
|
-
tryLoadMore();
|
|
794
|
-
return () => {
|
|
795
|
-
cancelled = true;
|
|
796
|
-
viewport.removeEventListener("scroll", tryLoadMore);
|
|
797
|
-
resizeObserver?.disconnect();
|
|
798
|
-
if (!resizeObserver) {
|
|
799
|
-
window.removeEventListener("resize", tryLoadMore);
|
|
800
|
-
}
|
|
801
|
-
};
|
|
802
|
-
}, [hasMore, isIdle, isLoading, isLoadingMore, threadIds.length]);
|
|
803
|
-
const handleNewChat = () => {
|
|
804
|
-
onThreadOpen?.();
|
|
805
|
-
shell?.setLibraryOpen(false);
|
|
806
|
-
shell?.setSessionsOpen(false);
|
|
807
|
-
if (shell?.isComposerEnabled) {
|
|
808
|
-
shell.openDraft();
|
|
809
|
-
return;
|
|
810
|
-
}
|
|
811
|
-
shell?.setSettingsOpen(false);
|
|
812
|
-
shell?.setSchedulesOpen(false);
|
|
813
|
-
void Promise.resolve(aui.threads().switchToNewThread()).catch(() => void 0);
|
|
814
|
-
};
|
|
815
|
-
let listBody;
|
|
816
|
-
if (isIdle) {
|
|
817
|
-
listBody = /* @__PURE__ */ jsx12(ThreadListEmptyState2, {});
|
|
818
|
-
} else if (isLoading) {
|
|
819
|
-
listBody = /* @__PURE__ */ jsx12(ThreadListRowSkeleton2, {});
|
|
820
|
-
} else if (threadIds.length === 0) {
|
|
821
|
-
listBody = /* @__PURE__ */ jsx12(ThreadListEmptyState2, {});
|
|
822
|
-
} else {
|
|
823
|
-
listBody = /* @__PURE__ */ jsx12(ThreadListPrimitive.Root, { className: "flex min-h-0 flex-col gap-0.5", children: /* @__PURE__ */ jsx12(ThreadListItemsByRecency, { onThreadOpen, canDeleteSession }) });
|
|
824
|
-
}
|
|
825
|
-
return /* @__PURE__ */ jsx12(
|
|
826
|
-
ThreadListShell2,
|
|
827
|
-
{
|
|
828
|
-
header: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1", children: [
|
|
829
|
-
showNewChat ? /* @__PURE__ */ jsx12(ThreadListNewButton2, { onClick: handleNewChat }) : null,
|
|
830
|
-
/* @__PURE__ */ jsx12(AgentsLibraryButton2, {}),
|
|
831
|
-
/* @__PURE__ */ jsx12(SessionsBrowserButton2, {}),
|
|
832
|
-
/* @__PURE__ */ jsx12(SchedulesButton2, {})
|
|
833
|
-
] }),
|
|
834
|
-
children: /* @__PURE__ */ jsxs8(ChatHistorySection, { viewportRef, children: [
|
|
835
|
-
listBody,
|
|
836
|
-
!isIdle && hasMore ? /* @__PURE__ */ jsx12("div", { className: "h-4 shrink-0", "aria-hidden": true }) : null
|
|
837
|
-
] })
|
|
838
|
-
}
|
|
839
|
-
);
|
|
840
|
-
}
|
|
841
|
-
|
|
842
407
|
// src/containers/ToolGroupContainer.tsx
|
|
843
|
-
import { useAuiState as
|
|
844
|
-
import { useState as
|
|
845
|
-
import { jsx as
|
|
408
|
+
import { useAuiState as useAuiState2 } from "@assistant-ui/react";
|
|
409
|
+
import { useState as useState2 } from "react";
|
|
410
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
846
411
|
function ToolGroupContainer({ children, group }) {
|
|
847
412
|
const ToolGroupCard2 = useSlot("ToolGroupCard");
|
|
848
413
|
const toolCallCount = group.indices.length;
|
|
849
|
-
const active =
|
|
414
|
+
const active = useAuiState2((s) => {
|
|
850
415
|
if (s.message.status?.type !== "running") return false;
|
|
851
416
|
const lastIndex = s.message.parts.length - 1;
|
|
852
417
|
if (lastIndex < 0) return false;
|
|
@@ -854,13 +419,13 @@ function ToolGroupContainer({ children, group }) {
|
|
|
854
419
|
const lastGroupIndex = group.indices[group.indices.length - 1];
|
|
855
420
|
return lastGroupIndex !== void 0 && lastIndex >= group.indices[0] && lastIndex <= lastGroupIndex;
|
|
856
421
|
});
|
|
857
|
-
const [expanded, setExpanded] =
|
|
858
|
-
const [prevActive, setPrevActive] =
|
|
422
|
+
const [expanded, setExpanded] = useState2(true);
|
|
423
|
+
const [prevActive, setPrevActive] = useState2(active);
|
|
859
424
|
if (active !== prevActive) {
|
|
860
425
|
setPrevActive(active);
|
|
861
426
|
if (active) setExpanded(true);
|
|
862
427
|
}
|
|
863
|
-
return /* @__PURE__ */
|
|
428
|
+
return /* @__PURE__ */ jsx11(
|
|
864
429
|
ToolGroupCard2,
|
|
865
430
|
{
|
|
866
431
|
toolCallCount,
|
|
@@ -874,20 +439,20 @@ function ToolGroupContainer({ children, group }) {
|
|
|
874
439
|
|
|
875
440
|
// src/containers/TrueForgeUI.tsx
|
|
876
441
|
import { lazy, Suspense } from "react";
|
|
877
|
-
import { jsx as
|
|
442
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
878
443
|
var TrueForgeUIWithRouter = lazy(
|
|
879
|
-
() => import("./TrueForgeUIWithRouter-
|
|
444
|
+
() => import("./TrueForgeUIWithRouter-LKG4XLW6.js").then((m) => ({ default: m.TrueForgeUIWithRouter }))
|
|
880
445
|
);
|
|
881
446
|
function TrueForgeUI(props) {
|
|
882
447
|
const isMcpAuthScreen = typeof window !== "undefined" && new URLSearchParams(window.location.search).get("screenType") === "mcp-auth";
|
|
883
448
|
if (isMcpAuthScreen) {
|
|
884
|
-
return /* @__PURE__ */
|
|
449
|
+
return /* @__PURE__ */ jsx12(SlotsProvider, { overrides: props.overrides, theme: props.theme, children: /* @__PURE__ */ jsx12(PostMcpOauthScreen_default, {}) });
|
|
885
450
|
}
|
|
886
451
|
const { withRouter, ...rest } = props;
|
|
887
452
|
if (withRouter) {
|
|
888
|
-
return /* @__PURE__ */
|
|
453
|
+
return /* @__PURE__ */ jsx12(Suspense, { fallback: /* @__PURE__ */ jsx12(ServerInitLoader, { className: props.className }), children: /* @__PURE__ */ jsx12(TrueForgeUIWithRouter, { ...rest }) });
|
|
889
454
|
}
|
|
890
|
-
return /* @__PURE__ */
|
|
455
|
+
return /* @__PURE__ */ jsx12(TrueForgeUIShell, { ...rest });
|
|
891
456
|
}
|
|
892
457
|
|
|
893
458
|
// src/index.ts
|
|
@@ -896,6 +461,7 @@ import {
|
|
|
896
461
|
trueFoundryAttachmentAdapter,
|
|
897
462
|
useTrueFoundryAgentRuntime,
|
|
898
463
|
useTrueFoundryAgentSpec,
|
|
464
|
+
useTrueFoundryApprovals,
|
|
899
465
|
useTrueFoundryCancel,
|
|
900
466
|
useTrueFoundryDownloadSandboxFile,
|
|
901
467
|
useTrueFoundryHistoryPagination,
|
|
@@ -910,6 +476,7 @@ export {
|
|
|
910
476
|
AgentConfigEditors,
|
|
911
477
|
AgentConfigPanel,
|
|
912
478
|
AgentConfigSection,
|
|
479
|
+
AgentCustomParametersEditor,
|
|
913
480
|
AgentDetailsHeader,
|
|
914
481
|
AgentDetailsPage,
|
|
915
482
|
AgentDetailsTabs,
|
|
@@ -918,6 +485,7 @@ export {
|
|
|
918
485
|
AgentMcpEditorContent,
|
|
919
486
|
AgentMetricCard,
|
|
920
487
|
AgentMetricChart,
|
|
488
|
+
AgentMetricStatistics,
|
|
921
489
|
AgentMetricsContainer,
|
|
922
490
|
AgentMetricsTimeRangeFilter,
|
|
923
491
|
AgentMetricsView,
|
|
@@ -927,8 +495,8 @@ export {
|
|
|
927
495
|
AgentOverviewCard,
|
|
928
496
|
AgentResourceConfigModal,
|
|
929
497
|
AgentResourceEditorContent,
|
|
498
|
+
AgentRuntimeConfigDrawer,
|
|
930
499
|
AgentRuntimeConfigFields,
|
|
931
|
-
AgentRuntimeConfigModal,
|
|
932
500
|
AgentRuntimeEditorContent,
|
|
933
501
|
AgentSessionsFilters,
|
|
934
502
|
AgentSkillsEditorContent,
|
|
@@ -936,6 +504,8 @@ export {
|
|
|
936
504
|
AgentStepsContainer,
|
|
937
505
|
AgentsLibrary,
|
|
938
506
|
AgentsLibraryButton,
|
|
507
|
+
ApprovalNavBanner,
|
|
508
|
+
ApprovalNavContainer,
|
|
939
509
|
AskUserContainer,
|
|
940
510
|
AssistantMessageBubble,
|
|
941
511
|
AssistantMessageContainer,
|
|
@@ -948,6 +518,7 @@ export {
|
|
|
948
518
|
AvatarImage,
|
|
949
519
|
BottomSheet,
|
|
950
520
|
BrandLogo,
|
|
521
|
+
Button,
|
|
951
522
|
CenteredModal,
|
|
952
523
|
ChatFileDownload,
|
|
953
524
|
ClearChatButton,
|
|
@@ -967,6 +538,7 @@ export {
|
|
|
967
538
|
DraftAgentConfigTrigger,
|
|
968
539
|
DraftCapabilitiesPanel,
|
|
969
540
|
DraftCatalogProvider,
|
|
541
|
+
DraftComposerActionsMenu,
|
|
970
542
|
DraftComposerLeftSection,
|
|
971
543
|
DraftComposerRightSection,
|
|
972
544
|
DraftCompositeSelector,
|
|
@@ -988,16 +560,17 @@ export {
|
|
|
988
560
|
MonacoEditorCore,
|
|
989
561
|
OpenUiFenceBlock,
|
|
990
562
|
PRESETS,
|
|
563
|
+
PermissionGuard,
|
|
991
564
|
PopoverSelect,
|
|
992
565
|
PostMcpOauthScreen_default as PostMcpOauthScreen,
|
|
993
566
|
ReasoningContainer,
|
|
567
|
+
ResponsiveDropdownMenu,
|
|
994
568
|
ResumeUnavailable,
|
|
995
569
|
ResumeUnavailableContainer,
|
|
996
570
|
SandboxArtifactDownload,
|
|
997
571
|
SandboxToolCallCard,
|
|
998
572
|
SaveAgentButton,
|
|
999
573
|
SaveAgentForm,
|
|
1000
|
-
SaveAgentFormFields,
|
|
1001
574
|
ScheduleFormDrawer,
|
|
1002
575
|
ScheduleFormFields,
|
|
1003
576
|
ScheduleLastRunsCell,
|
|
@@ -1053,6 +626,7 @@ export {
|
|
|
1053
626
|
TrueForgeUI,
|
|
1054
627
|
TrueFoundryChatProvider,
|
|
1055
628
|
USER_MESSAGE_ATTACHMENT_PREVIEW_REM,
|
|
629
|
+
UserAvatar,
|
|
1056
630
|
UserEditComposerContainer,
|
|
1057
631
|
UserMessageActionBar,
|
|
1058
632
|
UserMessageBubble,
|
|
@@ -1062,6 +636,7 @@ export {
|
|
|
1062
636
|
computeAgentStepsSplit,
|
|
1063
637
|
createTrueFoundryServer,
|
|
1064
638
|
defaultSlots,
|
|
639
|
+
findSubAgentAncestorsForApproval,
|
|
1065
640
|
getErrorMessage,
|
|
1066
641
|
isCreateAgentMetadataValue,
|
|
1067
642
|
libraryAgentId,
|
|
@@ -1077,10 +652,12 @@ export {
|
|
|
1077
652
|
trueFoundryAttachmentAdapter,
|
|
1078
653
|
useAgentMetricsServer,
|
|
1079
654
|
useAgentSessionsServer,
|
|
655
|
+
useApprovalNav,
|
|
1080
656
|
useAui,
|
|
1081
657
|
useAuiState,
|
|
1082
658
|
useBrand,
|
|
1083
659
|
useBrandName,
|
|
660
|
+
useCanCreateAgent,
|
|
1084
661
|
useCatalogServer,
|
|
1085
662
|
useComposerBusyState,
|
|
1086
663
|
useComposerPauseView,
|
|
@@ -1091,10 +668,13 @@ export {
|
|
|
1091
668
|
useOptionalAgentSessionsServer,
|
|
1092
669
|
useOptionalCatalogServer,
|
|
1093
670
|
useOptionalContentClassNames,
|
|
671
|
+
useOptionalCurrentUser,
|
|
1094
672
|
useOptionalCustomActionRenderers,
|
|
673
|
+
useOptionalPermissionsServer,
|
|
1095
674
|
useOptionalScheduleServer,
|
|
1096
675
|
useOptionalServer,
|
|
1097
676
|
useOptionalShellMode,
|
|
677
|
+
useResourcePermissions,
|
|
1098
678
|
useScheduleServer,
|
|
1099
679
|
useServer,
|
|
1100
680
|
useServerCapabilities,
|
|
@@ -1107,6 +687,7 @@ export {
|
|
|
1107
687
|
useToasterOptional,
|
|
1108
688
|
useTrueFoundryAgentRuntime,
|
|
1109
689
|
useTrueFoundryAgentSpec,
|
|
690
|
+
useTrueFoundryApprovals,
|
|
1110
691
|
useTrueFoundryCancel,
|
|
1111
692
|
useTrueFoundryDownloadSandboxFile,
|
|
1112
693
|
useTrueFoundryHistoryPagination,
|