@truefoundry/trueforge-ui 0.2.4 → 0.3.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 (58) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +41 -17
  3. package/dist/{ConnectorSettings-ODC3LVHN.js → ConnectorSettings-FXQ5B7TN.js} +5 -5
  4. package/dist/{DockLayout-TEOWEMSV.js → DockLayout-LBNQJZNF.js} +9 -9
  5. package/dist/{DrawerLayout-2JOQ4EDZ.js → DrawerLayout-Q6UK4VMI.js} +9 -9
  6. package/dist/{ModelSettings-CKQ5CVAC.js → ModelSettings-4L4LOQJA.js} +5 -5
  7. package/dist/OpenUiFenceBlock-6UIIAVBX.js +9 -0
  8. package/dist/{SandboxSettings-HSCPYUOC.js → SandboxSettings-Z4ZG6ZX4.js} +5 -5
  9. package/dist/{SettingsBuilder-MYWRFXRI.js → SettingsBuilder-WF7ZWKQW.js} +7 -7
  10. package/dist/{SidebarLayout-6MHQYW45.js → SidebarLayout-3WZ3CVON.js} +31 -14
  11. package/dist/SidebarLayout-3WZ3CVON.js.map +1 -0
  12. package/dist/{SkillSettings-ECH6SHZ7.js → SkillSettings-3EPPC3IT.js} +5 -5
  13. package/dist/{TrueForgeUIWithRouter-KMHPOKLN.js → TrueForgeUIWithRouter-NZ4FGPE4.js} +7 -7
  14. package/dist/{WidgetLayout-4ZIG3RXV.js → WidgetLayout-3QZ357FL.js} +10 -10
  15. package/dist/{WidgetLayout-4ZIG3RXV.js.map → WidgetLayout-3QZ357FL.js.map} +1 -1
  16. package/dist/chunk-36KOSC2J.js +567 -0
  17. package/dist/chunk-36KOSC2J.js.map +1 -0
  18. package/dist/{chunk-IWPDSPVA.js → chunk-3S6KHO7H.js} +292 -239
  19. package/dist/chunk-3S6KHO7H.js.map +1 -0
  20. package/dist/{chunk-PUFYHFND.js → chunk-7L63OK3O.js} +7 -7
  21. package/dist/{chunk-JRRCAKEP.js → chunk-B52K63AW.js} +2 -2
  22. package/dist/{chunk-FXCYLEFB.js → chunk-BSIPI3KV.js} +18 -2
  23. package/dist/chunk-BSIPI3KV.js.map +1 -0
  24. package/dist/{chunk-IFLE7OMM.js → chunk-FJ5RSSMA.js} +4 -4
  25. package/dist/{chunk-IFLE7OMM.js.map → chunk-FJ5RSSMA.js.map} +1 -1
  26. package/dist/{chunk-XRTTKGKN.js → chunk-OSV3HI5M.js} +746 -680
  27. package/dist/chunk-OSV3HI5M.js.map +1 -0
  28. package/dist/{chunk-255AE5NI.js → chunk-WREC7D54.js} +13 -11
  29. package/dist/chunk-WREC7D54.js.map +1 -0
  30. package/dist/{chunk-OZTNBS6V.js → chunk-ZXOADNF3.js} +4 -4
  31. package/dist/index.d.ts +179 -121
  32. package/dist/index.js +17 -9
  33. package/dist/index.js.map +1 -1
  34. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +1 -5
  35. package/dist/plugins/trueforge-agent-server-adapter/index.js +3 -0
  36. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  37. package/dist/styles.css +1 -1
  38. package/package.json +5 -5
  39. package/dist/OpenUiFenceBlock-3EFPY4JW.js +0 -9
  40. package/dist/SidebarLayout-6MHQYW45.js.map +0 -1
  41. package/dist/chunk-255AE5NI.js.map +0 -1
  42. package/dist/chunk-72LC2M3R.js +0 -567
  43. package/dist/chunk-72LC2M3R.js.map +0 -1
  44. package/dist/chunk-FXCYLEFB.js.map +0 -1
  45. package/dist/chunk-IWPDSPVA.js.map +0 -1
  46. package/dist/chunk-XRTTKGKN.js.map +0 -1
  47. /package/dist/{ConnectorSettings-ODC3LVHN.js.map → ConnectorSettings-FXQ5B7TN.js.map} +0 -0
  48. /package/dist/{DockLayout-TEOWEMSV.js.map → DockLayout-LBNQJZNF.js.map} +0 -0
  49. /package/dist/{DrawerLayout-2JOQ4EDZ.js.map → DrawerLayout-Q6UK4VMI.js.map} +0 -0
  50. /package/dist/{ModelSettings-CKQ5CVAC.js.map → ModelSettings-4L4LOQJA.js.map} +0 -0
  51. /package/dist/{OpenUiFenceBlock-3EFPY4JW.js.map → OpenUiFenceBlock-6UIIAVBX.js.map} +0 -0
  52. /package/dist/{SandboxSettings-HSCPYUOC.js.map → SandboxSettings-Z4ZG6ZX4.js.map} +0 -0
  53. /package/dist/{SettingsBuilder-MYWRFXRI.js.map → SettingsBuilder-WF7ZWKQW.js.map} +0 -0
  54. /package/dist/{SkillSettings-ECH6SHZ7.js.map → SkillSettings-3EPPC3IT.js.map} +0 -0
  55. /package/dist/{TrueForgeUIWithRouter-KMHPOKLN.js.map → TrueForgeUIWithRouter-NZ4FGPE4.js.map} +0 -0
  56. /package/dist/{chunk-PUFYHFND.js.map → chunk-7L63OK3O.js.map} +0 -0
  57. /package/dist/{chunk-JRRCAKEP.js.map → chunk-B52K63AW.js.map} +0 -0
  58. /package/dist/{chunk-OZTNBS6V.js.map → chunk-ZXOADNF3.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0-rc.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3539da2: Add `brand.mode` (`icon-title` | `icon-only` | `logo`) so hosts pick chrome look first; `name` always labels the mark, and `resolveBrandChrome` maps mode to layout chrome.
8
+ - 16feb29: Add `customActionRenderers` so hosts can pause the composer on client-side tools with their own UI and resume via `onSubmit(content)`.
9
+ - 0297727: Add context-management compaction triggers with model-aware defaults and migrate persisted legacy token thresholds.
10
+
11
+ ### Patch Changes
12
+
13
+ - b11cfc3: Wire remote chat session deletion and improve the history delete action styling.
14
+ - 3ca4e2e: fixed the button component icon and padding, delete conflicting local prettier.json in trueforge-ui package
15
+ - a655537: Update published dependency ranges (AI SDK, Hono, MCP SDK, Redis, assistant-ui, and related packages).
16
+ - aa4be44: Open markdown links in assistant messages in a new tab
17
+ - d7015fd: show mcp server tool name on tool approval
18
+ - Updated dependencies [648273b]
19
+ - @truefoundry/trueforge-sdk@0.1.4-rc.0
20
+
21
+ ## Unreleased
22
+
23
+ ### Minor Changes
24
+
25
+ - **`brand.mode`** — explicit chrome look. Set `mode`, then pass the fields it requires.
26
+ `name` always labels the mark (`alt` / `aria-label`):
27
+ - **`'icon-title'`** — `name` + optional `icon` (title shown in expanded chrome)
28
+ - **`'icon-only'`** — `name` + `icon` (alt kept, no title text)
29
+ - **`'logo'`** — `name` + `icon` + `logo` (wordmark in expanded chrome; `name` is alt only)
30
+ - **Default** — omit `brand` for the TrueForge wordmark / square mark
31
+ - **`resolveBrandChrome()`** — maps `brand.mode` to
32
+ `{ expandedVariant, collapsedVariant, showTitle }`. `SidebarLayout` uses it; custom
33
+ layouts should too.
34
+
35
+ ### Changed
36
+
37
+ - **`BrandConfig`** — discriminated on `mode` (`BrandMode`). Removed `showTitle` from
38
+ config; visible title follows the mode.
39
+
3
40
  ## 0.2.4
4
41
 
5
42
  ### Patch Changes
package/README.md CHANGED
@@ -19,8 +19,6 @@ Powered by [assistant-ui](https://www.assistant-ui.com/), it follows the familia
19
19
 
20
20
  Bring your own **brand, colors, layout, components, and server**—the Agent SDK wires up the rest.
21
21
 
22
- ### Checkout the Demo [here](./example/)
23
-
24
22
  ---
25
23
 
26
24
  ## Table of contents
@@ -209,7 +207,7 @@ export default function App() {
209
207
  }}
210
208
  theme={{
211
209
  preset: 'claude',
212
- brand: { name: 'Acme', logo: '/logo.svg' },
210
+ brand: { mode: 'icon-title', name: 'Acme', icon: '/icon.svg' },
213
211
  }}
214
212
  overrides={{/* slot overrides */}}
215
213
  className="h-full"
@@ -321,7 +319,15 @@ package). Host CSS on `.aui-markdown` / `.aui-syntax-highlighter` / `.aui-openui
321
319
 
322
320
  ## Brand / logo
323
321
 
324
- **Base layouts** pass `theme.brand` and the SDK positions the mark + name in the default slots:
322
+ Set `brand.mode`, then pass the fields that mode requires. `name` always labels the
323
+ mark (`alt` / `aria-label`).
324
+
325
+ | Look | `mode` | Required | Expanded chrome | Collapsed / compact |
326
+ | ------------ | -------------- | -------------------------- | ------------------------- | ------------------- |
327
+ | Default | omit `brand` | — | TrueForge wordmark | TrueForge square |
328
+ | Icon + title | `'icon-title'` | `name` (+ optional `icon`) | square + title text | square |
329
+ | Icon only | `'icon-only'` | `name`, `icon` | square (no title text) | square |
330
+ | Wide logo | `'logo'` | `name`, `icon`, `logo` | wide logo (no title text) | square |
325
331
 
326
332
  ```tsx
327
333
  <TrueForgeUI
@@ -329,15 +335,28 @@ package). Host CSS on `.aui-markdown` / `.aui-syntax-highlighter` / `.aui-openui
329
335
  layout="sidebar"
330
336
  theme={{
331
337
  brand: {
338
+ mode: 'icon-title',
332
339
  name: 'Acme',
333
- logo: '/brand/logo.svg',
340
+ icon: '/brand/icon.svg',
334
341
  },
335
342
  }}
336
343
  />
337
344
  ```
338
345
 
339
- **Light / dark marks** — pass `light` / `dark` sources instead and the SDK picks the one matching
340
- the resolved mode. `href` wraps the logo in a same-tab link:
346
+ Icon-only chrome (`name` kept for alt):
347
+
348
+ ```tsx
349
+ theme={{
350
+ brand: {
351
+ mode: 'icon-only',
352
+ name: 'Acme',
353
+ icon: '/brand/icon.svg',
354
+ },
355
+ }}
356
+ ```
357
+
358
+ Wide logo for expanded chrome. A square `icon` is required because collapsed chrome,
359
+ the welcome screen, and the widget button continue to use the square asset:
341
360
 
342
361
  ```tsx
343
362
  <TrueForgeUI
@@ -345,14 +364,19 @@ the resolved mode. `href` wraps the logo in a same-tab link:
345
364
  layout="sidebar"
346
365
  theme={{
347
366
  brand: {
367
+ mode: 'logo',
348
368
  name: 'Acme',
349
- logo: { light: '/brand/logo-light.svg', dark: '/brand/logo-dark.svg', href: '/' },
369
+ icon: '/brand/icon.svg',
370
+ logo: '/brand/wordmark.svg',
371
+ href: '/',
350
372
  },
351
373
  }}
352
374
  />
353
375
  ```
354
376
 
355
- Set only one mode and it is used for both. `name` labels the image, so no `alt` is needed.
377
+ Both `icon` and `logo` accept `{ src, light, dark }`. The SDK picks the source matching the
378
+ resolved theme mode; setting only one light/dark source uses it for both. `href` wraps
379
+ configured images in a same-tab link.
356
380
 
357
381
  **Component marks** — `theme.brand` takes image URLs only. To render an inline SVG or a custom
358
382
  component, override the `BrandLogo` slot, the same way you replace any other atom:
@@ -361,7 +385,10 @@ component, override the `BrandLogo` slot, the same way you replace any other ato
361
385
  <TrueForgeUI server={server} layout="sidebar" overrides={{ BrandLogo: MyMark }} />
362
386
  ```
363
387
 
364
- **Custom layouts** — import `BrandLogo` and place it anywhere; pair it with `useBrandName()` when you also want the name as text (see [Custom layouts](#custom-layouts)).
388
+ **Custom layouts** — import `BrandLogo` and use `variant="icon"` for compact surfaces or
389
+ `variant="logo"` for expanded chrome. Prefer `resolveBrandChrome(useBrand())` so expanded
390
+ vs collapsed choices match the base layouts. Pair with `useBrandName()` when chrome should
391
+ show the title text (see [Custom layouts](#custom-layouts)).
365
392
 
366
393
  > _Screenshot: external brand mark rendered in the base layout header._
367
394
 
@@ -424,8 +451,6 @@ Built-in `layout` values:
424
451
  | `dock` | Fixed-width right panel; list XOR thread stack |
425
452
  | `widget` | Same stack as `dock`, opened from a bottom-right FAB |
426
453
 
427
- The [example app](./example/) switches between these four modes.
428
-
429
454
  ---
430
455
 
431
456
  ## Custom layouts
@@ -433,17 +458,15 @@ The [example app](./example/) switches between these four modes.
433
458
  For full control, pass a React component as `layout`. The SDK still wires server, shell mode, slots, and runtime behind it.
434
459
 
435
460
  ```tsx
436
- import { Thread, ThreadListContainer, BrandLogo, useBrandName, useTheme } from '@truefoundry/trueforge-ui';
461
+ import { Thread, ThreadListContainer, BrandLogo, useTheme } from '@truefoundry/trueforge-ui';
437
462
 
438
463
  function Layout({ className }: { className?: string }) {
439
464
  const { mode, setTheme } = useTheme();
440
- const brandName = useBrandName();
441
465
 
442
466
  return (
443
467
  <div className={className} style={{ display: 'flex', height: '100%' }}>
444
468
  <aside style={{ width: 256 }}>
445
- <BrandLogo className="size-6" />
446
- <span>{brandName}</span>
469
+ <BrandLogo variant="logo" className="h-6 w-auto max-w-40" />
447
470
  <ThreadListContainer />
448
471
  </aside>
449
472
  <main style={{ flex: 1, minWidth: 0 }}>
@@ -591,6 +614,7 @@ See [docs/server.md](./docs/server.md) for the full method list and BYO guidance
591
614
  | `TrueForgeServerConfig` | Type | `server` prop: `truefoundry` / `trueforge` / `AgentUIServer` |
592
615
  | `createTrueFoundryServer` | Function | Compose chat + builder into `AgentUIServer` |
593
616
  | `Thread`, `ThreadListContainer`, `BrandLogo` | Components | Layout primitives for custom layouts |
617
+ | `resolveBrandChrome`, `useBrandName`, `useBrand` | Helpers | Brand chrome look + name for custom layouts |
594
618
  | Composer / message / tool atoms | Components | Overridable, themeable building blocks |
595
619
  | `SlotsProvider`, `useSlot`, `useTheme` | API | Overrides + theme mode |
596
620
  | `AgentUIServer`, `AgentChatServer`, `AgentBuilderServer` | Types | Resolved server contract |
@@ -630,7 +654,7 @@ pnpm --filter @truefoundry/trueforge-ui test
630
654
  pnpm --filter @truefoundry/trueforge-ui build
631
655
  ```
632
656
 
633
- Local demo: see [example/](./example/). Publishing: see [RELEASING.md](../../RELEASING.md#releasing-truefoundrytrueforge-ui).
657
+ Publishing: see [RELEASING.md](../../RELEASING.md#releasing-truefoundrytrueforge-ui).
634
658
 
635
659
  ---
636
660
 
@@ -7,18 +7,18 @@ import {
7
7
  auiInputClass,
8
8
  useMCPAuth,
9
9
  useToasterOptional
10
- } from "./chunk-XRTTKGKN.js";
10
+ } from "./chunk-OSV3HI5M.js";
11
11
  import {
12
12
  Icon,
13
13
  getErrorMessage
14
- } from "./chunk-IFLE7OMM.js";
14
+ } from "./chunk-FJ5RSSMA.js";
15
15
  import {
16
16
  useCatalogServer
17
17
  } from "./chunk-WQULF5AT.js";
18
- import "./chunk-JRRCAKEP.js";
18
+ import "./chunk-B52K63AW.js";
19
19
  import {
20
20
  cn
21
- } from "./chunk-72LC2M3R.js";
21
+ } from "./chunk-36KOSC2J.js";
22
22
 
23
23
  // src/containers/SettingsBuilder/ConnectorSettings.tsx
24
24
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
@@ -920,4 +920,4 @@ var ConnectorSettings_default = ConnectorSettings;
920
920
  export {
921
921
  ConnectorSettings_default as default
922
922
  };
923
- //# sourceMappingURL=ConnectorSettings-ODC3LVHN.js.map
923
+ //# sourceMappingURL=ConnectorSettings-FXQ5B7TN.js.map
@@ -1,20 +1,20 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-PUFYHFND.js";
5
- import "./chunk-OZTNBS6V.js";
6
- import "./chunk-IWPDSPVA.js";
7
- import "./chunk-FXCYLEFB.js";
4
+ } from "./chunk-7L63OK3O.js";
5
+ import "./chunk-ZXOADNF3.js";
6
+ import "./chunk-3S6KHO7H.js";
7
+ import "./chunk-BSIPI3KV.js";
8
8
  import "./chunk-M6MHLVSO.js";
9
- import "./chunk-XRTTKGKN.js";
9
+ import "./chunk-OSV3HI5M.js";
10
10
  import {
11
11
  CompactLayoutProvider
12
- } from "./chunk-IFLE7OMM.js";
12
+ } from "./chunk-FJ5RSSMA.js";
13
13
  import "./chunk-WQULF5AT.js";
14
- import "./chunk-JRRCAKEP.js";
14
+ import "./chunk-B52K63AW.js";
15
15
  import {
16
16
  cn
17
- } from "./chunk-72LC2M3R.js";
17
+ } from "./chunk-36KOSC2J.js";
18
18
 
19
19
  // src/layouts/DockLayout.tsx
20
20
  import { jsx } from "react/jsx-runtime";
@@ -34,4 +34,4 @@ function DockLayout({ className }) {
34
34
  export {
35
35
  DockLayout
36
36
  };
37
- //# sourceMappingURL=DockLayout-TEOWEMSV.js.map
37
+ //# sourceMappingURL=DockLayout-LBNQJZNF.js.map
@@ -2,35 +2,35 @@
2
2
  import {
3
3
  NamedAgentHeaderLabel,
4
4
  ShellActions
5
- } from "./chunk-OZTNBS6V.js";
5
+ } from "./chunk-ZXOADNF3.js";
6
6
  import {
7
7
  Thread,
8
8
  ThreadListContainer
9
- } from "./chunk-IWPDSPVA.js";
10
- import "./chunk-FXCYLEFB.js";
9
+ } from "./chunk-3S6KHO7H.js";
10
+ import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useAui
13
13
  } from "./chunk-M6MHLVSO.js";
14
14
  import {
15
15
  useSlot
16
- } from "./chunk-XRTTKGKN.js";
16
+ } from "./chunk-OSV3HI5M.js";
17
17
  import {
18
18
  Icon,
19
19
  Spinner,
20
20
  auiButtonClass
21
- } from "./chunk-IFLE7OMM.js";
21
+ } from "./chunk-FJ5RSSMA.js";
22
22
  import {
23
23
  useOptionalShellMode
24
24
  } from "./chunk-WQULF5AT.js";
25
- import "./chunk-JRRCAKEP.js";
25
+ import "./chunk-B52K63AW.js";
26
26
  import {
27
27
  cn
28
- } from "./chunk-72LC2M3R.js";
28
+ } from "./chunk-36KOSC2J.js";
29
29
 
30
30
  // src/layouts/DrawerLayout.tsx
31
31
  import { lazy, Suspense, useEffect, useRef, useState } from "react";
32
32
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
33
- var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-MYWRFXRI.js"));
33
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-WF7ZWKQW.js"));
34
34
  function DrawerLayout({ className }) {
35
35
  const aui = useAui();
36
36
  const shell = useOptionalShellMode();
@@ -156,4 +156,4 @@ function DrawerLayout({ className }) {
156
156
  export {
157
157
  DrawerLayout
158
158
  };
159
- //# sourceMappingURL=DrawerLayout-2JOQ4EDZ.js.map
159
+ //# sourceMappingURL=DrawerLayout-Q6UK4VMI.js.map
@@ -9,18 +9,18 @@ import {
9
9
  SearchInput_default,
10
10
  auiInputClass,
11
11
  useToasterOptional
12
- } from "./chunk-XRTTKGKN.js";
12
+ } from "./chunk-OSV3HI5M.js";
13
13
  import {
14
14
  Icon,
15
15
  getErrorMessage
16
- } from "./chunk-IFLE7OMM.js";
16
+ } from "./chunk-FJ5RSSMA.js";
17
17
  import {
18
18
  useCatalogServer
19
19
  } from "./chunk-WQULF5AT.js";
20
- import "./chunk-JRRCAKEP.js";
20
+ import "./chunk-B52K63AW.js";
21
21
  import {
22
22
  cn
23
- } from "./chunk-72LC2M3R.js";
23
+ } from "./chunk-36KOSC2J.js";
24
24
 
25
25
  // src/containers/SettingsBuilder/ModelSettings.tsx
26
26
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
@@ -1081,4 +1081,4 @@ var ModelSettings_default = ModelSettings;
1081
1081
  export {
1082
1082
  ModelSettings_default as default
1083
1083
  };
1084
- //# sourceMappingURL=ModelSettings-CKQ5CVAC.js.map
1084
+ //# sourceMappingURL=ModelSettings-4L4LOQJA.js.map
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ OpenUiFenceBlock
4
+ } from "./chunk-B52K63AW.js";
5
+ import "./chunk-36KOSC2J.js";
6
+ export {
7
+ OpenUiFenceBlock
8
+ };
9
+ //# sourceMappingURL=OpenUiFenceBlock-6UIIAVBX.js.map
@@ -8,19 +8,19 @@ import {
8
8
  Tooltip,
9
9
  auiInputClass,
10
10
  useToasterOptional
11
- } from "./chunk-XRTTKGKN.js";
11
+ } from "./chunk-OSV3HI5M.js";
12
12
  import {
13
13
  Icon,
14
14
  Spinner,
15
15
  getErrorMessage
16
- } from "./chunk-IFLE7OMM.js";
16
+ } from "./chunk-FJ5RSSMA.js";
17
17
  import {
18
18
  useCatalogServer
19
19
  } from "./chunk-WQULF5AT.js";
20
- import "./chunk-JRRCAKEP.js";
20
+ import "./chunk-B52K63AW.js";
21
21
  import {
22
22
  cn
23
- } from "./chunk-72LC2M3R.js";
23
+ } from "./chunk-36KOSC2J.js";
24
24
 
25
25
  // src/containers/SettingsBuilder/SandboxSettings.tsx
26
26
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState2 } from "react";
@@ -598,4 +598,4 @@ var SandboxSettings_default = SandboxSettings;
598
598
  export {
599
599
  SandboxSettings_default as default
600
600
  };
601
- //# sourceMappingURL=SandboxSettings-HSCPYUOC.js.map
601
+ //# sourceMappingURL=SandboxSettings-Z4ZG6ZX4.js.map
@@ -5,7 +5,7 @@ import {
5
5
  auiButtonClass,
6
6
  useCompactLayout,
7
7
  useDraftCatalog
8
- } from "./chunk-IFLE7OMM.js";
8
+ } from "./chunk-FJ5RSSMA.js";
9
9
  import {
10
10
  useOptionalCatalogServer,
11
11
  useOptionalRefreshServerCapabilities,
@@ -13,15 +13,15 @@ import {
13
13
  } from "./chunk-WQULF5AT.js";
14
14
  import {
15
15
  cn
16
- } from "./chunk-72LC2M3R.js";
16
+ } from "./chunk-36KOSC2J.js";
17
17
 
18
18
  // src/containers/SettingsBuilder/index.tsx
19
19
  import { lazy, Suspense, useCallback, useEffect, useMemo } from "react";
20
20
  import { jsx, jsxs } from "react/jsx-runtime";
21
- var ModelSettings = lazy(() => import("./ModelSettings-CKQ5CVAC.js"));
22
- var ConnectorSettings = lazy(() => import("./ConnectorSettings-ODC3LVHN.js"));
23
- var SkillSettings = lazy(() => import("./SkillSettings-ECH6SHZ7.js"));
24
- var SandboxSettings = lazy(() => import("./SandboxSettings-HSCPYUOC.js"));
21
+ var ModelSettings = lazy(() => import("./ModelSettings-4L4LOQJA.js"));
22
+ var ConnectorSettings = lazy(() => import("./ConnectorSettings-FXQ5B7TN.js"));
23
+ var SkillSettings = lazy(() => import("./SkillSettings-3EPPC3IT.js"));
24
+ var SandboxSettings = lazy(() => import("./SandboxSettings-Z4ZG6ZX4.js"));
25
25
  function SettingsSectionFallback() {
26
26
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-center py-8", role: "status", "aria-live": "polite", "aria-busy": "true", children: [
27
27
  /* @__PURE__ */ jsx(Spinner, { size: 20, className: "text-text-secondary" }),
@@ -140,4 +140,4 @@ var SettingsBuilder_default = TruefoundrySettingsBuilder;
140
140
  export {
141
141
  SettingsBuilder_default as default
142
142
  };
143
- //# sourceMappingURL=SettingsBuilder-MYWRFXRI.js.map
143
+ //# sourceMappingURL=SettingsBuilder-WF7ZWKQW.js.map
@@ -2,42 +2,47 @@
2
2
  import {
3
3
  NamedAgentHeaderLabel,
4
4
  ShellActions
5
- } from "./chunk-OZTNBS6V.js";
5
+ } from "./chunk-ZXOADNF3.js";
6
6
  import {
7
7
  Thread,
8
8
  ThreadListContainer
9
- } from "./chunk-IWPDSPVA.js";
10
- import "./chunk-FXCYLEFB.js";
9
+ } from "./chunk-3S6KHO7H.js";
10
+ import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useAui
13
13
  } from "./chunk-M6MHLVSO.js";
14
14
  import {
15
+ resolveBrandChrome,
15
16
  useBrandName,
16
17
  useChatHeaderContentVisible,
17
18
  useSlot
18
- } from "./chunk-XRTTKGKN.js";
19
+ } from "./chunk-OSV3HI5M.js";
19
20
  import {
20
21
  Icon,
21
22
  Spinner,
22
23
  auiButtonClass
23
- } from "./chunk-IFLE7OMM.js";
24
+ } from "./chunk-FJ5RSSMA.js";
24
25
  import {
25
26
  useOptionalShellMode
26
27
  } from "./chunk-WQULF5AT.js";
27
- import "./chunk-JRRCAKEP.js";
28
+ import "./chunk-B52K63AW.js";
28
29
  import {
29
- cn
30
- } from "./chunk-72LC2M3R.js";
30
+ cn,
31
+ useBrand
32
+ } from "./chunk-36KOSC2J.js";
31
33
 
32
34
  // src/layouts/SidebarLayout.tsx
33
35
  import { lazy, Suspense, useEffect, useRef, useState } from "react";
34
36
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
35
- var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-MYWRFXRI.js"));
37
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-WF7ZWKQW.js"));
36
38
  var desktopCollapsed = false;
39
+ var brandLogoClassName = "h-5 max-w-40 shrink-0 object-contain";
37
40
  function SidebarLayout({ className }) {
38
41
  const aui = useAui();
39
42
  const shell = useOptionalShellMode();
43
+ const brand = useBrand();
40
44
  const brandName = useBrandName();
45
+ const chrome = resolveBrandChrome(brand);
41
46
  const BrandLogo = useSlot("BrandLogo");
42
47
  const AgentsLibraryButton = useSlot("AgentsLibraryButton");
43
48
  const ClearChatButton = useSlot("ClearChatButton");
@@ -104,8 +109,14 @@ function SidebarLayout({ className }) {
104
109
  className: cn("flex shrink-0 items-center px-3 py-3", collapsed ? "flex-col gap-3" : "justify-between gap-2"),
105
110
  children: [
106
111
  /* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 items-center text-text-primary", collapsed ? "justify-center" : "gap-2"), children: [
107
- /* @__PURE__ */ jsx(BrandLogo, { className: "size-5 shrink-0 object-contain" }),
108
- !collapsed ? /* @__PURE__ */ jsx("span", { className: "truncate text-lg font-semibold tracking-tight", children: brandName }) : null
112
+ /* @__PURE__ */ jsx(
113
+ BrandLogo,
114
+ {
115
+ variant: collapsed ? chrome.collapsedVariant : chrome.expandedVariant,
116
+ className: cn(brandLogoClassName, (collapsed || chrome.expandedVariant === "icon") && "w-5")
117
+ }
118
+ ),
119
+ !collapsed && chrome.showTitle && brandName != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-lg font-semibold tracking-tight", children: brandName }) : null
109
120
  ] }),
110
121
  /* @__PURE__ */ jsx(
111
122
  "button",
@@ -223,8 +234,14 @@ function SidebarLayout({ className }) {
223
234
  tabIndex: -1,
224
235
  children: [
225
236
  /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-3 text-text-primary", children: [
226
- /* @__PURE__ */ jsx(BrandLogo, { className: "size-5 shrink-0 object-contain" }),
227
- /* @__PURE__ */ jsx("span", { className: "truncate text-lg font-semibold tracking-tight", children: brandName })
237
+ /* @__PURE__ */ jsx(
238
+ BrandLogo,
239
+ {
240
+ variant: chrome.expandedVariant,
241
+ className: cn(brandLogoClassName, chrome.expandedVariant === "icon" && "w-5")
242
+ }
243
+ ),
244
+ chrome.showTitle && brandName != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-lg font-semibold tracking-tight", children: brandName }) : null
228
245
  ] }),
229
246
  /* @__PURE__ */ jsx(ThreadListContainer, { onThreadOpen: () => setMobileNavOpen(false) })
230
247
  ]
@@ -236,4 +253,4 @@ function SidebarLayout({ className }) {
236
253
  export {
237
254
  SidebarLayout
238
255
  };
239
- //# sourceMappingURL=SidebarLayout-6MHQYW45.js.map
256
+ //# sourceMappingURL=SidebarLayout-3WZ3CVON.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/layouts/SidebarLayout.tsx"],"sourcesContent":["'use client';\n\nimport { lazy, Suspense, useEffect, useRef, useState } from 'react';\n\nimport { useAui } from '../assistant-ui.js';\nimport { auiButtonClass } from '../atoms/lib/buttonClasses.js';\nimport { cn } from '../atoms/lib/cn.js';\nimport { NamedAgentHeaderLabel } from '../atoms/NamedAgentHeaderLabel.js';\nimport { Spinner } from '../atoms/primitives/Spinner.js';\nimport { ShellActions } from '../atoms/ShellActions.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 { useOptionalShellMode } from '../server/ShellModeContext.js';\nimport { resolveBrandChrome, useBrandName } 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'));\n\n// Survives ChatProvider remounts when openDraft / selectAgent bumps runtimeKey.\nlet desktopCollapsed = false;\n\nconst brandLogoClassName = 'h-5 max-w-40 shrink-0 object-contain';\n\nexport function SidebarLayout({ className }: { className?: string }) {\n const aui = useAui();\n const shell = useOptionalShellMode();\n const brand = useBrand();\n const brandName = useBrandName();\n const chrome = resolveBrandChrome(brand);\n const BrandLogo = useSlot('BrandLogo');\n const AgentsLibraryButton = useSlot('AgentsLibraryButton');\n const ClearChatButton = useSlot('ClearChatButton');\n const SaveAgentButton = useSlot('SaveAgentButton');\n const SelectAgentEmptyState = useSlot('SelectAgentEmptyState');\n const [collapsed, setCollapsed] = useState(desktopCollapsed);\n const setDesktopCollapsed = (value: boolean | ((prev: boolean) => boolean)) => {\n setCollapsed(prev => {\n const next = typeof value === 'function' ? value(prev) : value;\n desktopCollapsed = next;\n return next;\n });\n };\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const menuBtnRef = useRef<HTMLButtonElement>(null);\n const dialogRef = useRef<HTMLDivElement>(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 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 const handleNewChat = () => {\n if (shell?.isComposerEnabled) {\n shell.openDraft();\n return;\n }\n shell?.setSettingsOpen(false);\n void Promise.resolve(aui.threads().switchToNewThread()).catch(() => undefined);\n };\n\n return (\n <div className={cn('relative flex h-full min-h-0 w-full min-w-0', className)}>\n {/* Desktop sidebar */}\n <aside\n className={cn(\n 'hidden min-h-0 shrink-0 flex-col border-r border-border bg-sidebar-bg transition-[width] duration-300 ease-in-out md:flex',\n collapsed ? 'w-16' : 'w-64',\n )}\n >\n <div\n className={cn('flex shrink-0 items-center px-3 py-3', collapsed ? 'flex-col gap-3' : 'justify-between gap-2')}\n >\n <div className={cn('flex min-w-0 items-center text-text-primary', collapsed ? 'justify-center' : 'gap-2')}>\n <BrandLogo\n variant={collapsed ? chrome.collapsedVariant : chrome.expandedVariant}\n className={cn(brandLogoClassName, (collapsed || chrome.expandedVariant === 'icon') && 'w-5')}\n />\n {!collapsed && chrome.showTitle && brandName != null ? (\n <span className=\"truncate text-lg font-semibold tracking-tight\">{brandName}</span>\n ) : null}\n </div>\n <button\n type=\"button\"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n title={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded={!collapsed}\n className={auiButtonClass({ variant: 'ghost', size: 'icon' })}\n onClick={() => setDesktopCollapsed(value => !value)}\n >\n <Icon name={collapsed ? 'panel-left-open' : 'panel-left-close'} />\n </button>\n </div>\n\n {/* Keep both trees mounted; toggle with `hidden` so AgentsLibraryButton does not remount. */}\n <nav className=\"flex min-h-0 flex-1 flex-col items-center gap-2 px-3\" hidden={!collapsed} aria-label=\"Sidebar\">\n {shell?.isNewChatEnabled !== false ? (\n <button\n type=\"button\"\n aria-label=\"Start new chat\"\n title=\"New chat\"\n className={auiButtonClass({ variant: 'ghost', size: 'icon' })}\n onClick={handleNewChat}\n >\n <Icon name=\"square-pen\" />\n </button>\n ) : null}\n <AgentsLibraryButton compact />\n </nav>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\" hidden={collapsed}>\n <ThreadListContainer />\n </div>\n\n <footer\n className={cn(\n 'flex shrink-0 border-t border-border px-3 py-2',\n collapsed ? 'flex-col items-center gap-2' : 'items-center gap-1',\n )}\n >\n <ShellActions className={collapsed ? 'flex-col' : undefined} />\n </footer>\n </aside>\n\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col bg-primary-bg\">\n {/* Mobile ShellActions stay mounted while Settings is open so host overrides (e.g. logout) do not remount.\n Desktop keeps shell chrome in the aside footer (always mounted). */}\n <header\n className={cn(\n 'flex shrink-0 items-center gap-1 border-b border-border bg-topbar-bg px-2 py-1.5',\n // Desktop: hide when settings/idle or the thread header has nothing to show\n // (empty untitled draft). Mobile still needs Sessions + ShellActions.\n (settingsOpen || isIdle || !hasChatHeaderContent) && 'md:hidden',\n )}\n >\n {!settingsOpen ? (\n <>\n <button\n ref={menuBtnRef}\n type=\"button\"\n aria-label=\"Sessions\"\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 <NamedAgentHeaderLabel />\n <span className=\"min-w-0 flex-1\" />\n <ClearChatButton />\n <SaveAgentButton />\n </>\n ) : (\n <span className=\"min-w-0 flex-1\" />\n )}\n <div key=\"mobile-shell-actions\" className=\"md:hidden\">\n <ShellActions />\n </div>\n </header>\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 ) : isIdle ? (\n <SelectAgentEmptyState />\n ) : (\n <Thread />\n )}\n </div>\n </div>\n\n {/* Mobile sessions drawer */}\n {mobileNavOpen ? (\n <>\n <button\n type=\"button\"\n aria-label=\"Close sessions\"\n className=\"absolute inset-0 z-[9] cursor-pointer bg-[var(--overlay)] md:hidden\"\n onClick={() => setMobileNavOpen(false)}\n />\n <div\n ref={dialogRef}\n className=\"absolute inset-y-0 left-0 z-10 flex w-full max-w-80 flex-col border-r border-border bg-sidebar-bg shadow-lg outline-none md:hidden\"\n role=\"dialog\"\n aria-label=\"Sessions\"\n tabIndex={-1}\n >\n <div className=\"flex shrink-0 items-center gap-2 border-b border-border px-3 py-3 text-text-primary\">\n <BrandLogo\n variant={chrome.expandedVariant}\n className={cn(brandLogoClassName, chrome.expandedVariant === 'icon' && 'w-5')}\n />\n {chrome.showTitle && brandName != null ? (\n <span className=\"truncate text-lg font-semibold tracking-tight\">{brandName}</span>\n ) : null}\n </div>\n <ThreadListContainer onThreadOpen={() => setMobileNavOpen(false)} />\n </div>\n </>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -5,16 +5,16 @@ import {
5
5
  SearchInput_default,
6
6
  auiInputClass,
7
7
  useToasterOptional
8
- } from "./chunk-XRTTKGKN.js";
8
+ } from "./chunk-OSV3HI5M.js";
9
9
  import {
10
10
  Icon,
11
11
  getErrorMessage
12
- } from "./chunk-IFLE7OMM.js";
12
+ } from "./chunk-FJ5RSSMA.js";
13
13
  import {
14
14
  useCatalogServer
15
15
  } from "./chunk-WQULF5AT.js";
16
- import "./chunk-JRRCAKEP.js";
17
- import "./chunk-72LC2M3R.js";
16
+ import "./chunk-B52K63AW.js";
17
+ import "./chunk-36KOSC2J.js";
18
18
 
19
19
  // src/containers/SettingsBuilder/SkillSettings.tsx
20
20
  import { useCallback, useEffect, useMemo, useState as useState2 } from "react";
@@ -388,4 +388,4 @@ var SkillSettings_default = SkillSettings;
388
388
  export {
389
389
  SkillSettings_default as default
390
390
  };
391
- //# sourceMappingURL=SkillSettings-ECH6SHZ7.js.map
391
+ //# sourceMappingURL=SkillSettings-3EPPC3IT.js.map
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-YIWUG6MC.js";
5
5
  import {
6
6
  TrueForgeUIShell
7
- } from "./chunk-255AE5NI.js";
8
- import "./chunk-FXCYLEFB.js";
7
+ } from "./chunk-WREC7D54.js";
8
+ import "./chunk-BSIPI3KV.js";
9
9
  import "./chunk-M6MHLVSO.js";
10
- import "./chunk-XRTTKGKN.js";
11
- import "./chunk-IFLE7OMM.js";
10
+ import "./chunk-OSV3HI5M.js";
11
+ import "./chunk-FJ5RSSMA.js";
12
12
  import "./chunk-WQULF5AT.js";
13
- import "./chunk-JRRCAKEP.js";
14
- import "./chunk-72LC2M3R.js";
13
+ import "./chunk-B52K63AW.js";
14
+ import "./chunk-36KOSC2J.js";
15
15
 
16
16
  // src/containers/TrueForgeUIWithRouter.tsx
17
17
  import { useMemo } from "react";
@@ -27,4 +27,4 @@ function TrueForgeUIWithRouter({
27
27
  export {
28
28
  TrueForgeUIWithRouter
29
29
  };
30
- //# sourceMappingURL=TrueForgeUIWithRouter-KMHPOKLN.js.map
30
+ //# sourceMappingURL=TrueForgeUIWithRouter-NZ4FGPE4.js.map
@@ -1,24 +1,24 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-PUFYHFND.js";
5
- import "./chunk-OZTNBS6V.js";
6
- import "./chunk-IWPDSPVA.js";
7
- import "./chunk-FXCYLEFB.js";
4
+ } from "./chunk-7L63OK3O.js";
5
+ import "./chunk-ZXOADNF3.js";
6
+ import "./chunk-3S6KHO7H.js";
7
+ import "./chunk-BSIPI3KV.js";
8
8
  import "./chunk-M6MHLVSO.js";
9
9
  import {
10
10
  useSlot
11
- } from "./chunk-XRTTKGKN.js";
11
+ } from "./chunk-OSV3HI5M.js";
12
12
  import {
13
13
  CompactLayoutProvider,
14
14
  Icon,
15
15
  auiButtonClass
16
- } from "./chunk-IFLE7OMM.js";
16
+ } from "./chunk-FJ5RSSMA.js";
17
17
  import "./chunk-WQULF5AT.js";
18
- import "./chunk-JRRCAKEP.js";
18
+ import "./chunk-B52K63AW.js";
19
19
  import {
20
20
  cn
21
- } from "./chunk-72LC2M3R.js";
21
+ } from "./chunk-36KOSC2J.js";
22
22
 
23
23
  // src/layouts/WidgetLayout.tsx
24
24
  import { useEffect, useRef, useState } from "react";
@@ -92,7 +92,7 @@ function WidgetLayout({ className }) {
92
92
  "aria-expanded": open,
93
93
  "aria-label": open ? "Close chat" : "Open chat",
94
94
  onClick: () => setOpen((v) => !v),
95
- children: open ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-xl leading-none", children: "\xD7" }) : /* @__PURE__ */ jsx(BrandLogo, { className: "size-6" })
95
+ children: open ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-xl leading-none", children: "\xD7" }) : /* @__PURE__ */ jsx(BrandLogo, { variant: "icon", className: "size-6" })
96
96
  }
97
97
  )
98
98
  ] });
@@ -100,4 +100,4 @@ function WidgetLayout({ className }) {
100
100
  export {
101
101
  WidgetLayout
102
102
  };
103
- //# sourceMappingURL=WidgetLayout-4ZIG3RXV.js.map
103
+ //# sourceMappingURL=WidgetLayout-3QZ357FL.js.map