{
  "moduleId": "qq-standard",
  "channelName": "qq",
  "displayName": "QQ",
  "interface": {
    "shortDescription": "Connect DotCraft to QQ groups through OneBot.",
    "localizedShortDescription": {
      "en": "Connect DotCraft to QQ groups through OneBot.",
      "zh-Hans": "通过 OneBot 让 DotCraft 接入 QQ 群聊。"
    },
    "longDescription": "Use the QQ channel to let DotCraft receive group messages, respond through the configured OneBot gateway, and keep team conversations connected to your workspace.",
    "localizedLongDescription": {
      "en": "Use the QQ channel to let DotCraft receive group messages, respond through the configured OneBot gateway, and keep team conversations connected to your workspace.",
      "zh-Hans": "通过 QQ 渠道让 DotCraft 接收群消息、经由已配置的 OneBot 网关回复，并把团队讨论连接到工作区。"
    },
    "previewPrompt": "Track this QQ group task and record the blockers.",
    "localizedPreviewPrompt": {
      "en": "Track this QQ group task and record the blockers.",
      "zh-Hans": "跟进这个 QQ 群任务，并记录阻塞点。"
    }
  },
  "packageName": "@dotcraft/channel-qq",
  "configFileName": "qq.json",
  "supportedTransports": [
    "websocket"
  ],
  "requiresInteractiveSetup": false,
  "capabilitySummary": {
    "hasChannelTools": true,
    "hasStructuredDelivery": true,
    "requiresInteractiveSetup": false,
    "capabilitySetMayVaryByEnvironment": false
  },
  "sdkContractVersion": "1.0.0",
  "supportedProtocolVersions": [
    "0.2"
  ],
  "variant": "standard",
  "launcher": {
    "bin": "dotcraft-channel-qq",
    "supportsWorkspaceFlag": true,
    "supportsConfigOverrideFlag": true
  },
  "configDescriptors": [
    {
      "key": "dotcraft.wsUrl",
      "displayLabel": "AppServer WebSocket URL",
      "description": "DotCraft AppServer WebSocket endpoint (ws:// or wss://).",
      "localizedDisplayLabel": {
        "en": "AppServer WebSocket URL",
        "zh-Hans": "AppServer WebSocket 地址"
      },
      "localizedDescription": {
        "en": "DotCraft AppServer WebSocket endpoint (ws:// or wss://).",
        "zh-Hans": "DotCraft AppServer 的 WebSocket 端点。"
      },
      "required": true,
      "dataKind": "string",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": "ws://127.0.0.1:9100/ws"
    },
    {
      "key": "dotcraft.token",
      "displayLabel": "AppServer Auth Token",
      "description": "Optional token used by DotCraft AppServer WebSocket transport.",
      "localizedDisplayLabel": {
        "en": "AppServer Auth Token",
        "zh-Hans": "AppServer 认证令牌"
      },
      "localizedDescription": {
        "en": "Optional token used by DotCraft AppServer WebSocket transport.",
        "zh-Hans": "DotCraft AppServer WebSocket 传输使用的可选认证令牌。"
      },
      "required": false,
      "dataKind": "secret",
      "masked": true,
      "interactiveSetupOnly": false
    },
    {
      "key": "qq.host",
      "displayLabel": "OneBot Listen Host",
      "description": "Host address for the OneBot reverse WebSocket server.",
      "localizedDisplayLabel": {
        "en": "OneBot Listen Host",
        "zh-Hans": "OneBot 监听地址"
      },
      "localizedDescription": {
        "en": "Host address for the OneBot reverse WebSocket server.",
        "zh-Hans": "OneBot 反向 WebSocket 服务监听地址。"
      },
      "required": false,
      "dataKind": "string",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": "127.0.0.1"
    },
    {
      "key": "qq.port",
      "displayLabel": "OneBot Listen Port",
      "description": "Port for the OneBot reverse WebSocket server.",
      "localizedDisplayLabel": {
        "en": "OneBot Listen Port",
        "zh-Hans": "OneBot 监听端口"
      },
      "localizedDescription": {
        "en": "Port for the OneBot reverse WebSocket server.",
        "zh-Hans": "OneBot 反向 WebSocket 服务监听端口。"
      },
      "required": false,
      "dataKind": "number",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": 6700
    },
    {
      "key": "qq.accessToken",
      "displayLabel": "OneBot Access Token",
      "description": "Optional OneBot reverse WebSocket access token.",
      "localizedDisplayLabel": {
        "en": "OneBot Access Token",
        "zh-Hans": "OneBot 访问令牌"
      },
      "localizedDescription": {
        "en": "Optional OneBot reverse WebSocket access token.",
        "zh-Hans": "OneBot 反向 WebSocket 可选访问令牌。"
      },
      "required": false,
      "dataKind": "secret",
      "masked": true,
      "interactiveSetupOnly": false
    },
    {
      "key": "qq.adminUsers",
      "displayLabel": "Admin Users",
      "description": "QQ user IDs with admin permissions.",
      "localizedDisplayLabel": {
        "en": "Admin Users",
        "zh-Hans": "管理员用户"
      },
      "localizedDescription": {
        "en": "QQ user IDs with admin permissions.",
        "zh-Hans": "拥有管理员权限的 QQ 用户 ID。"
      },
      "required": false,
      "dataKind": "list",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": []
    },
    {
      "key": "qq.whitelistedUsers",
      "displayLabel": "Whitelisted Users",
      "description": "QQ user IDs allowed to chat with DotCraft.",
      "localizedDisplayLabel": {
        "en": "Whitelisted Users",
        "zh-Hans": "白名单用户"
      },
      "localizedDescription": {
        "en": "QQ user IDs allowed to chat with DotCraft.",
        "zh-Hans": "允许与 DotCraft 对话的 QQ 用户 ID。"
      },
      "required": false,
      "dataKind": "list",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": []
    },
    {
      "key": "qq.whitelistedGroups",
      "displayLabel": "Whitelisted Groups",
      "description": "QQ group IDs whose members may chat with DotCraft.",
      "localizedDisplayLabel": {
        "en": "Whitelisted Groups",
        "zh-Hans": "白名单群"
      },
      "localizedDescription": {
        "en": "QQ group IDs whose members may chat with DotCraft.",
        "zh-Hans": "允许群成员与 DotCraft 对话的 QQ 群 ID。"
      },
      "required": false,
      "dataKind": "list",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": []
    },
    {
      "key": "qq.approvalTimeoutMs",
      "displayLabel": "Approval Timeout (ms)",
      "description": "Timeout before QQ approval requests auto-cancel.",
      "localizedDisplayLabel": {
        "en": "Approval Timeout (ms)",
        "zh-Hans": "审批超时（毫秒）"
      },
      "localizedDescription": {
        "en": "Timeout before QQ approval requests auto-cancel.",
        "zh-Hans": "QQ 审批请求自动取消前的等待时长。"
      },
      "required": false,
      "dataKind": "number",
      "masked": false,
      "interactiveSetupOnly": false,
      "advanced": true,
      "defaultValue": 60000
    },
    {
      "key": "qq.requireMentionInGroups",
      "displayLabel": "Require Mention in Groups",
      "description": "Only respond in groups when the bot is mentioned.",
      "localizedDisplayLabel": {
        "en": "Require Mention in Groups",
        "zh-Hans": "群聊需要 @ 机器人"
      },
      "localizedDescription": {
        "en": "Only respond in groups when the bot is mentioned.",
        "zh-Hans": "群聊中仅在机器人被 @ 时响应。"
      },
      "required": false,
      "dataKind": "boolean",
      "masked": false,
      "interactiveSetupOnly": false,
      "defaultValue": true
    }
  ]
}
