@truefoundry/trueforge-ui 0.0.0 → 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +340 -0
- package/LICENSE +21 -0
- package/NOTICE +17 -0
- package/README.md +640 -3
- package/dist/ConnectorSettings-CLBEWGQJ.js +898 -0
- package/dist/ConnectorSettings-CLBEWGQJ.js.map +1 -0
- package/dist/DockLayout-WRF7EQLD.js +35 -0
- package/dist/DockLayout-WRF7EQLD.js.map +1 -0
- package/dist/DrawerLayout-X2UXYTOS.js +156 -0
- package/dist/DrawerLayout-X2UXYTOS.js.map +1 -0
- package/dist/ModelSettings-IJ55QJQO.js +1082 -0
- package/dist/ModelSettings-IJ55QJQO.js.map +1 -0
- package/dist/OpenUiFenceBlock-SLLZSTMJ.js +9 -0
- package/dist/OpenUiFenceBlock-SLLZSTMJ.js.map +1 -0
- package/dist/SandboxSettings-S5XGZWOL.js +505 -0
- package/dist/SandboxSettings-S5XGZWOL.js.map +1 -0
- package/dist/SettingsBuilder-64Y33NP3.js +128 -0
- package/dist/SettingsBuilder-64Y33NP3.js.map +1 -0
- package/dist/SidebarLayout-M7HEOZVK.js +236 -0
- package/dist/SidebarLayout-M7HEOZVK.js.map +1 -0
- package/dist/SkillSettings-MXK4ZEI7.js +389 -0
- package/dist/SkillSettings-MXK4ZEI7.js.map +1 -0
- package/dist/WidgetLayout-7MDOKLHU.js +101 -0
- package/dist/WidgetLayout-7MDOKLHU.js.map +1 -0
- package/dist/assistant-ui.d.ts +1 -0
- package/dist/assistant-ui.js +9 -0
- package/dist/assistant-ui.js.map +1 -0
- package/dist/chunk-42GF723P.js +24 -0
- package/dist/chunk-42GF723P.js.map +1 -0
- package/dist/chunk-CFLVPV5M.js +29 -0
- package/dist/chunk-CFLVPV5M.js.map +1 -0
- package/dist/chunk-M6MHLVSO.js +8 -0
- package/dist/chunk-M6MHLVSO.js.map +1 -0
- package/dist/chunk-NBMP2XNL.js +89 -0
- package/dist/chunk-NBMP2XNL.js.map +1 -0
- package/dist/chunk-UBOFEI77.js +567 -0
- package/dist/chunk-UBOFEI77.js.map +1 -0
- package/dist/chunk-UHGSHDBM.js +633 -0
- package/dist/chunk-UHGSHDBM.js.map +1 -0
- package/dist/chunk-UXZOL5GO.js +2088 -0
- package/dist/chunk-UXZOL5GO.js.map +1 -0
- package/dist/chunk-WFC3W4C3.js +73 -0
- package/dist/chunk-WFC3W4C3.js.map +1 -0
- package/dist/chunk-XSHXH6EI.js +6800 -0
- package/dist/chunk-XSHXH6EI.js.map +1 -0
- package/dist/createTrueFoundryServer-B72bU-J7.d.ts +28 -0
- package/dist/index.d.ts +1569 -0
- package/dist/index.js +781 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +479 -0
- package/dist/plugins/trueforge-agent-server-adapter/index.js +830 -0
- package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -0
- package/dist/styles.css +2 -0
- package/package.json +129 -6
- package/index.js +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0-rc.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b56c003: Initial 0.1.0-rc.1 prerelease of all public packages.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [b56c003]
|
|
12
|
+
- @truefoundry/trueforge-sdk@0.1.0-rc.0
|
|
13
|
+
|
|
14
|
+
All notable changes to this project will be documented in this file.
|
|
15
|
+
|
|
16
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
17
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
18
|
+
|
|
19
|
+
## [Unreleased]
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **`type: "trueforge"` built-in server** — `<TrueforgeUI server={{ type: 'trueforge', baseUrl?, token?, fetch? }} />`
|
|
24
|
+
resolves a full Harness `AgentUIServer` via
|
|
25
|
+
`@truefoundry/trueforge-ui/plugins/trueforge-agent-server-adapter`
|
|
26
|
+
(`createTrueForgeAgentUIServer`), including chat, builder, and default settings
|
|
27
|
+
catalogs. Depends on `@truefoundry/trueforge-sdk` (workspace:* in-monorepo; external in the bundle).
|
|
28
|
+
- **Light/dark brand logo** — `theme.brand.logo` accepts a `BrandLogoConfig`
|
|
29
|
+
(`{ src?, light?, dark?, href? }`). The source is picked from the resolved theme
|
|
30
|
+
mode, falling back to the other mode and then `src`, so a single configured mode
|
|
31
|
+
covers both and `{ light }` alone never renders a missing image. `href` wraps the
|
|
32
|
+
logo in a same-tab link. A bare string (`logo: '/logo.svg'`) is shorthand for a
|
|
33
|
+
mode-agnostic source. A config with no usable source falls back to the default
|
|
34
|
+
mark rather than an empty `<img>`.
|
|
35
|
+
- **`BrandLogo` slot** — now in the slot table and resolved through `useSlot` by
|
|
36
|
+
every layout, so `overrides={{ BrandLogo: MyMark }}` reaches the sidebar header,
|
|
37
|
+
widget FAB, and welcome screen.
|
|
38
|
+
- **`useBrandName()`** — the configured brand name or the default, so layouts no
|
|
39
|
+
longer inline the fallback string.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **Theme preset rename** — default preset id `truefoundry` → `trueforge`
|
|
44
|
+
(`ThemePreset`, `PRESETS`, `data-preset`, docs).
|
|
45
|
+
- **Styles auto-inject** — `ThemeProvider` injects the SDK stylesheet at runtime.
|
|
46
|
+
Hosts no longer need `@import '@truefoundry/trueforge-ui/styles.css'` (export
|
|
47
|
+
kept for SSR). Semantic tokens and dark mode are scoped to `.aui-theme-root`
|
|
48
|
+
(no `html.dark` / `:root` retheme of the host page).
|
|
49
|
+
- **Dependency** — `@truefoundry/assistant-ui-runtime` pinned to `0.1.13`.
|
|
50
|
+
`ModelSelectorEntry` now requires `id`, nested `provider: ProviderEntry`, and
|
|
51
|
+
`properties: ModelProperties` (replacing flat `provider` / `providerLogo` /
|
|
52
|
+
`reasoningEfforts`). Re-exports `ProviderEntry` and `ModelProperties`.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- **History row mutability** — prefer `custom.isMutable` from the session (runtime
|
|
57
|
+
stamp) over inferring from `agentName`. Orphaned named refs (deleted agent, no
|
|
58
|
+
`agentName`) open as immutable. `openHistorySession` allows `isMutable: false`
|
|
59
|
+
without an agent name.
|
|
60
|
+
- **Edit-bound draft history switch** — do not reuse the mutable shell via
|
|
61
|
+
`switchToThread` when the shell still carries an Edit `agentName`/`agentId`
|
|
62
|
+
and the row is a different session. Remount through `openHistorySession` so
|
|
63
|
+
Update Agent chrome cannot overwrite the wrong library agent.
|
|
64
|
+
|
|
65
|
+
### Breaking
|
|
66
|
+
|
|
67
|
+
- **Server-port types owned by `@truefoundry/assistant-ui-runtime`** — this package no
|
|
68
|
+
longer defines `AgentChatServer` / `AgentBuilderServer` / catalog DTOs locally.
|
|
69
|
+
Host-facing types are re-exported from `@truefoundry/assistant-ui-runtime/server`
|
|
70
|
+
via `src/server/types.ts`. Prefer importing types from `@truefoundry/trueforge-ui`
|
|
71
|
+
(hosts should not need the runtime package for types). Requires runtime `0.1.13`.
|
|
72
|
+
- **Removed public pagination helpers** — `PageResult`, `TokenPagination`,
|
|
73
|
+
`ListSessionsResponse`, `ListTurnsResponse`, `ListSessionEventsResponse`, and
|
|
74
|
+
opaque `SessionEvent` are gone from this package. Chat list APIs use runtime
|
|
75
|
+
`ListResult<T>` (`{ data, nextPageToken? }`).
|
|
76
|
+
- **`AgentUIServer` / mounts follow the runtime contract** — composed port matches
|
|
77
|
+
runtime `AgentUIServerPort`; `SkillMount` / `McpServerMount` stay opaque `object`
|
|
78
|
+
(hosts widen via generics). Implement `getCapabilities()` on every builder host.
|
|
79
|
+
- **One brand component** — removed the `BrandIcon` export; `BrandLogo` is the only
|
|
80
|
+
product mark and renders the mark alone. Callers that also want the name as text
|
|
81
|
+
pair it with `useBrandName()` (as the sidebar header does), rather than relying on
|
|
82
|
+
a second component that hard-codes one arrangement. Replace `<BrandIcon />` with
|
|
83
|
+
`<BrandLogo />`, and `overrides={{ BrandIcon }}` with `overrides={{ BrandLogo }}`.
|
|
84
|
+
- **`brand.name` is required** — `theme.brand` stays optional, but setting it now
|
|
85
|
+
requires `name`, since it labels the logo and a logo with no name has no accessible
|
|
86
|
+
name. `logo` remains optional, so `brand: { name: 'Acme' }` still pairs host text
|
|
87
|
+
with the default mark. `useBrand()` returns `Partial<BrandConfig>`, since `brand`
|
|
88
|
+
may be absent entirely.
|
|
89
|
+
- **`theme.brand` is images-only** — removed `brand.icon`; there is one logo source.
|
|
90
|
+
Removed the `ReactNode` and render-function variants of the logo value (and with
|
|
91
|
+
them the `BrandImage` type export), so `brand.logo` is now
|
|
92
|
+
`string | BrandLogoConfig`. Component-valued marks move to the slot table:
|
|
93
|
+
`overrides={{ BrandLogo: MyMark }}`, which is how every other atom is replaced.
|
|
94
|
+
Also removed `alt` — the logo is labelled with `brand.name`, so there is one place
|
|
95
|
+
to set the accessible name.
|
|
96
|
+
- **Default brand name is `"TrueForge"`** (was `"TrueFoundry"`), used by
|
|
97
|
+
`BrandLogo`, the sidebar header, and `useBrandName()`.
|
|
98
|
+
- **`ShellMode` shape** — replaced `type: 'idle' | 'named' | 'draft'` with
|
|
99
|
+
`status: 'idle' | 'active'` plus `isMutable` on active bindings. Composer /
|
|
100
|
+
Save Agent / welcome chrome key off `isMutable`, not draft|named.
|
|
101
|
+
Hosts that inspected `mode.type` must switch to `mode.status` /
|
|
102
|
+
`mode.isMutable` (see `shellIsMutable`).
|
|
103
|
+
- **Renamed `TrueFoundryAssistantUI` → `TrueforgeUI`** (props type
|
|
104
|
+
`TrueFoundryAssistantUIProps` → `TrueforgeUIProps`). Update imports and JSX.
|
|
105
|
+
- **`TrueforgeUI` agent props** — replaced top-level `agentName` and
|
|
106
|
+
`defaultAgentSpec` with a single discriminated `agentConfig`. There is no
|
|
107
|
+
compat shim; hosts must update call sites.
|
|
108
|
+
- **Icons use Lucide** (`lucide-react`) instead of Font Awesome. Default
|
|
109
|
+
registry keys are unchanged (`paperclip`, `xmark`, …); `theme.icons` values
|
|
110
|
+
are Lucide components, React nodes, render fns, or SVGR SVGs — not
|
|
111
|
+
`IconDefinition`. Drop `@fortawesome/*` if you only used them for this SDK.
|
|
112
|
+
- **Removed `tfy-web-components`** dependency and peer. Primitives, icons,
|
|
113
|
+
theme, Markdown, and agent-chat molecules are owned by this SDK.
|
|
114
|
+
- `theme` prop is now `ThemeConfig` (object), not `"light" | "dark"`. Mode
|
|
115
|
+
lives at `theme.mode`. Example: `theme={{ mode: "dark", preset: "claude" }}`.
|
|
116
|
+
- `AtomSlots` and `SlotOverrides` are derived from `defaultSlots`; consumer
|
|
117
|
+
module augmentation of `AtomSlots` no longer adds override keys.
|
|
118
|
+
- `theme.classNames.openui` accepts only `root` and `scope`; arbitrary extra
|
|
119
|
+
keys are no longer supported.
|
|
120
|
+
- Complete `SemanticTokens` objects must include `success`,
|
|
121
|
+
`successForeground`, `warning`, and `warningForeground`.
|
|
122
|
+
- `Button`, `IconButton`, dialogs, sheets, avatars, and other low-level
|
|
123
|
+
primitives are customized through tokens/CSS rather than slots. Compound
|
|
124
|
+
APIs (`Button.Primary`, `icon=` string props) are gone.
|
|
125
|
+
- Import styles with only `@import "@truefoundry/trueforge-ui/styles.css"`
|
|
126
|
+
(no `tfy-web-components/theme.css`).
|
|
127
|
+
- `layout` accepts a built-in string **or** a host `React.ComponentType`.
|
|
128
|
+
- **`server` prop no longer accepts `{ type: "custom", server }`.** Pass a ready
|
|
129
|
+
`AgentUIServer` directly (`server={agentServer}`). Built-in configs
|
|
130
|
+
(`truefoundry` / `trueforge`) are unchanged and now accept an optional
|
|
131
|
+
`catalog`.
|
|
132
|
+
|
|
133
|
+
### Added
|
|
134
|
+
|
|
135
|
+
- **Named agent header title** — when an immutable (named) agent chat is open,
|
|
136
|
+
the thread header shows the agent name on the left (sidebar / drawer / dock /
|
|
137
|
+
widget layouts). Hidden for idle and draft/mutable chats.
|
|
138
|
+
- **`AgentLibraryEntry.agentId?` / `agentSpec?`** — optional listing fields.
|
|
139
|
+
Hosts that only return `{ name }` keep working; `agentSpec` enables Edit.
|
|
140
|
+
- **Agents Library Edit** — when `isComposerEnabled` and the row has
|
|
141
|
+
`agentSpec`, Edit binds a mutable session seeded from that spec
|
|
142
|
+
(`isMutable: true`). Try Agent remains immutable (`isMutable: false`).
|
|
143
|
+
- **`selectLibraryAgent` / `shellIsMutable` / `libraryAgentId`** on shell
|
|
144
|
+
context. `selectAgent` / `openDraft` remain as thin wrappers.
|
|
145
|
+
- **Reasoning-effort selector** beside the model picker in the draft composer.
|
|
146
|
+
Shown only when the selected `ModelSelection` declares `reasoningEfforts`;
|
|
147
|
+
the effort is coerced into the spec on model change or explicit pick.
|
|
148
|
+
- **Skills catalog** — `getSkillCatalog` with an Available/Selected split;
|
|
149
|
+
registry skills (`catalogId`) return to Available on remove, GitHub imports
|
|
150
|
+
are deleted for good. New types: `RegistrySkill`, `GithubSkill`,
|
|
151
|
+
`DefinedSkill`, `SkillConfigBase`, `SkillCatalogEntry`,
|
|
152
|
+
`CreateSkillRequestBase`, `SelectRegistrySkillRequest`,
|
|
153
|
+
`ImportGithubSkillRequest`, `SkillCatalogServer.getSkillCatalog`.
|
|
154
|
+
- **Sandbox catalog** — list/create/update/delete of connected sandboxes from a
|
|
155
|
+
catalog. New types: `SandboxConfig`, `SandboxCatalogEntry`, `SandboxBase`,
|
|
156
|
+
`CreateSandboxRequest`, `UpdateSandboxRequest`, `SandboxCatalogServer`.
|
|
157
|
+
`apiKey` is never stored in the catalog and is optional on update (blank keeps
|
|
158
|
+
the existing key).
|
|
159
|
+
- `TrueforgeBuiltInServerConfig` exported for hosts that build the built-in
|
|
160
|
+
config separately.
|
|
161
|
+
|
|
162
|
+
- **`agentConfig` shell modes** on `TrueforgeUI` /
|
|
163
|
+
`ShellModeProvider`:
|
|
164
|
+
- `SingleAgent` — locked named agent (`name` required)
|
|
165
|
+
- `AgentLibrary` — Agents Library only; idle empty state until pick; no New Chat
|
|
166
|
+
- `AgentComposer` — draft composer only (no library)
|
|
167
|
+
- `AgentLibraryWithComposer` — library + draft (default when omitted)
|
|
168
|
+
- **Clear Chat** control in thread headers (sidebar / drawer / dock / widget).
|
|
169
|
+
Resets the current named thread or opens a fresh draft.
|
|
170
|
+
- `ClearChatButton`, `SelectAgentEmptyState`, `AgentConfig`,
|
|
171
|
+
`DEFAULT_AGENT_CONFIG` exported from the main barrel.
|
|
172
|
+
- Owned `ThemeProvider` with light / dark / system, CSS token injection,
|
|
173
|
+
`theme.brand`, `theme.icons`, `theme.classNames`, `theme.className`.
|
|
174
|
+
- Semantic success/warning and assistant-bubble tokens, plus complete Markdown,
|
|
175
|
+
syntax-highlighter, OpenUI, and Monaco class-name hooks.
|
|
176
|
+
- Presets: `truefoundry`, `claude`, `chatgpt`, `gemini`.
|
|
177
|
+
- `BrandLogo` / `BrandIcon` / `useBrand`; `Icon` / `IconRegistry`.
|
|
178
|
+
- Registry-backed robot brand fallback and overridable welcome/OAuth state
|
|
179
|
+
icons. The standalone OAuth callback now inherits the shell theme and slots.
|
|
180
|
+
- In-repo Markdown (OpenUI fences + syntax-highlighter), `MonacoEditorCore`,
|
|
181
|
+
`CodeEditor`.
|
|
182
|
+
- Public slots for agent-library/save/select controls, draft composer
|
|
183
|
+
selectors, code/content renderers, and file-download UI; nested SDK
|
|
184
|
+
composition now honors those overrides.
|
|
185
|
+
- Example app: preset switcher + custom layout demo; `VITE_TFY_AGENT_MODE` to
|
|
186
|
+
try shell modes.
|
|
187
|
+
|
|
188
|
+
### Migration
|
|
189
|
+
|
|
190
|
+
#### Component rename
|
|
191
|
+
|
|
192
|
+
```tsx
|
|
193
|
+
// Before
|
|
194
|
+
import { TrueFoundryAssistantUI } from '@truefoundry/trueforge-ui';
|
|
195
|
+
<TrueFoundryAssistantUI server={server} layout="sidebar" />;
|
|
196
|
+
|
|
197
|
+
// After
|
|
198
|
+
import { TrueforgeUI } from '@truefoundry/trueforge-ui';
|
|
199
|
+
<TrueforgeUI server={server} layout="sidebar" />;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### `agentConfig` (host must update)
|
|
203
|
+
|
|
204
|
+
| Before | After |
|
|
205
|
+
| ------------------------------------------------ | --------------------------------------------------------------------------------------------- |
|
|
206
|
+
| `agentName="support-agent"` | `agentConfig={{ mode: "SingleAgent", name: "support-agent" }}` |
|
|
207
|
+
| omit `agentName` (+ optional `defaultAgentSpec`) | omit `agentConfig`, or `agentConfig={{ mode: "AgentLibraryWithComposer", defaultAgentSpec }}` |
|
|
208
|
+
| — | `agentConfig={{ mode: "AgentLibrary" }}` — library only, pick agent to start |
|
|
209
|
+
| — | `agentConfig={{ mode: "AgentComposer", defaultAgentSpec }}` — draft only |
|
|
210
|
+
|
|
211
|
+
```tsx
|
|
212
|
+
// Before
|
|
213
|
+
<TrueFoundryAssistantUI server={server} layout="sidebar" agentName="support-agent" />
|
|
214
|
+
<TrueFoundryAssistantUI
|
|
215
|
+
server={server}
|
|
216
|
+
layout="sidebar"
|
|
217
|
+
defaultAgentSpec={{ model: { name: "openai-main/gpt-4.1" } }}
|
|
218
|
+
/>
|
|
219
|
+
|
|
220
|
+
// After
|
|
221
|
+
<TrueforgeUI
|
|
222
|
+
server={server}
|
|
223
|
+
layout="sidebar"
|
|
224
|
+
agentConfig={{ mode: "SingleAgent", name: "support-agent" }}
|
|
225
|
+
/>
|
|
226
|
+
<TrueforgeUI
|
|
227
|
+
server={server}
|
|
228
|
+
layout="sidebar"
|
|
229
|
+
agentConfig={{
|
|
230
|
+
mode: "AgentLibraryWithComposer",
|
|
231
|
+
defaultAgentSpec: { model: { name: "openai-main/gpt-4.1" } },
|
|
232
|
+
}}
|
|
233
|
+
/>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
`ShellModeProvider` likewise takes `agentConfig` instead of `agentName` /
|
|
237
|
+
`defaultAgentSpec`.
|
|
238
|
+
|
|
239
|
+
#### Other Unreleased migrations
|
|
240
|
+
|
|
241
|
+
1. Drop `@import "tfy-web-components/theme.css"` and the `tfy-web-components`
|
|
242
|
+
package.
|
|
243
|
+
2. Replace `theme="dark"` with `theme={{ mode: "dark" }}`.
|
|
244
|
+
3. Update Button/IconButton overrides to the new prop surface.
|
|
245
|
+
4. Replace product marks via `theme.brand`; action icons via `theme.icons`
|
|
246
|
+
(Lucide / SVG — not Font Awesome `IconDefinition`).
|
|
247
|
+
5. Optionally set `layout={MyLayout}` and style content via
|
|
248
|
+
`theme.classNames` or `.aui-markdown` / `.aui-syntax-highlighter` /
|
|
249
|
+
`.aui-openui` / `.aui-monaco`.
|
|
250
|
+
6. Remove consumer `AtomSlots` module augmentations and use the documented
|
|
251
|
+
`SlotOverrides` keys.
|
|
252
|
+
7. Replace custom `theme.classNames.openui` keys with `root`, `scope`, or host
|
|
253
|
+
CSS targeting `.aui-openui`.
|
|
254
|
+
8. Add success/warning pairs to any complete custom `SemanticTokens` maps.
|
|
255
|
+
|
|
256
|
+
## [0.1.0]
|
|
257
|
+
|
|
258
|
+
### Breaking
|
|
259
|
+
|
|
260
|
+
- Main entry no longer re-exports tfy design-system **values** (`Button`,
|
|
261
|
+
`IconButton`, `IconProvider`, `Modal`, `Dialog`, `Accordion*`, `Skeleton`,
|
|
262
|
+
`LightTooltip`, `registerIcons`, …). Import those from `tfy-web-components`.
|
|
263
|
+
Override **types** `ButtonProps` / `ButtonSize` / `IconButtonProps` remain
|
|
264
|
+
on `@truefoundry/trueforge-ui`.
|
|
265
|
+
- Peer dependency ranges aligned with supported versions (`@truefoundry/assistant-ui-runtime` `^0.1.4`, `truefoundry-gateway-sdk` `^0.4.0-rc.1`, `tfy-web-components` `^0.0.31`).
|
|
266
|
+
- tfy/MUI peer stack (`@mui/material`, `@emotion/*`, Font Awesome, `@openuidev/*`) moved from `dependencies` to `peerDependencies`; hosts must install them.
|
|
267
|
+
- `MessageTimestamp` is presentational and requires `createdAt`.
|
|
268
|
+
- `UserMessageActionBar` is presentational (copy/edit/retry props); runtime wiring lives in containers.
|
|
269
|
+
- `MessageActionBar` accepts optional `createdAt` and passes it to `MessageTimestamp`.
|
|
270
|
+
- Default stylesheet no longer loads Google Fonts from the CDN; override `--font-agent-ui` in host CSS if needed.
|
|
271
|
+
- `prepare` script replaced with `prepublishOnly` (install no longer builds automatically).
|
|
272
|
+
|
|
273
|
+
### Added
|
|
274
|
+
|
|
275
|
+
- `TrueforgeUI` quick-start component with `layout`: `sidebar` | `drawer` |
|
|
276
|
+
`dock` | `widget` (slots outside the chat provider so toast overrides apply).
|
|
277
|
+
- Curated re-exports: `useAui`, `useAuiState`, `AssistantState` from the main
|
|
278
|
+
barrel and `@truefoundry/trueforge-ui/assistant-ui`; `useTheme` from the main
|
|
279
|
+
barrel.
|
|
280
|
+
- Optional `onThreadOpen` on `ThreadListContainer` for stack/drawer chrome.
|
|
281
|
+
- npm package metadata: `repository`, `homepage`, `bugs`, `keywords`.
|
|
282
|
+
- Drawer / widget Escape-to-close; drawer backdrop dismiss; widget `aria-modal`.
|
|
283
|
+
- Drawer / widget focus management (`inert` on background, focus dialog, restore).
|
|
284
|
+
- `docs/api.md` curated public API reference.
|
|
285
|
+
- CI coverage floor + example app build.
|
|
286
|
+
- Apache-2.0 `LICENSE`, `NOTICE`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`.
|
|
287
|
+
- GitHub issue/PR templates and CI workflow.
|
|
288
|
+
- `docs/` (architecture, customization, compatibility).
|
|
289
|
+
- ESLint + Prettier.
|
|
290
|
+
- Unit tests for tool-call parsing helpers and `computeAgentStepsSplit`.
|
|
291
|
+
|
|
292
|
+
### Changed
|
|
293
|
+
|
|
294
|
+
- Required peers are only `react` / `react-dom`. `@assistant-ui/core`
|
|
295
|
+
(`^0.2.22`), `@assistant-ui/react` (`^0.14.24`), and
|
|
296
|
+
`tfy-web-components@^0.0.32` moved to `dependencies` (still listed as optional
|
|
297
|
+
peers for hosts that install them directly for customization). Happy path:
|
|
298
|
+
`yarn add @truefoundry/trueforge-ui`. Yarn `resolutions` pin a single
|
|
299
|
+
`@assistant-ui/core` / `store` / `tap` copy to avoid duplicate AuiProvider.
|
|
300
|
+
- `tfy-web-components` resolves from npm (`^0.0.32`) instead of a local
|
|
301
|
+
`file:` tarball.
|
|
302
|
+
- MUI / Emotion / OpenUI / Monaco / extra Font Awesome packages come from
|
|
303
|
+
`tfy-web-components` (not peers of this SDK).
|
|
304
|
+
- Font Awesome packages this SDK imports (`fontawesome-svg-core`,
|
|
305
|
+
`free-solid-svg-icons`) moved to `dependencies`.
|
|
306
|
+
- `SlotOverrides` is `Partial<AtomSlots>` only (no `Record<string, unknown>`).
|
|
307
|
+
- `TrueforgeUI` lazy-layout `Suspense` fallback is a pulse skeleton
|
|
308
|
+
instead of blank.
|
|
309
|
+
- README reordered: quick start (prefer `client`) before advanced sections.
|
|
310
|
+
|
|
311
|
+
### Removed
|
|
312
|
+
|
|
313
|
+
- Unused `TokensProvider` / `useTokens` / `defaultTokens` public API (and
|
|
314
|
+
related token types). Theme via CSS variables from `styles.css` instead.
|
|
315
|
+
- `examples/vite-chat` sample app.
|
|
316
|
+
- Unused `classnames` dependency (provided by `tfy-web-components@^0.0.32`).
|
|
317
|
+
- Direct design-system `devDependencies` duplicated from web-components
|
|
318
|
+
(`@mui/material`, `@emotion/*`, `@openuidev/*`, `monaco-editor`,
|
|
319
|
+
`@fortawesome/free-regular-svg-icons`, `@fortawesome/react-fontawesome`).
|
|
320
|
+
- Standalone `@truefoundry/trueforge-ui/openui.css` export — OpenUI styles ship
|
|
321
|
+
inside `styles.css`.
|
|
322
|
+
- Unused packages: `lodash-es`, `react-markdown`, `remark-gfm`, `class-variance-authority`.
|
|
323
|
+
- Broken `pack:dev` script.
|
|
324
|
+
|
|
325
|
+
### Fixed
|
|
326
|
+
|
|
327
|
+
- Error toasts stack (up to 5), use compact theme sizing, and include a copy action.
|
|
328
|
+
- Atom/container architecture: atoms no longer import `@assistant-ui/*`.
|
|
329
|
+
- Error toasts truncate large gateway response bodies.
|
|
330
|
+
|
|
331
|
+
### Note
|
|
332
|
+
|
|
333
|
+
- `github-markdown-css` remains a **devDependency** required to compile
|
|
334
|
+
`dist/styles.css` (pulled in via tfy Markdown CSS).
|
|
335
|
+
|
|
336
|
+
## [0.0.8] - 2026-07-24
|
|
337
|
+
|
|
338
|
+
### Changed
|
|
339
|
+
|
|
340
|
+
- Package and dependency updates prior to the 0.1.0 open-source readiness pass.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 TrueFoundry
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@truefoundry/trueforge-ui
|
|
2
|
+
Copyright 2024-2026 TrueFoundry
|
|
3
|
+
|
|
4
|
+
This product includes software developed at TrueFoundry.
|
|
5
|
+
|
|
6
|
+
This distribution may include or depend on third-party software. Notable
|
|
7
|
+
dependencies and their licenses include (non-exhaustive):
|
|
8
|
+
|
|
9
|
+
- @assistant-ui/react / @assistant-ui/core — see their respective LICENSE files
|
|
10
|
+
- @openuidev/react-ui and related OpenUI packages — see their LICENSE files
|
|
11
|
+
- @truefoundry/assistant-ui-runtime — see its LICENSE
|
|
12
|
+
- lucide-react — ISC / Lucide license
|
|
13
|
+
- monaco-editor — see its LICENSE
|
|
14
|
+
- react-markdown / remark-gfm / react-syntax-highlighter — see their respective LICENSE files
|
|
15
|
+
|
|
16
|
+
Full license texts for installed packages are available in node_modules under
|
|
17
|
+
each package's LICENSE (or equivalent) file.
|