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