@tencentcloud/sdk-mcp 1.6.7 → 1.7.0

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 (331) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +54 -35
  3. package/knowledge/build-index.js +32 -5
  4. package/knowledge/chunker.js +82 -14
  5. package/knowledge/chunking-policy.js +100 -0
  6. package/knowledge/content-loader.js +3 -1
  7. package/knowledge/frontmatter-meta.js +167 -0
  8. package/knowledge/path-meta.js +28 -6
  9. package/knowledge/search/exact-lookup.js +26 -123
  10. package/knowledge/search/filter-pool.js +17 -26
  11. package/knowledge/search/framework-fallback.js +22 -0
  12. package/knowledge/search/intent-router.js +13 -0
  13. package/knowledge/search/query-normalizer.js +129 -0
  14. package/knowledge/search/search-core.js +391 -0
  15. package/knowledge/search/search-knowledge.js +351 -323
  16. package/knowledge/search/search-message.js +87 -0
  17. package/knowledge/search/search-pass.js +428 -0
  18. package/knowledge/search/search-types.js +1 -0
  19. package/knowledge/search/url-row-scorer.js +258 -0
  20. package/package.json +1 -1
  21. package/resource/_schema/feature-aliases.yaml +1 -0
  22. package/resource/_schema/query-normalization.yaml +9 -0
  23. package/resource/index/manifest.json +1 -1
  24. package/resource/integration/callkit/preset/android/integration.md +0 -14
  25. package/resource/integration/callkit/preset/flutter/integration.md +0 -9
  26. package/resource/integration/callkit/preset/ios/integration.md +2 -14
  27. package/resource/integration/callkit/preset/react/integration.md +0 -21
  28. package/resource/integration/callkit/preset/vue/integration.md +0 -27
  29. package/resource/integration/chat/preset/android/integration.md +3 -10
  30. package/resource/integration/chat/preset/flutter/integration.md +12 -13
  31. package/resource/integration/chat/preset/ios/integration.md +9 -16
  32. package/resource/integration/chat/preset/react/integration.md +1 -9
  33. package/resource/integration/chat/preset/uni-app/integration.md +0 -9
  34. package/resource/integration/chat/preset/vue/integration.md +3 -13
  35. package/resource/integration/livekit/preset/live/android/live-host-integration.md +0 -4
  36. package/resource/integration/livekit/preset/live/android/prepare-integration.md +8 -21
  37. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +0 -1
  38. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +0 -5
  39. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +0 -4
  40. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -9
  41. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +1 -5
  42. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +38 -147
  43. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +1 -6
  44. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +432 -286
  45. package/resource/integration/roomkit/preset/vue/integration.md +11 -24
  46. package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +64 -0
  47. package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +81 -0
  48. package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +84 -0
  49. package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +114 -0
  50. package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +128 -0
  51. package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +72 -0
  52. package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +87 -0
  53. package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +83 -0
  54. package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
  55. package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +103 -0
  56. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +1 -20
  57. package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -12
  58. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +1 -12
  59. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -19
  60. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -13
  61. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -17
  62. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -13
  63. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -13
  64. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -12
  65. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +0 -1
  66. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +0 -2
  67. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -15
  68. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -15
  69. package/resource/knowledge/callkit/core-sdk/web/call-engine.md +0 -1
  70. package/resource/knowledge/callkit/core-sdk/web/call-event.md +0 -1
  71. package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +0 -1
  72. package/resource/knowledge/callkit/faq/android.md +5 -15
  73. package/resource/knowledge/callkit/faq/common.md +0 -1
  74. package/resource/knowledge/callkit/faq/ios.md +1 -4
  75. package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
  76. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +0 -5
  77. package/resource/knowledge/callkit/faq/web.md +1 -5
  78. package/resource/knowledge/callkit/preset/android/api.md +0 -6
  79. package/resource/knowledge/callkit/preset/ios/api.md +0 -4
  80. package/resource/knowledge/callkit/preset/miniprogram/api.md +0 -2
  81. package/resource/knowledge/callkit/preset/react/api.md +3 -154
  82. package/resource/knowledge/callkit/preset/vue/api.md +3 -42
  83. package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +71 -0
  84. package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +67 -0
  85. package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +63 -0
  86. package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +65 -0
  87. package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +72 -0
  88. package/resource/knowledge/chat/best-practice/common/message-receive-event.md +70 -0
  89. package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +69 -0
  90. package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
  91. package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +118 -0
  92. package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +67 -0
  93. package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +68 -0
  94. package/resource/knowledge/chat/best-practice/web/audio-message-send.md +123 -0
  95. package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -4
  96. package/resource/knowledge/chat/preset/android/features/contact-list.md +0 -5
  97. package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -9
  98. package/resource/knowledge/chat/preset/android/features/language.md +1 -11
  99. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -8
  100. package/resource/knowledge/chat/preset/android/features/message-list.md +1 -10
  101. package/resource/knowledge/chat/preset/android/features/search.md +0 -7
  102. package/resource/knowledge/chat/preset/android/features/theme.md +0 -6
  103. package/resource/knowledge/chat/preset/android-view/integration.md +3 -5
  104. package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +1 -4
  105. package/resource/knowledge/chat/preset/flutter/features/contact-list.md +1 -6
  106. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +1 -9
  107. package/resource/knowledge/chat/preset/flutter/features/language.md +0 -3
  108. package/resource/knowledge/chat/preset/flutter/features/message-input.md +1 -8
  109. package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -10
  110. package/resource/knowledge/chat/preset/flutter/features/search.md +0 -7
  111. package/resource/knowledge/chat/preset/flutter/features/theme.md +0 -6
  112. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -4
  113. package/resource/knowledge/chat/preset/ios/features/contact-list.md +1 -8
  114. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -9
  115. package/resource/knowledge/chat/preset/ios/features/language.md +0 -11
  116. package/resource/knowledge/chat/preset/ios/features/message-input.md +1 -8
  117. package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -10
  118. package/resource/knowledge/chat/preset/ios/features/search.md +0 -5
  119. package/resource/knowledge/chat/preset/ios/features/theme.md +0 -6
  120. package/resource/knowledge/chat/preset/ios-uikit/integration.md +5 -17
  121. package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -2
  122. package/resource/knowledge/chat/preset/react/features/contact-list.md +0 -23
  123. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +2 -11
  124. package/resource/knowledge/chat/preset/react/features/conversation-list.md +2 -23
  125. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +0 -5
  126. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  127. package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -3
  128. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -5
  129. package/resource/knowledge/chat/preset/vue/features/contact-list.md +3 -9
  130. package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +0 -3
  131. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +2 -13
  132. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +2 -5
  133. package/resource/knowledge/chat/preset/vue/features/conversation-search.md +1 -0
  134. package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -4
  135. package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -4
  136. package/resource/knowledge/chat/preset/vue/features/search.md +4 -1
  137. package/resource/knowledge/chat/preset/vue/features/theme.md +4 -6
  138. package/resource/knowledge/chat/urls/sdk/web.md +1 -1
  139. package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +124 -0
  140. package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
  141. package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
  142. package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
  143. package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
  144. package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +126 -0
  145. package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +130 -0
  146. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
  147. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +0 -3
  148. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +0 -3
  149. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
  150. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
  151. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
  152. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
  153. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +0 -2
  154. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
  155. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
  156. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
  157. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +0 -2
  158. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
  159. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
  160. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +0 -3
  161. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
  162. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +0 -3
  163. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
  164. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
  165. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
  166. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +0 -2
  167. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
  168. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
  169. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
  170. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +0 -2
  171. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
  172. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
  173. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +0 -3
  174. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
  175. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +0 -3
  176. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
  177. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
  178. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
  179. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +0 -2
  180. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
  181. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
  182. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
  183. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +0 -2
  184. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
  185. package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +2 -2
  186. package/resource/knowledge/livekit/core-sdk/features/android/audio-effect.md +1 -3
  187. package/resource/knowledge/livekit/core-sdk/features/android/barrage.md +2 -2
  188. package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
  189. package/resource/knowledge/livekit/core-sdk/features/android/gift.md +2 -7
  190. package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +2 -2
  191. package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +2 -2
  192. package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -4
  193. package/resource/knowledge/livekit/core-sdk/features/flutter/barrage.md +2 -2
  194. package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
  195. package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +3 -7
  196. package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -2
  197. package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +2 -2
  198. package/resource/knowledge/livekit/core-sdk/features/ios/audio-effect.md +1 -3
  199. package/resource/knowledge/livekit/core-sdk/features/ios/barrage.md +2 -2
  200. package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
  201. package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +2 -7
  202. package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +2 -2
  203. package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +2 -2
  204. package/resource/knowledge/livekit/core-sdk/features/uni-app/audio-effect.md +1 -2
  205. package/resource/knowledge/livekit/core-sdk/features/uni-app/barrage.md +2 -2
  206. package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
  207. package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +4 -8
  208. package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +2 -2
  209. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -3
  210. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -2
  211. package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -7
  212. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
  213. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -2
  214. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -7
  215. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -3
  216. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -2
  217. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -7
  218. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -2
  219. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -2
  220. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -5
  221. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -3
  222. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +4 -13
  223. package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +5 -5
  224. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +0 -3
  225. package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +18 -21
  226. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
  227. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +2 -11
  228. package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +8 -8
  229. package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
  230. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +1 -4
  231. package/resource/knowledge/livekit/faq/error-code.md +1 -1
  232. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +0 -5
  233. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
  234. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -3
  235. package/resource/knowledge/push/api-reference/donut.md +1 -6
  236. package/resource/knowledge/push/api-reference/harmonyos.md +0 -2
  237. package/resource/knowledge/push/api-reference/react-native.md +0 -3
  238. package/resource/knowledge/push/api-reference/uni-app.md +3 -5
  239. package/resource/knowledge/push/api-reference/unity.md +0 -1
  240. package/resource/knowledge/push/api-reference/unreal-engine.md +0 -1
  241. package/resource/knowledge/push/config/android/fcm.md +0 -6
  242. package/resource/knowledge/push/config/android/honor.md +1 -7
  243. package/resource/knowledge/push/config/android/huawei.md +1 -9
  244. package/resource/knowledge/push/config/android/meizu.md +1 -7
  245. package/resource/knowledge/push/config/android/oppo.md +1 -3
  246. package/resource/knowledge/push/config/android/vivo.md +1 -12
  247. package/resource/knowledge/push/config/android/xiaomi.md +0 -5
  248. package/resource/knowledge/push/config/donut.md +0 -12
  249. package/resource/knowledge/push/config/harmonyos.md +18 -7
  250. package/resource/knowledge/push/config/ios.md +26 -33
  251. package/resource/knowledge/push/config/react-native.md +0 -30
  252. package/resource/knowledge/push/config/unity.md +0 -30
  253. package/resource/knowledge/push/config/unreal-engine.md +0 -30
  254. package/resource/knowledge/push/integration/android.md +148 -57
  255. package/resource/knowledge/push/integration/donut.md +5 -21
  256. package/resource/knowledge/push/integration/flutter.md +4 -6
  257. package/resource/knowledge/push/integration/harmonyos.md +17 -16
  258. package/resource/knowledge/push/integration/ios.md +30 -18
  259. package/resource/knowledge/push/integration/react-native.md +10 -60
  260. package/resource/knowledge/push/integration/uni-app.md +3 -25
  261. package/resource/knowledge/push/integration/unity.md +8 -77
  262. package/resource/knowledge/push/integration/unreal-engine.md +37 -96
  263. package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +75 -0
  264. package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +88 -0
  265. package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +87 -0
  266. package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +73 -0
  267. package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +115 -0
  268. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
  269. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
  270. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +3 -5
  271. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +4 -6
  272. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
  273. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
  274. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +2 -4
  275. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -6
  276. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
  277. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
  278. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +3 -5
  279. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -6
  280. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -5
  281. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -3
  282. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -5
  283. package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -3
  284. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +1 -7
  285. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +1 -2
  286. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +0 -1
  287. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -3
  288. package/resource/knowledge/roomkit/preset/android/integration.md +202 -6
  289. package/resource/knowledge/roomkit/preset/flutter/integration.md +1 -16
  290. package/resource/knowledge/roomkit/preset/ios/integration.md +201 -7
  291. package/resource/knowledge/roomkit/preset/react/integration.md +205 -4
  292. package/resource/knowledge/rtcengine/web/api.md +0 -2
  293. package/resource/knowledge/rtcengine/web/plugin/22-advanced-audio-mixer.md +2 -2
  294. package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +3 -3
  295. package/resource/knowledge/rtcengine/web/plugin/28-advanced-beauty.md +1 -1
  296. package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
  297. package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -4
  298. package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +2 -0
  299. package/resource/knowledge/share/userSig.md +2 -2
  300. package/resource/knowledge/trtc/android/TRTCCloud.md +16 -16
  301. package/resource/knowledge/trtc/android/TRTCCloudDef.md +5 -5
  302. package/resource/knowledge/trtc/android/TRTCCloudListener.md +3 -3
  303. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +2 -2
  304. package/resource/knowledge/trtc/android/TXDeviceManager.md +1 -1
  305. package/resource/knowledge/trtc/c++/ITRTCCloud.md +14 -14
  306. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +2 -2
  307. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -4
  308. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +3 -3
  309. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +5 -5
  310. package/resource/knowledge/trtc/ios/TRTCCloud.md +14 -14
  311. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +3 -3
  312. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +2 -2
  313. package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -4
  314. package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +5 -5
  315. package/server.js +8 -3
  316. package/tools/common/finalize_answer.js +9 -1
  317. package/tools/common/search_trtc_knowledge.js +3 -1
  318. package/tools/definitions/finalize_answer_def.js +2 -2
  319. package/tools/definitions/integration-boundary.js +2 -1
  320. package/tools/definitions/search_trtc_knowledge_def.js +2 -1
  321. package/utils/report-cls-client.js +3 -3
  322. package/utils/report-es-client.js +1 -1
  323. package/cursor-setting.png +0 -0
  324. package/mcp-server-prompt.png +0 -0
  325. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
  326. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -20
  327. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
  328. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -475
  329. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -587
  330. package/resource/knowledge/callkit/preset/web/api.md +0 -79
  331. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
@@ -0,0 +1,391 @@
1
+ import { getSourceFileContent } from '../content-loader.js';
2
+ import { resolveFragmentDocUrls } from '../doc-url-resolver.js';
3
+ import { hasExplicitFrameworkMatch, hasFrameworkFallbackMatch } from './framework-fallback.js';
4
+ import { isProductScopePrompt } from './product-scope-intent.js';
5
+ const CODE_HINT_PREFIX = '【代码示例,须与目标端一致】';
6
+ const CITATION_PREFIX = '[来源:';
7
+ export function postProcess(ranked, chunksById, limit, opts) {
8
+ const buildFragment = (chunk, score, rank, aggregated = false) => {
9
+ const contentWithHint = chunk.contains_code
10
+ ? `${CODE_HINT_PREFIX}\n${chunk.content}`
11
+ : chunk.content;
12
+ return {
13
+ rank,
14
+ score,
15
+ title: chunk.title,
16
+ content: contentWithHint,
17
+ source: chunk.source,
18
+ doc_urls: resolveFragmentDocUrls(chunk.source, chunk.content, getSourceFileContent(chunk.source)),
19
+ product: chunk.product,
20
+ framework: chunk.framework,
21
+ types: chunk.types,
22
+ variant: chunk.variant,
23
+ scope: chunk.scope,
24
+ doc_kind: chunk.doc_kind,
25
+ capability_status: chunk.capability_status,
26
+ api_names: chunk.api_names,
27
+ contains_code: chunk.contains_code,
28
+ citation: `${CITATION_PREFIX} ${chunk.id}]${aggregated ? '[aggregated]' : ''}`,
29
+ ...(aggregated ? { aggregated: true } : {}),
30
+ chunk_id: chunk.id,
31
+ };
32
+ };
33
+ if (opts?.fullDocumentMode && opts.preferredSource) {
34
+ const scoreMap = new Map(ranked.map((item) => [item.id, item.score]));
35
+ const sections = [...chunksById.values()]
36
+ .filter((chunk) => chunk.source === opts.preferredSource)
37
+ .sort((a, b) => a.char_start - b.char_start);
38
+ if (sections.length > 0) {
39
+ return sections.map((section, idx) => buildFragment(section, scoreMap.get(section.id) ?? 0, idx + 1));
40
+ }
41
+ }
42
+ const sourceCount = {};
43
+ const urlMappingSourceCount = {};
44
+ /** 已入选的 push config/android/{vendor} 文件,用于抑制其他厂商噪声 */
45
+ let selectedVendorFile = null;
46
+ const fragments = [];
47
+ for (const item of ranked) {
48
+ const chunk = chunksById.get(item.id);
49
+ if (!chunk)
50
+ continue;
51
+ if (opts?.preferredSource && chunk.source !== opts.preferredSource)
52
+ continue;
53
+ const isUrlMapping = Boolean(isUrlMappingSource(chunk.source));
54
+ const isPinnedUrlRow = isUrlMapping && (opts?.pinnedUrlRowChunkIds?.has(chunk.id) ?? false);
55
+ if (isUrlMapping) {
56
+ const urlCount = urlMappingSourceCount[chunk.source] ?? 0;
57
+ if (!isPinnedUrlRow && urlCount >= 1)
58
+ continue;
59
+ urlMappingSourceCount[chunk.source] = urlCount + 1;
60
+ }
61
+ else {
62
+ const count = sourceCount[chunk.source] ?? 0;
63
+ if (count >= 3)
64
+ continue;
65
+ sourceCount[chunk.source] = count + 1;
66
+ }
67
+ // 当用户明确问某厂商时,抑制同目录下其他厂商文档的噪声
68
+ // 规则:如果已有 config/android/{vendor}.md 入选,
69
+ // 后续其他 config/android/{other}.md 跳过
70
+ const isVendorDoc = chunk.source.match(/^knowledge\/push\/config\/android\/[a-z]+\.md$/);
71
+ if (isVendorDoc) {
72
+ if (!selectedVendorFile) {
73
+ selectedVendorFile = chunk.source;
74
+ }
75
+ else if (chunk.source !== selectedVendorFile) {
76
+ continue; // 跳过其他厂商
77
+ }
78
+ }
79
+ // 当已明确命中了厂商配置页后,后续的 push 通用文件(integration/、其他 config/)不再有意义
80
+ // 只保留同厂商文件(已由 vendor dedup 处理)和 overview 综述,其他 push 通用文档视为噪声
81
+ if (selectedVendorFile && chunk.source.startsWith('knowledge/push/') && !chunk.source.includes('/overview/')) {
82
+ if (chunk.source !== selectedVendorFile)
83
+ continue;
84
+ }
85
+ const firstPush = fragments.length === 0;
86
+ if (firstPush) {
87
+ // 首条不设分数截止,至少保证 1 条返回
88
+ }
89
+ else if (!isPinnedUrlRow) {
90
+ // 分数衰减到 top 的 5% 以下时停止,不硬填到 limit
91
+ // chat/urls 的行级精确命中(E7)不受该规则截断,保证多子主题可并行返回
92
+ const topScore = fragments[0].score;
93
+ if (topScore > 0 && item.score < topScore * 0.05)
94
+ break;
95
+ }
96
+ const aggregated = Boolean(chunk.aggregable) && fragments.length > 0 && fragments[0].source === chunk.source;
97
+ fragments.push(buildFragment(chunk, item.score, fragments.length + 1, aggregated));
98
+ if (fragments.length >= limit)
99
+ break;
100
+ }
101
+ return fragments;
102
+ }
103
+ export function isUrlMappingSource(source) {
104
+ const normalized = source.replace(/\\/g, '/');
105
+ const match = normalized.match(/knowledge\/chat\/urls\/(.+\.md)$/);
106
+ if (!match)
107
+ return null;
108
+ return match[1].replace(/\.md$/, '').replace(/\/index$/, '');
109
+ }
110
+ export function partitionFragments(fragments) {
111
+ const urlMapping = [];
112
+ const localDoc = [];
113
+ for (const fragment of fragments) {
114
+ if (isUrlMappingSource(fragment.source)) {
115
+ urlMapping.push(fragment);
116
+ }
117
+ else {
118
+ localDoc.push(fragment);
119
+ }
120
+ }
121
+ const urlMappingKinds = [...new Set(urlMapping.map((f) => isUrlMappingSource(f.source)).filter(Boolean))];
122
+ return { urlMapping, localDoc, urlMappingKinds };
123
+ }
124
+ export function isNarrativeSource(source) {
125
+ const normalized = source.replace(/\\/g, '/');
126
+ return /\/preset\/.+(?:integration\.md|-integration\.md)$/i.test(normalized)
127
+ || /\/integration\.md$/i.test(normalized)
128
+ || /\/guide\.md$/i.test(normalized)
129
+ || /\/getting-started\.md$/i.test(normalized);
130
+ }
131
+ export function sourceTitle(source) {
132
+ const base = source.split('/').pop()?.replace(/\.md$/i, '') ?? source;
133
+ return base || source;
134
+ }
135
+ export function pickNarrativeSource(_exactHits, ranked, poolWithContent) {
136
+ const bySource = new Map();
137
+ const chunksById = new Map(poolWithContent.map((chunk) => [chunk.id, chunk]));
138
+ const upsertSource = (source, score, weight) => {
139
+ const prev = bySource.get(source);
140
+ if (!prev) {
141
+ bySource.set(source, {
142
+ hitCount: 1,
143
+ bestScore: score,
144
+ weightedScore: score * weight,
145
+ });
146
+ return;
147
+ }
148
+ bySource.set(source, {
149
+ hitCount: prev.hitCount + 1,
150
+ bestScore: Math.max(prev.bestScore, score),
151
+ weightedScore: prev.weightedScore + score * weight,
152
+ });
153
+ };
154
+ const topScore = ranked[0]?.score ?? 0;
155
+ for (let idx = 0; idx < ranked.length; idx += 1) {
156
+ const item = ranked[idx];
157
+ const chunk = chunksById.get(item.id);
158
+ if (!chunk || !isNarrativeSource(chunk.source))
159
+ continue;
160
+ if (topScore > 0 && idx > 120 && item.score < topScore * 0.03)
161
+ break;
162
+ const weight = idx < 20 ? 1 : idx < 80 ? 0.7 : 0.5;
163
+ upsertSource(chunk.source, item.score, weight);
164
+ }
165
+ const candidates = [...bySource.entries()].sort((a, b) => {
166
+ if (b[1].weightedScore !== a[1].weightedScore)
167
+ return b[1].weightedScore - a[1].weightedScore;
168
+ if (b[1].hitCount !== a[1].hitCount)
169
+ return b[1].hitCount - a[1].hitCount;
170
+ return b[1].bestScore - a[1].bestScore;
171
+ });
172
+ return candidates[0]?.[0] ?? null;
173
+ }
174
+ export function assessNarrativeCompleteness(document, prompt) {
175
+ if (!document) {
176
+ return {
177
+ isComplete: false,
178
+ score: 0,
179
+ sectionCount: 0,
180
+ totalChars: 0,
181
+ reason: 'no_document',
182
+ };
183
+ }
184
+ const isStepByStepIntent = /从零|完整|全流程|一步一步|step\s*by\s*step|full\s+(guide|tutorial|flow|integration)|complete\s+(guide|tutorial|integration)|getting\s*started|quick\s*start/i.test(prompt);
185
+ const minSections = isStepByStepIntent ? 4 : 3;
186
+ const minChars = isStepByStepIntent ? 1200 : 700;
187
+ const sectionCount = document.section_count;
188
+ const totalChars = document.sections.reduce((acc, section) => acc + section.content.length, 0);
189
+ const hasStepLikeSection = document.sections.some((section) => /步骤|step|准备|安装|初始化|接入|集成|创建|运行|验证|上线|部署/i.test(section.title)
190
+ || /步骤|step|初始化|接入|集成|运行|验证|上线|部署/i.test(section.content.slice(0, 120)));
191
+ const issues = [];
192
+ if (sectionCount < minSections)
193
+ issues.push('section_count_low');
194
+ if (totalChars < minChars)
195
+ issues.push('content_too_short');
196
+ if (isStepByStepIntent && !hasStepLikeSection)
197
+ issues.push('missing_step_sections');
198
+ const score = Number((Math.min(sectionCount / minSections, 1) * 0.45
199
+ + Math.min(totalChars / minChars, 1) * 0.45
200
+ + ((isStepByStepIntent ? hasStepLikeSection : true) ? 0.1 : 0)).toFixed(2));
201
+ return {
202
+ isComplete: issues.length === 0,
203
+ score,
204
+ sectionCount,
205
+ totalChars,
206
+ reason: issues.length ? issues.join(',') : 'ok',
207
+ };
208
+ }
209
+ export function buildNarrativeDocument(source, allChunks) {
210
+ const chunks = allChunks
211
+ .filter((chunk) => chunk.source === source)
212
+ .sort((a, b) => a.char_start - b.char_start);
213
+ if (!chunks.length)
214
+ return null;
215
+ const full = getSourceFileContent(source);
216
+ const sections = chunks
217
+ .map((chunk, idx) => {
218
+ const content = full.slice(chunk.char_start, chunk.char_end).trim();
219
+ return {
220
+ rank: idx + 1,
221
+ title: chunk.title,
222
+ content,
223
+ char_start: chunk.char_start,
224
+ char_end: chunk.char_end,
225
+ contains_code: chunk.contains_code,
226
+ api_names: chunk.api_names,
227
+ chunk_id: chunk.id,
228
+ };
229
+ })
230
+ .filter((section) => section.content.length > 0);
231
+ if (!sections.length)
232
+ return null;
233
+ const first = chunks[0];
234
+ return {
235
+ source,
236
+ title: first.title === 'full' ? sourceTitle(source) : first.title,
237
+ doc_urls: resolveFragmentDocUrls(source, sections[0].content, full),
238
+ product: first.product,
239
+ framework: first.framework,
240
+ types: first.types,
241
+ section_count: sections.length,
242
+ sections,
243
+ };
244
+ }
245
+ export function buildDiscoveryCatalog(ranked, poolWithContent, limit) {
246
+ const chunksById = new Map(poolWithContent.map((chunk) => [chunk.id, chunk]));
247
+ const seenSource = new Set();
248
+ const catalog = [];
249
+ for (const item of ranked) {
250
+ const chunk = chunksById.get(item.id);
251
+ if (!chunk)
252
+ continue;
253
+ if (isUrlMappingSource(chunk.source))
254
+ continue;
255
+ if (seenSource.has(chunk.source))
256
+ continue;
257
+ seenSource.add(chunk.source);
258
+ catalog.push({
259
+ rank: catalog.length + 1,
260
+ source: chunk.source,
261
+ title: chunk.title === 'full' ? sourceTitle(chunk.source) : chunk.title,
262
+ doc_urls: resolveFragmentDocUrls(chunk.source, chunk.content, getSourceFileContent(chunk.source)),
263
+ product: chunk.product,
264
+ framework: chunk.framework,
265
+ types: chunk.types,
266
+ score: Number(item.score.toFixed(2)),
267
+ });
268
+ if (catalog.length >= limit)
269
+ break;
270
+ }
271
+ return catalog;
272
+ }
273
+ export function hasBestPracticeFragment(fragments) {
274
+ return fragments.some((f) => /\/best-practice\//i.test(f.source));
275
+ }
276
+ export function inferQueryApiTokens(prompt) {
277
+ const tokens = new Set();
278
+ // 仅保留 API 形态 token,剔除产品/平台品牌词,避免把“TRTC Conference Web ...”误判为 API 缺口。
279
+ const upperNoise = new Set([
280
+ 'SDK', 'API', 'HTTP', 'HTTPS', 'JSON', 'CALL', 'NAME', 'STATUS',
281
+ 'TRTC', 'TENCENT', 'WEB', 'VUE', 'REACT', 'ROOMKIT', 'LIVEKIT', 'CALLKIT',
282
+ ]);
283
+ const platformNoise = new Set([
284
+ 'ios', 'android', 'flutter', 'web', 'react', 'vue', 'miniprogram',
285
+ 'harmonyos', 'react-native', 'unity', 'unreal', 'unreal-engine', 'donut', 'uni-app',
286
+ 'pc', 'h5',
287
+ ]);
288
+ for (const match of prompt.matchAll(/\b([a-z]+[A-Z][A-Za-z0-9_]*)\b/g)) {
289
+ tokens.add(match[1]);
290
+ }
291
+ for (const match of prompt.matchAll(/\b([A-Z][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*)\b/g)) {
292
+ tokens.add(match[1]);
293
+ }
294
+ for (const match of prompt.matchAll(/\b(use[A-Z]\w*)\b/g)) {
295
+ tokens.add(match[1]);
296
+ }
297
+ for (const match of prompt.matchAll(/\b(I[A-Z][A-Za-z0-9_]*)\b/g)) {
298
+ tokens.add(match[1]);
299
+ }
300
+ for (const match of prompt.matchAll(/\b([A-Z][A-Za-z0-9_]*\.[A-Z_][A-Z0-9_]*)\b/g)) {
301
+ tokens.add(match[1]);
302
+ }
303
+ for (const match of prompt.matchAll(/\b([A-Z_]{3,})\b/g)) {
304
+ const token = match[1];
305
+ if (!upperNoise.has(token))
306
+ tokens.add(token);
307
+ }
308
+ return [...tokens].filter((token) => !platformNoise.has(token.toLowerCase()));
309
+ }
310
+ export function tokenInChunk(token, chunk) {
311
+ if (chunk.api_names?.some((name) => name.toLowerCase() === token.toLowerCase()))
312
+ return true;
313
+ if (chunk.symbols?.some((name) => name.toLowerCase() === token.toLowerCase()))
314
+ return true;
315
+ const low = token.toLowerCase();
316
+ return chunk.title.toLowerCase().includes(low) || chunk.source.toLowerCase().includes(low);
317
+ }
318
+ export function computeApiNameCoverage(tokens, candidates) {
319
+ if (!tokens.length)
320
+ return 1;
321
+ const hit = tokens.filter((token) => candidates.some((chunk) => tokenInChunk(token, chunk))).length;
322
+ return Number((hit / tokens.length).toFixed(2));
323
+ }
324
+ export function computeMissingApiTokens(tokens, candidates) {
325
+ if (!tokens.length)
326
+ return [];
327
+ return tokens.filter((token) => !candidates.some((chunk) => tokenInChunk(token, chunk)));
328
+ }
329
+ export function hasProductScopeIntent(prompt) {
330
+ return isProductScopePrompt(prompt);
331
+ }
332
+ export function hasNativeTrtcApiSignal(prompt, queryApiTokens) {
333
+ if (/\bTRTCCloud\b|\bTRTCRenderParams\b|\bTXDeviceManager\b|setLocalRenderParams|startLocalPreview|stopLocalPreview/i.test(prompt)) {
334
+ return true;
335
+ }
336
+ return queryApiTokens.some((token) => /^(TRTC|TX)[A-Za-z0-9_]+$/.test(token)
337
+ || /^(set|get|start|stop|enable|disable)[A-Z][A-Za-z0-9_]+$/.test(token));
338
+ }
339
+ export function hasNativeClientFramework(frameworks) {
340
+ if (!frameworks?.length)
341
+ return false;
342
+ return frameworks.some((fw) => ['android', 'ios', 'flutter', 'c++'].includes(fw));
343
+ }
344
+ export function applyRankMultipliers(ranked, chunksById, opts) {
345
+ const adjusted = ranked.map((item) => {
346
+ const chunk = chunksById.get(item.id);
347
+ if (!chunk)
348
+ return item;
349
+ let multiplier = 1;
350
+ // A2: 传了 product 时,命中 scope 的通配语料允许召回但降权
351
+ if (opts.product?.length && chunk.product === '*') {
352
+ multiplier *= 0.2;
353
+ }
354
+ // F2: framework 软降权(保留硬过滤,处理 fallback/边界残留)
355
+ if (opts.framework && opts.frameworks?.length && !chunk.framework.includes('*')) {
356
+ const explicitMatch = hasExplicitFrameworkMatch(chunk.framework, opts.frameworks);
357
+ const fallbackMatch = hasFrameworkFallbackMatch(chunk, opts);
358
+ if (!explicitMatch && !fallbackMatch) {
359
+ multiplier *= 0.2;
360
+ }
361
+ }
362
+ return { ...item, score: item.score * multiplier };
363
+ });
364
+ return adjusted.sort((a, b) => b.score - a.score);
365
+ }
366
+ /**
367
+ * 多因子置信度评估:exact 命中 + 分数梯度 + API 覆盖度。
368
+ */
369
+ export function assessConfidence(fragments, exactHits, apiNameCoverage, queryApiTokens) {
370
+ if (fragments.length === 0) {
371
+ return { confidence: 'none', status: 'empty' };
372
+ }
373
+ const top = fragments[0].score;
374
+ const second = fragments[1]?.score ?? 0;
375
+ const ratio = second > 0 ? top / second : Infinity;
376
+ let confidence;
377
+ if (exactHits.length > 0 || top >= 50)
378
+ confidence = 'high';
379
+ else if (top >= 12 && ratio >= 1.25)
380
+ confidence = 'medium';
381
+ else if (top >= 6 && ratio >= 1.12)
382
+ confidence = 'medium';
383
+ else
384
+ confidence = 'low';
385
+ // D2: API 覆盖过低时,confidence 上限降为 low
386
+ if (queryApiTokens.length > 0 && apiNameCoverage < 0.3) {
387
+ confidence = 'low';
388
+ }
389
+ const status = confidence === 'low' ? 'low_confidence' : 'success';
390
+ return { confidence, status };
391
+ }