@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.
- package/knowledge/build-index.js +1 -1
- package/knowledge/chunker.js +81 -52
- package/knowledge/path-meta.js +181 -21
- package/knowledge/search/exact-lookup.js +245 -43
- package/knowledge/search/filter-pool.js +73 -19
- package/knowledge/search/product-scope-intent.js +2 -2
- package/knowledge/search/requires-framework.js +1 -1
- package/knowledge/search/search-knowledge.js +246 -60
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +1 -0
- package/resource/integration/callkit/preset/android/integration.md +3 -5
- package/resource/integration/callkit/preset/flutter/integration.md +2 -3
- package/resource/integration/callkit/preset/ios/integration.md +2 -5
- package/resource/integration/callkit/preset/react/integration.md +12 -26
- package/resource/integration/callkit/preset/vue/integration.md +17 -33
- package/resource/integration/chat/preset/android/integration.md +44 -14
- package/resource/integration/chat/preset/flutter/integration.md +54 -13
- package/resource/integration/chat/preset/ios/integration.md +42 -6
- package/resource/integration/chat/preset/react/integration.md +30 -28
- package/resource/integration/chat/preset/uni-app/integration.md +101 -40
- package/resource/integration/chat/preset/vue/integration.md +62 -28
- package/resource/integration/livekit/preset/live/android/live-audience-integration.md +133 -0
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +225 -0
- package/resource/integration/livekit/preset/live/android/live-list-integration.md +278 -0
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +271 -0
- package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +207 -0
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +358 -0
- package/resource/integration/livekit/preset/live/ios/live-list-integration.md +246 -0
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +218 -0
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +4 -7
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +5 -12
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +4 -11
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +250 -482
- package/resource/integration/roomkit/preset/vue/integration.md +399 -106
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +20 -0
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +11 -15
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +10 -13
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +2 -4
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +10 -17
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +11 -17
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +11 -20
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +10 -15
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +9 -14
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +12 -18
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +390 -0
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +317 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +16 -22
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +17 -23
- package/resource/knowledge/callkit/core-sdk/web/call-engine.md +39 -0
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +341 -0
- package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +39 -0
- package/resource/knowledge/callkit/faq/android.md +1 -5
- package/resource/knowledge/callkit/faq/common.md +10 -12
- package/resource/knowledge/callkit/faq/ios.md +5 -7
- package/resource/knowledge/callkit/faq/uniapp-app.md +7 -7
- package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +9 -12
- package/resource/knowledge/callkit/faq/web.md +2 -12
- package/resource/knowledge/callkit/preset/android/api.md +5 -8
- package/resource/knowledge/callkit/preset/ios/api.md +4 -6
- package/resource/knowledge/callkit/preset/miniprogram/api.md +295 -0
- package/resource/knowledge/callkit/preset/react/api.md +622 -0
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +475 -0
- package/resource/knowledge/callkit/preset/vue/api.md +622 -0
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +587 -0
- package/resource/knowledge/callkit/preset/web/api.md +1 -1
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -1
- package/resource/knowledge/chat/preset/android/features/language.md +2 -4
- package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
- package/resource/knowledge/chat/preset/android/features/message-list.md +1 -2
- package/resource/knowledge/chat/preset/android/features/search.md +0 -1
- package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
- package/resource/knowledge/chat/preset/android-view/integration.md +35 -10
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
- package/resource/knowledge/chat/preset/flutter/features/language.md +1 -1
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -1
- package/resource/knowledge/chat/preset/flutter/features/search.md +4 -5
- package/resource/knowledge/chat/preset/flutter/features/theme.md +1 -1
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -1
- package/resource/knowledge/chat/preset/ios/features/language.md +2 -5
- package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -1
- package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
- package/resource/knowledge/chat/preset/ios/features/theme.md +1 -1
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +57 -166
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -1
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +3 -3
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +3 -3
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -1
- package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
- package/resource/knowledge/chat/preset/react/features/search.md +0 -1
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -1
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -4
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +4 -4
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +1 -1
- package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -2
- package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -2
- package/resource/knowledge/chat/preset/vue/features/search.md +0 -1
- package/resource/knowledge/chat/preset/vue/features/theme.md +4 -4
- package/resource/knowledge/chat/urls/sdk/android.md +3 -3
- package/resource/knowledge/chat/urls/sdk/flutter.md +3 -3
- package/resource/knowledge/chat/urls/sdk/ios.md +3 -3
- package/resource/knowledge/chat/urls/sdk/web.md +3 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +2 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +12 -15
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +3 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +12 -15
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +2 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +3 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/vue/capability-matrix.md +82 -0
- package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{voice/android/voice-gift.md → features/android/gift.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/{live/android/live-live-list.md → features/android/live-list.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
- package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +3 -3
- package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-gift.md → features/flutter/gift.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-barrage.md → features/ios/barrage.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{live/ios/live-gift.md → features/ios/gift.md} +8 -9
- package/resource/knowledge/livekit/core-sdk/{live/ios/live-live-list.md → features/ios/live-list.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audio-effect.md → features/uni-app/audio-effect.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-barrage.md → features/uni-app/barrage.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +145 -0
- package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-gift.md → features/uni-app/gift.md} +6 -7
- package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-room-list.md → features/uni-app/live-list.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +6 -9
- package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +1 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -6
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +3 -5
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +7 -10
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +561 -0
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +323 -0
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +312 -0
- package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
- package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +11 -14
- package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -1
- package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +7 -10
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-co-guest-interaction.md → co-guest-interaction.md} +6 -6
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-integration.md → integration.md} +6 -7
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +1 -1
- package/resource/knowledge/push/api-reference/android.md +337 -0
- package/resource/knowledge/push/api-reference/donut.md +190 -0
- package/resource/knowledge/push/api-reference/flutter.md +176 -0
- package/resource/knowledge/push/api-reference/harmonyos.md +140 -0
- package/resource/knowledge/push/api-reference/ios.md +537 -0
- package/resource/knowledge/push/api-reference/react-native.md +154 -0
- package/resource/knowledge/push/api-reference/uni-app.md +148 -0
- package/resource/knowledge/push/api-reference/unity.md +119 -0
- package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
- package/resource/knowledge/push/config/android/fcm.md +1 -8
- package/resource/knowledge/push/config/android/honor.md +3 -7
- package/resource/knowledge/push/config/android/huawei.md +0 -5
- package/resource/knowledge/push/config/android/meizu.md +0 -5
- package/resource/knowledge/push/config/android/oppo.md +0 -4
- package/resource/knowledge/push/config/android/vivo.md +0 -4
- package/resource/knowledge/push/config/android/xiaomi.md +0 -2
- package/resource/knowledge/push/config/donut.md +33 -46
- package/resource/knowledge/push/config/harmonyos.md +6 -9
- package/resource/knowledge/push/config/ios.md +2 -9
- package/resource/knowledge/push/config/react-native.md +17 -25
- package/resource/knowledge/push/config/unity.md +16 -24
- package/resource/knowledge/push/config/unreal-engine.md +16 -24
- package/resource/knowledge/push/integration/android.md +21 -21
- package/resource/knowledge/push/integration/donut.md +24 -34
- package/resource/knowledge/push/integration/flutter.md +12 -1
- package/resource/knowledge/push/integration/harmonyos.md +2 -1
- package/resource/knowledge/push/integration/ios.md +16 -10
- package/resource/knowledge/push/integration/react-native.md +10 -14
- package/resource/knowledge/push/integration/uni-app.md +10 -6
- package/resource/knowledge/push/integration/unity.md +19 -22
- package/resource/knowledge/push/integration/unreal-engine.md +7 -9
- package/resource/knowledge/push/overview/prepare.md +2 -2
- package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +82 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +82 -0
- package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +82 -0
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +2 -5
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +2 -6
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -1
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +2 -4
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +2 -3
- package/resource/knowledge/roomkit/preset/android/integration.md +14 -16
- package/resource/knowledge/roomkit/preset/flutter/integration.md +9 -17
- package/resource/knowledge/roomkit/preset/ios/integration.md +9 -17
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -4
- package/resource/knowledge/trtc/android/TRTCCloud.md +97 -180
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +20 -20
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +43 -77
- package/resource/knowledge/trtc/android/TRTCStatistics.md +1 -1
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +4 -24
- package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +96 -189
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +1 -1
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +1 -21
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -6
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +42 -76
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +18 -19
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/ios/TRTCCloud.md +95 -181
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +43 -78
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +1 -1
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +1 -20
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -6
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +20 -20
- package/server.js +2 -2
- package/tools/common/finalize_answer.js +1 -1
- package/tools/common/present_framework_choice.js +2 -2
- package/tools/common/search_trtc_knowledge.js +3 -3
- package/tools/common/submit_feedback.js +1 -1
- package/tools/definitions/get_native_live_uikit_integration_def.js +60 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js +1 -1
- package/tools/definitions/present_framework_choice_def.js +2 -2
- package/tools/definitions/search_trtc_knowledge_def.js +5 -5
- package/tools/index.js +2 -0
- package/tools/live/get_native_live_uikit_integration.js +69 -0
- package/tools/live/get_native_livekit_core_integration.js +6 -6
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/index/component-slugs.json +0 -1
- package/resource/index/doc-source-urls.json +0 -1
- package/resource/index/manifest.json +0 -1
- package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -229
- package/resource/knowledge/livekit/core-sdk/live/android/live-gift.md +0 -459
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -506
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-gift.md +0 -427
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
- package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -265
- package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -214
- package/resource/knowledge/livekit/core-sdk/live/ios/live-barrage.md +0 -427
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -272
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -486
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-room-list.md +0 -523
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -262
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -600
- package/resource/knowledge/livekit/core-sdk/voice/ios/voice-gift.md +0 -411
- package/resource/knowledge/livekit/core-sdk/voice/ios/voice-room-list.md +0 -404
- /package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audience-list.md → features/uni-app/audience-list.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -0
|
@@ -94,15 +94,76 @@ function loadFeatureAliases() {
|
|
|
94
94
|
}
|
|
95
95
|
return result;
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* 将 prompt 按分隔符拆成子句列表,用于 url 行匹配。
|
|
99
|
+
* 分隔符:、 , , ; ; 空格
|
|
100
|
+
* 保留每个子句的原文(去首尾空白),不引入新词。
|
|
101
|
+
*/
|
|
102
|
+
function splitPromptIntoClauses(prompt) {
|
|
103
|
+
const raw = prompt
|
|
104
|
+
.replace(/rest\s*api|服务端|server\s*api|api|怎么|如何|什么|用哪个|查询/g, '')
|
|
105
|
+
.replace(/\s+/g, ' ')
|
|
106
|
+
.trim();
|
|
107
|
+
const parts = raw.split(/[、,,;;、\s]+/).filter((p) => p.length >= 2);
|
|
108
|
+
return parts.length > 0 ? parts : [raw];
|
|
109
|
+
}
|
|
110
|
+
const ROOM_CORE_SIGNAL = /atomicx\s*core|atomicxcore|atomicx|core\s*sdk|无\s*ui|自定义\s*ui|自实现|roomstore|store|useRoomState|useDeviceState|useLoginState/i;
|
|
111
|
+
const ROOM_PRESET_SIGNAL = /预制|preset|roommainview|roommainwidget|默认\s*ui|主页面|房间主页面/i;
|
|
112
|
+
const ROOM_FEATURE_SPECS = [
|
|
113
|
+
{
|
|
114
|
+
fileName: 'room-chat.md',
|
|
115
|
+
titlePattern: /room\s*chat|in-room\s*im\s*chat|会中聊天|聊天能力|IM\s*聊天/i,
|
|
116
|
+
promptPattern: /room\s*chat|会中聊天|in[- ]room\s*(im\s*)?chat|im\s*聊天|messagelist|messageinput|messagestore|聊天面板|房间聊天/i,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
fileName: 'screen-share.md',
|
|
120
|
+
titlePattern: /screen\s*share|屏幕分享/i,
|
|
121
|
+
promptPattern: /screen\s*share|屏幕分享|共享屏幕|startScreenShare/i,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
fileName: 'virtual-background.md',
|
|
125
|
+
titlePattern: /virtual\s*background|虚拟背景/i,
|
|
126
|
+
promptPattern: /virtual\s*background|虚拟背景|背景虚化|背景替换|initVirtualBackground/i,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
fileName: 'room-view.md',
|
|
130
|
+
titlePattern: /roomview|room\s*view|房间主视图|视频布局/i,
|
|
131
|
+
promptPattern: /roomview|room\s*view|房间主视图|视频布局|画面布局|layoutTemplate/i,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
fileName: 'device-detection.md',
|
|
135
|
+
titlePattern: /device\s*detection|设备检测|设备预览/i,
|
|
136
|
+
promptPattern: /device\s*detection|设备检测|设备预览|startCameraTest|startMicrophoneTest|startSpeakerTest/i,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
fileName: 'device-state.md',
|
|
140
|
+
titlePattern: /device\s*state|设备状态|设备管理/i,
|
|
141
|
+
promptPattern: /device\s*state|设备状态|设备管理|摄像头|麦克风|扬声器|switchMirror|setCurrentCamera|networkInfo/i,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
fileName: 'free-beauty-panel.md',
|
|
145
|
+
titlePattern: /free\s*beauty|美颜面板|基础美颜/i,
|
|
146
|
+
promptPattern: /free\s*beauty|美颜面板|基础美颜|beauty/i,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
function detectRoomFeatureHits(prompt) {
|
|
150
|
+
return ROOM_FEATURE_SPECS.filter((spec) => spec.promptPattern.test(prompt));
|
|
151
|
+
}
|
|
152
|
+
const LIVE_LIFECYCLE_PROMPT = /开播|创建直播|结束直播|停播|观看直播|退出直播|进房|离房|createLive|endLive|joinLive|leaveLive|host_streaming|audience_streaming/i;
|
|
153
|
+
const LIVE_LIFECYCLE_APIS = ['createLive', 'endLive', 'joinLive', 'leaveLive'];
|
|
97
154
|
export function runExactLookup(prompt, pool, norm) {
|
|
98
155
|
const boosts = {};
|
|
99
156
|
const exactHits = [];
|
|
157
|
+
const urlRowHitChunkIds = new Set();
|
|
100
158
|
const lowerPrompt = prompt.toLowerCase();
|
|
101
159
|
const addBoost = (chunk, amount, label) => {
|
|
102
160
|
boosts[chunk.id] = (boosts[chunk.id] ?? 0) + amount;
|
|
103
161
|
if (!exactHits.includes(label))
|
|
104
162
|
exactHits.push(label);
|
|
105
163
|
};
|
|
164
|
+
const addPenalty = (chunk, amount) => {
|
|
165
|
+
boosts[chunk.id] = (boosts[chunk.id] ?? 0) - Math.abs(amount);
|
|
166
|
+
};
|
|
106
167
|
// E1: error codes
|
|
107
168
|
const errorMatches = [
|
|
108
169
|
...prompt.matchAll(/\b(\d{5,7})\b/g),
|
|
@@ -256,57 +317,79 @@ export function runExactLookup(prompt, pool, norm) {
|
|
|
256
317
|
}
|
|
257
318
|
}
|
|
258
319
|
}
|
|
259
|
-
// E7: URL 映射表行级匹配(chunk.title =
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
320
|
+
// E7: URL 映射表行级匹配(chunk.title = 子问题列)
|
|
321
|
+
// 策略:保留整句匹配,同时补充子句拆分 + 逐行匹配,同一 chunk 取最高分。
|
|
322
|
+
// 子句拆分使 "创建群组、加入群组、发送群组自定义消息" 能命中多行。
|
|
323
|
+
const clauses = splitPromptIntoClauses(prompt.toLowerCase());
|
|
324
|
+
const candidates = [];
|
|
325
|
+
for (const chunk of pool) {
|
|
326
|
+
if (!chunk.source.includes('knowledge/chat/urls/'))
|
|
327
|
+
continue;
|
|
328
|
+
const titleNorm = chunk.title.toLowerCase().replace(/\s+/g, '');
|
|
329
|
+
if (!titleNorm)
|
|
330
|
+
continue;
|
|
331
|
+
// 对每个子句和整句分别打分,取最高分
|
|
332
|
+
let bestScore = 0;
|
|
333
|
+
const allParts = [...clauses, prompt.toLowerCase().replace(/\s+/g, '')];
|
|
334
|
+
// 也按常见分隔符拆分 title 得到 tokens,用于不连续匹配
|
|
335
|
+
const titleTokens = titleNorm.split(/[\/(((、,,\s]+/).filter(Boolean);
|
|
336
|
+
const seen = new Set();
|
|
337
|
+
for (const part of allParts) {
|
|
338
|
+
const pn = part.replace(/\s+/g, '');
|
|
339
|
+
if (pn.length < 2 || seen.has(pn))
|
|
271
340
|
continue;
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
else if (titleNorm.includes(queryNorm)) {
|
|
277
|
-
const trailing = titleNorm.slice(titleNorm.indexOf(queryNorm) + queryNorm.length);
|
|
278
|
-
score = 800 - trailing.length * 80;
|
|
341
|
+
seen.add(pn);
|
|
342
|
+
let s = 0;
|
|
343
|
+
if (pn === titleNorm) {
|
|
344
|
+
s = 1000;
|
|
279
345
|
}
|
|
280
|
-
else if (
|
|
281
|
-
|
|
346
|
+
else if (titleNorm.includes(pn)) {
|
|
347
|
+
const trailing = titleNorm.slice(titleNorm.indexOf(pn) + pn.length);
|
|
348
|
+
s = 800 - trailing.length * 80;
|
|
282
349
|
}
|
|
283
|
-
else {
|
|
284
|
-
|
|
285
|
-
if (queryLoose.length >= 3 && titleNorm.includes(queryLoose)) {
|
|
286
|
-
score = 500;
|
|
287
|
-
if (/批量|群组|群流|广播|导入|公众号|已读|回执/.test(titleNorm)
|
|
288
|
-
&& !/批量|群组|群|已读|回执/.test(queryNorm)) {
|
|
289
|
-
score -= 250;
|
|
290
|
-
}
|
|
291
|
-
if (/^单发/.test(titleNorm) && /发送|单聊/.test(queryNorm)) {
|
|
292
|
-
score += 120;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
350
|
+
else if (pn.includes(titleNorm)) {
|
|
351
|
+
s = 700 + titleNorm.length;
|
|
295
352
|
}
|
|
296
|
-
if (
|
|
297
|
-
|
|
353
|
+
else if (titleTokens.some((token) => pn.includes(token) || token.includes(pn))) {
|
|
354
|
+
// 子句匹配 title 的 token(如 "创建群组" 匹配 "创建/解散群组(普通群管理)" 中的 "创建" token)
|
|
355
|
+
s = 600;
|
|
298
356
|
}
|
|
357
|
+
if (s > bestScore)
|
|
358
|
+
bestScore = s;
|
|
299
359
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
360
|
+
if (bestScore <= 0) {
|
|
361
|
+
// 退化:子句无匹配时,试 loose(去噪声字 + 单字容错)
|
|
362
|
+
const qn = clauses[0].replace(/发送/g, '发');
|
|
363
|
+
if (qn.length >= 3 && titleNorm.includes(qn)) {
|
|
364
|
+
bestScore = 500;
|
|
365
|
+
if (/批量|群组|群流|广播|导入|公众号|已读|回执/.test(titleNorm)
|
|
366
|
+
&& !/批量|群组|群|已读|回执/.test(clauses[0])) {
|
|
367
|
+
bestScore -= 250;
|
|
368
|
+
}
|
|
369
|
+
if (/^单发/.test(titleNorm) && /发送|单聊/.test(clauses[0])) {
|
|
370
|
+
bestScore += 120;
|
|
371
|
+
}
|
|
307
372
|
}
|
|
308
373
|
}
|
|
374
|
+
if (bestScore > 0) {
|
|
375
|
+
candidates.push({ chunk, score: bestScore });
|
|
376
|
+
}
|
|
309
377
|
}
|
|
378
|
+
candidates.sort((a, b) => b.score - a.score);
|
|
379
|
+
const strongCandidates = candidates
|
|
380
|
+
.filter(({ score }) => score >= 500)
|
|
381
|
+
.slice(0, 12);
|
|
382
|
+
strongCandidates.forEach(({ chunk, score }, idx) => {
|
|
383
|
+
// 递减 boost:前两条更高,其余保持可召回但不过度压制 BM25
|
|
384
|
+
// token 匹配(600 分)至少给 150,确保子句拆分的行不被 BM25 原始分压掉
|
|
385
|
+
const amount = idx === 0
|
|
386
|
+
? 200 + Math.min(score, 100)
|
|
387
|
+
: idx === 1
|
|
388
|
+
? 170 + Math.min(score, 90)
|
|
389
|
+
: Math.max(score >= 600 ? 150 : 90, 140 - idx * 8);
|
|
390
|
+
addBoost(chunk, amount, `E7:url-row:${chunk.title}`);
|
|
391
|
+
urlRowHitChunkIds.add(chunk.id);
|
|
392
|
+
});
|
|
310
393
|
}
|
|
311
394
|
// E8: 集成查阅意图 boost——prompt 含集成/接入/快速开始/接入文档等意图词时,
|
|
312
395
|
// 把 {integration|knowledge}/{product}/preset/{fw}/integration.md 系列文件顶到前列。
|
|
@@ -326,5 +409,124 @@ export function runExactLookup(prompt, pool, norm) {
|
|
|
326
409
|
addBoost(chunk, 120, `E8:integration-doc:${chunk.source}`);
|
|
327
410
|
}
|
|
328
411
|
}
|
|
329
|
-
|
|
412
|
+
// E9: chat faq——types=faq 时优先 knowledge 语料,避免 integration 文档内 FAQ 章节抢首位
|
|
413
|
+
if (norm.searchIntent?.includes('faq') && norm.product?.includes('chat')) {
|
|
414
|
+
const authPrompt = /auth|login|signature|usersig|鉴权|登录/i.test(prompt);
|
|
415
|
+
for (const chunk of pool) {
|
|
416
|
+
if (chunk.source.startsWith('knowledge/chat/')) {
|
|
417
|
+
const urlBoost = authPrompt && chunk.source.includes('/urls/') ? 180 : 100;
|
|
418
|
+
addBoost(chunk, urlBoost, 'E9:chat-faq:knowledge');
|
|
419
|
+
}
|
|
420
|
+
if (chunk.source.startsWith('integration/chat/')) {
|
|
421
|
+
addBoost(chunk, -120, 'E9:chat-faq:penalize-integration');
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// E11: LiveKit 生命周期意图强召回(开播/停播/观看/退出)
|
|
426
|
+
if (norm.product?.includes('live') && LIVE_LIFECYCLE_PROMPT.test(prompt)) {
|
|
427
|
+
const queryApiHits = LIVE_LIFECYCLE_APIS.filter((api) => new RegExp(api, 'i').test(prompt));
|
|
428
|
+
for (const chunk of pool) {
|
|
429
|
+
const isLiveCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/live/')
|
|
430
|
+
&& chunk.source.endsWith('/integration.md');
|
|
431
|
+
const isVoiceCoreIntegration = chunk.source.startsWith('knowledge/livekit/core-sdk/voice/')
|
|
432
|
+
&& chunk.source.endsWith('/integration.md');
|
|
433
|
+
if (!isLiveCoreIntegration && !isVoiceCoreIntegration)
|
|
434
|
+
continue;
|
|
435
|
+
if (norm.scenario === 'live' && !isLiveCoreIntegration)
|
|
436
|
+
continue;
|
|
437
|
+
if (norm.scenario === 'voice' && !isVoiceCoreIntegration)
|
|
438
|
+
continue;
|
|
439
|
+
addBoost(chunk, 140, 'E11:live-lifecycle-core-integration');
|
|
440
|
+
for (const api of queryApiHits) {
|
|
441
|
+
if (chunk.api_names?.some((name) => name.toLowerCase() === api.toLowerCase())) {
|
|
442
|
+
addBoost(chunk, 160, `E11:live-lifecycle-api:${api}`);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// E10: roomkit Core/Preset 消歧 + unsupported feature 强召回
|
|
448
|
+
if (norm.product?.includes('room') && norm.frameworks?.length) {
|
|
449
|
+
const platform = norm.frameworks.find((fw) => ['android', 'ios', 'flutter', 'vue'].includes(fw));
|
|
450
|
+
const featureHits = detectRoomFeatureHits(prompt);
|
|
451
|
+
const coreIntent = ROOM_CORE_SIGNAL.test(prompt) || !ROOM_PRESET_SIGNAL.test(prompt);
|
|
452
|
+
const presetIntent = ROOM_PRESET_SIGNAL.test(prompt) && !ROOM_CORE_SIGNAL.test(prompt);
|
|
453
|
+
if (platform) {
|
|
454
|
+
const coreScope = `room:core-sdk:${platform}`;
|
|
455
|
+
const presetScope = `room:preset:${platform}`;
|
|
456
|
+
for (const chunk of pool) {
|
|
457
|
+
if (chunk.product !== 'room')
|
|
458
|
+
continue;
|
|
459
|
+
if (chunk.scope === coreScope) {
|
|
460
|
+
addBoost(chunk, 40, `E10:room-core-scope:${platform}`);
|
|
461
|
+
if (platform !== 'vue' && chunk.doc_kind === 'capability_matrix') {
|
|
462
|
+
addBoost(chunk, 120, `E10:room-matrix:${platform}`);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
if (coreIntent && chunk.scope === presetScope) {
|
|
466
|
+
addPenalty(chunk, 120);
|
|
467
|
+
}
|
|
468
|
+
if (presetIntent && chunk.scope === coreScope && chunk.capability_status === 'unsupported') {
|
|
469
|
+
addPenalty(chunk, 180);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
for (const feature of featureHits) {
|
|
473
|
+
for (const chunk of pool) {
|
|
474
|
+
if (chunk.product !== 'room')
|
|
475
|
+
continue;
|
|
476
|
+
if (platform === 'vue' && chunk.scope === coreScope && chunk.source.endsWith(feature.fileName)) {
|
|
477
|
+
addBoost(chunk, 220, `E10:room-vue-feature:${feature.fileName}`);
|
|
478
|
+
}
|
|
479
|
+
if (platform !== 'vue' && chunk.scope === coreScope) {
|
|
480
|
+
if (chunk.source.endsWith('unsupported-features.md') && feature.titlePattern.test(chunk.title)) {
|
|
481
|
+
addBoost(chunk, 280, `E10:room-unsupported:${platform}:${feature.fileName}`);
|
|
482
|
+
}
|
|
483
|
+
if (chunk.doc_kind === 'capability_matrix') {
|
|
484
|
+
addBoost(chunk, 120, `E10:room-matrix:${platform}:${feature.fileName}`);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
// E12: CallKit Vue 混合类型问题消歧(状态机 STATUS 与 Core Store 类型分层召回)
|
|
492
|
+
if (norm.product?.includes('call')) {
|
|
493
|
+
const isStatusIntent = /statuschanged|\bstatus\b|callmediatype|媒体类型|通话状态|状态回调/i.test(prompt);
|
|
494
|
+
const isStoreIntent = /callstatus|callrole|iuserinfo|storename\.?call|store|name\s*常量|枚举值|字段定义/i.test(prompt);
|
|
495
|
+
const isEngineInvitationIntent = /tuicallengine|on_call_received|call\s*invitation|incoming\s*call|accept\(|reject\(|inviteid|userData|邀请|来电|接听|拒接|信令/i.test(prompt);
|
|
496
|
+
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);
|
|
497
|
+
const isLogIntent = /setloglevel|log\s*level|disable\s*log|console\s*log|日志级别|关闭\s*log/i.test(prompt);
|
|
498
|
+
for (const chunk of pool) {
|
|
499
|
+
if (chunk.product !== 'call')
|
|
500
|
+
continue;
|
|
501
|
+
const source = chunk.source.toLowerCase();
|
|
502
|
+
if (isStatusIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
|
|
503
|
+
addBoost(chunk, 180, 'E12:callkit-vue-status');
|
|
504
|
+
}
|
|
505
|
+
if (isStoreIntent && source.includes('knowledge/callkit/core-sdk/web/')) {
|
|
506
|
+
addBoost(chunk, 220, 'E12:callkit-core-store');
|
|
507
|
+
}
|
|
508
|
+
if (isStoreIntent && source.includes('knowledge/callkit/preset/vue/')) {
|
|
509
|
+
addPenalty(chunk, 80);
|
|
510
|
+
}
|
|
511
|
+
if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
|
|
512
|
+
addBoost(chunk, 300, 'E13A:callengine-invitation');
|
|
513
|
+
}
|
|
514
|
+
if (isEngineInvitationIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
|
|
515
|
+
addPenalty(chunk, 80);
|
|
516
|
+
}
|
|
517
|
+
if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callkit-call-vs-calls.md')) {
|
|
518
|
+
addBoost(chunk, 300, 'E13B:callkit-call-vs-calls');
|
|
519
|
+
}
|
|
520
|
+
if (isCallkitDiffIntent && source.includes('knowledge/callkit/best-practice/web/callengine-invitation.md')) {
|
|
521
|
+
addPenalty(chunk, 80);
|
|
522
|
+
}
|
|
523
|
+
if (isCallkitDiffIntent && source.includes('knowledge/callkit/preset/vue/uikit-api-reference.md')) {
|
|
524
|
+
addPenalty(chunk, 40);
|
|
525
|
+
}
|
|
526
|
+
if (isLogIntent && source.includes('knowledge/callkit/best-practice/web/callengine-log-control.md')) {
|
|
527
|
+
addBoost(chunk, 260, 'E13:callengine-log-control');
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
return { boosts, exactHits, urlRowHitChunkIds: [...urlRowHitChunkIds] };
|
|
330
532
|
}
|
|
@@ -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(
|
|
10
|
-
if (!
|
|
8
|
+
function expandFrameworks(frameworks, _products) {
|
|
9
|
+
if (!frameworks?.length)
|
|
11
10
|
return undefined;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
/**
|
|
33
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
return expandTypeAliases(downgraded);
|
|
52
|
+
return expanded;
|
|
41
53
|
}
|
|
42
54
|
/** 单平台产品的隐式 framework 推断:避免对显然唯一的平台再发起询问 */
|
|
43
|
-
function inferImplicitFramework(products,
|
|
44
|
-
if (
|
|
45
|
-
return
|
|
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.
|
|
53
|
-
const
|
|
54
|
-
|
|
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
|
-
|
|
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,
|
|
28
|
-
if (
|
|
27
|
+
export function downgradeToProductType(products, types, prompt, frameworks) {
|
|
28
|
+
if (frameworks?.length)
|
|
29
29
|
return types;
|
|
30
30
|
if (!types.includes('feature'))
|
|
31
31
|
return types;
|
|
@@ -44,7 +44,7 @@ function isChatErrorCodeAmbiguous(norm) {
|
|
|
44
44
|
}
|
|
45
45
|
/** 未传 framework 时,是否应先 present_framework_choice 再检索 */
|
|
46
46
|
export function requiresFramework(norm) {
|
|
47
|
-
if (norm.
|
|
47
|
+
if (norm.frameworks?.length)
|
|
48
48
|
return false;
|
|
49
49
|
// 硬规则:chat 错误码场景必须问平台(服务端 / Web / Native 三个 URL)
|
|
50
50
|
if (isChatErrorCodeAmbiguous(norm))
|