@truefoundry/trueforge-ui 0.3.0-rc.8 → 0.3.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +191 -4
  2. package/dist/{AgentCodeSnippets-T7PR6PDP.js → AgentCodeSnippets-EK7KMIY2.js} +7 -7
  3. package/dist/AgentMetricChart-UZCYOC4M.js +15 -0
  4. package/dist/AgentOverview-5UPMYHT2.js +314 -0
  5. package/dist/AgentOverview-5UPMYHT2.js.map +1 -0
  6. package/dist/{AgentSessionEventTimeline-SETKGGCI.js → AgentSessionEventTimeline-V6NPCYMW.js} +7 -7
  7. package/dist/{AgentSessionEventTimelineChart-4Y7PY5SJ.js → AgentSessionEventTimelineChart-YQWZBQCG.js} +7 -7
  8. package/dist/{AgentSessions-YCAPM5GK.js → AgentSessions-WNYVVB6Q.js} +81 -16
  9. package/dist/AgentSessions-WNYVVB6Q.js.map +1 -0
  10. package/dist/{ConnectorSettings-PXWRCFAL.js → ConnectorSettings-O4I24244.js} +12 -10
  11. package/dist/ConnectorSettings-O4I24244.js.map +1 -0
  12. package/dist/{DockLayout-JRKCKAG2.js → DockLayout-JMBZVMGB.js} +10 -10
  13. package/dist/{DrawerLayout-U7YPUZBR.js → DrawerLayout-E6G3IF6R.js} +11 -11
  14. package/dist/{ModelSettings-VXYMJEMO.js → ModelSettings-ZVXMXIU4.js} +7 -7
  15. package/dist/OpenUiFenceBlock-F3YVDKAG.js +9 -0
  16. package/dist/{SandboxSettings-6DRUH72J.js → SandboxSettings-H6BA2DJQ.js} +7 -7
  17. package/dist/SchedulesPage-FS2QZ5KB.js +15 -0
  18. package/dist/{SettingsBuilder-6FJVZLJT.js → SettingsBuilder-VA3VGWZC.js} +8 -8
  19. package/dist/{ShellRouteSync-SJXFKUAJ.js → ShellRouteSync-ZT4PBE6T.js} +4 -4
  20. package/dist/{SidebarLayout-EQ7EYCWR.js → SidebarLayout-ICXEN7ZL.js} +13 -13
  21. package/dist/SidebarLayout-ICXEN7ZL.js.map +1 -0
  22. package/dist/{SkillSettings-IHVI7FDM.js → SkillSettings-F5JGGFXR.js} +7 -7
  23. package/dist/{TrueForgeUIWithRouter-5OJFI3PF.js → TrueForgeUIWithRouter-MKJ7IEWG.js} +9 -9
  24. package/dist/{WidgetLayout-PN5ZDOLM.js → WidgetLayout-J7ZRW3V3.js} +10 -10
  25. package/dist/{chunk-PX6MNNN3.js → chunk-7VWUB5OV.js} +7 -5
  26. package/dist/{chunk-PX6MNNN3.js.map → chunk-7VWUB5OV.js.map} +1 -1
  27. package/dist/{chunk-OWXPMQ7N.js → chunk-BREN6OSX.js} +38 -14
  28. package/dist/chunk-BREN6OSX.js.map +1 -0
  29. package/dist/{chunk-2QTH6JHX.js → chunk-JEAULQNF.js} +3 -3
  30. package/dist/{chunk-3ZW74FHC.js → chunk-KDCVFHPZ.js} +23 -19
  31. package/dist/chunk-KDCVFHPZ.js.map +1 -0
  32. package/dist/{chunk-XANC4F2H.js → chunk-KZK2PQ4A.js} +2393 -1853
  33. package/dist/chunk-KZK2PQ4A.js.map +1 -0
  34. package/dist/{chunk-2UBSLCKB.js → chunk-MB7Z5FPI.js} +9 -9
  35. package/dist/{chunk-E33DFTVN.js → chunk-MEW7WZ7Q.js} +6 -6
  36. package/dist/chunk-NXK4XW4U.js +587 -0
  37. package/dist/chunk-NXK4XW4U.js.map +1 -0
  38. package/dist/{chunk-TMIILLHB.js → chunk-QI4HGU5E.js} +7 -7
  39. package/dist/chunk-QI4HGU5E.js.map +1 -0
  40. package/dist/{chunk-L7HNKKS2.js → chunk-SCIEO6CF.js} +2 -2
  41. package/dist/{chunk-2GIZY3JJ.js → chunk-U7WONUMR.js} +55 -4
  42. package/dist/chunk-U7WONUMR.js.map +1 -0
  43. package/dist/{chunk-T6QQV5LK.js → chunk-UN7WPTTK.js} +2 -2
  44. package/dist/{chunk-F7YRYFAF.js → chunk-VTOW2UIX.js} +4 -4
  45. package/dist/{chunk-CG75X77Q.js → chunk-WFIA627Q.js} +2 -2
  46. package/dist/index.d.ts +46 -11
  47. package/dist/index.js +16 -12
  48. package/dist/index.js.map +1 -1
  49. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +10 -3
  50. package/dist/plugins/trueforge-agent-server-adapter/index.js +37 -12
  51. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  52. package/dist/styles.css +1 -1
  53. package/package.json +3 -3
  54. package/dist/AgentMetricChart-J3RCSCAG.js +0 -15
  55. package/dist/AgentOverview-WC7WMNMS.js +0 -169
  56. package/dist/AgentOverview-WC7WMNMS.js.map +0 -1
  57. package/dist/AgentSessions-YCAPM5GK.js.map +0 -1
  58. package/dist/ConnectorSettings-PXWRCFAL.js.map +0 -1
  59. package/dist/OpenUiFenceBlock-KPZFLUSC.js +0 -9
  60. package/dist/SchedulesPage-2G6F4XO6.js +0 -15
  61. package/dist/SidebarLayout-EQ7EYCWR.js.map +0 -1
  62. package/dist/chunk-2GIZY3JJ.js.map +0 -1
  63. package/dist/chunk-3ZW74FHC.js.map +0 -1
  64. package/dist/chunk-JCL3Q7RW.js +0 -587
  65. package/dist/chunk-JCL3Q7RW.js.map +0 -1
  66. package/dist/chunk-OWXPMQ7N.js.map +0 -1
  67. package/dist/chunk-TMIILLHB.js.map +0 -1
  68. package/dist/chunk-XANC4F2H.js.map +0 -1
  69. /package/dist/{AgentCodeSnippets-T7PR6PDP.js.map → AgentCodeSnippets-EK7KMIY2.js.map} +0 -0
  70. /package/dist/{AgentMetricChart-J3RCSCAG.js.map → AgentMetricChart-UZCYOC4M.js.map} +0 -0
  71. /package/dist/{AgentSessionEventTimeline-SETKGGCI.js.map → AgentSessionEventTimeline-V6NPCYMW.js.map} +0 -0
  72. /package/dist/{AgentSessionEventTimelineChart-4Y7PY5SJ.js.map → AgentSessionEventTimelineChart-YQWZBQCG.js.map} +0 -0
  73. /package/dist/{DockLayout-JRKCKAG2.js.map → DockLayout-JMBZVMGB.js.map} +0 -0
  74. /package/dist/{DrawerLayout-U7YPUZBR.js.map → DrawerLayout-E6G3IF6R.js.map} +0 -0
  75. /package/dist/{ModelSettings-VXYMJEMO.js.map → ModelSettings-ZVXMXIU4.js.map} +0 -0
  76. /package/dist/{OpenUiFenceBlock-KPZFLUSC.js.map → OpenUiFenceBlock-F3YVDKAG.js.map} +0 -0
  77. /package/dist/{SandboxSettings-6DRUH72J.js.map → SandboxSettings-H6BA2DJQ.js.map} +0 -0
  78. /package/dist/{SchedulesPage-2G6F4XO6.js.map → SchedulesPage-FS2QZ5KB.js.map} +0 -0
  79. /package/dist/{SettingsBuilder-6FJVZLJT.js.map → SettingsBuilder-VA3VGWZC.js.map} +0 -0
  80. /package/dist/{ShellRouteSync-SJXFKUAJ.js.map → ShellRouteSync-ZT4PBE6T.js.map} +0 -0
  81. /package/dist/{SkillSettings-IHVI7FDM.js.map → SkillSettings-F5JGGFXR.js.map} +0 -0
  82. /package/dist/{TrueForgeUIWithRouter-5OJFI3PF.js.map → TrueForgeUIWithRouter-MKJ7IEWG.js.map} +0 -0
  83. /package/dist/{WidgetLayout-PN5ZDOLM.js.map → WidgetLayout-J7ZRW3V3.js.map} +0 -0
  84. /package/dist/{chunk-2QTH6JHX.js.map → chunk-JEAULQNF.js.map} +0 -0
  85. /package/dist/{chunk-2UBSLCKB.js.map → chunk-MB7Z5FPI.js.map} +0 -0
  86. /package/dist/{chunk-E33DFTVN.js.map → chunk-MEW7WZ7Q.js.map} +0 -0
  87. /package/dist/{chunk-L7HNKKS2.js.map → chunk-SCIEO6CF.js.map} +0 -0
  88. /package/dist/{chunk-T6QQV5LK.js.map → chunk-UN7WPTTK.js.map} +0 -0
  89. /package/dist/{chunk-F7YRYFAF.js.map → chunk-VTOW2UIX.js.map} +0 -0
  90. /package/dist/{chunk-CG75X77Q.js.map → chunk-WFIA627Q.js.map} +0 -0
@@ -3,40 +3,40 @@ import {
3
3
  AgentConfigDrawerContainer,
4
4
  NamedAgentHeaderLabel,
5
5
  ShellActions
6
- } from "./chunk-PX6MNNN3.js";
6
+ } from "./chunk-7VWUB5OV.js";
7
7
  import {
8
8
  Thread
9
- } from "./chunk-F7YRYFAF.js";
9
+ } from "./chunk-VTOW2UIX.js";
10
10
  import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useIsMobile,
13
13
  useSlot
14
- } from "./chunk-XANC4F2H.js";
15
- import "./chunk-T6QQV5LK.js";
14
+ } from "./chunk-KZK2PQ4A.js";
15
+ import "./chunk-UN7WPTTK.js";
16
16
  import {
17
17
  Icon,
18
18
  PageHeader,
19
19
  Spinner,
20
20
  auiButtonClass
21
- } from "./chunk-3ZW74FHC.js";
21
+ } from "./chunk-KDCVFHPZ.js";
22
22
  import {
23
23
  shellIsCreateAgent,
24
24
  useOptionalShellMode
25
- } from "./chunk-2GIZY3JJ.js";
25
+ } from "./chunk-U7WONUMR.js";
26
26
  import {
27
27
  useAui
28
28
  } from "./chunk-M6MHLVSO.js";
29
- import "./chunk-CG75X77Q.js";
29
+ import "./chunk-WFIA627Q.js";
30
30
  import {
31
31
  cn
32
- } from "./chunk-JCL3Q7RW.js";
32
+ } from "./chunk-NXK4XW4U.js";
33
33
 
34
34
  // src/layouts/DrawerLayout.tsx
35
35
  import { lazy, Suspense, useRef } from "react";
36
36
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
- var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-6FJVZLJT.js"));
37
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-VA3VGWZC.js"));
38
38
  var SchedulesPage = lazy(
39
- () => import("./SchedulesPage-2G6F4XO6.js").then((m) => ({ default: m.SchedulesPage }))
39
+ () => import("./SchedulesPage-FS2QZ5KB.js").then((m) => ({ default: m.SchedulesPage }))
40
40
  );
41
41
  function DrawerLayout({ className }) {
42
42
  const aui = useAui();
@@ -183,4 +183,4 @@ function DrawerLayout({ className }) {
183
183
  export {
184
184
  DrawerLayout
185
185
  };
186
- //# sourceMappingURL=DrawerLayout-U7YPUZBR.js.map
186
+ //# sourceMappingURL=DrawerLayout-E6G3IF6R.js.map
@@ -9,20 +9,20 @@ import {
9
9
  SearchInput_default,
10
10
  auiInputClass,
11
11
  useToasterOptional
12
- } from "./chunk-XANC4F2H.js";
13
- import "./chunk-T6QQV5LK.js";
12
+ } from "./chunk-KZK2PQ4A.js";
13
+ import "./chunk-UN7WPTTK.js";
14
14
  import {
15
15
  Icon
16
- } from "./chunk-3ZW74FHC.js";
16
+ } from "./chunk-KDCVFHPZ.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  useCatalogServer
20
- } from "./chunk-2GIZY3JJ.js";
20
+ } from "./chunk-U7WONUMR.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-CG75X77Q.js";
22
+ import "./chunk-WFIA627Q.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-JCL3Q7RW.js";
25
+ } from "./chunk-NXK4XW4U.js";
26
26
 
27
27
  // src/containers/SettingsBuilder/ModelSettings.tsx
28
28
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
@@ -1077,4 +1077,4 @@ var ModelSettings_default = ModelSettings;
1077
1077
  export {
1078
1078
  ModelSettings_default as default
1079
1079
  };
1080
- //# sourceMappingURL=ModelSettings-VXYMJEMO.js.map
1080
+ //# sourceMappingURL=ModelSettings-ZVXMXIU4.js.map
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ OpenUiFenceBlock
4
+ } from "./chunk-WFIA627Q.js";
5
+ import "./chunk-NXK4XW4U.js";
6
+ export {
7
+ OpenUiFenceBlock
8
+ };
9
+ //# sourceMappingURL=OpenUiFenceBlock-F3YVDKAG.js.map
@@ -8,21 +8,21 @@ import {
8
8
  Tooltip,
9
9
  auiInputClass,
10
10
  useToasterOptional
11
- } from "./chunk-XANC4F2H.js";
12
- import "./chunk-T6QQV5LK.js";
11
+ } from "./chunk-KZK2PQ4A.js";
12
+ import "./chunk-UN7WPTTK.js";
13
13
  import {
14
14
  Icon,
15
15
  Spinner
16
- } from "./chunk-3ZW74FHC.js";
16
+ } from "./chunk-KDCVFHPZ.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  useCatalogServer
20
- } from "./chunk-2GIZY3JJ.js";
20
+ } from "./chunk-U7WONUMR.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-CG75X77Q.js";
22
+ import "./chunk-WFIA627Q.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-JCL3Q7RW.js";
25
+ } from "./chunk-NXK4XW4U.js";
26
26
 
27
27
  // src/containers/SettingsBuilder/SandboxSettings.tsx
28
28
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState2 } from "react";
@@ -596,4 +596,4 @@ var SandboxSettings_default = SandboxSettings;
596
596
  export {
597
597
  SandboxSettings_default as default
598
598
  };
599
- //# sourceMappingURL=SandboxSettings-6DRUH72J.js.map
599
+ //# sourceMappingURL=SandboxSettings-H6BA2DJQ.js.map
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import {
3
+ SchedulesPage
4
+ } from "./chunk-QI4HGU5E.js";
5
+ import "./chunk-KZK2PQ4A.js";
6
+ import "./chunk-UN7WPTTK.js";
7
+ import "./chunk-KDCVFHPZ.js";
8
+ import "./chunk-U7WONUMR.js";
9
+ import "./chunk-M6MHLVSO.js";
10
+ import "./chunk-WFIA627Q.js";
11
+ import "./chunk-NXK4XW4U.js";
12
+ export {
13
+ SchedulesPage
14
+ };
15
+ //# sourceMappingURL=SchedulesPage-FS2QZ5KB.js.map
@@ -6,23 +6,23 @@ import {
6
6
  auiButtonClass,
7
7
  useCompactLayout,
8
8
  useDraftCatalog
9
- } from "./chunk-3ZW74FHC.js";
9
+ } from "./chunk-KDCVFHPZ.js";
10
10
  import {
11
11
  useOptionalCatalogServer,
12
12
  useOptionalRefreshServerCapabilities,
13
13
  useShellMode
14
- } from "./chunk-2GIZY3JJ.js";
14
+ } from "./chunk-U7WONUMR.js";
15
15
  import {
16
16
  cn
17
- } from "./chunk-JCL3Q7RW.js";
17
+ } from "./chunk-NXK4XW4U.js";
18
18
 
19
19
  // src/containers/SettingsBuilder/index.tsx
20
20
  import { lazy, Suspense, useCallback, useEffect, useMemo } from "react";
21
21
  import { jsx, jsxs } from "react/jsx-runtime";
22
- var ModelSettings = lazy(() => import("./ModelSettings-VXYMJEMO.js"));
23
- var ConnectorSettings = lazy(() => import("./ConnectorSettings-PXWRCFAL.js"));
24
- var SkillSettings = lazy(() => import("./SkillSettings-IHVI7FDM.js"));
25
- var SandboxSettings = lazy(() => import("./SandboxSettings-6DRUH72J.js"));
22
+ var ModelSettings = lazy(() => import("./ModelSettings-ZVXMXIU4.js"));
23
+ var ConnectorSettings = lazy(() => import("./ConnectorSettings-O4I24244.js"));
24
+ var SkillSettings = lazy(() => import("./SkillSettings-F5JGGFXR.js"));
25
+ var SandboxSettings = lazy(() => import("./SandboxSettings-H6BA2DJQ.js"));
26
26
  function SettingsSectionFallback() {
27
27
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-center py-8", role: "status", "aria-live": "polite", "aria-busy": "true", children: [
28
28
  /* @__PURE__ */ jsx(Spinner, { size: 20, className: "text-text-secondary" }),
@@ -144,4 +144,4 @@ var SettingsBuilder_default = TruefoundrySettingsBuilder;
144
144
  export {
145
145
  SettingsBuilder_default as default
146
146
  };
147
- //# sourceMappingURL=SettingsBuilder-6FJVZLJT.js.map
147
+ //# sourceMappingURL=SettingsBuilder-VA3VGWZC.js.map
@@ -4,13 +4,13 @@ import {
4
4
  matchLocation,
5
5
  placesEqual,
6
6
  sanitizeSearchForPlace
7
- } from "./chunk-2QTH6JHX.js";
7
+ } from "./chunk-JEAULQNF.js";
8
8
  import {
9
9
  sessionIsCreateAgent
10
10
  } from "./chunk-RDXBMTP5.js";
11
11
  import {
12
12
  findAgentByName
13
- } from "./chunk-T6QQV5LK.js";
13
+ } from "./chunk-UN7WPTTK.js";
14
14
  import {
15
15
  libraryAgentId,
16
16
  toEffectiveRoutes,
@@ -21,7 +21,7 @@ import {
21
21
  useServerCapabilities,
22
22
  useServerCapabilitiesSettled,
23
23
  useShellMode
24
- } from "./chunk-2GIZY3JJ.js";
24
+ } from "./chunk-U7WONUMR.js";
25
25
 
26
26
  // src/routing/ShellRouteSync.tsx
27
27
  import { useCallback, useEffect, useMemo, useRef } from "react";
@@ -387,4 +387,4 @@ function ShellRouteSync({
387
387
  export {
388
388
  ShellRouteSync
389
389
  };
390
- //# sourceMappingURL=ShellRouteSync-SJXFKUAJ.js.map
390
+ //# sourceMappingURL=ShellRouteSync-ZT4PBE6T.js.map
@@ -3,40 +3,40 @@ import {
3
3
  AgentConfigDrawerContainer,
4
4
  NamedAgentHeaderLabel,
5
5
  ShellActions
6
- } from "./chunk-PX6MNNN3.js";
6
+ } from "./chunk-7VWUB5OV.js";
7
7
  import {
8
8
  ThreadListContainer
9
- } from "./chunk-E33DFTVN.js";
9
+ } from "./chunk-MEW7WZ7Q.js";
10
10
  import {
11
11
  Thread
12
- } from "./chunk-F7YRYFAF.js";
12
+ } from "./chunk-VTOW2UIX.js";
13
13
  import "./chunk-BSIPI3KV.js";
14
14
  import {
15
15
  resolveBrandChrome,
16
16
  useChatHeaderContentVisible,
17
17
  useIsMobile,
18
18
  useSlot
19
- } from "./chunk-XANC4F2H.js";
20
- import "./chunk-T6QQV5LK.js";
19
+ } from "./chunk-KZK2PQ4A.js";
20
+ import "./chunk-UN7WPTTK.js";
21
21
  import {
22
22
  Icon,
23
23
  PageHeader,
24
24
  Spinner,
25
25
  auiButtonClass,
26
26
  sidebarRailButtonClassName
27
- } from "./chunk-3ZW74FHC.js";
27
+ } from "./chunk-KDCVFHPZ.js";
28
28
  import {
29
29
  shellIsCreateAgent,
30
30
  useOptionalShellMode
31
- } from "./chunk-2GIZY3JJ.js";
31
+ } from "./chunk-U7WONUMR.js";
32
32
  import {
33
33
  useAui
34
34
  } from "./chunk-M6MHLVSO.js";
35
- import "./chunk-CG75X77Q.js";
35
+ import "./chunk-WFIA627Q.js";
36
36
  import {
37
37
  cn,
38
38
  useBrand
39
- } from "./chunk-JCL3Q7RW.js";
39
+ } from "./chunk-NXK4XW4U.js";
40
40
 
41
41
  // src/layouts/SidebarLayout.tsx
42
42
  import {
@@ -47,9 +47,9 @@ import {
47
47
  useState
48
48
  } from "react";
49
49
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
50
- var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-6FJVZLJT.js"));
50
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-VA3VGWZC.js"));
51
51
  var SchedulesPage = lazy(
52
- () => import("./SchedulesPage-2G6F4XO6.js").then((m) => ({ default: m.SchedulesPage }))
52
+ () => import("./SchedulesPage-FS2QZ5KB.js").then((m) => ({ default: m.SchedulesPage }))
53
53
  );
54
54
  var brandLogoClassName = "h-5 w-5 max-w-40 shrink-0 object-contain";
55
55
  var railWidthClassName = "w-20";
@@ -160,7 +160,7 @@ function SidebarRail({
160
160
  /* @__PURE__ */ jsx(SidebarNav, {}),
161
161
  /* @__PURE__ */ jsxs("footer", { className: "flex shrink-0 flex-col items-center border-border p-2", children: [
162
162
  /* @__PURE__ */ jsx(ShellActions, { labeled: true, className: "flex-col" }),
163
- /* @__PURE__ */ jsx(UserAvatar, { labeled: true, className: "mt-1" })
163
+ /* @__PURE__ */ jsx(UserAvatar, { labeled: true, className: "mt-2 py-1.5" })
164
164
  ] })
165
165
  ]
166
166
  }
@@ -327,4 +327,4 @@ function SidebarLayout({ className }) {
327
327
  export {
328
328
  SidebarLayout
329
329
  };
330
- //# sourceMappingURL=SidebarLayout-EQ7EYCWR.js.map
330
+ //# sourceMappingURL=SidebarLayout-ICXEN7ZL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/layouts/SidebarLayout.tsx"],"sourcesContent":["'use client';\n\nimport {\n lazy,\n Suspense,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type Ref,\n} from 'react';\n\nimport { useAui } from '../assistant-ui.js';\nimport { auiButtonClass, sidebarRailButtonClassName } from '../atoms/lib/buttonClasses.js';\nimport { cn } from '../atoms/lib/cn.js';\nimport { useIsMobile } from '../atoms/lib/useIsMobile.js';\nimport { NamedAgentHeaderLabel } from '../atoms/NamedAgentHeaderLabel.js';\nimport { PageHeader } from '../atoms/PageHeader.js';\nimport { Spinner } from '../atoms/primitives/Spinner.js';\nimport { ShellActions } from '../atoms/ShellActions.js';\nimport { AgentConfigDrawerContainer } from '../containers/AgentConfigDrawerContainer.js';\nimport { Thread } from '../containers/Thread.js';\nimport { ThreadListContainer } from '../containers/ThreadListContainer.js';\nimport { useChatHeaderContentVisible } from '../hooks/useChatChromeActionsVisible.js';\nimport { Icon } from '../icons/Icon.js';\nimport { shellIsCreateAgent, useOptionalShellMode, type ShellMode } from '../server/ShellModeContext.js';\nimport { resolveBrandChrome } from '../theme/brand.js';\nimport { useSlot } from '../theme/SlotsProvider.js';\nimport { useBrand } from '../theme/ThemeProvider.js';\n\nconst TruefoundrySettingsBuilder = lazy(() => import('../containers/SettingsBuilder/index.js'));\nconst SchedulesPage = lazy(() =>\n import('../atoms/schedules/SchedulesPage.js').then(m => ({ default: m.SchedulesPage })),\n);\n\nconst brandLogoClassName = 'h-5 w-5 max-w-40 shrink-0 object-contain';\nconst railWidthClassName = 'w-20';\n\nconst railActionButtonClassName = cn(sidebarRailButtonClassName, 'text-sidebar-text');\n\nconst railSelectedClassName =\n 'bg-primary-button-bg font-medium text-primary-button-text hover:bg-primary-button-hover hover:text-primary-button-text';\n\nfunction isRecentHistoryVisible({ overlayOpen, mode }: { overlayOpen: boolean; mode?: ShellMode }): boolean {\n return !overlayOpen && mode?.status === 'active' && !mode.isCreateAgent;\n}\n\nfunction SidebarNav(): ReactNode {\n const aui = useAui();\n const shell = useOptionalShellMode();\n const AgentsLibraryButton = useSlot('AgentsLibraryButton');\n const SessionsBrowserButton = useSlot('SessionsBrowserButton');\n const SchedulesButton = useSlot('SchedulesButton');\n const showNewActions = shell?.isNewChatEnabled !== false;\n const overlayOpen =\n shell?.settingsOpen === true ||\n shell?.libraryOpen === true ||\n shell?.sessionsOpen === true ||\n shell?.schedulesOpen === true;\n const mode = shell?.mode;\n const newChatSelected =\n !overlayOpen &&\n mode?.status === 'active' &&\n !mode.isCreateAgent &&\n shell?.historyAgentFilter?.intent !== 'try-agent';\n const newAgentSelected = !overlayOpen && mode != null && shellIsCreateAgent(mode);\n\n const handleNewChat = () => {\n shell?.setLibraryOpen(false);\n shell?.setSessionsOpen(false);\n if (shell?.isComposerEnabled) {\n shell.openDraft();\n return;\n }\n shell?.setSettingsOpen(false);\n shell?.setSchedulesOpen(false);\n void Promise.resolve(aui.threads().switchToNewThread()).catch(() => undefined);\n };\n\n const handleNewAgent = () => {\n shell?.setLibraryOpen(false);\n shell?.setSessionsOpen(false);\n if (shell?.isComposerEnabled) {\n shell.openAgentBuilder();\n }\n };\n\n return (\n <nav className=\"flex min-h-0 flex-1 flex-col items-center gap-1 p-1\" aria-label=\"Sidebar\">\n {showNewActions ? (\n <button\n type=\"button\"\n aria-label=\"Start new chat\"\n title=\"New chat\"\n aria-current={newChatSelected ? 'page' : undefined}\n className={auiButtonClass({\n variant: 'ghost',\n className: cn(railActionButtonClassName, newChatSelected && railSelectedClassName),\n })}\n onClick={handleNewChat}\n >\n <Icon name=\"square-pen\" size={14} />\n <span className=\"text-center\">New Chat</span>\n </button>\n ) : null}\n {showNewActions && shell?.isComposerEnabled ? (\n <button\n type=\"button\"\n aria-label=\"Start new agent\"\n title=\"New Agent\"\n aria-current={newAgentSelected ? 'page' : undefined}\n className={auiButtonClass({\n variant: 'ghost',\n className: cn(railActionButtonClassName, newAgentSelected && railSelectedClassName),\n })}\n onClick={handleNewAgent}\n >\n <Icon name=\"agent-2\" size={14} />\n <span className=\"text-center whitespace-nowrap\">Build Agent</span>\n </button>\n ) : null}\n <AgentsLibraryButton compact />\n <SessionsBrowserButton compact />\n <SchedulesButton compact />\n </nav>\n );\n}\n\n/** Shared desktop + mobile icon+label rail (brand, nav, footer actions). */\nfunction SidebarRail({\n onNavigate,\n className,\n railRef,\n ...dialogProps\n}: {\n onNavigate?: () => void;\n className?: string;\n railRef?: Ref<HTMLElement>;\n} & Omit<ComponentPropsWithoutRef<'aside'>, 'children' | 'className'>): ReactNode {\n const brand = useBrand();\n const chrome = resolveBrandChrome(brand);\n const BrandLogo = useSlot('BrandLogo');\n const UserAvatar = useSlot('UserAvatar');\n\n return (\n <aside\n ref={railRef}\n className={cn(\n railWidthClassName,\n 'flex min-h-0 shrink-0 flex-col border-r border-border bg-sidebar-bg',\n className,\n )}\n onClick={event => {\n if (onNavigate == null) return;\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('button') != null) onNavigate();\n }}\n {...dialogProps}\n >\n <div className=\"flex h-14 w-full shrink-0 items-center justify-center text-text-primary\">\n <BrandLogo variant={chrome.collapsedVariant} className={brandLogoClassName} />\n </div>\n <SidebarNav />\n <footer className=\"flex shrink-0 flex-col items-center border-border p-2\">\n <ShellActions labeled className=\"flex-col\" />\n <UserAvatar labeled className=\"mt-2 py-1.5\" />\n </footer>\n </aside>\n );\n}\n\nexport function SidebarLayout({ className }: { className?: string }) {\n const shell = useOptionalShellMode();\n const isMobile = useIsMobile();\n const AgentDetailsPage = useSlot('AgentDetailsPage');\n const AgentsLibrary = useSlot('AgentsLibrary');\n const SessionsPage = useSlot('SessionsPage');\n const ClearChatButton = useSlot('ClearChatButton');\n const SaveAgentButton = useSlot('SaveAgentButton');\n const SelectAgentEmptyState = useSlot('SelectAgentEmptyState');\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const menuBtnRef = useRef<HTMLButtonElement>(null);\n const dialogRef = useRef<HTMLElement>(null);\n const mainRef = useRef<HTMLDivElement>(null);\n const wasOpen = useRef(false);\n const isIdle = shell?.mode.status === 'idle';\n const settingsOpen = shell?.settingsOpen === true;\n const libraryOpen = shell?.libraryOpen === true;\n const sessionsOpen = shell?.sessionsOpen === true;\n const schedulesOpen = shell?.schedulesOpen === true;\n const overlayOpen = settingsOpen || libraryOpen || sessionsOpen || schedulesOpen;\n const showAgentConfig =\n shell != null && shellIsCreateAgent(shell.mode) && !overlayOpen && (!isMobile || shell.agentConfigOpen);\n const showRecentHistory = isRecentHistoryVisible({ overlayOpen, mode: shell?.mode });\n const hasChatHeaderContent = useChatHeaderContentVisible();\n\n useEffect(() => {\n if (!mobileNavOpen) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setMobileNavOpen(false);\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [mobileNavOpen]);\n\n useEffect(() => {\n const main = mainRef.current;\n if (mobileNavOpen) {\n wasOpen.current = true;\n if (main) main.inert = true;\n dialogRef.current?.focus();\n return;\n }\n if (wasOpen.current) {\n if (main) main.inert = false;\n menuBtnRef.current?.focus();\n wasOpen.current = false;\n }\n }, [mobileNavOpen]);\n\n return (\n <div className={cn('relative flex h-full min-h-0 w-full min-w-0', className)}>\n <SidebarRail className=\"hidden md:flex\" />\n\n {showAgentConfig ? (\n <aside\n role=\"dialog\"\n aria-label=\"Agent Config\"\n className=\"absolute inset-y-0 left-0 z-20 w-full max-w-sm border-r border-border shadow-xl md:static md:z-auto md:max-w-140 md:flex-1 md:shadow-none 2xl:max-w-150\"\n >\n <AgentConfigDrawerContainer showClose={isMobile} />\n </aside>\n ) : null}\n\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col bg-primary-bg\">\n {/* Desktop keeps shell chrome in the rail footer (always mounted, including\n when visually hidden on small screens so host action-slot state persists).\n Mobile reaches theme/settings via the nav drawer rail. */}\n <PageHeader\n className={cn(\n 'bg-topbar-bg',\n // Desktop: hide when settings/idle or the thread header has nothing to show\n // (empty untitled draft). Mobile still needs the menu button.\n // Builder mode keeps New Agent and its actions beside the persistent config.\n (overlayOpen || isIdle || !hasChatHeaderContent) && 'md:hidden',\n )}\n start={\n !overlayOpen ? (\n <button\n ref={menuBtnRef}\n type=\"button\"\n aria-label=\"Navigation\"\n aria-expanded={mobileNavOpen}\n className={cn(auiButtonClass({ variant: 'ghost', size: 'icon' }), 'md:hidden')}\n onClick={() => setMobileNavOpen(true)}\n >\n <Icon name=\"bars\" />\n </button>\n ) : null\n }\n title={!overlayOpen ? <NamedAgentHeaderLabel /> : null}\n end={\n !overlayOpen ? (\n <>\n <ClearChatButton />\n <SaveAgentButton />\n </>\n ) : null\n }\n />\n\n <div className=\"flex min-h-0 min-w-0 flex-1\">\n {showRecentHistory ? (\n <aside\n aria-label=\"Recent chats\"\n className=\"hidden min-h-0 w-64 shrink-0 border-r border-border bg-sidebar-bg md:flex\"\n >\n <ThreadListContainer variant=\"recent-history\" />\n </aside>\n ) : null}\n\n <div ref={mainRef} className=\"min-h-0 min-w-0 flex-1\">\n {settingsOpen ? (\n <Suspense\n fallback={\n <div\n className=\"flex h-full items-center justify-center\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n >\n <Spinner size={28} className=\"text-text-primary\" />\n <span className=\"sr-only\">Loading</span>\n </div>\n }\n >\n <TruefoundrySettingsBuilder />\n </Suspense>\n ) : sessionsOpen ? (\n <SessionsPage />\n ) : libraryOpen && shell?.libraryAgentId != null ? (\n <AgentDetailsPage key={shell.libraryAgentId} agentId={shell.libraryAgentId} />\n ) : libraryOpen ? (\n <AgentsLibrary onSelectAgent={() => setMobileNavOpen(false)} />\n ) : schedulesOpen ? (\n <Suspense\n fallback={\n <div\n className=\"flex h-full items-center justify-center\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n >\n <Spinner size={28} className=\"text-text-primary\" />\n <span className=\"sr-only\">Loading</span>\n </div>\n }\n >\n <SchedulesPage />\n </Suspense>\n ) : isIdle ? (\n <SelectAgentEmptyState />\n ) : (\n <Thread />\n )}\n </div>\n </div>\n </div>\n\n {/* Mobile: same narrow rail as desktop */}\n {mobileNavOpen ? (\n <>\n <button\n type=\"button\"\n aria-label=\"Close navigation\"\n className=\"absolute inset-0 z-[9] cursor-pointer bg-[var(--overlay)] md:hidden\"\n onClick={() => setMobileNavOpen(false)}\n />\n <SidebarRail\n railRef={dialogRef}\n role=\"dialog\"\n aria-label=\"Navigation\"\n tabIndex={-1}\n onNavigate={() => setMobileNavOpen(false)}\n className=\"absolute inset-y-0 left-0 z-10 shadow-lg outline-none md:hidden\"\n />\n </>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -5,18 +5,18 @@ import {
5
5
  SearchInput_default,
6
6
  auiInputClass,
7
7
  useToasterOptional
8
- } from "./chunk-XANC4F2H.js";
9
- import "./chunk-T6QQV5LK.js";
8
+ } from "./chunk-KZK2PQ4A.js";
9
+ import "./chunk-UN7WPTTK.js";
10
10
  import {
11
11
  Icon
12
- } from "./chunk-3ZW74FHC.js";
12
+ } from "./chunk-KDCVFHPZ.js";
13
13
  import {
14
14
  getErrorMessage,
15
15
  useCatalogServer
16
- } from "./chunk-2GIZY3JJ.js";
16
+ } from "./chunk-U7WONUMR.js";
17
17
  import "./chunk-M6MHLVSO.js";
18
- import "./chunk-CG75X77Q.js";
19
- import "./chunk-JCL3Q7RW.js";
18
+ import "./chunk-WFIA627Q.js";
19
+ import "./chunk-NXK4XW4U.js";
20
20
 
21
21
  // src/containers/SettingsBuilder/SkillSettings.tsx
22
22
  import { useCallback, useEffect, useMemo, useState as useState2 } from "react";
@@ -392,4 +392,4 @@ var SkillSettings_default = SkillSettings;
392
392
  export {
393
393
  SkillSettings_default as default
394
394
  };
395
- //# sourceMappingURL=SkillSettings-IHVI7FDM.js.map
395
+ //# sourceMappingURL=SkillSettings-F5JGGFXR.js.map
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  TrueForgeUIShell
4
- } from "./chunk-OWXPMQ7N.js";
4
+ } from "./chunk-BREN6OSX.js";
5
5
  import "./chunk-DJUFS2BW.js";
6
6
  import "./chunk-BSIPI3KV.js";
7
7
  import {
8
8
  resolveRoutesConfig
9
- } from "./chunk-2QTH6JHX.js";
9
+ } from "./chunk-JEAULQNF.js";
10
10
  import "./chunk-Y6S4OVVQ.js";
11
11
  import "./chunk-RDXBMTP5.js";
12
- import "./chunk-XANC4F2H.js";
13
- import "./chunk-T6QQV5LK.js";
14
- import "./chunk-3ZW74FHC.js";
15
- import "./chunk-2GIZY3JJ.js";
12
+ import "./chunk-KZK2PQ4A.js";
13
+ import "./chunk-UN7WPTTK.js";
14
+ import "./chunk-KDCVFHPZ.js";
15
+ import "./chunk-U7WONUMR.js";
16
16
  import "./chunk-M6MHLVSO.js";
17
- import "./chunk-CG75X77Q.js";
18
- import "./chunk-JCL3Q7RW.js";
17
+ import "./chunk-WFIA627Q.js";
18
+ import "./chunk-NXK4XW4U.js";
19
19
 
20
20
  // src/containers/TrueForgeUIWithRouter.tsx
21
21
  import { useMemo } from "react";
@@ -31,4 +31,4 @@ function TrueForgeUIWithRouter({
31
31
  export {
32
32
  TrueForgeUIWithRouter
33
33
  };
34
- //# sourceMappingURL=TrueForgeUIWithRouter-5OJFI3PF.js.map
34
+ //# sourceMappingURL=TrueForgeUIWithRouter-MKJ7IEWG.js.map
@@ -1,28 +1,28 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-2UBSLCKB.js";
5
- import "./chunk-PX6MNNN3.js";
6
- import "./chunk-F7YRYFAF.js";
4
+ } from "./chunk-MB7Z5FPI.js";
5
+ import "./chunk-7VWUB5OV.js";
6
+ import "./chunk-VTOW2UIX.js";
7
7
  import {
8
8
  useWidgetVisibility
9
9
  } from "./chunk-DJUFS2BW.js";
10
10
  import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useSlot
13
- } from "./chunk-XANC4F2H.js";
14
- import "./chunk-T6QQV5LK.js";
13
+ } from "./chunk-KZK2PQ4A.js";
14
+ import "./chunk-UN7WPTTK.js";
15
15
  import {
16
16
  CompactLayoutProvider,
17
17
  Icon,
18
18
  auiButtonClass
19
- } from "./chunk-3ZW74FHC.js";
20
- import "./chunk-2GIZY3JJ.js";
19
+ } from "./chunk-KDCVFHPZ.js";
20
+ import "./chunk-U7WONUMR.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-CG75X77Q.js";
22
+ import "./chunk-WFIA627Q.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-JCL3Q7RW.js";
25
+ } from "./chunk-NXK4XW4U.js";
26
26
 
27
27
  // src/layouts/WidgetLayout.tsx
28
28
  import { useEffect, useRef } from "react";
@@ -104,4 +104,4 @@ function WidgetLayout({ className }) {
104
104
  export {
105
105
  WidgetLayout
106
106
  };
107
- //# sourceMappingURL=WidgetLayout-PN5ZDOLM.js.map
107
+ //# sourceMappingURL=WidgetLayout-J7ZRW3V3.js.map
@@ -5,14 +5,14 @@ import {
5
5
  useResourcePermissions,
6
6
  useSlot,
7
7
  withInitialUserMessages
8
- } from "./chunk-XANC4F2H.js";
8
+ } from "./chunk-KZK2PQ4A.js";
9
9
  import {
10
10
  Icon,
11
11
  auiButtonClass,
12
12
  pageHeaderTitleClassName,
13
13
  sidebarRailButtonClassName,
14
14
  useDraftCatalog
15
- } from "./chunk-3ZW74FHC.js";
15
+ } from "./chunk-KDCVFHPZ.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-2GIZY3JJ.js";
24
+ } from "./chunk-U7WONUMR.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-JCL3Q7RW.js";
31
+ } from "./chunk-NXK4XW4U.js";
32
32
 
33
33
  // src/atoms/NamedAgentHeaderLabel.tsx
34
34
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -255,6 +255,7 @@ function AgentConfigDrawerContainer({ showClose = false }) {
255
255
  modelsError: catalog.error,
256
256
  skills: catalog.skills,
257
257
  skillsAvailable: capabilities?.skill.enabled === true,
258
+ webSearchAvailable: capabilities?.webSearch?.enabled === true,
258
259
  instructions: instructionDraft,
259
260
  onOpenEditor: (nextEditor) => {
260
261
  if (canManageAgent) setEditor(nextEditor);
@@ -276,6 +277,7 @@ function AgentConfigDrawerContainer({ showClose = false }) {
276
277
  error: catalog.error,
277
278
  skillsDisabled: capabilities?.skill.enabled !== true,
278
279
  sandboxAvailable: capabilities?.sandbox.enabled === true,
280
+ webSearchAvailable: capabilities?.webSearch?.enabled === true,
279
281
  instructions: instructionDraft,
280
282
  onInstructionsSave: saveInstructions,
281
283
  ...server?.getMcpConnector === void 0 ? {} : { loadMcpConnector },
@@ -293,4 +295,4 @@ export {
293
295
  ShellActions,
294
296
  AgentConfigDrawerContainer
295
297
  };
296
- //# sourceMappingURL=chunk-PX6MNNN3.js.map
298
+ //# sourceMappingURL=chunk-7VWUB5OV.js.map
@@ -1 +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 useTrueFoundryAgentSpec,\n useTrueFoundryFlushAgentSpec,\n useTrueFoundryUpdateAgentSpec,\n} from '@truefoundry/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 } = useTrueFoundryAgentSpec();\n const updateAgentSpec = useTrueFoundryUpdateAgentSpec();\n const flushAgentSpec = useTrueFoundryFlushAgentSpec();\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 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 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":"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","names":["jsx","jsxs","jsx","jsxs"]}
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 useTrueFoundryAgentSpec,\n useTrueFoundryFlushAgentSpec,\n useTrueFoundryUpdateAgentSpec,\n} from '@truefoundry/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 } = useTrueFoundryAgentSpec();\n const updateAgentSpec = useTrueFoundryUpdateAgentSpec();\n const flushAgentSpec = useTrueFoundryFlushAgentSpec();\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":"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","names":["jsx","jsxs","jsx","jsxs"]}