87 lines
2.7 KiB
TypeScript
87 lines
2.7 KiB
TypeScript
import { z } from "zod";
|
|
|
|
import {
|
|
GroupChatSchema,
|
|
InboundDebounceSchema,
|
|
NativeCommandsSettingSchema,
|
|
QueueSchema,
|
|
} from "./zod-schema.core.js";
|
|
|
|
export const SessionSchema = z
|
|
.object({
|
|
scope: z.union([z.literal("per-sender"), z.literal("global")]).optional(),
|
|
dmScope: z
|
|
.union([z.literal("main"), z.literal("per-peer"), z.literal("per-channel-peer")])
|
|
.optional(),
|
|
identityLinks: z.record(z.string(), z.array(z.string())).optional(),
|
|
resetTriggers: z.array(z.string()).optional(),
|
|
idleMinutes: z.number().int().positive().optional(),
|
|
heartbeatIdleMinutes: z.number().int().positive().optional(),
|
|
store: z.string().optional(),
|
|
typingIntervalSeconds: z.number().int().positive().optional(),
|
|
typingMode: z
|
|
.union([
|
|
z.literal("never"),
|
|
z.literal("instant"),
|
|
z.literal("thinking"),
|
|
z.literal("message"),
|
|
])
|
|
.optional(),
|
|
mainKey: z.string().optional(),
|
|
sendPolicy: z
|
|
.object({
|
|
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(),
|
|
}),
|
|
)
|
|
.optional(),
|
|
})
|
|
.optional(),
|
|
agentToAgent: z
|
|
.object({
|
|
maxPingPongTurns: z.number().int().min(0).max(5).optional(),
|
|
})
|
|
.optional(),
|
|
})
|
|
.optional();
|
|
|
|
export const MessagesSchema = z
|
|
.object({
|
|
messagePrefix: z.string().optional(),
|
|
responsePrefix: z.string().optional(),
|
|
groupChat: GroupChatSchema,
|
|
queue: QueueSchema,
|
|
inbound: InboundDebounceSchema,
|
|
ackReaction: z.string().optional(),
|
|
ackReactionScope: z.enum(["group-mentions", "group-all", "direct", "all"]).optional(),
|
|
removeAckAfterReply: z.boolean().optional(),
|
|
})
|
|
.optional();
|
|
|
|
export const CommandsSchema = z
|
|
.object({
|
|
native: NativeCommandsSettingSchema.optional().default("auto"),
|
|
nativeSkills: NativeCommandsSettingSchema.optional().default("auto"),
|
|
text: z.boolean().optional(),
|
|
bash: z.boolean().optional(),
|
|
bashForegroundMs: z.number().int().min(0).max(30_000).optional(),
|
|
config: z.boolean().optional(),
|
|
debug: z.boolean().optional(),
|
|
restart: z.boolean().optional(),
|
|
useAccessGroups: z.boolean().optional(),
|
|
})
|
|
.optional()
|
|
.default({ native: "auto", nativeSkills: "auto" });
|