feat: Security

This commit is contained in:
2026-06-05 18:34:01 +02:00
parent ee293d7daf
commit 45675192a5
134 changed files with 4128 additions and 446 deletions

View File

@@ -1,4 +1,5 @@
import type { Message, Reaction } from './message.models';
import type { MessageRevision } from './message-revision.models';
import type { UserRole, RoomMember } from './user.models';
import type {
Room,
@@ -30,6 +31,8 @@ export interface ChatInventoryItem {
ts: number;
rc: number;
ac?: number;
revision?: number;
headHash?: string;
}
// Every field that appears on any event is kept optional here so that
@@ -124,6 +127,11 @@ export interface MessageDeletedEvent extends ChatEventBase {
messageId: string;
}
export interface MessageRevisionEvent extends ChatEventBase {
type: 'message-revision';
revision: MessageRevision;
}
export interface ReactionAddedEvent extends ChatEventBase {
type: 'reaction' | 'reaction-added';
messageId: string;
@@ -463,6 +471,7 @@ export type ChatEvent =
| ChatMessageEvent
| MessageEditedEvent
| MessageDeletedEvent
| MessageRevisionEvent
| ReactionAddedEvent
| ReactionRemovedEvent
| FileAnnounceChatEvent

View File

@@ -2,6 +2,7 @@ export * from './user.models';
export * from './room.models';
export * from './access-control.models';
export * from './message.models';
export * from './message-revision.models';
export * from './moderation.models';
export * from './voice-state.models';
export * from './game-activity.models';

View File

@@ -0,0 +1,27 @@
export type MessageRevisionType =
| 'create'
| 'author-edit'
| 'author-delete'
| 'moderate-edit'
| 'moderate-delete'
| 'plugin-edit'
| 'plugin-delete';
export interface MessageRevision {
messageId: string;
revision: number;
prevRevisionHash: string;
headHash: string;
type: MessageRevisionType;
actorId: string;
senderId: string;
roomId: string;
channelId?: string;
senderName?: string;
content?: string;
editedAt: number;
isDeleted: boolean;
replyToId?: string;
pluginId?: string;
signature?: string;
}

View File

@@ -20,6 +20,8 @@ export interface Message {
kind?: 'user' | 'system';
systemEvent?: 'call-started';
editedAt?: number;
revision?: number;
headHash?: string;
reactions: Reaction[];
isDeleted: boolean;
replyToId?: string;

View File

@@ -150,6 +150,7 @@ export interface TojuPluginManifest {
bugs?: string;
bundle?: {
entrypoint?: string;
integrity?: string;
url: string;
};
capabilities?: PluginCapabilityId[];