hermes-agent/ui-tui/src/sdk/index.ts
Brooklyn Nicholson 9627d4f43f feat(ui-tui): ambient zone system + widget crash boundary
A full placement grid so the agent can put a widget where it asks — dock-top/
bottom and corner zones, with corners as reserved rails that take real space
instead of floating over content. A per-widget error boundary plus lenient
ShimmerRows means generated widget code can't crash the TUI.
2026-07-21 20:59:54 -05:00

69 lines
2.1 KiB
TypeScript

/**
* The TUI widget SDK — the one import surface a widget app needs.
*
* An app is a `WidgetApp` (state + reducer + render) registered with
* `defineWidgetApp` and launched by id (usually from a slash command via
* `launchWidget`). While active it owns every keypress and renders in a
* viewport-level slot, composing the same layout/theme primitives every
* built-in surface uses — so apps inherit grid tracks, zoned overlays,
* selection chips, and skin-derived color by construction.
*
* See `sdk/apps/` for the reference apps (`/grid-test`, `/dialog-test`).
*/
// Theme + chrome primitives
export { Accordion } from '../components/accordion.js'
export { Shimmer, ShimmerRows, shimmerSegments, useShimmerPhase } from '../components/loaders.js'
// Layout components + overlay primitives
export { Dialog, Overlay, type OverlayZone } from '../components/overlay.js'
export { OverlayHint, windowItems } from '../components/overlayControls.js'
export {
ActionRow,
chipRowProps,
listRowStyle,
MenuRow,
scrollbarColors,
useMenu
} from '../components/overlayPrimitives.js'
export { GridAreas, WidgetGrid } from '../components/widgetGrid.js'
export { gauge, hbars, sparkline, sparkRows } from '../lib/charts.js'
export { contrastRatio, liftForContrast, mix, relativeLuminance } from '../lib/color.js'
// Layout engine
export {
type GridAreaItem,
type GridAreasLayout,
type GridAreasOptions,
type GridTrackSize,
layoutGridAreas,
layoutWidgetGrid,
resolveGridTracks,
type WidgetGridItem,
type WidgetGridLayout,
type WidgetGridLayoutOptions
} from '../lib/widgetGrid.js'
export type { Theme, ThemeColors } from '../theme.js'
// App contract + host
export {
ActiveWidgetSlot,
AmbientDock,
AmbientRail,
ambientRailWidth,
closeWidget,
dispatchWidgetInput,
launchWidget,
openWidget,
updateWidget
} from './host.js'
export { defineWidgetApp, getWidgetApp, listWidgetApps } from './registry.js'
export {
type ActiveWidget,
type AmbientZone,
isCtrl,
type WidgetApp,
type WidgetInput,
type WidgetRenderCtx
} from './types.js'
export { loadUserWidgets, type UserWidgetLoadResult, widgetSdk, type WidgetSdk } from './userWidgets.js'