@tencentcloud/sdk-mcp 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/index.js +0 -4
  2. package/knowledge/build-index.js +1 -1
  3. package/knowledge/chunker.js +81 -52
  4. package/knowledge/path-meta.js +181 -21
  5. package/knowledge/search/exact-lookup.js +166 -0
  6. package/knowledge/search/filter-pool.js +73 -19
  7. package/knowledge/search/product-scope-intent.js +2 -2
  8. package/knowledge/search/requires-framework.js +1 -1
  9. package/knowledge/search/search-knowledge.js +234 -57
  10. package/package.json +1 -1
  11. package/resource/_schema/feature-aliases.yaml +1 -0
  12. package/resource/integration/callkit/preset/android/integration.md +3 -5
  13. package/resource/integration/callkit/preset/flutter/integration.md +2 -3
  14. package/resource/integration/callkit/preset/ios/integration.md +2 -5
  15. package/resource/integration/callkit/preset/react/integration.md +12 -26
  16. package/resource/integration/callkit/preset/vue/integration.md +17 -33
  17. package/resource/integration/chat/preset/android/integration.md +44 -14
  18. package/resource/integration/chat/preset/flutter/integration.md +54 -13
  19. package/resource/integration/chat/preset/ios/integration.md +42 -6
  20. package/resource/integration/chat/preset/react/integration.md +30 -28
  21. package/resource/integration/chat/preset/uni-app/integration.md +101 -40
  22. package/resource/integration/chat/preset/vue/integration.md +62 -28
  23. package/resource/integration/livekit/preset/live/android/live-audience-integration.md +133 -0
  24. package/resource/integration/livekit/preset/live/android/live-host-integration.md +225 -0
  25. package/resource/integration/livekit/preset/live/android/live-list-integration.md +278 -0
  26. package/resource/integration/livekit/preset/live/android/prepare-integration.md +271 -0
  27. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +207 -0
  28. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +358 -0
  29. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +246 -0
  30. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +218 -0
  31. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +4 -7
  32. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +5 -12
  33. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +4 -11
  34. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +250 -482
  35. package/resource/integration/roomkit/preset/vue/integration.md +399 -106
  36. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
  37. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +20 -0
  38. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
  39. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +11 -15
  40. package/resource/knowledge/callkit/core-sdk/android/make-call.md +10 -13
  41. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +2 -4
  42. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +10 -17
  43. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +11 -17
  44. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +11 -20
  45. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +10 -15
  46. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +9 -14
  47. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +12 -18
  48. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +390 -0
  49. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +317 -0
  50. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +16 -22
  51. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +17 -23
  52. package/resource/knowledge/callkit/core-sdk/web/call-engine.md +39 -0
  53. package/resource/knowledge/callkit/core-sdk/web/call-event.md +341 -0
  54. package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +39 -0
  55. package/resource/knowledge/callkit/faq/android.md +1 -5
  56. package/resource/knowledge/callkit/faq/common.md +10 -12
  57. package/resource/knowledge/callkit/faq/ios.md +5 -7
  58. package/resource/knowledge/callkit/faq/uniapp-app.md +7 -7
  59. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +9 -12
  60. package/resource/knowledge/callkit/faq/web.md +2 -12
  61. package/resource/knowledge/callkit/preset/android/api.md +5 -8
  62. package/resource/knowledge/callkit/preset/ios/api.md +4 -6
  63. package/resource/knowledge/callkit/preset/miniprogram/api.md +295 -0
  64. package/resource/knowledge/callkit/preset/react/api.md +622 -0
  65. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +475 -0
  66. package/resource/knowledge/callkit/preset/vue/api.md +622 -0
  67. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +587 -0
  68. package/resource/knowledge/callkit/preset/web/api.md +1 -1
  69. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
  70. package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
  71. package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -1
  72. package/resource/knowledge/chat/preset/android/features/language.md +2 -4
  73. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
  74. package/resource/knowledge/chat/preset/android/features/message-list.md +1 -2
  75. package/resource/knowledge/chat/preset/android/features/search.md +0 -1
  76. package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
  77. package/resource/knowledge/chat/preset/android-view/integration.md +35 -10
  78. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
  79. package/resource/knowledge/chat/preset/flutter/features/language.md +1 -1
  80. package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -1
  81. package/resource/knowledge/chat/preset/flutter/features/search.md +4 -5
  82. package/resource/knowledge/chat/preset/flutter/features/theme.md +1 -1
  83. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
  84. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -1
  85. package/resource/knowledge/chat/preset/ios/features/language.md +2 -5
  86. package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -1
  87. package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
  88. package/resource/knowledge/chat/preset/ios/features/theme.md +1 -1
  89. package/resource/knowledge/chat/preset/ios-uikit/integration.md +57 -166
  90. package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -1
  91. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +3 -3
  92. package/resource/knowledge/chat/preset/react/features/conversation-list.md +3 -3
  93. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -1
  94. package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
  95. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  96. package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -1
  97. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -4
  98. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +4 -4
  99. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +1 -1
  100. package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -2
  101. package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -2
  102. package/resource/knowledge/chat/preset/vue/features/search.md +0 -1
  103. package/resource/knowledge/chat/preset/vue/features/theme.md +4 -4
  104. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
  105. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +2 -5
  106. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +12 -15
  107. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
  108. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
  109. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
  110. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
  111. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +2 -4
  112. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
  113. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
  114. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
  115. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +2 -4
  116. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
  117. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
  118. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +3 -6
  119. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
  120. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +12 -15
  121. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
  122. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
  123. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
  124. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +2 -4
  125. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
  126. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
  127. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
  128. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +2 -4
  129. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
  130. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
  131. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +2 -5
  132. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
  133. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +3 -6
  134. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
  135. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
  136. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
  137. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +2 -4
  138. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
  139. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
  140. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
  141. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +2 -4
  142. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
  143. package/resource/knowledge/livekit/core-sdk/api-reference/vue/capability-matrix.md +82 -0
  144. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +2 -4
  145. package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +1 -1
  146. package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +1 -1
  147. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-gift.md → features/android/gift.md} +2 -3
  148. package/resource/knowledge/livekit/core-sdk/{live/android/live-live-list.md → features/android/live-list.md} +1 -1
  149. package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
  150. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +3 -3
  151. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-gift.md → features/flutter/gift.md} +2 -2
  152. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
  153. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -1
  154. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
  155. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-barrage.md → features/ios/barrage.md} +2 -2
  156. package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +1 -1
  157. package/resource/knowledge/livekit/core-sdk/{live/ios/live-gift.md → features/ios/gift.md} +8 -9
  158. package/resource/knowledge/livekit/core-sdk/{live/ios/live-live-list.md → features/ios/live-list.md} +2 -2
  159. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audio-effect.md → features/uni-app/audio-effect.md} +2 -3
  160. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-barrage.md → features/uni-app/barrage.md} +2 -2
  161. package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +145 -0
  162. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-gift.md → features/uni-app/gift.md} +6 -7
  163. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-room-list.md → features/uni-app/live-list.md} +1 -1
  164. package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  165. package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +2 -4
  166. package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +6 -9
  167. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +1 -3
  168. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -6
  169. package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  170. package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +3 -5
  171. package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +7 -10
  172. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +561 -0
  173. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +323 -0
  174. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +312 -0
  175. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  176. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +2 -4
  177. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +11 -14
  178. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -1
  179. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +1 -4
  180. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  181. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +2 -4
  182. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +7 -10
  183. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-co-guest-interaction.md → co-guest-interaction.md} +6 -6
  184. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-integration.md → integration.md} +6 -7
  185. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
  186. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
  187. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +1 -1
  188. package/resource/knowledge/push/api-reference/android.md +337 -0
  189. package/resource/knowledge/push/api-reference/donut.md +190 -0
  190. package/resource/knowledge/push/api-reference/flutter.md +176 -0
  191. package/resource/knowledge/push/api-reference/harmonyos.md +140 -0
  192. package/resource/knowledge/push/api-reference/ios.md +537 -0
  193. package/resource/knowledge/push/api-reference/react-native.md +154 -0
  194. package/resource/knowledge/push/api-reference/uni-app.md +148 -0
  195. package/resource/knowledge/push/api-reference/unity.md +119 -0
  196. package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
  197. package/resource/knowledge/push/config/android/fcm.md +1 -8
  198. package/resource/knowledge/push/config/android/honor.md +3 -7
  199. package/resource/knowledge/push/config/android/huawei.md +0 -5
  200. package/resource/knowledge/push/config/android/meizu.md +0 -5
  201. package/resource/knowledge/push/config/android/oppo.md +0 -4
  202. package/resource/knowledge/push/config/android/vivo.md +0 -4
  203. package/resource/knowledge/push/config/android/xiaomi.md +0 -2
  204. package/resource/knowledge/push/config/donut.md +33 -46
  205. package/resource/knowledge/push/config/harmonyos.md +6 -9
  206. package/resource/knowledge/push/config/ios.md +2 -9
  207. package/resource/knowledge/push/config/react-native.md +17 -25
  208. package/resource/knowledge/push/config/unity.md +16 -24
  209. package/resource/knowledge/push/config/unreal-engine.md +16 -24
  210. package/resource/knowledge/push/integration/android.md +21 -21
  211. package/resource/knowledge/push/integration/donut.md +24 -34
  212. package/resource/knowledge/push/integration/flutter.md +12 -1
  213. package/resource/knowledge/push/integration/harmonyos.md +2 -1
  214. package/resource/knowledge/push/integration/ios.md +16 -10
  215. package/resource/knowledge/push/integration/react-native.md +10 -14
  216. package/resource/knowledge/push/integration/uni-app.md +10 -6
  217. package/resource/knowledge/push/integration/unity.md +19 -22
  218. package/resource/knowledge/push/integration/unreal-engine.md +7 -9
  219. package/resource/knowledge/push/overview/prepare.md +2 -2
  220. package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
  221. package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +82 -0
  222. package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
  223. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
  224. package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +82 -0
  225. package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
  226. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -1
  227. package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +82 -0
  228. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
  229. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -4
  230. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +2 -5
  231. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  232. package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -2
  233. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +2 -6
  234. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -1
  235. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +1 -1
  236. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +2 -4
  237. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +2 -3
  238. package/resource/knowledge/roomkit/preset/android/integration.md +14 -16
  239. package/resource/knowledge/roomkit/preset/flutter/integration.md +9 -17
  240. package/resource/knowledge/roomkit/preset/ios/integration.md +9 -17
  241. package/resource/knowledge/roomkit/preset/react/integration.md +0 -4
  242. package/resource/knowledge/trtc/android/TRTCCloud.md +97 -180
  243. package/resource/knowledge/trtc/android/TRTCCloudDef.md +20 -20
  244. package/resource/knowledge/trtc/android/TRTCCloudListener.md +43 -77
  245. package/resource/knowledge/trtc/android/TRTCStatistics.md +1 -1
  246. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +4 -24
  247. package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
  248. package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
  249. package/resource/knowledge/trtc/c++/ITRTCCloud.md +96 -189
  250. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +1 -1
  251. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +1 -21
  252. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -6
  253. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +42 -76
  254. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +18 -19
  255. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
  256. package/resource/knowledge/trtc/ios/TRTCCloud.md +95 -181
  257. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +43 -78
  258. package/resource/knowledge/trtc/ios/TRTCStatistics.md +1 -1
  259. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +1 -20
  260. package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -6
  261. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
  262. package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +20 -20
  263. package/server-config.js +7 -4
  264. package/server.js +2 -2
  265. package/tools/common/finalize_answer.js +1 -1
  266. package/tools/common/present_framework_choice.js +2 -2
  267. package/tools/common/search_trtc_knowledge.js +3 -3
  268. package/tools/common/submit_feedback.js +1 -1
  269. package/tools/definitions/get_native_live_uikit_integration_def.js +60 -0
  270. package/tools/definitions/get_native_livekit_core_integration_def.js +1 -1
  271. package/tools/definitions/present_framework_choice_def.js +2 -2
  272. package/tools/definitions/search_trtc_knowledge_def.js +5 -5
  273. package/tools/index.js +2 -0
  274. package/tools/live/get_native_live_uikit_integration.js +69 -0
  275. package/tools/live/get_native_livekit_core_integration.js +6 -6
  276. package/utils/is-valid-sdkappid.js +4 -0
  277. package/utils/report-cls-client.js +1 -1
  278. package/utils/report-es-client.js +1 -1
  279. package/resource/index/component-slugs.json +0 -1
  280. package/resource/index/doc-source-urls.json +0 -1
  281. package/resource/index/manifest.json +0 -1
  282. package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -229
  283. package/resource/knowledge/livekit/core-sdk/live/android/live-gift.md +0 -459
  284. package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -506
  285. package/resource/knowledge/livekit/core-sdk/live/flutter/live-gift.md +0 -427
  286. package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
  287. package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -265
  288. package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -214
  289. package/resource/knowledge/livekit/core-sdk/live/ios/live-barrage.md +0 -427
  290. package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -272
  291. package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -486
  292. package/resource/knowledge/livekit/core-sdk/voice/android/voice-room-list.md +0 -523
  293. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -262
  294. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -600
  295. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-gift.md +0 -411
  296. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-room-list.md +0 -404
  297. /package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +0 -0
  298. /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
  299. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
  300. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
  301. /package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audience-list.md → features/uni-app/audience-list.md} +0 -0
  302. /package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -0
@@ -94,6 +94,50 @@ function loadFeatureAliases() {
94
94
  }
95
95
  return result;
96
96
  }
97
+ const ROOM_CORE_SIGNAL = /atomicx\s*core|atomicxcore|atomicx|core\s*sdk|无\s*ui|自定义\s*ui|自实现|roomstore|store|useRoomState|useDeviceState|useLoginState/i;
98
+ const ROOM_PRESET_SIGNAL = /预制|preset|roommainview|roommainwidget|默认\s*ui|主页面|房间主页面/i;
99
+ const ROOM_FEATURE_SPECS = [
100
+ {
101
+ fileName: 'room-chat.md',
102
+ titlePattern: /room\s*chat|in-room\s*im\s*chat|会中聊天|聊天能力|IM\s*聊天/i,
103
+ promptPattern: /room\s*chat|会中聊天|in[- ]room\s*(im\s*)?chat|im\s*聊天|messagelist|messageinput|messagestore|聊天面板|房间聊天/i,
104
+ },
105
+ {
106
+ fileName: 'screen-share.md',
107
+ titlePattern: /screen\s*share|屏幕分享/i,
108
+ promptPattern: /screen\s*share|屏幕分享|共享屏幕|startScreenShare/i,
109
+ },
110
+ {
111
+ fileName: 'virtual-background.md',
112
+ titlePattern: /virtual\s*background|虚拟背景/i,
113
+ promptPattern: /virtual\s*background|虚拟背景|背景虚化|背景替换|initVirtualBackground/i,
114
+ },
115
+ {
116
+ fileName: 'room-view.md',
117
+ titlePattern: /roomview|room\s*view|房间主视图|视频布局/i,
118
+ promptPattern: /roomview|room\s*view|房间主视图|视频布局|画面布局|layoutTemplate/i,
119
+ },
120
+ {
121
+ fileName: 'device-detection.md',
122
+ titlePattern: /device\s*detection|设备检测|设备预览/i,
123
+ promptPattern: /device\s*detection|设备检测|设备预览|startCameraTest|startMicrophoneTest|startSpeakerTest/i,
124
+ },
125
+ {
126
+ fileName: 'device-state.md',
127
+ titlePattern: /device\s*state|设备状态|设备管理/i,
128
+ promptPattern: /device\s*state|设备状态|设备管理|摄像头|麦克风|扬声器|switchMirror|setCurrentCamera|networkInfo/i,
129
+ },
130
+ {
131
+ fileName: 'free-beauty-panel.md',
132
+ titlePattern: /free\s*beauty|美颜面板|基础美颜/i,
133
+ promptPattern: /free\s*beauty|美颜面板|基础美颜|beauty/i,
134
+ },
135
+ ];
136
+ function detectRoomFeatureHits(prompt) {
137
+ return ROOM_FEATURE_SPECS.filter((spec) => spec.promptPattern.test(prompt));
138
+ }
139
+ const LIVE_LIFECYCLE_PROMPT = /开播|创建直播|结束直播|停播|观看直播|退出直播|进房|离房|createLive|endLive|joinLive|leaveLive|host_streaming|audience_streaming/i;
140
+ const LIVE_LIFECYCLE_APIS = ['createLive', 'endLive', 'joinLive', 'leaveLive'];
97
141
  export function runExactLookup(prompt, pool, norm) {
98
142
  const boosts = {};
99
143
  const exactHits = [];
@@ -103,6 +147,9 @@ export function runExactLookup(prompt, pool, norm) {
103
147
  if (!exactHits.includes(label))
104
148
  exactHits.push(label);
105
149
  };
150
+ const addPenalty = (chunk, amount) => {
151
+ boosts[chunk.id] = (boosts[chunk.id] ?? 0) - Math.abs(amount);
152
+ };
106
153
  // E1: error codes
107
154
  const errorMatches = [
108
155
  ...prompt.matchAll(/\b(\d{5,7})\b/g),
@@ -326,5 +373,124 @@ export function runExactLookup(prompt, pool, norm) {
326
373
  addBoost(chunk, 120, `E8:integration-doc:${chunk.source}`);
327
374
  }
328
375
  }
376
+ // E9: chat faq——types=faq 时优先 knowledge 语料,避免 integration 文档内 FAQ 章节抢首位
377
+ if (norm.searchIntent?.includes('faq') && norm.product?.includes('chat')) {
378
+ const authPrompt = /auth|login|signature|usersig|鉴权|登录/i.test(prompt);
379
+ for (const chunk of pool) {
380
+ if (chunk.source.startsWith('knowledge/chat/')) {
381
+ const urlBoost = authPrompt && chunk.source.includes('/urls/') ? 180 : 100;
382
+ addBoost(chunk, urlBoost, 'E9:chat-faq:knowledge');
383
+ }
384
+ if (chunk.source.startsWith('integration/chat/')) {
385
+ addBoost(chunk, -120, 'E9:chat-faq:penalize-integration');
386
+ }
387
+ }
388
+ }
389
+ // E11: LiveKit 生命周期意图强召回(开播/停播/观看/退出)
390
+ if (norm.product?.includes('live') && LIVE_LIFECYCLE_PROMPT.test(prompt)) {
391
+ const queryApiHits = LIVE_LIFECYCLE_APIS.filter((api) => new RegExp(api, 'i').test(prompt));
392
+ for (const chunk of pool) {
393
+ const isLiveCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/live/')
394
+ && chunk.source.endsWith('/integration.md');
395
+ const isVoiceCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/voice/')
396
+ && chunk.source.endsWith('/integration.md');
397
+ if (!isLiveCoreIntegration && !isVoiceCoreIntegration)
398
+ continue;
399
+ if (norm.scenario === 'live' && !isLiveCoreIntegration)
400
+ continue;
401
+ if (norm.scenario === 'voice' && !isVoiceCoreIntegration)
402
+ continue;
403
+ addBoost(chunk, 140, 'E11:live-lifecycle-core-integration');
404
+ for (const api of queryApiHits) {
405
+ if (chunk.api_names?.some((name) => name.toLowerCase() === api.toLowerCase())) {
406
+ addBoost(chunk, 160, `E11:live-lifecycle-api:${api}`);
407
+ }
408
+ }
409
+ }
410
+ }
411
+ // E10: roomkit Core/Preset 消歧 + unsupported feature 强召回
412
+ if (norm.product?.includes('room') && norm.frameworks?.length) {
413
+ const platform = norm.frameworks.find((fw) => ['android', 'ios', 'flutter', 'vue'].includes(fw));
414
+ const featureHits = detectRoomFeatureHits(prompt);
415
+ const coreIntent = ROOM_CORE_SIGNAL.test(prompt) || !ROOM_PRESET_SIGNAL.test(prompt);
416
+ const presetIntent = ROOM_PRESET_SIGNAL.test(prompt) && !ROOM_CORE_SIGNAL.test(prompt);
417
+ if (platform) {
418
+ const coreScope = `room:core-sdk:${platform}`;
419
+ const presetScope = `room:preset:${platform}`;
420
+ for (const chunk of pool) {
421
+ if (chunk.product !== 'room')
422
+ continue;
423
+ if (chunk.scope === coreScope) {
424
+ addBoost(chunk, 40, `E10:room-core-scope:${platform}`);
425
+ if (platform !== 'vue' && chunk.doc_kind === 'capability_matrix') {
426
+ addBoost(chunk, 120, `E10:room-matrix:${platform}`);
427
+ }
428
+ }
429
+ if (coreIntent && chunk.scope === presetScope) {
430
+ addPenalty(chunk, 120);
431
+ }
432
+ if (presetIntent && chunk.scope === coreScope && chunk.capability_status === 'unsupported') {
433
+ addPenalty(chunk, 180);
434
+ }
435
+ }
436
+ for (const feature of featureHits) {
437
+ for (const chunk of pool) {
438
+ if (chunk.product !== 'room')
439
+ continue;
440
+ if (platform === 'vue' && chunk.scope === coreScope && chunk.source.endsWith(feature.fileName)) {
441
+ addBoost(chunk, 220, `E10:room-vue-feature:${feature.fileName}`);
442
+ }
443
+ if (platform !== 'vue' && chunk.scope === coreScope) {
444
+ if (chunk.source.endsWith('unsupported-features.md') && feature.titlePattern.test(chunk.title)) {
445
+ addBoost(chunk, 280, `E10:room-unsupported:${platform}:${feature.fileName}`);
446
+ }
447
+ if (chunk.doc_kind === 'capability_matrix') {
448
+ addBoost(chunk, 120, `E10:room-matrix:${platform}:${feature.fileName}`);
449
+ }
450
+ }
451
+ }
452
+ }
453
+ }
454
+ }
455
+ // E12: CallKit Vue 混合类型问题消歧(状态机 STATUS 与 Core Store 类型分层召回)
456
+ if (norm.product?.includes('call')) {
457
+ const isStatusIntent = /statuschanged|\bstatus\b|callmediatype|媒体类型|通话状态|状态回调/i.test(prompt);
458
+ const isStoreIntent = /callstatus|callrole|iuserinfo|storename\.?call|store|name\s*常量|枚举值|字段定义/i.test(prompt);
459
+ const isEngineInvitationIntent = /tuicallengine|on_call_received|call\s*invitation|incoming\s*call|accept\(|reject\(|inviteid|userData|邀请|来电|接听|拒接|信令/i.test(prompt);
460
+ const isCallkitDiffIntent = /\bcall\s*vs\s*calls\b|\bcalls?\b|groupcall|tuicallkitapi\.calls|tuicallkitserver\.call|tuicallkitserver\.groupcall|\bv4(\.x)?\b|useridlist|chatgroupid|发起(单人|多人)?通话|呼叫|拨打/i.test(prompt);
461
+ const isLogIntent = /setloglevel|log\s*level|disable\s*log|console\s*log|日志级别|关闭\s*log/i.test(prompt);
462
+ for (const chunk of pool) {
463
+ if (chunk.product !== 'call')
464
+ continue;
465
+ const source = chunk.source.toLowerCase();
466
+ if (isStatusIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
467
+ addBoost(chunk, 180, 'E12:callkit-vue-status');
468
+ }
469
+ if (isStoreIntent && source.includes('knowledge/callkit/core-sdk/web/')) {
470
+ addBoost(chunk, 220, 'E12:callkit-core-store');
471
+ }
472
+ if (isStoreIntent && source.includes('knowledge/callkit/preset/vue/')) {
473
+ addPenalty(chunk, 80);
474
+ }
475
+ if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
476
+ addBoost(chunk, 300, 'E13A:callengine-invitation');
477
+ }
478
+ if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
479
+ addPenalty(chunk, 80);
480
+ }
481
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
482
+ addBoost(chunk, 300, 'E13B:callkit-call-vs-calls');
483
+ }
484
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
485
+ addPenalty(chunk, 80);
486
+ }
487
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
488
+ addPenalty(chunk, 40);
489
+ }
490
+ if (isLogIntent && source.includes('knowledge/callkit/best-practice/web/callengine-log-control.md')) {
491
+ addBoost(chunk, 260, 'E13:callengine-log-control');
492
+ }
493
+ }
494
+ }
329
495
  return { boosts, exactHits };
330
496
  }
@@ -3,15 +3,18 @@ import { downgradeToProductType } from './product-scope-intent.js';
3
3
  * MCP framework enum → index 中对应的 framework 值列表。
4
4
  * path-meta.ts 已通过 normalizeFrameworkDir 把目录名归一到标准 framework,
5
5
  * 所有产品的 framework 均已对齐枚举值,无需额外别名扩展。
6
- * web 匹配 react/vue/web(Chat/Call/Live Web 端覆盖)。
7
6
  */
8
7
  const FRAMEWORK_SEARCH_ALIASES = {};
9
- function expandFrameworks(framework) {
10
- if (!framework)
8
+ function expandFrameworks(frameworks, _products) {
9
+ if (!frameworks?.length)
11
10
  return undefined;
12
- if (framework === 'web')
13
- return ['react', 'vue', 'web'];
14
- return FRAMEWORK_SEARCH_ALIASES[framework] ?? [framework];
11
+ const expanded = new Set();
12
+ for (const framework of frameworks) {
13
+ for (const alias of FRAMEWORK_SEARCH_ALIASES[framework] ?? [framework]) {
14
+ expanded.add(alias);
15
+ }
16
+ }
17
+ return [...expanded];
15
18
  }
16
19
  /**
17
20
  * 类型别名:UIKit「组件(component)」与「feature」是同一批文档的两种叫法
@@ -21,6 +24,7 @@ const TYPE_ALIASES = {
21
24
  component: ['component', 'feature'],
22
25
  feature: ['feature', 'component'],
23
26
  };
27
+ const LIVE_LIFECYCLE_PROMPT = /开播|创建直播|结束直播|停播|观看直播|退出直播|进房|离房|createLive|endLive|joinLive|leaveLive|host_streaming|audience_streaming/i;
24
28
  function expandTypeAliases(types) {
25
29
  const expanded = new Set();
26
30
  for (const t of types) {
@@ -29,29 +33,50 @@ function expandTypeAliases(types) {
29
33
  }
30
34
  return [...expanded];
31
35
  }
32
- /** Chat 无独立 faq.md;types 含 faq 时退化到全语料检索(feature/component/urls 等均命中) */
33
- function resolveTypes(products, types, prompt, framework) {
36
+ /**
37
+ * Chat FAQ 现已迁移到 best-practice 语料,types=faq 时应保留 faq 过滤,避免退化到全语料噪声。
38
+ */
39
+ function resolveTypes(products, types, prompt, frameworks) {
34
40
  if (!types?.length)
35
41
  return undefined;
36
- if (products?.includes('chat') && types.includes('faq')) {
37
- return undefined;
42
+ const downgraded = downgradeToProductType(products, types, prompt, frameworks);
43
+ const expanded = expandTypeAliases(downgraded);
44
+ // Live 生命周期兼容:用户常传 types=['api'],但核心生命周期方法来自 core-sdk/live|voice/*/integration.md。
45
+ // 这里补充 core/integration,避免被类型硬过滤提前排除。
46
+ if (products?.includes('live') && expanded.includes('api') && LIVE_LIFECYCLE_PROMPT.test(prompt)) {
47
+ if (!expanded.includes('core'))
48
+ expanded.push('core');
49
+ if (!expanded.includes('integration'))
50
+ expanded.push('integration');
38
51
  }
39
- const downgraded = downgradeToProductType(products, types, prompt, framework);
40
- return expandTypeAliases(downgraded);
52
+ return expanded;
41
53
  }
42
54
  /** 单平台产品的隐式 framework 推断:避免对显然唯一的平台再发起询问 */
43
- function inferImplicitFramework(products, framework) {
44
- if (framework)
45
- return framework;
55
+ function inferImplicitFramework(products, frameworks, prompt) {
56
+ if (frameworks?.length)
57
+ return frameworks[0];
46
58
  if (products?.length === 1 && products[0] === 'rtcengine')
47
59
  return 'web';
60
+ if (products?.includes('call')) {
61
+ if (/小程序|miniprogram/i.test(prompt))
62
+ return 'miniprogram';
63
+ if (/\breact\b/i.test(prompt))
64
+ return 'react';
65
+ if (/\bvue\b/i.test(prompt))
66
+ return 'vue';
67
+ if (/\b(web|h5|pc)\b|Web&H5/i.test(prompt))
68
+ return 'web';
69
+ }
48
70
  return undefined;
49
71
  }
50
72
  export function normalizeParams(params) {
51
73
  const limit = Math.min(Math.max(params.limit ?? 8, 1), 16);
52
- const effectiveFramework = inferImplicitFramework(params.product, params.framework);
53
- const frameworks = expandFrameworks(effectiveFramework);
54
- const types = resolveTypes(params.product, params.types, params.prompt, effectiveFramework);
74
+ const effectiveFramework = inferImplicitFramework(params.product, params.frameworks, params.prompt);
75
+ const requestedFrameworks = params.frameworks?.length
76
+ ? params.frameworks
77
+ : effectiveFramework ? [effectiveFramework] : undefined;
78
+ const frameworks = expandFrameworks(requestedFrameworks, params.product);
79
+ const types = resolveTypes(params.product, params.types, params.prompt, requestedFrameworks);
55
80
  return {
56
81
  prompt: params.prompt,
57
82
  product: params.product,
@@ -79,18 +104,47 @@ const CROSS_PLATFORM_CHUNK_TYPES = new Set([
79
104
  function chunkIsCrossPlatform(chunkTypes) {
80
105
  return chunkTypes.some((t) => CROSS_PLATFORM_CHUNK_TYPES.has(t));
81
106
  }
107
+ function normalizeScopeToken(input) {
108
+ return input.toLowerCase().replace(/[\s_\-]+/g, '');
109
+ }
110
+ function promptMatchesRetrievableScope(prompt, scope) {
111
+ if (!scope)
112
+ return true;
113
+ if (scope === 'always')
114
+ return true;
115
+ if (!scope.length)
116
+ return true;
117
+ const normalizedPrompt = normalizeScopeToken(prompt);
118
+ return scope.some((token) => normalizedPrompt.includes(normalizeScopeToken(token)));
119
+ }
82
120
  export function filterPool(chunks, norm) {
83
121
  return chunks.filter((chunk) => {
84
122
  if (norm.product && !norm.product.includes(chunk.product) && chunk.product !== '*') {
85
123
  return false;
86
124
  }
125
+ // A1: 通配语料(share 等)必须命中 retrievable_scope 才能进入检索池
126
+ if (chunk.product === '*' && !promptMatchesRetrievableScope(norm.prompt, chunk.retrievable_scope)) {
127
+ return false;
128
+ }
87
129
  if (norm.frameworks?.length) {
88
130
  const isWildcardChunk = chunk.framework.includes('*');
89
131
  // 收紧:framework=['*'] 仅在该 chunk 明确是跨平台 type(product/server_api/webhook)时放行;
90
132
  // 否则要求 chunk.framework 与请求 framework 有交集。
91
133
  const wildcardAllowed = isWildcardChunk && chunkIsCrossPlatform(chunk.types);
92
134
  const explicitMatch = norm.frameworks.some((fw) => chunk.framework.includes(fw));
93
- if (!explicitMatch && !wildcardAllowed)
135
+ // CallKit 特例:core-sdk 仍维持 web 单套(纯 JS),允许 react/vue 查询命中 core-sdk/web。
136
+ const callCoreWebFallback = Boolean(norm.product?.includes('call')
137
+ && (norm.framework === 'react' || norm.framework === 'vue')
138
+ && chunk.variant === 'core-sdk'
139
+ && chunk.framework.includes('web'));
140
+ // Live 特例:写写侧把 'Web' 平台归到 livekit/core-sdk/api-reference/{vue,web} 目录(写写节点名是 'Web'),
141
+ // 本地目录重命名为 'vue' 后 framework 标签变为 'vue'。'web' 查询仍应能命中这些 chunk。
142
+ const liveWebVueFallback = Boolean(norm.product?.includes('live')
143
+ && norm.framework === 'web'
144
+ && chunk.variant === 'core-sdk'
145
+ && chunk.framework.includes('vue')
146
+ && chunk.source.includes('/api-reference/'));
147
+ if (!explicitMatch && !wildcardAllowed && !callCoreWebFallback && !liveWebVueFallback)
94
148
  return false;
95
149
  }
96
150
  if (norm.scenario && chunk.scenario && chunk.scenario !== norm.scenario) {
@@ -24,8 +24,8 @@ export function isProductScopePrompt(prompt) {
24
24
  * rewrite the type to `product` so filterPool can hit chat/urls/product.md.
25
25
  * If a framework is present, the Agent genuinely wants a client feature — do not downgrade.
26
26
  */
27
- export function downgradeToProductType(products, types, prompt, framework) {
28
- if (framework)
27
+ export function downgradeToProductType(products, types, prompt, frameworks) {
28
+ if (frameworks?.length)
29
29
  return types;
30
30
  if (!types.includes('feature'))
31
31
  return types;
@@ -44,7 +44,7 @@ function isChatErrorCodeAmbiguous(norm) {
44
44
  }
45
45
  /** 未传 framework 时,是否应先 present_framework_choice 再检索 */
46
46
  export function requiresFramework(norm) {
47
- if (norm.framework)
47
+ if (norm.frameworks?.length)
48
48
  return false;
49
49
  // 硬规则:chat 错误码场景必须问平台(服务端 / Web / Native 三个 URL)
50
50
  if (isChatErrorCodeAmbiguous(norm))