MSAgent-Chat/protocol/src/protocol.ts
2024-07-29 15:19:04 -04:00

134 lines
2.6 KiB
TypeScript

export * from './admin.js';
export enum MSAgentProtocolMessageType {
// Client-to-server
KeepAlive = 'nop',
Join = 'join',
Talk = 'talk',
PlayAnimation = 'anim',
SendImage = 'img',
Admin = 'admin',
// Server-to-client
Init = 'init',
AddUser = 'adduser',
RemoveUser = 'remuser',
Chat = 'chat',
Promote = 'promote',
Error = 'error'
}
export interface MSAgentProtocolMessage {
op: MSAgentProtocolMessageType;
}
export interface AgentAnimationConfig {
join: string[];
chat: string[];
idle: string[];
rest: string[];
leave: string[];
}
// Client-to-server
export interface MSAgentJoinMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Join;
data: {
username: string;
agent: string;
};
}
export interface MSAgentTalkMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Talk;
data: {
msg: string;
};
}
export interface MSAgentPlayAnimationMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.PlayAnimation;
data: {
anim: string;
};
}
export interface MSAgentSendImageMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.SendImage;
data: {
id: string;
};
}
// Server-to-client
export interface MSAgentInitMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Init;
data: {
username: string;
agent: string;
charlimit: number;
users: {
username: string;
agent: string;
admin: boolean;
animations: AgentAnimationConfig;
}[];
};
}
export interface MSAgentAddUserMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.AddUser;
data: {
username: string;
agent: string;
animations: AgentAnimationConfig;
};
}
export interface MSAgentRemoveUserMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.RemoveUser;
data: {
username: string;
};
}
export interface MSAgentChatMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Chat;
data: {
username: string;
message: string;
audio?: string | undefined;
};
}
export interface MSAgentAnimationMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.PlayAnimation;
data: {
username: string;
anim: string;
};
}
export interface MSAgentImageMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.SendImage;
data: {
username: string;
id: string;
};
}
export interface MSAgentPromoteMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Promote;
data: {
username: string;
};
}
export interface MSAgentErrorMessage extends MSAgentProtocolMessage {
op: MSAgentProtocolMessageType.Error;
data: {
error: string;
};
}