@tencentcloud/sdk-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 (303) hide show
  1. package/knowledge/build-index.js +1 -1
  2. package/knowledge/chunker.js +81 -52
  3. package/knowledge/path-meta.js +181 -21
  4. package/knowledge/search/exact-lookup.js +245 -43
  5. package/knowledge/search/filter-pool.js +73 -19
  6. package/knowledge/search/product-scope-intent.js +2 -2
  7. package/knowledge/search/requires-framework.js +1 -1
  8. package/knowledge/search/search-knowledge.js +246 -60
  9. package/package.json +1 -1
  10. package/resource/_schema/feature-aliases.yaml +1 -0
  11. package/resource/integration/callkit/preset/android/integration.md +3 -5
  12. package/resource/integration/callkit/preset/flutter/integration.md +2 -3
  13. package/resource/integration/callkit/preset/ios/integration.md +2 -5
  14. package/resource/integration/callkit/preset/react/integration.md +12 -26
  15. package/resource/integration/callkit/preset/vue/integration.md +17 -33
  16. package/resource/integration/chat/preset/android/integration.md +44 -14
  17. package/resource/integration/chat/preset/flutter/integration.md +54 -13
  18. package/resource/integration/chat/preset/ios/integration.md +42 -6
  19. package/resource/integration/chat/preset/react/integration.md +30 -28
  20. package/resource/integration/chat/preset/uni-app/integration.md +101 -40
  21. package/resource/integration/chat/preset/vue/integration.md +62 -28
  22. package/resource/integration/livekit/preset/live/android/live-audience-integration.md +133 -0
  23. package/resource/integration/livekit/preset/live/android/live-host-integration.md +225 -0
  24. package/resource/integration/livekit/preset/live/android/live-list-integration.md +278 -0
  25. package/resource/integration/livekit/preset/live/android/prepare-integration.md +271 -0
  26. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +207 -0
  27. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +358 -0
  28. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +246 -0
  29. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +218 -0
  30. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +4 -7
  31. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +5 -12
  32. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +4 -11
  33. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +250 -482
  34. package/resource/integration/roomkit/preset/vue/integration.md +399 -106
  35. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
  36. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +20 -0
  37. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
  38. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +11 -15
  39. package/resource/knowledge/callkit/core-sdk/android/make-call.md +10 -13
  40. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +2 -4
  41. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +10 -17
  42. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +11 -17
  43. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +11 -20
  44. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +10 -15
  45. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +9 -14
  46. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +12 -18
  47. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +390 -0
  48. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +317 -0
  49. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +16 -22
  50. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +17 -23
  51. package/resource/knowledge/callkit/core-sdk/web/call-engine.md +39 -0
  52. package/resource/knowledge/callkit/core-sdk/web/call-event.md +341 -0
  53. package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +39 -0
  54. package/resource/knowledge/callkit/faq/android.md +1 -5
  55. package/resource/knowledge/callkit/faq/common.md +10 -12
  56. package/resource/knowledge/callkit/faq/ios.md +5 -7
  57. package/resource/knowledge/callkit/faq/uniapp-app.md +7 -7
  58. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +9 -12
  59. package/resource/knowledge/callkit/faq/web.md +2 -12
  60. package/resource/knowledge/callkit/preset/android/api.md +5 -8
  61. package/resource/knowledge/callkit/preset/ios/api.md +4 -6
  62. package/resource/knowledge/callkit/preset/miniprogram/api.md +295 -0
  63. package/resource/knowledge/callkit/preset/react/api.md +622 -0
  64. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +475 -0
  65. package/resource/knowledge/callkit/preset/vue/api.md +622 -0
  66. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +587 -0
  67. package/resource/knowledge/callkit/preset/web/api.md +1 -1
  68. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
  69. package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
  70. package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -1
  71. package/resource/knowledge/chat/preset/android/features/language.md +2 -4
  72. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
  73. package/resource/knowledge/chat/preset/android/features/message-list.md +1 -2
  74. package/resource/knowledge/chat/preset/android/features/search.md +0 -1
  75. package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
  76. package/resource/knowledge/chat/preset/android-view/integration.md +35 -10
  77. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
  78. package/resource/knowledge/chat/preset/flutter/features/language.md +1 -1
  79. package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -1
  80. package/resource/knowledge/chat/preset/flutter/features/search.md +4 -5
  81. package/resource/knowledge/chat/preset/flutter/features/theme.md +1 -1
  82. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
  83. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -1
  84. package/resource/knowledge/chat/preset/ios/features/language.md +2 -5
  85. package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -1
  86. package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
  87. package/resource/knowledge/chat/preset/ios/features/theme.md +1 -1
  88. package/resource/knowledge/chat/preset/ios-uikit/integration.md +57 -166
  89. package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -1
  90. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +3 -3
  91. package/resource/knowledge/chat/preset/react/features/conversation-list.md +3 -3
  92. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -1
  93. package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
  94. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  95. package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -1
  96. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -4
  97. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +4 -4
  98. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +1 -1
  99. package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -2
  100. package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -2
  101. package/resource/knowledge/chat/preset/vue/features/search.md +0 -1
  102. package/resource/knowledge/chat/preset/vue/features/theme.md +4 -4
  103. package/resource/knowledge/chat/urls/sdk/android.md +3 -3
  104. package/resource/knowledge/chat/urls/sdk/flutter.md +3 -3
  105. package/resource/knowledge/chat/urls/sdk/ios.md +3 -3
  106. package/resource/knowledge/chat/urls/sdk/web.md +3 -3
  107. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
  108. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +2 -5
  109. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +12 -15
  110. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
  111. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
  112. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
  113. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
  114. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +2 -4
  115. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
  116. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
  117. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
  118. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +2 -4
  119. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
  120. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
  121. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +3 -6
  122. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
  123. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +12 -15
  124. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
  125. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
  126. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
  127. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +2 -4
  128. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
  129. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
  130. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
  131. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +2 -4
  132. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
  133. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
  134. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +2 -5
  135. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
  136. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +3 -6
  137. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
  138. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
  139. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
  140. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +2 -4
  141. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
  142. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
  143. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
  144. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +2 -4
  145. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
  146. package/resource/knowledge/livekit/core-sdk/api-reference/vue/capability-matrix.md +82 -0
  147. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +2 -4
  148. package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +1 -1
  149. package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +1 -1
  150. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-gift.md → features/android/gift.md} +2 -3
  151. package/resource/knowledge/livekit/core-sdk/{live/android/live-live-list.md → features/android/live-list.md} +1 -1
  152. package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
  153. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +3 -3
  154. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-gift.md → features/flutter/gift.md} +2 -2
  155. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
  156. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -1
  157. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
  158. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-barrage.md → features/ios/barrage.md} +2 -2
  159. package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +1 -1
  160. package/resource/knowledge/livekit/core-sdk/{live/ios/live-gift.md → features/ios/gift.md} +8 -9
  161. package/resource/knowledge/livekit/core-sdk/{live/ios/live-live-list.md → features/ios/live-list.md} +2 -2
  162. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audio-effect.md → features/uni-app/audio-effect.md} +2 -3
  163. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-barrage.md → features/uni-app/barrage.md} +2 -2
  164. package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +145 -0
  165. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-gift.md → features/uni-app/gift.md} +6 -7
  166. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-room-list.md → features/uni-app/live-list.md} +1 -1
  167. package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  168. package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +2 -4
  169. package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +6 -9
  170. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +1 -3
  171. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -6
  172. package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  173. package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +3 -5
  174. package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +7 -10
  175. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +561 -0
  176. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +323 -0
  177. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +312 -0
  178. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  179. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +2 -4
  180. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +11 -14
  181. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -1
  182. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +1 -4
  183. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  184. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +2 -4
  185. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +7 -10
  186. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-co-guest-interaction.md → co-guest-interaction.md} +6 -6
  187. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-integration.md → integration.md} +6 -7
  188. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
  189. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
  190. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +1 -1
  191. package/resource/knowledge/push/api-reference/android.md +337 -0
  192. package/resource/knowledge/push/api-reference/donut.md +190 -0
  193. package/resource/knowledge/push/api-reference/flutter.md +176 -0
  194. package/resource/knowledge/push/api-reference/harmonyos.md +140 -0
  195. package/resource/knowledge/push/api-reference/ios.md +537 -0
  196. package/resource/knowledge/push/api-reference/react-native.md +154 -0
  197. package/resource/knowledge/push/api-reference/uni-app.md +148 -0
  198. package/resource/knowledge/push/api-reference/unity.md +119 -0
  199. package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
  200. package/resource/knowledge/push/config/android/fcm.md +1 -8
  201. package/resource/knowledge/push/config/android/honor.md +3 -7
  202. package/resource/knowledge/push/config/android/huawei.md +0 -5
  203. package/resource/knowledge/push/config/android/meizu.md +0 -5
  204. package/resource/knowledge/push/config/android/oppo.md +0 -4
  205. package/resource/knowledge/push/config/android/vivo.md +0 -4
  206. package/resource/knowledge/push/config/android/xiaomi.md +0 -2
  207. package/resource/knowledge/push/config/donut.md +33 -46
  208. package/resource/knowledge/push/config/harmonyos.md +6 -9
  209. package/resource/knowledge/push/config/ios.md +2 -9
  210. package/resource/knowledge/push/config/react-native.md +17 -25
  211. package/resource/knowledge/push/config/unity.md +16 -24
  212. package/resource/knowledge/push/config/unreal-engine.md +16 -24
  213. package/resource/knowledge/push/integration/android.md +21 -21
  214. package/resource/knowledge/push/integration/donut.md +24 -34
  215. package/resource/knowledge/push/integration/flutter.md +12 -1
  216. package/resource/knowledge/push/integration/harmonyos.md +2 -1
  217. package/resource/knowledge/push/integration/ios.md +16 -10
  218. package/resource/knowledge/push/integration/react-native.md +10 -14
  219. package/resource/knowledge/push/integration/uni-app.md +10 -6
  220. package/resource/knowledge/push/integration/unity.md +19 -22
  221. package/resource/knowledge/push/integration/unreal-engine.md +7 -9
  222. package/resource/knowledge/push/overview/prepare.md +2 -2
  223. package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
  224. package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +82 -0
  225. package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
  226. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
  227. package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +82 -0
  228. package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
  229. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -1
  230. package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +82 -0
  231. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
  232. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -4
  233. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +2 -5
  234. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  235. package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -2
  236. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +2 -6
  237. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -1
  238. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +1 -1
  239. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +2 -4
  240. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +2 -3
  241. package/resource/knowledge/roomkit/preset/android/integration.md +14 -16
  242. package/resource/knowledge/roomkit/preset/flutter/integration.md +9 -17
  243. package/resource/knowledge/roomkit/preset/ios/integration.md +9 -17
  244. package/resource/knowledge/roomkit/preset/react/integration.md +0 -4
  245. package/resource/knowledge/trtc/android/TRTCCloud.md +97 -180
  246. package/resource/knowledge/trtc/android/TRTCCloudDef.md +20 -20
  247. package/resource/knowledge/trtc/android/TRTCCloudListener.md +43 -77
  248. package/resource/knowledge/trtc/android/TRTCStatistics.md +1 -1
  249. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +4 -24
  250. package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
  251. package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
  252. package/resource/knowledge/trtc/c++/ITRTCCloud.md +96 -189
  253. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +1 -1
  254. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +1 -21
  255. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -6
  256. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +42 -76
  257. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +18 -19
  258. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
  259. package/resource/knowledge/trtc/ios/TRTCCloud.md +95 -181
  260. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +43 -78
  261. package/resource/knowledge/trtc/ios/TRTCStatistics.md +1 -1
  262. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +1 -20
  263. package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -6
  264. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
  265. package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +20 -20
  266. package/server.js +2 -2
  267. package/tools/common/finalize_answer.js +1 -1
  268. package/tools/common/present_framework_choice.js +2 -2
  269. package/tools/common/search_trtc_knowledge.js +3 -3
  270. package/tools/common/submit_feedback.js +1 -1
  271. package/tools/definitions/get_native_live_uikit_integration_def.js +60 -0
  272. package/tools/definitions/get_native_livekit_core_integration_def.js +1 -1
  273. package/tools/definitions/present_framework_choice_def.js +2 -2
  274. package/tools/definitions/search_trtc_knowledge_def.js +5 -5
  275. package/tools/index.js +2 -0
  276. package/tools/live/get_native_live_uikit_integration.js +69 -0
  277. package/tools/live/get_native_livekit_core_integration.js +6 -6
  278. package/utils/report-cls-client.js +1 -1
  279. package/utils/report-es-client.js +1 -1
  280. package/resource/index/component-slugs.json +0 -1
  281. package/resource/index/doc-source-urls.json +0 -1
  282. package/resource/index/manifest.json +0 -1
  283. package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -229
  284. package/resource/knowledge/livekit/core-sdk/live/android/live-gift.md +0 -459
  285. package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -506
  286. package/resource/knowledge/livekit/core-sdk/live/flutter/live-gift.md +0 -427
  287. package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
  288. package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -265
  289. package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -214
  290. package/resource/knowledge/livekit/core-sdk/live/ios/live-barrage.md +0 -427
  291. package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -272
  292. package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -486
  293. package/resource/knowledge/livekit/core-sdk/voice/android/voice-room-list.md +0 -523
  294. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -262
  295. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -600
  296. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-gift.md +0 -411
  297. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-room-list.md +0 -404
  298. /package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +0 -0
  299. /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
  300. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
  301. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
  302. /package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audience-list.md → features/uni-app/audience-list.md} +0 -0
  303. /package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -0
@@ -5,7 +5,7 @@ import { chunkMarkdown, toManifestChunk } from './chunker.js';
5
5
  import { buildDocSourceUrlMap } from './doc-url-resolver.js';
6
6
  import { inferPathMeta } from './path-meta.js';
7
7
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
- const RESOURCE_ROOT = path.resolve(__dirname, '../resource');
8
+ const RESOURCE_ROOT = path.resolve(__dirname, '../../resource');
9
9
  function walkMarkdownFiles(dir, baseRel) {
10
10
  if (!fs.existsSync(dir))
11
11
  return [];
@@ -36,11 +36,83 @@ function splitByHeading(content, level) {
36
36
  return sections;
37
37
  }
38
38
  function isFaqLike(source, content) {
39
- return /faq|error-code|error_code|TXLiteAVCode/i.test(source) || (content.match(/^###\s+/gm) ?? []).length >= 3;
39
+ return /faq|error-code|error_code|TXLiteAVCode|unsupported-features/i.test(source)
40
+ || (content.match(/^###\s+/gm) ?? []).length >= 3;
41
+ }
42
+ function shouldForceSectionSplit(source, meta) {
43
+ return source.endsWith('unsupported-features.md') || meta.doc_kind === 'unsupported_summary';
40
44
  }
41
45
  function isChatUrlMapping(source) {
42
46
  return /knowledge\/chat\/urls\/.+\.md$/i.test(source.replace(/\\/g, '/'));
43
47
  }
48
+ function containsCodeBlock(body) {
49
+ return /```[\s\S]*?```/.test(body);
50
+ }
51
+ function extractApiNames(body) {
52
+ const names = new Set();
53
+ const upperNoise = new Set(['SDK', 'API', 'HTTP', 'HTTPS', 'JSON']);
54
+ for (const match of body.matchAll(/`([a-z][A-Za-z0-9_]{2,})`/g)) {
55
+ names.add(match[1]);
56
+ }
57
+ for (const match of body.matchAll(/\b([a-z]+[A-Z][A-Za-z0-9_]*)\b/g)) {
58
+ names.add(match[1]);
59
+ }
60
+ for (const match of body.matchAll(/\b([A-Z][A-Za-z0-9_]*\.[a-zA-Z_][A-Za-z0-9_]*)\b/g)) {
61
+ names.add(match[1]);
62
+ }
63
+ for (const match of body.matchAll(/\b(I[A-Z][A-Za-z0-9_]*)\b/g)) {
64
+ names.add(match[1]);
65
+ }
66
+ for (const match of body.matchAll(/\b([A-Z][A-Za-z0-9_]*\.[A-Z_][A-Z0-9_]*)\b/g)) {
67
+ names.add(match[1]);
68
+ }
69
+ for (const match of body.matchAll(/\b([A-Z_]{3,})\b/g)) {
70
+ const token = match[1];
71
+ if (!upperNoise.has(token))
72
+ names.add(token);
73
+ }
74
+ return [...names].slice(0, 90);
75
+ }
76
+ function extractKeyPhrases(title, body) {
77
+ const firstParagraph = body
78
+ .replace(/^#{1,6}\s+.+$/gm, '')
79
+ .split(/\n\s*\n/)
80
+ .map((p) => p.trim())
81
+ .find(Boolean) ?? '';
82
+ const phrases = [title, firstParagraph]
83
+ .flatMap((part) => part.split(/[,。;;\n]/))
84
+ .map((s) => s.trim())
85
+ .filter((s) => s.length >= 2)
86
+ .slice(0, 8);
87
+ return [...new Set(phrases)];
88
+ }
89
+ function buildChunk(meta, source, title, body, id, char_start, char_end) {
90
+ const api_names = extractApiNames(body);
91
+ const key_phrases = extractKeyPhrases(title, body);
92
+ return {
93
+ id,
94
+ corpus: meta.corpus,
95
+ product: meta.product,
96
+ framework: meta.framework,
97
+ types: meta.types,
98
+ scenario: meta.scenario,
99
+ variant: meta.variant,
100
+ scope: meta.scope,
101
+ doc_kind: meta.doc_kind,
102
+ capability_status: meta.capability_status,
103
+ retrievable_scope: meta.retrievable_scope,
104
+ title,
105
+ source,
106
+ content: body,
107
+ symbols: extractSymbols(body),
108
+ error_codes: extractErrorCodes(body),
109
+ ...(api_names.length ? { api_names } : {}),
110
+ ...(containsCodeBlock(body) ? { contains_code: true } : {}),
111
+ ...(key_phrases.length ? { key_phrases } : {}),
112
+ char_start,
113
+ char_end,
114
+ };
115
+ }
44
116
  function parseUrlMappingRows(content) {
45
117
  const lines = content.split('\n');
46
118
  let sectionTitle = '';
@@ -78,28 +150,12 @@ function chunkUrlMapping(source, content, meta) {
78
150
  return [];
79
151
  }
80
152
  const baseSlug = sourceSlug(source);
81
- const chunks = [];
82
- for (const row of rows) {
153
+ return rows.map((row) => {
83
154
  const sectionLine = row.sectionTitle ? `### ${row.sectionTitle}\n\n` : '';
84
155
  const body = `${sectionLine}| 子问题 | 目标文档 |\n|--------|---------|\n| ${row.label} | \`${row.url}\` |`;
85
156
  const headingSlug = slugify(row.label);
86
- chunks.push({
87
- id: `${baseSlug}#${headingSlug}`,
88
- corpus: meta.corpus,
89
- product: meta.product,
90
- framework: meta.framework,
91
- types: meta.types,
92
- scenario: meta.scenario,
93
- title: row.label,
94
- source,
95
- content: body,
96
- symbols: extractSymbols(body),
97
- error_codes: extractErrorCodes(body),
98
- char_start: row.lineStart,
99
- char_end: row.lineEnd,
100
- });
101
- }
102
- return chunks;
157
+ return buildChunk(meta, source, row.label, body, `${baseSlug}#${headingSlug}`, row.lineStart, row.lineEnd);
158
+ });
103
159
  }
104
160
  export function chunkMarkdown(source, content, meta) {
105
161
  const chunks = [];
@@ -110,49 +166,22 @@ export function chunkMarkdown(source, content, meta) {
110
166
  return urlChunks;
111
167
  }
112
168
  }
113
- if (content.length < 2048) {
169
+ const forceSectionSplit = shouldForceSectionSplit(source, meta);
170
+ if (content.length < 2048 && !forceSectionSplit) {
114
171
  const { body, char_start, char_end } = trimSliceOffsets(content, 0);
115
172
  if (!body)
116
173
  return chunks;
117
- chunks.push({
118
- id: `${baseSlug}#full`,
119
- corpus: meta.corpus,
120
- product: meta.product,
121
- framework: meta.framework,
122
- types: meta.types,
123
- scenario: meta.scenario,
124
- title: pathBasename(source),
125
- source,
126
- content: body,
127
- symbols: extractSymbols(body),
128
- error_codes: extractErrorCodes(body),
129
- char_start,
130
- char_end,
131
- });
174
+ chunks.push(buildChunk(meta, source, pathBasename(source), body, `${baseSlug}#full`, char_start, char_end));
132
175
  return chunks;
133
176
  }
134
- const level = isFaqLike(source, content) ? 3 : 2;
177
+ const level = forceSectionSplit ? 3 : (isFaqLike(source, content) ? 3 : 2);
135
178
  const sections = splitByHeading(content, level);
136
179
  for (const section of sections) {
137
180
  const { body, char_start, char_end } = trimSliceOffsets(section.raw, section.start);
138
181
  if (!body)
139
182
  continue;
140
183
  const headingSlug = slugify(section.title);
141
- chunks.push({
142
- id: `${baseSlug}#${headingSlug}`,
143
- corpus: meta.corpus,
144
- product: meta.product,
145
- framework: meta.framework,
146
- types: meta.types,
147
- scenario: meta.scenario,
148
- title: section.title,
149
- source,
150
- content: body,
151
- symbols: extractSymbols(body),
152
- error_codes: extractErrorCodes(body),
153
- char_start,
154
- char_end,
155
- });
184
+ chunks.push(buildChunk(meta, source, section.title, body, `${baseSlug}#${headingSlug}`, char_start, char_end));
156
185
  }
157
186
  return chunks.length > 0 ? chunks : chunkMarkdown(source, content.slice(0, 2048), meta);
158
187
  }
@@ -10,7 +10,10 @@ function inferTypesFromFilename(fileName, baseTypes) {
10
10
  types.push('api');
11
11
  if (lower === 'faq.md')
12
12
  types.push('faq');
13
- if (lower === 'integration.md' || lower.endsWith('-integration.md'))
13
+ // 文件名 = integration.md 不再默认 push integration(由上游 framework 分支显式声明 type)
14
+ // live 分支 core 文档的 filename = integration.md 应是 type=core,不是 type=integration
15
+ // chat/preset/integration.md 等仍由 preset 分支的 types.push('integration') 处理
16
+ if (lower.endsWith('-integration.md'))
14
17
  types.push('integration');
15
18
  if (/live-.*-interaction|voice-/.test(lower))
16
19
  types.push('feature');
@@ -26,6 +29,29 @@ const DIR_TO_FRAMEWORK = {
26
29
  function normalizeFrameworkDir(dir) {
27
30
  return DIR_TO_FRAMEWORK[dir] ?? dir;
28
31
  }
32
+ function inferDocMeta(fileName) {
33
+ const lower = fileName.toLowerCase();
34
+ if (lower === 'capability-matrix.md') {
35
+ return { doc_kind: 'capability_matrix' };
36
+ }
37
+ if (lower === 'unsupported-features.md') {
38
+ return { doc_kind: 'unsupported_summary', capability_status: 'unsupported' };
39
+ }
40
+ if (lower.endsWith('-unsupported.md')) {
41
+ return { doc_kind: 'negative_faq', capability_status: 'unsupported' };
42
+ }
43
+ return {};
44
+ }
45
+ function inferShareScope(fileName) {
46
+ const lower = fileName.toLowerCase();
47
+ if (lower === 'usersig.md') {
48
+ return [
49
+ 'usersig', 'sdkappid', 'secretkey', 'sdk 密钥', '鉴权', '签名',
50
+ 'gentestusersig', 'tls', 'hmac',
51
+ ];
52
+ }
53
+ return 'always';
54
+ }
29
55
  export function inferPathMeta(relativeSource) {
30
56
  const normalized = relativeSource.replace(/\\/g, '/');
31
57
  const parts = normalized.split('/');
@@ -35,7 +61,18 @@ export function inferPathMeta(relativeSource) {
35
61
  let framework = ['*'];
36
62
  let types = corpus === 'integration' ? ['integration'] : [];
37
63
  let scenario = null;
38
- if (normalized.startsWith('knowledge/chat/') || normalized.startsWith('integration/chat/')) {
64
+ let variant;
65
+ let doc_kind;
66
+ let capability_status;
67
+ let retrievable_scope;
68
+ if (normalized.startsWith('knowledge/share/')) {
69
+ // 通配语料(跨产品共享)显式建模,不再依赖默认兜底路径。
70
+ product = '*';
71
+ framework = ['*'];
72
+ types.push('faq', 'product');
73
+ retrievable_scope = inferShareScope(fileName);
74
+ }
75
+ else if (normalized.startsWith('knowledge/chat/') || normalized.startsWith('integration/chat/')) {
39
76
  product = 'chat';
40
77
  if (parts.includes('preset') && parts.length >= 4) {
41
78
  framework = [normalizeFrameworkDir(parts[parts.indexOf('preset') + 1])];
@@ -67,6 +104,22 @@ export function inferPathMeta(relativeSource) {
67
104
  }
68
105
  }
69
106
  }
107
+ // chat FAQ / best-practice 平台拆分:
108
+ // - 新结构:knowledge/chat/best-practice/{platform}/{topic}.md
109
+ // - 旧结构:knowledge/chat/faq/{platform}.md(保留兼容)
110
+ // 两者都统一标记为 types=['faq'],便于通过 types=faq 命中“经验类问答”。
111
+ if (parts[1] === 'chat' && parts[2] === 'best-practice' && parts.length >= 5) {
112
+ const fwSlug = normalizeFrameworkDir(parts[3]);
113
+ framework = [fwSlug];
114
+ types.push('faq');
115
+ }
116
+ if (parts[1] === 'chat' && parts[2] === 'faq' && parts.length >= 4) {
117
+ const fwSlug = fileName.replace(/\.mdx?$/, '');
118
+ if (fwSlug) {
119
+ framework = [fwSlug];
120
+ types.push('faq');
121
+ }
122
+ }
70
123
  if (fileName === 'faq.md')
71
124
  types.push('faq');
72
125
  }
@@ -74,10 +127,24 @@ export function inferPathMeta(relativeSource) {
74
127
  product = 'call';
75
128
  const presetIdx = parts.indexOf('preset');
76
129
  const coreIdx = parts.indexOf('core-sdk');
77
- if (presetIdx >= 0 && parts[presetIdx + 1])
130
+ if (presetIdx >= 0 && parts[presetIdx + 1]) {
78
131
  framework = [normalizeFrameworkDir(parts[presetIdx + 1])];
79
- if (coreIdx >= 0 && parts[coreIdx + 1])
132
+ variant = 'preset';
133
+ }
134
+ if (coreIdx >= 0 && parts[coreIdx + 1]) {
80
135
  framework = [normalizeFrameworkDir(parts[coreIdx + 1])];
136
+ variant = 'core-sdk';
137
+ }
138
+ // callkit 最佳实践目录:knowledge/callkit/best-practice/{platform}/{topic}.md
139
+ // 统一按 FAQ/经验类知识处理,支持 types=faq + frameworks={platform} 的精确检索。
140
+ if (parts[1] === 'callkit' && parts[2] === 'best-practice' && parts.length >= 5) {
141
+ framework = [normalizeFrameworkDir(parts[3])];
142
+ types.push('faq');
143
+ // calls 相关最佳实践既是 FAQ 也是 API 语义,避免 types=api 时被误过滤。
144
+ if (/(callengine-invitation|callkit-call-vs-calls)\.md$/i.test(fileName)) {
145
+ types.push('api');
146
+ }
147
+ }
81
148
  if (parts.includes('faq'))
82
149
  types.push('faq', 'error_code');
83
150
  if (fileName === 'api.md')
@@ -86,36 +153,114 @@ export function inferPathMeta(relativeSource) {
86
153
  types.push('api', 'feature');
87
154
  }
88
155
  else if (normalized.includes('/livekit/')) {
156
+ // livekit 目录结构:
157
+ // preset/{framework}/ → 旧结构(如 preset/vue)
158
+ // preset/{scenario}/{platform}/ → 新结构(如 preset/live/android)
159
+ // core-sdk/live/{platform}/*.md → 视频直播 core 文档(framework 标签: [live, platform],types=[core])
160
+ // core-sdk/voice/{platform}/*.md → 语聊房 core 文档(framework 标签: [voice, platform],types=[core])
161
+ // core-sdk/features/{platform}/*.md → 跨场景功能模块(framework 标签: [features, platform],types=[feature])
162
+ // core-sdk/api-reference/{platform}/*.md → 客户端 API(framework 标签: [platform],types=[api])
163
+ // 写写上"功能模块"是 video live / voice 共享节点,所以 features/ 下文档 type=feature 而非 core
89
164
  product = 'live';
90
165
  if (parts.includes('voice'))
91
166
  scenario = 'voice';
92
- if (parts.includes('/live/'))
167
+ if (parts.includes('live'))
93
168
  scenario = 'live';
94
- if (parts.includes('preset') && parts.includes('vue'))
95
- framework = ['vue'];
96
- if (parts.includes('core-sdk') && parts.length >= 4) {
97
- const fwIdx = parts.indexOf('core-sdk') + 2;
98
- if (parts[fwIdx] && !['live', 'voice'].includes(parts[fwIdx])) {
99
- framework = [normalizeFrameworkDir(parts[fwIdx])];
169
+ const presetIdx = parts.indexOf('preset');
170
+ const coreIdx = parts.indexOf('core-sdk');
171
+ if (presetIdx >= 0 && parts[presetIdx + 1]) {
172
+ const presetLevel1 = normalizeFrameworkDir(parts[presetIdx + 1]);
173
+ const presetLevel2 = parts[presetIdx + 2] ? normalizeFrameworkDir(parts[presetIdx + 2]) : undefined;
174
+ // 兼容两种 preset 目录:
175
+ // - preset/{framework}(旧)
176
+ // - preset/{scenario}/{platform}(新)
177
+ if ((presetLevel1 === 'live' || presetLevel1 === 'voice') && presetLevel2) {
178
+ scenario = presetLevel1;
179
+ framework = [presetLevel2];
180
+ }
181
+ else {
182
+ framework = [presetLevel1];
183
+ }
184
+ variant = 'preset';
185
+ types.push('feature');
186
+ }
187
+ if (coreIdx >= 0 && parts.length >= 4) {
188
+ // core-sdk 下的 4 个子目录(live/voice/features/api-reference),每个下挂 platform 子目录
189
+ const sub = parts[coreIdx + 1];
190
+ const platform = parts[coreIdx + 2];
191
+ if (sub === 'live' && platform) {
192
+ framework = ['live', normalizeFrameworkDir(platform)];
193
+ types.push('core');
194
+ if (fileName === 'integration.md') {
195
+ types.push('api', 'integration');
196
+ }
197
+ variant = 'core-sdk';
198
+ }
199
+ else if (sub === 'voice' && platform) {
200
+ framework = ['voice', normalizeFrameworkDir(platform)];
201
+ types.push('core');
202
+ if (fileName === 'integration.md') {
203
+ types.push('api', 'integration');
204
+ }
205
+ variant = 'core-sdk';
206
+ }
207
+ else if (sub === 'features' && platform) {
208
+ framework = ['features', normalizeFrameworkDir(platform)];
209
+ types.push('feature');
210
+ variant = 'core-sdk';
211
+ }
212
+ else if (sub === 'api-reference' && platform) {
213
+ // api-reference 沿用旧逻辑:framework = platform,types = api
214
+ framework = [normalizeFrameworkDir(platform)];
215
+ types.push('api');
216
+ variant = 'core-sdk';
217
+ }
218
+ else {
219
+ // 兜底(不在 4 个已知子目录下):framework = 子目录名
220
+ framework = [normalizeFrameworkDir(sub ?? '*')];
221
+ variant = 'core-sdk';
222
+ types.push('feature', 'api');
100
223
  }
101
224
  }
102
225
  if (parts.includes('components'))
103
226
  types.push('component');
104
- if (parts.includes('api-reference'))
105
- types.push('api');
106
- if (parts.includes('core-sdk'))
107
- types.push('feature', 'api');
108
227
  if (fileName === 'faq.md')
109
228
  types.push('faq');
229
+ // 与 roomkit 对齐:core-sdk 下 capability-matrix.md / unsupported-features.md
230
+ // 视为能力边界文档(doc_kind + capability_status),方便检索层按 doc_kind 过滤
231
+ const docMeta = inferDocMeta(fileName);
232
+ doc_kind = docMeta.doc_kind;
233
+ capability_status = docMeta.capability_status ?? capability_status;
234
+ if (doc_kind === 'capability_matrix' || doc_kind === 'unsupported_summary' || doc_kind === 'negative_faq') {
235
+ types.push('feature', 'faq');
236
+ }
110
237
  }
111
238
  else if (normalized.includes('/roomkit/')) {
112
239
  product = 'room';
113
- if (parts.includes('vue'))
114
- framework = ['vue'];
240
+ const presetIdx = parts.indexOf('preset');
241
+ const coreIdx = parts.indexOf('core-sdk');
242
+ if (presetIdx >= 0 && parts[presetIdx + 1]) {
243
+ framework = [normalizeFrameworkDir(parts[presetIdx + 1])];
244
+ variant = 'preset';
245
+ }
246
+ if (coreIdx >= 0 && parts[coreIdx + 1]) {
247
+ framework = [normalizeFrameworkDir(parts[coreIdx + 1])];
248
+ variant = 'core-sdk';
249
+ types.push('feature');
250
+ if (framework[0] === 'vue') {
251
+ capability_status = 'supported';
252
+ }
253
+ }
115
254
  if (parts.includes('features'))
116
255
  types.push('feature');
117
256
  if (parts.includes('faq'))
118
257
  types.push('faq', 'error_code');
258
+ const docMeta = inferDocMeta(fileName);
259
+ doc_kind = docMeta.doc_kind;
260
+ capability_status = docMeta.capability_status ?? capability_status;
261
+ if (doc_kind === 'capability_matrix' || doc_kind === 'unsupported_summary' || doc_kind === 'negative_faq') {
262
+ types.push('feature', 'faq');
263
+ }
119
264
  }
120
265
  else if (normalized.startsWith('knowledge/trtc/')) {
121
266
  product = 'native_trtc_sdk';
@@ -134,26 +279,32 @@ export function inferPathMeta(relativeSource) {
134
279
  // knowledge/push/overview/{topic}.md → 跨平台综述(接入前准备/流程/选型/计费等),framework=*,types=[product]
135
280
  // knowledge/push/integration/{platform}.md → framework=平台 slug,types=[integration]
136
281
  // knowledge/push/config/android/{vendor}.md → framework=android(vendor 厂商靠 BM25 命中),types=[integration]
282
+ // knowledge/push/api-reference/{platform}.md → framework=平台 slug,types=[api]
137
283
  product = 'push';
138
- const category = parts[2]; // overview | integration | config
284
+ const category = parts[2]; // overview | integration | config | api-reference
139
285
  if (category === 'overview') {
140
286
  framework = ['*'];
141
287
  types.push('product');
142
288
  }
143
289
  else if (category === 'integration') {
144
- const fwSlug = fileName.replace(/\.mdx?$/, ''); // android / ios / donut / ...
290
+ const fwSlug = fileName.replace(/\.mdx?$/, '');
145
291
  if (fwSlug) {
146
292
  framework = [fwSlug];
147
293
  }
148
294
  types.push('integration');
149
295
  }
150
296
  else if (category === 'config' && parts[3]) {
151
- // config/{platform}/{vendor}.md(Android 厂商)或 config/{platform}.md(非 Android 平台配置)
152
- // platform 决定 framework,vendor 靠 BM25 命中
153
297
  const platform = parts[3].replace(/\.mdx?$/, '');
154
298
  framework = [platform];
155
299
  types.push('integration');
156
300
  }
301
+ else if (category === 'api-reference') {
302
+ const fwSlug = fileName.replace(/\.mdx?$/, '');
303
+ if (fwSlug) {
304
+ framework = [fwSlug];
305
+ }
306
+ types.push('api');
307
+ }
157
308
  else {
158
309
  types.push('integration');
159
310
  }
@@ -167,11 +318,20 @@ export function inferPathMeta(relativeSource) {
167
318
  types = inferTypesFromFilename(fileName, types);
168
319
  if (types.length === 0)
169
320
  types = ['faq'];
321
+ const primaryFramework = framework[0];
322
+ const scope = product !== '*' && variant && primaryFramework && primaryFramework !== '*'
323
+ ? `${product}:${variant}:${primaryFramework}`
324
+ : undefined;
170
325
  return {
171
326
  product,
172
327
  framework,
173
328
  types: uniq(types),
174
329
  scenario,
175
330
  corpus,
331
+ variant,
332
+ scope,
333
+ doc_kind,
334
+ capability_status,
335
+ retrievable_scope,
176
336
  };
177
337
  }