@tencent-rtc/mcp 1.4.7 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cursor-setting.png +0 -0
- package/index.js +0 -1
- package/knowledge/bm25-cache.js +73 -0
- package/knowledge/bm25.js +147 -0
- package/knowledge/build-index.js +69 -0
- package/knowledge/chunker.js +167 -0
- package/knowledge/content-loader.js +39 -0
- package/knowledge/doc-url-resolver.js +142 -0
- package/knowledge/extractors.js +25 -0
- package/knowledge/path-meta.js +184 -0
- package/knowledge/search/exact-lookup.js +497 -0
- package/knowledge/search/filter-pool.js +104 -0
- package/knowledge/search/product-scope-intent.js +40 -0
- package/knowledge/search/requires-framework.js +81 -0
- package/knowledge/search/search-knowledge.js +229 -0
- package/mcp-server-prompt.png +0 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +10 -0
- package/resource/_schema/goal-tags.yaml +72 -0
- package/resource/_schema/products.yaml +19 -0
- package/resource/_schema/trtc-intents.yaml +27 -0
- package/resource/_schema/types.yaml +43 -0
- package/resource/index/component-slugs.json +1 -0
- package/resource/index/doc-source-urls.json +1 -0
- package/resource/index/manifest.json +1 -0
- package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
- package/resource/integration/callkit/preset/flutter/integration.md +346 -0
- package/resource/integration/callkit/preset/ios/integration.md +408 -0
- package/resource/integration/callkit/preset/react/integration.md +362 -0
- package/resource/integration/callkit/preset/vue/integration.md +356 -0
- package/resource/integration/chat/preset/android/integration.md +500 -0
- package/resource/integration/chat/preset/flutter/integration.md +370 -0
- package/resource/integration/chat/preset/ios/integration.md +566 -0
- package/resource/integration/chat/preset/react/integration.md +490 -0
- package/resource/integration/chat/preset/vue/integration.md +504 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
- package/resource/integration/roomkit/preset/vue/integration.md +562 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
- package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
- package/resource/knowledge/callkit/faq/android.md +92 -0
- package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
- package/resource/knowledge/callkit/faq/error-code.md +67 -0
- package/resource/knowledge/callkit/faq/flutter.md +52 -0
- package/resource/knowledge/callkit/faq/ios.md +104 -0
- package/resource/knowledge/callkit/faq/web.md +74 -0
- package/resource/knowledge/callkit/preset/android/api.md +412 -0
- package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
- package/resource/knowledge/callkit/preset/ios/api.md +234 -0
- package/resource/knowledge/callkit/preset/web/api.md +83 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
- package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
- package/resource/knowledge/chat/preset/android/features/language.md +136 -0
- package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
- package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
- package/resource/knowledge/chat/preset/android/features/search.md +64 -0
- package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
- package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
- package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
- package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
- package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
- package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
- package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
- package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
- package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
- package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
- package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
- package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
- package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
- package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
- package/resource/knowledge/chat/urls/error-code.md +17 -0
- package/resource/knowledge/chat/urls/product.md +43 -0
- package/resource/knowledge/chat/urls/restapi.md +204 -0
- package/resource/knowledge/chat/urls/sdk/android.md +80 -0
- package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
- package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
- package/resource/knowledge/chat/urls/sdk/web.md +80 -0
- package/resource/knowledge/chat/urls/webhook.md +68 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
- package/resource/knowledge/livekit/faq/error-code.md +193 -0
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
- package/resource/knowledge/push/config/android.md +92 -0
- package/resource/knowledge/push/config/harmonyos.md +83 -0
- package/resource/knowledge/push/config/ios.md +254 -0
- package/resource/knowledge/push/config/react-native.md +254 -0
- package/resource/knowledge/push/config/unity.md +209 -0
- package/resource/knowledge/push/config/unreal-engine.md +194 -0
- package/resource/knowledge/push/integration/android.md +404 -0
- package/resource/knowledge/push/integration/flutter.md +465 -0
- package/resource/knowledge/push/integration/harmonyos.md +63 -0
- package/resource/knowledge/push/integration/ios.md +246 -0
- package/resource/knowledge/push/integration/react-native.md +366 -0
- package/resource/knowledge/push/integration/uni-app.md +208 -0
- package/resource/knowledge/push/integration/unity.md +389 -0
- package/resource/knowledge/push/integration/unreal-engine.md +390 -0
- package/resource/knowledge/push/overview/prepare.md +60 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
- package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
- package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
- package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
- package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
- package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
- package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
- package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
- package/server-config.js +0 -1
- package/server.js +35 -12
- package/streamable-http.js +0 -1
- package/tools/call/get_native_call_uikit_integration.js +2 -4
- package/tools/call/get_native_callkit_core_integration.js +2 -6
- package/tools/call/get_web_call_uikit_integration.js +2 -4
- package/tools/chat/get_native_chat_uikit_integration.js +2 -4
- package/tools/chat/get_web_chat_uikit_integration.js +2 -4
- package/tools/common/get_usersig.js +0 -1
- package/tools/common/present_framework_choice.js +19 -14
- package/tools/common/record_answer.js +19 -26
- package/tools/common/record_feedback.js +17 -31
- package/tools/common/search_trtc_knowledge.js +44 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +3 -2
- package/tools/definitions/get_native_callkit_core_integration_def.js +5 -4
- package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -3
- package/tools/definitions/get_native_livekit_core_integration_def.js +6 -6
- package/tools/definitions/get_usersig_def.js +0 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +4 -3
- package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +5 -6
- package/tools/definitions/get_web_room_core_integration_def.js +49 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +5 -5
- package/tools/definitions/integration-boundary.js +5 -0
- package/tools/definitions/present_framework_choice_def.js +12 -11
- package/tools/definitions/record_answer_def.js +19 -18
- package/tools/definitions/record_feedback_def.js +14 -14
- package/tools/definitions/search_trtc_knowledge_def.js +39 -0
- package/tools/index.js +5 -37
- package/tools/live/get_native_livekit_core_integration.js +1 -4
- package/tools/live/get_web_live_uikit_integration.js +2 -5
- package/tools/room/get_web_room_core_integration.js +47 -0
- package/tools/room/get_web_room_uikit_integration.js +2 -4
- package/utils/generate-structured-result.js +24 -31
- package/utils/generate-usersig.js +0 -1
- package/utils/get-device-identifier.js +0 -1
- package/utils/get-doc-content.js +14 -9
- package/utils/http-get.js +0 -1
- package/utils/http-post.js +0 -1
- package/utils/report-cls-client.js +18 -21
- package/utils/report-es-client.js +1 -2
- package/index.js.map +0 -1
- package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
- package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
- package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
- package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
- package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
- package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
- package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
- package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
- package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
- package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
- package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
- package/resource/doc/callkit/faq/common/error-code.md +0 -47
- package/resource/doc/callkit/faq/flutter-faq.md +0 -115
- package/resource/doc/callkit/faq/ios-faq.md +0 -115
- package/resource/doc/callkit/faq/web-faq.md +0 -36
- package/resource/doc/callkit/preset/android/api.md +0 -296
- package/resource/doc/callkit/preset/flutter/api.md +0 -410
- package/resource/doc/callkit/preset/flutter/integration.md +0 -164
- package/resource/doc/callkit/preset/ios/api.md +0 -80
- package/resource/doc/callkit/preset/ios/integration.md +0 -187
- package/resource/doc/callkit/preset/react/api.md +0 -501
- package/resource/doc/callkit/preset/react/integration.md +0 -86
- package/resource/doc/callkit/preset/vue/api.md +0 -501
- package/resource/doc/callkit/preset/vue/integration.md +0 -83
- package/resource/doc/chatkit/android/faq.md +0 -111
- package/resource/doc/chatkit/android/features/theme.md +0 -219
- package/resource/doc/chatkit/android/integration.md +0 -490
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
- package/resource/doc/chatkit/faq/common/product.md +0 -7
- package/resource/doc/chatkit/faq/common/server.md +0 -44
- package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
- package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
- package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
- package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
- package/resource/doc/chatkit/flutter/faq.md +0 -23
- package/resource/doc/chatkit/flutter/features/theme.md +0 -235
- package/resource/doc/chatkit/flutter/integration.md +0 -344
- package/resource/doc/chatkit/ios/faq.md +0 -111
- package/resource/doc/chatkit/ios/features/theme.md +0 -267
- package/resource/doc/chatkit/react/components/avatar.md +0 -104
- package/resource/doc/chatkit/react/components/chat-header.md +0 -148
- package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
- package/resource/doc/chatkit/react/components/chat.md +0 -38
- package/resource/doc/chatkit/react/components/component-list.md +0 -37
- package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
- package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
- package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
- package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
- package/resource/doc/chatkit/react/components/message-list.md +0 -293
- package/resource/doc/chatkit/react/components/tuikit.md +0 -34
- package/resource/doc/chatkit/react/faq.md +0 -26
- package/resource/doc/chatkit/react/integration.md +0 -416
- package/resource/doc/chatkit/vue/components/avatar.md +0 -104
- package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
- package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
- package/resource/doc/chatkit/vue/components/chat.md +0 -45
- package/resource/doc/chatkit/vue/components/component-list.md +0 -87
- package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
- package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
- package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
- package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
- package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
- package/resource/doc/chatkit/vue/components/message-list.md +0 -433
- package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
- package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
- package/resource/doc/chatkit/vue/faq.md +0 -36
- package/resource/doc/chatkit/vue/integration.md +0 -428
- package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
- package/resource/doc/livekit/faq/common/error-code.md +0 -88
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
- package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
- package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
- package/resource/doc/roomkit/faq/common/error-code.md +0 -67
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
- package/resource/doc/roomkit/vue/features/device-state.md +0 -460
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
- package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
- package/resource/doc/roomkit/vue/features/room-state.md +0 -282
- package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
- package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
- package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
- package/resource/doc/roomkit/vue/integration.md +0 -315
- package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
- package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
- package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
- package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
- package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
- package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
- package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
- package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
- package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
- package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
- package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
- package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
- package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
- package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
- package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
- package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
- package/server-config.js.map +0 -1
- package/server.js.map +0 -1
- package/streamable-http.js.map +0 -1
- package/tools/call/get_callkit_api.js +0 -33
- package/tools/call/get_callkit_api.js.map +0 -1
- package/tools/call/get_native_call_uikit_integration.js.map +0 -1
- package/tools/call/get_native_callkit_core_integration.js.map +0 -1
- package/tools/call/get_web_call_uikit_integration.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_integration.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_integration.js.map +0 -1
- package/tools/common/get_faq.js +0 -266
- package/tools/common/get_faq.js.map +0 -1
- package/tools/common/get_usersig.js.map +0 -1
- package/tools/common/present_framework_choice.js.map +0 -1
- package/tools/common/record_answer.js.map +0 -1
- package/tools/common/record_feedback.js.map +0 -1
- package/tools/common/record_skill_session.js +0 -69
- package/tools/common/record_skill_session.js.map +0 -1
- package/tools/definitions/get_callkit_api_def.js +0 -29
- package/tools/definitions/get_callkit_api_def.js.map +0 -1
- package/tools/definitions/get_faq_def.js +0 -47
- package/tools/definitions/get_faq_def.js.map +0 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
- package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +0 -1
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
- package/tools/definitions/get_usersig_def.js.map +0 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_api_def.js +0 -30
- package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
- package/tools/definitions/present_framework_choice_def.js.map +0 -1
- package/tools/definitions/record_answer_def.js.map +0 -1
- package/tools/definitions/record_feedback_def.js.map +0 -1
- package/tools/definitions/record_skill_session_def.js +0 -31
- package/tools/definitions/record_skill_session_def.js.map +0 -1
- package/tools/index.js.map +0 -1
- package/tools/live/get_native_livekit_core_features.js +0 -68
- package/tools/live/get_native_livekit_core_features.js.map +0 -1
- package/tools/live/get_native_livekit_core_integration.js.map +0 -1
- package/tools/live/get_web_live_uikit_integration.js.map +0 -1
- package/tools/live/get_web_livekit_api.js +0 -33
- package/tools/live/get_web_livekit_api.js.map +0 -1
- package/tools/live/get_web_livekit_component_detail.js +0 -35
- package/tools/live/get_web_livekit_component_detail.js.map +0 -1
- package/tools/room/get_web_room_uikit_integration.js.map +0 -1
- package/tools/room/get_web_roomkit_feature_detail.js +0 -69
- package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
- package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
- package/utils/build-session-directives.js +0 -120
- package/utils/build-session-directives.js.map +0 -1
- package/utils/generate-structured-result.js.map +0 -1
- package/utils/generate-usersig.js.map +0 -1
- package/utils/get-device-identifier.js.map +0 -1
- package/utils/get-doc-content.js.map +0 -1
- package/utils/handle-framework.js +0 -9
- package/utils/handle-framework.js.map +0 -1
- package/utils/handle-state-name.js +0 -29
- package/utils/handle-state-name.js.map +0 -1
- package/utils/http-get.js.map +0 -1
- package/utils/http-post.js.map +0 -1
- package/utils/report-cls-client.js.map +0 -1
- package/utils/report-es-client.js.map +0 -1
- package/utils/report-runtime-error-cls-client.js +0 -91
- package/utils/report-runtime-error-cls-client.js.map +0 -1
- /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
- /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
- /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { downgradeToProductType } from './product-scope-intent.js';
|
|
2
|
+
/**
|
|
3
|
+
* MCP framework enum → index 中对应的 framework 值列表。
|
|
4
|
+
* path-meta.ts 已通过 normalizeFrameworkDir 把目录名归一到标准 framework,
|
|
5
|
+
* 所有产品的 framework 均已对齐枚举值,无需额外别名扩展。
|
|
6
|
+
* web 匹配 react/vue/web(Chat/Call/Live Web 端覆盖)。
|
|
7
|
+
*/
|
|
8
|
+
const FRAMEWORK_SEARCH_ALIASES = {};
|
|
9
|
+
function expandFrameworks(framework) {
|
|
10
|
+
if (!framework)
|
|
11
|
+
return undefined;
|
|
12
|
+
if (framework === 'web')
|
|
13
|
+
return ['react', 'vue', 'web'];
|
|
14
|
+
return FRAMEWORK_SEARCH_ALIASES[framework] ?? [framework];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 类型别名:UIKit「组件(component)」与「feature」是同一批文档的两种叫法
|
|
18
|
+
* (chat preset 双标签,roomkit/live/call 仅打 feature),互相放行避免 types 硬过滤误杀。
|
|
19
|
+
*/
|
|
20
|
+
const TYPE_ALIASES = {
|
|
21
|
+
component: ['component', 'feature'],
|
|
22
|
+
feature: ['feature', 'component'],
|
|
23
|
+
};
|
|
24
|
+
function expandTypeAliases(types) {
|
|
25
|
+
const expanded = new Set();
|
|
26
|
+
for (const t of types) {
|
|
27
|
+
for (const alias of TYPE_ALIASES[t] ?? [t])
|
|
28
|
+
expanded.add(alias);
|
|
29
|
+
}
|
|
30
|
+
return [...expanded];
|
|
31
|
+
}
|
|
32
|
+
/** Chat 无独立 faq.md;types 含 faq 时退化到全语料检索(feature/component/urls 等均命中) */
|
|
33
|
+
function resolveTypes(products, types, prompt, framework) {
|
|
34
|
+
if (!types?.length)
|
|
35
|
+
return undefined;
|
|
36
|
+
if (products?.includes('chat') && types.includes('faq')) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const downgraded = downgradeToProductType(products, types, prompt, framework);
|
|
40
|
+
return expandTypeAliases(downgraded);
|
|
41
|
+
}
|
|
42
|
+
/** 单平台产品的隐式 framework 推断:避免对显然唯一的平台再发起询问 */
|
|
43
|
+
function inferImplicitFramework(products, framework) {
|
|
44
|
+
if (framework)
|
|
45
|
+
return framework;
|
|
46
|
+
if (products?.length === 1 && products[0] === 'rtcengine')
|
|
47
|
+
return 'web';
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
export function normalizeParams(params) {
|
|
51
|
+
const limit = Math.min(Math.max(params.limit ?? 8, 1), 16);
|
|
52
|
+
const effectiveFramework = inferImplicitFramework(params.product, params.framework);
|
|
53
|
+
const frameworks = expandFrameworks(effectiveFramework);
|
|
54
|
+
const types = resolveTypes(params.product, params.types, params.prompt, effectiveFramework);
|
|
55
|
+
return {
|
|
56
|
+
prompt: params.prompt,
|
|
57
|
+
product: params.product,
|
|
58
|
+
framework: effectiveFramework,
|
|
59
|
+
frameworks,
|
|
60
|
+
searchIntent: params.types,
|
|
61
|
+
types,
|
|
62
|
+
scenario: params.scenario,
|
|
63
|
+
limit,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 跨平台类型集合:framework=['*'] 的 chunk 仅在 type 命中这些时才视为合理。
|
|
68
|
+
* - server_api / webhook / product:天然跨平台
|
|
69
|
+
* - faq / error_code:URL 映射页(chat/urls/error-code.md)与 callkit/faq/ 等按平台分 faq 文件,
|
|
70
|
+
* 都标记为 framework=['*'],按 framework 检索时不应被武断排除
|
|
71
|
+
*/
|
|
72
|
+
const CROSS_PLATFORM_CHUNK_TYPES = new Set([
|
|
73
|
+
'server_api',
|
|
74
|
+
'webhook',
|
|
75
|
+
'product',
|
|
76
|
+
'faq',
|
|
77
|
+
'error_code',
|
|
78
|
+
]);
|
|
79
|
+
function chunkIsCrossPlatform(chunkTypes) {
|
|
80
|
+
return chunkTypes.some((t) => CROSS_PLATFORM_CHUNK_TYPES.has(t));
|
|
81
|
+
}
|
|
82
|
+
export function filterPool(chunks, norm) {
|
|
83
|
+
return chunks.filter((chunk) => {
|
|
84
|
+
if (norm.product && !norm.product.includes(chunk.product) && chunk.product !== '*') {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
if (norm.frameworks?.length) {
|
|
88
|
+
const isWildcardChunk = chunk.framework.includes('*');
|
|
89
|
+
// 收紧:framework=['*'] 仅在该 chunk 明确是跨平台 type(product/server_api/webhook)时放行;
|
|
90
|
+
// 否则要求 chunk.framework 与请求 framework 有交集。
|
|
91
|
+
const wildcardAllowed = isWildcardChunk && chunkIsCrossPlatform(chunk.types);
|
|
92
|
+
const explicitMatch = norm.frameworks.some((fw) => chunk.framework.includes(fw));
|
|
93
|
+
if (!explicitMatch && !wildcardAllowed)
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (norm.scenario && chunk.scenario && chunk.scenario !== norm.scenario) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (norm.types?.length && !norm.types.some((t) => chunk.types.includes(t))) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product-scope intent (routes to chat/urls/product.md, type=product).
|
|
3
|
+
*
|
|
4
|
+
* These questions are about the PRODUCT / account scope — billing, packages, console settings,
|
|
5
|
+
* account & data capabilities configured in the console, storage/retention, usage limits.
|
|
6
|
+
* They are cross-platform and must NOT require a framework.
|
|
7
|
+
*
|
|
8
|
+
* Detection keys on *intent* words (console / billing / limit / product-setting), NOT on
|
|
9
|
+
* capability nouns alone (e.g. "relationship chain", "group management"): those nouns are
|
|
10
|
+
* ambiguous and can also be client-SDK feature questions on a specific platform.
|
|
11
|
+
* A platform / SDK / "how to implement" signal disqualifies the product-scope interpretation.
|
|
12
|
+
*/
|
|
13
|
+
const PRODUCT_SCOPE_INTENT = /控制台|计费|套餐|价格|退费|续费|配额|使用限制|数量限制|存储时长|漫游.{0,4}时长|多端登录|登录策略|console|dashboard|billing|pricing|package\s*(plan|feature|difference)|quota|usage\s*limit|multi[\s-]?device\s*login|login\s*(policy|strategy)|(message\s*)?storage\s*(duration|period)|retention/i;
|
|
14
|
+
const CLIENT_IMPL_SIGNAL = /\b(android|ios|flutter|harmonyos|react[\s-]?native|unity|unreal(\s*engine)?|donut|uni[\s-]?app)\b|\bSDK\b|\bAPI\b|怎么(实现|调用|集成|接入|写)|如何(实现|调用|集成|接入|写)|\b(implement|integrate)\b/i;
|
|
15
|
+
export function isProductScopePrompt(prompt) {
|
|
16
|
+
if (!PRODUCT_SCOPE_INTENT.test(prompt))
|
|
17
|
+
return false;
|
|
18
|
+
if (CLIENT_IMPL_SIGNAL.test(prompt))
|
|
19
|
+
return false;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* When the Agent mislabels a product-scope question as `feature` (no framework given),
|
|
24
|
+
* rewrite the type to `product` so filterPool can hit chat/urls/product.md.
|
|
25
|
+
* If a framework is present, the Agent genuinely wants a client feature — do not downgrade.
|
|
26
|
+
*/
|
|
27
|
+
export function downgradeToProductType(products, types, prompt, framework) {
|
|
28
|
+
if (framework)
|
|
29
|
+
return types;
|
|
30
|
+
if (!types.includes('feature'))
|
|
31
|
+
return types;
|
|
32
|
+
if (!products?.includes('chat'))
|
|
33
|
+
return types;
|
|
34
|
+
if (!isProductScopePrompt(prompt))
|
|
35
|
+
return types;
|
|
36
|
+
const downgraded = types.filter((t) => t !== 'feature');
|
|
37
|
+
if (!downgraded.includes('product'))
|
|
38
|
+
downgraded.push('product');
|
|
39
|
+
return downgraded;
|
|
40
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { isProductScopePrompt } from './product-scope-intent.js';
|
|
2
|
+
const PLATFORM_TYPES = new Set([
|
|
3
|
+
'api',
|
|
4
|
+
'component',
|
|
5
|
+
'feature',
|
|
6
|
+
'plugin',
|
|
7
|
+
'sdk',
|
|
8
|
+
'integration',
|
|
9
|
+
]);
|
|
10
|
+
const CROSS_PLATFORM_TYPES = new Set(['server_api', 'webhook', 'product']);
|
|
11
|
+
const CROSS_PLATFORM_PROMPT = /计费|套餐|价格|UserSig\s*原理|签发流程|控制台|服务端\s*REST|云\s*API|Webhook|回调/i;
|
|
12
|
+
const PLATFORM_PROMPT = /API|组件|怎么用|怎么开|怎么设置|怎么配置|虚拟背景|屏幕分享|enterRoom|SDK|插件|集成步骤|客户端|Feature|主题定制|连麦|上麦/i;
|
|
13
|
+
/**
|
|
14
|
+
* push 必须问平台的强信号:仅当 prompt 明确提到具体「平台」(android/ios/flutter/...)时才拦询问。
|
|
15
|
+
* 厂商(小米/OPPO/华为/FCM 等)不算平台——它们会命中写写对齐后的平台级配置页(如 knowledge/push/config/android.md),
|
|
16
|
+
* 问厂商问题不需要再让用户选平台。
|
|
17
|
+
*/
|
|
18
|
+
const PUSH_PLATFORM_SPECIFIC_PROMPT = /\b(android|ios|flutter|harmonyos|react[\s-]?native|unity|unreal|donut|uni[\s-]?app)\b/i;
|
|
19
|
+
/**
|
|
20
|
+
* push 综述关键词:直接对应 knowledge/push/overview/prepare.md 的两个二级标题
|
|
21
|
+
* - "## 开通 Push 服务" → 开通 / 创建应用 / SDKAppID / 控制台 / 数据中心
|
|
22
|
+
* - "## 接入流程说明" → 接入流程 / 厂商配置 / SDK 接入 / 高级功能设置
|
|
23
|
+
* 命中即跨平台综述,无需问平台。
|
|
24
|
+
*/
|
|
25
|
+
const PUSH_OVERVIEW_PROMPT = /开通|创建\s*Push|创建应用|SDKAppID|控制台|数据中心|接入流程|接入推送|厂商配置|SDK\s*接入|高级功能|离线推送(?!\s*怎么)/i;
|
|
26
|
+
function hasProduct(norm, p) {
|
|
27
|
+
return !!(norm.product?.includes(p));
|
|
28
|
+
}
|
|
29
|
+
/** chat/urls/product.md:产品/账号级配置,非客户端 SDK feature */
|
|
30
|
+
function isChatProductScopeQuery(norm) {
|
|
31
|
+
if (!hasProduct(norm, 'chat'))
|
|
32
|
+
return false;
|
|
33
|
+
return isProductScopePrompt(norm.prompt);
|
|
34
|
+
}
|
|
35
|
+
/** chat error-code URL 同时列了「服务端 / Web / Native」三类入口,必须先问平台才能定位 */
|
|
36
|
+
function isChatErrorCodeAmbiguous(norm) {
|
|
37
|
+
if (!hasProduct(norm, 'chat'))
|
|
38
|
+
return false;
|
|
39
|
+
if (norm.framework)
|
|
40
|
+
return false;
|
|
41
|
+
if (norm.searchIntent?.includes('error_code'))
|
|
42
|
+
return true;
|
|
43
|
+
return /错误码|error\s*code|ERR_/i.test(norm.prompt);
|
|
44
|
+
}
|
|
45
|
+
/** 未传 framework 时,是否应先 present_framework_choice 再检索 */
|
|
46
|
+
export function requiresFramework(norm) {
|
|
47
|
+
if (norm.framework)
|
|
48
|
+
return false;
|
|
49
|
+
// 硬规则:chat 错误码场景必须问平台(服务端 / Web / Native 三个 URL)
|
|
50
|
+
if (isChatErrorCodeAmbiguous(norm))
|
|
51
|
+
return true;
|
|
52
|
+
// push:判定逻辑(自上而下)
|
|
53
|
+
if (hasProduct(norm, 'push')) {
|
|
54
|
+
if (norm.searchIntent?.length && norm.searchIntent.every((t) => CROSS_PLATFORM_TYPES.has(t))) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
if (PUSH_PLATFORM_SPECIFIC_PROMPT.test(norm.prompt))
|
|
58
|
+
return true;
|
|
59
|
+
if (PUSH_OVERVIEW_PROMPT.test(norm.prompt))
|
|
60
|
+
return false;
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
// native_trtc_sdk:所有平台相关咨询都依赖具体客户端(android/ios/c++),必须先问
|
|
64
|
+
if (hasProduct(norm, 'native_trtc_sdk'))
|
|
65
|
+
return true;
|
|
66
|
+
if (CROSS_PLATFORM_PROMPT.test(norm.prompt))
|
|
67
|
+
return false;
|
|
68
|
+
if (isChatProductScopeQuery(norm))
|
|
69
|
+
return false;
|
|
70
|
+
if (norm.searchIntent?.length) {
|
|
71
|
+
if (norm.searchIntent.some((t) => PLATFORM_TYPES.has(t)))
|
|
72
|
+
return true;
|
|
73
|
+
if (norm.searchIntent.every((t) => CROSS_PLATFORM_TYPES.has(t)))
|
|
74
|
+
return false;
|
|
75
|
+
// faq / error_code 等默认可跨平台检索
|
|
76
|
+
if (norm.searchIntent.every((t) => t === 'faq' || t === 'error_code' || CROSS_PLATFORM_TYPES.has(t))) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return PLATFORM_PROMPT.test(norm.prompt);
|
|
81
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { attachPoolContent, getSourceFileContent } from '../content-loader.js';
|
|
5
|
+
import { buildReferences, resolveFragmentDocUrls } from '../doc-url-resolver.js';
|
|
6
|
+
import { rankSubsetWithIndex } from '../bm25.js';
|
|
7
|
+
import { getProductsBM25Index } from '../bm25-cache.js';
|
|
8
|
+
import { filterPool, normalizeParams } from './filter-pool.js';
|
|
9
|
+
import { runExactLookup } from './exact-lookup.js';
|
|
10
|
+
import { requiresFramework } from './requires-framework.js';
|
|
11
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
let cachedManifest = null;
|
|
13
|
+
function resolveResourcePath(...segments) {
|
|
14
|
+
return path.resolve(__dirname, '../../resource', ...segments);
|
|
15
|
+
}
|
|
16
|
+
function loadManifest() {
|
|
17
|
+
if (cachedManifest)
|
|
18
|
+
return cachedManifest;
|
|
19
|
+
const manifestPath = resolveResourcePath('index', 'manifest.json');
|
|
20
|
+
if (!fs.existsSync(manifestPath)) {
|
|
21
|
+
throw new Error('manifest.json not found. Run `npm run build` in zh/ first.');
|
|
22
|
+
}
|
|
23
|
+
cachedManifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
24
|
+
return cachedManifest;
|
|
25
|
+
}
|
|
26
|
+
function postProcess(ranked, chunksById, limit) {
|
|
27
|
+
const sourceCount = {};
|
|
28
|
+
const urlMappingSourceCount = {};
|
|
29
|
+
/** 已入选的 push config/android/{vendor} 文件,用于抑制其他厂商噪声 */
|
|
30
|
+
let selectedVendorFile = null;
|
|
31
|
+
const fragments = [];
|
|
32
|
+
for (const item of ranked) {
|
|
33
|
+
const chunk = chunksById.get(item.id);
|
|
34
|
+
if (!chunk)
|
|
35
|
+
continue;
|
|
36
|
+
const isUrlMapping = Boolean(isUrlMappingSource(chunk.source));
|
|
37
|
+
if (isUrlMapping) {
|
|
38
|
+
const urlCount = urlMappingSourceCount[chunk.source] ?? 0;
|
|
39
|
+
if (urlCount >= 1)
|
|
40
|
+
continue;
|
|
41
|
+
urlMappingSourceCount[chunk.source] = urlCount + 1;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const count = sourceCount[chunk.source] ?? 0;
|
|
45
|
+
if (count >= 3)
|
|
46
|
+
continue;
|
|
47
|
+
sourceCount[chunk.source] = count + 1;
|
|
48
|
+
}
|
|
49
|
+
// 当用户明确问某厂商时,抑制同目录下其他厂商文档的噪声
|
|
50
|
+
// 规则:如果已有 config/android/{vendor}.md 入选,
|
|
51
|
+
// 后续其他 config/android/{other}.md 跳过
|
|
52
|
+
const isVendorDoc = chunk.source.match(/^knowledge\/push\/config\/android\/[a-z]+\.md$/);
|
|
53
|
+
if (isVendorDoc) {
|
|
54
|
+
if (!selectedVendorFile) {
|
|
55
|
+
selectedVendorFile = chunk.source;
|
|
56
|
+
}
|
|
57
|
+
else if (chunk.source !== selectedVendorFile) {
|
|
58
|
+
continue; // 跳过其他厂商
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// 当已明确命中了厂商配置页后,后续的 push 通用文件(integration/、其他 config/)不再有意义
|
|
62
|
+
// 只保留同厂商文件(已由 vendor dedup 处理)和 overview 综述,其他 push 通用文档视为噪声
|
|
63
|
+
if (selectedVendorFile && chunk.source.startsWith('knowledge/push/') && !chunk.source.includes('/overview/')) {
|
|
64
|
+
if (chunk.source !== selectedVendorFile)
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const firstPush = fragments.length === 0;
|
|
68
|
+
if (firstPush) {
|
|
69
|
+
// 首条不设分数截止,至少保证 1 条返回
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// 分数衰减到 top 的 5% 以下时停止,不硬填到 limit
|
|
73
|
+
const topScore = fragments[0].score;
|
|
74
|
+
if (topScore > 0 && item.score < topScore * 0.05)
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
fragments.push({
|
|
78
|
+
rank: fragments.length + 1,
|
|
79
|
+
score: item.score,
|
|
80
|
+
title: chunk.title,
|
|
81
|
+
content: chunk.content,
|
|
82
|
+
source: chunk.source,
|
|
83
|
+
doc_urls: resolveFragmentDocUrls(chunk.source, chunk.content, getSourceFileContent(chunk.source)),
|
|
84
|
+
product: chunk.product,
|
|
85
|
+
framework: chunk.framework,
|
|
86
|
+
types: chunk.types,
|
|
87
|
+
chunk_id: chunk.id,
|
|
88
|
+
});
|
|
89
|
+
if (fragments.length >= limit)
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
return fragments;
|
|
93
|
+
}
|
|
94
|
+
function isUrlMappingSource(source) {
|
|
95
|
+
const normalized = source.replace(/\\/g, '/');
|
|
96
|
+
const match = normalized.match(/knowledge\/chat\/urls\/(.+\.md)$/);
|
|
97
|
+
if (!match)
|
|
98
|
+
return null;
|
|
99
|
+
return match[1].replace(/\.md$/, '').replace(/\/index$/, '');
|
|
100
|
+
}
|
|
101
|
+
function partitionFragments(fragments) {
|
|
102
|
+
const urlMapping = [];
|
|
103
|
+
const localDoc = [];
|
|
104
|
+
for (const fragment of fragments) {
|
|
105
|
+
if (isUrlMappingSource(fragment.source)) {
|
|
106
|
+
urlMapping.push(fragment);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
localDoc.push(fragment);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const urlMappingKinds = [...new Set(urlMapping.map((f) => isUrlMappingSource(f.source)).filter(Boolean))];
|
|
113
|
+
return { urlMapping, localDoc, urlMappingKinds };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* P0-3:相对阈值的置信度评估。
|
|
117
|
+
* - high:top ≥ 50 或有精确命中(exactHits 非空)
|
|
118
|
+
* - medium:top ≥ 10 且 top / second ≥ 1.3(区分度足够)
|
|
119
|
+
* - low:top 较低或与 second 接近(同水位竞争,agent 应谨慎)
|
|
120
|
+
* - none:fragments 为空
|
|
121
|
+
*/
|
|
122
|
+
function assessConfidence(fragments, exactHits) {
|
|
123
|
+
if (fragments.length === 0) {
|
|
124
|
+
return { confidence: 'none', status: 'empty' };
|
|
125
|
+
}
|
|
126
|
+
const top = fragments[0].score;
|
|
127
|
+
const second = fragments[1]?.score ?? 0;
|
|
128
|
+
if (exactHits.length > 0 || top >= 50) {
|
|
129
|
+
return { confidence: 'high', status: 'success' };
|
|
130
|
+
}
|
|
131
|
+
const ratio = second > 0 ? top / second : Infinity;
|
|
132
|
+
if (top >= 10 && ratio >= 1.3) {
|
|
133
|
+
return { confidence: 'medium', status: 'success' };
|
|
134
|
+
}
|
|
135
|
+
if (top >= 5 && ratio >= 1.15) {
|
|
136
|
+
return { confidence: 'medium', status: 'success' };
|
|
137
|
+
}
|
|
138
|
+
return { confidence: 'low', status: 'low_confidence' };
|
|
139
|
+
}
|
|
140
|
+
function buildAgentMessage(status, fragments, confidence, references) {
|
|
141
|
+
const citeTail = references?.length
|
|
142
|
+
? 'When answering, MUST append a **References** section listing only **https** URLs from `meta.references` (or each fragment\'s `doc_urls`). Do not invent links. Do **not** list local repo paths such as `knowledge/...` or `integration/...` — users cannot open those.'
|
|
143
|
+
: 'If fragments include `doc_urls`, append a **References** section with those **https** URLs only. Do **not** cite `fragment.source` local paths. If no online URLs are available, omit the References section rather than listing local file paths.';
|
|
144
|
+
const tail = `${citeTail} After synthesizing the answer, MUST call \`record_answer\` (same prompt + queryID from this response) BEFORE replying to the user; append the returned follow-up text. On user feedback MUST call \`record_feedback\`.`;
|
|
145
|
+
if (status === 'needs_framework') {
|
|
146
|
+
return '[Hard rule] This question depends on a specific platform but no framework was provided; cross-platform search is low-signal and disallowed. MUST call `present_framework_choice` (with product), wait for the user to pick android/ios/flutter/react/vue/uni-app, then call this tool again with **product + framework**. Do not search with an empty framework.';
|
|
147
|
+
}
|
|
148
|
+
const { urlMapping, localDoc, urlMappingKinds } = partitionFragments(fragments);
|
|
149
|
+
const hasUrlMapping = urlMapping.length > 0;
|
|
150
|
+
const hasLocalDoc = localDoc.length > 0;
|
|
151
|
+
const urlKindLabel = urlMappingKinds.join(' / ') || 'urls';
|
|
152
|
+
if (status === 'success' && fragments.length > 0) {
|
|
153
|
+
const confidenceHint = confidence === 'high' ? '(confidence=high)'
|
|
154
|
+
: confidence === 'medium' ? '(confidence=medium; top vs runner-up separation is moderate—confirm with the user if unsure)'
|
|
155
|
+
: '';
|
|
156
|
+
if (hasUrlMapping && !hasLocalDoc) {
|
|
157
|
+
return `Knowledge base hit **L1 URL map**${confidenceHint} (${urlKindLabel}, ${urlMapping.length} fragment(s)). These fragments are **documentation entry URLs only** (cloud.tencent.com / web.sdk.qcloud.com, etc.), not full REST API / error-code / webhook text. MUST: ① match the user's question to the **target URL** in fragments; ② **fetch** that official doc before answering; ③ do not restate the map table or invent API/error details.${tail}`;
|
|
158
|
+
}
|
|
159
|
+
if (hasUrlMapping && hasLocalDoc) {
|
|
160
|
+
return `Knowledge base returned ${fragments.length} fragment(s)${confidenceHint}: ${localDoc.length} local doc + ${urlMapping.length} URL map (${urlKindLabel}). Answer directly from **local doc** fragments (preset/integration, etc.); for **URL map** fragments MUST extract the target URL and **fetch** the official doc—do not restate the map table.${tail}`;
|
|
161
|
+
}
|
|
162
|
+
return `Knowledge base returned ${fragments.length} valid fragment(s)${confidenceHint}. Synthesize the answer **only from fragments**; do **not** run web_search or fetch docs separately.${tail}`;
|
|
163
|
+
}
|
|
164
|
+
if (status === 'low_confidence') {
|
|
165
|
+
if (hasUrlMapping) {
|
|
166
|
+
return `Low confidence (confidence=low: top score weak or too close to runner-up) but URL map hit (${urlKindLabel}). Extract target URLs from fragments and **fetch** official docs; tell the user if the map does not cover their question.${tail}`;
|
|
167
|
+
}
|
|
168
|
+
return `Low confidence (confidence=low: top score weak or too close to runner-up; may not match the question). Answer from available fragments and **state uncertainty**; ask for a more specific query (component / API / error code) and retry. Do **not** default to web_search.${tail}`;
|
|
169
|
+
}
|
|
170
|
+
return `No valid fragments matched. Tell the user and verify product/framework; if the question needs a client platform, call \`present_framework_choice\` first.${tail}`;
|
|
171
|
+
}
|
|
172
|
+
export function searchKnowledge(params) {
|
|
173
|
+
const norm = normalizeParams(params);
|
|
174
|
+
if (requiresFramework(norm)) {
|
|
175
|
+
const manifest = loadManifest();
|
|
176
|
+
return {
|
|
177
|
+
status: 'needs_framework',
|
|
178
|
+
confidence: 'none',
|
|
179
|
+
message: buildAgentMessage('needs_framework', [], 'none', undefined),
|
|
180
|
+
query: params,
|
|
181
|
+
meta: {
|
|
182
|
+
pool_size: manifest.chunks.length,
|
|
183
|
+
filtered_size: 0,
|
|
184
|
+
exact_hits: [],
|
|
185
|
+
},
|
|
186
|
+
fragments: [],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const manifest = loadManifest();
|
|
190
|
+
const allChunks = manifest.chunks;
|
|
191
|
+
let pool = filterPool(allChunks, norm);
|
|
192
|
+
// 自愈:types 过滤导致 0 命中时,丢掉 types 再过滤一次,避免误传类型标签直接返回 empty
|
|
193
|
+
if (pool.length === 0 && norm.types?.length) {
|
|
194
|
+
pool = filterPool(allChunks, { ...norm, types: undefined });
|
|
195
|
+
}
|
|
196
|
+
const { boosts, exactHits } = runExactLookup(norm.prompt, pool, norm);
|
|
197
|
+
// P0-4:用 product 级缓存的 BM25 索引对子集打分(首次构建,后续命中缓存)
|
|
198
|
+
// 索引基于该 product 全量 chunks(含 integration corpus);
|
|
199
|
+
// 子集 ranking 只对 filteredPool.map(id) 打分,IDF 用更稳的产品级全量统计。
|
|
200
|
+
// 支持多 product 同时检索(products 数组),跨域问题如 Chat + Push 能同时命中各方知识。
|
|
201
|
+
const productIndex = getProductsBM25Index(allChunks, norm.product);
|
|
202
|
+
const poolWithContent = attachPoolContent(pool);
|
|
203
|
+
const chunksById = new Map(poolWithContent.map((chunk) => [chunk.id, chunk]));
|
|
204
|
+
const ranked = rankSubsetWithIndex(norm.prompt, pool.map((chunk) => chunk.id), productIndex, boosts);
|
|
205
|
+
const fragments = postProcess(ranked, chunksById, norm.limit);
|
|
206
|
+
const urlMappingSources = [...new Set(fragments.map((f) => f.source).filter((source) => isUrlMappingSource(source)))];
|
|
207
|
+
const references = buildReferences(fragments);
|
|
208
|
+
// P0-3:相对阈值评估置信度(替代原硬编码 0.5 死阈值)
|
|
209
|
+
const { confidence, status } = assessConfidence(fragments, exactHits);
|
|
210
|
+
const topScore = fragments[0]?.score;
|
|
211
|
+
const secondScore = fragments[1]?.score;
|
|
212
|
+
return {
|
|
213
|
+
status,
|
|
214
|
+
confidence,
|
|
215
|
+
message: buildAgentMessage(status, fragments, confidence, references),
|
|
216
|
+
query: params,
|
|
217
|
+
meta: {
|
|
218
|
+
pool_size: allChunks.length,
|
|
219
|
+
filtered_size: pool.length,
|
|
220
|
+
exact_hits: exactHits,
|
|
221
|
+
...(urlMappingSources.length ? { url_mapping_sources: urlMappingSources } : {}),
|
|
222
|
+
...(references.length ? { references } : {}),
|
|
223
|
+
...(topScore !== undefined ? { top_score: Number(topScore.toFixed(2)) } : {}),
|
|
224
|
+
...(secondScore !== undefined ? { second_score: Number(secondScore.toFixed(2)) } : {}),
|
|
225
|
+
},
|
|
226
|
+
fragments,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
export { normalizeParams, filterPool };
|
package/mcp-server-prompt.png
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
chat:
|
|
2
|
+
theme.md: ["theme", "theme customization", "dark mode", "TUITheme", "custom UI"]
|
|
3
|
+
live:
|
|
4
|
+
live-co-guest-interaction.md: ["co-guest", "audience co-guest", "co_guest", "CoGuest"]
|
|
5
|
+
live-host-interaction.md: ["PK", "host co-host", "co_host"]
|
|
6
|
+
live-base-beauty.md: ["beauty", "base_beauty"]
|
|
7
|
+
voice-co-guest-interaction.md: ["voice room go on mic", "go on mic", "voice co guest", "co guest"]
|
|
8
|
+
room:
|
|
9
|
+
screen-share.md: ["screen sharing", "screen share", "startScreenShare"]
|
|
10
|
+
virtual-background.md: ["virtual background"]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
get_web_chat_uikit_integration:
|
|
2
|
+
full-featured:
|
|
3
|
+
root: integration
|
|
4
|
+
path: chat/preset/{framework}/integration.md
|
|
5
|
+
chat-only:
|
|
6
|
+
root: integration
|
|
7
|
+
path: chat/preset/{framework}/integration.md
|
|
8
|
+
get_native_chat_uikit_integration:
|
|
9
|
+
full-featured:
|
|
10
|
+
root: integration
|
|
11
|
+
path: chat/preset/{framework}/integration.md
|
|
12
|
+
chat-only:
|
|
13
|
+
root: integration
|
|
14
|
+
path: chat/preset/{framework}/integration.md
|
|
15
|
+
get_web_call_uikit_integration:
|
|
16
|
+
integration:
|
|
17
|
+
root: integration
|
|
18
|
+
path: callkit/preset/{framework}/integration.md
|
|
19
|
+
get_native_call_uikit_integration:
|
|
20
|
+
integration:
|
|
21
|
+
root: integration
|
|
22
|
+
path: callkit/preset/{framework}/integration.md
|
|
23
|
+
get_native_callkit_core_integration:
|
|
24
|
+
make_call:
|
|
25
|
+
root: knowledge
|
|
26
|
+
path: callkit/core-sdk/{framework}/make-call.md
|
|
27
|
+
answer_call:
|
|
28
|
+
root: knowledge
|
|
29
|
+
path: callkit/core-sdk/{framework}/answer-call.md
|
|
30
|
+
offline_push:
|
|
31
|
+
root: knowledge
|
|
32
|
+
path: callkit/core-sdk/{framework}/offline-push.md
|
|
33
|
+
get_web_live_uikit_integration:
|
|
34
|
+
liveList:
|
|
35
|
+
root: integration
|
|
36
|
+
path: livekit/preset/live/vue/live-list-integration.md
|
|
37
|
+
livePlayer-desk:
|
|
38
|
+
root: integration
|
|
39
|
+
path: livekit/preset/live/vue/live-player-desk-integration.md
|
|
40
|
+
livePlayer-h5:
|
|
41
|
+
root: integration
|
|
42
|
+
path: livekit/preset/live/vue/live-player-h5-integration.md
|
|
43
|
+
livePusher:
|
|
44
|
+
root: integration
|
|
45
|
+
path: livekit/preset/live/vue/live-pusher-integration.md
|
|
46
|
+
CoGuestPanel:
|
|
47
|
+
root: integration
|
|
48
|
+
path: livekit/preset/live/vue/components/co-guest-panel.md
|
|
49
|
+
get_native_livekit_core_integration:
|
|
50
|
+
host_streaming:
|
|
51
|
+
root: knowledge
|
|
52
|
+
path: livekit/core-sdk/{scenario}/{framework}/*-integration.md
|
|
53
|
+
audience_streaming:
|
|
54
|
+
root: knowledge
|
|
55
|
+
path: livekit/core-sdk/{scenario}/{framework}/*-integration.md
|
|
56
|
+
live_list:
|
|
57
|
+
root: knowledge
|
|
58
|
+
path: livekit/core-sdk/{scenario}/{framework}/*-list.md
|
|
59
|
+
get_web_room_uikit_integration:
|
|
60
|
+
integration:
|
|
61
|
+
root: integration
|
|
62
|
+
path: roomkit/preset/vue/integration.md
|
|
63
|
+
get_web_room_core_integration:
|
|
64
|
+
room-state:
|
|
65
|
+
root: knowledge
|
|
66
|
+
path: roomkit/core-sdk/vue/room-state.md
|
|
67
|
+
device-detection:
|
|
68
|
+
root: knowledge
|
|
69
|
+
path: roomkit/core-sdk/vue/device-detection.md
|
|
70
|
+
device-state:
|
|
71
|
+
root: knowledge
|
|
72
|
+
path: roomkit/core-sdk/vue/device-state.md
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
chat:
|
|
2
|
+
knowledge_root: chat
|
|
3
|
+
integration_root: chat
|
|
4
|
+
call:
|
|
5
|
+
knowledge_root: callkit
|
|
6
|
+
integration_root: callkit
|
|
7
|
+
live:
|
|
8
|
+
knowledge_root: livekit
|
|
9
|
+
integration_root: livekit
|
|
10
|
+
room:
|
|
11
|
+
knowledge_root: roomkit
|
|
12
|
+
integration_root: roomkit
|
|
13
|
+
push:
|
|
14
|
+
knowledge_root: push
|
|
15
|
+
integration_root: push
|
|
16
|
+
rtcengine:
|
|
17
|
+
knowledge_root: rtcengine
|
|
18
|
+
native_trtc_sdk:
|
|
19
|
+
knowledge_root: trtc
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
android:
|
|
2
|
+
core_api: TRTCCloud
|
|
3
|
+
type_def: TRTCCloudDef
|
|
4
|
+
callback: TRTCCloudListener
|
|
5
|
+
statistics: TRTCStatistics
|
|
6
|
+
audio_effect: TXAudioEffectManager
|
|
7
|
+
beauty: TXBeautyManager
|
|
8
|
+
device: TXDeviceManager
|
|
9
|
+
error_code: TXLiteAVCode
|
|
10
|
+
ios:
|
|
11
|
+
core_api: TRTCCloud
|
|
12
|
+
type_def: TXLiveSDKTypeDef
|
|
13
|
+
callback: TRTCCloudDelegate
|
|
14
|
+
statistics: TRTCStatistics
|
|
15
|
+
audio_effect: TXAudioEffectManager
|
|
16
|
+
beauty: TXBeautyManager
|
|
17
|
+
device: TXDeviceManager
|
|
18
|
+
error_code: TXLiteAVCode
|
|
19
|
+
c++:
|
|
20
|
+
core_api: ITRTCCloud
|
|
21
|
+
type_def: TRTCTypeDef
|
|
22
|
+
callback: TRTCCloudCallback
|
|
23
|
+
statistics: ITRTCStatistics
|
|
24
|
+
audio_effect: ITXAudioEffectManager
|
|
25
|
+
beauty: null
|
|
26
|
+
device: ITXDeviceManager
|
|
27
|
+
error_code: TXLiteAVCode
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
integration:
|
|
2
|
+
globs:
|
|
3
|
+
- integration/**/*
|
|
4
|
+
component:
|
|
5
|
+
globs:
|
|
6
|
+
- knowledge/**/components/*.md
|
|
7
|
+
- knowledge/chat/preset/vue/features/*.md
|
|
8
|
+
- knowledge/chat/preset/react/features/*.md
|
|
9
|
+
- knowledge/chat/preset/react/components/*.md
|
|
10
|
+
- knowledge/chat/preset/android/features/*.md
|
|
11
|
+
feature:
|
|
12
|
+
globs:
|
|
13
|
+
- knowledge/**/features/*.md
|
|
14
|
+
- knowledge/livekit/core-sdk/**/*.md
|
|
15
|
+
api:
|
|
16
|
+
globs:
|
|
17
|
+
- knowledge/**/api.md
|
|
18
|
+
- knowledge/**/client-api.md
|
|
19
|
+
- knowledge/**/api-reference/*.md
|
|
20
|
+
plugin:
|
|
21
|
+
globs:
|
|
22
|
+
- knowledge/rtcengine/web/plugin/*.md
|
|
23
|
+
sdk:
|
|
24
|
+
globs:
|
|
25
|
+
- knowledge/chat/urls/sdk/*.md
|
|
26
|
+
faq:
|
|
27
|
+
globs:
|
|
28
|
+
- knowledge/**/faq.md
|
|
29
|
+
- knowledge/**/faq/**/*.md
|
|
30
|
+
error_code:
|
|
31
|
+
globs:
|
|
32
|
+
- knowledge/chat/urls/error-code.md
|
|
33
|
+
- knowledge/**/error_code*.md
|
|
34
|
+
- knowledge/**/TXLiteAVCode.md
|
|
35
|
+
product:
|
|
36
|
+
globs:
|
|
37
|
+
- knowledge/chat/urls/product.md
|
|
38
|
+
server_api:
|
|
39
|
+
globs:
|
|
40
|
+
- knowledge/chat/urls/restapi.md
|
|
41
|
+
webhook:
|
|
42
|
+
globs:
|
|
43
|
+
- knowledge/chat/urls/webhook.md
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"chat-setting":["chat-setting","chatsetting","chat_setting"],"contact-list":["contact-list","contactlist","contact_list"],"conversation-actions":["conversation-actions","conversationactions","conversation_actions"],"conversation-list":["conversation-list","conversationlist","conversation_list"],"conversation-preview":["conversation-preview","conversationpreview","conversation_preview"],"conversation-search":["conversation-search","conversationsearch","conversation_search"],"message-input":["message-input","messageinput","message_input"],"message-list":["message-list","messagelist","message_list"],"search":["search","search","search"],"theme":["theme","theme","theme"],"chat-header":["chat-header","chatheader","chat_header"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"knowledge/rtcengine/web/how_to_run_web_sdk_demo.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-10-basic-get-started-with-demo.md","knowledge/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-20-advanced-customized-capture-rendering.md","knowledge/rtcengine/web/plugin/21-advanced-auto-play-policy.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-21-advanced-auto-play-policy.md","knowledge/rtcengine/web/plugin/22-advanced-audio-mixer.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-22-advanced-audio-mixer.md","knowledge/rtcengine/web/plugin/23-advanced-support-detection.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-23-advanced-support-detection.md","knowledge/rtcengine/web/plugin/24-advanced-network-quality.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-24-advanced-network-quality.md","knowledge/rtcengine/web/plugin/25-advanced-device-change.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-25-advanced-device-change.md","knowledge/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-26-advanced-publish-cdn-stream.md","knowledge/rtcengine/web/plugin/27-advanced-small-stream.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-27-advanced-small-stream.md","knowledge/rtcengine/web/plugin/28-advanced-beauty.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-28-advanced-beauty.md","knowledge/rtcengine/web/plugin/29-advanced-water-mark.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-29-advanced-water-mark.md","knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-30-advanced-cross-room-link.md","knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-31-advanced-plugins-overview.md","knowledge/rtcengine/web/plugin/34-advanced-proxy.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-34-advanced-proxy.md","knowledge/rtcengine/web/plugin/35-advanced-ai-denoiser.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-35-advanced-ai-denoiser.md","knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-36-advanced-virtual-background.md","knowledge/rtcengine/web/plugin/37-advanced-voice-changer.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-37-advanced-voice-changer.md","knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-39-advanced-video-decoder.md","knowledge/rtcengine/web/plugin/40-advanced-video-mixer.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-40-advanced-video-mixer.md","knowledge/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-41-advanced-small-stream-auto-switcher.md","knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-42-advanced-realtime-transcriber.md","knowledge/rtcengine/web/plugin/43-advanced-face-detection.md":"https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-43-advanced-face-detection.md"}
|