@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.
Files changed (97) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/NOTICE +1 -1
  3. package/README.md +26 -89
  4. package/dist/{AgentCodeSnippets-EK7KMIY2.js → AgentCodeSnippets-BPC6TD7K.js} +7 -7
  5. package/dist/AgentMetricChart-T6DZZ37Y.js +15 -0
  6. package/dist/{AgentOverview-5UPMYHT2.js → AgentOverview-BFU7EO4Y.js} +7 -7
  7. package/dist/{AgentSessionEventTimeline-V6NPCYMW.js → AgentSessionEventTimeline-ATVBTYDF.js} +7 -7
  8. package/dist/{AgentSessionEventTimelineChart-YQWZBQCG.js → AgentSessionEventTimelineChart-H577STKW.js} +7 -7
  9. package/dist/{AgentSessions-WNYVVB6Q.js → AgentSessions-GDLBXFIK.js} +8 -8
  10. package/dist/{ConnectorSettings-O4I24244.js → ConnectorSettings-FYNF6J3F.js} +7 -7
  11. package/dist/{DockLayout-JMBZVMGB.js → DockLayout-SGUOMZ5E.js} +10 -10
  12. package/dist/{DrawerLayout-E6G3IF6R.js → DrawerLayout-MJJYQDCW.js} +11 -11
  13. package/dist/{ModelSettings-ZVXMXIU4.js → ModelSettings-6EW7U2MP.js} +9 -9
  14. package/dist/ModelSettings-6EW7U2MP.js.map +1 -0
  15. package/dist/OpenUiFenceBlock-BZPFNXWZ.js +9 -0
  16. package/dist/{SandboxSettings-H6BA2DJQ.js → SandboxSettings-HQVBGHXZ.js} +7 -7
  17. package/dist/SchedulesPage-ZO3PJY4J.js +15 -0
  18. package/dist/{SettingsBuilder-VA3VGWZC.js → SettingsBuilder-FODMI7HG.js} +20 -11
  19. package/dist/SettingsBuilder-FODMI7HG.js.map +1 -0
  20. package/dist/{ShellRouteSync-ZT4PBE6T.js → ShellRouteSync-4I5BP2VY.js} +4 -4
  21. package/dist/{SidebarLayout-ICXEN7ZL.js → SidebarLayout-ZLWG2YGO.js} +12 -12
  22. package/dist/{SkillSettings-F5JGGFXR.js → SkillSettings-AFSAOU6O.js} +7 -7
  23. package/dist/{TrueForgeUIWithRouter-MKJ7IEWG.js → TrueForgeUIWithRouter-RQX5XWGI.js} +9 -9
  24. package/dist/WebSearchSettings-BW4CWGRR.js +322 -0
  25. package/dist/WebSearchSettings-BW4CWGRR.js.map +1 -0
  26. package/dist/{WidgetLayout-J7ZRW3V3.js → WidgetLayout-WIPKUIL4.js} +10 -10
  27. package/dist/chunk-6UACSIIY.js +587 -0
  28. package/dist/chunk-6UACSIIY.js.map +1 -0
  29. package/dist/{chunk-U7WONUMR.js → chunk-7S7A3PNP.js} +6 -4
  30. package/dist/chunk-7S7A3PNP.js.map +1 -0
  31. package/dist/{chunk-VTOW2UIX.js → chunk-GHXA46A2.js} +78 -43
  32. package/dist/chunk-GHXA46A2.js.map +1 -0
  33. package/dist/{chunk-7AAO4UDQ.js → chunk-HCGDDQ4G.js} +5 -5
  34. package/dist/chunk-HCGDDQ4G.js.map +1 -0
  35. package/dist/{chunk-SCIEO6CF.js → chunk-HDMBSLDC.js} +2 -2
  36. package/dist/{chunk-KZK2PQ4A.js → chunk-MLMR26WQ.js} +244 -152
  37. package/dist/chunk-MLMR26WQ.js.map +1 -0
  38. package/dist/{chunk-BREN6OSX.js → chunk-Q22RHDYS.js} +42 -61
  39. package/dist/chunk-Q22RHDYS.js.map +1 -0
  40. package/dist/{chunk-WFIA627Q.js → chunk-QKFMAQ7O.js} +2 -2
  41. package/dist/{chunk-7VWUB5OV.js → chunk-TFQWCBFQ.js} +12 -12
  42. package/dist/chunk-TFQWCBFQ.js.map +1 -0
  43. package/dist/{chunk-JEAULQNF.js → chunk-TJGGIEF6.js} +3 -3
  44. package/dist/{chunk-KDCVFHPZ.js → chunk-TX6PB3DY.js} +3 -3
  45. package/dist/{chunk-MEW7WZ7Q.js → chunk-VBZXCX7Y.js} +253 -99
  46. package/dist/chunk-VBZXCX7Y.js.map +1 -0
  47. package/dist/{chunk-QI4HGU5E.js → chunk-Y47LJKXD.js} +13 -19
  48. package/dist/{chunk-QI4HGU5E.js.map → chunk-Y47LJKXD.js.map} +1 -1
  49. package/dist/{chunk-MB7Z5FPI.js → chunk-YN5ZBBQM.js} +9 -9
  50. package/dist/{chunk-UN7WPTTK.js → chunk-ZYJ2SBF7.js} +2 -2
  51. package/dist/createTrueForgeServer-DiSooQdh.d.ts +42 -0
  52. package/dist/index.d.ts +45 -39
  53. package/dist/index.js +43 -43
  54. package/dist/index.js.map +1 -1
  55. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +57 -894
  56. package/dist/plugins/trueforge-agent-server-adapter/index.js +110 -7
  57. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  58. package/dist/styles.css +1 -1
  59. package/package.json +8 -7
  60. package/dist/AgentMetricChart-UZCYOC4M.js +0 -15
  61. package/dist/ModelSettings-ZVXMXIU4.js.map +0 -1
  62. package/dist/OpenUiFenceBlock-F3YVDKAG.js +0 -9
  63. package/dist/SchedulesPage-FS2QZ5KB.js +0 -15
  64. package/dist/SettingsBuilder-VA3VGWZC.js.map +0 -1
  65. package/dist/chunk-7AAO4UDQ.js.map +0 -1
  66. package/dist/chunk-7VWUB5OV.js.map +0 -1
  67. package/dist/chunk-BREN6OSX.js.map +0 -1
  68. package/dist/chunk-KZK2PQ4A.js.map +0 -1
  69. package/dist/chunk-MEW7WZ7Q.js.map +0 -1
  70. package/dist/chunk-NXK4XW4U.js +0 -587
  71. package/dist/chunk-NXK4XW4U.js.map +0 -1
  72. package/dist/chunk-U7WONUMR.js.map +0 -1
  73. package/dist/chunk-VTOW2UIX.js.map +0 -1
  74. package/dist/createTrueFoundryServer-B_FYhSdn.d.ts +0 -42
  75. /package/dist/{AgentCodeSnippets-EK7KMIY2.js.map → AgentCodeSnippets-BPC6TD7K.js.map} +0 -0
  76. /package/dist/{AgentMetricChart-UZCYOC4M.js.map → AgentMetricChart-T6DZZ37Y.js.map} +0 -0
  77. /package/dist/{AgentOverview-5UPMYHT2.js.map → AgentOverview-BFU7EO4Y.js.map} +0 -0
  78. /package/dist/{AgentSessionEventTimeline-V6NPCYMW.js.map → AgentSessionEventTimeline-ATVBTYDF.js.map} +0 -0
  79. /package/dist/{AgentSessionEventTimelineChart-YQWZBQCG.js.map → AgentSessionEventTimelineChart-H577STKW.js.map} +0 -0
  80. /package/dist/{AgentSessions-WNYVVB6Q.js.map → AgentSessions-GDLBXFIK.js.map} +0 -0
  81. /package/dist/{ConnectorSettings-O4I24244.js.map → ConnectorSettings-FYNF6J3F.js.map} +0 -0
  82. /package/dist/{DockLayout-JMBZVMGB.js.map → DockLayout-SGUOMZ5E.js.map} +0 -0
  83. /package/dist/{DrawerLayout-E6G3IF6R.js.map → DrawerLayout-MJJYQDCW.js.map} +0 -0
  84. /package/dist/{OpenUiFenceBlock-F3YVDKAG.js.map → OpenUiFenceBlock-BZPFNXWZ.js.map} +0 -0
  85. /package/dist/{SandboxSettings-H6BA2DJQ.js.map → SandboxSettings-HQVBGHXZ.js.map} +0 -0
  86. /package/dist/{SchedulesPage-FS2QZ5KB.js.map → SchedulesPage-ZO3PJY4J.js.map} +0 -0
  87. /package/dist/{ShellRouteSync-ZT4PBE6T.js.map → ShellRouteSync-4I5BP2VY.js.map} +0 -0
  88. /package/dist/{SidebarLayout-ICXEN7ZL.js.map → SidebarLayout-ZLWG2YGO.js.map} +0 -0
  89. /package/dist/{SkillSettings-F5JGGFXR.js.map → SkillSettings-AFSAOU6O.js.map} +0 -0
  90. /package/dist/{TrueForgeUIWithRouter-MKJ7IEWG.js.map → TrueForgeUIWithRouter-RQX5XWGI.js.map} +0 -0
  91. /package/dist/{WidgetLayout-J7ZRW3V3.js.map → WidgetLayout-WIPKUIL4.js.map} +0 -0
  92. /package/dist/{chunk-SCIEO6CF.js.map → chunk-HDMBSLDC.js.map} +0 -0
  93. /package/dist/{chunk-WFIA627Q.js.map → chunk-QKFMAQ7O.js.map} +0 -0
  94. /package/dist/{chunk-JEAULQNF.js.map → chunk-TJGGIEF6.js.map} +0 -0
  95. /package/dist/{chunk-KDCVFHPZ.js.map → chunk-TX6PB3DY.js.map} +0 -0
  96. /package/dist/{chunk-MB7Z5FPI.js.map → chunk-YN5ZBBQM.js.map} +0 -0
  97. /package/dist/{chunk-UN7WPTTK.js.map → chunk-ZYJ2SBF7.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0-rc.0
4
+
5
+ ### Minor Changes
6
+
7
+ - a855122: Rename the published runtime package to `@truefoundry/trueforge-assistant-ui-runtime`, move it into the TrueForge workspace, rename its public runtime APIs to TrueForge, and remove the legacy TrueFoundry server adapter and server configuration.
8
+ - 829ac6e: Add OSS web-search provider settings and catalog (Parallel): singleton settings/catalog APIs, optional API key, and UI adapter without mode config so built-in web search works outside TrueFoundry mode.
9
+ - 829ac6e: Add web-search provider settings catalog port and Settings UI so admins can configure Parallel web search (API key + mode) in standalone/OIDC deployments.
10
+
11
+ ### Patch Changes
12
+
13
+ - 0da3794: Stop the MCP OAuth opener from closing the popup as soon as the callback broadcasts, so the success/failure screen can show before the popup closes itself.
14
+ - Updated dependencies [829ac6e]
15
+ - Updated dependencies [a855122]
16
+ - Updated dependencies [829ac6e]
17
+ - Updated dependencies [829ac6e]
18
+ - @truefoundry/trueforge-sdk@0.2.1-rc.0
19
+ - @truefoundry/trueforge-assistant-ui-runtime@0.2.0-rc.0
20
+
21
+ ## 0.3.1
22
+
23
+ ### Patch Changes
24
+
25
+ - 56b3a59: Keep newly saved builders editable until the user leaves the build-agent page, then start fresh when they return.
26
+ - a122ba1: Show successful MCP authentication in chat, automatically continue after every required server connects, and indicate while the turn is starting. Confirm OAuth against the chat MCP connector read (`getMcpConnector`) so non-admins are not blocked by settings-only catalog GETs, and ignore authorize callbacks after the prompt unmounts.
27
+ - acad1a1: Add chat-history rename for servers that implement `renameSession`, including TrueForge harness title updates.
28
+ - a08c75a: Show absolute session activity timestamps on hover, label deferred MCP tools in the session timeline, and fix Safari collapsing contentSized modal bodies (flex-auto).
29
+
3
30
  ## 0.3.0
4
31
 
5
32
  ### Minor Changes
package/NOTICE CHANGED
@@ -8,7 +8,7 @@ dependencies and their licenses include (non-exhaustive):
8
8
 
9
9
  - @assistant-ui/react / @assistant-ui/core — see their respective LICENSE files
10
10
  - @openuidev/react-ui and related OpenUI packages — see their LICENSE files
11
- - @truefoundry/assistant-ui-runtime — see its LICENSE
11
+ - @truefoundry/trueforge-assistant-ui-runtime — see its LICENSE
12
12
  - lucide-react — ISC / Lucide license
13
13
  - monaco-editor — see its LICENSE
14
14
  - react-markdown / remark-gfm / react-syntax-highlighter — see their respective LICENSE files
package/README.md CHANGED
@@ -4,15 +4,15 @@
4
4
  [npm](https://www.npmjs.com/package/@truefoundry/trueforge-ui)
5
5
  [License](./LICENSE)
6
6
 
7
- A themeable, composable React SDK for building production-ready AI agent chat applications.
8
- Build your own agent chat platform with a flexible UI layer that works with **TrueFoundry** (Control Plane + Gateway), **TrueForge** (harness), or any custom backend. The SDK is fully open source, giving you complete control over your architecture, components, and integrations.
7
+ A themeable, composable React SDK for building production-ready AI agent chat applications.
8
+ Build your own agent chat platform with a flexible UI layer that works with **TrueForge** or any custom backend. The SDK is fully open source, giving you complete control over your architecture, components, and integrations.
9
9
  Powered by [assistant-ui](https://www.assistant-ui.com/), it follows the familiar **shadcn/ui** and **Tailwind CSS variable** theming conventions, making it easy to customize every aspect of the experience.
10
10
 
11
11
  **Features**
12
12
 
13
13
  - **Fully themeable** — Use built-in themes inspired by **TrueFoundry**, **ChatGPT**, **Claude**, and **Gemini**, or create your own brand identity.
14
14
  - **Composable by design** — Swap layouts, components, and interaction patterns to fit your product.
15
- - **Backend agnostic** — Connect to **TrueFoundry**, **TrueForge**, or any custom API via `TrueForgeServerConfig`.
15
+ - **Backend agnostic** — Connect to **TrueForge** or any custom API via `TrueForgeServerConfig`.
16
16
  - **Open source** — Extend, customize, and contribute without vendor lock-in.
17
17
  - **Built on assistant-ui** — Leverage a modern React foundation with seamless shadcn/ui and Tailwind CSS integration.
18
18
  - **Production ready** — Focus on your agents while the SDK handles the chat experience.
@@ -75,31 +75,6 @@ See [docs/compatibility.md](./docs/compatibility.md) for version ranges.
75
75
 
76
76
  ## Getting started
77
77
 
78
- **TrueFoundry** (`type: "truefoundry"`) — Control Plane + Gateway
79
-
80
- Zero-config path: the SDK builds the agent UI server from your API key and
81
- control plane URL (optional explicit gateway URL).
82
-
83
- ```tsx
84
- import { TrueForgeUI } from '@truefoundry/trueforge-ui';
85
-
86
- export default function App() {
87
- return (
88
- <div style={{ height: '100dvh' }}>
89
- <TrueForgeUI
90
- server={{
91
- type: 'truefoundry',
92
- apiKey: process.env.TFY_API_KEY!,
93
- controlPlaneURL: process.env.TFY_CONTROL_PLANE_URL!,
94
- // gatewayPlaneURL: process.env.TFY_GATEWAY_URL, // optional
95
- }}
96
- layout="sidebar"
97
- />
98
- </div>
99
- );
100
- }
101
- ```
102
-
103
78
  **TrueForge** (`type: "trueforge"`) — Harness
104
79
 
105
80
  Zero-config path for the TrueForge / Harness API. The SDK dynamically loads
@@ -159,34 +134,22 @@ the factory outside `<TrueForgeUI />`.
159
134
 
160
135
  **Custom** — bring your own `AgentUIServer`
161
136
 
162
- Use this when you compose chat + builder yourself (e.g. chat-only gateway
163
- adapter + stub catalog, or a full host BFF). Pass the server object directly.
137
+ Pass a complete server object directly. Use `createTrueForgeServer` to compose separately implemented ports.
164
138
 
165
139
  ```tsx
166
- import { TrueForgeUI, createTrueFoundryServer } from '@truefoundry/trueforge-ui';
167
- import { createTrueFoundryChatServer } from '@truefoundry/assistant-ui-runtime/plugins/truefoundry-agent-server-adapter';
140
+ import { TrueForgeUI, createTrueForgeServer } from '@truefoundry/trueforge-ui';
168
141
 
169
- const chatServer = createTrueFoundryChatServer({
170
- apiKey: process.env.TFY_API_KEY!,
171
- baseUrl: process.env.TFY_GATEWAY_URL!,
172
- });
173
-
174
- const server = createTrueFoundryServer({
142
+ const server = createTrueForgeServer({
175
143
  chatServer,
176
- getModels: async () => [],
177
- getSkills: async () => [],
178
- getMcp: async () => [],
179
- searchAgents: async () => [],
180
- saveAgent: async () => ({}),
144
+ getCapabilities,
145
+ getModels,
146
+ getSkills,
147
+ getMcp,
148
+ searchAgents,
149
+ saveAgent,
181
150
  });
182
151
 
183
- export default function App() {
184
- return (
185
- <div style={{ height: '100dvh' }}>
186
- <TrueForgeUI server={server} layout="sidebar" />
187
- </div>
188
- );
189
- }
152
+ <TrueForgeUI server={server} layout="sidebar" />;
190
153
  ```
191
154
 
192
155
  ## `<TrueForgeUI />` props
@@ -196,10 +159,10 @@ export default function App() {
196
159
  ```tsx
197
160
  <TrueForgeUI
198
161
  server={{
199
- type: 'truefoundry',
200
- apiKey: process.env.TFY_API_KEY!,
201
- controlPlaneURL: process.env.TFY_CONTROL_PLANE_URL!,
202
- }} // or agentServer / { type: "trueforge", token?, baseUrl?, fetch? }
162
+ type: 'trueforge',
163
+ baseUrl: process.env.TRUEFORGE_BASE_URL,
164
+ token: process.env.TRUEFORGE_TOKEN,
165
+ }} // or a ready AgentUIServer
203
166
  layout="sidebar" // 'sidebar' | 'drawer' | 'dock' | 'widget' | CustomLayout
204
167
  agentConfig={{
205
168
  mode: 'AgentLibraryWithComposer', // default when omitted
@@ -216,7 +179,7 @@ export default function App() {
216
179
 
217
180
  | Prop | Type | Required | Description |
218
181
  | ------------------ | -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
219
- | `server` | `TrueForgeServerConfig` | ✅ | Built-in config (`truefoundry` / `trueforge`) **or** a ready `AgentUIServer`. |
182
+ | `server` | `TrueForgeServerConfig` | ✅ | Built-in `trueforge` config **or** a ready `AgentUIServer`. |
220
183
  | `layout` | `LayoutProp` | ✅ | Built-in layout string **or** a custom React component. |
221
184
  | `agentConfig` | `AgentConfig` | — | Shell mode: SingleAgent / AgentLibrary / AgentComposer / AgentLibraryWithComposer. Defaults to library + composer. |
222
185
  | `theme` | `ThemeConfig` | — | Preset, mode, tokens, brand, icons, **content `classNames`** (see [Theming](#theming)). |
@@ -225,7 +188,7 @@ export default function App() {
225
188
  | `initialSessionId` | `string` | — | Resume a specific session. |
226
189
  | `onError` | `(error: unknown) => void` | — | Host error hook (runtime + server init). |
227
190
 
228
- Later sections use `server` as a `TrueForgeServerConfig` (usually `type: "truefoundry"`). For a host-built port, pass the `AgentUIServer` directly.
191
+ Later sections use `server` as a `TrueForgeServerConfig` (usually `type: "trueforge"`). For a host-built port, pass the `AgentUIServer` directly.
229
192
 
230
193
  ---
231
194
 
@@ -235,9 +198,9 @@ Pass a preset and/or tokens and the whole UI adapts. Values map onto product CSS
235
198
 
236
199
  ```tsx
237
200
  const server = {
238
- type: 'truefoundry' as const,
239
- apiKey: process.env.TFY_API_KEY!,
240
- controlPlaneURL: process.env.TFY_CONTROL_PLANE_URL!,
201
+ type: 'trueforge' as const,
202
+ baseUrl: process.env.TRUEFORGE_BASE_URL,
203
+ token: process.env.TRUEFORGE_TOKEN,
241
204
  };
242
205
 
243
206
  <TrueForgeUI
@@ -484,7 +447,7 @@ function Layout({ className }: { className?: string }) {
484
447
  <TrueForgeUI server={server} layout={Layout} />;
485
448
  ```
486
449
 
487
- For deeper composition without `TrueForgeUI`, nest `SlotsProvider` outside `TrueFoundryChatProvider` — see [docs/customization.md](./docs/customization.md).
450
+ For deeper composition without `TrueForgeUI`, nest `SlotsProvider` outside `TrueForgeChatProvider` — see [docs/customization.md](./docs/customization.md).
488
451
 
489
452
  > _Screenshot: a custom layout assembled from_ `BrandLogo`_,_ `ThreadListContainer`_, and_ `Thread`_._
490
453
 
@@ -530,13 +493,6 @@ inside the component, or pass a ready `AgentUIServer` directly.
530
493
 
531
494
  ```ts
532
495
  type TrueForgeServerConfig =
533
- | {
534
- type: 'truefoundry';
535
- apiKey: string;
536
- controlPlaneURL: string;
537
- gatewayPlaneURL?: string;
538
- permissions?: PermissionsServer;
539
- }
540
496
  | {
541
497
  type: 'trueforge';
542
498
  baseUrl?: string;
@@ -569,37 +525,18 @@ type AgentUIServer = AgentChatServer &
569
525
 
570
526
  Omit a chrome port such as `catalog` or `schedules` to hide and unregister its routes.
571
527
 
572
- When `permissions` is omitted from a custom or TrueFoundry server, actions remain enabled for backward compatibility.
528
+ When `permissions` is omitted from a custom server, actions remain enabled for backward compatibility.
573
529
  When provided, denied mutation controls stay visible but disabled with an explanatory tooltip. The built-in
574
530
  `type: "trueforge"` server enables checks automatically through the Harness permissions endpoint; an explicit
575
531
  `PermissionsServer` overrides that default.
576
532
 
577
- **Zero-config TrueFoundry** — see [Getting started](#getting-started). The SDK calls `createTrueFoundryAgentUIServer` for you.
578
-
579
533
  **Zero-config TrueForge (Harness)** — see [Getting started](#getting-started).
580
534
  `type: "trueforge"` resolves via
581
535
  `@truefoundry/trueforge-ui/plugins/trueforge-agent-server-adapter`
582
536
  (`createTrueForgeAgentUIServer`: chat + builder + default catalogs). Auth is
583
537
  host-owned: pass `token` and/or `fetch`.
584
538
 
585
- **Compose your own `AgentUIServer` (custom):**
586
-
587
- ```tsx
588
- import { TrueForgeUI, createTrueFoundryServer } from '@truefoundry/trueforge-ui';
589
- import { createTrueFoundryChatServer } from '@truefoundry/assistant-ui-runtime/plugins/truefoundry-agent-server-adapter';
590
-
591
- const chatServer = createTrueFoundryChatServer({ apiKey, baseUrl });
592
- const agentServer = createTrueFoundryServer({
593
- chatServer,
594
- getModels,
595
- getSkills,
596
- getMcp,
597
- searchAgents,
598
- saveAgent,
599
- });
600
-
601
- <TrueForgeUI server={agentServer} layout="sidebar" />;
602
- ```
539
+ **Compose your own `AgentUIServer` (custom):** use the exported `createTrueForgeServer` helper or implement the port directly.
603
540
 
604
541
  **Implement `AgentUIServer` yourself:**
605
542
 
@@ -635,7 +572,7 @@ See [docs/server.md](./docs/server.md) for the full method list and BYO guidance
635
572
  | ------------------------------------------------------------------ | ---------- | ------------------------------------------------------------ |
636
573
  | `TrueForgeUI` | Component | Root component — accepts all props above |
637
574
  | `TrueForgeServerConfig` | Type | `server` prop: `truefoundry` / `trueforge` / `AgentUIServer` |
638
- | `createTrueFoundryServer` | Function | Compose chat + builder into `AgentUIServer` |
575
+ | `createTrueForgeServer` | Function | Compose chat + builder into `AgentUIServer` |
639
576
  | `Thread`, `ThreadListContainer`, `BrandLogo` | Components | Layout primitives for custom layouts |
640
577
  | `resolveBrandChrome`, `useBrandName`, `useBrand` | Helpers | Brand chrome look + name for custom layouts |
641
578
  | Composer / message / tool atoms | Components | Overridable, themeable building blocks |
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import {
3
3
  useSlot
4
- } from "./chunk-KZK2PQ4A.js";
5
- import "./chunk-UN7WPTTK.js";
4
+ } from "./chunk-MLMR26WQ.js";
6
5
  import {
7
6
  Icon
8
- } from "./chunk-KDCVFHPZ.js";
9
- import "./chunk-U7WONUMR.js";
7
+ } from "./chunk-TX6PB3DY.js";
8
+ import "./chunk-ZYJ2SBF7.js";
9
+ import "./chunk-7S7A3PNP.js";
10
10
  import "./chunk-M6MHLVSO.js";
11
- import "./chunk-WFIA627Q.js";
11
+ import "./chunk-QKFMAQ7O.js";
12
12
  import {
13
13
  cn
14
- } from "./chunk-NXK4XW4U.js";
14
+ } from "./chunk-6UACSIIY.js";
15
15
 
16
16
  // src/atoms/agent-details/AgentCodeSnippets.tsx
17
17
  import { useEffect, useState } from "react";
@@ -86,4 +86,4 @@ function AgentCodeSnippets({ snippets }) {
86
86
  export {
87
87
  AgentCodeSnippets as default
88
88
  };
89
- //# sourceMappingURL=AgentCodeSnippets-EK7KMIY2.js.map
89
+ //# sourceMappingURL=AgentCodeSnippets-BPC6TD7K.js.map
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import {
3
+ AgentMetricChart
4
+ } from "./chunk-HDMBSLDC.js";
5
+ import "./chunk-MLMR26WQ.js";
6
+ import "./chunk-TX6PB3DY.js";
7
+ import "./chunk-ZYJ2SBF7.js";
8
+ import "./chunk-7S7A3PNP.js";
9
+ import "./chunk-M6MHLVSO.js";
10
+ import "./chunk-QKFMAQ7O.js";
11
+ import "./chunk-6UACSIIY.js";
12
+ export {
13
+ AgentMetricChart
14
+ };
15
+ //# sourceMappingURL=AgentMetricChart-T6DZZ37Y.js.map
@@ -10,20 +10,20 @@ import {
10
10
  namedToolRequiresApproval,
11
11
  selectedToolNames,
12
12
  useSlot
13
- } from "./chunk-KZK2PQ4A.js";
14
- import "./chunk-UN7WPTTK.js";
13
+ } from "./chunk-MLMR26WQ.js";
15
14
  import {
16
15
  Icon
17
- } from "./chunk-KDCVFHPZ.js";
16
+ } from "./chunk-TX6PB3DY.js";
17
+ import "./chunk-ZYJ2SBF7.js";
18
18
  import {
19
19
  useOptionalServer,
20
20
  useServerCapabilities
21
- } from "./chunk-U7WONUMR.js";
21
+ } from "./chunk-7S7A3PNP.js";
22
22
  import "./chunk-M6MHLVSO.js";
23
- import "./chunk-WFIA627Q.js";
23
+ import "./chunk-QKFMAQ7O.js";
24
24
  import {
25
25
  cn
26
- } from "./chunk-NXK4XW4U.js";
26
+ } from "./chunk-6UACSIIY.js";
27
27
 
28
28
  // src/atoms/agent-details/AgentOverview.tsx
29
29
  import { useState as useState2 } from "react";
@@ -311,4 +311,4 @@ function AgentOverview({ detail }) {
311
311
  export {
312
312
  AgentOverview as default
313
313
  };
314
- //# sourceMappingURL=AgentOverview-5UPMYHT2.js.map
314
+ //# sourceMappingURL=AgentOverview-BFU7EO4Y.js.map
@@ -4,15 +4,15 @@ import {
4
4
  getSessionEventColor,
5
5
  useSlot,
6
6
  useThemeMode
7
- } from "./chunk-KZK2PQ4A.js";
8
- import "./chunk-UN7WPTTK.js";
9
- import "./chunk-KDCVFHPZ.js";
10
- import "./chunk-U7WONUMR.js";
7
+ } from "./chunk-MLMR26WQ.js";
8
+ import "./chunk-TX6PB3DY.js";
9
+ import "./chunk-ZYJ2SBF7.js";
10
+ import "./chunk-7S7A3PNP.js";
11
11
  import "./chunk-M6MHLVSO.js";
12
- import "./chunk-WFIA627Q.js";
12
+ import "./chunk-QKFMAQ7O.js";
13
13
  import {
14
14
  cn
15
- } from "./chunk-NXK4XW4U.js";
15
+ } from "./chunk-6UACSIIY.js";
16
16
 
17
17
  // src/atoms/agent-details/AgentSessionEventTimeline.tsx
18
18
  import { useCallback, useMemo, useState } from "react";
@@ -85,4 +85,4 @@ function AgentSessionEventTimeline({ turns, segments, onSelectTurn }) {
85
85
  export {
86
86
  AgentSessionEventTimeline
87
87
  };
88
- //# sourceMappingURL=AgentSessionEventTimeline-V6NPCYMW.js.map
88
+ //# sourceMappingURL=AgentSessionEventTimeline-ATVBTYDF.js.map
@@ -25,13 +25,13 @@ import {
25
25
  mergeOverlappingSubAgentSegments,
26
26
  roundDurationMsToSecond,
27
27
  useThemeMode
28
- } from "./chunk-KZK2PQ4A.js";
29
- import "./chunk-UN7WPTTK.js";
30
- import "./chunk-KDCVFHPZ.js";
31
- import "./chunk-U7WONUMR.js";
28
+ } from "./chunk-MLMR26WQ.js";
29
+ import "./chunk-TX6PB3DY.js";
30
+ import "./chunk-ZYJ2SBF7.js";
31
+ import "./chunk-7S7A3PNP.js";
32
32
  import "./chunk-M6MHLVSO.js";
33
- import "./chunk-WFIA627Q.js";
34
- import "./chunk-NXK4XW4U.js";
33
+ import "./chunk-QKFMAQ7O.js";
34
+ import "./chunk-6UACSIIY.js";
35
35
 
36
36
  // src/atoms/agent-details/AgentSessionEventTimelineChart.tsx
37
37
  import {
@@ -588,4 +588,4 @@ function AgentSessionEventTimelineChart({
588
588
  export {
589
589
  AgentSessionEventTimelineChart
590
590
  };
591
- //# sourceMappingURL=AgentSessionEventTimelineChart-YQWZBQCG.js.map
591
+ //# sourceMappingURL=AgentSessionEventTimelineChart-H577STKW.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  buildSessionResumeHref
4
- } from "./chunk-JEAULQNF.js";
4
+ } from "./chunk-TJGGIEF6.js";
5
5
  import {
6
6
  useOptionalResolvedRoutes
7
7
  } from "./chunk-Y6S4OVVQ.js";
@@ -21,22 +21,22 @@ import {
21
21
  useSessionShareSearch,
22
22
  useSlot,
23
23
  useToasterOptional
24
- } from "./chunk-KZK2PQ4A.js";
25
- import "./chunk-UN7WPTTK.js";
24
+ } from "./chunk-MLMR26WQ.js";
26
25
  import {
27
26
  Icon
28
- } from "./chunk-KDCVFHPZ.js";
27
+ } from "./chunk-TX6PB3DY.js";
28
+ import "./chunk-ZYJ2SBF7.js";
29
29
  import {
30
30
  sessionTimeRangeFromCreatedAt,
31
31
  useAgentSessionsServer,
32
32
  useOptionalShellMode,
33
33
  useServer
34
- } from "./chunk-U7WONUMR.js";
34
+ } from "./chunk-7S7A3PNP.js";
35
35
  import "./chunk-M6MHLVSO.js";
36
- import "./chunk-WFIA627Q.js";
36
+ import "./chunk-QKFMAQ7O.js";
37
37
  import {
38
38
  cn
39
- } from "./chunk-NXK4XW4U.js";
39
+ } from "./chunk-6UACSIIY.js";
40
40
 
41
41
  // src/atoms/agent-details/AgentSessions.tsx
42
42
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -385,4 +385,4 @@ function AgentSessions({ agentId, startTimestamp, endTimestamp, shareView }) {
385
385
  export {
386
386
  AgentSessions
387
387
  };
388
- //# sourceMappingURL=AgentSessions-WNYVVB6Q.js.map
388
+ //# sourceMappingURL=AgentSessions-GDLBXFIK.js.map
@@ -7,20 +7,20 @@ import {
7
7
  auiInputClass,
8
8
  useMCPAuth,
9
9
  useToasterOptional
10
- } from "./chunk-KZK2PQ4A.js";
11
- import "./chunk-UN7WPTTK.js";
10
+ } from "./chunk-MLMR26WQ.js";
12
11
  import {
13
12
  Icon
14
- } from "./chunk-KDCVFHPZ.js";
13
+ } from "./chunk-TX6PB3DY.js";
14
+ import "./chunk-ZYJ2SBF7.js";
15
15
  import {
16
16
  getErrorMessage,
17
17
  useCatalogServer
18
- } from "./chunk-U7WONUMR.js";
18
+ } from "./chunk-7S7A3PNP.js";
19
19
  import "./chunk-M6MHLVSO.js";
20
- import "./chunk-WFIA627Q.js";
20
+ import "./chunk-QKFMAQ7O.js";
21
21
  import {
22
22
  cn
23
- } from "./chunk-NXK4XW4U.js";
23
+ } from "./chunk-6UACSIIY.js";
24
24
 
25
25
  // src/containers/SettingsBuilder/ConnectorSettings.tsx
26
26
  import { useCallback, useEffect as useEffect3, useMemo, useState as useState3 } from "react";
@@ -960,4 +960,4 @@ var ConnectorSettings_default = ConnectorSettings;
960
960
  export {
961
961
  ConnectorSettings_default as default
962
962
  };
963
- //# sourceMappingURL=ConnectorSettings-O4I24244.js.map
963
+ //# sourceMappingURL=ConnectorSettings-FYNF6J3F.js.map
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-MB7Z5FPI.js";
5
- import "./chunk-7VWUB5OV.js";
6
- import "./chunk-VTOW2UIX.js";
4
+ } from "./chunk-YN5ZBBQM.js";
5
+ import "./chunk-TFQWCBFQ.js";
6
+ import "./chunk-GHXA46A2.js";
7
7
  import "./chunk-BSIPI3KV.js";
8
- import "./chunk-KZK2PQ4A.js";
9
- import "./chunk-UN7WPTTK.js";
8
+ import "./chunk-MLMR26WQ.js";
10
9
  import {
11
10
  CompactLayoutProvider
12
- } from "./chunk-KDCVFHPZ.js";
13
- import "./chunk-U7WONUMR.js";
11
+ } from "./chunk-TX6PB3DY.js";
12
+ import "./chunk-ZYJ2SBF7.js";
13
+ import "./chunk-7S7A3PNP.js";
14
14
  import "./chunk-M6MHLVSO.js";
15
- import "./chunk-WFIA627Q.js";
15
+ import "./chunk-QKFMAQ7O.js";
16
16
  import {
17
17
  cn
18
- } from "./chunk-NXK4XW4U.js";
18
+ } from "./chunk-6UACSIIY.js";
19
19
 
20
20
  // src/layouts/DockLayout.tsx
21
21
  import { jsx } from "react/jsx-runtime";
@@ -35,4 +35,4 @@ function DockLayout({ className }) {
35
35
  export {
36
36
  DockLayout
37
37
  };
38
- //# sourceMappingURL=DockLayout-JMBZVMGB.js.map
38
+ //# sourceMappingURL=DockLayout-SGUOMZ5E.js.map
@@ -3,40 +3,40 @@ import {
3
3
  AgentConfigDrawerContainer,
4
4
  NamedAgentHeaderLabel,
5
5
  ShellActions
6
- } from "./chunk-7VWUB5OV.js";
6
+ } from "./chunk-TFQWCBFQ.js";
7
7
  import {
8
8
  Thread
9
- } from "./chunk-VTOW2UIX.js";
9
+ } from "./chunk-GHXA46A2.js";
10
10
  import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useIsMobile,
13
13
  useSlot
14
- } from "./chunk-KZK2PQ4A.js";
15
- import "./chunk-UN7WPTTK.js";
14
+ } from "./chunk-MLMR26WQ.js";
16
15
  import {
17
16
  Icon,
18
17
  PageHeader,
19
18
  Spinner,
20
19
  auiButtonClass
21
- } from "./chunk-KDCVFHPZ.js";
20
+ } from "./chunk-TX6PB3DY.js";
21
+ import "./chunk-ZYJ2SBF7.js";
22
22
  import {
23
23
  shellIsCreateAgent,
24
24
  useOptionalShellMode
25
- } from "./chunk-U7WONUMR.js";
25
+ } from "./chunk-7S7A3PNP.js";
26
26
  import {
27
27
  useAui
28
28
  } from "./chunk-M6MHLVSO.js";
29
- import "./chunk-WFIA627Q.js";
29
+ import "./chunk-QKFMAQ7O.js";
30
30
  import {
31
31
  cn
32
- } from "./chunk-NXK4XW4U.js";
32
+ } from "./chunk-6UACSIIY.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-VA3VGWZC.js"));
37
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-FODMI7HG.js"));
38
38
  var SchedulesPage = lazy(
39
- () => import("./SchedulesPage-FS2QZ5KB.js").then((m) => ({ default: m.SchedulesPage }))
39
+ () => import("./SchedulesPage-ZO3PJY4J.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-E6G3IF6R.js.map
186
+ //# sourceMappingURL=DrawerLayout-MJJYQDCW.js.map
@@ -9,20 +9,20 @@ import {
9
9
  SearchInput_default,
10
10
  auiInputClass,
11
11
  useToasterOptional
12
- } from "./chunk-KZK2PQ4A.js";
13
- import "./chunk-UN7WPTTK.js";
12
+ } from "./chunk-MLMR26WQ.js";
14
13
  import {
15
14
  Icon
16
- } from "./chunk-KDCVFHPZ.js";
15
+ } from "./chunk-TX6PB3DY.js";
16
+ import "./chunk-ZYJ2SBF7.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  useCatalogServer
20
- } from "./chunk-U7WONUMR.js";
20
+ } from "./chunk-7S7A3PNP.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-WFIA627Q.js";
22
+ import "./chunk-QKFMAQ7O.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-NXK4XW4U.js";
25
+ } from "./chunk-6UACSIIY.js";
26
26
 
27
27
  // src/containers/SettingsBuilder/ModelSettings.tsx
28
28
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
@@ -296,13 +296,13 @@ var CustomModelProviderForm = ({
296
296
  children: /* @__PURE__ */ jsxs2(
297
297
  "form",
298
298
  {
299
- className: "flex min-h-0 flex-1 flex-col",
299
+ className: "flex min-h-0 flex-auto flex-col",
300
300
  onSubmit: (event) => {
301
301
  event.preventDefault();
302
302
  void handleSubmit();
303
303
  },
304
304
  children: [
305
- /* @__PURE__ */ jsxs2("div", { className: "min-h-0 flex-1 space-y-4 overflow-y-auto px-5 pt-4 pb-8", children: [
305
+ /* @__PURE__ */ jsxs2("div", { className: "min-h-0 flex-auto space-y-4 overflow-y-auto px-5 pt-4 pb-8", children: [
306
306
  /* @__PURE__ */ jsxs2("div", { children: [
307
307
  /* @__PURE__ */ jsxs2("label", { htmlFor: "custom-provider-name", className: "mb-1.5 block text-sm font-medium text-text-primary", children: [
308
308
  "Name",
@@ -1077,4 +1077,4 @@ var ModelSettings_default = ModelSettings;
1077
1077
  export {
1078
1078
  ModelSettings_default as default
1079
1079
  };
1080
- //# sourceMappingURL=ModelSettings-ZVXMXIU4.js.map
1080
+ //# sourceMappingURL=ModelSettings-6EW7U2MP.js.map