mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 09:41:11 +00:00
* fix(qqbot): allow extension fields in channel config schema Use passthrough() on QQBotConfigSchema, QQBotAccountSchema, and QQBotStreamingSchema so third-party builds that share the qqbot channel id can add custom fields without triggering "must NOT have additional properties" validation errors. tts and stt sub-schemas remain strict to preserve typo detection for those sensitive fields. * Update extensions/qqbot/openclaw.plugin.json Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * chore(qqbot): update changelog for config schema passthrough --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
178 lines
5.0 KiB
JSON
178 lines
5.0 KiB
JSON
{
|
|
"id": "qqbot",
|
|
"channels": ["qqbot"],
|
|
"channelEnvVars": {
|
|
"qqbot": ["QQBOT_APP_ID", "QQBOT_CLIENT_SECRET"]
|
|
},
|
|
"skills": ["./skills"],
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"$defs": {
|
|
"audioFormatPolicy": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"sttDirectFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"uploadDirectFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"transcodeEnabled": { "type": "boolean" }
|
|
}
|
|
},
|
|
"speechQueryParams": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"tts": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"provider": { "type": "string" },
|
|
"baseUrl": { "type": "string" },
|
|
"apiKey": { "type": "string" },
|
|
"model": { "type": "string" },
|
|
"voice": { "type": "string" },
|
|
"authStyle": {
|
|
"type": "string",
|
|
"enum": ["bearer", "api-key"]
|
|
},
|
|
"queryParams": { "$ref": "#/$defs/speechQueryParams" },
|
|
"speed": { "type": "number" }
|
|
}
|
|
},
|
|
"stt": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"provider": { "type": "string" },
|
|
"baseUrl": { "type": "string" },
|
|
"apiKey": { "type": "string" },
|
|
"model": { "type": "string" }
|
|
}
|
|
},
|
|
"secretRef": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"enum": ["env", "file", "exec"]
|
|
},
|
|
"provider": { "type": "string" },
|
|
"id": { "type": "string" }
|
|
},
|
|
"required": ["source", "provider", "id"]
|
|
},
|
|
"secretInput": {
|
|
"anyOf": [{ "type": "string", "minLength": 1 }, { "$ref": "#/$defs/secretRef" }]
|
|
},
|
|
"account": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"appId": { "type": "string" },
|
|
"clientSecret": { "$ref": "#/$defs/secretInput" },
|
|
"clientSecretFile": { "type": "string" },
|
|
"allowFrom": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"systemPrompt": { "type": "string" },
|
|
"markdownSupport": { "type": "boolean" },
|
|
"voiceDirectUploadFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
|
|
"urlDirectUpload": { "type": "boolean" },
|
|
"upgradeUrl": { "type": "string" },
|
|
"upgradeMode": {
|
|
"type": "string",
|
|
"enum": ["doc", "hot-reload"]
|
|
},
|
|
"streaming": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["off", "partial"],
|
|
"default": "partial"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"appId": { "type": "string" },
|
|
"clientSecret": { "$ref": "#/$defs/secretInput" },
|
|
"clientSecretFile": { "type": "string" },
|
|
"allowFrom": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"systemPrompt": { "type": "string" },
|
|
"markdownSupport": { "type": "boolean" },
|
|
"voiceDirectUploadFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
|
|
"tts": { "$ref": "#/$defs/tts" },
|
|
"stt": { "$ref": "#/$defs/stt" },
|
|
"urlDirectUpload": { "type": "boolean" },
|
|
"upgradeUrl": { "type": "string" },
|
|
"upgradeMode": {
|
|
"type": "string",
|
|
"enum": ["doc", "hot-reload"]
|
|
},
|
|
"streaming": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["off", "partial"],
|
|
"default": "partial"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"accounts": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/account"
|
|
}
|
|
},
|
|
"defaultAccount": { "type": "string" }
|
|
}
|
|
}
|
|
}
|