@tencent-rtc/mcp 1.6.4 → 1.6.6

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 (251) hide show
  1. package/knowledge/chunker.js +83 -54
  2. package/knowledge/path-meta.js +179 -26
  3. package/knowledge/search/exact-lookup.js +168 -10
  4. package/knowledge/search/filter-pool.js +73 -19
  5. package/knowledge/search/product-scope-intent.js +2 -2
  6. package/knowledge/search/requires-framework.js +2 -2
  7. package/knowledge/search/search-knowledge.js +247 -61
  8. package/package.json +1 -1
  9. package/resource/index/manifest.json +1 -1
  10. package/resource/integration/callkit/preset/android/integration.md +2 -4
  11. package/resource/integration/callkit/preset/flutter/integration.md +4 -5
  12. package/resource/integration/callkit/preset/ios/integration.md +1 -4
  13. package/resource/integration/callkit/preset/react/integration.md +13 -20
  14. package/resource/integration/callkit/preset/vue/integration.md +14 -21
  15. package/resource/integration/chat/preset/android/integration.md +6 -9
  16. package/resource/integration/chat/preset/flutter/integration.md +9 -12
  17. package/resource/integration/chat/preset/ios/integration.md +2 -4
  18. package/resource/integration/chat/preset/react/integration.md +0 -10
  19. package/resource/integration/livekit/preset/live/android/live-audience-integration.md +129 -0
  20. package/resource/integration/livekit/preset/live/android/live-host-integration.md +219 -0
  21. package/resource/integration/livekit/preset/live/android/live-list-integration.md +261 -0
  22. package/resource/integration/livekit/preset/live/android/prepare-integration.md +254 -0
  23. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +202 -0
  24. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +369 -0
  25. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +229 -0
  26. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +204 -0
  27. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +0 -3
  28. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -5
  29. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -6
  30. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +5 -10
  31. package/resource/integration/roomkit/preset/vue/integration.md +0 -4
  32. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
  33. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +24 -0
  34. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
  35. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +7 -8
  36. package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -7
  37. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +3 -5
  38. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +2 -6
  39. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +2 -6
  40. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +4 -9
  41. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1 -4
  42. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +8 -11
  43. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +17 -23
  44. package/resource/knowledge/callkit/core-sdk/web/call-engine.md +33 -0
  45. package/resource/knowledge/callkit/core-sdk/web/call-event.md +327 -0
  46. package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +33 -0
  47. package/resource/knowledge/callkit/faq/android.md +0 -2
  48. package/resource/knowledge/callkit/faq/error-code.md +0 -2
  49. package/resource/knowledge/callkit/faq/flutter.md +2 -2
  50. package/resource/knowledge/callkit/faq/ios.md +3 -5
  51. package/resource/knowledge/callkit/faq/web.md +2 -3
  52. package/resource/knowledge/callkit/preset/android/api.md +2 -5
  53. package/resource/knowledge/callkit/preset/ios/api.md +0 -2
  54. package/resource/knowledge/callkit/preset/react/api.md +445 -0
  55. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +445 -0
  56. package/resource/knowledge/callkit/preset/vue/api.md +465 -0
  57. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +465 -0
  58. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
  59. package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
  60. package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -1
  61. package/resource/knowledge/chat/preset/android/features/language.md +0 -1
  62. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
  63. package/resource/knowledge/chat/preset/android/features/message-list.md +2 -3
  64. package/resource/knowledge/chat/preset/android/features/search.md +0 -1
  65. package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
  66. package/resource/knowledge/chat/preset/android-view/integration.md +3 -11
  67. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
  68. package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -2
  69. package/resource/knowledge/chat/preset/flutter/features/search.md +5 -6
  70. package/resource/knowledge/chat/preset/flutter/features/theme.md +2 -2
  71. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
  72. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -2
  73. package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -2
  74. package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
  75. package/resource/knowledge/chat/preset/ios-uikit/integration.md +13 -15
  76. package/resource/knowledge/chat/preset/react/features/conversation-list.md +5 -5
  77. package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
  78. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  79. package/resource/knowledge/chat/preset/react/features/theme.md +0 -1
  80. package/resource/knowledge/chat/urls/sdk/android.md +3 -3
  81. package/resource/knowledge/chat/urls/sdk/flutter.md +3 -3
  82. package/resource/knowledge/chat/urls/sdk/ios.md +3 -3
  83. package/resource/knowledge/chat/urls/sdk/web.md +3 -3
  84. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +7 -14
  85. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +5 -8
  86. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +15 -18
  87. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +1 -2
  88. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +15 -20
  89. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +10 -13
  90. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +2 -4
  91. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +4 -6
  92. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +2 -4
  93. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +2 -4
  94. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +1 -2
  95. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +8 -10
  96. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +5 -7
  97. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +7 -14
  98. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +6 -9
  99. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +1 -2
  100. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +15 -18
  101. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +15 -20
  102. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +10 -13
  103. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +2 -4
  104. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +4 -6
  105. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +2 -4
  106. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +2 -4
  107. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +1 -2
  108. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +8 -10
  109. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +3 -5
  110. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +7 -14
  111. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +5 -8
  112. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +1 -2
  113. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +6 -9
  114. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +5 -10
  115. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +3 -6
  116. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +2 -4
  117. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +4 -6
  118. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +2 -4
  119. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +2 -4
  120. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +1 -2
  121. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +4 -6
  122. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +3 -5
  123. package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +24 -24
  124. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +1 -2
  125. package/resource/knowledge/livekit/core-sdk/{live/android/live-gift.md → features/android/gift.md} +2 -3
  126. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-room-list.md → features/android/live-list.md} +2 -4
  127. package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
  128. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +2 -2
  129. package/resource/knowledge/livekit/core-sdk/{live/flutter/live-gift.md → features/flutter/gift.md} +2 -3
  130. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
  131. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -2
  132. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
  133. package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +2 -2
  134. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-gift.md → features/ios/gift.md} +2 -3
  135. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-room-list.md → features/ios/live-list.md} +2 -4
  136. package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -1
  137. package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +5 -7
  138. package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +3 -6
  139. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +1 -1
  140. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +0 -2
  141. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -4
  142. package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -1
  143. package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +2 -4
  144. package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +2 -5
  145. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +3 -5
  146. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +3 -6
  147. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +1 -2
  148. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +6 -9
  149. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +2 -2
  150. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +4 -6
  151. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +1 -4
  152. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +0 -2
  153. package/resource/knowledge/push/api-reference/android.md +123 -0
  154. package/resource/knowledge/push/api-reference/flutter.md +176 -0
  155. package/resource/knowledge/push/api-reference/harmonyos.md +138 -0
  156. package/resource/knowledge/push/api-reference/ios.md +176 -0
  157. package/resource/knowledge/push/api-reference/react-native.md +147 -0
  158. package/resource/knowledge/push/api-reference/uni-app.md +147 -0
  159. package/resource/knowledge/push/api-reference/unity.md +119 -0
  160. package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
  161. package/resource/knowledge/push/config/android.md +4 -7
  162. package/resource/knowledge/push/config/harmonyos.md +0 -3
  163. package/resource/knowledge/push/config/ios.md +12 -20
  164. package/resource/knowledge/push/config/react-native.md +18 -26
  165. package/resource/knowledge/push/config/unity.md +20 -28
  166. package/resource/knowledge/push/config/unreal-engine.md +21 -29
  167. package/resource/knowledge/push/integration/android.md +6 -8
  168. package/resource/knowledge/push/integration/flutter.md +6 -9
  169. package/resource/knowledge/push/integration/harmonyos.md +1 -0
  170. package/resource/knowledge/push/integration/ios.md +7 -9
  171. package/resource/knowledge/push/integration/react-native.md +9 -13
  172. package/resource/knowledge/push/integration/uni-app.md +7 -7
  173. package/resource/knowledge/push/integration/unity.md +10 -13
  174. package/resource/knowledge/push/integration/unreal-engine.md +6 -9
  175. package/resource/knowledge/push/overview/prepare.md +2 -2
  176. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +3 -3
  177. package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
  178. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +1 -1
  179. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +2 -2
  180. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +6 -6
  181. package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +79 -0
  182. package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
  183. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
  184. package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +79 -0
  185. package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
  186. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +1 -1
  187. package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +79 -0
  188. package/resource/knowledge/roomkit/preset/android/integration.md +5 -7
  189. package/resource/knowledge/roomkit/preset/flutter/integration.md +2 -7
  190. package/resource/knowledge/roomkit/preset/ios/integration.md +3 -9
  191. package/resource/knowledge/roomkit/preset/react/integration.md +12 -16
  192. package/resource/knowledge/trtc/android/TRTCCloud.md +154 -238
  193. package/resource/knowledge/trtc/android/TRTCCloudDef.md +133 -134
  194. package/resource/knowledge/trtc/android/TRTCCloudListener.md +86 -120
  195. package/resource/knowledge/trtc/android/TRTCStatistics.md +10 -10
  196. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +10 -30
  197. package/resource/knowledge/trtc/android/TXBeautyManager.md +25 -25
  198. package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
  199. package/resource/knowledge/trtc/android/TXLiteAVCode.md +12 -12
  200. package/resource/knowledge/trtc/c++/ITRTCCloud.md +166 -261
  201. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +12 -12
  202. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +10 -30
  203. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -11
  204. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +96 -130
  205. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +122 -123
  206. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +12 -12
  207. package/resource/knowledge/trtc/ios/TRTCCloud.md +168 -255
  208. package/resource/knowledge/trtc/ios/TRTCCloudDef.md +124 -125
  209. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +89 -124
  210. package/resource/knowledge/trtc/ios/TRTCStatistics.md +10 -10
  211. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +9 -28
  212. package/resource/knowledge/trtc/ios/TXBeautyManager.md +25 -25
  213. package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -11
  214. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +12 -12
  215. package/server.js +21 -21
  216. package/tools/common/finalize_answer.js +1 -1
  217. package/tools/common/present_framework_choice.js +2 -2
  218. package/tools/common/search_trtc_knowledge.js +3 -3
  219. package/tools/common/submit_feedback.js +1 -1
  220. package/tools/definitions/get_native_live_uikit_integration_def.js +61 -0
  221. package/tools/definitions/get_native_livekit_core_integration_def.js +3 -3
  222. package/tools/definitions/present_framework_choice_def.js +2 -2
  223. package/tools/definitions/search_trtc_knowledge_def.js +5 -5
  224. package/tools/index.js +2 -0
  225. package/tools/live/get_native_live_uikit_integration.js +69 -0
  226. package/tools/live/get_native_livekit_core_integration.js +6 -6
  227. package/utils/report-cls-client.js +1 -1
  228. package/utils/report-es-client.js +1 -1
  229. package/resource/knowledge/callkit/preset/web/api.md +0 -83
  230. package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -226
  231. package/resource/knowledge/livekit/core-sdk/live/android/live-live-list.md +0 -438
  232. package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -490
  233. package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
  234. package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -264
  235. package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -216
  236. package/resource/knowledge/livekit/core-sdk/live/ios/live-gift.md +0 -407
  237. package/resource/knowledge/livekit/core-sdk/live/ios/live-live-list.md +0 -349
  238. package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -269
  239. package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -456
  240. package/resource/knowledge/livekit/core-sdk/voice/android/voice-gift.md +0 -455
  241. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -260
  242. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -598
  243. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +0 -424
  244. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-barrage.md +0 -408
  245. /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
  246. /package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +0 -0
  247. /package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +0 -0
  248. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
  249. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
  250. /package/resource/knowledge/livekit/core-sdk/{live/ios/live-barrage.md → features/ios/barrage.md} +0 -0
  251. /package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -0
@@ -272,15 +272,63 @@ function loadFeatureAliases() {
272
272
  }
273
273
  return result;
274
274
  }
275
+ const ROOM_CORE_SIGNAL = /atomicx\s*core|atomicxcore|atomicx|core\s*sdk|no\s*ui|custom\s*ui|self\s*implement|roomstore|store|useRoomState|useDeviceState|useLoginState|无\s*ui|自定义\s*ui|自实现/i;
276
+ const ROOM_PRESET_SIGNAL = /preset|roommainview|roommainwidget|default\s*ui|main\s*page|预制|默认\s*ui|主页面|房间主页面/i;
277
+ const ROOM_FEATURE_SPECS = [
278
+ {
279
+ fileName: 'room-chat.md',
280
+ titlePattern: /room\s*chat|in-room\s*im\s*chat|会中聊天|聊天能力|im\s*chat/i,
281
+ promptPattern: /room\s*chat|会中聊天|in[- ]room\s*(im\s*)?chat|im\s*chat|messagelist|messageinput|messagestore|聊天面板|房间聊天/i,
282
+ },
283
+ {
284
+ fileName: 'screen-share.md',
285
+ titlePattern: /screen\s*share|屏幕分享/i,
286
+ promptPattern: /screen\s*share|屏幕分享|共享屏幕|startScreenShare/i,
287
+ },
288
+ {
289
+ fileName: 'virtual-background.md',
290
+ titlePattern: /virtual\s*background|虚拟背景/i,
291
+ promptPattern: /virtual\s*background|虚拟背景|背景虚化|背景替换|initVirtualBackground/i,
292
+ },
293
+ {
294
+ fileName: 'room-view.md',
295
+ titlePattern: /roomview|room\s*view|房间主视图|视频布局/i,
296
+ promptPattern: /roomview|room\s*view|房间主视图|视频布局|画面布局|layoutTemplate/i,
297
+ },
298
+ {
299
+ fileName: 'device-detection.md',
300
+ titlePattern: /device\s*detection|设备检测|设备预览/i,
301
+ promptPattern: /device\s*detection|设备检测|设备预览|startCameraTest|startMicrophoneTest|startSpeakerTest/i,
302
+ },
303
+ {
304
+ fileName: 'device-state.md',
305
+ titlePattern: /device\s*state|设备状态|设备管理/i,
306
+ promptPattern: /device\s*state|设备状态|设备管理|摄像头|麦克风|扬声器|switchMirror|setCurrentCamera|networkInfo/i,
307
+ },
308
+ {
309
+ fileName: 'free-beauty-panel.md',
310
+ titlePattern: /free\s*beauty|美颜面板|基础美颜/i,
311
+ promptPattern: /free\s*beauty|美颜面板|基础美颜|beauty/i,
312
+ },
313
+ ];
314
+ function detectRoomFeatureHits(prompt) {
315
+ return ROOM_FEATURE_SPECS.filter((spec) => spec.promptPattern.test(prompt));
316
+ }
317
+ const LIVE_LIFECYCLE_PROMPT = /create\s*live|end\s*live|join\s*live|leave\s*live|start\s*live|stop\s*live|watch\s*live|host_streaming|audience_streaming|开播|创建直播|结束直播|停播|观看直播|退出直播|进房|离房|createLive|endLive|joinLive|leaveLive/i;
318
+ const LIVE_LIFECYCLE_APIS = ['createLive', 'endLive', 'joinLive', 'leaveLive'];
275
319
  export function runExactLookup(prompt, pool, norm) {
276
320
  const boosts = {};
277
321
  const exactHits = [];
322
+ const urlRowHitChunkIds = new Set();
278
323
  const lowerPrompt = prompt.toLowerCase();
279
324
  const addBoost = (chunk, amount, label) => {
280
325
  boosts[chunk.id] = (boosts[chunk.id] ?? 0) + amount;
281
326
  if (!exactHits.includes(label))
282
327
  exactHits.push(label);
283
328
  };
329
+ const addPenalty = (chunk, amount) => {
330
+ boosts[chunk.id] = (boosts[chunk.id] ?? 0) - Math.abs(amount);
331
+ };
284
332
  // E1: error codes
285
333
  const errorMatches = [
286
334
  ...prompt.matchAll(/\b(\d{5,7})\b/g),
@@ -437,7 +485,7 @@ export function runExactLookup(prompt, pool, norm) {
437
485
  }
438
486
  }
439
487
  }
440
- // E7: URL map row match (chunk.title = Query column; boost best row only)
488
+ // E7: URL map row match (chunk.title = Query column); boost multiple strong hits with pinned relaxation
441
489
  if (normalizeE7Text(prompt).replace(/\s+/g, '').length >= 2) {
442
490
  const candidates = [];
443
491
  for (const chunk of pool) {
@@ -451,14 +499,18 @@ export function runExactLookup(prompt, pool, norm) {
451
499
  }
452
500
  }
453
501
  candidates.sort((a, b) => b.score - a.score);
454
- const top = candidates[0];
455
- if (top) {
456
- addBoost(top.chunk, 200 + Math.min(top.score, 100), `E7:url-row:${top.chunk.title}`);
457
- const runnerUp = candidates[1];
458
- if (runnerUp && top.score - runnerUp.score <= 20) {
459
- addBoost(runnerUp.chunk, 150 + Math.min(runnerUp.score, 80), `E7:url-row:${runnerUp.chunk.title}`);
460
- }
461
- }
502
+ const strongCandidates = candidates
503
+ .filter(({ score }) => score >= 150)
504
+ .slice(0, 12);
505
+ strongCandidates.forEach(({ chunk, score }, idx) => {
506
+ const amount = idx === 0
507
+ ? 200 + Math.min(score, 100)
508
+ : idx === 1
509
+ ? 170 + Math.min(score, 90)
510
+ : Math.max(score >= 300 ? 100 : 70, 100 - idx * 5);
511
+ addBoost(chunk, amount, `E7:url-row:${chunk.title}`);
512
+ urlRowHitChunkIds.add(chunk.id);
513
+ });
462
514
  }
463
515
  }
464
516
  // E8: 集成查阅意图 boost——prompt 含集成/接入/快速开始/接入文档等意图词时,
@@ -493,5 +545,111 @@ export function runExactLookup(prompt, pool, norm) {
493
545
  }
494
546
  }
495
547
  }
496
- return { boosts, exactHits };
548
+ // E11: LiveKit lifecycle strong recall
549
+ if (norm.product?.includes('live') && LIVE_LIFECYCLE_PROMPT.test(prompt)) {
550
+ const queryApiHits = LIVE_LIFECYCLE_APIS.filter((api) => new RegExp(api, 'i').test(prompt));
551
+ for (const chunk of pool) {
552
+ const isLiveCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/live/')
553
+ && chunk.source.endsWith('/integration.md');
554
+ const isVoiceCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/voice/')
555
+ && chunk.source.endsWith('/integration.md');
556
+ if (!isLiveCoreIntegration && !isVoiceCoreIntegration)
557
+ continue;
558
+ if (norm.scenario === 'live' && !isLiveCoreIntegration)
559
+ continue;
560
+ if (norm.scenario === 'voice' && !isVoiceCoreIntegration)
561
+ continue;
562
+ addBoost(chunk, 140, 'E11:live-lifecycle-core-integration');
563
+ for (const api of queryApiHits) {
564
+ if (chunk.api_names?.some((name) => name.toLowerCase() === api.toLowerCase())) {
565
+ addBoost(chunk, 160, `E11:live-lifecycle-api:${api}`);
566
+ }
567
+ }
568
+ }
569
+ }
570
+ // E10: RoomKit Core/Preset disambiguation + unsupported feature routing
571
+ if (norm.product?.includes('room') && norm.frameworks?.length) {
572
+ const platform = norm.frameworks.find((fw) => ['android', 'ios', 'flutter', 'vue'].includes(fw));
573
+ const featureHits = detectRoomFeatureHits(prompt);
574
+ const coreIntent = ROOM_CORE_SIGNAL.test(prompt) || !ROOM_PRESET_SIGNAL.test(prompt);
575
+ const presetIntent = ROOM_PRESET_SIGNAL.test(prompt) && !ROOM_CORE_SIGNAL.test(prompt);
576
+ if (platform) {
577
+ const coreScope = `room:core-sdk:${platform}`;
578
+ const presetScope = `room:preset:${platform}`;
579
+ for (const chunk of pool) {
580
+ if (chunk.product !== 'room')
581
+ continue;
582
+ if (chunk.scope === coreScope) {
583
+ addBoost(chunk, 40, `E10:room-core-scope:${platform}`);
584
+ if (platform !== 'vue' && chunk.doc_kind === 'capability_matrix') {
585
+ addBoost(chunk, 120, `E10:room-matrix:${platform}`);
586
+ }
587
+ }
588
+ if (coreIntent && chunk.scope === presetScope) {
589
+ addPenalty(chunk, 120);
590
+ }
591
+ if (presetIntent && chunk.scope === coreScope && chunk.capability_status === 'unsupported') {
592
+ addPenalty(chunk, 180);
593
+ }
594
+ }
595
+ for (const feature of featureHits) {
596
+ for (const chunk of pool) {
597
+ if (chunk.product !== 'room')
598
+ continue;
599
+ if (platform === 'vue' && chunk.scope === coreScope && chunk.source.endsWith(feature.fileName)) {
600
+ addBoost(chunk, 220, `E10:room-vue-feature:${feature.fileName}`);
601
+ }
602
+ if (platform !== 'vue' && chunk.scope === coreScope) {
603
+ if (chunk.source.endsWith('unsupported-features.md') && feature.titlePattern.test(chunk.title)) {
604
+ addBoost(chunk, 280, `E10:room-unsupported:${platform}:${feature.fileName}`);
605
+ }
606
+ if (chunk.doc_kind === 'capability_matrix') {
607
+ addBoost(chunk, 120, `E10:room-matrix:${platform}:${feature.fileName}`);
608
+ }
609
+ }
610
+ }
611
+ }
612
+ }
613
+ }
614
+ // E12/E13: CallKit type disambiguation + calls best-practice boost
615
+ if (norm.product?.includes('call')) {
616
+ const isStatusIntent = /statuschanged|\bstatus\b|callmediatype|media\s*type|通话状态|状态回调/i.test(prompt);
617
+ const isStoreIntent = /callstatus|callrole|iuserinfo|storename\.?call|store|name\s*constant|enum\s*value|field\s*definition|字段定义/i.test(prompt);
618
+ const isEngineInvitationIntent = /tuicallengine|on_call_received|call\s*invitation|incoming\s*call|accept\(|reject\(|accept\s*call|reject\s*call|inviteid|userData|邀请|来电|接听|拒接|信令/i.test(prompt);
619
+ 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);
620
+ const isLogIntent = /setloglevel|log\s*level|disable\s*log|console\s*log|日志级别|关闭\s*log/i.test(prompt);
621
+ for (const chunk of pool) {
622
+ if (chunk.product !== 'call')
623
+ continue;
624
+ const source = chunk.source.toLowerCase();
625
+ if (isStatusIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
626
+ addBoost(chunk, 180, 'E12:callkit-vue-status');
627
+ }
628
+ if (isStoreIntent && source.includes('knowledge/callkit/core-sdk/web/')) {
629
+ addBoost(chunk, 220, 'E12:callkit-core-store');
630
+ }
631
+ if (isStoreIntent && source.includes('knowledge/callkit/preset/vue/')) {
632
+ addPenalty(chunk, 80);
633
+ }
634
+ if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
635
+ addBoost(chunk, 300, 'E13A:callengine-invitation');
636
+ }
637
+ if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
638
+ addPenalty(chunk, 80);
639
+ }
640
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
641
+ addBoost(chunk, 300, 'E13B:callkit-call-vs-calls');
642
+ }
643
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
644
+ addPenalty(chunk, 80);
645
+ }
646
+ if (isCallkitDiffIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
647
+ addPenalty(chunk, 40);
648
+ }
649
+ if (isLogIntent && source.includes('knowledge/callkit/best-practice/web/callengine-log-control.md')) {
650
+ addBoost(chunk, 260, 'E13:callengine-log-control');
651
+ }
652
+ }
653
+ }
654
+ return { boosts, exactHits, urlRowHitChunkIds: [...urlRowHitChunkIds] };
497
655
  }
@@ -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;
@@ -12,7 +12,7 @@ const CROSS_PLATFORM_PROMPT = /计费|套餐|价格|UserSig\s*原理|签发流
12
12
  const PLATFORM_PROMPT = /API|组件|怎么用|怎么开|怎么设置|怎么配置|虚拟背景|屏幕分享|enterRoom|SDK|插件|集成步骤|客户端|Feature|主题定制|连麦|上麦/i;
13
13
  /**
14
14
  * push 必须问平台的强信号:仅当 prompt 明确提到具体「平台」(android/ios/flutter/...)时才拦询问。
15
- * 厂商(小米/OPPO/华为/FCM 等)不算平台——它们会命中写写对齐后的平台级配置页(如 knowledge/push/config/android.md),
15
+ * 厂商(小米/OPPO/华为/FCM 等)不算平台——它们全部归属 android 厂商配置子分类(knowledge/push/config/android/{vendor}.md),
16
16
  * 问厂商问题不需要再让用户选平台。
17
17
  */
18
18
  const PUSH_PLATFORM_SPECIFIC_PROMPT = /\b(android|ios|flutter|harmonyos|react[\s-]?native|unity|unreal|donut|uni[\s-]?app)\b/i;
@@ -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))