@truefoundry/trueforge-ui 0.3.0-rc.3 → 0.3.0-rc.4

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 (86) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/{AgentCodeSnippets-N546FNNS.js → AgentCodeSnippets-U6KQWVBJ.js} +7 -7
  4. package/dist/AgentMetricChart-3D6FUFO6.js +15 -0
  5. package/dist/{AgentOverview-VF74XC7I.js → AgentOverview-RLJ6HZCN.js} +7 -7
  6. package/dist/{AgentSessionEventTimeline-RFR6LQMY.js → AgentSessionEventTimeline-CDXRRUZQ.js} +7 -7
  7. package/dist/{AgentSessionEventTimelineChart-27CQF6FX.js → AgentSessionEventTimelineChart-S2WX6ZEA.js} +7 -7
  8. package/dist/{AgentSessions-4IVX2SGD.js → AgentSessions-UI3L7XY2.js} +44 -20
  9. package/dist/AgentSessions-UI3L7XY2.js.map +1 -0
  10. package/dist/{ConnectorSettings-R5VEP7BO.js → ConnectorSettings-OIGAC2HU.js} +7 -7
  11. package/dist/{DockLayout-F44RWGEY.js → DockLayout-J5BRKMJZ.js} +10 -10
  12. package/dist/{DrawerLayout-SQ323AVM.js → DrawerLayout-65YHGHIF.js} +11 -11
  13. package/dist/{ModelSettings-6QLS63HM.js → ModelSettings-VP6WCMGT.js} +7 -7
  14. package/dist/OpenUiFenceBlock-UTDCTNTM.js +9 -0
  15. package/dist/{SandboxSettings-OLKDXIQS.js → SandboxSettings-GTZT7LD6.js} +7 -7
  16. package/dist/SchedulesPage-ARWU7BZF.js +15 -0
  17. package/dist/{SettingsBuilder-GISAH2WU.js → SettingsBuilder-A4BPYIFZ.js} +8 -8
  18. package/dist/{ShellRouteSync-EN33DUQ7.js → ShellRouteSync-SSLGM35F.js} +4 -4
  19. package/dist/{SidebarLayout-35K4AKTC.js → SidebarLayout-MFDOGAVJ.js} +13 -13
  20. package/dist/SidebarLayout-MFDOGAVJ.js.map +1 -0
  21. package/dist/{SkillSettings-JSX2BTII.js → SkillSettings-WQPUQ5TE.js} +7 -7
  22. package/dist/{TrueForgeUIWithRouter-6VCR7ES3.js → TrueForgeUIWithRouter-5CDICMCE.js} +9 -9
  23. package/dist/{WidgetLayout-RKBSN2FZ.js → WidgetLayout-HE7E4UL5.js} +10 -10
  24. package/dist/{chunk-73FQVITT.js → chunk-2BDTG544.js} +3 -3
  25. package/dist/{chunk-2O5EJ6QS.js → chunk-2OKGEU6X.js} +1368 -1196
  26. package/dist/chunk-2OKGEU6X.js.map +1 -0
  27. package/dist/{chunk-PT4EENB3.js → chunk-6CFZHEYH.js} +2 -1
  28. package/dist/chunk-6CFZHEYH.js.map +1 -0
  29. package/dist/{chunk-KR7WYHVF.js → chunk-E4GVP6PM.js} +2 -2
  30. package/dist/{chunk-F5QVQIBH.js → chunk-F7ZAQIRE.js} +10 -10
  31. package/dist/{chunk-J5BPHEDT.js → chunk-GTTMLDCI.js} +2 -2
  32. package/dist/{chunk-XLFOXQKZ.js → chunk-IOPHQEUY.js} +2 -2
  33. package/dist/{chunk-XY6LZQES.js → chunk-KCYBMKQL.js} +4 -4
  34. package/dist/{chunk-Q6TCT7ZJ.js → chunk-MAA7U4RF.js} +3 -3
  35. package/dist/{chunk-GSJAYYLR.js → chunk-MJULWIPI.js} +11 -6
  36. package/dist/chunk-MJULWIPI.js.map +1 -0
  37. package/dist/chunk-P7J2ABEP.js +587 -0
  38. package/dist/chunk-P7J2ABEP.js.map +1 -0
  39. package/dist/{chunk-LUG7E6BL.js → chunk-TGKQRK3S.js} +5 -5
  40. package/dist/{chunk-GIPFF6FZ.js → chunk-VXKNS7FH.js} +9 -9
  41. package/dist/{chunk-6WCIL3H2.js → chunk-XO3FYN2W.js} +6 -6
  42. package/dist/index.d.ts +12 -3
  43. package/dist/index.js +14 -12
  44. package/dist/index.js.map +1 -1
  45. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +8 -0
  46. package/dist/plugins/trueforge-agent-server-adapter/index.js +4 -2
  47. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  48. package/dist/styles.css +1 -1
  49. package/package.json +3 -3
  50. package/dist/AgentMetricChart-YWJYVYYA.js +0 -15
  51. package/dist/AgentSessions-4IVX2SGD.js.map +0 -1
  52. package/dist/OpenUiFenceBlock-4ROX3G4X.js +0 -9
  53. package/dist/SchedulesPage-TMOTK6DR.js +0 -15
  54. package/dist/SidebarLayout-35K4AKTC.js.map +0 -1
  55. package/dist/chunk-2O5EJ6QS.js.map +0 -1
  56. package/dist/chunk-GSJAYYLR.js.map +0 -1
  57. package/dist/chunk-LXJMINS6.js +0 -587
  58. package/dist/chunk-LXJMINS6.js.map +0 -1
  59. package/dist/chunk-PT4EENB3.js.map +0 -1
  60. /package/dist/{AgentCodeSnippets-N546FNNS.js.map → AgentCodeSnippets-U6KQWVBJ.js.map} +0 -0
  61. /package/dist/{AgentMetricChart-YWJYVYYA.js.map → AgentMetricChart-3D6FUFO6.js.map} +0 -0
  62. /package/dist/{AgentOverview-VF74XC7I.js.map → AgentOverview-RLJ6HZCN.js.map} +0 -0
  63. /package/dist/{AgentSessionEventTimeline-RFR6LQMY.js.map → AgentSessionEventTimeline-CDXRRUZQ.js.map} +0 -0
  64. /package/dist/{AgentSessionEventTimelineChart-27CQF6FX.js.map → AgentSessionEventTimelineChart-S2WX6ZEA.js.map} +0 -0
  65. /package/dist/{ConnectorSettings-R5VEP7BO.js.map → ConnectorSettings-OIGAC2HU.js.map} +0 -0
  66. /package/dist/{DockLayout-F44RWGEY.js.map → DockLayout-J5BRKMJZ.js.map} +0 -0
  67. /package/dist/{DrawerLayout-SQ323AVM.js.map → DrawerLayout-65YHGHIF.js.map} +0 -0
  68. /package/dist/{ModelSettings-6QLS63HM.js.map → ModelSettings-VP6WCMGT.js.map} +0 -0
  69. /package/dist/{OpenUiFenceBlock-4ROX3G4X.js.map → OpenUiFenceBlock-UTDCTNTM.js.map} +0 -0
  70. /package/dist/{SandboxSettings-OLKDXIQS.js.map → SandboxSettings-GTZT7LD6.js.map} +0 -0
  71. /package/dist/{SchedulesPage-TMOTK6DR.js.map → SchedulesPage-ARWU7BZF.js.map} +0 -0
  72. /package/dist/{SettingsBuilder-GISAH2WU.js.map → SettingsBuilder-A4BPYIFZ.js.map} +0 -0
  73. /package/dist/{ShellRouteSync-EN33DUQ7.js.map → ShellRouteSync-SSLGM35F.js.map} +0 -0
  74. /package/dist/{SkillSettings-JSX2BTII.js.map → SkillSettings-WQPUQ5TE.js.map} +0 -0
  75. /package/dist/{TrueForgeUIWithRouter-6VCR7ES3.js.map → TrueForgeUIWithRouter-5CDICMCE.js.map} +0 -0
  76. /package/dist/{WidgetLayout-RKBSN2FZ.js.map → WidgetLayout-HE7E4UL5.js.map} +0 -0
  77. /package/dist/{chunk-73FQVITT.js.map → chunk-2BDTG544.js.map} +0 -0
  78. /package/dist/{chunk-KR7WYHVF.js.map → chunk-E4GVP6PM.js.map} +0 -0
  79. /package/dist/{chunk-F5QVQIBH.js.map → chunk-F7ZAQIRE.js.map} +0 -0
  80. /package/dist/{chunk-J5BPHEDT.js.map → chunk-GTTMLDCI.js.map} +0 -0
  81. /package/dist/{chunk-XLFOXQKZ.js.map → chunk-IOPHQEUY.js.map} +0 -0
  82. /package/dist/{chunk-XY6LZQES.js.map → chunk-KCYBMKQL.js.map} +0 -0
  83. /package/dist/{chunk-Q6TCT7ZJ.js.map → chunk-MAA7U4RF.js.map} +0 -0
  84. /package/dist/{chunk-LUG7E6BL.js.map → chunk-TGKQRK3S.js.map} +0 -0
  85. /package/dist/{chunk-GIPFF6FZ.js.map → chunk-VXKNS7FH.js.map} +0 -0
  86. /package/dist/{chunk-6WCIL3H2.js.map → chunk-XO3FYN2W.js.map} +0 -0
@@ -4,13 +4,13 @@ import {
4
4
  matchLocation,
5
5
  placesEqual,
6
6
  sanitizeSearchForPlace
7
- } from "./chunk-73FQVITT.js";
7
+ } from "./chunk-2BDTG544.js";
8
8
  import {
9
9
  sessionIsCreateAgent
10
10
  } from "./chunk-RDXBMTP5.js";
11
11
  import {
12
12
  findAgentByName
13
- } from "./chunk-KR7WYHVF.js";
13
+ } from "./chunk-E4GVP6PM.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-PT4EENB3.js";
24
+ } from "./chunk-6CFZHEYH.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-EN33DUQ7.js.map
390
+ //# sourceMappingURL=ShellRouteSync-SSLGM35F.js.map
@@ -3,40 +3,40 @@ import {
3
3
  AgentConfigDrawerContainer,
4
4
  NamedAgentHeaderLabel,
5
5
  ShellActions
6
- } from "./chunk-LUG7E6BL.js";
6
+ } from "./chunk-TGKQRK3S.js";
7
7
  import {
8
8
  ThreadListContainer
9
- } from "./chunk-6WCIL3H2.js";
9
+ } from "./chunk-XO3FYN2W.js";
10
10
  import {
11
11
  Thread
12
- } from "./chunk-XY6LZQES.js";
12
+ } from "./chunk-KCYBMKQL.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-2O5EJ6QS.js";
20
- import "./chunk-KR7WYHVF.js";
19
+ } from "./chunk-2OKGEU6X.js";
20
+ import "./chunk-E4GVP6PM.js";
21
21
  import {
22
22
  Icon,
23
23
  PageHeader,
24
24
  Spinner,
25
25
  auiButtonClass,
26
26
  sidebarRailButtonClassName
27
- } from "./chunk-Q6TCT7ZJ.js";
27
+ } from "./chunk-MAA7U4RF.js";
28
28
  import {
29
29
  shellIsCreateAgent,
30
30
  useOptionalShellMode
31
- } from "./chunk-PT4EENB3.js";
31
+ } from "./chunk-6CFZHEYH.js";
32
32
  import {
33
33
  useAui
34
34
  } from "./chunk-M6MHLVSO.js";
35
- import "./chunk-J5BPHEDT.js";
35
+ import "./chunk-GTTMLDCI.js";
36
36
  import {
37
37
  cn,
38
38
  useBrand
39
- } from "./chunk-LXJMINS6.js";
39
+ } from "./chunk-P7J2ABEP.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-GISAH2WU.js"));
50
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-A4BPYIFZ.js"));
51
51
  var SchedulesPage = lazy(
52
- () => import("./SchedulesPage-TMOTK6DR.js").then((m) => ({ default: m.SchedulesPage }))
52
+ () => import("./SchedulesPage-ARWU7BZF.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";
@@ -67,7 +67,7 @@ function SidebarNav() {
67
67
  const showNewActions = shell?.isNewChatEnabled !== false;
68
68
  const overlayOpen = shell?.settingsOpen === true || shell?.libraryOpen === true || shell?.sessionsOpen === true || shell?.schedulesOpen === true;
69
69
  const mode = shell?.mode;
70
- const newChatSelected = !overlayOpen && mode?.status === "active" && !mode.isCreateAgent;
70
+ const newChatSelected = !overlayOpen && mode?.status === "active" && !mode.isCreateAgent && shell?.historyAgentFilter?.intent !== "try-agent";
71
71
  const newAgentSelected = !overlayOpen && mode != null && shellIsCreateAgent(mode);
72
72
  const handleNewChat = () => {
73
73
  shell?.setLibraryOpen(false);
@@ -327,4 +327,4 @@ function SidebarLayout({ className }) {
327
327
  export {
328
328
  SidebarLayout
329
329
  };
330
- //# sourceMappingURL=SidebarLayout-35K4AKTC.js.map
330
+ //# sourceMappingURL=SidebarLayout-MFDOGAVJ.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-1\" />\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-2O5EJ6QS.js";
9
- import "./chunk-KR7WYHVF.js";
8
+ } from "./chunk-2OKGEU6X.js";
9
+ import "./chunk-E4GVP6PM.js";
10
10
  import {
11
11
  Icon
12
- } from "./chunk-Q6TCT7ZJ.js";
12
+ } from "./chunk-MAA7U4RF.js";
13
13
  import {
14
14
  getErrorMessage,
15
15
  useCatalogServer
16
- } from "./chunk-PT4EENB3.js";
16
+ } from "./chunk-6CFZHEYH.js";
17
17
  import "./chunk-M6MHLVSO.js";
18
- import "./chunk-J5BPHEDT.js";
19
- import "./chunk-LXJMINS6.js";
18
+ import "./chunk-GTTMLDCI.js";
19
+ import "./chunk-P7J2ABEP.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-JSX2BTII.js.map
395
+ //# sourceMappingURL=SkillSettings-WQPUQ5TE.js.map
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  TrueForgeUIShell
4
- } from "./chunk-F5QVQIBH.js";
4
+ } from "./chunk-F7ZAQIRE.js";
5
5
  import "./chunk-DJUFS2BW.js";
6
6
  import "./chunk-BSIPI3KV.js";
7
7
  import {
8
8
  resolveRoutesConfig
9
- } from "./chunk-73FQVITT.js";
9
+ } from "./chunk-2BDTG544.js";
10
10
  import "./chunk-Y6S4OVVQ.js";
11
11
  import "./chunk-RDXBMTP5.js";
12
- import "./chunk-2O5EJ6QS.js";
13
- import "./chunk-KR7WYHVF.js";
14
- import "./chunk-Q6TCT7ZJ.js";
15
- import "./chunk-PT4EENB3.js";
12
+ import "./chunk-2OKGEU6X.js";
13
+ import "./chunk-E4GVP6PM.js";
14
+ import "./chunk-MAA7U4RF.js";
15
+ import "./chunk-6CFZHEYH.js";
16
16
  import "./chunk-M6MHLVSO.js";
17
- import "./chunk-J5BPHEDT.js";
18
- import "./chunk-LXJMINS6.js";
17
+ import "./chunk-GTTMLDCI.js";
18
+ import "./chunk-P7J2ABEP.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-6VCR7ES3.js.map
34
+ //# sourceMappingURL=TrueForgeUIWithRouter-5CDICMCE.js.map
@@ -1,28 +1,28 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-GIPFF6FZ.js";
5
- import "./chunk-LUG7E6BL.js";
6
- import "./chunk-XY6LZQES.js";
4
+ } from "./chunk-VXKNS7FH.js";
5
+ import "./chunk-TGKQRK3S.js";
6
+ import "./chunk-KCYBMKQL.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-2O5EJ6QS.js";
14
- import "./chunk-KR7WYHVF.js";
13
+ } from "./chunk-2OKGEU6X.js";
14
+ import "./chunk-E4GVP6PM.js";
15
15
  import {
16
16
  CompactLayoutProvider,
17
17
  Icon,
18
18
  auiButtonClass
19
- } from "./chunk-Q6TCT7ZJ.js";
20
- import "./chunk-PT4EENB3.js";
19
+ } from "./chunk-MAA7U4RF.js";
20
+ import "./chunk-6CFZHEYH.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-J5BPHEDT.js";
22
+ import "./chunk-GTTMLDCI.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-LXJMINS6.js";
25
+ } from "./chunk-P7J2ABEP.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-RKBSN2FZ.js.map
107
+ //# sourceMappingURL=WidgetLayout-HE7E4UL5.js.map
@@ -2,11 +2,11 @@ import {
2
2
  clearScheduleShareSearch,
3
3
  readScheduleShareSearch,
4
4
  writeScheduleShareSearch
5
- } from "./chunk-KR7WYHVF.js";
5
+ } from "./chunk-E4GVP6PM.js";
6
6
  import {
7
7
  readSessionShareSearch,
8
8
  writeSessionShareSearch
9
- } from "./chunk-PT4EENB3.js";
9
+ } from "./chunk-6CFZHEYH.js";
10
10
 
11
11
  // src/routing/paths.ts
12
12
  var DEFAULTS = {
@@ -214,4 +214,4 @@ export {
214
214
  matchLocation,
215
215
  placesEqual
216
216
  };
217
- //# sourceMappingURL=chunk-73FQVITT.js.map
217
+ //# sourceMappingURL=chunk-2BDTG544.js.map