export * from './hooks';
export * from './AppRegistry';
export * from './WidgetRegistry';
export * from './MusicPlayer';

// Re-export app modules (excluding appRegistryMetas to avoid name collisions)
export {
  MessageList,
  MessageBubble,
  StreamingBubble,
  ToolActivity,
  QuestionActivity,
  ModelSelector,
  InputArea,
  ChatLauncher,
  AttachmentList,
  AttachButton,
  WebpageDialog,
  EmbeddableChat,
  useChat,
  useSlashCommands,
  useAttachments,
  useAudioRecording,
} from './apps/Chat';
export type { UseEmbeddableChatType, UseChatType, UseAttachmentsType, UseAudioRecordingType } from './apps/Chat';
export * from './apps/Chat/types';
export { SessionBar, SessionList, ChatDetailPanel } from './apps/ChatHistory';
export type { SelectedSession } from './apps/ChatHistory';
export { CodeEditorView } from './apps/CodeEditor';
export {
  useFilesAPI,
  useTasks,
  useRecentFiles,
  usePinnedFiles,
  FileBrowserApp,
  FileBrowserPanelWrapper,
  FileBrowserWidget,
  TaskRunnerModal,
} from './apps/FileBrowser';
export type { DirEntry, TaskSummary } from './apps/FileBrowser';
export {
  FileViewerView,
  FileViewerProvider,
  FileViewerHeader,
  FileViewerBody,
  FileViewerPanelProvider,
  useFileViewer,
  getFileType,
  getLang,
  getExt,
  getArchiveBaseName,
  ARCHIVE_EXTS,
} from './apps/FileViewer';
export type { FileType } from './apps/FileViewer';
export { TerminalView } from './apps/Terminal';
export type { TerminalViewProps } from './apps/Terminal';
export { DesktopView } from './apps/Desktop';
export type { DesktopViewProps } from './apps/Desktop';
export {
  DashboardListApp,
  DashboardPreview,
  SELECTED_DASHBOARD_KEY,
  CREATING_DASHBOARD_KEY,
  EDITING_DASHBOARD_KEY,
  NEW_DASH_NAME_KEY,
  NEW_DASH_DESC_KEY,
  NEW_DASH_TEMPLATE_KEY,
} from './apps/Dashboards';
export {
  ProjectListApp,
  ProjectPreview,
  SELECTED_PROJECT,
  CREATING_PROJECT,
  EDITING_PROJECT,
  NEW_PROJ_NAME,
  NEW_PROJ_DESC,
  NEW_PROJ_TEMPLATE,
  NEW_PROJ_TYPE,
  NEW_PROJ_HAS_BACKEND,
  NEW_PROJ_HAS_AUTH,
  NEW_PROJ_PREVIEW_LAYOUT,
} from './apps/Projects';
export { createUserAppPanel, createUserAppHeader } from './apps/UserApp';
export { resolveIcon, availableIconNames } from './utils/resolve-icon';

// Workspace
export { WorkspaceView, WorkspaceLayout, WorkspaceProvider, useWorkspace } from './components/Workspace';
export {
  createDefaultLayout,
  splitPanel,
  removePanel,
  setApp,
  updateSizes,
  swapPanels,
  movePanel,
  pruneEmptyPanels,
  countPanels,
  hasAnyApp,
} from './components/Workspace';
export type {
  LayoutNode,
  LayoutGroup,
  LayoutPanel,
  DashboardDefinition,
  DashboardState,
  ProjectType,
  ProjectDefinition,
  AppRegistryMap,
  AppRegistryEntry,
  PanelComponents,
  PanelComponentEntry,
  EphemeralPanels,
  DropPosition,
  HomeRoot,
  DefaultFileSort,
} from './components/Workspace';
