mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 13:11:40 +00:00
* fix(qqbot): align speech schema and setup validation * fix(qqbot): preserve use-env setup flow * fix(qqbot): reject use-env on named accounts * fix(qqbot): restore default account schema support
69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
import {
|
|
AllowFromListSchema,
|
|
buildChannelConfigSchema,
|
|
} from "openclaw/plugin-sdk/channel-config-schema";
|
|
import { buildSecretInputSchema } from "openclaw/plugin-sdk/secret-input";
|
|
import { z } from "zod";
|
|
|
|
const AudioFormatPolicySchema = z
|
|
.object({
|
|
sttDirectFormats: z.array(z.string()).optional(),
|
|
uploadDirectFormats: z.array(z.string()).optional(),
|
|
transcodeEnabled: z.boolean().optional(),
|
|
})
|
|
.optional();
|
|
|
|
const QQBotSpeechQueryParamsSchema = z.record(z.string(), z.string()).optional();
|
|
|
|
const QQBotTtsSchema = z
|
|
.object({
|
|
enabled: z.boolean().optional(),
|
|
provider: z.string().optional(),
|
|
baseUrl: z.string().optional(),
|
|
apiKey: z.string().optional(),
|
|
model: z.string().optional(),
|
|
voice: z.string().optional(),
|
|
authStyle: z.enum(["bearer", "api-key"]).optional(),
|
|
queryParams: QQBotSpeechQueryParamsSchema,
|
|
speed: z.number().optional(),
|
|
})
|
|
.strict()
|
|
.optional();
|
|
|
|
const QQBotSttSchema = z
|
|
.object({
|
|
enabled: z.boolean().optional(),
|
|
provider: z.string().optional(),
|
|
baseUrl: z.string().optional(),
|
|
apiKey: z.string().optional(),
|
|
model: z.string().optional(),
|
|
})
|
|
.strict()
|
|
.optional();
|
|
|
|
const QQBotAccountSchema = z
|
|
.object({
|
|
enabled: z.boolean().optional(),
|
|
name: z.string().optional(),
|
|
appId: z.string().optional(),
|
|
clientSecret: buildSecretInputSchema().optional(),
|
|
clientSecretFile: z.string().optional(),
|
|
allowFrom: AllowFromListSchema,
|
|
systemPrompt: z.string().optional(),
|
|
markdownSupport: z.boolean().optional(),
|
|
voiceDirectUploadFormats: z.array(z.string()).optional(),
|
|
audioFormatPolicy: AudioFormatPolicySchema,
|
|
urlDirectUpload: z.boolean().optional(),
|
|
upgradeUrl: z.string().optional(),
|
|
upgradeMode: z.enum(["doc", "hot-reload"]).optional(),
|
|
})
|
|
.strict();
|
|
|
|
export const QQBotConfigSchema = QQBotAccountSchema.extend({
|
|
tts: QQBotTtsSchema,
|
|
stt: QQBotSttSchema,
|
|
accounts: z.object({}).catchall(QQBotAccountSchema).optional(),
|
|
defaultAccount: z.string().optional(),
|
|
});
|
|
export const qqbotChannelConfigSchema = buildChannelConfigSchema(QQBotConfigSchema);
|