@truefoundry/trueforge-ui 0.2.4 → 0.3.0-rc.1

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 (113) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +55 -23
  3. package/dist/AgentCodeSnippets-NZOFJE57.js +74 -0
  4. package/dist/AgentCodeSnippets-NZOFJE57.js.map +1 -0
  5. package/dist/AgentMetricChart-JPU3MFQ2.js +15 -0
  6. package/dist/AgentOverview-EEBHJC32.js +167 -0
  7. package/dist/AgentOverview-EEBHJC32.js.map +1 -0
  8. package/dist/AgentSessionEventTimeline-26Z6IB3B.js +79 -0
  9. package/dist/AgentSessionEventTimeline-26Z6IB3B.js.map +1 -0
  10. package/dist/AgentSessionEventTimelineChart-CGCU7WBK.js +504 -0
  11. package/dist/AgentSessionEventTimelineChart-CGCU7WBK.js.map +1 -0
  12. package/dist/AgentSessions-3MPDZASK.js +275 -0
  13. package/dist/AgentSessions-3MPDZASK.js.map +1 -0
  14. package/dist/{ConnectorSettings-ODC3LVHN.js → ConnectorSettings-MXFRWWR6.js} +8 -6
  15. package/dist/{ConnectorSettings-ODC3LVHN.js.map → ConnectorSettings-MXFRWWR6.js.map} +1 -1
  16. package/dist/{DockLayout-TEOWEMSV.js → DockLayout-LM4AFMFY.js} +12 -11
  17. package/dist/{DockLayout-TEOWEMSV.js.map → DockLayout-LM4AFMFY.js.map} +1 -1
  18. package/dist/DrawerLayout-JR3O6RRB.js +184 -0
  19. package/dist/DrawerLayout-JR3O6RRB.js.map +1 -0
  20. package/dist/{ModelSettings-CKQ5CVAC.js → ModelSettings-G7IFNC2Y.js} +8 -6
  21. package/dist/{ModelSettings-CKQ5CVAC.js.map → ModelSettings-G7IFNC2Y.js.map} +1 -1
  22. package/dist/OpenUiFenceBlock-2TV5TQ6P.js +9 -0
  23. package/dist/OpenUiFenceBlock-2TV5TQ6P.js.map +1 -0
  24. package/dist/{SandboxSettings-HSCPYUOC.js → SandboxSettings-NXAANMAX.js} +8 -6
  25. package/dist/{SandboxSettings-HSCPYUOC.js.map → SandboxSettings-NXAANMAX.js.map} +1 -1
  26. package/dist/SchedulesPage-KKLUDO6B.js +15 -0
  27. package/dist/SchedulesPage-KKLUDO6B.js.map +1 -0
  28. package/dist/{SettingsBuilder-MYWRFXRI.js → SettingsBuilder-L34IQ56S.js} +26 -22
  29. package/dist/SettingsBuilder-L34IQ56S.js.map +1 -0
  30. package/dist/{ShellRouteSync-T4WLY57Q.js → ShellRouteSync-CEBETGEJ.js} +95 -22
  31. package/dist/ShellRouteSync-CEBETGEJ.js.map +1 -0
  32. package/dist/SidebarLayout-A2HJPPHS.js +308 -0
  33. package/dist/SidebarLayout-A2HJPPHS.js.map +1 -0
  34. package/dist/{SkillSettings-ECH6SHZ7.js → SkillSettings-FGGMSUNO.js} +8 -6
  35. package/dist/{SkillSettings-ECH6SHZ7.js.map → SkillSettings-FGGMSUNO.js.map} +1 -1
  36. package/dist/{TrueForgeUIWithRouter-KMHPOKLN.js → TrueForgeUIWithRouter-MZVJWJMB.js} +15 -11
  37. package/dist/{TrueForgeUIWithRouter-KMHPOKLN.js.map → TrueForgeUIWithRouter-MZVJWJMB.js.map} +1 -1
  38. package/dist/{WidgetLayout-4ZIG3RXV.js → WidgetLayout-6QM45OQQ.js} +19 -15
  39. package/dist/WidgetLayout-6QM45OQQ.js.map +1 -0
  40. package/dist/chunk-2XPPBEYF.js +74 -0
  41. package/dist/chunk-2XPPBEYF.js.map +1 -0
  42. package/dist/chunk-6O6FWUDW.js +1376 -0
  43. package/dist/chunk-6O6FWUDW.js.map +1 -0
  44. package/dist/chunk-7Z2C2K7F.js +578 -0
  45. package/dist/chunk-7Z2C2K7F.js.map +1 -0
  46. package/dist/{chunk-FXCYLEFB.js → chunk-BSIPI3KV.js} +18 -2
  47. package/dist/chunk-BSIPI3KV.js.map +1 -0
  48. package/dist/{chunk-255AE5NI.js → chunk-CYHJDKFB.js} +118 -33
  49. package/dist/chunk-CYHJDKFB.js.map +1 -0
  50. package/dist/chunk-DJUFS2BW.js +27 -0
  51. package/dist/chunk-DJUFS2BW.js.map +1 -0
  52. package/dist/chunk-DMMZSZTN.js +252 -0
  53. package/dist/chunk-DMMZSZTN.js.map +1 -0
  54. package/dist/chunk-FJW36PD7.js +180 -0
  55. package/dist/chunk-FJW36PD7.js.map +1 -0
  56. package/dist/chunk-M62XY4NC.js +555 -0
  57. package/dist/chunk-M62XY4NC.js.map +1 -0
  58. package/dist/{chunk-JRRCAKEP.js → chunk-MPNSO7E6.js} +2 -2
  59. package/dist/{chunk-CFLVPV5M.js → chunk-QC42MLAK.js} +7 -2
  60. package/dist/chunk-QC42MLAK.js.map +1 -0
  61. package/dist/chunk-RDXBMTP5.js +32 -0
  62. package/dist/chunk-RDXBMTP5.js.map +1 -0
  63. package/dist/chunk-SFZNIO6U.js +18 -0
  64. package/dist/chunk-SFZNIO6U.js.map +1 -0
  65. package/dist/chunk-U7KURWW3.js +840 -0
  66. package/dist/chunk-U7KURWW3.js.map +1 -0
  67. package/dist/chunk-WVE3F724.js +200 -0
  68. package/dist/chunk-WVE3F724.js.map +1 -0
  69. package/dist/{chunk-IFLE7OMM.js → chunk-XAU7QFG3.js} +180 -38
  70. package/dist/chunk-XAU7QFG3.js.map +1 -0
  71. package/dist/chunk-Y6S4OVVQ.js +16 -0
  72. package/dist/chunk-Y6S4OVVQ.js.map +1 -0
  73. package/dist/chunk-ZKNUMH2M.js +119 -0
  74. package/dist/chunk-ZKNUMH2M.js.map +1 -0
  75. package/dist/chunk-ZTMKFZQ3.js +13214 -0
  76. package/dist/chunk-ZTMKFZQ3.js.map +1 -0
  77. package/dist/{createTrueFoundryServer-B72bU-J7.d.ts → createTrueFoundryServer-CmZnBh_l.d.ts} +15 -4
  78. package/dist/index.d.ts +1199 -161
  79. package/dist/index.js +699 -69
  80. package/dist/index.js.map +1 -1
  81. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +552 -12
  82. package/dist/plugins/trueforge-agent-server-adapter/index.js +506 -188
  83. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  84. package/dist/styles.css +1 -1
  85. package/package.json +11 -10
  86. package/dist/DrawerLayout-2JOQ4EDZ.js +0 -159
  87. package/dist/DrawerLayout-2JOQ4EDZ.js.map +0 -1
  88. package/dist/OpenUiFenceBlock-3EFPY4JW.js +0 -9
  89. package/dist/SettingsBuilder-MYWRFXRI.js.map +0 -1
  90. package/dist/ShellRouteSync-T4WLY57Q.js.map +0 -1
  91. package/dist/SidebarLayout-6MHQYW45.js +0 -239
  92. package/dist/SidebarLayout-6MHQYW45.js.map +0 -1
  93. package/dist/WidgetLayout-4ZIG3RXV.js.map +0 -1
  94. package/dist/chunk-255AE5NI.js.map +0 -1
  95. package/dist/chunk-72LC2M3R.js +0 -567
  96. package/dist/chunk-72LC2M3R.js.map +0 -1
  97. package/dist/chunk-CFLVPV5M.js.map +0 -1
  98. package/dist/chunk-FXCYLEFB.js.map +0 -1
  99. package/dist/chunk-IFLE7OMM.js.map +0 -1
  100. package/dist/chunk-IWPDSPVA.js +0 -2068
  101. package/dist/chunk-IWPDSPVA.js.map +0 -1
  102. package/dist/chunk-OZTNBS6V.js +0 -75
  103. package/dist/chunk-OZTNBS6V.js.map +0 -1
  104. package/dist/chunk-PUFYHFND.js +0 -91
  105. package/dist/chunk-PUFYHFND.js.map +0 -1
  106. package/dist/chunk-WQULF5AT.js +0 -460
  107. package/dist/chunk-WQULF5AT.js.map +0 -1
  108. package/dist/chunk-XRTTKGKN.js +0 -6825
  109. package/dist/chunk-XRTTKGKN.js.map +0 -1
  110. package/dist/chunk-YIWUG6MC.js +0 -101
  111. package/dist/chunk-YIWUG6MC.js.map +0 -1
  112. /package/dist/{OpenUiFenceBlock-3EFPY4JW.js.map → AgentMetricChart-JPU3MFQ2.js.map} +0 -0
  113. /package/dist/{chunk-JRRCAKEP.js.map → chunk-MPNSO7E6.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,27 +1,167 @@
1
1
  import * as react from 'react';
2
- import react__default, { ComponentPropsWithRef, ComponentProps, ComponentType, ReactNode, HTMLAttributes, CSSProperties, FC, SVGProps, ComponentPropsWithoutRef, PropsWithChildren } from 'react';
2
+ import react__default, { CSSProperties, ReactNode, FC, SVGProps, ComponentType, ComponentPropsWithRef, ComponentProps, HTMLAttributes, ComponentPropsWithoutRef, PropsWithChildren } from 'react';
3
3
  import { LucideIcon } from 'lucide-react';
4
+ import { SessionEventItem, AgentDetail, AgentMetricMeter, AgentMetricChartDefinition, AgentMetricGraph, CodeSnippet, AgentLibraryEntry, AgentSpec, ModelSelection, ConnectorState, AgentSkill, McpToolSelection, AgentRuntimeConfig, Schedule, ScheduleRun, ScheduleStatus, CatalogServer, AgentUIServer, AgentMetricsServer, AgentSessionsServer, ScheduleServer, AgentBuilderCapabilitiesResponse } from '@truefoundry/assistant-ui-runtime/server';
5
+ export { AgentBuilderCapabilitiesResponse, AgentBuilderServer, AgentChatServer, AgentDetail, AgentLibraryEntry, AgentMetricChartData, AgentMetricChartDataRequest, AgentMetricChartDefinition, AgentMetricChartType, AgentMetricGraph, AgentMetricGraphLine, AgentMetricMeter, AgentMetricPoint, AgentMetricRangeRequest, AgentMetricsServer, AgentSessionsServer, AgentSkill, AgentSpec, AgentUIServer, ApprovalDecision, AuthenticateConnectorRequest, CatalogServer, CodeSnippet, CodeSnippetSampleCode, ConnectorAuth, ConnectorAuthApiKey, ConnectorAuthNone, ConnectorAuthOAuth, ConnectorAuthPublic, ConnectorAuthPublicApiKey, ConnectorAuthPublicNone, ConnectorAuthPublicOAuth, ConnectorAuthType, ConnectorAuthenticationResult, ConnectorBase, ConnectorCatalogEntry, ConnectorCatalogServer, ConnectorConfigBase, ConnectorState, CreateConnectorRequest, CreateModelProviderRequest, CreateSandboxProviderRequest, CreateSessionRequest, CreateSkillRequest, CreateSkillRequestBase, DefinedSkill, GithubSkill, ImportGithubSkillRequest, ListResult, ListSessionEventsParams, ListSessionsOrder, ListSessionsParams, McpServerMount, Model, ModelCatalogServer, ModelEntry, ModelParams, ModelProperties, ModelProviderBase, ModelProviderCatalogEntry, ModelProviderConfigBase, ModelSelection, ModelSelectorEntry, PageParams, PreviousTurnIdInput, ProviderEntry, ProviderType, RegistrySkill, SandboxCatalogServer, SandboxProviderBase, SandboxProviderCatalogEntry, SandboxProviderConfig, SandboxProviderListEntry, SandboxSnapshotSyncStatus, SaveAgentRequest, SaveAgentResult, SearchAgentsParams, SelectRegistrySkillRequest, Session, SessionEventItem, SessionListEntry, SessionListMetrics, SkillBase, SkillCatalogEntry, SkillCatalogServer, SkillConfigBase, SkillMount, ToolBase, Turn, TurnDoneMetrics, TurnInputItem, TurnState, TurnStreamData, TurnStreamingEvent, UpdateConnectorRequest, UpdateModelProviderRequest, UpdateSandboxProviderRequest, UpdateSessionRequest, UserMessage, UserMessageContent, UserToolApprovalEvent, UserToolResponseEvent } from '@truefoundry/assistant-ui-runtime/server';
6
+ import { TrueForgeApi } from '@truefoundry/trueforge-sdk';
4
7
  import { MessagePrimitive, ToolCallMessagePartComponent } from '@assistant-ui/react';
5
8
  export { AssistantState, useAui, useAuiState } from '@assistant-ui/react';
6
9
  import { UseTrueFoundryAgentRuntimeOptions, TrueFoundryAgentConfig } from '@truefoundry/assistant-ui-runtime';
7
10
  export { DraftAgentConfig, NamedAgentConfig, TrueFoundryAgentConfig, UseTrueFoundryAgentRuntimeOptions, mergeAgentSpec, trueFoundryAttachmentAdapter, useTrueFoundryAgentRuntime, useTrueFoundryAgentSpec, useTrueFoundryCancel, useTrueFoundryDownloadSandboxFile, useTrueFoundryHistoryPagination, useTrueFoundryMcpAuth, useTrueFoundryRespondToToolApproval, useTrueFoundryToolResponses, useTrueFoundryTurnId, useTrueFoundryUpdateAgentSpec } from '@truefoundry/assistant-ui-runtime';
8
- import { AgentSpec, AgentLibraryEntry, CatalogServer, AgentUIServer, AgentBuilderCapabilitiesResponse, ModelSelection, AgentSkill, ConnectorState } from '@truefoundry/assistant-ui-runtime/server';
9
- export { AgentBuilderCapabilitiesResponse, AgentBuilderServer, AgentChatServer, AgentLibraryEntry, AgentSkill, AgentSpec, AgentUIServer, ApprovalDecision, AuthenticateConnectorRequest, CatalogServer, ConnectorAuth, ConnectorAuthApiKey, ConnectorAuthNone, ConnectorAuthOAuth, ConnectorAuthPublic, ConnectorAuthPublicApiKey, ConnectorAuthPublicNone, ConnectorAuthPublicOAuth, ConnectorAuthType, ConnectorAuthenticationResult, ConnectorBase, ConnectorCatalogEntry, ConnectorCatalogServer, ConnectorConfigBase, ConnectorState, CreateConnectorRequest, CreateModelProviderRequest, CreateSandboxProviderRequest, CreateSessionRequest, CreateSkillRequest, CreateSkillRequestBase, DefinedSkill, GithubSkill, ImportGithubSkillRequest, ListResult, ListSessionsOrder, ListSessionsParams, McpServerMount, Model, ModelCatalogServer, ModelEntry, ModelParams, ModelProperties, ModelProviderBase, ModelProviderCatalogEntry, ModelProviderConfigBase, ModelSelection, ModelSelectorEntry, PageParams, PreviousTurnIdInput, ProviderEntry, ProviderType, RegistrySkill, SandboxCatalogServer, SandboxProviderBase, SandboxProviderCatalogEntry, SandboxProviderConfig, SandboxProviderListEntry, SandboxSnapshotSyncStatus, SaveAgentRequest, SaveAgentResult, SearchAgentsParams, SelectRegistrySkillRequest, Session, SessionEventItem, SkillBase, SkillCatalogEntry, SkillCatalogServer, SkillConfigBase, SkillMount, ToolBase, Turn, TurnInputItem, TurnState, TurnStreamData, TurnStreamingEvent, UpdateConnectorRequest, UpdateModelProviderRequest, UpdateSandboxProviderRequest, UpdateSessionRequest, UserMessage, UserMessageContent, UserToolApprovalEvent, UserToolResponseEvent } from '@truefoundry/assistant-ui-runtime/server';
10
- export { C as CreateTrueFoundryServerOptions, T as TrueFoundryServer, c as createTrueFoundryServer } from './createTrueFoundryServer-B72bU-J7.js';
11
+ export { C as CreateTrueFoundryServerOptions, T as TrueFoundryServer, c as createTrueFoundryServer } from './createTrueFoundryServer-CmZnBh_l.js';
11
12
  import { PartState } from '@assistant-ui/core/react';
12
13
 
13
- /** Configured brand name, or the SDK default. Safe outside a `ThemeProvider`. */
14
- declare function useBrandName(): string;
14
+ type ThemeMode = 'light' | 'dark' | 'system';
15
+ type ThemePreset = 'trueforge' | 'claude' | 'chatgpt' | 'gemini';
16
+ type SemanticTokens = {
17
+ sidebarBg: string;
18
+ topbarBg: string;
19
+ primaryBg: string;
20
+ secondaryBg: string;
21
+ border: string;
22
+ fontFamily: string;
23
+ inputBoxBg: string;
24
+ inputBorder: string;
25
+ textPrimary: string;
26
+ textSecondary: string;
27
+ cardBg: string;
28
+ dropdownSelectedItemBg: string;
29
+ dropdownSelectedItemText: string;
30
+ userMessageBg: string;
31
+ userMessageText: string;
32
+ assistantMessageBg: string;
33
+ assistantMessageText: string;
34
+ primaryButtonBg: string;
35
+ primaryButtonHover: string;
36
+ primaryButtonText: string;
37
+ secondaryButtonBg: string;
38
+ secondaryButtonHover: string;
39
+ secondaryButtonText: string;
40
+ ghostButtonBg: string;
41
+ ghostButtonHover: string;
42
+ ghostButtonText: string;
43
+ successBg: string;
44
+ successText: string;
45
+ failureBg: string;
46
+ failureText: string;
47
+ warningBg: string;
48
+ warningText: string;
49
+ focusRing: string;
50
+ radius: string;
51
+ composerRadius: string;
52
+ overlay: string;
53
+ shadowColor: string;
54
+ scrollbarThumb: string;
55
+ };
56
+ type IconProps$1 = {
57
+ className?: string;
58
+ style?: CSSProperties;
59
+ size?: string | number;
60
+ 'aria-hidden'?: boolean | 'true' | 'false';
61
+ 'aria-label'?: string;
62
+ 'data-testid'?: string;
63
+ };
64
+ type IconComponent = LucideIcon | ((props: IconProps$1) => ReactNode) | FC<SVGProps<SVGSVGElement>>;
65
+ type IconEntry = IconComponent | ReactNode;
66
+ type IconMap = Record<string, IconEntry>;
15
67
  /**
16
- * The product mark: `theme.brand.logo` resolved against the active theme mode,
17
- * labelled with the brand name, and linked when the config carries an `href`.
18
- * Falls back to the default mark when no logo is configured.
19
- *
20
- * Callers that also want the name as text render it themselves — the SDK layouts
21
- * pair this with `useBrandName()` so each one controls its own arrangement.
68
+ * Brand image sources. `light` / `dark` pick per resolved theme mode and fall
69
+ * back to each other, then to `src`.
70
+ */
71
+ type BrandLogoConfig = {
72
+ src?: string;
73
+ light?: string;
74
+ dark?: string;
75
+ };
76
+ type BrandImage = string | BrandLogoConfig;
77
+ /** Chrome look for `theme.brand`. Omit `brand` entirely for the default TrueForge marks. */
78
+ type BrandMode = 'icon-title' | 'icon-only' | 'logo';
79
+ /**
80
+ * Product branding. Set `mode`, then pass the fields that mode requires.
81
+ * `name` always labels the mark (`alt` / `aria-label`).
22
82
  */
23
- declare function BrandLogo({ className }: {
83
+ type BrandConfig = {
84
+ mode: 'icon-title';
85
+ /** Accessible label and visible title beside the square mark in expanded chrome. */
86
+ name: string;
87
+ /** Square image, or per-mode sources. Omit to keep the default mark. */
88
+ icon?: BrandImage;
89
+ logo?: never;
90
+ /** Wraps configured brand images in a same-tab link. */
91
+ href?: string;
92
+ } | {
93
+ mode: 'icon-only';
94
+ /** Accessible label only — no title text in expanded chrome. */
95
+ name: string;
96
+ /** Square image, or per-mode sources. */
97
+ icon: BrandImage;
98
+ logo?: never;
99
+ /** Wraps configured brand images in a same-tab link. */
100
+ href?: string;
101
+ } | {
102
+ mode: 'logo';
103
+ /** Accessible label only — wide logo replaces the text title in expanded chrome. */
104
+ name: string;
105
+ /** Square image, or per-mode sources, used when compact. */
106
+ icon: BrandImage;
107
+ /** Wider image, or per-mode sources, used when expanded. */
108
+ logo: BrandImage;
109
+ /** Wraps configured brand images in a same-tab link. */
110
+ href?: string;
111
+ };
112
+ type ContentClassNames = {
113
+ markdown?: string;
114
+ inlineCode?: string;
115
+ syntaxHighlighter?: {
116
+ root?: string;
117
+ pre?: string;
118
+ code?: string;
119
+ lineNumber?: string;
120
+ };
121
+ openui?: {
122
+ root?: string;
123
+ scope?: string;
124
+ };
125
+ monaco?: {
126
+ root?: string;
127
+ editor?: string;
128
+ monacoTheme?: string;
129
+ };
130
+ };
131
+ type ThemeConfig = {
132
+ preset?: ThemePreset;
133
+ mode?: ThemeMode;
134
+ tokens?: Partial<SemanticTokens>;
135
+ brand?: BrandConfig;
136
+ className?: string;
137
+ icons?: IconMap;
138
+ classNames?: ContentClassNames;
139
+ };
140
+ type BuiltInLayout = 'sidebar' | 'drawer' | 'dock' | 'widget';
141
+ type LayoutProp = BuiltInLayout | ComponentType<{
142
+ className?: string;
143
+ }>;
144
+
145
+ /** Expanded / collapsed chrome choices derived from `theme.brand.mode`. */
146
+ type BrandChrome = {
147
+ expandedVariant: 'icon' | 'logo';
148
+ collapsedVariant: 'icon';
149
+ /** Whether to render `name` as visible text beside the mark in expanded chrome. */
150
+ showTitle: boolean;
151
+ };
152
+ /**
153
+ * Maps `brand.mode` to layout chrome. Layouts should not re-derive field combinations.
154
+ */
155
+ declare function resolveBrandChrome(brand: Partial<BrandConfig> | undefined): BrandChrome;
156
+ /** Configured display name, or the SDK default when no custom brand is set. */
157
+ declare function useBrandName(): string | undefined;
158
+ /**
159
+ * The product mark resolved against the active theme mode. Compact surfaces use
160
+ * `icon`; expanded surfaces use `logo` and fall back to `icon`.
161
+ */
162
+ declare function BrandLogo({ className, variant }: {
24
163
  className?: string;
164
+ variant?: 'icon' | 'logo';
25
165
  }): react.JSX.Element;
26
166
  declare module './SlotsProvider.js' {
27
167
  interface AtomSlots {
@@ -255,24 +395,347 @@ declare module '../theme/SlotsProvider.js' {
255
395
  }
256
396
  }
257
397
 
398
+ type SessionEventType = 'system' | 'user' | 'model' | 'tool_call' | 'approval' | 'sub_agent' | 'waiting_on_human' | 'error';
399
+ /**
400
+ * One drawable interval on the timeline.
401
+ *
402
+ * Times are milliseconds relative to the session origin, not wall-clock
403
+ * timestamps. Equal start/end times are rendered as markers; intervals become
404
+ * horizontal bars. `turnIndex` groups intervals into turn backgrounds and
405
+ * `threadId` assigns sub-agent work to its lane.
406
+ */
407
+ type SessionEventTimelineSegment = {
408
+ id: string;
409
+ type: SessionEventType;
410
+ title: string;
411
+ description: string;
412
+ startMs: number;
413
+ endMs: number;
414
+ turnIndex: number;
415
+ threadId: string;
416
+ isMarker?: boolean;
417
+ };
418
+
419
+ type TurnCreatedEvent = Extract<SessionEventItem['event'], {
420
+ type: 'turn.created';
421
+ }>;
422
+ type TurnDoneEvent = Extract<SessionEventItem['event'], {
423
+ type: 'turn.done';
424
+ }>;
425
+ type TurnEvent = Exclude<SessionEventItem['event'], TurnCreatedEvent | TurnDoneEvent>;
426
+ type SessionTurnView = {
427
+ turnId: string;
428
+ turnNumber: number;
429
+ showHeader: boolean;
430
+ created: TurnCreatedEvent;
431
+ done?: TurnDoneEvent;
432
+ events: TurnEvent[];
433
+ totalTokens?: number;
434
+ inputTokens?: number;
435
+ outputTokens?: number;
436
+ cachedTokens?: number;
437
+ totalCostInUsd?: number;
438
+ durationMs?: number;
439
+ };
440
+
441
+ type SessionMetricBarDatum = {
442
+ label: string;
443
+ value: number;
444
+ color: string;
445
+ };
446
+ type SessionMetrics = {
447
+ totalTurns: number;
448
+ wallTimeMs: number;
449
+ totalCostUsd?: number;
450
+ totalTokens: number;
451
+ contextTokens: number;
452
+ toolCalls: number;
453
+ subAgents: number;
454
+ errors: number;
455
+ timeBreakdown: SessionMetricBarDatum[];
456
+ costPerTurn: SessionMetricBarDatum[];
457
+ tokenBreakdown: SessionMetricBarDatum[];
458
+ contextByTurn: SessionMetricBarDatum[];
459
+ toolCallFrequency: SessionMetricBarDatum[];
460
+ };
461
+
462
+ type LibraryAgentTab = 'overview' | 'sessions' | 'code' | 'metrics';
463
+ type SessionTimeRange = {
464
+ startTs: number;
465
+ endTs: number;
466
+ timeWindowMs?: number;
467
+ };
468
+
469
+ type AgentSessionsProps = {
470
+ /** Library tab locks the list to this agent. Omit on the all-user Sessions page. */
471
+ agentId?: string;
472
+ startTimestamp?: string;
473
+ endTimestamp?: string;
474
+ /** When `sessions`, selection writes `view=sessions` and pins `s_sts`/`s_ets`. */
475
+ shareView?: 'sessions' | null;
476
+ };
477
+ type AgentSessionListRowProps = {
478
+ title: string;
479
+ agentName?: string;
480
+ lastActivityAt: string;
481
+ metrics: {
482
+ totalTurns: number;
483
+ totalCostInUsd?: number;
484
+ totalDurationMs: number;
485
+ };
486
+ active: boolean;
487
+ onSelect: () => void;
488
+ };
489
+ type AgentSessionDetailHeaderProps = {
490
+ title: string;
491
+ sessionId: string;
492
+ agentId?: string;
493
+ createdAt?: string;
494
+ view?: 'sessions' | null;
495
+ onClose: () => void;
496
+ /**
497
+ * When set with `resumeLabel`, shows Resume Chat / Resume Agent building as a
498
+ * new-tab link (session deep link). Preferred over `onResume` when both are set.
499
+ */
500
+ resumeHref?: string;
501
+ /** In-shell resume fallback when no session deep link is available. */
502
+ onResume?: () => void;
503
+ /** Label for the resume action. */
504
+ resumeLabel?: string;
505
+ };
506
+ type AgentSessionTurnHeaderProps = {
507
+ turnNumber: number;
508
+ totalTokens?: number;
509
+ inputTokens?: number;
510
+ outputTokens?: number;
511
+ cachedTokens?: number;
512
+ durationMs?: number;
513
+ totalCostInUsd?: number;
514
+ };
515
+ type AgentSessionMetricsStripProps = {
516
+ metrics: SessionMetrics;
517
+ };
518
+ type AgentSessionEventTimelineProps = {
519
+ turns: SessionTurnView[];
520
+ segments: SessionEventTimelineSegment[];
521
+ onSelectTurn?: (index: number) => void;
522
+ };
523
+ type AgentSessionEventTimelineChartProps = {
524
+ turns: SessionTurnView[];
525
+ segments: SessionEventTimelineSegment[];
526
+ hiddenTypes: ReadonlySet<SessionEventType>;
527
+ onSelectTurn?: (index: number) => void;
528
+ };
529
+ type AgentDetailsTab = LibraryAgentTab;
530
+ type AgentDetailsPageProps = {
531
+ agentId: string;
532
+ };
533
+ type AgentDetailsHeaderProps = {
534
+ agentId: string;
535
+ detail?: AgentDetail;
536
+ onBack: () => void;
537
+ };
538
+ type AgentDetailsTabsProps = {
539
+ activeTab: AgentDetailsTab;
540
+ onTabChange: (tab: AgentDetailsTab) => void;
541
+ showMetrics?: boolean;
542
+ };
543
+ type AgentMetricsProps = {
544
+ agentId: string;
545
+ };
546
+ type AgentMetricChartResult = {
547
+ definition: AgentMetricChartDefinition;
548
+ graphs?: AgentMetricGraph[];
549
+ error?: string;
550
+ };
551
+ type AgentMetricsViewProps = {
552
+ meters?: AgentMetricMeter[];
553
+ meterError?: string;
554
+ charts: AgentMetricChartResult[];
555
+ chartsLoading: boolean;
556
+ chartsError?: string;
557
+ timeRange: SessionTimeRange;
558
+ onTimeRangeChange: (range: SessionTimeRange) => void;
559
+ };
560
+ type AgentMetricsTimeRangeFilterProps = {
561
+ timeRange: SessionTimeRange;
562
+ onTimeRangeChange: (range: SessionTimeRange) => void;
563
+ };
564
+ type AgentMetricCardProps = {
565
+ meter: AgentMetricMeter;
566
+ };
567
+ type AgentMetricChartProps = {
568
+ graph?: AgentMetricGraph;
569
+ definition: AgentMetricChartDefinition;
570
+ error?: string;
571
+ };
572
+ type AgentOverviewProps = {
573
+ detail: AgentDetail;
574
+ };
575
+ type AgentOverviewCardProps = {
576
+ title: string;
577
+ icon: string;
578
+ count?: number;
579
+ children: ReactNode;
580
+ };
581
+ type AgentCodeSnippetsProps = {
582
+ snippets: CodeSnippet[];
583
+ };
584
+ type AgentCodeBlockProps = {
585
+ code: string;
586
+ language: string;
587
+ };
588
+ type AgentDetailsUnavailableProps = {
589
+ onBack: () => void;
590
+ reason?: string;
591
+ };
592
+
593
+ declare function AgentCodeBlock({ code, language }: AgentCodeBlockProps): react.JSX.Element;
594
+ declare module '../../theme/SlotsProvider.js' {
595
+ interface AtomSlots {
596
+ AgentCodeBlock: typeof AgentCodeBlock;
597
+ }
598
+ }
599
+
600
+ declare function AgentDetailsHeader({ agentId, detail, onBack }: AgentDetailsHeaderProps): react.JSX.Element;
601
+ declare module '../../theme/SlotsProvider.js' {
602
+ interface AtomSlots {
603
+ AgentDetailsHeader: typeof AgentDetailsHeader;
604
+ }
605
+ }
606
+
607
+ declare function AgentDetailsPage({ agentId }: AgentDetailsPageProps): react.JSX.Element;
608
+ declare module '../../theme/SlotsProvider.js' {
609
+ interface AtomSlots {
610
+ AgentDetailsPage: typeof AgentDetailsPage;
611
+ }
612
+ }
613
+
614
+ declare function AgentDetailsTabs({ activeTab, onTabChange, showMetrics }: AgentDetailsTabsProps): react.JSX.Element;
615
+ declare module '../../theme/SlotsProvider.js' {
616
+ interface AtomSlots {
617
+ AgentDetailsTabs: typeof AgentDetailsTabs;
618
+ }
619
+ }
620
+
621
+ declare function AgentDetailsUnavailable({ onBack, reason }: AgentDetailsUnavailableProps): react.JSX.Element;
622
+ declare module '../../theme/SlotsProvider.js' {
623
+ interface AtomSlots {
624
+ AgentDetailsUnavailable: typeof AgentDetailsUnavailable;
625
+ }
626
+ }
627
+
628
+ declare function AgentMetricCard({ meter }: AgentMetricCardProps): react.JSX.Element;
629
+ declare module '../../theme/SlotsProvider.js' {
630
+ interface AtomSlots {
631
+ AgentMetricCard: ComponentType<AgentMetricCardProps>;
632
+ }
633
+ }
634
+
635
+ declare function AgentMetricsTimeRangeFilter({ timeRange, onTimeRangeChange }: AgentMetricsTimeRangeFilterProps): react.JSX.Element;
636
+ declare module '../../theme/SlotsProvider.js' {
637
+ interface AtomSlots {
638
+ AgentMetricsTimeRangeFilter: ComponentType<AgentMetricsTimeRangeFilterProps>;
639
+ }
640
+ }
641
+
642
+ declare function AgentMetricsView({ meters, meterError, charts, chartsLoading, chartsError, timeRange, onTimeRangeChange, }: AgentMetricsViewProps): react.JSX.Element;
643
+ declare module '../../theme/SlotsProvider.js' {
644
+ interface AtomSlots {
645
+ AgentMetricsView: ComponentType<AgentMetricsViewProps>;
646
+ }
647
+ }
648
+
649
+ declare function AgentOverviewCard({ title, icon, count, children }: AgentOverviewCardProps): react.JSX.Element;
650
+ declare module '../../theme/SlotsProvider.js' {
651
+ interface AtomSlots {
652
+ AgentOverviewCard: typeof AgentOverviewCard;
653
+ }
654
+ }
655
+
656
+ declare function AgentSessionDetailHeader({ title, sessionId, agentId, createdAt, view, onClose, resumeHref, onResume, resumeLabel, }: AgentSessionDetailHeaderProps): react.JSX.Element;
657
+ declare module '../../theme/SlotsProvider.js' {
658
+ interface AtomSlots {
659
+ AgentSessionDetailHeader: typeof AgentSessionDetailHeader;
660
+ }
661
+ }
662
+
663
+ declare function AgentSessionListRow({ title, agentName, lastActivityAt, metrics, active, onSelect, }: AgentSessionListRowProps): react.JSX.Element;
664
+ declare module '../../theme/SlotsProvider.js' {
665
+ interface AtomSlots {
666
+ AgentSessionListRow: typeof AgentSessionListRow;
667
+ }
668
+ }
669
+
670
+ declare function AgentSessionMetricsStrip({ metrics }: AgentSessionMetricsStripProps): react.JSX.Element;
671
+ declare module '../../theme/SlotsProvider.js' {
672
+ interface AtomSlots {
673
+ AgentSessionMetricsStrip: ComponentType<AgentSessionMetricsStripProps>;
674
+ }
675
+ }
676
+
677
+ type AgentSessionsFiltersProps = {
678
+ agentId: string | null;
679
+ timeRange: SessionTimeRange;
680
+ onAgentChange: (agentId: string | null) => void;
681
+ onTimeRangeChange: (range: SessionTimeRange) => void;
682
+ showAgentFilter?: boolean;
683
+ showCustomTimeRange?: boolean;
684
+ };
685
+ declare function AgentSessionsFilters({ agentId, timeRange, onAgentChange, onTimeRangeChange, showAgentFilter, showCustomTimeRange, }: AgentSessionsFiltersProps): react.JSX.Element;
686
+ declare module '../../theme/SlotsProvider.js' {
687
+ interface AtomSlots {
688
+ AgentSessionsFilters: typeof AgentSessionsFilters;
689
+ }
690
+ }
691
+
692
+ declare function AgentSessionTurnHeader({ turnNumber, totalTokens, inputTokens, outputTokens, cachedTokens, durationMs, totalCostInUsd, }: AgentSessionTurnHeaderProps): react.JSX.Element;
693
+ declare module '../../theme/SlotsProvider.js' {
694
+ interface AtomSlots {
695
+ AgentSessionTurnHeader: typeof AgentSessionTurnHeader;
696
+ }
697
+ }
698
+
699
+ declare function SessionsPage(): react.JSX.Element;
700
+ declare module '../../theme/SlotsProvider.js' {
701
+ interface AtomSlots {
702
+ SessionsPage: typeof SessionsPage;
703
+ }
704
+ }
705
+
258
706
  type AgentsLibraryProps = {
259
- open: boolean;
260
- onOpenChange: (open: boolean) => void;
261
707
  onSelectAgent?: (agentName: string) => void;
262
708
  };
263
- declare function AgentsLibrary({ open, onOpenChange, onSelectAgent }: AgentsLibraryProps): react.JSX.Element;
709
+ type AgentScheduleSummary = {
710
+ count: number;
711
+ hasPaused: boolean;
712
+ };
713
+ type AgentLibraryRowProps = {
714
+ agent: AgentLibraryEntry;
715
+ canMutate: boolean;
716
+ canManageSchedules: boolean;
717
+ scheduleSummary?: AgentScheduleSummary | null;
718
+ onOpenSchedules?: () => void;
719
+ onCreateSchedule?: () => void;
720
+ onOpen?: () => void;
721
+ onTry: () => void;
722
+ onEdit: () => void;
723
+ onManageSchedules?: () => void;
724
+ };
725
+ declare function AgentLibraryRow({ agent, canMutate, canManageSchedules, scheduleSummary, onOpenSchedules, onCreateSchedule, onOpen, onTry, onEdit, onManageSchedules, }: AgentLibraryRowProps): react.JSX.Element;
726
+ declare function AgentsLibrary({ onSelectAgent }: AgentsLibraryProps): react.JSX.Element | null;
264
727
  declare module '../theme/SlotsProvider.js' {
265
728
  interface AtomSlots {
266
729
  AgentsLibrary: typeof AgentsLibrary;
730
+ AgentLibraryRow: typeof AgentLibraryRow;
267
731
  }
268
732
  }
269
733
 
270
734
  type AgentsLibraryButtonProps = {
271
735
  className?: string;
272
736
  compact?: boolean;
273
- onSelectAgent?: (agentName: string) => void;
274
737
  };
275
- declare function AgentsLibraryButton({ className, compact, onSelectAgent }: AgentsLibraryButtonProps): react.JSX.Element | null;
738
+ declare function AgentsLibraryButton({ className, compact }: AgentsLibraryButtonProps): react.JSX.Element | null;
276
739
  declare module '../theme/SlotsProvider.js' {
277
740
  interface AtomSlots {
278
741
  AgentsLibraryButton: typeof AgentsLibraryButton;
@@ -423,31 +886,301 @@ declare function ComposerRightSection(_: ComposerRightSectionProps): ReactNode;
423
886
  declare function ComposerSendButton({ canSubmit, isRunning, onSubmit, onCancel }: ComposerSendButtonProps): react.JSX.Element;
424
887
  declare module '../theme/SlotsProvider.js' {
425
888
  interface AtomSlots {
426
- ComposerLeftSection: ComposerLeftSectionSlot;
427
- ComposerRightSection: ComposerRightSectionSlot;
428
- ComposerSendButton: ComposerSendButtonSlot;
889
+ ComposerLeftSection: ComposerLeftSectionSlot;
890
+ ComposerRightSection: ComposerRightSectionSlot;
891
+ ComposerSendButton: ComposerSendButtonSlot;
892
+ }
893
+ }
894
+
895
+ type ComposerShellProps = {
896
+ /** Message input node, supplied by the container (e.g. `<ComposerPrimitive.Input />`). */
897
+ input: ReactNode;
898
+ disabled: boolean;
899
+ canSubmit: boolean;
900
+ isRunning?: boolean;
901
+ attachments?: ReactNode;
902
+ modelLabel?: string;
903
+ modelIcon?: ReactNode;
904
+ connectorStatusLabel?: string;
905
+ onSubmit: () => void;
906
+ onCancel?: () => void;
907
+ onAttach?: () => void;
908
+ className?: string;
909
+ };
910
+ declare function ComposerShell({ input, disabled, canSubmit, isRunning, attachments, modelLabel, modelIcon, connectorStatusLabel, onSubmit, onCancel, onAttach, className, }: ComposerShellProps): react.JSX.Element;
911
+ declare module '../theme/SlotsProvider.js' {
912
+ interface AtomSlots {
913
+ ComposerShell: typeof ComposerShell;
914
+ }
915
+ }
916
+
917
+ type AgentInstructionsDraft = {
918
+ instructions: string;
919
+ messages: TrueForgeApi.InitialUserMessage[];
920
+ };
921
+ type AgentInstructionsDrawerProps = {
922
+ open: boolean;
923
+ instructions: string;
924
+ messages?: TrueForgeApi.InitialUserMessage[];
925
+ onSave: (draft: AgentInstructionsDraft) => void;
926
+ onClose: () => void;
927
+ };
928
+ declare function AgentInstructionsDrawer({ open, instructions, messages, onSave, onClose, }: AgentInstructionsDrawerProps): react.JSX.Element;
929
+ declare module '../../theme/SlotsProvider.js' {
930
+ interface AtomSlots {
931
+ AgentInstructionsDrawer: typeof AgentInstructionsDrawer;
932
+ }
933
+ }
934
+
935
+ type AgentConfigEditor = 'instructions' | 'model' | 'model-settings' | 'runtime' | 'mcp' | 'skills';
936
+ type AgentConfigEditorsProps = {
937
+ editor: AgentConfigEditor | null;
938
+ spec: AgentSpec;
939
+ models: ModelSelection[];
940
+ connectors: ConnectorState[];
941
+ skills: AgentSkill[];
942
+ loading: boolean;
943
+ error: string | null;
944
+ skillsDisabled?: boolean;
945
+ sandboxAvailable?: boolean;
946
+ instructions?: string;
947
+ onInstructionsSave?: (draft: AgentInstructionsDraft) => void;
948
+ loadMcpTools?: (connectorId: string) => Promise<McpToolSelection[]>;
949
+ onRefreshConnectors?: () => Promise<void>;
950
+ onChange: (spec: AgentSpec) => void;
951
+ onClose: () => void;
952
+ };
953
+ declare function AgentConfigEditors({ editor, spec, models, connectors, skills, loading, error, skillsDisabled, sandboxAvailable, instructions, onInstructionsSave, loadMcpTools, onRefreshConnectors, onChange, onClose, }: AgentConfigEditorsProps): react.JSX.Element;
954
+ declare module '../../theme/SlotsProvider.js' {
955
+ interface AtomSlots {
956
+ AgentConfigEditors: typeof AgentConfigEditors;
957
+ }
958
+ }
959
+
960
+ type AgentConfigPanelProps = {
961
+ spec: AgentSpec;
962
+ model?: ModelSelection;
963
+ skillsAvailable: boolean;
964
+ instructions: string;
965
+ onOpenEditor: (editor: AgentConfigEditor) => void;
966
+ onChange?: (spec: AgentSpec) => void;
967
+ onClose?: () => void;
968
+ };
969
+ declare function AgentConfigSection({ title, description, onEdit, children, }: {
970
+ title: string;
971
+ description?: string;
972
+ onEdit?: () => void;
973
+ children: ReactNode;
974
+ }): react.JSX.Element;
975
+ declare function AgentConfigPanel({ spec, model, skillsAvailable, instructions, onOpenEditor, onChange, onClose, }: AgentConfigPanelProps): react.JSX.Element;
976
+ declare module '../../theme/SlotsProvider.js' {
977
+ interface AtomSlots {
978
+ AgentConfigPanel: typeof AgentConfigPanel;
979
+ AgentConfigSection: typeof AgentConfigSection;
980
+ }
981
+ }
982
+
983
+ type AgentMcpEditorContentProps = {
984
+ spec: AgentSpec;
985
+ connectors: ConnectorState[];
986
+ query: string;
987
+ activeConnectorId: string | null;
988
+ tools: McpToolSelection[];
989
+ toolsLoading: boolean;
990
+ toolsError: string | null;
991
+ onQueryChange: (query: string) => void;
992
+ onSelectConnector: (connectorId: string) => void;
993
+ onRetryTools: () => void;
994
+ onRefreshConnectors?: () => Promise<void>;
995
+ onChange: (spec: AgentSpec) => void;
996
+ };
997
+ declare function AgentMcpEditorContent({ spec, connectors, query, activeConnectorId, tools, toolsLoading, toolsError, onQueryChange, onSelectConnector, onRetryTools, onRefreshConnectors, onChange, }: AgentMcpEditorContentProps): react.JSX.Element;
998
+ declare module '../../theme/SlotsProvider.js' {
999
+ interface AtomSlots {
1000
+ AgentMcpEditorContent: typeof AgentMcpEditorContent;
1001
+ }
1002
+ }
1003
+
1004
+ type AgentModelConfigModalProps = {
1005
+ editor: 'model' | 'model-settings' | null;
1006
+ spec: AgentSpec;
1007
+ models: ModelSelection[];
1008
+ loading: boolean;
1009
+ error: string | null;
1010
+ query: string;
1011
+ onQueryChange: (query: string) => void;
1012
+ onChange: (spec: AgentSpec) => void;
1013
+ onClose: () => void;
1014
+ };
1015
+ declare function AgentModelConfigModal({ editor, spec, models, loading, error, query, onQueryChange, onChange, onClose, }: AgentModelConfigModalProps): react.JSX.Element;
1016
+ declare module '../../theme/SlotsProvider.js' {
1017
+ interface AtomSlots {
1018
+ AgentModelConfigModal: typeof AgentModelConfigModal;
1019
+ }
1020
+ }
1021
+
1022
+ type AgentModelEditorContentProps = {
1023
+ editor: 'model' | 'model-settings';
1024
+ spec: AgentSpec;
1025
+ models: ModelSelection[];
1026
+ loading: boolean;
1027
+ error: string | null;
1028
+ query: string;
1029
+ onQueryChange: (query: string) => void;
1030
+ onChange: (spec: AgentSpec) => void;
1031
+ };
1032
+ declare function AgentModelEditorContent({ editor, spec, models, loading, error, query, onQueryChange, onChange, }: AgentModelEditorContentProps): react.JSX.Element;
1033
+ declare module '../../theme/SlotsProvider.js' {
1034
+ interface AtomSlots {
1035
+ AgentModelEditorContent: typeof AgentModelEditorContent;
1036
+ }
1037
+ }
1038
+
1039
+ type AgentModelSettingsContentProps = {
1040
+ spec: AgentSpec;
1041
+ model?: ModelSelection;
1042
+ onChange: (spec: AgentSpec) => void;
1043
+ };
1044
+ declare function AgentModelSettingsContent({ spec, model, onChange }: AgentModelSettingsContentProps): react.JSX.Element;
1045
+ declare module '../../theme/SlotsProvider.js' {
1046
+ interface AtomSlots {
1047
+ AgentModelSettingsContent: typeof AgentModelSettingsContent;
1048
+ }
1049
+ }
1050
+
1051
+ type AgentResourceConfigModalProps = {
1052
+ editor: 'mcp' | 'skills' | null;
1053
+ spec: AgentSpec;
1054
+ connectors: ConnectorState[];
1055
+ skills: AgentSkill[];
1056
+ skillsDisabled: boolean;
1057
+ query: string;
1058
+ activeConnectorId: string | null;
1059
+ tools: McpToolSelection[];
1060
+ toolsLoading: boolean;
1061
+ toolsError: string | null;
1062
+ onQueryChange: (query: string) => void;
1063
+ onSelectConnector: (connectorId: string) => void;
1064
+ onRetryTools: () => void;
1065
+ onRefreshConnectors?: () => Promise<void>;
1066
+ onChange: (spec: AgentSpec) => void;
1067
+ onClose: () => void;
1068
+ };
1069
+ declare function AgentResourceConfigModal({ editor, onClose, ...contentProps }: AgentResourceConfigModalProps): react.JSX.Element;
1070
+ declare module '../../theme/SlotsProvider.js' {
1071
+ interface AtomSlots {
1072
+ AgentResourceConfigModal: typeof AgentResourceConfigModal;
1073
+ }
1074
+ }
1075
+
1076
+ type AgentResourceEditorContentProps = {
1077
+ editor: 'mcp' | 'skills';
1078
+ spec: AgentSpec;
1079
+ connectors: ConnectorState[];
1080
+ skills: AgentSkill[];
1081
+ skillsDisabled: boolean;
1082
+ query: string;
1083
+ activeConnectorId: string | null;
1084
+ tools: McpToolSelection[];
1085
+ toolsLoading: boolean;
1086
+ toolsError: string | null;
1087
+ onQueryChange: (query: string) => void;
1088
+ onSelectConnector: (connectorId: string) => void;
1089
+ onRetryTools: () => void;
1090
+ onRefreshConnectors?: () => Promise<void>;
1091
+ onChange: (spec: AgentSpec) => void;
1092
+ };
1093
+ declare function AgentResourceEditorContent(props: AgentResourceEditorContentProps): react.JSX.Element;
1094
+ declare module '../../theme/SlotsProvider.js' {
1095
+ interface AtomSlots {
1096
+ AgentResourceEditorContent: typeof AgentResourceEditorContent;
1097
+ }
1098
+ }
1099
+
1100
+ type AgentRuntimeConfigFieldsProps = {
1101
+ value: AgentRuntimeConfig;
1102
+ sandboxAvailable: boolean;
1103
+ hasSkills: boolean;
1104
+ disabled?: boolean;
1105
+ showCapabilities?: boolean;
1106
+ layout?: 'compact' | 'detailed';
1107
+ onChange: (value: AgentRuntimeConfig) => void;
1108
+ };
1109
+ declare function AgentRuntimeConfigFields({ value, sandboxAvailable, hasSkills, disabled, showCapabilities, layout, onChange, }: AgentRuntimeConfigFieldsProps): react.JSX.Element;
1110
+ declare module '../../theme/SlotsProvider.js' {
1111
+ interface AtomSlots {
1112
+ AgentRuntimeConfigFields: typeof AgentRuntimeConfigFields;
1113
+ }
1114
+ }
1115
+
1116
+ type AgentRuntimeConfigModalProps = {
1117
+ open: boolean;
1118
+ spec: AgentSpec;
1119
+ sandboxAvailable: boolean;
1120
+ onChange: (spec: AgentSpec) => void;
1121
+ onClose: () => void;
1122
+ };
1123
+ declare function AgentRuntimeConfigModal({ open, spec, sandboxAvailable, onChange, onClose, }: AgentRuntimeConfigModalProps): react.JSX.Element;
1124
+ declare module '../../theme/SlotsProvider.js' {
1125
+ interface AtomSlots {
1126
+ AgentRuntimeConfigModal: typeof AgentRuntimeConfigModal;
1127
+ }
1128
+ }
1129
+
1130
+ type AgentRuntimeEditorContentProps = {
1131
+ spec: AgentSpec;
1132
+ sandboxAvailable: boolean;
1133
+ onChange: (spec: AgentSpec) => void;
1134
+ };
1135
+ declare function AgentRuntimeEditorContent({ spec, sandboxAvailable, onChange }: AgentRuntimeEditorContentProps): react.JSX.Element;
1136
+ declare module '../../theme/SlotsProvider.js' {
1137
+ interface AtomSlots {
1138
+ AgentRuntimeEditorContent: typeof AgentRuntimeEditorContent;
1139
+ }
1140
+ }
1141
+
1142
+ type AgentSkillsEditorContentProps = {
1143
+ spec: AgentSpec;
1144
+ skills: AgentSkill[];
1145
+ skillsDisabled: boolean;
1146
+ query: string;
1147
+ onQueryChange: (query: string) => void;
1148
+ onChange: (spec: AgentSpec) => void;
1149
+ };
1150
+ declare function AgentSkillsEditorContent({ spec, skills, skillsDisabled, query, onQueryChange, onChange, }: AgentSkillsEditorContentProps): react.JSX.Element;
1151
+ declare module '../../theme/SlotsProvider.js' {
1152
+ interface AtomSlots {
1153
+ AgentSkillsEditorContent: typeof AgentSkillsEditorContent;
429
1154
  }
430
1155
  }
431
1156
 
432
- type ComposerShellProps = {
433
- /** Message input node, supplied by the container (e.g. `<ComposerPrimitive.Input />`). */
434
- input: ReactNode;
435
- disabled: boolean;
436
- canSubmit: boolean;
1157
+ type DraftAgentConfigTriggerProps = {
1158
+ disabled?: boolean;
437
1159
  isRunning?: boolean;
438
- attachments?: ReactNode;
439
- modelLabel?: string;
440
- modelIcon?: ReactNode;
441
- connectorStatusLabel?: string;
442
- onSubmit: () => void;
443
- onCancel?: () => void;
444
- onAttach?: () => void;
445
- className?: string;
446
1160
  };
447
- declare function ComposerShell({ input, disabled, canSubmit, isRunning, attachments, modelLabel, modelIcon, connectorStatusLabel, onSubmit, onCancel, onAttach, className, }: ComposerShellProps): react.JSX.Element;
448
- declare module '../theme/SlotsProvider.js' {
1161
+ declare function DraftAgentConfigTrigger({ disabled, isRunning }: DraftAgentConfigTriggerProps): react.JSX.Element;
1162
+ declare module '../../theme/SlotsProvider.js' {
449
1163
  interface AtomSlots {
450
- ComposerShell: typeof ComposerShell;
1164
+ DraftAgentConfigTrigger: typeof DraftAgentConfigTrigger;
1165
+ }
1166
+ }
1167
+
1168
+ type AgentCapabilityValues = {
1169
+ generativeUi: boolean;
1170
+ dynamicSubAgents: boolean;
1171
+ askUserQuestions: boolean;
1172
+ };
1173
+
1174
+ declare function DraftCapabilitiesPanel({ value, onChange, disabled, divided, layout, }: {
1175
+ value: AgentCapabilityValues;
1176
+ onChange: (value: AgentCapabilityValues) => void;
1177
+ disabled?: boolean;
1178
+ divided?: boolean;
1179
+ layout?: 'list' | 'cards';
1180
+ }): react.JSX.Element;
1181
+ declare module '../../theme/SlotsProvider.js' {
1182
+ interface AtomSlots {
1183
+ DraftCapabilitiesPanel: typeof DraftCapabilitiesPanel;
451
1184
  }
452
1185
  }
453
1186
 
@@ -460,6 +1193,19 @@ declare module '../../theme/SlotsProvider.js' {
460
1193
  }
461
1194
  }
462
1195
 
1196
+ declare function CatalogRow({ title, description, checked, disabled, onToggle, onActivate, action, }: {
1197
+ title: string;
1198
+ description?: string;
1199
+ checked: boolean;
1200
+ disabled?: boolean;
1201
+ onToggle: () => void;
1202
+ onActivate?: () => void;
1203
+ action?: ReactNode;
1204
+ }): react.JSX.Element;
1205
+ declare function ConnectorConnectButton({ connector, onConnected, }: {
1206
+ connector: ConnectorState;
1207
+ onConnected: () => Promise<void>;
1208
+ }): react.JSX.Element;
463
1209
  type DraftCompositeSelectorProps = {
464
1210
  disabled?: boolean;
465
1211
  isRunning?: boolean;
@@ -468,6 +1214,8 @@ type DraftCompositeSelectorProps = {
468
1214
  declare function DraftCompositeSelector({ disabled, isRunning, onAttach }: DraftCompositeSelectorProps): react.JSX.Element;
469
1215
  declare module '../../theme/SlotsProvider.js' {
470
1216
  interface AtomSlots {
1217
+ CatalogRow: typeof CatalogRow;
1218
+ ConnectorConnectButton: typeof ConnectorConnectButton;
471
1219
  DraftCompositeSelector: typeof DraftCompositeSelector;
472
1220
  }
473
1221
  }
@@ -632,14 +1380,74 @@ type SaveAgentButtonProps = {
632
1380
  disabled?: boolean;
633
1381
  className?: string;
634
1382
  children?: string;
1383
+ /** Unsynced drawer instructions to overlay onto the latest runtime spec. */
1384
+ instructionsOverride?: string;
635
1385
  };
636
- declare function SaveAgentButton({ disabled, className, children }: SaveAgentButtonProps): react.JSX.Element;
1386
+ declare function SaveAgentButton({ disabled, className, children, instructionsOverride, }: SaveAgentButtonProps): react.JSX.Element;
637
1387
  declare module '../theme/SlotsProvider.js' {
638
1388
  interface AtomSlots {
639
1389
  SaveAgentButton: typeof SaveAgentButton;
640
1390
  }
641
1391
  }
642
1392
 
1393
+ type EditableMount = {
1394
+ id: string;
1395
+ name: string;
1396
+ value: object;
1397
+ };
1398
+
1399
+ type SaveAgentFormProps = {
1400
+ intent: 'create' | 'update';
1401
+ name: string;
1402
+ spec: AgentSpec;
1403
+ modelEntry?: ModelSelection;
1404
+ mcpMounts: EditableMount[];
1405
+ skillMounts: EditableMount[];
1406
+ saving: boolean;
1407
+ error: string | null;
1408
+ onNameChange: (name: string) => void;
1409
+ onChange: (spec: AgentSpec) => void;
1410
+ onEdit: (editor: AgentConfigEditor) => void;
1411
+ onToggleMcpPreload: (id: string) => void;
1412
+ onRemoveMcp?: (id: string) => void;
1413
+ onCancel: () => void;
1414
+ onSave: () => void;
1415
+ };
1416
+ declare function SaveAgentForm({ intent, name, spec, modelEntry, mcpMounts, skillMounts, saving, error, onNameChange, onChange, onEdit, onToggleMcpPreload, onRemoveMcp, onCancel, onSave, }: SaveAgentFormProps): react.JSX.Element;
1417
+ declare module '../theme/SlotsProvider.js' {
1418
+ interface AtomSlots {
1419
+ SaveAgentForm: typeof SaveAgentForm;
1420
+ }
1421
+ }
1422
+
1423
+ type SaveAgentFormFieldsProps = {
1424
+ spec: AgentSpec;
1425
+ modelEntry?: ModelSelection;
1426
+ mcpMounts: EditableMount[];
1427
+ skillMounts: EditableMount[];
1428
+ disabled: boolean;
1429
+ onEdit: (editor: AgentConfigEditor) => void;
1430
+ onToggleMcpPreload: (id: string) => void;
1431
+ onRemoveMcp?: (id: string) => void;
1432
+ };
1433
+ declare function SaveAgentFormFields({ spec, modelEntry, mcpMounts, skillMounts, disabled, onEdit, onToggleMcpPreload, onRemoveMcp, }: SaveAgentFormFieldsProps): react.JSX.Element;
1434
+ declare module '../theme/SlotsProvider.js' {
1435
+ interface AtomSlots {
1436
+ SaveAgentFormFields: typeof SaveAgentFormFields;
1437
+ }
1438
+ }
1439
+
1440
+ type SchedulesButtonProps = {
1441
+ className?: string;
1442
+ compact?: boolean;
1443
+ };
1444
+ declare function SchedulesButton({ className, compact }: SchedulesButtonProps): react.JSX.Element | null;
1445
+ declare module '../theme/SlotsProvider.js' {
1446
+ interface AtomSlots {
1447
+ SchedulesButton: typeof SchedulesButton;
1448
+ }
1449
+ }
1450
+
643
1451
  /** Empty main pane when AgentLibrary has no agent selected yet. */
644
1452
  declare function SelectAgentEmptyState(): react.JSX.Element | null;
645
1453
  declare module '../theme/SlotsProvider.js' {
@@ -648,6 +1456,17 @@ declare module '../theme/SlotsProvider.js' {
648
1456
  }
649
1457
  }
650
1458
 
1459
+ type SessionsBrowserButtonProps = {
1460
+ className?: string;
1461
+ compact?: boolean;
1462
+ };
1463
+ declare function SessionsBrowserButton({ className, compact }: SessionsBrowserButtonProps): react.JSX.Element | null;
1464
+ declare module '../theme/SlotsProvider.js' {
1465
+ interface AtomSlots {
1466
+ SessionsBrowserButton: typeof SessionsBrowserButton;
1467
+ }
1468
+ }
1469
+
651
1470
  /**
652
1471
  * Optional host chrome (e.g. logout) to the right of theme + settings in {@link ShellActions}.
653
1472
  * Default is empty; override via `overrides.ShellActionsActionSlot`.
@@ -875,6 +1694,29 @@ declare module '../theme/SlotsProvider.js' {
875
1694
  }
876
1695
  }
877
1696
 
1697
+ declare function AgentMetricsContainer({ agentId }: AgentMetricsProps): react.JSX.Element;
1698
+ declare module '../theme/SlotsProvider.js' {
1699
+ interface AtomSlots {
1700
+ AgentMetrics: ComponentType<AgentMetricsProps>;
1701
+ }
1702
+ }
1703
+
1704
+ type AgentSessionTimelineContainerProps = {
1705
+ sessionId: string;
1706
+ events: SessionEventItem[];
1707
+ listMetrics?: {
1708
+ totalTurns: number;
1709
+ totalCostInUsd?: number;
1710
+ totalDurationMs: number;
1711
+ };
1712
+ };
1713
+ declare function AgentSessionTimelineContainer({ sessionId, events, listMetrics }: AgentSessionTimelineContainerProps): react.JSX.Element;
1714
+ declare module '../theme/SlotsProvider.js' {
1715
+ interface AtomSlots {
1716
+ AgentSessionTimelineContainer: typeof AgentSessionTimelineContainer;
1717
+ }
1718
+ }
1719
+
878
1720
  /** Default slot implementations. Feature atoms + chrome; primitives via theme/CSS. */
879
1721
  declare const defaultSlots: {
880
1722
  Accordion: typeof Accordion;
@@ -887,7 +1729,25 @@ declare const defaultSlots: {
887
1729
  ComposerSendButton: typeof ComposerSendButton;
888
1730
  DraftComposerLeftSection: typeof DraftComposerLeftSection;
889
1731
  DraftComposerRightSection: typeof DraftComposerRightSection;
1732
+ DraftAgentConfigTrigger: typeof DraftAgentConfigTrigger;
1733
+ DraftCapabilitiesPanel: typeof DraftCapabilitiesPanel;
1734
+ AgentConfigEditors: typeof AgentConfigEditors;
1735
+ AgentInstructionsDrawer: typeof AgentInstructionsDrawer;
1736
+ AgentModelEditorContent: typeof AgentModelEditorContent;
1737
+ AgentModelSettingsContent: typeof AgentModelSettingsContent;
1738
+ AgentMcpEditorContent: typeof AgentMcpEditorContent;
1739
+ AgentModelConfigModal: typeof AgentModelConfigModal;
1740
+ AgentResourceEditorContent: typeof AgentResourceEditorContent;
1741
+ AgentResourceConfigModal: typeof AgentResourceConfigModal;
1742
+ AgentSkillsEditorContent: typeof AgentSkillsEditorContent;
1743
+ AgentConfigPanel: typeof AgentConfigPanel;
1744
+ AgentConfigSection: typeof AgentConfigSection;
1745
+ AgentRuntimeConfigFields: typeof AgentRuntimeConfigFields;
1746
+ AgentRuntimeConfigModal: typeof AgentRuntimeConfigModal;
1747
+ AgentRuntimeEditorContent: typeof AgentRuntimeEditorContent;
890
1748
  DraftCompositeSelector: typeof DraftCompositeSelector;
1749
+ CatalogRow: typeof CatalogRow;
1750
+ ConnectorConnectButton: typeof ConnectorConnectButton;
891
1751
  DraftModelSelector: typeof DraftModelSelector;
892
1752
  AssistantMessageBubble: typeof AssistantMessageBubble;
893
1753
  UserMessageBubble: typeof UserMessageBubble;
@@ -898,7 +1758,7 @@ declare const defaultSlots: {
898
1758
  MessageIndicator: typeof MessageIndicator;
899
1759
  MessageTimestamp: typeof MessageTimestamp;
900
1760
  Markdown: typeof Markdown;
901
- SyntaxHighlighter: react.ComponentType<SyntaxHighlighterProps>;
1761
+ SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;
902
1762
  OpenUiFenceBlock: typeof OpenUiFenceBlock;
903
1763
  SandboxArtifactDownload: typeof SandboxArtifactDownload;
904
1764
  ChatFileDownload: typeof ChatFileDownload;
@@ -923,8 +1783,36 @@ declare const defaultSlots: {
923
1783
  ThreadListRow: typeof ThreadListRow;
924
1784
  ThreadListNewButton: typeof ThreadListNewButton;
925
1785
  AgentsLibrary: typeof AgentsLibrary;
1786
+ AgentLibraryRow: typeof AgentLibraryRow;
926
1787
  AgentsLibraryButton: typeof AgentsLibraryButton;
1788
+ SessionsBrowserButton: typeof SessionsBrowserButton;
1789
+ AgentDetailsPage: typeof AgentDetailsPage;
1790
+ AgentDetailsHeader: typeof AgentDetailsHeader;
1791
+ AgentDetailsTabs: typeof AgentDetailsTabs;
1792
+ AgentDetailsUnavailable: typeof AgentDetailsUnavailable;
1793
+ AgentOverview: react.FunctionComponent<AgentOverviewProps>;
1794
+ AgentOverviewCard: typeof AgentOverviewCard;
1795
+ AgentMetrics: typeof AgentMetricsContainer;
1796
+ AgentMetricsView: typeof AgentMetricsView;
1797
+ AgentMetricsTimeRangeFilter: typeof AgentMetricsTimeRangeFilter;
1798
+ AgentMetricCard: typeof AgentMetricCard;
1799
+ AgentMetricChart: react.FunctionComponent<AgentMetricChartProps>;
1800
+ AgentSessionDetailHeader: typeof AgentSessionDetailHeader;
1801
+ AgentSessionsFilters: typeof AgentSessionsFilters;
1802
+ SessionsPage: typeof SessionsPage;
1803
+ AgentSessionEventTimeline: react.FunctionComponent<AgentSessionEventTimelineProps>;
1804
+ AgentSessionEventTimelineChart: react.FunctionComponent<AgentSessionEventTimelineChartProps>;
1805
+ AgentSessionListRow: typeof AgentSessionListRow;
1806
+ AgentSessionMetricsStrip: typeof AgentSessionMetricsStrip;
1807
+ AgentSessionTimelineContainer: typeof AgentSessionTimelineContainer;
1808
+ AgentSessionTurnHeader: typeof AgentSessionTurnHeader;
1809
+ AgentSessions: react.FunctionComponent<AgentSessionsProps>;
1810
+ AgentCodeSnippets: react.FunctionComponent<AgentCodeSnippetsProps>;
1811
+ AgentCodeBlock: typeof AgentCodeBlock;
1812
+ SchedulesButton: typeof SchedulesButton;
927
1813
  SaveAgentButton: typeof SaveAgentButton;
1814
+ SaveAgentForm: typeof SaveAgentForm;
1815
+ SaveAgentFormFields: typeof SaveAgentFormFields;
928
1816
  SelectAgentEmptyState: typeof SelectAgentEmptyState;
929
1817
  ClearChatButton: typeof ClearChatButton;
930
1818
  ThreadListRowSkeleton: typeof ThreadListRowSkeleton;
@@ -941,115 +1829,6 @@ declare const defaultSlots: {
941
1829
  ShellActionsActionSlot: typeof ShellActionsActionSlot;
942
1830
  };
943
1831
 
944
- type ThemeMode = 'light' | 'dark' | 'system';
945
- type ThemePreset = 'trueforge' | 'claude' | 'chatgpt' | 'gemini';
946
- type SemanticTokens = {
947
- sidebarBg: string;
948
- topbarBg: string;
949
- primaryBg: string;
950
- secondaryBg: string;
951
- border: string;
952
- fontFamily: string;
953
- inputBoxBg: string;
954
- inputBorder: string;
955
- textPrimary: string;
956
- textSecondary: string;
957
- cardBg: string;
958
- dropdownSelectedItemBg: string;
959
- dropdownSelectedItemText: string;
960
- userMessageBg: string;
961
- userMessageText: string;
962
- assistantMessageBg: string;
963
- assistantMessageText: string;
964
- primaryButtonBg: string;
965
- primaryButtonHover: string;
966
- primaryButtonText: string;
967
- secondaryButtonBg: string;
968
- secondaryButtonHover: string;
969
- secondaryButtonText: string;
970
- ghostButtonBg: string;
971
- ghostButtonHover: string;
972
- ghostButtonText: string;
973
- successBg: string;
974
- successText: string;
975
- failureBg: string;
976
- failureText: string;
977
- warningBg: string;
978
- warningText: string;
979
- focusRing: string;
980
- radius: string;
981
- composerRadius: string;
982
- overlay: string;
983
- shadowColor: string;
984
- scrollbarThumb: string;
985
- };
986
- type IconProps$1 = {
987
- className?: string;
988
- style?: CSSProperties;
989
- size?: string | number;
990
- 'aria-hidden'?: boolean | 'true' | 'false';
991
- 'aria-label'?: string;
992
- 'data-testid'?: string;
993
- };
994
- type IconComponent = LucideIcon | ((props: IconProps$1) => ReactNode) | FC<SVGProps<SVGSVGElement>>;
995
- type IconEntry = IconComponent | ReactNode;
996
- type IconMap = Record<string, IconEntry>;
997
- /**
998
- * Logo sources. `light` / `dark` pick per resolved theme mode and fall back to
999
- * each other, then to `src`. `href` wraps the logo in a same-tab link. The logo
1000
- * is labelled with `name`; replace the mark itself through the slot table when
1001
- * an image URL is not enough.
1002
- */
1003
- type BrandLogoConfig = {
1004
- src?: string;
1005
- light?: string;
1006
- dark?: string;
1007
- href?: string;
1008
- };
1009
- /**
1010
- * Setting `brand` requires a `name`: it labels the logo, so a logo without one has
1011
- * no accessible name. `logo` is optional — omit it to pair host text with the stock
1012
- * mark.
1013
- */
1014
- type BrandConfig = {
1015
- /** Display name, and the logo's accessible label. */
1016
- name: string;
1017
- /** Image URL, or per-mode sources. Omit to keep the default mark. */
1018
- logo?: string | BrandLogoConfig;
1019
- };
1020
- type ContentClassNames = {
1021
- markdown?: string;
1022
- inlineCode?: string;
1023
- syntaxHighlighter?: {
1024
- root?: string;
1025
- pre?: string;
1026
- code?: string;
1027
- lineNumber?: string;
1028
- };
1029
- openui?: {
1030
- root?: string;
1031
- scope?: string;
1032
- };
1033
- monaco?: {
1034
- root?: string;
1035
- editor?: string;
1036
- monacoTheme?: string;
1037
- };
1038
- };
1039
- type ThemeConfig = {
1040
- preset?: ThemePreset;
1041
- mode?: ThemeMode;
1042
- tokens?: Partial<SemanticTokens>;
1043
- brand?: BrandConfig;
1044
- className?: string;
1045
- icons?: IconMap;
1046
- classNames?: ContentClassNames;
1047
- };
1048
- type BuiltInLayout = 'sidebar' | 'drawer' | 'dock' | 'widget';
1049
- type LayoutProp = BuiltInLayout | ComponentType<{
1050
- className?: string;
1051
- }>;
1052
-
1053
1832
  type PresetTokens = {
1054
1833
  light: SemanticTokens;
1055
1834
  dark: SemanticTokens;
@@ -1126,6 +1905,7 @@ type CenteredModalProps = {
1126
1905
  description?: string;
1127
1906
  headerIcon?: ReactNode;
1128
1907
  children: ReactNode;
1908
+ footer?: ReactNode;
1129
1909
  className?: string;
1130
1910
  contentSized?: boolean;
1131
1911
  'aria-label'?: string;
@@ -1134,7 +1914,7 @@ type CenteredModalProps = {
1134
1914
  * Responsive modal chrome: centered dialog on `md+`, bottom sheet below `md`.
1135
1915
  * One content tree for both breakpoints (native `<dialog>`).
1136
1916
  */
1137
- declare function CenteredModal({ open, onOpenChange, title, description, headerIcon, children, className, contentSized, 'aria-label': ariaLabel, }: CenteredModalProps): react.JSX.Element;
1917
+ declare function CenteredModal({ open, onOpenChange, title, description, headerIcon, children, footer, className, contentSized, 'aria-label': ariaLabel, }: CenteredModalProps): react.JSX.Element;
1138
1918
 
1139
1919
  type IconButtonProps = Omit<ButtonProps, 'size' | 'children'> & {
1140
1920
  'aria-label': string;
@@ -1142,6 +1922,56 @@ type IconButtonProps = Omit<ButtonProps, 'size' | 'children'> & {
1142
1922
  children: react__default.ReactNode;
1143
1923
  };
1144
1924
 
1925
+ type PopoverSelectOption<T extends string> = {
1926
+ value: T;
1927
+ label: string;
1928
+ disabled?: boolean;
1929
+ };
1930
+ type CommonPopoverSelectProps<T extends string> = {
1931
+ options: readonly PopoverSelectOption<T>[];
1932
+ placeholder?: string;
1933
+ disabled?: boolean;
1934
+ className?: string;
1935
+ /** Which edge of the trigger the menu opens toward. Default `bottom`. */
1936
+ menuPlacement?: 'top' | 'bottom';
1937
+ /** When set, renders a labeled chip trigger (label | value chip + chevron). */
1938
+ prefix?: string;
1939
+ 'aria-label': string;
1940
+ };
1941
+ type PopoverSelectProps<T extends string> = CommonPopoverSelectProps<T> & ({
1942
+ multiple?: false;
1943
+ value: T;
1944
+ onValueChange: (value: T) => void;
1945
+ } | {
1946
+ multiple: true;
1947
+ value: readonly T[];
1948
+ onValueChange: (value: T[]) => void;
1949
+ });
1950
+ declare function PopoverSelect<T extends string>(props: PopoverSelectProps<T>): react.JSX.Element;
1951
+
1952
+ type SideDrawerAnchor = 'left' | 'right';
1953
+ type SideDrawerSize = 'sm' | 'md' | 'lg' | 'xl';
1954
+ type SideDrawerProps = {
1955
+ open: boolean;
1956
+ onOpenChange: (open: boolean) => void;
1957
+ title: string;
1958
+ description?: string;
1959
+ headerIcon?: ReactNode;
1960
+ children: ReactNode;
1961
+ footer?: ReactNode;
1962
+ /** Desktop side; ignored when compact / below `md` (falls back to bottom sheet). */
1963
+ anchor?: SideDrawerAnchor;
1964
+ /** Desktop width. Defaults to `md`. */
1965
+ size?: SideDrawerSize;
1966
+ className?: string;
1967
+ 'aria-label'?: string;
1968
+ };
1969
+ /**
1970
+ * Responsive overlay chrome: side drawer on `md+`, bottom sheet below `md`
1971
+ * (and always when compact dock/widget layout is active).
1972
+ */
1973
+ declare function SideDrawer({ open, onOpenChange, title, description, headerIcon, children, footer, anchor, size, className, 'aria-label': ariaLabel, }: SideDrawerProps): react.JSX.Element;
1974
+
1145
1975
  type SwitchSize = 'sm' | 'md';
1146
1976
  type SwitchProps = Omit<ComponentPropsWithoutRef<'button'>, 'aria-checked' | 'children' | 'onClick' | 'role'> & {
1147
1977
  checked: boolean;
@@ -1150,6 +1980,108 @@ type SwitchProps = Omit<ComponentPropsWithoutRef<'button'>, 'aria-checked' | 'ch
1150
1980
  };
1151
1981
  declare function Switch({ checked, onCheckedChange, size, disabled, className, ...props }: SwitchProps): react.JSX.Element;
1152
1982
 
1983
+ declare const DEFAULT_TABLE_PAGE_SIZE = 10;
1984
+ declare const TABLE_PAGE_SIZE_OPTIONS: readonly [10, 25, 50];
1985
+ type TableProps = react__default.HTMLAttributes<HTMLTableElement> & {
1986
+ /** Extra classes on the horizontal scroll wrapper. */
1987
+ containerClassName?: string;
1988
+ };
1989
+ declare function Table({ className, containerClassName, ...props }: TableProps): react__default.JSX.Element;
1990
+ type TableHeaderProps = react__default.HTMLAttributes<HTMLTableSectionElement>;
1991
+ declare function TableHeader({ className, ...props }: TableHeaderProps): react__default.JSX.Element;
1992
+ type TableBodyProps = react__default.HTMLAttributes<HTMLTableSectionElement>;
1993
+ declare function TableBody({ className, ...props }: TableBodyProps): react__default.JSX.Element;
1994
+ type TableRowProps = react__default.HTMLAttributes<HTMLTableRowElement>;
1995
+ declare function TableRow({ className, ...props }: TableRowProps): react__default.JSX.Element;
1996
+ type TableHeadProps = react__default.ThHTMLAttributes<HTMLTableCellElement>;
1997
+ declare function TableHead({ className, ...props }: TableHeadProps): react__default.JSX.Element;
1998
+ type TableCellProps = react__default.TdHTMLAttributes<HTMLTableCellElement>;
1999
+ declare function TableCell({ className, ...props }: TableCellProps): react__default.JSX.Element;
2000
+ type TablePaginationProps = {
2001
+ page: number;
2002
+ pageSize: number;
2003
+ total: number;
2004
+ onPageChange: (page: number) => void;
2005
+ onPageSizeChange: (pageSize: number) => void;
2006
+ pageSizeOptions?: readonly number[];
2007
+ className?: string;
2008
+ };
2009
+ declare function TablePagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizeOptions, className, }: TablePaginationProps): react__default.JSX.Element;
2010
+ /** Cursor / token pagination when the API has no total count. */
2011
+ type TableTokenPaginationProps = {
2012
+ pageSize: number;
2013
+ rowCount: number;
2014
+ canPrev: boolean;
2015
+ canNext: boolean;
2016
+ onPrev: () => void;
2017
+ onNext: () => void;
2018
+ onPageSizeChange: (pageSize: number) => void;
2019
+ pageSizeOptions?: readonly number[];
2020
+ className?: string;
2021
+ };
2022
+ declare function TableTokenPagination({ pageSize, rowCount, canPrev, canNext, onPrev, onNext, onPageSizeChange, pageSizeOptions, className, }: TableTokenPaginationProps): react__default.JSX.Element;
2023
+
2024
+ type ScheduleFormDrawerProps = {
2025
+ open: boolean;
2026
+ onOpenChange: (open: boolean) => void;
2027
+ mode: 'create' | 'edit';
2028
+ schedule?: Schedule;
2029
+ initialAgentId?: string;
2030
+ onSaved?: () => void;
2031
+ };
2032
+ declare function ScheduleFormDrawer(props: ScheduleFormDrawerProps): react.JSX.Element;
2033
+
2034
+ type RecurrenceKind = 'hourly' | 'daily' | 'weekly' | 'custom';
2035
+ type ScheduleFormValues = {
2036
+ name: string;
2037
+ task: string;
2038
+ recurrence: RecurrenceKind;
2039
+ hour: number;
2040
+ minute: number;
2041
+ /** Cron DOW: 0=Sun … 6=Sat. Used when recurrence is weekly. */
2042
+ weekdays: number[];
2043
+ customCron: string;
2044
+ timezone: string;
2045
+ };
2046
+
2047
+ type ScheduleFormFieldsProps = {
2048
+ values: ScheduleFormValues;
2049
+ onChange: (next: ScheduleFormValues) => void;
2050
+ agentId: string;
2051
+ onAgentIdChange?: (agentId: string) => void;
2052
+ agentOptions: Array<{
2053
+ agentId: string;
2054
+ name: string;
2055
+ }>;
2056
+ agentPickerDisabled?: boolean;
2057
+ };
2058
+ declare function ScheduleFormFields({ values, onChange, agentId, onAgentIdChange, agentOptions, agentPickerDisabled, }: ScheduleFormFieldsProps): react.JSX.Element;
2059
+
2060
+ declare function ScheduleLastRunsCell({ runs }: {
2061
+ runs: readonly ScheduleRun[];
2062
+ }): react.JSX.Element;
2063
+
2064
+ declare function ScheduleRunChip({ run }: {
2065
+ run: ScheduleRun;
2066
+ }): react.JSX.Element;
2067
+
2068
+ declare function SchedulesPage(): react.JSX.Element;
2069
+
2070
+ declare function ScheduleStatusBadge({ status }: {
2071
+ status: ScheduleStatus;
2072
+ }): react.JSX.Element;
2073
+
2074
+ type ScheduleMcpMount = {
2075
+ name: string;
2076
+ };
2077
+ type TestScheduleScreenProps = {
2078
+ schedule: Schedule;
2079
+ agentName: string;
2080
+ mcpMounts: readonly ScheduleMcpMount[];
2081
+ onEditConfiguration: () => void;
2082
+ };
2083
+ declare function TestScheduleScreen({ schedule, agentName, mcpMounts, onEditConfiguration }: TestScheduleScreenProps): react.JSX.Element;
2084
+
1153
2085
  type IconProps = IconProps$1 & {
1154
2086
  name: string | readonly string[];
1155
2087
  };
@@ -1190,6 +2122,9 @@ type ComposerContainerProps = {
1190
2122
  };
1191
2123
  declare function ComposerContainer({ placeholder, }: ComposerContainerProps): react.JSX.Element;
1192
2124
 
2125
+ /** Host custom-action UI for a pending client-side tool response. */
2126
+ declare function CustomActionContainer(): react.JSX.Element | null;
2127
+
1193
2128
  /**
1194
2129
  * Renders `HistoryLoader` at the top of the message list and fetches
1195
2130
  * the next older history page when the user scrolls near it. Scroll position
@@ -1264,15 +2199,18 @@ type ToolApprovalOption = {
1264
2199
  };
1265
2200
  type ToolApprovalContainerProps = {
1266
2201
  toolName?: string;
2202
+ argsText?: string;
1267
2203
  options: ToolApprovalOption[];
1268
2204
  onSelectOption: (optionId: string, reason?: string) => void;
1269
2205
  };
1270
- declare function ToolApprovalContainer({ toolName, options, onSelectOption }: ToolApprovalContainerProps): react.JSX.Element;
2206
+ declare function ToolApprovalContainer({ toolName, argsText, options, onSelectOption, }: ToolApprovalContainerProps): react.JSX.Element;
1271
2207
 
1272
2208
  declare const ToolCallContainer: ToolCallMessagePartComponent;
1273
2209
 
1274
2210
  declare function ToolCallContentBlockContainer(props: ToolCallContentBlockProps): react.JSX.Element;
1275
2211
 
2212
+ type DraftPreferenceKind = 'chat' | 'agent';
2213
+
1276
2214
  /** Host-facing shell configuration for agent / library / composer chrome. */
1277
2215
  type AgentConfig = {
1278
2216
  mode: 'SingleAgent';
@@ -1288,14 +2226,19 @@ type AgentConfig = {
1288
2226
  };
1289
2227
  declare const DEFAULT_AGENT_CONFIG: AgentConfig;
1290
2228
  /**
1291
- * Active chat binding. Mutability (`isMutable`) decides composer / Save / updateSession —
1292
- * not a parallel draft|named shell type.
2229
+ * Active chat binding. Mutability (`isMutable`) decides draft vs named runtime.
2230
+ * `isCreateAgent` (mutable only) splits New Agent builder chrome from simple New Chat.
1293
2231
  */
1294
2232
  type ShellMode = {
1295
2233
  status: 'idle';
1296
2234
  } | {
1297
2235
  status: 'active';
1298
2236
  isMutable: boolean;
2237
+ /**
2238
+ * Mutable only: true = Agent builder (config drawer + Save); false = simple chat.
2239
+ * Always false when `isMutable` is false (Try / named).
2240
+ */
2241
+ isCreateAgent: boolean;
1299
2242
  /** Identity for immutable bind + history filter. */
1300
2243
  agentId?: string;
1301
2244
  /** Display / welcome label (often same as agentId). */
@@ -1304,9 +2247,13 @@ type ShellMode = {
1304
2247
  agentSpec?: AgentSpec;
1305
2248
  locked: boolean;
1306
2249
  };
1307
- /** Library / New Chat create intent. */
2250
+ /** Library / New Chat / New Agent create intent. */
1308
2251
  type SelectLibraryAgentRequest = {
1309
2252
  isMutable: boolean;
2253
+ /**
2254
+ * Mutable only. When omitted: true if Edit identity is present, else false (New Chat).
2255
+ */
2256
+ isCreateAgent?: boolean;
1310
2257
  agentId?: string;
1311
2258
  agentName?: string;
1312
2259
  agentSpec?: AgentSpec;
@@ -1316,7 +2263,7 @@ type ShellModeContextValue = {
1316
2263
  mode: ShellMode;
1317
2264
  /** Host agentConfig mode (capabilities source). */
1318
2265
  agentConfigMode: AgentConfig['mode'];
1319
- /** Agents Library chrome. */
2266
+ /** Agents chrome. */
1320
2267
  isLibraryEnabled: boolean;
1321
2268
  /** Mutable composer / Save Agent chrome (host capability). */
1322
2269
  isComposerEnabled: boolean;
@@ -1325,8 +2272,22 @@ type ShellModeContextValue = {
1325
2272
  settingsOpen: boolean;
1326
2273
  settingsSection: SettingsSection;
1327
2274
  setSettingsOpen: (open: boolean, section?: SettingsSection) => void;
2275
+ agentConfigOpen: boolean;
2276
+ setAgentConfigOpen: (open: boolean) => void;
2277
+ /** Agents main-pane overlay (sidebar layout). */
2278
+ libraryOpen: boolean;
2279
+ libraryAgentId: string | null;
2280
+ setLibraryAgentId: (id: string | null) => void;
2281
+ setLibraryOpen: (open: boolean) => void;
2282
+ /** All-user sessions browser (includes drafts). */
2283
+ sessionsOpen: boolean;
2284
+ setSessionsOpen: (open: boolean) => void;
2285
+ openLibraryAgent: (agentId: string) => void;
2286
+ closeLibraryAgent: () => void;
2287
+ schedulesOpen: boolean;
2288
+ setSchedulesOpen: (open: boolean) => void;
1328
2289
  /**
1329
- * Bind from the Agents Library (Try = immutable, Edit = mutable + agentSpec).
2290
+ * Bind from Agents (Try = immutable, Edit = mutable + agentSpec).
1330
2291
  * Prefer this over `selectAgent` / `openDraft` when both fields are available.
1331
2292
  */
1332
2293
  selectLibraryAgent: (req: SelectLibraryAgentRequest) => void;
@@ -1341,24 +2302,28 @@ type ShellModeContextValue = {
1341
2302
  }) => void;
1342
2303
  /** @deprecated Prefer `selectLibraryAgent({ isMutable: false, agentName })`. */
1343
2304
  selectAgent: (agentName: string) => void;
1344
- /** @deprecated Prefer `selectLibraryAgent({ isMutable: true, agentSpec })`. */
2305
+ /** Open a simple New Chat (mutable, no agent-builder chrome). */
1345
2306
  openDraft: () => void;
1346
- /** Remember plain-draft composer choices as the seed for future new chats. */
1347
- rememberDraftSpec: (agentSpec: AgentSpec) => void;
2307
+ /** Open New Agent builder (mutable + Agent Config drawer). */
2308
+ openAgentBuilder: () => void;
2309
+ /** Remember plain-draft composer choices as the seed for future New Chat / New Agent. */
2310
+ rememberDraftSpec: (agentSpec: AgentSpec, kind?: DraftPreferenceKind) => void;
1348
2311
  /**
1349
2312
  * Open a history session, remounting when mutability/identity changes.
1350
2313
  * Prefer explicit `isMutable` from the session row; when omitted, agentName
1351
2314
  * present → immutable and agentName absent → mutable. Immutable rows may omit
1352
2315
  * `agentName` when the registry agent was deleted.
2316
+ * `isCreateAgent` is only applied when mutable (default false when omitted).
1353
2317
  */
1354
2318
  openHistorySession: (req: {
1355
2319
  sessionId: string;
1356
2320
  agentName?: string;
1357
2321
  isMutable?: boolean;
2322
+ isCreateAgent?: boolean;
1358
2323
  }) => void;
1359
2324
  /** Reset current chat; no-op when idle. */
1360
2325
  clearChat: () => void;
1361
- /** Return pure Agents Library to its idle landing; no-op in other modes. */
2326
+ /** Return library-only mode to its idle landing; no-op in other modes. */
1362
2327
  openLibraryHome: () => void;
1363
2328
  /** Remount key for the chat runtime when binding changes. */
1364
2329
  runtimeKey: string;
@@ -1373,7 +2338,7 @@ type ShellModeContextValue = {
1373
2338
  /** Session to open after a binding remount (history click across mutability). */
1374
2339
  pendingSessionId: string | undefined;
1375
2340
  /**
1376
- * Bumped when the Agents Library catalog may have changed (e.g. after saveAgent).
2341
+ * Bumped when the Agents catalog may have changed (e.g. after saveAgent).
1377
2342
  * Library chrome should re-fetch when this changes.
1378
2343
  */
1379
2344
  agentsListEpoch: number;
@@ -1390,6 +2355,8 @@ declare function useShellMode(): ShellModeContextValue;
1390
2355
  declare function useOptionalShellMode(): ShellModeContextValue | null;
1391
2356
  /** True when the shell is bound to a mutable (editable) agentSpec. */
1392
2357
  declare function shellIsMutable(mode: ShellMode): boolean;
2358
+ /** True when the shell is in New Agent / Edit builder chrome. */
2359
+ declare function shellIsCreateAgent(mode: ShellMode): boolean;
1393
2360
 
1394
2361
  /**
1395
2362
  * A navigable place in the chat shell. The router mirrors these to the URL;
@@ -1405,6 +2372,15 @@ type RoutePlace = {
1405
2372
  sessionId: string;
1406
2373
  } | {
1407
2374
  type: 'settings';
2375
+ } | {
2376
+ type: 'library';
2377
+ } | {
2378
+ type: 'libraryAgent';
2379
+ agentId: string;
2380
+ } | {
2381
+ type: 'sessionsBrowser';
2382
+ } | {
2383
+ type: 'schedules';
1408
2384
  };
1409
2385
  /**
1410
2386
  * Host-facing route path customization. Only honored when `withRouter`.
@@ -1419,13 +2395,37 @@ type RoutesConfig = {
1419
2395
  root?: string;
1420
2396
  /** Settings overlay. `false` keeps settings overlay-only (no URL). Default `'/settings'`. */
1421
2397
  settings?: string | false;
2398
+ /** Agents overlay. `false` keeps library overlay-only (no URL). Default `'/library'`. */
2399
+ library?: string | false;
2400
+ /** Agent detail under the library. Default `'/library/:agentId'`. */
2401
+ libraryAgent?: string | false;
2402
+ /** Schedules page. `false` keeps schedules overlay-only (no URL). Default `'/schedules'`. */
2403
+ schedules?: string | false;
1422
2404
  /** Immutable "Try" agent. `false` disables. Default `'/agents/:agentName'`. */
1423
2405
  agent?: string | false;
1424
2406
  /** Session deep link. `false` disables. Default `'/sessions/:sessionId'`. */
1425
2407
  session?: string | false;
2408
+ /** All-user sessions browser. `false` disables. Default `'/sessions'`. */
2409
+ sessionsBrowser?: string | false;
1426
2410
  };
1427
2411
  };
1428
2412
 
2413
+ /** Props Trueforge passes to a host-registered custom action renderer. */
2414
+ type CustomActionRendererProps = {
2415
+ args: Record<string, unknown>;
2416
+ disabled: boolean;
2417
+ /** Resume the paused client-side tool with a non-empty string result. */
2418
+ onSubmit: (content: string) => void;
2419
+ };
2420
+ /** Map of client-side tool name → host UI for composer pause. */
2421
+ type CustomActionRenderers = Record<string, ComponentType<CustomActionRendererProps>>;
2422
+ declare function CustomActionRenderersProvider({ renderers, children, }: {
2423
+ renderers?: CustomActionRenderers;
2424
+ children: ReactNode;
2425
+ }): react.JSX.Element;
2426
+ /** Host-registered custom action renderers, or `undefined` when none were provided. */
2427
+ declare function useOptionalCustomActionRenderers(): CustomActionRenderers | undefined;
2428
+
1429
2429
  /**
1430
2430
  * Built-in backends init inside `<TrueForgeUI />`.
1431
2431
  * Optional `catalog` is attached onto the resolved `AgentUIServer`.
@@ -1471,6 +2471,11 @@ type TrueForgeUIProps = {
1471
2471
  agentConfig?: AgentConfig;
1472
2472
  /** Open settings on first paint only (host boot with no models configured). */
1473
2473
  initialSettingsOpen?: boolean;
2474
+ /**
2475
+ * Host UI for pending client-side tools, keyed by tool name.
2476
+ * When a pending tool matches, the composer mounts that component instead of Ask User.
2477
+ */
2478
+ customActionRenderers?: CustomActionRenderers;
1474
2479
  /**
1475
2480
  * Sync shell navigation to the browser URL via react-router (opt-in).
1476
2481
  * Requires `react-router-dom` in the host. Leave off for dock/widget embeds
@@ -1549,6 +2554,9 @@ type ThreadPauseState = {
1549
2554
  declare function threadHasPendingMcpAuth(s: ThreadPauseState): boolean;
1550
2555
  type ComposerPauseView = {
1551
2556
  kind: 'mcp';
2557
+ } | {
2558
+ kind: 'custom';
2559
+ toolName: string;
1552
2560
  } | {
1553
2561
  kind: 'ask-user';
1554
2562
  } | {
@@ -1571,6 +2579,18 @@ declare const useMCPAuth: ({ callbackPath }?: UseMCPAuthOptions) => {
1571
2579
  isOAuthLoading: boolean;
1572
2580
  };
1573
2581
 
2582
+ /** Session metadata key for New Chat vs New Agent builder intent (wire/jsonb snake_case). */
2583
+ declare const IS_CREATE_AGENT_METADATA_KEY = "is_create_agent";
2584
+ /** Wire metadata values are strings (`SessionMetadataSchema`). */
2585
+ declare function isCreateAgentMetadataValue(isCreateAgent: boolean): 'true' | 'false';
2586
+ /**
2587
+ * Read create-agent intent from session metadata.
2588
+ * Missing / undefined / anything other than `"true"` → false (legacy = Chat).
2589
+ */
2590
+ declare function readSessionIsCreateAgent(metadata: Record<string, string> | null | undefined): boolean;
2591
+ /** True when a UI session was stamped as agent-builder (own prop or metadata). */
2592
+ declare function sessionIsCreateAgent(session: object): boolean;
2593
+
1574
2594
  declare function ServerProvider({ server, children }: {
1575
2595
  server: AgentUIServer;
1576
2596
  children: ReactNode;
@@ -1580,6 +2600,19 @@ declare function useOptionalServer(): AgentUIServer | null;
1580
2600
  declare function useServerCapabilities(): AgentBuilderCapabilitiesResponse['data'] | null;
1581
2601
  declare function useCatalogServer(): CatalogServer;
1582
2602
  declare function useOptionalCatalogServer(): CatalogServer | null;
2603
+ declare function useAgentSessionsServer(): AgentSessionsServer;
2604
+ declare function useOptionalAgentSessionsServer(): AgentSessionsServer | null;
2605
+ declare function useAgentMetricsServer(): AgentMetricsServer;
2606
+ declare function useOptionalAgentMetricsServer(): AgentMetricsServer | null;
2607
+ declare function useScheduleServer(): ScheduleServer;
2608
+ declare function useOptionalScheduleServer(): ScheduleServer | null;
2609
+
2610
+ declare function AgentMetricChart({ graph, definition, error }: AgentMetricChartProps): react.JSX.Element;
2611
+ declare module '../../theme/SlotsProvider.js' {
2612
+ interface AtomSlots {
2613
+ AgentMetricChart: ComponentType<AgentMetricChartProps>;
2614
+ }
2615
+ }
1583
2616
 
1584
2617
  type AgentStepPart = {
1585
2618
  type: PartState['type'];
@@ -1607,6 +2640,9 @@ type DraftCatalogValue = {
1607
2640
  models: ModelSelection[];
1608
2641
  skills: AgentSkill[];
1609
2642
  connectors: ConnectorState[];
2643
+ connectorsHasMore: boolean;
2644
+ connectorsLoadMoreFailed: boolean;
2645
+ connectorsLoadingMore: boolean;
1610
2646
  loaded: boolean;
1611
2647
  loading: boolean;
1612
2648
  error: string | null;
@@ -1616,10 +2652,12 @@ type DraftCatalogValue = {
1616
2652
  refresh: () => void;
1617
2653
  /** Refresh connector auth state without reloading unrelated catalogs. */
1618
2654
  refreshConnectors: () => Promise<void>;
2655
+ /** Append the next MCP page when `connectorsHasMore`. */
2656
+ loadMoreConnectors: () => void;
1619
2657
  };
1620
2658
  declare function DraftCatalogProvider({ children }: {
1621
2659
  children: ReactNode;
1622
2660
  }): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react.JSX.Element | null | undefined;
1623
2661
  declare function useDraftCatalog(): DraftCatalogValue;
1624
2662
 
1625
- export { type AgentConfig, type AgentStepPart, AgentStepsCard, type AgentStepsCardProps, AgentStepsContainer, type AgentStepsContainerProps, type AgentStepsSplitResult, AgentsLibrary, AgentsLibraryButton, type AgentsLibraryButtonProps, type AgentsLibraryProps, type AskUserAnswerDraft, type AnsweredQuestion as AskUserAnsweredQuestion, AskUserContainer, type AskUserPromptProps, type Question as AskUserQuestion, type AskUserPromptProps as AskUserQuestionCardProps, AssistantMessageBubble, type AssistantMessageBubbleProps, AssistantMessageContainer, AssistantTextContainer, type PublicAtomSlots as AtomSlots, AttachmentCard, type AttachmentCardProps, type AttachmentCardSize, AttachmentPickerButton, type AttachmentPickerButtonProps, AttachmentPreviewDialog, type AttachmentPreviewDialogProps, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps, BottomSheet, type BottomSheetProps, type BrandConfig, BrandLogo, type BrandLogoConfig, type ButtonProps, type ButtonSize, type ButtonVariant, CenteredModal, type CenteredModalProps, ChatFileDownload, type ChatFileDownloadFile, type ChatFileDownloadProps, type ChatLayout, ClearChatButton, CodeEditor, type CodeEditorProps, ComposerAttachmentPickerContainer, ComposerAttachmentsContainer, ComposerBusyProvider, type ComposerBusyState, ComposerContainer, type ComposerContainerProps, ComposerLeftSection, type ComposerLeftSectionProps, type ComposerPauseView, ComposerRightSection, type ComposerRightSectionProps, ComposerSendButton, type ComposerSendButtonProps, ComposerShell, type ComposerShellProps, type ContentClassNames, DEFAULT_AGENT_CONFIG, DraftCatalogProvider, DraftComposerLeftSection, DraftComposerRightSection, DraftCompositeSelector, type DraftCompositeSelectorProps, DraftModelSelector, type DraftModelSelectorProps, HistoryLoader, HistoryLoaderContainer, type HistoryLoaderProps, Icon, type IconButtonProps, type IconMap, type IconProps, type LayoutProp, MCP_AUTH_POPUP_CHANNEL, Markdown, type MarkdownProps, type McpAuthCallback, type McpAuthPromptProps as McpAuthCardProps, McpAuthContainer, type McpAuthPopupMessage, type McpAuthPromptProps, type McpServer as McpAuthServer, MessageActionBar, type MessageActionBarProps, MessageAttachmentsContainer, MessageErrorBanner, type MessageErrorBannerProps, MessageGroup, type MessageGroupProps, MessageIndicator, type MessageIndicatorProps, MessageListSkeleton, type MessageListSkeletonProps, MessageTimestamp, type MessageTimestampProps, MonacoEditorCore, type MonacoEditorCoreProps, OpenUiFenceBlock, type OpenUiFenceBlockProps, PRESETS, PostMcpOauthScreen, type ReasoningCardProps, ReasoningContainer, ResumeUnavailable, ResumeUnavailableContainer, type ResumeUnavailableProps, type RoutePlace, type RoutesConfig, SandboxArtifactDownload, type SandboxArtifactDownloadProps, SandboxToolCallCard, type SandboxToolCallCardProps, SaveAgentButton, ScrollToBottomButton, type ScrollToBottomButtonProps, SelectAgentEmptyState, type SelectLibraryAgentRequest, type SemanticTokens, ServerProvider, ShellActionsActionSlot, type ShellMode, ShellModeProvider, type SlotOverrides, SlotsProvider, SubAgentCard, type SubAgentCardProps, Switch, type SwitchProps, type SwitchSize, SyntaxHighlighter, type SyntaxHighlighterProps, type ThemeConfig, type IconProps$1 as ThemeIconProps, type ThemeMode, type ThemePreset, ThemeProvider, Thread, ThreadComposerAreaShell, type ThreadComposerAreaShellProps, ThreadContainer, type ThreadContainerProps, type ThreadGroupPart, ThreadListContainer, type ThreadListContainerProps, ThreadListEmptyState, type ThreadListEmptyStateProps, ThreadListNewButton, type ThreadListNewButtonProps, ThreadListRow, type ThreadListRowProps, ThreadListRowSkeleton, type ThreadListRowSkeletonProps, ThreadListShell, type ThreadListShellProps, type ThreadPauseState, ThreadRootShell, type ThreadRootShellProps, ThreadViewportShell, type ThreadViewportShellProps, Toast, type ToastProps, ToastStack, type ToastStackProps, ToasterProvider, ToolApprovalBar, type ToolApprovalBarProps, ToolApprovalContainer, type ToolApprovalOption, ToolCallCard, type ToolCallCardProps, ToolCallContainer, ToolCallContentBlock, ToolCallContentBlockContainer, type ToolCallContentBlockProps, type ToolCallStatus, ToolGroupCard, type ToolGroupCardProps, ToolGroupContainer, type TrueForgeBuiltInServerConfig, type TrueForgeServerConfig, TrueForgeUI, type TrueForgeUIProps, TrueFoundryChatProvider, type TrueFoundryChatProviderProps, USER_MESSAGE_ATTACHMENT_PREVIEW_REM, type UseMCPAuthOptions, UserEditComposerContainer, UserMessageActionBar, type UserMessageActionBarProps, UserMessageBubble, type UserMessageBubbleProps, UserMessageContainer, UserMessageEdit, type UserMessageEditProps, WelcomeScreen, type WelcomeScreenProps, computeAgentStepsSplit, defaultSlots, getErrorMessage, libraryAgentId, preloadMarkdownOpenUI, resolvePresetTokens, shellIsMutable, threadHasPendingMcpAuth, useBrand, useBrandName, useCatalogServer, useComposerBusyState, useComposerPauseView, useContentClassNames, useDraftCatalog, useMCPAuth, useOptionalCatalogServer, useOptionalContentClassNames, useOptionalServer, useOptionalShellMode, useServer, useServerCapabilities, useShellMode, useSlot, useTheme, useThemeIcons, useThemeMode, useToaster, useToasterOptional };
2663
+ export { AgentCodeBlock, type AgentCodeBlockProps, type AgentCodeSnippetsProps, type AgentConfig, type AgentConfigEditor, AgentConfigEditors, type AgentConfigEditorsProps, AgentConfigPanel, type AgentConfigPanelProps, AgentConfigSection, AgentDetailsHeader, type AgentDetailsHeaderProps, AgentDetailsPage, type AgentDetailsPageProps, type AgentDetailsTab, AgentDetailsTabs, type AgentDetailsTabsProps, AgentDetailsUnavailable, type AgentDetailsUnavailableProps, AgentInstructionsDrawer, type AgentInstructionsDrawerProps, AgentMcpEditorContent, type AgentMcpEditorContentProps, AgentMetricCard, type AgentMetricCardProps, AgentMetricChart, type AgentMetricChartProps, type AgentMetricChartResult, AgentMetricsContainer, type AgentMetricsProps, AgentMetricsTimeRangeFilter, type AgentMetricsTimeRangeFilterProps, AgentMetricsView, type AgentMetricsViewProps, AgentModelConfigModal, type AgentModelConfigModalProps, AgentModelEditorContent, type AgentModelEditorContentProps, AgentModelSettingsContent, type AgentModelSettingsContentProps, AgentOverviewCard, type AgentOverviewCardProps, type AgentOverviewProps, AgentResourceConfigModal, type AgentResourceConfigModalProps, AgentResourceEditorContent, type AgentResourceEditorContentProps, AgentRuntimeConfigFields, type AgentRuntimeConfigFieldsProps, AgentRuntimeConfigModal, type AgentRuntimeConfigModalProps, AgentRuntimeEditorContent, type AgentRuntimeEditorContentProps, type AgentSessionDetailHeaderProps, type AgentSessionEventTimelineChartProps, type AgentSessionEventTimelineProps, type AgentSessionListRowProps, type AgentSessionMetricsStripProps, type AgentSessionTurnHeaderProps, AgentSessionsFilters, type AgentSessionsFiltersProps, type AgentSessionsProps, AgentSkillsEditorContent, type AgentSkillsEditorContentProps, type AgentStepPart, AgentStepsCard, type AgentStepsCardProps, AgentStepsContainer, type AgentStepsContainerProps, type AgentStepsSplitResult, AgentsLibrary, AgentsLibraryButton, type AgentsLibraryButtonProps, type AgentsLibraryProps, type AskUserAnswerDraft, type AnsweredQuestion as AskUserAnsweredQuestion, AskUserContainer, type AskUserPromptProps, type Question as AskUserQuestion, type AskUserPromptProps as AskUserQuestionCardProps, AssistantMessageBubble, type AssistantMessageBubbleProps, AssistantMessageContainer, AssistantTextContainer, type PublicAtomSlots as AtomSlots, AttachmentCard, type AttachmentCardProps, type AttachmentCardSize, AttachmentPickerButton, type AttachmentPickerButtonProps, AttachmentPreviewDialog, type AttachmentPreviewDialogProps, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps, BottomSheet, type BottomSheetProps, type BrandChrome, type BrandConfig, type BrandImage, BrandLogo, type BrandLogoConfig, type BrandMode, type ButtonProps, type ButtonSize, type ButtonVariant, CenteredModal, type CenteredModalProps, ChatFileDownload, type ChatFileDownloadFile, type ChatFileDownloadProps, type ChatLayout, ClearChatButton, CodeEditor, type CodeEditorProps, ComposerAttachmentPickerContainer, ComposerAttachmentsContainer, ComposerBusyProvider, type ComposerBusyState, ComposerContainer, type ComposerContainerProps, ComposerLeftSection, type ComposerLeftSectionProps, type ComposerPauseView, ComposerRightSection, type ComposerRightSectionProps, ComposerSendButton, type ComposerSendButtonProps, ComposerShell, type ComposerShellProps, type ContentClassNames, CustomActionContainer, type CustomActionRendererProps, type CustomActionRenderers, CustomActionRenderersProvider, DEFAULT_AGENT_CONFIG, DEFAULT_TABLE_PAGE_SIZE, DraftAgentConfigTrigger, type DraftAgentConfigTriggerProps, DraftCapabilitiesPanel, DraftCatalogProvider, DraftComposerLeftSection, DraftComposerRightSection, DraftCompositeSelector, type DraftCompositeSelectorProps, DraftModelSelector, type DraftModelSelectorProps, HistoryLoader, HistoryLoaderContainer, type HistoryLoaderProps, IS_CREATE_AGENT_METADATA_KEY, Icon, type IconButtonProps, type IconMap, type IconProps, type LayoutProp, MCP_AUTH_POPUP_CHANNEL, Markdown, type MarkdownProps, type McpAuthCallback, type McpAuthPromptProps as McpAuthCardProps, McpAuthContainer, type McpAuthPopupMessage, type McpAuthPromptProps, type McpServer as McpAuthServer, MessageActionBar, type MessageActionBarProps, MessageAttachmentsContainer, MessageErrorBanner, type MessageErrorBannerProps, MessageGroup, type MessageGroupProps, MessageIndicator, type MessageIndicatorProps, MessageListSkeleton, type MessageListSkeletonProps, MessageTimestamp, type MessageTimestampProps, MonacoEditorCore, type MonacoEditorCoreProps, OpenUiFenceBlock, type OpenUiFenceBlockProps, PRESETS, PopoverSelect, type PopoverSelectOption, type PopoverSelectProps, PostMcpOauthScreen, type ReasoningCardProps, ReasoningContainer, ResumeUnavailable, ResumeUnavailableContainer, type ResumeUnavailableProps, type RoutePlace, type RoutesConfig, SandboxArtifactDownload, type SandboxArtifactDownloadProps, SandboxToolCallCard, type SandboxToolCallCardProps, SaveAgentButton, type SaveAgentButtonProps, SaveAgentForm, SaveAgentFormFields, type SaveAgentFormFieldsProps, type SaveAgentFormProps, ScheduleFormDrawer, type ScheduleFormDrawerProps, ScheduleFormFields, type ScheduleFormFieldsProps, ScheduleLastRunsCell, type ScheduleMcpMount, ScheduleRunChip, ScheduleStatusBadge, SchedulesButton, type SchedulesButtonProps, SchedulesPage, ScrollToBottomButton, type ScrollToBottomButtonProps, SelectAgentEmptyState, type SelectLibraryAgentRequest, type SemanticTokens, ServerProvider, type SessionEventTimelineSegment, type SessionEventType, type SessionTurnView, SessionsBrowserButton, type SessionsBrowserButtonProps, SessionsPage, ShellActionsActionSlot, type ShellMode, ShellModeProvider, SideDrawer, type SideDrawerAnchor, type SideDrawerProps, type SideDrawerSize, type SlotOverrides, SlotsProvider, SubAgentCard, type SubAgentCardProps, Switch, type SwitchProps, type SwitchSize, SyntaxHighlighter, type SyntaxHighlighterProps, TABLE_PAGE_SIZE_OPTIONS, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TablePagination, type TablePaginationProps, type TableProps, TableRow, type TableRowProps, TableTokenPagination, type TableTokenPaginationProps, TestScheduleScreen, type TestScheduleScreenProps, type ThemeConfig, type IconProps$1 as ThemeIconProps, type ThemeMode, type ThemePreset, ThemeProvider, Thread, ThreadComposerAreaShell, type ThreadComposerAreaShellProps, ThreadContainer, type ThreadContainerProps, type ThreadGroupPart, ThreadListContainer, type ThreadListContainerProps, ThreadListEmptyState, type ThreadListEmptyStateProps, ThreadListNewButton, type ThreadListNewButtonProps, ThreadListRow, type ThreadListRowProps, ThreadListRowSkeleton, type ThreadListRowSkeletonProps, ThreadListShell, type ThreadListShellProps, type ThreadPauseState, ThreadRootShell, type ThreadRootShellProps, ThreadViewportShell, type ThreadViewportShellProps, Toast, type ToastProps, ToastStack, type ToastStackProps, ToasterProvider, ToolApprovalBar, type ToolApprovalBarProps, ToolApprovalContainer, type ToolApprovalOption, ToolCallCard, type ToolCallCardProps, ToolCallContainer, ToolCallContentBlock, ToolCallContentBlockContainer, type ToolCallContentBlockProps, type ToolCallStatus, ToolGroupCard, type ToolGroupCardProps, ToolGroupContainer, type TrueForgeBuiltInServerConfig, type TrueForgeServerConfig, TrueForgeUI, type TrueForgeUIProps, TrueFoundryChatProvider, type TrueFoundryChatProviderProps, USER_MESSAGE_ATTACHMENT_PREVIEW_REM, type UseMCPAuthOptions, UserEditComposerContainer, UserMessageActionBar, type UserMessageActionBarProps, UserMessageBubble, type UserMessageBubbleProps, UserMessageContainer, UserMessageEdit, type UserMessageEditProps, WelcomeScreen, type WelcomeScreenProps, computeAgentStepsSplit, defaultSlots, getErrorMessage, isCreateAgentMetadataValue, libraryAgentId, preloadMarkdownOpenUI, readSessionIsCreateAgent, resolveBrandChrome, resolvePresetTokens, sessionIsCreateAgent, shellIsCreateAgent, shellIsMutable, threadHasPendingMcpAuth, useAgentMetricsServer, useAgentSessionsServer, useBrand, useBrandName, useCatalogServer, useComposerBusyState, useComposerPauseView, useContentClassNames, useDraftCatalog, useMCPAuth, useOptionalAgentMetricsServer, useOptionalAgentSessionsServer, useOptionalCatalogServer, useOptionalContentClassNames, useOptionalCustomActionRenderers, useOptionalScheduleServer, useOptionalServer, useOptionalShellMode, useScheduleServer, useServer, useServerCapabilities, useShellMode, useSlot, useTheme, useThemeIcons, useThemeMode, useToaster, useToasterOptional };