feat(channels): add signal-cli channel adapter

This commit is contained in:
William Valentin
2026-02-16 01:54:54 -08:00
parent 113751ef1b
commit 0269c6032d
11 changed files with 555 additions and 2 deletions
+13
View File
@@ -400,6 +400,17 @@ const matrixSchema = z.object({
display_name: z.string().optional(),
}).optional();
const signalSchema = z.object({
account: z.string().min(1, 'Signal account is required'),
signal_cli_path: z.string().default('signal-cli'),
allowed_numbers: z.array(z.string()).default([]),
allowed_group_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(5000),
send_timeout_ms: z.number().min(1000).max(60000).default(15000),
}).optional();
const browserSchema = z.object({
enabled: z.boolean().default(false),
executable_path: z.string().optional(),
@@ -566,6 +577,7 @@ export const configSchema = z.object({
slack: slackSchema,
whatsapp: whatsappSchema,
matrix: matrixSchema,
signal: signalSchema,
server: serverSchema.default({}),
models: modelsSchema,
backends: backendsSchema.default({}),
@@ -610,6 +622,7 @@ export type DiscordConfig = z.infer<typeof discordSchema>;
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 RetryPolicyConfig = z.infer<typeof retrySchema>;
export type ContextLevel = z.infer<typeof contextLevelSchema>;
export type PromptConfig = z.infer<typeof promptSchema>;