{
  "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" }
    }
  }
}
