@truefoundry/trueforge-ui 0.3.0 → 0.4.0-rc.0
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 +27 -0
- package/NOTICE +1 -1
- package/README.md +26 -89
- package/dist/{AgentCodeSnippets-EK7KMIY2.js → AgentCodeSnippets-BPC6TD7K.js} +7 -7
- package/dist/AgentMetricChart-T6DZZ37Y.js +15 -0
- package/dist/{AgentOverview-5UPMYHT2.js → AgentOverview-BFU7EO4Y.js} +7 -7
- package/dist/{AgentSessionEventTimeline-V6NPCYMW.js → AgentSessionEventTimeline-ATVBTYDF.js} +7 -7
- package/dist/{AgentSessionEventTimelineChart-YQWZBQCG.js → AgentSessionEventTimelineChart-H577STKW.js} +7 -7
- package/dist/{AgentSessions-WNYVVB6Q.js → AgentSessions-GDLBXFIK.js} +8 -8
- package/dist/{ConnectorSettings-O4I24244.js → ConnectorSettings-FYNF6J3F.js} +7 -7
- package/dist/{DockLayout-JMBZVMGB.js → DockLayout-SGUOMZ5E.js} +10 -10
- package/dist/{DrawerLayout-E6G3IF6R.js → DrawerLayout-MJJYQDCW.js} +11 -11
- package/dist/{ModelSettings-ZVXMXIU4.js → ModelSettings-6EW7U2MP.js} +9 -9
- package/dist/ModelSettings-6EW7U2MP.js.map +1 -0
- package/dist/OpenUiFenceBlock-BZPFNXWZ.js +9 -0
- package/dist/{SandboxSettings-H6BA2DJQ.js → SandboxSettings-HQVBGHXZ.js} +7 -7
- package/dist/SchedulesPage-ZO3PJY4J.js +15 -0
- package/dist/{SettingsBuilder-VA3VGWZC.js → SettingsBuilder-FODMI7HG.js} +20 -11
- package/dist/SettingsBuilder-FODMI7HG.js.map +1 -0
- package/dist/{ShellRouteSync-ZT4PBE6T.js → ShellRouteSync-4I5BP2VY.js} +4 -4
- package/dist/{SidebarLayout-ICXEN7ZL.js → SidebarLayout-ZLWG2YGO.js} +12 -12
- package/dist/{SkillSettings-F5JGGFXR.js → SkillSettings-AFSAOU6O.js} +7 -7
- package/dist/{TrueForgeUIWithRouter-MKJ7IEWG.js → TrueForgeUIWithRouter-RQX5XWGI.js} +9 -9
- package/dist/WebSearchSettings-BW4CWGRR.js +322 -0
- package/dist/WebSearchSettings-BW4CWGRR.js.map +1 -0
- package/dist/{WidgetLayout-J7ZRW3V3.js → WidgetLayout-WIPKUIL4.js} +10 -10
- package/dist/chunk-6UACSIIY.js +587 -0
- package/dist/chunk-6UACSIIY.js.map +1 -0
- package/dist/{chunk-U7WONUMR.js → chunk-7S7A3PNP.js} +6 -4
- package/dist/chunk-7S7A3PNP.js.map +1 -0
- package/dist/{chunk-VTOW2UIX.js → chunk-GHXA46A2.js} +78 -43
- package/dist/chunk-GHXA46A2.js.map +1 -0
- package/dist/{chunk-7AAO4UDQ.js → chunk-HCGDDQ4G.js} +5 -5
- package/dist/chunk-HCGDDQ4G.js.map +1 -0
- package/dist/{chunk-SCIEO6CF.js → chunk-HDMBSLDC.js} +2 -2
- package/dist/{chunk-KZK2PQ4A.js → chunk-MLMR26WQ.js} +244 -152
- package/dist/chunk-MLMR26WQ.js.map +1 -0
- package/dist/{chunk-BREN6OSX.js → chunk-Q22RHDYS.js} +42 -61
- package/dist/chunk-Q22RHDYS.js.map +1 -0
- package/dist/{chunk-WFIA627Q.js → chunk-QKFMAQ7O.js} +2 -2
- package/dist/{chunk-7VWUB5OV.js → chunk-TFQWCBFQ.js} +12 -12
- package/dist/chunk-TFQWCBFQ.js.map +1 -0
- package/dist/{chunk-JEAULQNF.js → chunk-TJGGIEF6.js} +3 -3
- package/dist/{chunk-KDCVFHPZ.js → chunk-TX6PB3DY.js} +3 -3
- package/dist/{chunk-MEW7WZ7Q.js → chunk-VBZXCX7Y.js} +253 -99
- package/dist/chunk-VBZXCX7Y.js.map +1 -0
- package/dist/{chunk-QI4HGU5E.js → chunk-Y47LJKXD.js} +13 -19
- package/dist/{chunk-QI4HGU5E.js.map → chunk-Y47LJKXD.js.map} +1 -1
- package/dist/{chunk-MB7Z5FPI.js → chunk-YN5ZBBQM.js} +9 -9
- package/dist/{chunk-UN7WPTTK.js → chunk-ZYJ2SBF7.js} +2 -2
- package/dist/createTrueForgeServer-DiSooQdh.d.ts +42 -0
- package/dist/index.d.ts +45 -39
- package/dist/index.js +43 -43
- package/dist/index.js.map +1 -1
- package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +57 -894
- package/dist/plugins/trueforge-agent-server-adapter/index.js +110 -7
- package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +8 -7
- package/dist/AgentMetricChart-UZCYOC4M.js +0 -15
- package/dist/ModelSettings-ZVXMXIU4.js.map +0 -1
- package/dist/OpenUiFenceBlock-F3YVDKAG.js +0 -9
- package/dist/SchedulesPage-FS2QZ5KB.js +0 -15
- package/dist/SettingsBuilder-VA3VGWZC.js.map +0 -1
- package/dist/chunk-7AAO4UDQ.js.map +0 -1
- package/dist/chunk-7VWUB5OV.js.map +0 -1
- package/dist/chunk-BREN6OSX.js.map +0 -1
- package/dist/chunk-KZK2PQ4A.js.map +0 -1
- package/dist/chunk-MEW7WZ7Q.js.map +0 -1
- package/dist/chunk-NXK4XW4U.js +0 -587
- package/dist/chunk-NXK4XW4U.js.map +0 -1
- package/dist/chunk-U7WONUMR.js.map +0 -1
- package/dist/chunk-VTOW2UIX.js.map +0 -1
- package/dist/createTrueFoundryServer-B_FYhSdn.d.ts +0 -42
- /package/dist/{AgentCodeSnippets-EK7KMIY2.js.map → AgentCodeSnippets-BPC6TD7K.js.map} +0 -0
- /package/dist/{AgentMetricChart-UZCYOC4M.js.map → AgentMetricChart-T6DZZ37Y.js.map} +0 -0
- /package/dist/{AgentOverview-5UPMYHT2.js.map → AgentOverview-BFU7EO4Y.js.map} +0 -0
- /package/dist/{AgentSessionEventTimeline-V6NPCYMW.js.map → AgentSessionEventTimeline-ATVBTYDF.js.map} +0 -0
- /package/dist/{AgentSessionEventTimelineChart-YQWZBQCG.js.map → AgentSessionEventTimelineChart-H577STKW.js.map} +0 -0
- /package/dist/{AgentSessions-WNYVVB6Q.js.map → AgentSessions-GDLBXFIK.js.map} +0 -0
- /package/dist/{ConnectorSettings-O4I24244.js.map → ConnectorSettings-FYNF6J3F.js.map} +0 -0
- /package/dist/{DockLayout-JMBZVMGB.js.map → DockLayout-SGUOMZ5E.js.map} +0 -0
- /package/dist/{DrawerLayout-E6G3IF6R.js.map → DrawerLayout-MJJYQDCW.js.map} +0 -0
- /package/dist/{OpenUiFenceBlock-F3YVDKAG.js.map → OpenUiFenceBlock-BZPFNXWZ.js.map} +0 -0
- /package/dist/{SandboxSettings-H6BA2DJQ.js.map → SandboxSettings-HQVBGHXZ.js.map} +0 -0
- /package/dist/{SchedulesPage-FS2QZ5KB.js.map → SchedulesPage-ZO3PJY4J.js.map} +0 -0
- /package/dist/{ShellRouteSync-ZT4PBE6T.js.map → ShellRouteSync-4I5BP2VY.js.map} +0 -0
- /package/dist/{SidebarLayout-ICXEN7ZL.js.map → SidebarLayout-ZLWG2YGO.js.map} +0 -0
- /package/dist/{SkillSettings-F5JGGFXR.js.map → SkillSettings-AFSAOU6O.js.map} +0 -0
- /package/dist/{TrueForgeUIWithRouter-MKJ7IEWG.js.map → TrueForgeUIWithRouter-RQX5XWGI.js.map} +0 -0
- /package/dist/{WidgetLayout-J7ZRW3V3.js.map → WidgetLayout-WIPKUIL4.js.map} +0 -0
- /package/dist/{chunk-SCIEO6CF.js.map → chunk-HDMBSLDC.js.map} +0 -0
- /package/dist/{chunk-WFIA627Q.js.map → chunk-QKFMAQ7O.js.map} +0 -0
- /package/dist/{chunk-JEAULQNF.js.map → chunk-TJGGIEF6.js.map} +0 -0
- /package/dist/{chunk-KDCVFHPZ.js.map → chunk-TX6PB3DY.js.map} +0 -0
- /package/dist/{chunk-MB7Z5FPI.js.map → chunk-YN5ZBBQM.js.map} +0 -0
- /package/dist/{chunk-UN7WPTTK.js.map → chunk-ZYJ2SBF7.js.map} +0 -0
|
@@ -24,11 +24,11 @@ import {
|
|
|
24
24
|
preloadMonaco,
|
|
25
25
|
useThemeMode,
|
|
26
26
|
useToaster
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-MLMR26WQ.js";
|
|
28
28
|
import {
|
|
29
29
|
DraftCatalogProvider,
|
|
30
30
|
useDraftCatalog
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-TX6PB3DY.js";
|
|
32
32
|
import {
|
|
33
33
|
DEFAULT_AGENT_CONFIG,
|
|
34
34
|
ServerProvider,
|
|
@@ -42,21 +42,21 @@ import {
|
|
|
42
42
|
useShellMode,
|
|
43
43
|
withCapabilitiesSandbox,
|
|
44
44
|
withCapabilitiesWebSearch
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-7S7A3PNP.js";
|
|
46
46
|
import {
|
|
47
47
|
useAui,
|
|
48
48
|
useAuiState
|
|
49
49
|
} from "./chunk-M6MHLVSO.js";
|
|
50
50
|
import {
|
|
51
51
|
cn
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-6UACSIIY.js";
|
|
53
53
|
|
|
54
|
-
// src/containers/
|
|
54
|
+
// src/containers/TrueForgeChatProvider.tsx
|
|
55
55
|
import { AssistantRuntimeProvider, useAuiState as useAuiState2 } from "@assistant-ui/react";
|
|
56
56
|
import {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
} from "@truefoundry/assistant-ui-runtime";
|
|
57
|
+
trueForgeAttachmentAdapter,
|
|
58
|
+
useTrueForgeAgentRuntime
|
|
59
|
+
} from "@truefoundry/trueforge-assistant-ui-runtime";
|
|
60
60
|
import { useCallback, useMemo } from "react";
|
|
61
61
|
import { jsx } from "react/jsx-runtime";
|
|
62
62
|
function ActiveSessionPermissionScope({
|
|
@@ -118,7 +118,7 @@ function ChatRuntimeScope({
|
|
|
118
118
|
},
|
|
119
119
|
[reportError]
|
|
120
120
|
);
|
|
121
|
-
const runtime =
|
|
121
|
+
const runtime = useTrueForgeAgentRuntime({
|
|
122
122
|
server: historyServer,
|
|
123
123
|
agent,
|
|
124
124
|
agentName,
|
|
@@ -128,12 +128,12 @@ function ChatRuntimeScope({
|
|
|
128
128
|
onError: resolvedOnError,
|
|
129
129
|
adapters: {
|
|
130
130
|
...adapters,
|
|
131
|
-
attachments: adapters?.attachments ??
|
|
131
|
+
attachments: adapters?.attachments ?? trueForgeAttachmentAdapter
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
134
|
return /* @__PURE__ */ jsx(AssistantRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx(ActiveSessionPermissionScope, { locallyCreatedSessionIds, children }) });
|
|
135
135
|
}
|
|
136
|
-
function
|
|
136
|
+
function TrueForgeChatProvider(props) {
|
|
137
137
|
const { server, initialSessionId, adapters, onError, children, agent, agentName, listSessionsAgentId } = props;
|
|
138
138
|
const stableServer = useMemo(() => server, [server]);
|
|
139
139
|
return /* @__PURE__ */ jsx(ToasterProvider, { children: /* @__PURE__ */ jsx(
|
|
@@ -156,7 +156,7 @@ import { lazy, Suspense, useCallback as useCallback2, useEffect as useEffect6, u
|
|
|
156
156
|
import { ThinkingOrb } from "thinking-orbs";
|
|
157
157
|
|
|
158
158
|
// src/atoms/draft/DraftSpecPreferenceBridge.tsx
|
|
159
|
-
import {
|
|
159
|
+
import { useTrueForgeAgentSpec, useTrueForgeUpdateAgentSpec } from "@truefoundry/trueforge-assistant-ui-runtime";
|
|
160
160
|
import { useEffect } from "react";
|
|
161
161
|
function readDraftSandboxEnabled(spec) {
|
|
162
162
|
if (spec.config === void 0) return void 0;
|
|
@@ -247,8 +247,8 @@ function reconcileDraftWebSearch({
|
|
|
247
247
|
}
|
|
248
248
|
function DraftSpecPreferenceBridge() {
|
|
249
249
|
const { mode, pendingSessionId, rememberDraftSpec } = useShellMode();
|
|
250
|
-
const { agentSpec } =
|
|
251
|
-
const updateAgentSpec =
|
|
250
|
+
const { agentSpec } = useTrueForgeAgentSpec();
|
|
251
|
+
const updateAgentSpec = useTrueForgeUpdateAgentSpec();
|
|
252
252
|
const capabilities = useServerCapabilities();
|
|
253
253
|
const sandboxEnabled = capabilities?.sandbox.enabled;
|
|
254
254
|
const webSearchEnabled = capabilities?.webSearch?.enabled;
|
|
@@ -362,7 +362,7 @@ function withSessionListCache({
|
|
|
362
362
|
server,
|
|
363
363
|
cache
|
|
364
364
|
}) {
|
|
365
|
-
const { deleteSession } = server;
|
|
365
|
+
const { deleteSession, renameSession } = server;
|
|
366
366
|
return {
|
|
367
367
|
...server,
|
|
368
368
|
listSessions(request) {
|
|
@@ -392,12 +392,17 @@ function withSessionListCache({
|
|
|
392
392
|
await deleteSession.call(server, request);
|
|
393
393
|
cache.clear();
|
|
394
394
|
}
|
|
395
|
+
} : {},
|
|
396
|
+
...renameSession != null ? {
|
|
397
|
+
renameSession: async (request) => {
|
|
398
|
+
await renameSession.call(server, request);
|
|
399
|
+
cache.clear();
|
|
400
|
+
}
|
|
395
401
|
} : {}
|
|
396
402
|
};
|
|
397
403
|
}
|
|
398
404
|
|
|
399
405
|
// src/containers/useResolvedServer.ts
|
|
400
|
-
import { createTrueFoundryAgentUIServer } from "@truefoundry/assistant-ui-runtime/plugins/truefoundry-agent-server-adapter";
|
|
401
406
|
import { useEffect as useEffect5, useState } from "react";
|
|
402
407
|
var DEFAULT_CAPABILITIES = {
|
|
403
408
|
data: {
|
|
@@ -408,7 +413,7 @@ var DEFAULT_CAPABILITIES = {
|
|
|
408
413
|
}
|
|
409
414
|
};
|
|
410
415
|
function isBuiltInConfig(config) {
|
|
411
|
-
return typeof config === "object" && config !== null && "type" in config &&
|
|
416
|
+
return typeof config === "object" && config !== null && "type" in config && config.type === "trueforge";
|
|
412
417
|
}
|
|
413
418
|
function hasGetCapabilities(server) {
|
|
414
419
|
return typeof Reflect.get(server, "getCapabilities") === "function";
|
|
@@ -432,13 +437,9 @@ function isAgentUIServer(value) {
|
|
|
432
437
|
function useResolvedServer(config, onError) {
|
|
433
438
|
const builtIn = isBuiltInConfig(config) ? config : null;
|
|
434
439
|
const directServer = isBuiltInConfig(config) ? null : config;
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
const gatewayPlaneURL = builtIn?.type === "truefoundry" ? builtIn.gatewayPlaneURL ?? "" : "";
|
|
439
|
-
const trueforgeBaseUrl = builtIn?.type === "trueforge" ? builtIn.baseUrl ?? "" : "";
|
|
440
|
-
const trueforgeToken = builtIn?.type === "trueforge" ? builtIn.token ?? "" : "";
|
|
441
|
-
const trueforgeFetch = builtIn?.type === "trueforge" ? builtIn.fetch : void 0;
|
|
440
|
+
const trueforgeBaseUrl = builtIn?.baseUrl ?? "";
|
|
441
|
+
const trueforgeToken = builtIn?.token ?? "";
|
|
442
|
+
const trueforgeFetch = builtIn?.fetch;
|
|
442
443
|
const catalog = builtIn?.catalog;
|
|
443
444
|
const permissions = builtIn?.permissions;
|
|
444
445
|
const [state, setState] = useState(() => {
|
|
@@ -455,29 +456,21 @@ function useResolvedServer(config, onError) {
|
|
|
455
456
|
let cancelled = false;
|
|
456
457
|
setState({ status: "loading", server: null, error: null });
|
|
457
458
|
const resolve = async () => {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
...permissions != null ? { permissions } : {}
|
|
466
|
-
});
|
|
467
|
-
}
|
|
468
|
-
const runtimeServer2 = await createTrueFoundryAgentUIServer({
|
|
469
|
-
apiKey,
|
|
470
|
-
cpURL: controlPlaneURL,
|
|
471
|
-
...gatewayPlaneURL ? { gatewayURL: gatewayPlaneURL } : {}
|
|
459
|
+
const { createTrueForgeAgentUIServer } = await import("./plugins/trueforge-agent-server-adapter/index.js");
|
|
460
|
+
return createTrueForgeAgentUIServer({
|
|
461
|
+
...trueforgeBaseUrl ? { baseUrl: trueforgeBaseUrl } : {},
|
|
462
|
+
...trueforgeToken ? { token: trueforgeToken } : {},
|
|
463
|
+
...trueforgeFetch !== void 0 ? { fetch: trueforgeFetch } : {},
|
|
464
|
+
...catalog != null ? { catalog } : {},
|
|
465
|
+
...permissions != null ? { permissions } : {}
|
|
472
466
|
});
|
|
473
|
-
return toAgentUIServer(runtimeServer2, catalog, permissions);
|
|
474
467
|
};
|
|
475
468
|
void resolve().then((server) => {
|
|
476
469
|
if (cancelled) return;
|
|
477
470
|
try {
|
|
478
471
|
setState({
|
|
479
472
|
status: "ready",
|
|
480
|
-
server:
|
|
473
|
+
server: toAgentUIServer(server, void 0, void 0),
|
|
481
474
|
error: null
|
|
482
475
|
});
|
|
483
476
|
} catch (error) {
|
|
@@ -492,29 +485,17 @@ function useResolvedServer(config, onError) {
|
|
|
492
485
|
return () => {
|
|
493
486
|
cancelled = true;
|
|
494
487
|
};
|
|
495
|
-
}, [
|
|
496
|
-
type,
|
|
497
|
-
directServer,
|
|
498
|
-
apiKey,
|
|
499
|
-
controlPlaneURL,
|
|
500
|
-
gatewayPlaneURL,
|
|
501
|
-
trueforgeBaseUrl,
|
|
502
|
-
trueforgeToken,
|
|
503
|
-
trueforgeFetch,
|
|
504
|
-
catalog,
|
|
505
|
-
permissions,
|
|
506
|
-
onError
|
|
507
|
-
]);
|
|
488
|
+
}, [directServer, trueforgeBaseUrl, trueforgeToken, trueforgeFetch, catalog, permissions, onError]);
|
|
508
489
|
return state;
|
|
509
490
|
}
|
|
510
491
|
|
|
511
492
|
// src/containers/TrueForgeUIShell.tsx
|
|
512
493
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
513
|
-
var SidebarLayout = lazy(() => import("./SidebarLayout-
|
|
514
|
-
var DrawerLayout = lazy(() => import("./DrawerLayout-
|
|
515
|
-
var DockLayout = lazy(() => import("./DockLayout-
|
|
516
|
-
var WidgetLayout = lazy(() => import("./WidgetLayout-
|
|
517
|
-
var ShellRouteSync = lazy(() => import("./ShellRouteSync-
|
|
494
|
+
var SidebarLayout = lazy(() => import("./SidebarLayout-ZLWG2YGO.js").then((m) => ({ default: m.SidebarLayout })));
|
|
495
|
+
var DrawerLayout = lazy(() => import("./DrawerLayout-MJJYQDCW.js").then((m) => ({ default: m.DrawerLayout })));
|
|
496
|
+
var DockLayout = lazy(() => import("./DockLayout-SGUOMZ5E.js").then((m) => ({ default: m.DockLayout })));
|
|
497
|
+
var WidgetLayout = lazy(() => import("./WidgetLayout-WIPKUIL4.js").then((m) => ({ default: m.WidgetLayout })));
|
|
498
|
+
var ShellRouteSync = lazy(() => import("./ShellRouteSync-4I5BP2VY.js").then((m) => ({ default: m.ShellRouteSync })));
|
|
518
499
|
function LayoutFallback({ className }) {
|
|
519
500
|
return /* @__PURE__ */ jsx2(
|
|
520
501
|
"div",
|
|
@@ -659,7 +640,7 @@ function ChatProviderFromShell({
|
|
|
659
640
|
};
|
|
660
641
|
}, [mode, draftDefaultAgentSpec, pendingSessionId]);
|
|
661
642
|
return /* @__PURE__ */ jsx2(DraftCatalogProvider, { children: /* @__PURE__ */ jsx2(
|
|
662
|
-
|
|
643
|
+
TrueForgeChatProvider,
|
|
663
644
|
{
|
|
664
645
|
...providerRest,
|
|
665
646
|
server: runtimeServer2,
|
|
@@ -732,8 +713,8 @@ function TrueForgeUIShell(props) {
|
|
|
732
713
|
}
|
|
733
714
|
|
|
734
715
|
export {
|
|
735
|
-
|
|
716
|
+
TrueForgeChatProvider,
|
|
736
717
|
ServerInitLoader,
|
|
737
718
|
TrueForgeUIShell
|
|
738
719
|
};
|
|
739
|
-
//# sourceMappingURL=chunk-
|
|
720
|
+
//# sourceMappingURL=chunk-Q22RHDYS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/containers/TrueForgeChatProvider.tsx","../src/containers/TrueForgeUIShell.tsx","../src/atoms/draft/DraftSpecPreferenceBridge.tsx","../src/routing/HistorySessionSwitchBridge.tsx","../src/routing/LibrarySessionShareBoot.tsx","../src/routing/RemoteIdRouteBridge.tsx","../src/server/sessionListCache.ts","../src/containers/useResolvedServer.ts"],"sourcesContent":["'use client';\n\nimport { AssistantRuntimeProvider, useAuiState } from '@assistant-ui/react';\nimport {\n trueForgeAttachmentAdapter,\n useTrueForgeAgentRuntime,\n type TrueForgeAgentConfig,\n type UseTrueForgeAgentRuntimeOptions,\n} from '@truefoundry/trueforge-assistant-ui-runtime';\nimport { useCallback, useMemo, type ReactNode } from 'react';\n\nimport { sessionIsCreateAgent } from '../atoms/lib/sessionCreateAgent.js';\nimport { notifyComposerBusyFailure } from '../hooks/useComposerBusyState.js';\nimport { ActiveSessionPermissionsProvider } from '../hooks/useResourcePermissions.js';\nimport type { AgentUIServer } from '../server/types.js';\nimport { ToasterProvider, useToaster } from './ToasterContainer.js';\n\ntype RuntimeAdapters = NonNullable<UseTrueForgeAgentRuntimeOptions['adapters']>;\n\nfunction ActiveSessionPermissionScope({\n locallyCreatedSessionIds,\n children,\n}: {\n locallyCreatedSessionIds: ReadonlySet<string>;\n children: ReactNode;\n}) {\n const remoteId = useAuiState(state => state.threadListItem.remoteId);\n return (\n <ActiveSessionPermissionsProvider\n sessionId={remoteId}\n assumeManage={remoteId != null && locallyCreatedSessionIds.has(remoteId)}\n >\n {children}\n </ActiveSessionPermissionsProvider>\n );\n}\n\nfunction runtimeServer({\n server,\n locallyCreatedSessionIds,\n}: {\n server: AgentUIServer;\n locallyCreatedSessionIds: Set<string>;\n}): AgentUIServer {\n return {\n ...server,\n async createSession(request) {\n const session = await server.createSession(request);\n locallyCreatedSessionIds.add(session.id);\n return session;\n },\n async listSessions(request) {\n const result = await server.listSessions(request);\n return {\n ...result,\n data: result.data.filter(session => !sessionIsCreateAgent(session)),\n };\n },\n };\n}\n\nexport type TrueForgeChatProviderProps = {\n server: AgentUIServer;\n initialSessionId?: string;\n adapters?: RuntimeAdapters;\n onError?: (error: unknown) => void;\n children: ReactNode;\n /** Discriminated agent source. Prefer over legacy `agentName`. */\n agent?: TrueForgeAgentConfig;\n /** Legacy named-agent shorthand. Prefer `agent: { mode: \"named\", agentName }`. */\n agentName?: string;\n /** Forwarded to `listSessions({ agentId })` for history filtering. */\n listSessionsAgentId?: string;\n};\n\nfunction ChatRuntimeScope({\n server,\n agent,\n agentName,\n listSessionsAgentId,\n initialSessionId,\n adapters,\n onError,\n children,\n}: {\n server: AgentUIServer;\n agent?: TrueForgeAgentConfig;\n agentName?: string;\n listSessionsAgentId?: string;\n initialSessionId?: string;\n adapters?: RuntimeAdapters;\n onError?: (error: unknown) => void;\n children: ReactNode;\n}) {\n const { showError } = useToaster();\n const reportError = onError ?? showError;\n const localSessionState = useMemo(() => ({ server, ids: new Set<string>() }), [server]);\n const locallyCreatedSessionIds = localSessionState.ids;\n const historyServer = useMemo(\n () => runtimeServer({ server, locallyCreatedSessionIds }),\n [locallyCreatedSessionIds, server],\n );\n // composer().send() is void and swallows onNew rejections; clear optimistic\n // busy when the runtime reports a pre-stream failure (e.g. createSession).\n const resolvedOnError = useCallback(\n (error: unknown) => {\n notifyComposerBusyFailure();\n reportError(error);\n },\n [reportError],\n );\n\n const runtime = useTrueForgeAgentRuntime({\n server: historyServer as never,\n agent,\n agentName,\n listSessionsAgentId,\n listSessionsCreatedByMe: true,\n initialSessionId,\n onError: resolvedOnError,\n adapters: {\n ...adapters,\n attachments: adapters?.attachments ?? trueForgeAttachmentAdapter,\n },\n });\n\n return (\n <AssistantRuntimeProvider runtime={runtime as never}>\n <ActiveSessionPermissionScope locallyCreatedSessionIds={locallyCreatedSessionIds}>\n {children}\n </ActiveSessionPermissionScope>\n </AssistantRuntimeProvider>\n );\n}\n\n/**\n * Chat shell: wires `useTrueForgeAgentRuntime` from `server` and provides\n * assistant-ui + error toasts.\n */\nexport function TrueForgeChatProvider(props: TrueForgeChatProviderProps) {\n const { server, initialSessionId, adapters, onError, children, agent, agentName, listSessionsAgentId } = props;\n\n const stableServer = useMemo(() => server, [server]);\n\n return (\n <ToasterProvider>\n <ChatRuntimeScope\n server={stableServer}\n agent={agent}\n agentName={agentName}\n listSessionsAgentId={listSessionsAgentId}\n initialSessionId={initialSessionId}\n adapters={adapters}\n onError={onError}\n >\n {children}\n </ChatRuntimeScope>\n </ToasterProvider>\n );\n}\n","'use client';\n\nimport type {\n TrueForgeAgentConfig,\n UseTrueForgeAgentRuntimeOptions,\n} from '@truefoundry/trueforge-assistant-ui-runtime';\nimport { lazy, Suspense, useCallback, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { ThinkingOrb } from 'thinking-orbs';\n\nimport { AgentConfigInstructionsProvider } from '../atoms/draft/AgentConfigInstructionsContext.js';\nimport { DraftCatalogProvider } from '../atoms/draft/DraftCatalogProvider.js';\nimport { DraftSpecPreferenceBridge } from '../atoms/draft/DraftSpecPreferenceBridge.js';\nimport { cn } from '../atoms/lib/cn.js';\nimport { IS_CREATE_AGENT_METADATA_KEY, isCreateAgentMetadataValue } from '../atoms/lib/sessionCreateAgent.js';\nimport { preloadMonaco } from '../atoms/monacoPreload.js';\nimport { CurrentUserProvider, type CurrentUser } from '../contexts/CurrentUserContext.js';\nimport { WidgetVisibilityProvider } from '../layouts/WidgetVisibilityContext.js';\nimport { HistorySessionSwitchBridge } from '../routing/HistorySessionSwitchBridge.js';\nimport { LibrarySessionShareBoot } from '../routing/LibrarySessionShareBoot.js';\nimport { RemoteIdRouteBridge } from '../routing/RemoteIdRouteBridge.js';\nimport { ResolvedRoutesProvider } from '../routing/ResolvedRoutesContext.js';\nimport type { ResolvedRoutes, RoutesConfig } from '../routing/types.js';\nimport { CustomActionRenderersProvider, type CustomActionRenderers } from '../server/CustomActionRenderersContext.js';\nimport { ServerProvider } from '../server/ServerContext.js';\nimport { createSessionListCache, withSessionListCache } from '../server/sessionListCache.js';\nimport { DEFAULT_AGENT_CONFIG, ShellModeProvider, useShellMode, type AgentConfig } from '../server/ShellModeContext.js';\nimport type { TrueForgeServerConfig } from '../server/TrueForgeServerConfig.js';\nimport type { AgentUIServer, CreateSessionRequest } from '../server/types.js';\nimport { SlotsProvider, useThemeMode, type SlotOverrides } from '../theme/SlotsProvider.js';\nimport type { LayoutProp, ThemeConfig } from '../theme/types.js';\nimport { getErrorMessage } from '../utils/getErrorMessage.js';\nimport { TrueForgeChatProvider, type TrueForgeChatProviderProps } from './TrueForgeChatProvider.js';\nimport { useResolvedServer } from './useResolvedServer.js';\n\nconst SidebarLayout = lazy(() => import('../layouts/SidebarLayout.js').then(m => ({ default: m.SidebarLayout })));\nconst DrawerLayout = lazy(() => import('../layouts/DrawerLayout.js').then(m => ({ default: m.DrawerLayout })));\nconst DockLayout = lazy(() => import('../layouts/DockLayout.js').then(m => ({ default: m.DockLayout })));\nconst WidgetLayout = lazy(() => import('../layouts/WidgetLayout.js').then(m => ({ default: m.WidgetLayout })));\nconst ShellRouteSync = lazy(() => import('../routing/ShellRouteSync.js').then(m => ({ default: m.ShellRouteSync })));\n\nexport type ChatLayout = 'sidebar' | 'drawer' | 'dock' | 'widget';\n\ntype RuntimeAdapters = NonNullable<UseTrueForgeAgentRuntimeOptions['adapters']>;\n\nexport type TrueForgeUIProps = {\n server: TrueForgeServerConfig;\n /** Built-in layout string or a custom layout component. Defaults to `\"sidebar\"`. */\n layout?: LayoutProp;\n overrides?: SlotOverrides;\n theme?: ThemeConfig;\n className?: string;\n initialSessionId?: string;\n adapters?: RuntimeAdapters;\n onError?: (error: unknown) => void;\n /**\n * Agent / library / composer shell mode.\n * Defaults to `{ mode: \"AgentLibraryWithComposer\" }`.\n */\n agentConfig?: AgentConfig;\n /** Open settings on first paint only (host boot with no models configured). */\n initialSettingsOpen?: boolean;\n /**\n * Host UI for pending client-side tools, keyed by tool name.\n * When a pending tool matches, the composer mounts that component instead of Ask User.\n */\n customActionRenderers?: CustomActionRenderers;\n /**\n * Sync shell navigation to the browser URL via react-router (opt-in).\n * Requires `react-router-dom` in the host. Leave off for dock/widget embeds\n * and hosts that own their own router. Defaults to `false`.\n */\n withRouter?: boolean;\n /** URL path customization; only honored when `withRouter`. */\n routes?: RoutesConfig;\n /** Optional identity rendered by the default `UserAvatar` slot. */\n currentUser?: CurrentUser;\n};\n\nexport type TrueForgeUIShellProps = Omit<TrueForgeUIProps, 'withRouter'> & { resolvedRoutes?: ResolvedRoutes };\n\nfunction LayoutFallback({ className }: { className?: string }) {\n return (\n <div\n className={className}\n style={{\n height: '100%',\n minHeight: '12rem',\n background:\n 'linear-gradient(90deg, color-mix(in oklab, var(--secondary-bg) 55%, transparent) 25%, color-mix(in oklab, var(--secondary-bg) 25%, transparent) 50%, color-mix(in oklab, var(--secondary-bg) 55%, transparent) 75%)',\n backgroundSize: '200% 100%',\n animation: 'tfy-aui-pulse 1.2s ease-in-out infinite',\n }}\n aria-hidden\n />\n );\n}\n\n/** Shown while a built-in agent UI server resolves. */\nexport function ServerInitLoader({ className }: { className?: string }) {\n // Outside ThemeProvider (Suspense), useThemeMode falls back to light.\n const themeMode = useThemeMode();\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n className={cn(\n 'flex h-full min-h-48 w-full flex-1 items-center justify-center bg-primary-bg text-text-secondary',\n className,\n )}\n >\n <ThinkingOrb\n state=\"connecting\"\n speed={1}\n theme={themeMode}\n paused={false}\n aria-hidden\n size={64}\n style={{ width: '4.5rem', height: '4.5rem' }}\n />\n </div>\n );\n}\n\nfunction ServerInitError({ error, className }: { error: unknown; className?: string }) {\n const message = getErrorMessage(error, 'Failed to initialize server');\n return (\n <div\n role=\"alert\"\n className={cn(\n 'flex h-full min-h-48 items-center justify-center bg-primary-bg px-6 text-center text-sm text-failure-bg',\n className,\n )}\n >\n {message}\n </div>\n );\n}\n\nfunction isBuiltInLayout(layout: LayoutProp): layout is ChatLayout {\n return layout === 'sidebar' || layout === 'drawer' || layout === 'dock' || layout === 'widget';\n}\n\nfunction BuiltInLayoutView({ layout, className }: { layout: ChatLayout; className?: string }) {\n switch (layout) {\n case 'sidebar':\n return <SidebarLayout className={className} />;\n case 'drawer':\n return <DrawerLayout className={className} />;\n case 'dock':\n return <DockLayout className={className} />;\n case 'widget':\n return <WidgetLayout className={className} />;\n }\n}\n\nfunction LayoutChildren({ layout, className }: { layout: LayoutProp; className?: string }) {\n if (isBuiltInLayout(layout)) {\n return (\n <Suspense fallback={<LayoutFallback className={className} />}>\n <BuiltInLayoutView layout={layout} className={className} />\n </Suspense>\n );\n }\n const HostLayout = layout;\n return <HostLayout className={className} />;\n}\n\nfunction ChatProviderFromShell({\n children,\n initialSessionId: hostInitialSessionId,\n onRemoteIdChange,\n server,\n ...providerRest\n}: {\n children: ReactNode;\n /** When routing, reports the active thread's remote id up to `ShellRouteSync`. */\n onRemoteIdChange?: (id: string | undefined) => void;\n} & Omit<TrueForgeChatProviderProps, 'agent' | 'agentName' | 'listSessionsAgentId' | 'children'>) {\n const { mode, runtimeKey, historyAgentFilter, listSessionsAgentId, pendingSessionId } = useShellMode();\n\n const isCreateAgent = mode.status === 'active' && mode.isMutable && mode.isCreateAgent;\n\n // Keep one isolated cache per shell, preserved across chat runtime remounts.\n const [sessionListCache] = useState(createSessionListCache);\n\n const serverWithCreateIntent = useMemo((): AgentUIServer => {\n return {\n ...server,\n createSession: request => {\n if (request.agentSpec === undefined) {\n return server.createSession(request);\n }\n const withMetadata: CreateSessionRequest & { metadata: Record<string, string> } = {\n ...request,\n metadata: {\n [IS_CREATE_AGENT_METADATA_KEY]: isCreateAgentMetadataValue(isCreateAgent),\n },\n };\n return server.createSession(withMetadata);\n },\n };\n }, [server, isCreateAgent]);\n\n const cachedRuntimeServer = useMemo(\n () => withSessionListCache({ server: serverWithCreateIntent, cache: sessionListCache }),\n [serverWithCreateIntent, sessionListCache],\n );\n const runtimeServer = useMemo<AgentUIServer>(() => {\n if (historyAgentFilter == null || historyAgentFilter.agentId != null) return cachedRuntimeServer;\n // Do not expose an unfiltered page under a filter label while its backend id resolves.\n return { ...cachedRuntimeServer, listSessions: async () => ({ data: [] }) };\n }, [cachedRuntimeServer, historyAgentFilter]);\n\n // Freeze draft seed for the life of this runtimeKey so bindMutableAgent (identity /\n // instructions on shell) does not push a new defaultAgentSpec into the runtime.\n const draftDefaultAgentSpec = useMemo(() => {\n if (mode.status === 'active' && mode.isMutable) {\n return mode.agentSpec ?? { model: { name: 'openai-main/gpt-4.1' } };\n }\n return { model: { name: 'openai-main/gpt-4.1' } };\n // runtimeKey is the remount boundary for mutable chats.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally keyed on runtimeKey only\n }, [runtimeKey]);\n\n const agent: TrueForgeAgentConfig = useMemo(() => {\n // idle uses a placeholder draft so layout chrome (useAui) still mounts;\n // layouts render an empty CTA instead of the thread.\n if (mode.status === 'idle') {\n return {\n mode: 'draft',\n defaultAgentSpec: { model: { name: 'openai-main/gpt-4.1' } },\n };\n }\n // Runtime still uses named|draft; shell mutability maps onto that adapter.\n if (!mode.isMutable) {\n const agentName = mode.agentName ?? mode.agentId ?? pendingSessionId;\n if (agentName == null) {\n // Active immutable without identity should not happen; keep chrome mounted.\n return {\n mode: 'draft',\n defaultAgentSpec: { model: { name: 'openai-main/gpt-4.1' } },\n };\n }\n return { mode: 'named', agentName };\n }\n return {\n mode: 'draft',\n defaultAgentSpec: draftDefaultAgentSpec,\n };\n }, [mode, draftDefaultAgentSpec, pendingSessionId]);\n\n return (\n <DraftCatalogProvider>\n <TrueForgeChatProvider\n key={runtimeKey}\n {...providerRest}\n server={runtimeServer}\n agent={agent}\n listSessionsAgentId={listSessionsAgentId}\n initialSessionId={pendingSessionId ?? hostInitialSessionId}\n >\n <AgentConfigInstructionsProvider>\n <DraftSpecPreferenceBridge />\n <HistorySessionSwitchBridge />\n {onRemoteIdChange != null ? <RemoteIdRouteBridge onRemoteIdChange={onRemoteIdChange} /> : null}\n {children}\n </AgentConfigInstructionsProvider>\n </TrueForgeChatProvider>\n </DraftCatalogProvider>\n );\n}\n\n/** Internal shell. `resolvedRoutes` present iff mounted under `TrueForgeUIWithRouter`. */\nexport function TrueForgeUIShell(props: TrueForgeUIShellProps) {\n const {\n layout = 'sidebar',\n overrides,\n theme,\n className,\n agentConfig = DEFAULT_AGENT_CONFIG,\n initialSettingsOpen = false,\n server: serverConfig,\n onError,\n customActionRenderers,\n currentUser,\n resolvedRoutes,\n routes: _routes,\n ...providerRest\n } = props;\n\n const resolved = useResolvedServer(serverConfig, onError);\n const [activeRemoteId, setActiveRemoteId] = useState<string | undefined>(undefined);\n const handleRemoteIdChange = useCallback((id: string | undefined) => setActiveRemoteId(id), []);\n\n // Warm Monaco while the shell boots so tool request/response cards paint faster.\n useEffect(() => {\n void preloadMonaco();\n }, []);\n\n if (resolved.status === 'loading') {\n return (\n <SlotsProvider overrides={overrides} theme={theme}>\n <ServerInitLoader className={className} />\n </SlotsProvider>\n );\n }\n\n if (resolved.status === 'error') {\n return (\n <SlotsProvider overrides={overrides} theme={theme}>\n <ServerInitError error={resolved.error} className={className} />\n </SlotsProvider>\n );\n }\n\n const server = resolved.server;\n const layoutTree = <LayoutChildren layout={layout} className={className} />;\n\n const shellTree = (\n <ShellModeProvider agentConfig={agentConfig} initialSettingsOpen={initialSettingsOpen}>\n <LibrarySessionShareBoot />\n {resolvedRoutes != null ? (\n <Suspense fallback={null}>\n <ShellRouteSync\n routes={resolvedRoutes}\n activeRemoteId={activeRemoteId}\n initialSettingsOpen={initialSettingsOpen}\n />\n </Suspense>\n ) : null}\n <ChatProviderFromShell\n server={server}\n onError={onError}\n onRemoteIdChange={resolvedRoutes != null ? handleRemoteIdChange : undefined}\n {...providerRest}\n >\n {layoutTree}\n </ChatProviderFromShell>\n </ShellModeProvider>\n );\n // Widget visibility provider is used to control the visibility of the widget with isolated state\n const visibilityTree =\n layout === 'widget' ? <WidgetVisibilityProvider>{shellTree}</WidgetVisibilityProvider> : shellTree;\n\n return (\n <SlotsProvider overrides={overrides} theme={theme}>\n <CurrentUserProvider currentUser={currentUser}>\n <CustomActionRenderersProvider renderers={customActionRenderers}>\n <ServerProvider server={server}>\n {resolvedRoutes != null ? (\n <ResolvedRoutesProvider routes={resolvedRoutes}>{visibilityTree}</ResolvedRoutesProvider>\n ) : (\n visibilityTree\n )}\n </ServerProvider>\n </CustomActionRenderersProvider>\n </CurrentUserProvider>\n </SlotsProvider>\n );\n}\n","'use client';\n\nimport { useTrueForgeAgentSpec, useTrueForgeUpdateAgentSpec } from '@truefoundry/trueforge-assistant-ui-runtime';\nimport { useEffect } from 'react';\n\nimport {\n type DraftPreferenceKind,\n withCapabilitiesSandbox,\n withCapabilitiesWebSearch,\n} from '../../server/draftSpecPreferences.js';\nimport { useServerCapabilities } from '../../server/ServerContext.js';\nimport { useShellMode } from '../../server/ShellModeContext.js';\nimport type { AgentSkill, AgentSpec, ConnectorState, ModelSelection } from '../../server/types.js';\nimport { mountName } from '../lib/mountName.js';\nimport { useDraftCatalog } from './DraftCatalogProvider.js';\nimport { modelPatchWithReasoningEffort } from './reasoningEffort.js';\n\nfunction readDraftSandboxEnabled(spec: AgentSpec): boolean | undefined {\n if (spec.config === undefined) return undefined;\n // `sandbox` is draft runtime config and may be absent from AgentRuntimeConfig typings.\n const sandbox = Reflect.get(spec.config, 'sandbox');\n if (typeof sandbox !== 'object' || sandbox === null) return undefined;\n const enabled = Reflect.get(sandbox, 'enabled');\n return typeof enabled === 'boolean' ? enabled : undefined;\n}\n\nfunction filterMounts<T extends object>(mounts: T[] | undefined, availableNames: Set<string>): T[] | undefined {\n if (mounts === undefined) return undefined;\n const filtered = mounts.filter(mount => {\n const name = mountName(mount);\n return name !== null && availableNames.has(name);\n });\n return filtered.length === mounts.length ? mounts : filtered;\n}\n\nexport function reconcileDraftSpecPreferences({\n agentSpec,\n models,\n skills,\n connectors,\n skillsEnabled,\n}: {\n agentSpec: AgentSpec;\n models: ModelSelection[];\n skills: AgentSkill[];\n connectors: ConnectorState[];\n skillsEnabled: boolean | undefined;\n}): Partial<AgentSpec> {\n const update: Partial<AgentSpec> = {};\n const selectedModel = agentSpec.model.name.trim();\n if (!models.some(model => model.name === selectedModel)) {\n const fallback = models[0];\n if (fallback !== undefined) {\n update.model = modelPatchWithReasoningEffort(\n fallback.name,\n agentSpec.model.params,\n fallback.properties.reasoningEfforts,\n );\n }\n }\n\n const nextMcpServers = filterMounts(agentSpec.mcpServers, new Set(connectors.map(connector => connector.name)));\n if (nextMcpServers !== agentSpec.mcpServers) {\n update.mcpServers = nextMcpServers;\n }\n\n if (skillsEnabled === false) {\n // Only clear when there is something to clear — a fresh `[]` each call would\n // fail reference equality and loop `updateAgentSpec` forever.\n if (agentSpec.skills !== undefined && agentSpec.skills.length > 0) {\n update.skills = [];\n }\n } else {\n const nextSkills = filterMounts(agentSpec.skills, new Set(skills.map(skill => skill.name)));\n if (nextSkills !== agentSpec.skills) {\n update.skills = nextSkills;\n }\n }\n\n return update;\n}\n\nexport function reconcileDraftSandbox({\n agentSpec,\n sandboxEnabled,\n kind = 'agent',\n}: {\n agentSpec: AgentSpec;\n sandboxEnabled: boolean | null | undefined;\n kind?: DraftPreferenceKind;\n}): Partial<AgentSpec> {\n if (kind === 'chat') {\n if (sandboxEnabled == null) return {};\n const current = readDraftSandboxEnabled(agentSpec);\n if (sandboxEnabled === true && current !== true) {\n return {\n config: {\n ...agentSpec.config,\n sandbox: { ...agentSpec.config?.sandbox, enabled: true },\n },\n };\n }\n if (sandboxEnabled === false && current === true) {\n return {\n config: {\n ...agentSpec.config,\n sandbox: { ...agentSpec.config?.sandbox, enabled: false },\n },\n };\n }\n return {};\n }\n\n const nextSpec = withCapabilitiesSandbox(agentSpec, sandboxEnabled);\n return nextSpec === agentSpec ? {} : { config: nextSpec.config };\n}\n\nexport function reconcileDraftWebSearch({\n agentSpec,\n webSearchEnabled,\n kind = 'agent',\n}: {\n agentSpec: AgentSpec;\n webSearchEnabled: boolean | null | undefined;\n kind?: DraftPreferenceKind;\n}): Partial<AgentSpec> {\n const nextSpec = withCapabilitiesWebSearch({ spec: agentSpec, webSearchEnabled, kind });\n return nextSpec === agentSpec ? {} : { config: nextSpec.config };\n}\n\n/**\n * Mirrors plain-draft composer choices into the shell seed and removes catalog\n * entries that disappeared since those choices were stored.\n * New Chat and New Agent keep separate seeds; chat never persists runtime config.\n */\nexport function DraftSpecPreferenceBridge() {\n const { mode, pendingSessionId, rememberDraftSpec } = useShellMode();\n const { agentSpec } = useTrueForgeAgentSpec();\n const updateAgentSpec = useTrueForgeUpdateAgentSpec();\n const capabilities = useServerCapabilities();\n const sandboxEnabled = capabilities?.sandbox.enabled;\n const webSearchEnabled = capabilities?.webSearch?.enabled;\n const { models, skills, connectors, loaded, error, ensureLoaded } = useDraftCatalog();\n const isMutableDraft = mode.status === 'active' && mode.isMutable && pendingSessionId == null;\n const isPlainDraft = isMutableDraft && mode.agentId == null;\n const preferenceKind = mode.status === 'active' && mode.isMutable && mode.isCreateAgent ? 'agent' : 'chat';\n // New Chat forces on; New Agent + edit existing only fill when absent.\n const webSearchKind: DraftPreferenceKind =\n mode.status === 'active' && mode.isMutable && (mode.isCreateAgent || mode.agentId != null) ? 'agent' : 'chat';\n\n useEffect(() => {\n if (isPlainDraft) ensureLoaded();\n }, [ensureLoaded, isPlainDraft]);\n\n useEffect(() => {\n if (isPlainDraft && agentSpec != null) {\n rememberDraftSpec(agentSpec, preferenceKind);\n }\n }, [agentSpec, isPlainDraft, preferenceKind, rememberDraftSpec]);\n\n useEffect(() => {\n // New Chat mirrors capabilities onto the live draft; New Agent only disables when unavailable.\n if (!isPlainDraft || agentSpec == null || updateAgentSpec == null) return;\n const update = reconcileDraftSandbox({ agentSpec, sandboxEnabled, kind: preferenceKind });\n if (Object.keys(update).length > 0) {\n updateAgentSpec(update);\n }\n }, [agentSpec, isPlainDraft, preferenceKind, sandboxEnabled, updateAgentSpec]);\n\n useEffect(() => {\n // Apply to New Chat / New Agent / edit-existing mutable drafts.\n if (!isMutableDraft || agentSpec == null || updateAgentSpec == null) return;\n const update = reconcileDraftWebSearch({ agentSpec, webSearchEnabled, kind: webSearchKind });\n if (Object.keys(update).length > 0) {\n updateAgentSpec(update);\n }\n }, [agentSpec, isMutableDraft, webSearchEnabled, webSearchKind, updateAgentSpec]);\n\n useEffect(() => {\n if (!isPlainDraft || agentSpec == null || updateAgentSpec == null || !loaded || error != null) return;\n\n const update = reconcileDraftSpecPreferences({\n agentSpec,\n models,\n skills,\n connectors,\n skillsEnabled: capabilities?.skill.enabled,\n });\n if (Object.keys(update).length > 0) {\n updateAgentSpec(update);\n }\n }, [\n agentSpec,\n capabilities?.skill.enabled,\n connectors,\n error,\n isPlainDraft,\n loaded,\n models,\n skills,\n updateAgentSpec,\n ]);\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nimport { useAui } from '../assistant-ui.js';\nimport { useOptionalShellMode } from '../server/ShellModeContext.js';\n\n/** Switches history sessions in place to preserve mounted chat state to prevent flickering */\nexport function HistorySessionSwitchBridge() {\n const shell = useOptionalShellMode();\n const aui = useAui();\n const pendingSessionId = shell?.pendingSessionId;\n const pendingSessionEpoch = shell?.pendingSessionEpoch ?? 0;\n\n useEffect(() => {\n if (pendingSessionId == null) return;\n void Promise.resolve(aui.threads().switchToThread(pendingSessionId)).catch(() => undefined);\n }, [aui, pendingSessionId, pendingSessionEpoch]);\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nimport { useOptionalAgentSessionsServer } from '../server/ServerContext.js';\nimport { useShellMode } from '../server/ShellModeContext.js';\nimport { isSessionsChromeEnabled } from '../server/serverChrome.js';\nimport { readSessionShareSearch } from '../utils/sessionShareUrl.js';\n\n/** Open the sessions browser or a library agent from the share query — with or without `withRouter`. */\nexport function LibrarySessionShareBoot() {\n const { openLibraryAgent, setSessionsOpen } = useShellMode();\n const sessions = useOptionalAgentSessionsServer();\n const sessionsEnabled = isSessionsChromeEnabled({ sessions });\n\n useEffect(() => {\n if (!sessionsEnabled) return;\n const share = readSessionShareSearch(window.location.search);\n if (share.view === 'sessions') {\n setSessionsOpen(true);\n return;\n }\n if (share.agentId == null) return;\n openLibraryAgent(share.agentId);\n }, [openLibraryAgent, sessionsEnabled, setSessionsOpen]);\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nimport { useAuiState } from '../assistant-ui.js';\n\n/**\n * Observes the active thread's remote id (assigned once a fresh chat persists)\n * and lifts it to the parent so `ShellRouteSync` can mirror it to `/sessions/:id`.\n * Lives inside the chat runtime, so it remounts with `runtimeKey`; reporting is\n * idempotent, so that is harmless. Carries no react-router dependency.\n */\nexport function RemoteIdRouteBridge({ onRemoteIdChange }: { onRemoteIdChange: (id: string | undefined) => void }) {\n const remoteId = useAuiState(s => s.threadListItem.remoteId);\n useEffect(() => {\n onRemoteIdChange(remoteId ?? undefined);\n }, [remoteId, onRemoteIdChange]);\n return null;\n}\n","import type { AgentUIServer, ListSessionsParams } from './types.js';\n\n/** Cached pages go stale after this window so external session changes surface. */\nconst SESSION_LIST_TTL_MS = 30_000;\n\ntype SessionListPage = ReturnType<AgentUIServer['listSessions']>;\n\ntype CacheEntry = { at: number; page: SessionListPage };\n\nexport type SessionListCache = Map<string, CacheEntry>;\n\nexport function createSessionListCache(): SessionListCache {\n return new Map();\n}\n\n// `startTimestamp` is a rolling \"now − 1 year\" that differs on every call;\n// keying on it would make each request unique and defeat the cache.\nfunction cacheKey(request: ListSessionsParams | undefined): string {\n const rest: ListSessionsParams = { ...request };\n delete rest.startTimestamp;\n return JSON.stringify(rest, Object.keys(rest).sort());\n}\n\n/** Deduplicates session pages and invalidates them after mutations or TTL expiry. */\nexport function withSessionListCache({\n server,\n cache,\n}: {\n server: AgentUIServer;\n cache: SessionListCache;\n}): AgentUIServer {\n const { deleteSession, renameSession } = server;\n return {\n ...server,\n listSessions(request) {\n const key = cacheKey(request);\n const now = Date.now();\n const entry = cache.get(key);\n if (entry !== undefined && now - entry.at < SESSION_LIST_TTL_MS) return entry.page;\n const page = server.listSessions(request);\n cache.set(key, { at: now, page });\n // Allow failed pages to be retried.\n void page.catch(() => {\n if (cache.get(key)?.page === page) cache.delete(key);\n });\n return page;\n },\n async createSession(request) {\n const result = await server.createSession(request);\n cache.clear();\n return result;\n },\n async updateSession(request) {\n const result = await server.updateSession(request);\n cache.clear();\n return result;\n },\n ...(deleteSession != null\n ? {\n deleteSession: async (request: { sessionId: string }) => {\n await deleteSession.call(server, request);\n cache.clear();\n },\n }\n : {}),\n ...(renameSession != null\n ? {\n renameSession: async (request: { sessionId: string; title: string }) => {\n await renameSession.call(server, request);\n cache.clear();\n },\n }\n : {}),\n };\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport type { TrueForgeBuiltInServerConfig, TrueForgeServerConfig } from '../server/TrueForgeServerConfig.js';\nimport type {\n AgentBuilderCapabilitiesResponse,\n AgentUIServer,\n CatalogServer,\n PermissionsServer,\n} from '../server/types.js';\n\nexport type ResolvedServerState =\n | { status: 'loading'; server: null; error: null }\n | { status: 'ready'; server: AgentUIServer; error: null }\n | { status: 'error'; server: null; error: unknown };\n\n/** Fallback when an older runtime adapter omits `getCapabilities`. */\nconst DEFAULT_CAPABILITIES = {\n data: {\n sandbox: { enabled: true },\n skill: { enabled: true },\n settings: { enabled: true },\n webSearch: { enabled: false },\n },\n} satisfies AgentBuilderCapabilitiesResponse;\n\nfunction isBuiltInConfig(config: TrueForgeServerConfig): config is TrueForgeBuiltInServerConfig {\n return typeof config === 'object' && config !== null && 'type' in config && config.type === 'trueforge';\n}\n\nfunction hasGetCapabilities(\n server: object,\n): server is { getCapabilities: () => Promise<AgentBuilderCapabilitiesResponse> } {\n return typeof Reflect.get(server, 'getCapabilities') === 'function';\n}\n\n/**\n * Attach optional host ports and ensure `getCapabilities` exists on the composed port.\n */\nfunction toAgentUIServer(\n server: object,\n catalog: CatalogServer | undefined,\n permissions: PermissionsServer | undefined,\n): AgentUIServer {\n const getCapabilities = hasGetCapabilities(server)\n ? () => server.getCapabilities()\n : async () => DEFAULT_CAPABILITIES;\n const withCapabilities = { ...server, getCapabilities };\n const withOptionalPorts = {\n ...withCapabilities,\n ...(catalog == null ? {} : { catalog }),\n ...(permissions == null ? {} : { permissions }),\n };\n if (!isAgentUIServer(withOptionalPorts)) {\n throw new Error('TrueForgeUI: runtime adapter returned an incomplete AgentUIServer');\n }\n return withOptionalPorts;\n}\n\nfunction isAgentUIServer(value: object): value is AgentUIServer {\n return (\n typeof Reflect.get(value, 'createSession') === 'function' &&\n typeof Reflect.get(value, 'listSessions') === 'function' &&\n typeof Reflect.get(value, 'getSession') === 'function' &&\n typeof Reflect.get(value, 'updateSession') === 'function' &&\n typeof Reflect.get(value, 'createTurn') === 'function' &&\n typeof Reflect.get(value, 'cancelSession') === 'function' &&\n typeof Reflect.get(value, 'listTurns') === 'function' &&\n typeof Reflect.get(value, 'getTurn') === 'function' &&\n typeof Reflect.get(value, 'listEvents') === 'function' &&\n typeof Reflect.get(value, 'getCapabilities') === 'function' &&\n typeof Reflect.get(value, 'getModels') === 'function' &&\n typeof Reflect.get(value, 'getSkills') === 'function' &&\n typeof Reflect.get(value, 'getMcp') === 'function' &&\n typeof Reflect.get(value, 'searchAgents') === 'function' &&\n typeof Reflect.get(value, 'saveAgent') === 'function'\n );\n}\n\n/**\n * Resolves a {@link TrueForgeServerConfig} to an {@link AgentUIServer}.\n * - `AgentUIServer` — sync passthrough\n * - `trueforge` — via dynamic import of the Harness plugin adapter\n */\nexport function useResolvedServer(\n config: TrueForgeServerConfig,\n onError?: (error: unknown) => void,\n): ResolvedServerState {\n const builtIn = isBuiltInConfig(config) ? config : null;\n const directServer: AgentUIServer | null = isBuiltInConfig(config) ? null : config;\n const trueforgeBaseUrl = builtIn?.baseUrl ?? '';\n const trueforgeToken = builtIn?.token ?? '';\n const trueforgeFetch = builtIn?.fetch;\n const catalog = builtIn?.catalog;\n const permissions = builtIn?.permissions;\n\n const [state, setState] = useState<ResolvedServerState>(() => {\n if (directServer) {\n return { status: 'ready', server: directServer, error: null };\n }\n return { status: 'loading', server: null, error: null };\n });\n\n useEffect(() => {\n if (directServer) {\n setState({ status: 'ready', server: directServer, error: null });\n return;\n }\n\n let cancelled = false;\n setState({ status: 'loading', server: null, error: null });\n\n const resolve = async (): Promise<AgentUIServer> => {\n const { createTrueForgeAgentUIServer } = await import('../plugins/trueforge-agent-server-adapter/index.js');\n return createTrueForgeAgentUIServer({\n ...(trueforgeBaseUrl ? { baseUrl: trueforgeBaseUrl } : {}),\n ...(trueforgeToken ? { token: trueforgeToken } : {}),\n ...(trueforgeFetch !== undefined ? { fetch: trueforgeFetch } : {}),\n ...(catalog != null ? { catalog } : {}),\n ...(permissions != null ? { permissions } : {}),\n });\n };\n\n void resolve()\n .then(server => {\n if (cancelled) return;\n try {\n setState({\n status: 'ready',\n server: toAgentUIServer(server, undefined, undefined),\n error: null,\n });\n } catch (error: unknown) {\n onError?.(error);\n setState({ status: 'error', server: null, error });\n }\n })\n .catch((error: unknown) => {\n if (cancelled) return;\n onError?.(error);\n setState({ status: 'error', server: null, error });\n });\n\n return () => {\n cancelled = true;\n };\n }, [directServer, trueforgeBaseUrl, trueforgeToken, trueforgeFetch, catalog, permissions, onError]);\n\n return state;\n}\n"],"mappings":"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","names":["useAuiState","useAuiState","useCallback","useEffect","useMemo","useState","useEffect","useEffect","useEffect","useEffect","useEffect","useEffect","useEffect","jsx","useState","useMemo","runtimeServer","useCallback","useEffect"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cn,
|
|
3
3
|
useOptionalContentClassNames
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6UACSIIY.js";
|
|
5
5
|
|
|
6
6
|
// src/atoms/OpenUiFenceBlock.tsx
|
|
7
7
|
import { Renderer } from "@openuidev/react-lang";
|
|
@@ -21,4 +21,4 @@ function OpenUiFenceBlock({ content, isStreaming, darkTheme }) {
|
|
|
21
21
|
export {
|
|
22
22
|
OpenUiFenceBlock
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-QKFMAQ7O.js.map
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
useResourcePermissions,
|
|
6
6
|
useSlot,
|
|
7
7
|
withInitialUserMessages
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MLMR26WQ.js";
|
|
9
9
|
import {
|
|
10
10
|
Icon,
|
|
11
11
|
auiButtonClass,
|
|
12
12
|
pageHeaderTitleClassName,
|
|
13
13
|
sidebarRailButtonClassName,
|
|
14
14
|
useDraftCatalog
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-TX6PB3DY.js";
|
|
16
16
|
import {
|
|
17
17
|
isSettingsChromeEnabled,
|
|
18
18
|
shellIsCreateAgent,
|
|
@@ -21,14 +21,14 @@ import {
|
|
|
21
21
|
useOptionalShellMode,
|
|
22
22
|
useServerCapabilities,
|
|
23
23
|
useShellMode
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-7S7A3PNP.js";
|
|
25
25
|
import {
|
|
26
26
|
useAuiState
|
|
27
27
|
} from "./chunk-M6MHLVSO.js";
|
|
28
28
|
import {
|
|
29
29
|
cn,
|
|
30
30
|
useTheme
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6UACSIIY.js";
|
|
32
32
|
|
|
33
33
|
// src/atoms/NamedAgentHeaderLabel.tsx
|
|
34
34
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -137,16 +137,16 @@ function ShellActions({ className, labeled = false }) {
|
|
|
137
137
|
|
|
138
138
|
// src/containers/AgentConfigDrawerContainer.tsx
|
|
139
139
|
import {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
} from "@truefoundry/assistant-ui-runtime";
|
|
140
|
+
useTrueForgeAgentSpec,
|
|
141
|
+
useTrueForgeFlushAgentSpec,
|
|
142
|
+
useTrueForgeUpdateAgentSpec
|
|
143
|
+
} from "@truefoundry/trueforge-assistant-ui-runtime";
|
|
144
144
|
import { useCallback, useEffect, useState } from "react";
|
|
145
145
|
import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
146
146
|
function AgentConfigDrawerContainer({ showClose = false }) {
|
|
147
|
-
const { agentSpec } =
|
|
148
|
-
const updateAgentSpec =
|
|
149
|
-
const flushAgentSpec =
|
|
147
|
+
const { agentSpec } = useTrueForgeAgentSpec();
|
|
148
|
+
const updateAgentSpec = useTrueForgeUpdateAgentSpec();
|
|
149
|
+
const flushAgentSpec = useTrueForgeFlushAgentSpec();
|
|
150
150
|
const shell = useShellMode();
|
|
151
151
|
const agentId = shell.mode.status === "active" ? shell.mode.agentId : void 0;
|
|
152
152
|
const { allows } = useResourcePermissions({
|
|
@@ -295,4 +295,4 @@ export {
|
|
|
295
295
|
ShellActions,
|
|
296
296
|
AgentConfigDrawerContainer
|
|
297
297
|
};
|
|
298
|
-
//# sourceMappingURL=chunk-
|
|
298
|
+
//# sourceMappingURL=chunk-TFQWCBFQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/atoms/NamedAgentHeaderLabel.tsx","../src/atoms/ShellActions.tsx","../src/containers/AgentConfigDrawerContainer.tsx"],"sourcesContent":["'use client';\n\nimport { useAuiState } from '../assistant-ui.js';\nimport { useNamedAgentHeaderState } from '../hooks/useChatChromeActionsVisible.js';\nimport { Icon } from '../icons/Icon.js';\nimport { cn } from './lib/cn.js';\nimport { pageHeaderTitleClassName } from './PageHeader.js';\nimport { Tooltip } from './primitives/Tooltip.js';\n\n/** Dynamic chat title for named agents and New Chat / New Agent drafts. */\nexport function NamedAgentHeaderLabel({ className }: { className?: string }) {\n const state = useNamedAgentHeaderState();\n const threadTitle = useAuiState(s => s.threadListItem.title);\n if (state === null) return null;\n\n const syncedTitle = threadTitle?.trim() ?? '';\n const displayName = state.allowThreadTitle && syncedTitle.length > 0 ? syncedTitle : state.name;\n\n return (\n <h1 className={cn('flex min-w-0 items-center gap-1.5', pageHeaderTitleClassName, className)}>\n <span className=\"truncate\" title={displayName}>\n {displayName}\n </span>\n {state.isEditing ? (\n <Tooltip content=\"Try changes here, then choose Update agent to save.\" side=\"bottom\">\n <span className=\"border-warning-bg/40 bg-warning-bg/10 text-warning-bg inline-flex shrink-0 items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium\">\n <Icon name=\"pencil\" className=\"size-3\" />\n Editing\n </span>\n </Tooltip>\n ) : null}\n </h1>\n );\n}\n","'use client';\n\nimport { Icon } from '../icons/Icon.js';\nimport { useOptionalCatalogServer, useServerCapabilities } from '../server/ServerContext.js';\nimport { useOptionalShellMode } from '../server/ShellModeContext.js';\nimport { isSettingsChromeEnabled } from '../server/serverChrome.js';\nimport { useSlot } from '../theme/SlotsProvider.js';\nimport { useTheme } from '../theme/ThemeProvider.js';\nimport { auiButtonClass, sidebarRailButtonClassName } from './lib/buttonClasses.js';\nimport { cn } from './lib/cn.js';\n\nexport function ShellActions({ className, labeled = false }: { className?: string; labeled?: boolean }) {\n const shell = useOptionalShellMode();\n const catalog = useOptionalCatalogServer();\n const capabilities = useServerCapabilities();\n const { mode, setTheme } = useTheme();\n const ActionSlot = useSlot('ShellActionsActionSlot');\n const isDark = mode === 'dark';\n const themeLabel = isDark ? 'Light' : 'Dark';\n const settingsChromeEnabled = isSettingsChromeEnabled({ catalog, capabilities });\n\n const hoverClass = 'hover:bg-secondary-button-hover hover:text-ghost-button-text';\n\n return (\n <div\n className={cn(\n 'flex shrink-0 items-center gap-1',\n labeled ? 'w-full flex-col items-center gap-1 text-sidebar-text' : 'text-text-primary',\n className,\n )}\n >\n <a\n href=\"https://trueforge.dev\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Documentation\"\n title=\"Documentation\"\n className={auiButtonClass({\n variant: 'ghost',\n size: labeled ? undefined : 'icon',\n className: cn(hoverClass, labeled && sidebarRailButtonClassName),\n })}\n >\n <Icon name=\"book-open\" size={labeled ? 14 : undefined} />\n {labeled ? <span className=\"text-center\">Docs</span> : null}\n </a>\n <button\n type=\"button\"\n aria-label={isDark ? 'Switch to light theme' : 'Switch to dark theme'}\n title={isDark ? 'Light theme' : 'Dark theme'}\n className={auiButtonClass({\n variant: 'ghost',\n size: labeled ? undefined : 'icon',\n className: cn(hoverClass, labeled && sidebarRailButtonClassName),\n })}\n onClick={() => setTheme(isDark ? 'light' : 'dark')}\n >\n <Icon name={isDark ? 'sun' : 'moon'} size={labeled ? 14 : undefined} />\n {labeled ? <span className=\"text-center\">{themeLabel}</span> : null}\n </button>\n {shell != null && settingsChromeEnabled ? (\n <button\n type=\"button\"\n aria-label=\"Settings\"\n title=\"Settings\"\n aria-expanded={shell.settingsOpen}\n aria-current={shell.settingsOpen ? 'page' : undefined}\n className={auiButtonClass({\n variant: 'ghost',\n size: labeled ? undefined : 'icon',\n className: cn(\n hoverClass,\n labeled && sidebarRailButtonClassName,\n shell.settingsOpen &&\n 'bg-primary-button-bg font-medium text-primary-button-text hover:bg-primary-button-hover hover:text-primary-button-text',\n ),\n })}\n onClick={() => shell.setSettingsOpen(true)}\n >\n <Icon name=\"settings\" size={labeled ? 14 : undefined} />\n {labeled ? <span className=\"text-center\">Settings</span> : null}\n </button>\n ) : null}\n <ActionSlot />\n </div>\n );\n}\n","'use client';\n\nimport {\n useTrueForgeAgentSpec,\n useTrueForgeFlushAgentSpec,\n useTrueForgeUpdateAgentSpec,\n} from '@truefoundry/trueforge-assistant-ui-runtime';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { AgentConfigEditor } from '../atoms/draft/AgentConfigEditors.js';\nimport { useAgentConfigInstructions } from '../atoms/draft/AgentConfigInstructionsContext.js';\nimport type { AgentInstructionsDraft } from '../atoms/draft/AgentInstructionsDrawer.js';\nimport { useDraftCatalog } from '../atoms/draft/DraftCatalogProvider.js';\nimport { withInitialUserMessages } from '../atoms/draft/agentConfigMessages.js';\nimport { useResourcePermissions } from '../hooks/useResourcePermissions.js';\nimport { useOptionalServer, useServerCapabilities } from '../server/ServerContext.js';\nimport { shellIsCreateAgent, useShellMode } from '../server/ShellModeContext.js';\nimport type { AgentSpec, ConnectorState, McpToolSelection } from '../server/types.js';\nimport { useSlot } from '../theme/SlotsProvider.js';\n\nexport function AgentConfigDrawerContainer({ showClose = false }: { showClose?: boolean }) {\n const { agentSpec } = useTrueForgeAgentSpec();\n const updateAgentSpec = useTrueForgeUpdateAgentSpec();\n const flushAgentSpec = useTrueForgeFlushAgentSpec();\n const shell = useShellMode();\n const agentId = shell.mode.status === 'active' ? shell.mode.agentId : undefined;\n const { allows } = useResourcePermissions({\n resourceType: 'agent',\n resourceIds: agentId == null ? [] : [agentId],\n });\n const canManageAgent = allows(agentId, 'MANAGE');\n const server = useOptionalServer();\n const capabilities = useServerCapabilities();\n const catalog = useDraftCatalog();\n const AgentConfigPanel = useSlot('AgentConfigPanel');\n const AgentConfigEditors = useSlot('AgentConfigEditors');\n const [editor, setEditor] = useState<AgentConfigEditor | null>(null);\n const isBuilder = shellIsCreateAgent(shell.mode);\n const { draft: instructionDraft, flush: flushInstructions } = useAgentConfigInstructions();\n const closeDrawer = useCallback(() => {\n flushInstructions();\n void flushAgentSpec();\n shell.setAgentConfigOpen(false);\n }, [flushAgentSpec, flushInstructions, shell]);\n\n useEffect(() => {\n if (isBuilder) catalog.ensureLoaded();\n }, [catalog, isBuilder]);\n\n useEffect(() => {\n if (!canManageAgent) setEditor(null);\n }, [canManageAgent]);\n\n useEffect(() => {\n if (!showClose || !shell.agentConfigOpen) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n !event.defaultPrevented &&\n event.key === 'Escape' &&\n editor === null &&\n document.querySelector('dialog[open]') === null\n ) {\n closeDrawer();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [closeDrawer, editor, shell.agentConfigOpen, showClose]);\n\n // Flush pending edits on unmount. ChatProvider remount (runtimeKey) tears the\n // runtime down first — flush then throws; ignore so the new draft can mount.\n useEffect(\n () => () => {\n flushInstructions();\n try {\n void flushAgentSpec();\n } catch {\n // Runtime already gone.\n }\n },\n [flushAgentSpec, flushInstructions],\n );\n\n const commitSpec = useCallback(\n ({ next, instructions }: { next: AgentSpec; instructions: string }) => {\n if (!canManageAgent) return;\n if (next.skills && next.skills.length > 0 && capabilities?.sandbox.enabled === true) {\n updateAgentSpec?.({\n ...next,\n instructions: instructions || undefined,\n config: {\n ...next.config,\n sandbox: { ...next.config?.sandbox, enabled: true },\n },\n });\n return;\n }\n updateAgentSpec?.({ ...next, instructions: instructions || undefined });\n },\n [canManageAgent, capabilities?.sandbox.enabled, updateAgentSpec],\n );\n\n const updateSpec = useCallback(\n (next: AgentSpec) => {\n commitSpec({ next, instructions: instructionDraft });\n },\n [commitSpec, instructionDraft],\n );\n\n const saveInstructions = useCallback(\n (draft: AgentInstructionsDraft) => {\n if (agentSpec === null) return;\n commitSpec({\n next: withInitialUserMessages({ spec: agentSpec, messages: draft.messages }),\n instructions: draft.instructions,\n });\n },\n [agentSpec, commitSpec],\n );\n\n const loadMcpTools = useCallback(\n async (connectorId: string): Promise<McpToolSelection[]> => {\n if (server?.getMcpTools === undefined) return [];\n return server.getMcpTools({ connectorId });\n },\n [server],\n );\n const loadMcpConnector = useCallback(\n async (connectorId: string): Promise<ConnectorState | undefined> => {\n return server?.getMcpConnector?.({ connectorId });\n },\n [server],\n );\n\n if (!isBuilder || agentSpec === null || (showClose && !shell.agentConfigOpen)) {\n return null;\n }\n\n const model = catalog.models.find(item => item.name === agentSpec.model.name);\n\n return (\n <>\n <AgentConfigPanel\n spec={agentSpec}\n model={model}\n models={catalog.models}\n modelsLoading={catalog.loading}\n modelsError={catalog.error}\n skills={catalog.skills}\n skillsAvailable={capabilities?.skill.enabled === true}\n webSearchAvailable={capabilities?.webSearch?.enabled === true}\n instructions={instructionDraft}\n onOpenEditor={nextEditor => {\n if (canManageAgent) setEditor(nextEditor);\n }}\n onChange={updateSpec}\n disabled={!canManageAgent}\n onClose={showClose ? closeDrawer : undefined}\n />\n <AgentConfigEditors\n editor={editor}\n spec={agentSpec}\n models={catalog.models}\n connectors={catalog.connectors}\n skills={catalog.skills}\n loading={catalog.loading}\n error={catalog.error}\n skillsDisabled={capabilities?.skill.enabled !== true}\n sandboxAvailable={capabilities?.sandbox.enabled === true}\n webSearchAvailable={capabilities?.webSearch?.enabled === true}\n instructions={instructionDraft}\n onInstructionsSave={saveInstructions}\n {...(server?.getMcpConnector === undefined ? {} : { loadMcpConnector })}\n loadMcpTools={loadMcpTools}\n onRefreshConnectors={catalog.refreshConnectors}\n onChange={updateSpec}\n onClose={() => setEditor(null)}\n />\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBM,cAKI,YALJ;AAVC,SAAS,sBAAsB,EAAE,UAAU,GAA2B;AAC3E,QAAM,QAAQ,yBAAyB;AACvC,QAAM,cAAc,YAAY,OAAK,EAAE,eAAe,KAAK;AAC3D,MAAI,UAAU,KAAM,QAAO;AAE3B,QAAM,cAAc,aAAa,KAAK,KAAK;AAC3C,QAAM,cAAc,MAAM,oBAAoB,YAAY,SAAS,IAAI,cAAc,MAAM;AAE3F,SACE,qBAAC,QAAG,WAAW,GAAG,qCAAqC,0BAA0B,SAAS,GACxF;AAAA,wBAAC,UAAK,WAAU,YAAW,OAAO,aAC/B,uBACH;AAAA,IACC,MAAM,YACL,oBAAC,WAAQ,SAAQ,uDAAsD,MAAK,UAC1E,+BAAC,UAAK,WAAU,qJACd;AAAA,0BAAC,QAAK,MAAK,UAAS,WAAU,UAAS;AAAA,MAAE;AAAA,OAE3C,GACF,IACE;AAAA,KACN;AAEJ;;;ACFM,SAYE,OAAAA,MAZF,QAAAC,aAAA;AApBC,SAAS,aAAa,EAAE,WAAW,UAAU,MAAM,GAA8C;AACtG,QAAM,QAAQ,qBAAqB;AACnC,QAAM,UAAU,yBAAyB;AACzC,QAAM,eAAe,sBAAsB;AAC3C,QAAM,EAAE,MAAM,SAAS,IAAI,SAAS;AACpC,QAAM,aAAa,QAAQ,wBAAwB;AACnD,QAAM,SAAS,SAAS;AACxB,QAAM,aAAa,SAAS,UAAU;AACtC,QAAM,wBAAwB,wBAAwB,EAAE,SAAS,aAAa,CAAC;AAE/E,QAAM,aAAa;AAEnB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UAAU,yDAAyD;AAAA,QACnE;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,cAAW;AAAA,YACX,OAAM;AAAA,YACN,WAAW,eAAe;AAAA,cACxB,SAAS;AAAA,cACT,MAAM,UAAU,SAAY;AAAA,cAC5B,WAAW,GAAG,YAAY,WAAW,0BAA0B;AAAA,YACjE,CAAC;AAAA,YAED;AAAA,8BAAAD,KAAC,QAAK,MAAK,aAAY,MAAM,UAAU,KAAK,QAAW;AAAA,cACtD,UAAU,gBAAAA,KAAC,UAAK,WAAU,eAAc,kBAAI,IAAU;AAAA;AAAA;AAAA,QACzD;AAAA,QACA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY,SAAS,0BAA0B;AAAA,YAC/C,OAAO,SAAS,gBAAgB;AAAA,YAChC,WAAW,eAAe;AAAA,cACxB,SAAS;AAAA,cACT,MAAM,UAAU,SAAY;AAAA,cAC5B,WAAW,GAAG,YAAY,WAAW,0BAA0B;AAAA,YACjE,CAAC;AAAA,YACD,SAAS,MAAM,SAAS,SAAS,UAAU,MAAM;AAAA,YAEjD;AAAA,8BAAAD,KAAC,QAAK,MAAM,SAAS,QAAQ,QAAQ,MAAM,UAAU,KAAK,QAAW;AAAA,cACpE,UAAU,gBAAAA,KAAC,UAAK,WAAU,eAAe,sBAAW,IAAU;AAAA;AAAA;AAAA,QACjE;AAAA,QACC,SAAS,QAAQ,wBAChB,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,OAAM;AAAA,YACN,iBAAe,MAAM;AAAA,YACrB,gBAAc,MAAM,eAAe,SAAS;AAAA,YAC5C,WAAW,eAAe;AAAA,cACxB,SAAS;AAAA,cACT,MAAM,UAAU,SAAY;AAAA,cAC5B,WAAW;AAAA,gBACT;AAAA,gBACA,WAAW;AAAA,gBACX,MAAM,gBACJ;AAAA,cACJ;AAAA,YACF,CAAC;AAAA,YACD,SAAS,MAAM,MAAM,gBAAgB,IAAI;AAAA,YAEzC;AAAA,8BAAAD,KAAC,QAAK,MAAK,YAAW,MAAM,UAAU,KAAK,QAAW;AAAA,cACrD,UAAU,gBAAAA,KAAC,UAAK,WAAU,eAAc,sBAAQ,IAAU;AAAA;AAAA;AAAA,QAC7D,IACE;AAAA,QACJ,gBAAAA,KAAC,cAAW;AAAA;AAAA;AAAA,EACd;AAEJ;;;ACpFA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAa,WAAW,gBAAgB;AAsI7C,mBACE,OAAAE,MADF,QAAAC,aAAA;AAzHG,SAAS,2BAA2B,EAAE,YAAY,MAAM,GAA4B;AACzF,QAAM,EAAE,UAAU,IAAI,sBAAsB;AAC5C,QAAM,kBAAkB,4BAA4B;AACpD,QAAM,iBAAiB,2BAA2B;AAClD,QAAM,QAAQ,aAAa;AAC3B,QAAM,UAAU,MAAM,KAAK,WAAW,WAAW,MAAM,KAAK,UAAU;AACtE,QAAM,EAAE,OAAO,IAAI,uBAAuB;AAAA,IACxC,cAAc;AAAA,IACd,aAAa,WAAW,OAAO,CAAC,IAAI,CAAC,OAAO;AAAA,EAC9C,CAAC;AACD,QAAM,iBAAiB,OAAO,SAAS,QAAQ;AAC/C,QAAM,SAAS,kBAAkB;AACjC,QAAM,eAAe,sBAAsB;AAC3C,QAAM,UAAU,gBAAgB;AAChC,QAAM,mBAAmB,QAAQ,kBAAkB;AACnD,QAAM,qBAAqB,QAAQ,oBAAoB;AACvD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmC,IAAI;AACnE,QAAM,YAAY,mBAAmB,MAAM,IAAI;AAC/C,QAAM,EAAE,OAAO,kBAAkB,OAAO,kBAAkB,IAAI,2BAA2B;AACzF,QAAM,cAAc,YAAY,MAAM;AACpC,sBAAkB;AAClB,SAAK,eAAe;AACpB,UAAM,mBAAmB,KAAK;AAAA,EAChC,GAAG,CAAC,gBAAgB,mBAAmB,KAAK,CAAC;AAE7C,YAAU,MAAM;AACd,QAAI,UAAW,SAAQ,aAAa;AAAA,EACtC,GAAG,CAAC,SAAS,SAAS,CAAC;AAEvB,YAAU,MAAM;AACd,QAAI,CAAC,eAAgB,WAAU,IAAI;AAAA,EACrC,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACd,QAAI,CAAC,aAAa,CAAC,MAAM,gBAAiB;AAC1C,UAAM,YAAY,CAAC,UAAyB;AAC1C,UACE,CAAC,MAAM,oBACP,MAAM,QAAQ,YACd,WAAW,QACX,SAAS,cAAc,cAAc,MAAM,MAC3C;AACA,oBAAY;AAAA,MACd;AAAA,IACF;AACA,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM,OAAO,oBAAoB,WAAW,SAAS;AAAA,EAC9D,GAAG,CAAC,aAAa,QAAQ,MAAM,iBAAiB,SAAS,CAAC;AAI1D;AAAA,IACE,MAAM,MAAM;AACV,wBAAkB;AAClB,UAAI;AACF,aAAK,eAAe;AAAA,MACtB,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,iBAAiB;AAAA,EACpC;AAEA,QAAM,aAAa;AAAA,IACjB,CAAC,EAAE,MAAM,aAAa,MAAiD;AACrE,UAAI,CAAC,eAAgB;AACrB,UAAI,KAAK,UAAU,KAAK,OAAO,SAAS,KAAK,cAAc,QAAQ,YAAY,MAAM;AACnF,0BAAkB;AAAA,UAChB,GAAG;AAAA,UACH,cAAc,gBAAgB;AAAA,UAC9B,QAAQ;AAAA,YACN,GAAG,KAAK;AAAA,YACR,SAAS,EAAE,GAAG,KAAK,QAAQ,SAAS,SAAS,KAAK;AAAA,UACpD;AAAA,QACF,CAAC;AACD;AAAA,MACF;AACA,wBAAkB,EAAE,GAAG,MAAM,cAAc,gBAAgB,OAAU,CAAC;AAAA,IACxE;AAAA,IACA,CAAC,gBAAgB,cAAc,QAAQ,SAAS,eAAe;AAAA,EACjE;AAEA,QAAM,aAAa;AAAA,IACjB,CAAC,SAAoB;AACnB,iBAAW,EAAE,MAAM,cAAc,iBAAiB,CAAC;AAAA,IACrD;AAAA,IACA,CAAC,YAAY,gBAAgB;AAAA,EAC/B;AAEA,QAAM,mBAAmB;AAAA,IACvB,CAAC,UAAkC;AACjC,UAAI,cAAc,KAAM;AACxB,iBAAW;AAAA,QACT,MAAM,wBAAwB,EAAE,MAAM,WAAW,UAAU,MAAM,SAAS,CAAC;AAAA,QAC3E,cAAc,MAAM;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,WAAW,UAAU;AAAA,EACxB;AAEA,QAAM,eAAe;AAAA,IACnB,OAAO,gBAAqD;AAC1D,UAAI,QAAQ,gBAAgB,OAAW,QAAO,CAAC;AAC/C,aAAO,OAAO,YAAY,EAAE,YAAY,CAAC;AAAA,IAC3C;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AACA,QAAM,mBAAmB;AAAA,IACvB,OAAO,gBAA6D;AAClE,aAAO,QAAQ,kBAAkB,EAAE,YAAY,CAAC;AAAA,IAClD;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAEA,MAAI,CAAC,aAAa,cAAc,QAAS,aAAa,CAAC,MAAM,iBAAkB;AAC7E,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,QAAQ,OAAO,KAAK,UAAQ,KAAK,SAAS,UAAU,MAAM,IAAI;AAE5E,SACE,gBAAAA,MAAA,YACE;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,eAAe,QAAQ;AAAA,QACvB,aAAa,QAAQ;AAAA,QACrB,QAAQ,QAAQ;AAAA,QAChB,iBAAiB,cAAc,MAAM,YAAY;AAAA,QACjD,oBAAoB,cAAc,WAAW,YAAY;AAAA,QACzD,cAAc;AAAA,QACd,cAAc,gBAAc;AAC1B,cAAI,eAAgB,WAAU,UAAU;AAAA,QAC1C;AAAA,QACA,UAAU;AAAA,QACV,UAAU,CAAC;AAAA,QACX,SAAS,YAAY,cAAc;AAAA;AAAA,IACrC;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,YAAY,QAAQ;AAAA,QACpB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,OAAO,QAAQ;AAAA,QACf,gBAAgB,cAAc,MAAM,YAAY;AAAA,QAChD,kBAAkB,cAAc,QAAQ,YAAY;AAAA,QACpD,oBAAoB,cAAc,WAAW,YAAY;AAAA,QACzD,cAAc;AAAA,QACd,oBAAoB;AAAA,QACnB,GAAI,QAAQ,oBAAoB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,QACrE;AAAA,QACA,qBAAqB,QAAQ;AAAA,QAC7B,UAAU;AAAA,QACV,SAAS,MAAM,UAAU,IAAI;AAAA;AAAA,IAC/B;AAAA,KACF;AAEJ;","names":["jsx","jsxs","jsx","jsxs"]}
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
clearScheduleShareSearch,
|
|
3
3
|
readScheduleShareSearch,
|
|
4
4
|
writeScheduleShareSearch
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZYJ2SBF7.js";
|
|
6
6
|
import {
|
|
7
7
|
readSessionShareSearch,
|
|
8
8
|
writeSessionShareSearch
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7S7A3PNP.js";
|
|
10
10
|
|
|
11
11
|
// src/routing/paths.ts
|
|
12
12
|
var DEFAULTS = {
|
|
@@ -214,4 +214,4 @@ export {
|
|
|
214
214
|
matchLocation,
|
|
215
215
|
placesEqual
|
|
216
216
|
};
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-TJGGIEF6.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getErrorMessage,
|
|
3
3
|
useOptionalServer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7S7A3PNP.js";
|
|
5
5
|
import {
|
|
6
6
|
ThemeContext,
|
|
7
7
|
cn
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6UACSIIY.js";
|
|
9
9
|
|
|
10
10
|
// src/icons/Icon.tsx
|
|
11
11
|
import { createElement, isValidElement, useContext } from "react";
|
|
@@ -482,4 +482,4 @@ export {
|
|
|
482
482
|
DraftCatalogProvider,
|
|
483
483
|
useDraftCatalog
|
|
484
484
|
};
|
|
485
|
-
//# sourceMappingURL=chunk-
|
|
485
|
+
//# sourceMappingURL=chunk-TX6PB3DY.js.map
|