@workspace-platform/ui 0.2.0 → 0.2.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.
package/dist/index.d.mts CHANGED
@@ -381,6 +381,11 @@ interface WsPayloadMessagePinned {
381
381
  action: 'pinned' | 'unpinned';
382
382
  author: string;
383
383
  }
384
+ /** User with an optional avatar photo URL, for member avatar display. */
385
+ interface AvatarUser {
386
+ email: string;
387
+ avatarUrl?: string;
388
+ }
384
389
 
385
390
  interface SyncLink {
386
391
  provider: string;
@@ -670,6 +675,11 @@ declare const AVAILABLE_AGENTS: {
670
675
  declare const ROLE_LABELS: Record<string, string>;
671
676
  declare const STATUS_LABELS: Record<string, string>;
672
677
  declare function getInitials(name: string): string;
678
+ /**
679
+ * Fix mojibake: corrects filenames that were incorrectly decoded as Latin-1
680
+ * when they are actually UTF-8 (common with some multipart upload implementations).
681
+ */
682
+ declare function fixMojibake(str: string): string;
673
683
 
674
684
  interface WorkspaceExportData {
675
685
  workspace: Workspace;
@@ -717,6 +727,37 @@ declare function Modal({ open, onClose, children, zIndexClass, backdropClassName
717
727
 
718
728
  declare function cn(...inputs: ClassValue[]): string;
719
729
 
730
+ interface BadgeProps {
731
+ variant?: 'default' | 'success' | 'warning' | 'danger' | 'info' | 'primary';
732
+ size?: 'xs' | 'sm' | 'md';
733
+ className?: string;
734
+ children: React.ReactNode;
735
+ title?: string;
736
+ }
737
+ declare const Badge: React.FC<BadgeProps>;
738
+
739
+ interface TooltipProps {
740
+ text: string;
741
+ children: React.ReactNode;
742
+ position?: 'top' | 'bottom' | 'left' | 'right';
743
+ className?: string;
744
+ /** Delay before showing (ms). Default 400. */
745
+ delay?: number;
746
+ }
747
+ declare const Tooltip: React.FC<TooltipProps>;
748
+
749
+ interface ConfirmModalProps {
750
+ open: boolean;
751
+ onClose: () => void;
752
+ onConfirm: () => void | Promise<void>;
753
+ title: string;
754
+ description?: React.ReactNode;
755
+ confirmText?: string;
756
+ cancelText?: string;
757
+ danger?: boolean;
758
+ }
759
+ declare const ConfirmModal: React.FC<ConfirmModalProps>;
760
+
720
761
  type AvatarSize = 'xs' | 'sm' | 'md' | 'lg';
721
762
  interface MemberAvatarProps {
722
763
  memberName: string;
@@ -728,26 +769,63 @@ interface MemberAvatarProps {
728
769
  }
729
770
  declare const MemberAvatar: React.FC<MemberAvatarProps>;
730
771
 
731
- interface AvatarUser {
732
- email: string;
733
- avatarUrl?: string;
772
+ interface PaginationProps {
773
+ currentPage: number;
774
+ totalPages: number;
775
+ onPageChange: (page: number) => void;
776
+ /** Show a subtle loading indicator when fetching */
777
+ loading?: boolean;
734
778
  }
735
- interface MembersPanelProps {
736
- members: WorkspaceMember[];
779
+ declare const Pagination: React.FC<PaginationProps>;
780
+
781
+ interface WorkspaceCardProps {
782
+ workspace: Workspace;
783
+ members?: WorkspaceMember[];
737
784
  avatarUsers?: AvatarUser[];
738
- onAddMember?: (payload: {
739
- memberId: string;
740
- memberName: string;
741
- memberType: MemberType;
742
- role?: MemberRole;
785
+ onClick?: () => void;
786
+ currentUserId?: string;
787
+ }
788
+ declare const WorkspaceCard: React.FC<WorkspaceCardProps>;
789
+
790
+ interface WorkspaceRowProps {
791
+ workspace: Workspace;
792
+ members?: WorkspaceMember[];
793
+ avatarUsers?: AvatarUser[];
794
+ onClick?: () => void;
795
+ currentUserId?: string;
796
+ }
797
+ declare const WorkspaceRow: React.FC<WorkspaceRowProps>;
798
+
799
+ interface WorkspaceListProps {
800
+ workspaces: Workspace[];
801
+ total?: number;
802
+ membersMap?: Record<string, WorkspaceMember[]>;
803
+ avatarUsers?: AvatarUser[];
804
+ types?: WorkspaceType[];
805
+ loading?: boolean;
806
+ fetching?: boolean;
807
+ onOpen: (workspaceId: string) => void;
808
+ title?: string;
809
+ showViewToggle?: boolean;
810
+ currentUserId?: string;
811
+ headerActions?: React.ReactNode;
812
+ hideHeader?: boolean;
813
+ hideFilters?: boolean;
814
+ filters?: {
815
+ search: string;
816
+ status: string;
817
+ type: string;
818
+ };
819
+ onFiltersChange?: (filters: {
820
+ search: string;
821
+ status: string;
822
+ type: string;
743
823
  }) => void;
744
- onRemoveMember?: (memberId: string) => void;
745
- onUpdateRole?: (memberId: string, role: MemberRole) => void;
746
- readonly?: boolean;
747
- /** Hide the agents section entirely (e.g. for private workspaces between two users) */
748
- hideAgents?: boolean;
824
+ currentPage?: number;
825
+ totalPages?: number;
826
+ onPageChange?: (page: number) => void;
749
827
  }
750
- declare const MembersPanel: React.FC<MembersPanelProps>;
828
+ declare const WorkspaceList: React.FC<WorkspaceListProps>;
751
829
 
752
830
  interface CreateWorkspaceModalProps {
753
831
  open: boolean;
@@ -763,6 +841,36 @@ interface CreatePrivateWorkspaceModalProps {
763
841
  }
764
842
  declare const CreatePrivateWorkspaceModal: React.FC<CreatePrivateWorkspaceModalProps>;
765
843
 
844
+ interface ContextPanelProps {
845
+ workspace: Workspace;
846
+ types?: WorkspaceType[];
847
+ onUpdateContext?: (updates: Partial<{
848
+ name: string;
849
+ type: string;
850
+ scope: string;
851
+ entitiesWithSecrets: EntityWithSecret[];
852
+ }>) => void;
853
+ readonly?: boolean;
854
+ }
855
+ declare const ContextPanel: React.FC<ContextPanelProps>;
856
+
857
+ interface MembersPanelProps {
858
+ members: WorkspaceMember[];
859
+ avatarUsers?: AvatarUser[];
860
+ onAddMember?: (payload: {
861
+ memberId: string;
862
+ memberName: string;
863
+ memberType: MemberType;
864
+ role?: MemberRole;
865
+ }) => void;
866
+ onRemoveMember?: (memberId: string) => void;
867
+ onUpdateRole?: (memberId: string, role: MemberRole) => void;
868
+ readonly?: boolean;
869
+ /** Hide the agents section entirely (e.g. for private workspaces between two users) */
870
+ hideAgents?: boolean;
871
+ }
872
+ declare const MembersPanel: React.FC<MembersPanelProps>;
873
+
766
874
  interface SyncPanelProps {
767
875
  workspaceId: string;
768
876
  syncWithSlack?: boolean;
@@ -774,13 +882,81 @@ interface SyncPanelProps {
774
882
  }
775
883
  declare const SyncPanel: React.FC<SyncPanelProps>;
776
884
 
777
- interface PaginationProps {
778
- currentPage: number;
779
- totalPages: number;
780
- onPageChange: (page: number) => void;
781
- /** Show a subtle loading indicator when fetching */
782
- loading?: boolean;
885
+ interface MessageFeedProps {
886
+ messages: (WorkspaceMessage | MessageWithArtefacts)[];
887
+ members?: WorkspaceMember[];
888
+ currentUserId?: string;
889
+ workspaceId?: string;
890
+ avatarUsers?: AvatarUser[];
891
+ isTyping?: boolean;
892
+ typingText?: string;
893
+ hasMore?: boolean;
894
+ loadingMore?: boolean;
895
+ onLoadMore?: () => void;
896
+ onArtefactDeleted?: (artefactId: string) => void;
897
+ onReply?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
898
+ onEditMessage?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
899
+ onDeleteMessage?: (messageId: string) => void;
900
+ onToggleReaction?: (messageId: string, reaction: string) => void;
901
+ onTogglePin?: (messageId: string) => void;
902
+ isOwner?: boolean;
903
+ }
904
+ declare const MessageFeed: React.FC<MessageFeedProps>;
905
+
906
+ type MessageRole = 'user' | 'assistant' | 'participant';
907
+ interface MessageItemProps {
908
+ message: WorkspaceMessage | MessageWithArtefacts;
909
+ role: MessageRole;
910
+ members?: WorkspaceMember[];
911
+ workspaceId?: string;
912
+ currentUserId?: string;
913
+ isOwner?: boolean;
914
+ avatarUsers?: AvatarUser[];
915
+ onArtefactDeleted?: (artefactId: string) => void;
916
+ onReply?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
917
+ onEditMessage?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
918
+ onDeleteMessage?: (messageId: string) => void;
919
+ onToggleReaction?: (messageId: string, reaction: string) => void;
920
+ onTogglePin?: (messageId: string) => void;
921
+ }
922
+ declare const MessageItem: React.FC<MessageItemProps>;
923
+
924
+ interface MessageFilters {
925
+ concernsMe: boolean;
926
+ members: string[];
783
927
  }
784
- declare const Pagination: React.FC<PaginationProps>;
928
+ declare const EMPTY_FILTERS: MessageFilters;
929
+ interface MessageFilterDialogProps {
930
+ open: boolean;
931
+ onClose: () => void;
932
+ onApply: (filters: MessageFilters) => Promise<void>;
933
+ currentFilters: MessageFilters;
934
+ members: WorkspaceMember[];
935
+ avatarUsers?: AvatarUser[];
936
+ hideAgents?: boolean;
937
+ }
938
+ declare const MessageFilterDialog: React.FC<MessageFilterDialogProps>;
939
+
940
+ interface ArtefactViewerDialogProps {
941
+ artefact: WorkspaceArtefact;
942
+ onClose: () => void;
943
+ }
944
+ declare function ArtefactViewerDialog({ artefact, onClose }: ArtefactViewerDialogProps): React.JSX.Element;
945
+
946
+ declare const ChartRenderer: React.FC<{
947
+ chartConfig: any;
948
+ }>;
949
+
950
+ declare const TableRenderer: React.FC<{
951
+ tableConfig: any;
952
+ }>;
953
+
954
+ /**
955
+ * Custom Streamdown components for workspace messages.
956
+ * Intercepts chart and tabledata fenced blocks.
957
+ */
958
+ declare const workspaceStreamdownComponents: {
959
+ pre: ({ children }: any) => any;
960
+ };
785
961
 
786
- export { AVAILABLE_AGENTS, type ActivityEntry, type ActivityIcon, type AgentDeleteInfo, type ArtefactType, type AvatarUser, CATEGORY_STYLES, type ChangeLog, type ChangeLogData, CreatePrivateWorkspaceModal, CreateWorkspaceModal, type CreateWorkspacePayload, type EntityCategory, type EntityWithSecret, FILTER_PILLS, type FileRecord, type FilterPill, ICON_COLOR, IGNORED_FIELDS, type LatestSummaryResponse, MEMBER_ROLE_LABELS, MemberAvatar, type MemberAvatarProps, type MemberRole, type MemberType, MembersPanel, type MessageWithArtefacts, Modal, type ModalProps, type ModalSize, type PaginatedResponse, Pagination, ROLE_LABELS, type ReplyMessage, STATUS_LABELS, type SendMessagePayload, type SyncLink, SyncPanel, type SyncProviderInfo, type SyncStatus, type ToggleReactionResponse, type UpdateMessagePayload, type UserSearchResult, WORKSPACE_FIELD_LABELS, WORKSPACE_STATUS_LABELS, type WebhookSubscription, type Workspace, type WorkspaceAgent, type WorkspaceApis, type WorkspaceArtefact, type WorkspaceClient, type WorkspaceConfig, type WorkspaceContextValue, WorkspaceEvent, type WorkspaceExportData, type WorkspaceListFilters, type WorkspaceListState, type WorkspaceMember, type WorkspaceMessage, type WorkspaceMessageReaction, type WorkspaceMessageSender, WorkspaceProvider, type WorkspaceSocketManager, type WorkspaceStatus, type WorkspaceSummary, type WorkspaceTab, type WorkspaceType, type WsPayloadArtefactCreated, type WsPayloadMemberAdded, type WsPayloadMemberRemoved, type WsPayloadMemberUpdated, type WsPayloadMessageCreated, type WsPayloadMessageDeleted, type WsPayloadMessagePinned, type WsPayloadMessageUpdated, type WsPayloadReactionCreated, type WsPayloadReactionDeleted, type WsPayloadTyping, type WsPayloadWorkspaceAdded, type WsPayloadWorkspaceCreated, type WsPayloadWorkspaceRemoved, type WsPayloadWorkspaceStatusChanged, type WsPayloadWorkspaceUpdated, cn, createWorkspaceApis, createWorkspaceClient, createWorkspaceListStore, createWorkspaceSocket, formatWorkspaceExport, getInitials, useWorkspaceApi, useWorkspaceContext };
962
+ export { AVAILABLE_AGENTS, type ActivityEntry, type ActivityIcon, type AgentDeleteInfo, type ArtefactType, ArtefactViewerDialog, type AvatarUser, Badge, type BadgeProps, CATEGORY_STYLES, type ChangeLog, type ChangeLogData, ChartRenderer, ConfirmModal, type ConfirmModalProps, ContextPanel, type ContextPanelProps, CreatePrivateWorkspaceModal, CreateWorkspaceModal, type CreateWorkspacePayload, EMPTY_FILTERS, type EntityCategory, type EntityWithSecret, FILTER_PILLS, type FileRecord, type FilterPill, ICON_COLOR, IGNORED_FIELDS, type LatestSummaryResponse, MEMBER_ROLE_LABELS, MemberAvatar, type MemberAvatarProps, type MemberRole, type MemberType, MembersPanel, MessageFeed, type MessageFeedProps, MessageFilterDialog, type MessageFilterDialogProps, type MessageFilters, MessageItem, type MessageItemProps, type MessageRole, type MessageWithArtefacts, Modal, type ModalProps, type ModalSize, type PaginatedResponse, Pagination, ROLE_LABELS, type ReplyMessage, STATUS_LABELS, type SendMessagePayload, type SyncLink, SyncPanel, type SyncProviderInfo, type SyncStatus, TableRenderer, type ToggleReactionResponse, Tooltip, type TooltipProps, type UpdateMessagePayload, type UserSearchResult, WORKSPACE_FIELD_LABELS, WORKSPACE_STATUS_LABELS, type WebhookSubscription, type Workspace, type WorkspaceAgent, type WorkspaceApis, type WorkspaceArtefact, WorkspaceCard, type WorkspaceCardProps, type WorkspaceClient, type WorkspaceConfig, type WorkspaceContextValue, WorkspaceEvent, type WorkspaceExportData, WorkspaceList, type WorkspaceListFilters, type WorkspaceListProps, type WorkspaceListState, type WorkspaceMember, type WorkspaceMessage, type WorkspaceMessageReaction, type WorkspaceMessageSender, WorkspaceProvider, WorkspaceRow, type WorkspaceRowProps, type WorkspaceSocketManager, type WorkspaceStatus, type WorkspaceSummary, type WorkspaceTab, type WorkspaceType, type WsPayloadArtefactCreated, type WsPayloadMemberAdded, type WsPayloadMemberRemoved, type WsPayloadMemberUpdated, type WsPayloadMessageCreated, type WsPayloadMessageDeleted, type WsPayloadMessagePinned, type WsPayloadMessageUpdated, type WsPayloadReactionCreated, type WsPayloadReactionDeleted, type WsPayloadTyping, type WsPayloadWorkspaceAdded, type WsPayloadWorkspaceCreated, type WsPayloadWorkspaceRemoved, type WsPayloadWorkspaceStatusChanged, type WsPayloadWorkspaceUpdated, cn, createWorkspaceApis, createWorkspaceClient, createWorkspaceListStore, createWorkspaceSocket, fixMojibake, formatWorkspaceExport, getInitials, useWorkspaceApi, useWorkspaceContext, workspaceStreamdownComponents };
package/dist/index.d.ts CHANGED
@@ -381,6 +381,11 @@ interface WsPayloadMessagePinned {
381
381
  action: 'pinned' | 'unpinned';
382
382
  author: string;
383
383
  }
384
+ /** User with an optional avatar photo URL, for member avatar display. */
385
+ interface AvatarUser {
386
+ email: string;
387
+ avatarUrl?: string;
388
+ }
384
389
 
385
390
  interface SyncLink {
386
391
  provider: string;
@@ -670,6 +675,11 @@ declare const AVAILABLE_AGENTS: {
670
675
  declare const ROLE_LABELS: Record<string, string>;
671
676
  declare const STATUS_LABELS: Record<string, string>;
672
677
  declare function getInitials(name: string): string;
678
+ /**
679
+ * Fix mojibake: corrects filenames that were incorrectly decoded as Latin-1
680
+ * when they are actually UTF-8 (common with some multipart upload implementations).
681
+ */
682
+ declare function fixMojibake(str: string): string;
673
683
 
674
684
  interface WorkspaceExportData {
675
685
  workspace: Workspace;
@@ -717,6 +727,37 @@ declare function Modal({ open, onClose, children, zIndexClass, backdropClassName
717
727
 
718
728
  declare function cn(...inputs: ClassValue[]): string;
719
729
 
730
+ interface BadgeProps {
731
+ variant?: 'default' | 'success' | 'warning' | 'danger' | 'info' | 'primary';
732
+ size?: 'xs' | 'sm' | 'md';
733
+ className?: string;
734
+ children: React.ReactNode;
735
+ title?: string;
736
+ }
737
+ declare const Badge: React.FC<BadgeProps>;
738
+
739
+ interface TooltipProps {
740
+ text: string;
741
+ children: React.ReactNode;
742
+ position?: 'top' | 'bottom' | 'left' | 'right';
743
+ className?: string;
744
+ /** Delay before showing (ms). Default 400. */
745
+ delay?: number;
746
+ }
747
+ declare const Tooltip: React.FC<TooltipProps>;
748
+
749
+ interface ConfirmModalProps {
750
+ open: boolean;
751
+ onClose: () => void;
752
+ onConfirm: () => void | Promise<void>;
753
+ title: string;
754
+ description?: React.ReactNode;
755
+ confirmText?: string;
756
+ cancelText?: string;
757
+ danger?: boolean;
758
+ }
759
+ declare const ConfirmModal: React.FC<ConfirmModalProps>;
760
+
720
761
  type AvatarSize = 'xs' | 'sm' | 'md' | 'lg';
721
762
  interface MemberAvatarProps {
722
763
  memberName: string;
@@ -728,26 +769,63 @@ interface MemberAvatarProps {
728
769
  }
729
770
  declare const MemberAvatar: React.FC<MemberAvatarProps>;
730
771
 
731
- interface AvatarUser {
732
- email: string;
733
- avatarUrl?: string;
772
+ interface PaginationProps {
773
+ currentPage: number;
774
+ totalPages: number;
775
+ onPageChange: (page: number) => void;
776
+ /** Show a subtle loading indicator when fetching */
777
+ loading?: boolean;
734
778
  }
735
- interface MembersPanelProps {
736
- members: WorkspaceMember[];
779
+ declare const Pagination: React.FC<PaginationProps>;
780
+
781
+ interface WorkspaceCardProps {
782
+ workspace: Workspace;
783
+ members?: WorkspaceMember[];
737
784
  avatarUsers?: AvatarUser[];
738
- onAddMember?: (payload: {
739
- memberId: string;
740
- memberName: string;
741
- memberType: MemberType;
742
- role?: MemberRole;
785
+ onClick?: () => void;
786
+ currentUserId?: string;
787
+ }
788
+ declare const WorkspaceCard: React.FC<WorkspaceCardProps>;
789
+
790
+ interface WorkspaceRowProps {
791
+ workspace: Workspace;
792
+ members?: WorkspaceMember[];
793
+ avatarUsers?: AvatarUser[];
794
+ onClick?: () => void;
795
+ currentUserId?: string;
796
+ }
797
+ declare const WorkspaceRow: React.FC<WorkspaceRowProps>;
798
+
799
+ interface WorkspaceListProps {
800
+ workspaces: Workspace[];
801
+ total?: number;
802
+ membersMap?: Record<string, WorkspaceMember[]>;
803
+ avatarUsers?: AvatarUser[];
804
+ types?: WorkspaceType[];
805
+ loading?: boolean;
806
+ fetching?: boolean;
807
+ onOpen: (workspaceId: string) => void;
808
+ title?: string;
809
+ showViewToggle?: boolean;
810
+ currentUserId?: string;
811
+ headerActions?: React.ReactNode;
812
+ hideHeader?: boolean;
813
+ hideFilters?: boolean;
814
+ filters?: {
815
+ search: string;
816
+ status: string;
817
+ type: string;
818
+ };
819
+ onFiltersChange?: (filters: {
820
+ search: string;
821
+ status: string;
822
+ type: string;
743
823
  }) => void;
744
- onRemoveMember?: (memberId: string) => void;
745
- onUpdateRole?: (memberId: string, role: MemberRole) => void;
746
- readonly?: boolean;
747
- /** Hide the agents section entirely (e.g. for private workspaces between two users) */
748
- hideAgents?: boolean;
824
+ currentPage?: number;
825
+ totalPages?: number;
826
+ onPageChange?: (page: number) => void;
749
827
  }
750
- declare const MembersPanel: React.FC<MembersPanelProps>;
828
+ declare const WorkspaceList: React.FC<WorkspaceListProps>;
751
829
 
752
830
  interface CreateWorkspaceModalProps {
753
831
  open: boolean;
@@ -763,6 +841,36 @@ interface CreatePrivateWorkspaceModalProps {
763
841
  }
764
842
  declare const CreatePrivateWorkspaceModal: React.FC<CreatePrivateWorkspaceModalProps>;
765
843
 
844
+ interface ContextPanelProps {
845
+ workspace: Workspace;
846
+ types?: WorkspaceType[];
847
+ onUpdateContext?: (updates: Partial<{
848
+ name: string;
849
+ type: string;
850
+ scope: string;
851
+ entitiesWithSecrets: EntityWithSecret[];
852
+ }>) => void;
853
+ readonly?: boolean;
854
+ }
855
+ declare const ContextPanel: React.FC<ContextPanelProps>;
856
+
857
+ interface MembersPanelProps {
858
+ members: WorkspaceMember[];
859
+ avatarUsers?: AvatarUser[];
860
+ onAddMember?: (payload: {
861
+ memberId: string;
862
+ memberName: string;
863
+ memberType: MemberType;
864
+ role?: MemberRole;
865
+ }) => void;
866
+ onRemoveMember?: (memberId: string) => void;
867
+ onUpdateRole?: (memberId: string, role: MemberRole) => void;
868
+ readonly?: boolean;
869
+ /** Hide the agents section entirely (e.g. for private workspaces between two users) */
870
+ hideAgents?: boolean;
871
+ }
872
+ declare const MembersPanel: React.FC<MembersPanelProps>;
873
+
766
874
  interface SyncPanelProps {
767
875
  workspaceId: string;
768
876
  syncWithSlack?: boolean;
@@ -774,13 +882,81 @@ interface SyncPanelProps {
774
882
  }
775
883
  declare const SyncPanel: React.FC<SyncPanelProps>;
776
884
 
777
- interface PaginationProps {
778
- currentPage: number;
779
- totalPages: number;
780
- onPageChange: (page: number) => void;
781
- /** Show a subtle loading indicator when fetching */
782
- loading?: boolean;
885
+ interface MessageFeedProps {
886
+ messages: (WorkspaceMessage | MessageWithArtefacts)[];
887
+ members?: WorkspaceMember[];
888
+ currentUserId?: string;
889
+ workspaceId?: string;
890
+ avatarUsers?: AvatarUser[];
891
+ isTyping?: boolean;
892
+ typingText?: string;
893
+ hasMore?: boolean;
894
+ loadingMore?: boolean;
895
+ onLoadMore?: () => void;
896
+ onArtefactDeleted?: (artefactId: string) => void;
897
+ onReply?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
898
+ onEditMessage?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
899
+ onDeleteMessage?: (messageId: string) => void;
900
+ onToggleReaction?: (messageId: string, reaction: string) => void;
901
+ onTogglePin?: (messageId: string) => void;
902
+ isOwner?: boolean;
903
+ }
904
+ declare const MessageFeed: React.FC<MessageFeedProps>;
905
+
906
+ type MessageRole = 'user' | 'assistant' | 'participant';
907
+ interface MessageItemProps {
908
+ message: WorkspaceMessage | MessageWithArtefacts;
909
+ role: MessageRole;
910
+ members?: WorkspaceMember[];
911
+ workspaceId?: string;
912
+ currentUserId?: string;
913
+ isOwner?: boolean;
914
+ avatarUsers?: AvatarUser[];
915
+ onArtefactDeleted?: (artefactId: string) => void;
916
+ onReply?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
917
+ onEditMessage?: (message: WorkspaceMessage | MessageWithArtefacts) => void;
918
+ onDeleteMessage?: (messageId: string) => void;
919
+ onToggleReaction?: (messageId: string, reaction: string) => void;
920
+ onTogglePin?: (messageId: string) => void;
921
+ }
922
+ declare const MessageItem: React.FC<MessageItemProps>;
923
+
924
+ interface MessageFilters {
925
+ concernsMe: boolean;
926
+ members: string[];
783
927
  }
784
- declare const Pagination: React.FC<PaginationProps>;
928
+ declare const EMPTY_FILTERS: MessageFilters;
929
+ interface MessageFilterDialogProps {
930
+ open: boolean;
931
+ onClose: () => void;
932
+ onApply: (filters: MessageFilters) => Promise<void>;
933
+ currentFilters: MessageFilters;
934
+ members: WorkspaceMember[];
935
+ avatarUsers?: AvatarUser[];
936
+ hideAgents?: boolean;
937
+ }
938
+ declare const MessageFilterDialog: React.FC<MessageFilterDialogProps>;
939
+
940
+ interface ArtefactViewerDialogProps {
941
+ artefact: WorkspaceArtefact;
942
+ onClose: () => void;
943
+ }
944
+ declare function ArtefactViewerDialog({ artefact, onClose }: ArtefactViewerDialogProps): React.JSX.Element;
945
+
946
+ declare const ChartRenderer: React.FC<{
947
+ chartConfig: any;
948
+ }>;
949
+
950
+ declare const TableRenderer: React.FC<{
951
+ tableConfig: any;
952
+ }>;
953
+
954
+ /**
955
+ * Custom Streamdown components for workspace messages.
956
+ * Intercepts chart and tabledata fenced blocks.
957
+ */
958
+ declare const workspaceStreamdownComponents: {
959
+ pre: ({ children }: any) => any;
960
+ };
785
961
 
786
- export { AVAILABLE_AGENTS, type ActivityEntry, type ActivityIcon, type AgentDeleteInfo, type ArtefactType, type AvatarUser, CATEGORY_STYLES, type ChangeLog, type ChangeLogData, CreatePrivateWorkspaceModal, CreateWorkspaceModal, type CreateWorkspacePayload, type EntityCategory, type EntityWithSecret, FILTER_PILLS, type FileRecord, type FilterPill, ICON_COLOR, IGNORED_FIELDS, type LatestSummaryResponse, MEMBER_ROLE_LABELS, MemberAvatar, type MemberAvatarProps, type MemberRole, type MemberType, MembersPanel, type MessageWithArtefacts, Modal, type ModalProps, type ModalSize, type PaginatedResponse, Pagination, ROLE_LABELS, type ReplyMessage, STATUS_LABELS, type SendMessagePayload, type SyncLink, SyncPanel, type SyncProviderInfo, type SyncStatus, type ToggleReactionResponse, type UpdateMessagePayload, type UserSearchResult, WORKSPACE_FIELD_LABELS, WORKSPACE_STATUS_LABELS, type WebhookSubscription, type Workspace, type WorkspaceAgent, type WorkspaceApis, type WorkspaceArtefact, type WorkspaceClient, type WorkspaceConfig, type WorkspaceContextValue, WorkspaceEvent, type WorkspaceExportData, type WorkspaceListFilters, type WorkspaceListState, type WorkspaceMember, type WorkspaceMessage, type WorkspaceMessageReaction, type WorkspaceMessageSender, WorkspaceProvider, type WorkspaceSocketManager, type WorkspaceStatus, type WorkspaceSummary, type WorkspaceTab, type WorkspaceType, type WsPayloadArtefactCreated, type WsPayloadMemberAdded, type WsPayloadMemberRemoved, type WsPayloadMemberUpdated, type WsPayloadMessageCreated, type WsPayloadMessageDeleted, type WsPayloadMessagePinned, type WsPayloadMessageUpdated, type WsPayloadReactionCreated, type WsPayloadReactionDeleted, type WsPayloadTyping, type WsPayloadWorkspaceAdded, type WsPayloadWorkspaceCreated, type WsPayloadWorkspaceRemoved, type WsPayloadWorkspaceStatusChanged, type WsPayloadWorkspaceUpdated, cn, createWorkspaceApis, createWorkspaceClient, createWorkspaceListStore, createWorkspaceSocket, formatWorkspaceExport, getInitials, useWorkspaceApi, useWorkspaceContext };
962
+ export { AVAILABLE_AGENTS, type ActivityEntry, type ActivityIcon, type AgentDeleteInfo, type ArtefactType, ArtefactViewerDialog, type AvatarUser, Badge, type BadgeProps, CATEGORY_STYLES, type ChangeLog, type ChangeLogData, ChartRenderer, ConfirmModal, type ConfirmModalProps, ContextPanel, type ContextPanelProps, CreatePrivateWorkspaceModal, CreateWorkspaceModal, type CreateWorkspacePayload, EMPTY_FILTERS, type EntityCategory, type EntityWithSecret, FILTER_PILLS, type FileRecord, type FilterPill, ICON_COLOR, IGNORED_FIELDS, type LatestSummaryResponse, MEMBER_ROLE_LABELS, MemberAvatar, type MemberAvatarProps, type MemberRole, type MemberType, MembersPanel, MessageFeed, type MessageFeedProps, MessageFilterDialog, type MessageFilterDialogProps, type MessageFilters, MessageItem, type MessageItemProps, type MessageRole, type MessageWithArtefacts, Modal, type ModalProps, type ModalSize, type PaginatedResponse, Pagination, ROLE_LABELS, type ReplyMessage, STATUS_LABELS, type SendMessagePayload, type SyncLink, SyncPanel, type SyncProviderInfo, type SyncStatus, TableRenderer, type ToggleReactionResponse, Tooltip, type TooltipProps, type UpdateMessagePayload, type UserSearchResult, WORKSPACE_FIELD_LABELS, WORKSPACE_STATUS_LABELS, type WebhookSubscription, type Workspace, type WorkspaceAgent, type WorkspaceApis, type WorkspaceArtefact, WorkspaceCard, type WorkspaceCardProps, type WorkspaceClient, type WorkspaceConfig, type WorkspaceContextValue, WorkspaceEvent, type WorkspaceExportData, WorkspaceList, type WorkspaceListFilters, type WorkspaceListProps, type WorkspaceListState, type WorkspaceMember, type WorkspaceMessage, type WorkspaceMessageReaction, type WorkspaceMessageSender, WorkspaceProvider, WorkspaceRow, type WorkspaceRowProps, type WorkspaceSocketManager, type WorkspaceStatus, type WorkspaceSummary, type WorkspaceTab, type WorkspaceType, type WsPayloadArtefactCreated, type WsPayloadMemberAdded, type WsPayloadMemberRemoved, type WsPayloadMemberUpdated, type WsPayloadMessageCreated, type WsPayloadMessageDeleted, type WsPayloadMessagePinned, type WsPayloadMessageUpdated, type WsPayloadReactionCreated, type WsPayloadReactionDeleted, type WsPayloadTyping, type WsPayloadWorkspaceAdded, type WsPayloadWorkspaceCreated, type WsPayloadWorkspaceRemoved, type WsPayloadWorkspaceStatusChanged, type WsPayloadWorkspaceUpdated, cn, createWorkspaceApis, createWorkspaceClient, createWorkspaceListStore, createWorkspaceSocket, fixMojibake, formatWorkspaceExport, getInitials, useWorkspaceApi, useWorkspaceContext, workspaceStreamdownComponents };