feat(channels): add mattermost adapter and wiring

This commit is contained in:
William Valentin
2026-02-16 12:09:44 -08:00
parent 813a0dc5c5
commit de0c1f41b3
16 changed files with 645 additions and 6 deletions
+11
View File
@@ -449,6 +449,15 @@ const signalSchema = z.object({
send_timeout_ms: z.number().min(1000).max(60000).default(15000),
}).optional();
const mattermostSchema = z.object({
server_url: z.string().url('Mattermost server_url must be a valid URL'),
bot_token: z.string().min(1, 'Mattermost bot_token is required'),
allowed_channel_ids: z.array(z.string()).default([]),
require_mention: z.boolean().default(true),
mention_name: z.string().default('flynn'),
poll_interval_ms: z.number().min(1000).max(60000).default(3000),
}).optional();
const teamsSchema = z.object({
app_id: z.string().min(1, 'Teams app_id is required'),
app_password: z.string().min(1, 'Teams app_password is required'),
@@ -648,6 +657,7 @@ export const configSchema = z.object({
whatsapp: whatsappSchema,
matrix: matrixSchema,
signal: signalSchema,
mattermost: mattermostSchema,
teams: teamsSchema,
google_chat: googleChatSchema,
bluebubbles: bluebubblesSchema,
@@ -696,6 +706,7 @@ export type SlackConfig = z.infer<typeof slackSchema>;
export type WhatsAppConfig = z.infer<typeof whatsappSchema>;
export type MatrixConfig = z.infer<typeof matrixSchema>;
export type SignalConfig = z.infer<typeof signalSchema>;
export type MattermostConfig = z.infer<typeof mattermostSchema>;
export type TeamsConfig = z.infer<typeof teamsSchema>;
export type GoogleChatConfig = z.infer<typeof googleChatSchema>;
export type BlueBubblesConfig = z.infer<typeof bluebubblesSchema>;