fix: enforce strict config validation

This commit is contained in:
Peter Steinberger
2026-01-19 03:38:51 +00:00
parent a9fc2ca0ef
commit d1e9490f95
53 changed files with 1025 additions and 821 deletions

View File

@@ -7,11 +7,13 @@ import {
QueueSchema,
} from "./zod-schema.core.js";
const SessionResetConfigSchema = z.object({
mode: z.union([z.literal("daily"), z.literal("idle")]).optional(),
atHour: z.number().int().min(0).max(23).optional(),
idleMinutes: z.number().int().positive().optional(),
});
const SessionResetConfigSchema = z
.object({
mode: z.union([z.literal("daily"), z.literal("idle")]).optional(),
atHour: z.number().int().min(0).max(23).optional(),
idleMinutes: z.number().int().positive().optional(),
})
.strict();
export const SessionSchema = z
.object({
@@ -30,6 +32,7 @@ export const SessionSchema = z
group: SessionResetConfigSchema.optional(),
thread: SessionResetConfigSchema.optional(),
})
.strict()
.optional(),
store: z.string().optional(),
typingIntervalSeconds: z.number().int().positive().optional(),
@@ -47,28 +50,34 @@ export const SessionSchema = z
default: z.union([z.literal("allow"), z.literal("deny")]).optional(),
rules: z
.array(
z.object({
action: z.union([z.literal("allow"), z.literal("deny")]),
match: z
.object({
channel: z.string().optional(),
chatType: z
.union([z.literal("direct"), z.literal("group"), z.literal("channel")])
.optional(),
keyPrefix: z.string().optional(),
})
.optional(),
}),
z
.object({
action: z.union([z.literal("allow"), z.literal("deny")]),
match: z
.object({
channel: z.string().optional(),
chatType: z
.union([z.literal("direct"), z.literal("group"), z.literal("channel")])
.optional(),
keyPrefix: z.string().optional(),
})
.strict()
.optional(),
})
.strict(),
)
.optional(),
})
.strict()
.optional(),
agentToAgent: z
.object({
maxPingPongTurns: z.number().int().min(0).max(5).optional(),
})
.strict()
.optional(),
})
.strict()
.optional();
export const MessagesSchema = z
@@ -82,6 +91,7 @@ export const MessagesSchema = z
ackReactionScope: z.enum(["group-mentions", "group-all", "direct", "all"]).optional(),
removeAckAfterReply: z.boolean().optional(),
})
.strict()
.optional();
export const CommandsSchema = z
@@ -96,5 +106,6 @@ export const CommandsSchema = z
restart: z.boolean().optional(),
useAccessGroups: z.boolean().optional(),
})
.strict()
.optional()
.default({ native: "auto", nativeSkills: "auto" });