pcm-agents 0.6.11 → 0.6.13
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/dist/cjs/error-event-J_ZWIqWF.js +33 -0
- package/dist/cjs/error-event-J_ZWIqWF.js.map +1 -0
- package/dist/cjs/{index-CvEfNyEj.js → index-CRlt8Nv6.js} +53 -3
- package/dist/cjs/index-CRlt8Nv6.js.map +1 -0
- package/dist/cjs/index-WNdOTXnX.js +11068 -0
- package/dist/cjs/index-WNdOTXnX.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +3 -5
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/message.service-DGUsA-FY.js +135 -0
- package/dist/cjs/message.service-DGUsA-FY.js.map +1 -0
- package/dist/cjs/{pcm-1zhanshi-mnms-modal_17.cjs.entry.js → pcm-1zhanshi-mnms-modal_21.cjs.entry.js} +3276 -216
- package/dist/cjs/pcm-1zhanshi-mnms-modal_21.cjs.entry.js.map +1 -0
- package/dist/cjs/pcm-agents.cjs.js +4 -6
- package/dist/cjs/pcm-agents.cjs.js.map +1 -1
- package/dist/cjs/pcm-message.cjs.entry.js +3 -3
- package/dist/cjs/pcm-message.cjs.entry.js.map +1 -1
- package/dist/cjs/pcm-message.entry.cjs.js.map +1 -1
- package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js +8 -8
- package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/pcm-mnms-video-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js +29 -86
- package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/pcm-mnms-zp-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/{sentry-reporter-BWFtw_aT.js → sentry-reporter-tpI4WdkE.js} +12 -40
- package/dist/cjs/sentry-reporter-tpI4WdkE.js.map +1 -0
- package/dist/collection/collection-manifest.json +5 -1
- package/dist/collection/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.js.map +1 -1
- package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.css +986 -986
- package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js +7 -9
- package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js.map +1 -1
- package/dist/collection/components/pcm-button/pcm-button.css +199 -199
- package/dist/collection/components/pcm-button/pcm-button.js +6 -6
- package/dist/collection/components/pcm-button/pcm-button.js.map +1 -1
- package/dist/collection/components/pcm-card/pcm-card.css +259 -259
- package/dist/collection/components/pcm-card/pcm-card.js +1 -1
- package/dist/collection/components/pcm-card/pcm-card.js.map +1 -1
- package/dist/collection/components/pcm-chat-message/pcm-chat-message.css +554 -554
- package/dist/collection/components/pcm-chat-message/pcm-chat-message.js +3 -3
- package/dist/collection/components/pcm-chat-message/pcm-chat-message.js.map +1 -1
- package/dist/collection/components/pcm-drawer/pcm-drawer.css +102 -102
- package/dist/collection/components/pcm-drawer/pcm-drawer.js +1 -1
- package/dist/collection/components/pcm-drawer/pcm-drawer.js.map +1 -1
- package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.css +854 -854
- package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js +5 -7
- package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js.map +1 -1
- package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.css +95 -95
- package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js +1 -1
- package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js.map +1 -1
- package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js +2 -2
- package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js.map +1 -1
- package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.css +312 -312
- package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js +1 -1
- package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js.map +1 -1
- package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js +2 -2
- package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js.map +1 -1
- package/dist/collection/components/pcm-message/pcm-message.css +64 -64
- package/dist/collection/components/pcm-message/pcm-message.js +2 -2
- package/dist/collection/components/pcm-message/pcm-message.js.map +1 -1
- package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.css +1 -1
- package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js +2 -2
- package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js.map +1 -1
- package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js +67 -84
- package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js.map +1 -1
- package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js +2 -2
- package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js.map +1 -1
- package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js +67 -84
- package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js.map +1 -1
- package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.css +140 -0
- package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js +307 -0
- package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js.map +1 -0
- package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js +25 -0
- package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js.map +1 -0
- package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.css +127 -0
- package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js +350 -0
- package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js.map +1 -0
- package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js +25 -0
- package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js.map +1 -0
- package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js +2 -2
- package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js.map +1 -1
- package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.css +1 -1
- package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js +2 -2
- package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js.map +1 -1
- package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.css +0 -0
- package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js +106 -0
- package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js.map +1 -0
- package/dist/collection/components/pcm-upload/pcm-upload.css +0 -0
- package/dist/collection/components/pcm-upload/pcm-upload.js +408 -0
- package/dist/collection/components/pcm-upload/pcm-upload.js.map +1 -0
- package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.css +969 -969
- package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js +3 -5
- package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js.map +1 -1
- package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.css +68 -68
- package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js +4 -4
- package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js.map +1 -1
- package/dist/collection/global/global.css +401 -398
- package/dist/collection/global/markdown.css +1233 -1233
- package/dist/collection/global/message.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/interfaces/chat.js.map +1 -1
- package/dist/collection/interfaces/events.js.map +1 -1
- package/dist/collection/services/message.service.js.map +1 -1
- package/dist/collection/utils/env.js +3 -0
- package/dist/collection/utils/env.js.map +1 -1
- package/dist/collection/utils/error-event.js.map +1 -1
- package/dist/collection/utils/init.js.map +1 -1
- package/dist/collection/utils/sentry-reporter.js.map +1 -1
- package/dist/collection/utils/utils.js +48 -24
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/components/index.js +3 -5482
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-AYWZDCn8.js → p-B0WOTw9J.js} +51 -4
- package/dist/components/p-B0WOTw9J.js.map +1 -0
- package/dist/components/{p-DUQ46MUh.js → p-BGXbWUJg.js} +3 -3
- package/dist/components/{p-DUQ46MUh.js.map → p-BGXbWUJg.js.map} +1 -1
- package/dist/{esm/sentry-reporter-BFBS363a.js → components/p-BW3r6Lrf.js} +5 -32
- package/dist/components/p-BW3r6Lrf.js.map +1 -0
- package/dist/{esm/app-globals-Chti62re.js → components/p-BdiUKin5.js} +9619 -4296
- package/dist/components/p-BdiUKin5.js.map +1 -0
- package/dist/components/{p-FjtoYPVY.js → p-BywzltXy.js} +10 -9
- package/dist/components/p-BywzltXy.js.map +1 -0
- package/dist/components/p-C2OsjtRx.js +208 -0
- package/dist/components/p-C2OsjtRx.js.map +1 -0
- package/dist/components/{p-D2Z8casl.js → p-CuIvbaWY.js} +5 -5
- package/dist/components/p-CuIvbaWY.js.map +1 -0
- package/dist/components/p-D0ZMoyH8.js +251 -0
- package/dist/components/p-D0ZMoyH8.js.map +1 -0
- package/dist/components/{p-CjbFHLT7.js → p-De3VHEUn.js} +7 -71
- package/dist/components/p-De3VHEUn.js.map +1 -0
- package/dist/components/p-Dv8qvK0w.js +2646 -0
- package/dist/components/p-Dv8qvK0w.js.map +1 -0
- package/dist/components/p-RD3mwuBX.js +226 -0
- package/dist/components/p-RD3mwuBX.js.map +1 -0
- package/dist/components/p-njngFX_n.js +80 -0
- package/dist/components/p-njngFX_n.js.map +1 -0
- package/dist/components/pcm-1zhanshi-mnms-modal.js +7 -7
- package/dist/components/pcm-1zhanshi-mnms-modal.js.map +1 -1
- package/dist/components/pcm-app-chat-modal.js +1 -1
- package/dist/components/pcm-button.js +2 -2
- package/dist/components/pcm-button.js.map +1 -1
- package/dist/components/pcm-card.js +3 -3
- package/dist/components/pcm-card.js.map +1 -1
- package/dist/components/pcm-chat-message.js +1 -1
- package/dist/components/pcm-drawer.js +1 -1
- package/dist/components/pcm-hr-chat-modal.js +5 -4
- package/dist/components/pcm-hr-chat-modal.js.map +1 -1
- package/dist/components/pcm-htws-modal.js +8 -7
- package/dist/components/pcm-htws-modal.js.map +1 -1
- package/dist/components/pcm-hyzj-modal.js +8 -7
- package/dist/components/pcm-hyzj-modal.js.map +1 -1
- package/dist/components/pcm-jd-modal.js +8 -7
- package/dist/components/pcm-jd-modal.js.map +1 -1
- package/dist/components/pcm-jlpp-modal.js +8 -7
- package/dist/components/pcm-jlpp-modal.js.map +1 -1
- package/dist/components/pcm-message.js +3 -3
- package/dist/components/pcm-message.js.map +1 -1
- package/dist/components/pcm-mnct-modal.js +8 -7
- package/dist/components/pcm-mnct-modal.js.map +1 -1
- package/dist/components/pcm-mnms-modal.js +60 -90
- package/dist/components/pcm-mnms-modal.js.map +1 -1
- package/dist/components/pcm-mnms-video-modal.js +8 -7
- package/dist/components/pcm-mnms-video-modal.js.map +1 -1
- package/dist/components/pcm-mnms-zp-modal.js +60 -90
- package/dist/components/pcm-mnms-zp-modal.js.map +1 -1
- package/dist/components/pcm-mobile-input-btn.d.ts +11 -0
- package/dist/components/pcm-mobile-input-btn.js +9 -0
- package/dist/components/pcm-mobile-input-btn.js.map +1 -0
- package/dist/components/pcm-mobile-upload-btn.d.ts +11 -0
- package/dist/components/pcm-mobile-upload-btn.js +9 -0
- package/dist/components/pcm-mobile-upload-btn.js.map +1 -0
- package/dist/components/pcm-msbg-modal.js +8 -7
- package/dist/components/pcm-msbg-modal.js.map +1 -1
- package/dist/components/pcm-qgqjl-modal.js +8 -7
- package/dist/components/pcm-qgqjl-modal.js.map +1 -1
- package/dist/components/pcm-time-count-down.d.ts +11 -0
- package/dist/components/pcm-time-count-down.js +9 -0
- package/dist/components/pcm-time-count-down.js.map +1 -0
- package/dist/components/pcm-upload.d.ts +11 -0
- package/dist/components/pcm-upload.js +9 -0
- package/dist/components/pcm-upload.js.map +1 -0
- package/dist/components/pcm-zsk-chat-modal.js +4 -4
- package/dist/components/pcm-zsk-chat-modal.js.map +1 -1
- package/dist/components/pcm-zygh-modal.js +8 -7
- package/dist/components/pcm-zygh-modal.js.map +1 -1
- package/dist/esm/error-event-C0FYX2-Z.js +31 -0
- package/dist/esm/error-event-C0FYX2-Z.js.map +1 -0
- package/dist/esm/{index-GyOE8SlD.js → index-BnNqOUZf.js} +51 -4
- package/dist/esm/index-BnNqOUZf.js.map +1 -0
- package/dist/esm/index-BuVfV0zo.js +11035 -0
- package/dist/esm/index-BuVfV0zo.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +3 -5
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/message.service-DXVhHj6-.js +133 -0
- package/dist/esm/message.service-DXVhHj6-.js.map +1 -0
- package/dist/esm/{pcm-1zhanshi-mnms-modal_17.entry.js → pcm-1zhanshi-mnms-modal_21.entry.js} +3225 -169
- package/dist/esm/pcm-1zhanshi-mnms-modal_21.entry.js.map +1 -0
- package/dist/esm/pcm-agents.js +4 -6
- package/dist/esm/pcm-agents.js.map +1 -1
- package/dist/esm/pcm-message.entry.js +3 -3
- package/dist/esm/pcm-message.entry.js.map +1 -1
- package/dist/esm/pcm-mnms-video-modal.entry.js +5 -5
- package/dist/esm/pcm-mnms-video-modal.entry.js.map +1 -1
- package/dist/esm/pcm-mnms-zp-modal.entry.js +28 -85
- package/dist/esm/pcm-mnms-zp-modal.entry.js.map +1 -1
- package/dist/esm/sentry-reporter-CYzy4_8O.js +70 -0
- package/dist/esm/sentry-reporter-CYzy4_8O.js.map +1 -0
- package/dist/pcm-agents/index.esm.js +1 -1
- package/dist/pcm-agents/loader.esm.js.map +1 -1
- package/dist/pcm-agents/p-18a06873.entry.js +2 -0
- package/dist/pcm-agents/p-18a06873.entry.js.map +1 -0
- package/dist/pcm-agents/p-47e2e1d0.entry.js +2 -0
- package/dist/pcm-agents/p-47e2e1d0.entry.js.map +1 -0
- package/dist/pcm-agents/{p-3608c0c6.entry.js → p-7a582f00.entry.js} +2 -2
- package/dist/pcm-agents/p-7a582f00.entry.js.map +1 -0
- package/dist/pcm-agents/p-BhFnI70g.js +2 -0
- package/dist/pcm-agents/p-BhFnI70g.js.map +1 -0
- package/dist/pcm-agents/p-BuVfV0zo.js +3 -0
- package/dist/pcm-agents/p-BuVfV0zo.js.map +1 -0
- package/dist/pcm-agents/p-C0FYX2-Z.js +2 -0
- package/dist/pcm-agents/p-C0FYX2-Z.js.map +1 -0
- package/dist/pcm-agents/p-DXVhHj6-.js +2 -0
- package/dist/pcm-agents/p-DXVhHj6-.js.map +1 -0
- package/dist/pcm-agents/p-DkeaAFic.js +2 -0
- package/dist/pcm-agents/p-DkeaAFic.js.map +1 -0
- package/dist/pcm-agents/p-f5f96853.entry.js +245 -0
- package/dist/pcm-agents/p-f5f96853.entry.js.map +1 -0
- package/dist/pcm-agents/pcm-agents.esm.js +1 -1
- package/dist/pcm-agents/pcm-agents.esm.js.map +1 -1
- package/dist/pcm-agents/pcm-message.entry.esm.js.map +1 -1
- package/dist/pcm-agents/pcm-mnms-video-modal.entry.esm.js.map +1 -1
- package/dist/pcm-agents/pcm-mnms-zp-modal.entry.esm.js.map +1 -1
- package/dist/store/auth.store.js.map +1 -1
- package/dist/store/config.store.js.map +1 -1
- package/dist/types/components/pcm-mnms-modal/pcm-mnms-modal.d.ts +9 -4
- package/dist/types/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.d.ts +9 -4
- package/dist/types/components/pcm-mobile-input-btn/pcm-mobile-input-btn.d.ts +36 -0
- package/dist/types/components/pcm-mobile-input-btn/uploadNumberSDK.d.ts +9 -0
- package/dist/types/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.d.ts +44 -0
- package/dist/types/components/pcm-mobile-upload-btn/uploadNumberSDK.d.ts +9 -0
- package/dist/types/components/pcm-time-count-down/pcm-time-count-down.d.ts +15 -0
- package/dist/types/components/pcm-upload/pcm-upload.d.ts +54 -0
- package/dist/types/components/pcm-upload/type.d.ts +4 -0
- package/dist/types/components.d.ts +798 -30
- package/dist/types/stencil-public-runtime.d.ts +1 -1
- package/dist/types/utils/env.d.ts +2 -0
- package/dist/types/utils/utils.d.ts +30 -12
- package/package.json +70 -69
- package/dist/cjs/app-globals-BIO4q6tX.js +0 -5487
- package/dist/cjs/app-globals-BIO4q6tX.js.map +0 -1
- package/dist/cjs/exports-Dc-pQh4A.js +0 -4087
- package/dist/cjs/exports-Dc-pQh4A.js.map +0 -1
- package/dist/cjs/index-C_qhED9Z.js +0 -1538
- package/dist/cjs/index-C_qhED9Z.js.map +0 -1
- package/dist/cjs/index-CvEfNyEj.js.map +0 -1
- package/dist/cjs/pcm-1zhanshi-mnms-modal_17.cjs.entry.js.map +0 -1
- package/dist/cjs/sentry-reporter-BWFtw_aT.js.map +0 -1
- package/dist/components/p-75J0r72D.js +0 -4017
- package/dist/components/p-75J0r72D.js.map +0 -1
- package/dist/components/p-AYWZDCn8.js.map +0 -1
- package/dist/components/p-CR7WLzmM.js +0 -1303
- package/dist/components/p-CR7WLzmM.js.map +0 -1
- package/dist/components/p-CjbFHLT7.js.map +0 -1
- package/dist/components/p-D2Z8casl.js.map +0 -1
- package/dist/components/p-FjtoYPVY.js.map +0 -1
- package/dist/esm/app-globals-Chti62re.js.map +0 -1
- package/dist/esm/exports-Bs-zO1WZ.js +0 -4017
- package/dist/esm/exports-Bs-zO1WZ.js.map +0 -1
- package/dist/esm/index-Bq0K-WqZ.js +0 -1528
- package/dist/esm/index-Bq0K-WqZ.js.map +0 -1
- package/dist/esm/index-GyOE8SlD.js.map +0 -1
- package/dist/esm/pcm-1zhanshi-mnms-modal_17.entry.js.map +0 -1
- package/dist/esm/sentry-reporter-BFBS363a.js.map +0 -1
- package/dist/pcm-agents/p-2Gpw8rvH.js +0 -2
- package/dist/pcm-agents/p-2Gpw8rvH.js.map +0 -1
- package/dist/pcm-agents/p-3608c0c6.entry.js.map +0 -1
- package/dist/pcm-agents/p-60d7a0b0.entry.js +0 -2
- package/dist/pcm-agents/p-60d7a0b0.entry.js.map +0 -1
- package/dist/pcm-agents/p-9e6efc2d.entry.js +0 -2
- package/dist/pcm-agents/p-9e6efc2d.entry.js.map +0 -1
- package/dist/pcm-agents/p-BUV0S8Cc.js +0 -2
- package/dist/pcm-agents/p-BUV0S8Cc.js.map +0 -1
- package/dist/pcm-agents/p-Bq0K-WqZ.js +0 -3
- package/dist/pcm-agents/p-Bq0K-WqZ.js.map +0 -1
- package/dist/pcm-agents/p-Bs-zO1WZ.js +0 -2
- package/dist/pcm-agents/p-Bs-zO1WZ.js.map +0 -1
- package/dist/pcm-agents/p-CeRTfvY9.js +0 -2
- package/dist/pcm-agents/p-CeRTfvY9.js.map +0 -1
- package/dist/pcm-agents/p-e6c87a78.entry.js +0 -2
- package/dist/pcm-agents/p-e6c87a78.entry.js.map +0 -1
- /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/auth.store.d.ts +0 -0
- /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/config.store.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/global/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,eAAe;AACf,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { Message } from '../services/message.service';\
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/global/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,eAAe;AACf,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { Message } from '../services/message.service';\n\n// 将消息服务挂载到全局对象上\ndeclare global {\n interface Window {\n PcmMessage: typeof Message;\n }\n}\n\n// 在浏览器环境中挂载到全局\nif (typeof window !== 'undefined') {\n window.PcmMessage = Message;\n}\n\nexport { Message }; "]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\nexport { format } from './utils/utils';\nexport type * from './components.d.ts';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/interfaces/chat.ts"],"names":[],"mappings":"","sourcesContent":["export interface ChatMessage {\
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/interfaces/chat.ts"],"names":[],"mappings":"","sourcesContent":["export interface ChatMessage {\n /**\n * 消息唯一标识\n */\n id: string;\n \n /**\n * 会话ID\n */\n conversation_id?: string;\n \n /**\n * 父消息ID\n */\n parent_message_id?: string;\n \n /**\n * 输入参数\n */\n inputs?: Record<string, any>;\n \n /**\n * 用户输入的消息内容\n */\n query: string;\n \n /**\n * AI助手的回复内容\n */\n answer: string;\n \n /**\n * 消息附件\n */\n message_files?: Array<any>;\n \n /**\n * 反馈\n */\n feedback?: Record<string, any>;\n \n /**\n * 检索资源\n */\n retriever_resources?: Array<any>;\n \n /**\n * 创建时间\n */\n created_at?: string;\n \n /**\n * 代理思考过程\n */\n agent_thoughts?: Array<any>;\n \n /**\n * 消息状态\n */\n status: \"normal\" | \"error\";\n \n /**\n * 错误信息\n */\n error: any;\n \n /**\n * 消息时间,格式为 \"HH:mm\"\n */\n time?: string;\n \n /**\n * 是否正在流式输出\n */\n isStreaming?: boolean;\n\n /**\n * 是否显示重试按钮\n */\n showRetryButton?: boolean;\n} \n\n/**\n * 历史会话项接口\n */\nexport interface ConversationItem {\n /**\n * 会话ID\n */\n id: string;\n \n /**\n * 会话标题\n */\n name: string;\n \n /**\n * 创建时间\n */\n created_at: number;\n \n /**\n * 更新时间\n */\n updated_at: number;\n \n /**\n * 会话状态\n */\n status?: string;\n \n /**\n * 消息数量\n */\n message_count?: number;\n \n /**\n * 格式化的时间显示\n */\n timeDisplay?: string;\n} "]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/interfaces/events.ts"],"names":[],"mappings":"","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/interfaces/events.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * 流式输出完成事件的数据类型\n */\nexport interface StreamCompleteEventData {\n conversation_id: string;\n event: string;\n message_id: string;\n id: string;\n}\n\n/**\n * 会话开始事件的数据类型\n */\nexport interface ConversationStartEventData {\n conversation_id: string;\n event: string;\n message_id: string;\n id: string;\n}\n\n/**\n * 聊天完成事件的数据类型\n */\nexport interface InterviewCompleteEventData {\n conversation_id: string;\n current_question_number?: number;\n total_questions?: number;\n ai_response?: string;\n}\n\n/**\n * 录制错误事件的数据类型\n */\nexport interface RecordingErrorEventData {\n type: string;\n message: string;\n details?: any;\n}\n\n/**\n * 录制状态变化事件的数据类型\n */\nexport interface RecordingStatusChangeEventData {\n status: 'started' | 'stopped' | 'paused' | 'resumed' | 'failed';\n details?: any;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.service.js","sourceRoot":"","sources":["../../../src/services/message.service.ts"],"names":[],"mappings":"AAcA,MAAM,cAAc;IACV,UAAU,GAA0B,IAAI,CAAC;IACzC,UAAU,GAAiC,IAAI,GAAG,EAAE,CAAC;IACrD,SAAS,GAAW,CAAC,CAAC,CAAC,WAAW;IAClC,UAAU,GAAW,CAAC,CAAC;IAEvB,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,UAAU;QAChB,OAAO,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAEO,aAAa,CAAC,OAAuB;QAC3C,uCAAuC;QACvC,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ;YACR,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YAED,UAAU;YACV,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACpD,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC;YAED,WAAW;YACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,OAAuB;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE/C,oBAAoB;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,SAAS;QACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7D,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEtC,SAAS;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAoB;YAChC,EAAE;YACF,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;SACxB,CAAC;QAEF,YAAY;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACtC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACf,CAAC;QAED,OAAO;QACP,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE1C,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,OAAgC,EAAE,QAAiB;QACzD,MAAM,OAAO,GAAmB,OAAO,OAAO,KAAK,QAAQ;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;YACxC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAgC,EAAE,QAAiB;QACvD,MAAM,OAAO,GAAmB,OAAO,OAAO,KAAK,QAAQ;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;YACtC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,OAAgC,EAAE,QAAiB;QACtD,MAAM,OAAO,GAAmB,OAAO,OAAO,KAAK,QAAQ;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;YACrC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAgC,EAAE,QAAiB;QACzD,MAAM,OAAO,GAAmB,OAAO,OAAO,KAAK,QAAQ;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;YACxC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,SAAS;IACT,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IACb,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW;IACX,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,aAAa;IACb,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED,SAAS;AACT,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC","sourcesContent":["export interface MessageOptions {\
|
|
1
|
+
{"version":3,"file":"message.service.js","sourceRoot":"","sources":["../../../src/services/message.service.ts"],"names":[],"mappings":"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","sourcesContent":["export interface MessageOptions {\n content: string;\n type?: 'success' | 'error' | 'info' | 'warning';\n duration?: number;\n key?: string; // 消息唯一标识\n}\n\ninterface MessageInstance {\n id: string;\n element: HTMLElement;\n timer?: number;\n options: MessageOptions;\n}\n\nclass MessageService {\n private _container: HTMLDivElement | null = null;\n private _instances: Map<string, MessageInstance> = new Map();\n private _maxCount: number = 2; // 最大同时显示数量\n private _idCounter: number = 0;\n\n private getContainer(): HTMLDivElement {\n if (!this._container) {\n this._container = document.createElement('div');\n this._container.className = 'pcm-message-container';\n document.body.appendChild(this._container);\n }\n return this._container;\n }\n\n private generateId(): string {\n return `pcm-message-${++this._idCounter}`;\n }\n\n private getMessageKey(options: MessageOptions): string {\n // 如果提供了key,使用key;否则使用content+type作为key\n return options.key || `${options.content}-${options.type}`;\n }\n\n private removeOldestMessage(): void {\n if (this._instances.size >= this._maxCount) {\n const firstKey = this._instances.keys().next().value;\n if (firstKey) {\n this.removeMessage(firstKey);\n }\n }\n }\n\n private removeMessage(key: string): void {\n const instance = this._instances.get(key);\n if (instance) {\n // 清除定时器\n if (instance.timer) {\n clearTimeout(instance.timer);\n }\n \n // 移除DOM元素\n if (instance.element && instance.element.parentNode) {\n instance.element.parentNode.removeChild(instance.element);\n }\n \n // 从实例映射中移除\n this._instances.delete(key);\n }\n }\n\n private create(options: MessageOptions): HTMLElement {\n const messageKey = this.getMessageKey(options);\n \n // 如果相同key的消息已存在,先移除\n if (this._instances.has(messageKey)) {\n this.removeMessage(messageKey);\n }\n \n // 检查数量限制\n this.removeOldestMessage();\n \n const messageElement = document.createElement('pcm-message');\n messageElement.setAttribute('content', options.content);\n \n if (options.type) {\n messageElement.setAttribute('type', options.type);\n }\n \n if (options.duration !== undefined) {\n messageElement.setAttribute('duration', options.duration.toString());\n }\n \n const container = this.getContainer();\n container.appendChild(messageElement);\n \n // 创建实例记录\n const id = this.generateId();\n const instance: MessageInstance = {\n id,\n element: messageElement,\n options: { ...options }\n };\n \n // 设置自动移除定时器\n const duration = options.duration ?? 3000;\n if (duration > 0) {\n instance.timer = window.setTimeout(() => {\n this.removeMessage(messageKey);\n }, duration);\n }\n \n // 保存实例\n this._instances.set(messageKey, instance);\n \n return messageElement;\n }\n\n success(content: string | MessageOptions, duration?: number): void {\n const options: MessageOptions = typeof content === 'string' \n ? { content, type: 'success', duration } \n : { ...content, type: 'success' };\n \n this.create(options);\n }\n\n error(content: string | MessageOptions, duration?: number): void {\n const options: MessageOptions = typeof content === 'string' \n ? { content, type: 'error', duration } \n : { ...content, type: 'error' };\n \n this.create(options);\n }\n\n info(content: string | MessageOptions, duration?: number): void {\n const options: MessageOptions = typeof content === 'string' \n ? { content, type: 'info', duration } \n : { ...content, type: 'info' };\n \n this.create(options);\n }\n\n warning(content: string | MessageOptions, duration?: number): void {\n const options: MessageOptions = typeof content === 'string' \n ? { content, type: 'warning', duration } \n : { ...content, type: 'warning' };\n \n this.create(options);\n }\n\n // 清除所有消息\n clear(): void {\n this._instances.forEach((_, key) => {\n this.removeMessage(key);\n });\n }\n\n // 清除指定key的消息\n remove(key: string): void {\n this.removeMessage(key);\n }\n\n // 设置最大显示数量\n setMaxCount(count: number): void {\n this._maxCount = Math.max(1, count);\n }\n\n // 销毁服务(清理资源)\n destroy(): void {\n this.clear();\n if (this._container && this._container.parentNode) {\n this._container.parentNode.removeChild(this._container);\n this._container = null;\n }\n }\n}\n\n// 创建单例实例\nexport const Message = new MessageService(); "]}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
// 默认 API 域名
|
|
2
2
|
const DEFAULT_API_DOMAIN = 'https://api.pincaimao.com/agents/platform';
|
|
3
|
+
const DEFAULT_PCM_DOMAIN = 'http://www.pincaimao.com';
|
|
3
4
|
// 从环境变量获取 API 域名,如果未设置则使用默认值
|
|
4
5
|
export const API_DOMAIN = process.env.API_DOMAIN || DEFAULT_API_DOMAIN;
|
|
6
|
+
export const PCM_DOMAIN = process.env.PCM_DOMAIN || DEFAULT_PCM_DOMAIN;
|
|
5
7
|
// 导出其他环境变量
|
|
6
8
|
export const ENV = {
|
|
7
9
|
API_DOMAIN,
|
|
10
|
+
PCM_DOMAIN,
|
|
8
11
|
// 可以添加其他环境变量
|
|
9
12
|
};
|
|
10
13
|
//# sourceMappingURL=env.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;AACvE,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAGtD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC;AAEvE,WAAW;AACX,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC","sourcesContent":["// 默认 API 域名\nconst DEFAULT_API_DOMAIN = 'https://api.pincaimao.com/agents/platform';\nconst DEFAULT_PCM_DOMAIN = 'http://www.pincaimao.com';\n\n\n// 从环境变量获取 API 域名,如果未设置则使用默认值\nexport const API_DOMAIN = process.env.API_DOMAIN || DEFAULT_API_DOMAIN;\nexport const PCM_DOMAIN = process.env.PCM_DOMAIN || DEFAULT_PCM_DOMAIN;\n\n// 导出其他环境变量\nexport const ENV = {\n API_DOMAIN,\n PCM_DOMAIN,\n // 可以添加其他环境变量\n}; "]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-event.js","sourceRoot":"","sources":["../../../src/utils/error-event.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAwB;QACvC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE;YACzC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM;SACP,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA4C;QAClE,MAAM,OAAO,GAAG,CAAC,KAAoC,EAAE,EAAE;YACvD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAwB,CAAC,CAAC;QAEjE,aAAa;QACb,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAwB,CAAC,CAAC;QACtE,CAAC,CAAC;IACJ,CAAC;CACF","sourcesContent":["export interface ErrorEventDetail {\
|
|
1
|
+
{"version":3,"file":"error-event.js","sourceRoot":"","sources":["../../../src/utils/error-event.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAwB;QACvC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE;YACzC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM;SACP,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA4C;QAClE,MAAM,OAAO,GAAG,CAAC,KAAoC,EAAE,EAAE;YACvD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAwB,CAAC,CAAC;QAEjE,aAAa;QACb,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAwB,CAAC,CAAC;QACtE,CAAC,CAAC;IACJ,CAAC;CACF","sourcesContent":["export interface ErrorEventDetail {\n error: any;\n message: string;\n}\n\nexport class ErrorEventBus {\n /**\n * 触发错误事件\n */\n static emitError(detail: ErrorEventDetail): void {\n const event = new CustomEvent('pcm-error', {\n bubbles: true,\n composed: true,\n detail\n });\n document.dispatchEvent(event);\n }\n\n /**\n * 添加错误事件监听器\n */\n static addErrorListener(callback: (detail: ErrorEventDetail) => void): () => void {\n const handler = (event: CustomEvent<ErrorEventDetail>) => {\n callback(event.detail);\n };\n \n document.addEventListener('pcm-error', handler as EventListener);\n \n // 返回移除监听器的函数\n return () => {\n document.removeEventListener('pcm-error', handler as EventListener);\n };\n }\n} "]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/utils/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,OAAO,CAAC,KAAK;IAChB,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,iEAAiE;YACtE,YAAY,EAAE,EAAE;YAChB,UAAU,CAAC,KAAK;gBACZ,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBACxD,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAC/C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC7D,CAAC;wBACF,IAAI,CAAC,SAAS,EAAE,CAAC;4BACb,OAAO,IAAI,CAAC;wBAChB,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,gBAAgB,EAAE,GAAG;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import * as Sentry from \"@sentry/browser\";\
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/utils/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,OAAO,CAAC,KAAK;IAChB,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,iEAAiE;YACtE,YAAY,EAAE,EAAE;YAChB,UAAU,CAAC,KAAK;gBACZ,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBACxD,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAC/C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC7D,CAAC;wBACF,IAAI,CAAC,SAAS,EAAE,CAAC;4BACb,OAAO,IAAI,CAAC;wBAChB,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,gBAAgB,EAAE,GAAG;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import * as Sentry from \"@sentry/browser\";\n\nexport default async function() {\n return await new Promise((resolve) => {\n Sentry.init({\n dsn: \"https://d4dd33313afbf480bb76f965a5dcc733@sentry.ylzhaopin.com/9\",\n integrations: [],\n beforeSend(event) {\n if (event.exception && event.exception.values) {\n const errorValue = event.exception.values[0];\n if (errorValue.stacktrace && errorValue.stacktrace.frames) {\n const isFromSdk = errorValue.stacktrace.frames.some(\n frame => frame.filename && frame.filename.includes('pcm-')\n );\n if (!isFromSdk) {\n return null;\n }\n }\n }\n return event;\n },\n tracesSampleRate: 0.1,\n });\n resolve({});\n });\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry-reporter.js","sourceRoot":"","sources":["../../../src/utils/sentry-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;GAGG;AACH,MAAM,OAAO,cAAc;IAEzB;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,KAAU,EAAE,OAAkD;QAChF,IAAI,CAAC;YACH,SAAS;YACT,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,sBAAsB;YACtB,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;oBACjB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACjC,CAAC;gBACD,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,QAAQ;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;gBAC3C,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;YAED,OAAO;YACP,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe,EAAE,OAA6B;QAClE,IAAI,CAAC;YACH,SAAS;YACT,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,QAAQ;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;YACP,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CAEF","sourcesContent":["import * as Sentry from \"@sentry/browser\";\
|
|
1
|
+
{"version":3,"file":"sentry-reporter.js","sourceRoot":"","sources":["../../../src/utils/sentry-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;GAGG;AACH,MAAM,OAAO,cAAc;IAEzB;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,KAAU,EAAE,OAAkD;QAChF,IAAI,CAAC;YACH,SAAS;YACT,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,sBAAsB;YACtB,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;oBACjB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACjC,CAAC;gBACD,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,QAAQ;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;gBAC3C,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;YAED,OAAO;YACP,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe,EAAE,OAA6B;QAClE,IAAI,CAAC;YACH,SAAS;YACT,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,QAAQ;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;YACP,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CAEF","sourcesContent":["import * as Sentry from \"@sentry/browser\";\nimport { configStore } from \"../../store/config.store\";\n\n/**\n * Sentry事件上报工具类\n * 提供统一的错误上报接口,自动添加用户认证信息\n */\nexport class SentryReporter {\n\n /**\n * 捕获并上报错误\n * @param error 错误对象\n * @param context 错误上下文\n */\n static captureError(error: any, context?: Record<string, any> & { title?: string }): void {\n try {\n // 添加认证信息\n const CUser = configStore.getItem('pcm-sdk-CUser');\n if (CUser) {\n Sentry.setUser({ id: String(CUser) });\n }\n \n let finalError = error;\n \n // 如果提供了自定义标题,创建新的错误对象\n if (context?.title) {\n finalError = new Error(context.title);\n if (error?.stack) {\n finalError.stack = error.stack;\n }\n finalError.cause = error;\n }\n \n // 添加上下文\n if (context) {\n const { title, ...otherContext } = context;\n Sentry.setContext('error_context', otherContext);\n }\n \n // 上报错误\n Sentry.captureException(finalError);\n } catch (e) {\n console.error('Sentry 上报错误失败:', e);\n }\n }\n\n /**\n * 捕获并上报消息\n * @param message 消息内容\n * @param context 消息上下文\n */\n static captureMessage(message: string, context?: Record<string, any>): void {\n try {\n // 添加认证信息\n const CUser = configStore.getItem('pcm-sdk-CUser');\n if (CUser) {\n Sentry.setUser({ id: String(CUser) });\n }\n \n // 添加上下文\n if (context) {\n Sentry.setContext('message_context', context);\n }\n \n // 上报消息\n Sentry.captureMessage(message);\n } catch (e) {\n console.error('Sentry 上报消息失败:', e);\n }\n }\n\n}"]}
|
|
@@ -1,33 +1,11 @@
|
|
|
1
1
|
// 导入环境变量
|
|
2
|
-
import { API_DOMAIN } from "./env";
|
|
2
|
+
import { API_DOMAIN, PCM_DOMAIN } from "./env";
|
|
3
3
|
import { authStore } from "../../store/auth.store"; // 导入 authStore
|
|
4
4
|
import { configStore } from "../../store/config.store";
|
|
5
|
-
export { API_DOMAIN };
|
|
5
|
+
export { API_DOMAIN, PCM_DOMAIN };
|
|
6
6
|
export function format(first, middle, last) {
|
|
7
7
|
return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
10
|
-
* 将工作流节点转换为消息轮次
|
|
11
|
-
* @param message_event 消息事件类型
|
|
12
|
-
* @param inputMessage 用户输入消息
|
|
13
|
-
* @param streamNode 工作流节点
|
|
14
|
-
* @returns 消息轮次
|
|
15
|
-
*/
|
|
16
|
-
export const convertWorkflowStreamNodeToMessageRound = (message_event, inputMessage, streamNode) => {
|
|
17
|
-
const messageRound = {
|
|
18
|
-
...inputMessage,
|
|
19
|
-
};
|
|
20
|
-
if (message_event === 'workflow_finished')
|
|
21
|
-
messageRound.answer = streamNode.data?.outputs?.answer;
|
|
22
|
-
if (message_event === 'agent_message' || message_event === 'message')
|
|
23
|
-
messageRound.answer = streamNode?.answer;
|
|
24
|
-
messageRound.id = streamNode.message_id;
|
|
25
|
-
messageRound.conversation_id = streamNode.conversation_id;
|
|
26
|
-
messageRound.created_at = streamNode.created_at;
|
|
27
|
-
messageRound.status = streamNode.data?.status;
|
|
28
|
-
messageRound.error = streamNode.data?.error;
|
|
29
|
-
return messageRound;
|
|
30
|
-
};
|
|
31
9
|
/**
|
|
32
10
|
* 同步延迟函数,阻塞主线程指定的毫秒数
|
|
33
11
|
* @param ms 延迟的毫秒数
|
|
@@ -330,6 +308,13 @@ export const fetchAgentInfo = async (botId) => {
|
|
|
330
308
|
throw error;
|
|
331
309
|
}
|
|
332
310
|
};
|
|
311
|
+
export var FileUploadState;
|
|
312
|
+
(function (FileUploadState) {
|
|
313
|
+
FileUploadState["Init"] = "init";
|
|
314
|
+
FileUploadState["Uploading"] = "uploading";
|
|
315
|
+
FileUploadState["Success"] = "success";
|
|
316
|
+
FileUploadState["Failed"] = "failed";
|
|
317
|
+
})(FileUploadState || (FileUploadState = {}));
|
|
333
318
|
/**
|
|
334
319
|
* 计算文件的SHA256哈希值
|
|
335
320
|
* @param file 要计算哈希值的文件
|
|
@@ -542,4 +527,43 @@ export const getCosPreviewUrl = async (cosKey, headers) => {
|
|
|
542
527
|
return null;
|
|
543
528
|
}
|
|
544
529
|
};
|
|
530
|
+
/**
|
|
531
|
+
* 格式化文件大小
|
|
532
|
+
* @param size 文件大小(单位B)
|
|
533
|
+
* @returns 格式化后的文件大小字符串,如 "12.3MB"
|
|
534
|
+
*/
|
|
535
|
+
export const formatFileSize = (size) => {
|
|
536
|
+
if (!size && size !== 0) {
|
|
537
|
+
return null;
|
|
538
|
+
}
|
|
539
|
+
const numSize = Number(size);
|
|
540
|
+
if (isNaN(numSize))
|
|
541
|
+
return null;
|
|
542
|
+
if (size < 1024) {
|
|
543
|
+
return size + "B";
|
|
544
|
+
}
|
|
545
|
+
if (size < 1024 * 1024) {
|
|
546
|
+
return (size / 1024).toFixed(1) + "KB";
|
|
547
|
+
}
|
|
548
|
+
return (size / 1024 / 1024).toFixed(1) + "MB";
|
|
549
|
+
};
|
|
550
|
+
/**
|
|
551
|
+
* 判断当前设备是PC还是移动端
|
|
552
|
+
* @returns {boolean} true表示是移动端,false表示是PC端
|
|
553
|
+
*/
|
|
554
|
+
export const isMobile = () => {
|
|
555
|
+
const userAgentInfo = navigator.userAgent;
|
|
556
|
+
const mobileAgents = ['Android', 'iPhone', 'iPad', 'iPod', 'Windows Phone', 'BlackBerry', 'SymbianOS', 'MicroMessenger'];
|
|
557
|
+
let isMobileFlag = false;
|
|
558
|
+
for (let i = 0; i < mobileAgents.length; i++) {
|
|
559
|
+
if (userAgentInfo.indexOf(mobileAgents[i]) > -1) {
|
|
560
|
+
isMobileFlag = true;
|
|
561
|
+
break;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
if (!isMobileFlag) {
|
|
565
|
+
isMobileFlag = window.innerWidth < 768;
|
|
566
|
+
}
|
|
567
|
+
return isMobileFlag;
|
|
568
|
+
};
|
|
545
569
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// 导入环境变量\r\nimport { API_DOMAIN } from './env';\r\nimport { authStore } from '../../store/auth.store'; // 导入 authStore\r\nimport { configStore } from '../../store/config.store';\r\n\r\nexport { API_DOMAIN };\r\n\r\nexport function format(first?: string, middle?: string, last?: string): string {\r\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\r\n}\r\n\r\n// 添加类型定义\r\nexport interface UserInputMessageType {\r\n message: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface WorkFlowNode {\r\n message_id?: string;\r\n conversation_id?: string;\r\n created_at?: string;\r\n event?: string;\r\n answer?: string;\r\n data?: {\r\n outputs?: {\r\n answer?: string;\r\n };\r\n status?: string;\r\n error?: any;\r\n };\r\n}\r\n\r\nexport interface MessageRound extends UserInputMessageType {\r\n id?: string;\r\n conversation_id?: string;\r\n created_at?: string;\r\n answer?: string;\r\n status?: string;\r\n error?: any;\r\n}\r\n\r\n/**\r\n * 将工作流节点转换为消息轮次\r\n * @param message_event 消息事件类型\r\n * @param inputMessage 用户输入消息\r\n * @param streamNode 工作流节点\r\n * @returns 消息轮次\r\n */\r\nexport const convertWorkflowStreamNodeToMessageRound = (message_event: string, inputMessage: UserInputMessageType, streamNode: WorkFlowNode): MessageRound => {\r\n const messageRound: MessageRound = {\r\n ...inputMessage,\r\n };\r\n if (message_event === 'workflow_finished') messageRound.answer = streamNode.data?.outputs?.answer;\r\n if (message_event === 'agent_message' || message_event === 'message') messageRound.answer = streamNode?.answer;\r\n messageRound.id = streamNode.message_id;\r\n messageRound.conversation_id = streamNode.conversation_id;\r\n messageRound.created_at = streamNode.created_at;\r\n messageRound.status = streamNode.data?.status;\r\n messageRound.error = streamNode.data?.error;\r\n return messageRound;\r\n};\r\n\r\n/**\r\n * SSE 流式请求配置接口\r\n */\r\nexport interface SSERequestConfig {\r\n url: string;\r\n method: string;\r\n headers?: Record<string, string>;\r\n data?: any;\r\n onMessage?: (data: any) => void;\r\n onError?: (error: any) => void;\r\n onComplete?: () => void;\r\n}\r\n\r\n/**\r\n * 同步延迟函数,阻塞主线程指定的毫秒数\r\n * @param ms 延迟的毫秒数\r\n */\r\nconst syncDelay = (ms: number) => {\r\n const start = Date.now();\r\n while (Date.now() - start < ms) {\r\n // 空循环,阻塞主线程\r\n }\r\n};\r\n\r\n/**\r\n * 获取有效的 token,从 authStore 中获取\r\n * @returns string 有效的 token\r\n */\r\nexport const getEffectiveToken = (): string => {\r\n return authStore.getToken() || '';\r\n};\r\n\r\n/**\r\n * 请求超时时间(毫秒)\r\n */\r\nconst REQUEST_TIMEOUT = 3 * 60 * 1000; // 3分钟\r\n\r\n/**\r\n * 创建带超时的 fetch 请求\r\n * @param url 请求URL\r\n * @param options fetch选项\r\n * @param timeout 超时时间(毫秒)\r\n * @returns Promise<Response>\r\n */\r\nconst fetchWithTimeout = async (url: string, options: RequestInit, timeout: number = REQUEST_TIMEOUT): Promise<Response> => {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n try {\r\n const response = await fetch(url, {\r\n ...options,\r\n signal: controller.signal,\r\n });\r\n clearTimeout(timeoutId);\r\n return response;\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new Error('请求超时,请检查网络连接后重试');\r\n }\r\n throw error;\r\n }\r\n};\r\n\r\n/**\r\n * 发送 SSE 流式请求\r\n * @param config 请求配置\r\n * @param isRetry 是否为重试请求\r\n * @returns Promise<void>\r\n */\r\nexport const sendSSERequest = async (config: SSERequestConfig, isRetry = false): Promise<void> => {\r\n const { url, method, headers = {}, data, onMessage, onError, onComplete } = config;\r\n\r\n try {\r\n // 使用 API_DOMAIN 拼接完整的请求URL\r\n const requestUrl = `${API_DOMAIN}${url}`;\r\n\r\n // 如果没有提供 Authorization 头,则从 authStore 获取 token\r\n if (!headers['authorization'] && !headers['Authorization']) {\r\n const token = getEffectiveToken();\r\n if (token) {\r\n headers['authorization'] = `Bearer ${token}`;\r\n }\r\n }\r\n\r\n const response = await fetchWithTimeout(requestUrl, {\r\n method,\r\n headers: {\r\n 'Accept': 'text/event-stream',\r\n 'Content-Type': 'application/json',\r\n ...headers,\r\n },\r\n body: data ? JSON.stringify(data) : undefined,\r\n });\r\n\r\n // 检查是否为401错误(未授权)\r\n if (response.status === 401) {\r\n // 触发全局token无效事件\r\n createTokenInvalidEvent();\r\n\r\n // 如果不是重试请求,则使用同步延迟500毫秒后重试一次\r\n if (!isRetry) {\r\n syncDelay(500); // 阻塞式延迟\r\n return sendSSERequest(config, true);\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n console.error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const reader = response.body?.getReader();\r\n if (!reader) throw new Error('No reader available');\r\n\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n\r\n while (true) {\r\n const { value, done } = await reader.read();\r\n if (done) break;\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n\r\n // 处理缓冲区中的完整消息\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() || ''; // 保留最后一个不完整的行\r\n\r\n for (const line of lines) {\r\n if (line.startsWith('data:')) {\r\n try {\r\n const jsonStr = line.substring(5).trim();\r\n if (!jsonStr) continue;\r\n\r\n const data = JSON.parse(jsonStr);\r\n onMessage?.(data);\r\n } catch (e) {\r\n console.error('解析 SSE 数据错误:', e, '原始数据:', line);\r\n }\r\n }\r\n }\r\n }\r\n\r\n onComplete?.();\r\n } catch (error) {\r\n console.error('SSE 请求错误:', error);\r\n\r\n // 如果是超时错误且不是重试请求,则重试一次\r\n if (!isRetry) {\r\n console.log('SSE请求超时,正在重试...');\r\n syncDelay(1000); // 延迟1秒后重试\r\n return sendSSERequest(config, true);\r\n }\r\n\r\n onError?.(error);\r\n }\r\n};\r\n\r\n/**\r\n * HTTP请求配置接口\r\n */\r\nexport interface HttpRequestConfig {\r\n url: string;\r\n method?: string;\r\n headers?: Record<string, string>;\r\n params?: Record<string, any>;\r\n data?: any;\r\n formData?: FormData; // 添加FormData支持\r\n onMessage?: (data: any) => void;\r\n onError?: (error: any) => void;\r\n onComplete?: () => void;\r\n}\r\n\r\n/**\r\n * 统一的API响应接口\r\n */\r\nexport interface ApiResponse<T = any> {\r\n code: number;\r\n message: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * HTTP响应接口\r\n */\r\nexport interface HttpResponse<T = any> {\r\n success: boolean;\r\n data?: T;\r\n error?: any;\r\n message?: string;\r\n}\r\n\r\n// 添加一个全局事件发射器用于处理401错误\r\nexport const createTokenInvalidEvent = () => {\r\n const event = new CustomEvent('pcm-token-invalid', {\r\n bubbles: true,\r\n composed: true,\r\n detail: { timestamp: new Date().getTime() },\r\n });\r\n document.dispatchEvent(event);\r\n};\r\n\r\n/**\r\n * 发送HTTP请求\r\n * @param config 请求配置\r\n * @param isRetry 是否为重试请求\r\n * @returns Promise<HttpResponse>\r\n */\r\nexport const sendHttpRequest = async <T = any>(config: HttpRequestConfig, isRetry = true): Promise<HttpResponse<T>> => {\r\n const { url, method = 'GET', headers = {}, params = {}, data, formData, onMessage } = config;\r\n\r\n try {\r\n // 构建URL和查询参数\r\n const queryParams = new URLSearchParams();\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n queryParams.append(key, String(value));\r\n }\r\n });\r\n\r\n // 使用 API_DOMAIN 拼接完整的请求URL\r\n let requestUrl = `${API_DOMAIN}${url}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;\r\n // 如果没有提供 Authorization 头,则从 authStore 获取 token\r\n if (headers['authorization'] == undefined && headers['Authorization'] == undefined) {\r\n const token = getEffectiveToken();\r\n\r\n if (token) {\r\n headers['authorization'] = `Bearer ${token}`;\r\n }\r\n }\r\n\r\n // 创建请求配置对象\r\n const requestConfig: RequestInit = {\r\n method,\r\n headers: formData\r\n ? { ...headers }\r\n : {\r\n 'Content-Type': 'application/json',\r\n ...headers,\r\n },\r\n };\r\n\r\n // 处理请求体\r\n if (formData) {\r\n // 如果提供了FormData,直接使用\r\n requestConfig.body = formData;\r\n } else if (method !== 'GET' && method !== 'HEAD' && data) {\r\n // 否则,如果是非GET/HEAD请求且有data,将其JSON序列化\r\n requestConfig.body = JSON.stringify(data);\r\n }\r\n\r\n // 如果是 GET 方法且有 data,将其作为查询参数添加到 URL\r\n if (method === 'GET' && data) {\r\n const dataParams = new URLSearchParams();\r\n Object.entries(data).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n dataParams.append(key, String(value));\r\n }\r\n });\r\n requestUrl += (queryParams.toString() ? '&' : '?') + dataParams.toString();\r\n }\r\n\r\n const response = await fetchWithTimeout(requestUrl, requestConfig);\r\n\r\n // 检查是否为401错误(未授权)\r\n if (response.status === 401) {\r\n // 触发全局token无效事件\r\n createTokenInvalidEvent();\r\n\r\n // 重试请求\r\n if (isRetry) {\r\n syncDelay(500); // 阻塞式延迟\r\n return sendHttpRequest(config, false);\r\n }\r\n }\r\n\r\n const responseData: ApiResponse<T> = await response.json();\r\n\r\n // 调用 onMessage 回调\r\n if (onMessage) {\r\n onMessage(responseData);\r\n }\r\n\r\n // 检查响应状态\r\n if (!response.ok) {\r\n console.error(`HTTP错误: ${response.status} ${response.statusText}`);\r\n return {\r\n success: false,\r\n message: responseData.message || `HTTP错误: ${response.status}`,\r\n error: responseData,\r\n };\r\n }\r\n\r\n // 检查业务状态码\r\n if (responseData.code !== 0) {\r\n console.error(`API错误: ${responseData.message}`);\r\n return {\r\n success: false,\r\n message: responseData.message,\r\n error: responseData,\r\n };\r\n }\r\n\r\n // 直接返回data\r\n return {\r\n success: true,\r\n data: responseData.data,\r\n };\r\n } catch (error) {\r\n console.error('HTTP请求错误:', error);\r\n\r\n // 如果是超时错误且允许重试,则重试一次\r\n if (isRetry) {\r\n console.log('HTTP请求超时,正在重试...');\r\n syncDelay(1000); // 延迟1秒后重试\r\n return sendHttpRequest(config, false);\r\n }\r\n\r\n if (config.onError) {\r\n config.onError(error);\r\n }\r\n return {\r\n success: false,\r\n error,\r\n message: error instanceof Error ? error.message : '未知错误',\r\n };\r\n } finally {\r\n if (config.onComplete) {\r\n config.onComplete();\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 验证API密钥\r\n * @param token API密钥\r\n * @returns Promise<boolean> 验证是否成功\r\n */\r\nexport const verifyApiKey = async (token: string): Promise<boolean> => {\r\n const response = await sendHttpRequest(\r\n {\r\n url: '/sdk/v1/user',\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n },\r\n false,\r\n );\r\n\r\n // 如果是401错误,同步延迟500毫秒后返回\r\n if (!response.success && response.error && response.error.code === 401) {\r\n // 执行同步延迟\r\n syncDelay(500);\r\n return false;\r\n } else {\r\n \r\n configStore.setItem('pcm-sdk-CUser', `${response.data.user}(${response.data.chat_user})`);\r\n return response.success;\r\n }\r\n};\r\n\r\n/**\r\n * 获取智能体信息\r\n * @param botId 智能体ID\r\n * @returns Promise<any> 智能体信息数据\r\n */\r\nexport const fetchAgentInfo = async (botId: string): Promise<any> => {\r\n if (!botId) {\r\n throw new Error('智能体ID不能为空');\r\n }\r\n\r\n try {\r\n const response = await sendHttpRequest({\r\n url: `/sdk/v1/agent/${botId}/info`,\r\n method: 'GET',\r\n });\r\n\r\n if (!response.success) {\r\n throw new Error(response.message || '获取智能体信息失败');\r\n }\r\n\r\n return response.data;\r\n } catch (error) {\r\n console.error('获取智能体信息失败:', error);\r\n throw error;\r\n }\r\n};\r\n\r\n/**\r\n * 文件上传响应数据接口\r\n */\r\nexport interface FileUploadResponse {\r\n /** 文件在对象存储中的唯一标识符 */\r\n cos_key: string;\r\n /** 文件名称 */\r\n file_name: string;\r\n /** 文件大小(带单位的字符串,如 \"1.5MB\") */\r\n file_size: string;\r\n /** 文件扩展名 */\r\n ext: string;\r\n}\r\n\r\n/**\r\n * 计算文件的SHA256哈希值\r\n * @param file 要计算哈希值的文件\r\n * @returns Promise<string> 返回文件的SHA256哈希值\r\n */\r\nexport const calculateFileSHA256 = async (file: File): Promise<string> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = async e => {\r\n try {\r\n const arrayBuffer = e.target?.result as ArrayBuffer;\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', arrayBuffer);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n resolve(hashHex);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n };\r\n reader.onerror = () => reject(new Error('读取文件失败'));\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/**\r\n * 带重试机制的文件上传请求\r\n * @param url 上传URL\r\n * @param file 要上传的文件\r\n * @param contentType 内容类型\r\n * @param maxRetries 最大重试次数\r\n * @returns Promise<Response>\r\n */\r\nexport const uploadFileWithRetry = async (\r\n url: string, \r\n file: File, \r\n contentType: string = 'application/octet-stream', \r\n maxRetries: number = 2\r\n): Promise<Response> => {\r\n let retries = 0;\r\n \r\n while (true) {\r\n try {\r\n const response = await fetchWithTimeout(url, {\r\n method: 'PUT',\r\n body: file, // 直接发送文件内容,不使用FormData\r\n headers: {\r\n 'Content-Type': contentType,\r\n }\r\n });\r\n \r\n if (!response.ok) {\r\n throw new Error(`文件上传失败: ${response.status} ${response.statusText}`);\r\n }\r\n \r\n return response;\r\n } catch (error) {\r\n retries++;\r\n console.error(`文件上传错误(尝试 ${retries}/${maxRetries}):`, error);\r\n \r\n // 如果已达到最大重试次数,则抛出错误\r\n if (retries >= maxRetries) {\r\n throw error;\r\n }\r\n \r\n // 重试前延迟,每次重试增加延迟时间\r\n const delayTime = 1000 * retries;\r\n syncDelay(delayTime);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 通过后端API上传文件\r\n * @param file 要上传的文件\r\n * @param headers 可选的请求头\r\n * @param params 可选的额外参数\r\n * @returns Promise 包含上传结果\r\n */\r\nexport const uploadFileToBackend = async (file: File, headers?: Record<string, string>, params?: Record<string, any>): Promise<FileUploadResponse> => {\r\n try {\r\n // 计算文件的SHA256哈希值\r\n const sha256 = await calculateFileSHA256(file);\r\n\r\n // 第一步:获取腾讯云上传URL\r\n const uploadUrlResponse = await sendHttpRequest<{\r\n upload_url: string;\r\n content_type: string;\r\n filetype: string;\r\n is_deleted: number;\r\n cos: {\r\n cos_key: string;\r\n };\r\n filename: string;\r\n filesize: string;\r\n }>({\r\n url: '/sdk/v1/files/generate-upload-url',\r\n method: 'POST',\r\n data: {\r\n ...params,\r\n filename: file.name,\r\n filesize: file.size,\r\n sha256: sha256,\r\n },\r\n headers,\r\n });\r\n\r\n if (!uploadUrlResponse.success || !uploadUrlResponse.data) {\r\n throw new Error(uploadUrlResponse.message || '获取上传URL失败');\r\n }\r\n const generate = uploadUrlResponse.data;\r\n\r\n if (generate.is_deleted != 1) {\r\n // 第二步:使用带重试机制的方法上传文件到腾讯云\r\n const uploadResponse = await uploadFileWithRetry(\r\n generate.upload_url,\r\n file,\r\n generate.content_type || 'application/octet-stream'\r\n );\r\n\r\n if (!uploadResponse.ok) {\r\n throw new Error(`文件上传到腾讯云失败: ${uploadResponse.status} ${uploadResponse.statusText}`);\r\n }\r\n\r\n // 第三步:标记上传完成\r\n sendHttpRequest({\r\n url: '/sdk/v1/files/mark-as-upload',\r\n method: 'POST',\r\n data: {\r\n cos_key: generate.cos.cos_key,\r\n },\r\n headers,\r\n });\r\n }\r\n\r\n // 返回文件信息\r\n return {\r\n cos_key: generate.cos.cos_key,\r\n file_name: generate.filename,\r\n file_size: generate.filesize,\r\n ext: generate.filetype,\r\n };\r\n } catch (error) {\r\n console.error('文件上传错误:', error);\r\n throw error;\r\n }\r\n};\r\n\r\n/**\r\n * 合成语音音频\r\n * @param text 要转换为语音的文本\r\n * @param token API密钥(可选,如果不提供则从 authStore 获取)\r\n * @param isRetry 是否为重试请求\r\n * @returns Promise<string> 返回音频的Blob URL\r\n */\r\nexport const synthesizeAudio = async (text: string, token?: string, isRetry = false): Promise<string> => {\r\n // 如果没有提供 token,则从 authStore 获取\r\n const effectiveToken = token || getEffectiveToken();\r\n\r\n if (!effectiveToken) {\r\n throw new Error('API密钥不能为空');\r\n }\r\n\r\n try {\r\n const response = await fetchWithTimeout(`${API_DOMAIN}/sdk/v1/tts/synthesize_audio`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'authorization': 'Bearer ' + effectiveToken,\r\n },\r\n body: JSON.stringify({ text }),\r\n });\r\n\r\n // 检查是否为401错误(未授权)\r\n if (response.status === 401) {\r\n // 触发全局token无效事件\r\n createTokenInvalidEvent();\r\n\r\n // 如果不是重试请求,则使用同步延迟500毫秒后重试一次\r\n if (!isRetry) {\r\n syncDelay(500); // 阻塞式延迟\r\n return synthesizeAudio(text, token, true);\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n throw new Error('语音合成失败');\r\n }\r\n\r\n // 获取音频数据并创建Blob URL\r\n const audioBlob = await response.blob();\r\n return URL.createObjectURL(audioBlob);\r\n } catch (error) {\r\n console.error('语音合成错误:', error);\r\n\r\n // 如果是超时错误且不是重试请求,则重试一次\r\n if (!isRetry) {\r\n console.log('语音合成请求超时,正在重试...');\r\n syncDelay(1000); // 延迟1秒后重试\r\n return synthesizeAudio(text, token, true);\r\n }\r\n\r\n throw error;\r\n }\r\n};\r\n\r\n/**\r\n * 获取COS文件的预签名URL\r\n * @param cosKey COS文件key\r\n * @param headers 可选的请求头\r\n * @returns Promise<string | null> 返回预签名URL,失败时返回null\r\n */\r\nexport const getCosPresignedUrl = async (cosKey: string, headers?: Record<string, string>): Promise<string | null> => {\r\n try {\r\n const response = await sendHttpRequest<{ file_url: string }>({\r\n url: '/sdk/v1/files/presigned-url',\r\n method: 'GET',\r\n params: {\r\n cos_key: cosKey\r\n },\r\n headers\r\n });\r\n\r\n if (response.success && response.data?.file_url) {\r\n return response.data.file_url;\r\n }\r\n return null;\r\n } catch (error) {\r\n console.error('获取预签名URL失败:', error);\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * 获取COS文件的预览URL(用于文档预览)\r\n * @param cosKey COS文件key\r\n * @param headers 可选的请求头\r\n * @returns Promise<string | null> 返回预览URL,失败时返回null\r\n */\r\nexport const getCosPreviewUrl = async (cosKey: string, headers?: Record<string, string>): Promise<string | null> => {\r\n try {\r\n const fileUrl = await getCosPresignedUrl(cosKey, headers);\r\n if (fileUrl) {\r\n return `${fileUrl}${fileUrl.includes('?') ? '&' : '?'}ci-process=doc-preview©able=1&dstType=html`;\r\n }\r\n return null;\r\n } catch (error) {\r\n console.error('获取预览URL失败:', error);\r\n return null;\r\n }\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// 导入环境变量\nimport { API_DOMAIN, PCM_DOMAIN } from './env';\nimport { authStore } from '../../store/auth.store'; // 导入 authStore\nimport { configStore } from '../../store/config.store';\n\nexport { API_DOMAIN, PCM_DOMAIN };\n\nexport function format(first?: string, middle?: string, last?: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\n// 添加类型定义\nexport interface UserInputMessageType {\n message: string;\n [key: string]: any;\n}\n\nexport interface WorkFlowNode {\n message_id?: string;\n conversation_id?: string;\n created_at?: string;\n event?: string;\n answer?: string;\n data?: {\n outputs?: {\n answer?: string;\n };\n status?: string;\n error?: any;\n };\n}\n\nexport interface MessageRound extends UserInputMessageType {\n id?: string;\n conversation_id?: string;\n created_at?: string;\n answer?: string;\n status?: string;\n error?: any;\n}\n\n\n/**\n * SSE 流式请求配置接口\n */\nexport interface SSERequestConfig {\n url: string;\n method: string;\n headers?: Record<string, string>;\n data?: any;\n onMessage?: (data: any) => void;\n onError?: (error: any) => void;\n onComplete?: () => void;\n}\n\n/**\n * 同步延迟函数,阻塞主线程指定的毫秒数\n * @param ms 延迟的毫秒数\n */\nconst syncDelay = (ms: number) => {\n const start = Date.now();\n while (Date.now() - start < ms) {\n // 空循环,阻塞主线程\n }\n};\n\n/**\n * 获取有效的 token,从 authStore 中获取\n * @returns string 有效的 token\n */\nexport const getEffectiveToken = (): string => {\n return authStore.getToken() || '';\n};\n\n/**\n * 请求超时时间(毫秒)\n */\nconst REQUEST_TIMEOUT = 3 * 60 * 1000; // 3分钟\n\n/**\n * 创建带超时的 fetch 请求\n * @param url 请求URL\n * @param options fetch选项\n * @param timeout 超时时间(毫秒)\n * @returns Promise<Response>\n */\nconst fetchWithTimeout = async (url: string, options: RequestInit, timeout: number = REQUEST_TIMEOUT): Promise<Response> => {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n clearTimeout(timeoutId);\n return response;\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof Error && error.name === 'AbortError') {\n throw new Error('请求超时,请检查网络连接后重试');\n }\n throw error;\n }\n};\n\n/**\n * 发送 SSE 流式请求\n * @param config 请求配置\n * @param isRetry 是否为重试请求\n * @returns Promise<void>\n */\nexport const sendSSERequest = async (config: SSERequestConfig, isRetry = false): Promise<void> => {\n const { url, method, headers = {}, data, onMessage, onError, onComplete } = config;\n\n try {\n // 使用 API_DOMAIN 拼接完整的请求URL\n const requestUrl = `${API_DOMAIN}${url}`;\n\n // 如果没有提供 Authorization 头,则从 authStore 获取 token\n if (!headers['authorization'] && !headers['Authorization']) {\n const token = getEffectiveToken();\n if (token) {\n headers['authorization'] = `Bearer ${token}`;\n }\n }\n\n const response = await fetchWithTimeout(requestUrl, {\n method,\n headers: {\n 'Accept': 'text/event-stream',\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: data ? JSON.stringify(data) : undefined,\n });\n\n // 检查是否为401错误(未授权)\n if (response.status === 401) {\n // 触发全局token无效事件\n createTokenInvalidEvent();\n\n // 如果不是重试请求,则使用同步延迟500毫秒后重试一次\n if (!isRetry) {\n syncDelay(500); // 阻塞式延迟\n return sendSSERequest(config, true);\n }\n }\n\n if (!response.ok) {\n console.error(`HTTP error! status: ${response.status}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No reader available');\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // 处理缓冲区中的完整消息\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // 保留最后一个不完整的行\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n try {\n const jsonStr = line.substring(5).trim();\n if (!jsonStr) continue;\n\n const data = JSON.parse(jsonStr);\n onMessage?.(data);\n } catch (e) {\n console.error('解析 SSE 数据错误:', e, '原始数据:', line);\n }\n }\n }\n }\n\n onComplete?.();\n } catch (error) {\n console.error('SSE 请求错误:', error);\n\n // 如果是超时错误且不是重试请求,则重试一次\n if (!isRetry) {\n console.log('SSE请求超时,正在重试...');\n syncDelay(1000); // 延迟1秒后重试\n return sendSSERequest(config, true);\n }\n\n onError?.(error);\n }\n};\n\n/**\n * HTTP请求配置接口\n */\nexport interface HttpRequestConfig {\n url: string;\n method?: string;\n headers?: Record<string, string>;\n params?: Record<string, any>;\n data?: any;\n formData?: FormData; // 添加FormData支持\n onMessage?: (data: any) => void;\n onError?: (error: any) => void;\n onComplete?: () => void;\n}\n\n/**\n * 统一的API响应接口\n */\nexport interface ApiResponse<T = any> {\n code: number;\n message: string;\n data?: T;\n}\n\n/**\n * HTTP响应接口\n */\nexport interface HttpResponse<T = any> {\n success: boolean;\n data?: T;\n error?: any;\n message?: string;\n}\n\n// 添加一个全局事件发射器用于处理401错误\nexport const createTokenInvalidEvent = () => {\n const event = new CustomEvent('pcm-token-invalid', {\n bubbles: true,\n composed: true,\n detail: { timestamp: new Date().getTime() },\n });\n document.dispatchEvent(event);\n};\n\n/**\n * 发送HTTP请求\n * @param config 请求配置\n * @param isRetry 是否为重试请求\n * @returns Promise<HttpResponse>\n */\nexport const sendHttpRequest = async <T = any>(config: HttpRequestConfig, isRetry = true): Promise<HttpResponse<T>> => {\n const { url, method = 'GET', headers = {}, params = {}, data, formData, onMessage } = config;\n\n try {\n // 构建URL和查询参数\n const queryParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, String(value));\n }\n });\n\n // 使用 API_DOMAIN 拼接完整的请求URL\n let requestUrl = `${API_DOMAIN}${url}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;\n // 如果没有提供 Authorization 头,则从 authStore 获取 token\n if (headers['authorization'] == undefined && headers['Authorization'] == undefined) {\n const token = getEffectiveToken();\n\n if (token) {\n headers['authorization'] = `Bearer ${token}`;\n }\n }\n\n // 创建请求配置对象\n const requestConfig: RequestInit = {\n method,\n headers: formData\n ? { ...headers }\n : {\n 'Content-Type': 'application/json',\n ...headers,\n },\n };\n\n // 处理请求体\n if (formData) {\n // 如果提供了FormData,直接使用\n requestConfig.body = formData;\n } else if (method !== 'GET' && method !== 'HEAD' && data) {\n // 否则,如果是非GET/HEAD请求且有data,将其JSON序列化\n requestConfig.body = JSON.stringify(data);\n }\n\n // 如果是 GET 方法且有 data,将其作为查询参数添加到 URL\n if (method === 'GET' && data) {\n const dataParams = new URLSearchParams();\n Object.entries(data).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n dataParams.append(key, String(value));\n }\n });\n requestUrl += (queryParams.toString() ? '&' : '?') + dataParams.toString();\n }\n\n const response = await fetchWithTimeout(requestUrl, requestConfig);\n\n // 检查是否为401错误(未授权)\n if (response.status === 401) {\n // 触发全局token无效事件\n createTokenInvalidEvent();\n\n // 重试请求\n if (isRetry) {\n syncDelay(500); // 阻塞式延迟\n return sendHttpRequest(config, false);\n }\n }\n\n const responseData: ApiResponse<T> = await response.json();\n\n // 调用 onMessage 回调\n if (onMessage) {\n onMessage(responseData);\n }\n\n // 检查响应状态\n if (!response.ok) {\n console.error(`HTTP错误: ${response.status} ${response.statusText}`);\n return {\n success: false,\n message: responseData.message || `HTTP错误: ${response.status}`,\n error: responseData,\n };\n }\n\n // 检查业务状态码\n if (responseData.code !== 0) {\n console.error(`API错误: ${responseData.message}`);\n return {\n success: false,\n message: responseData.message,\n error: responseData,\n };\n }\n\n // 直接返回data\n return {\n success: true,\n data: responseData.data,\n };\n } catch (error) {\n console.error('HTTP请求错误:', error);\n\n // 如果是超时错误且允许重试,则重试一次\n if (isRetry) {\n console.log('HTTP请求超时,正在重试...');\n syncDelay(1000); // 延迟1秒后重试\n return sendHttpRequest(config, false);\n }\n\n if (config.onError) {\n config.onError(error);\n }\n return {\n success: false,\n error,\n message: error instanceof Error ? error.message : '未知错误',\n };\n } finally {\n if (config.onComplete) {\n config.onComplete();\n }\n }\n};\n\n/**\n * 验证API密钥\n * @param token API密钥\n * @returns Promise<boolean> 验证是否成功\n */\nexport const verifyApiKey = async (token: string): Promise<boolean> => {\n const response = await sendHttpRequest(\n {\n url: '/sdk/v1/user',\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n },\n false,\n );\n\n // 如果是401错误,同步延迟500毫秒后返回\n if (!response.success && response.error && response.error.code === 401) {\n // 执行同步延迟\n syncDelay(500);\n return false;\n } else {\n\n configStore.setItem('pcm-sdk-CUser', `${response.data.user}(${response.data.chat_user})`);\n return response.success;\n }\n};\n\n/**\n * 获取智能体信息\n * @param botId 智能体ID\n * @returns Promise<any> 智能体信息数据\n */\nexport const fetchAgentInfo = async (botId: string): Promise<any> => {\n if (!botId) {\n throw new Error('智能体ID不能为空');\n }\n\n try {\n const response = await sendHttpRequest({\n url: `/sdk/v1/agent/${botId}/info`,\n method: 'GET',\n });\n\n if (!response.success) {\n throw new Error(response.message || '获取智能体信息失败');\n }\n\n return response.data;\n } catch (error) {\n console.error('获取智能体信息失败:', error);\n throw error;\n }\n};\n\n/**\n * 文件上传响应数据接口\n */\nexport interface FileUploadResponse {\n /** 文件在对象存储中的唯一标识符 */\n cos_key: string;\n /** 文件名称 */\n file_name: string;\n /** 文件大小 */\n file_size: any;\n /** 文件扩展名 */\n ext: string;\n}\n\nexport enum FileUploadState {\n Init = 'init',\n Uploading = 'uploading',\n Success = 'success',\n Failed = 'failed',\n}\n\nexport interface FileUploadResponseWithState {\n file?: File;\n file_name?: string;\n file_size?: number;\n state: FileUploadState;\n ext?: string;\n cos_key?: string;\n error?: Error;\n}\n\n/**\n * 计算文件的SHA256哈希值\n * @param file 要计算哈希值的文件\n * @returns Promise<string> 返回文件的SHA256哈希值\n */\nexport const calculateFileSHA256 = async (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = async e => {\n try {\n const arrayBuffer = e.target?.result as ArrayBuffer;\n const hashBuffer = await crypto.subtle.digest('SHA-256', arrayBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n resolve(hashHex);\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = () => reject(new Error('读取文件失败'));\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 带重试机制的文件上传请求\n * @param url 上传URL\n * @param file 要上传的文件\n * @param contentType 内容类型\n * @param maxRetries 最大重试次数\n * @returns Promise<Response>\n */\nexport const uploadFileWithRetry = async (\n url: string,\n file: File,\n contentType: string = 'application/octet-stream',\n maxRetries: number = 2\n): Promise<Response> => {\n let retries = 0;\n\n while (true) {\n try {\n const response = await fetchWithTimeout(url, {\n method: 'PUT',\n body: file, // 直接发送文件内容,不使用FormData\n headers: {\n 'Content-Type': contentType,\n }\n });\n\n if (!response.ok) {\n throw new Error(`文件上传失败: ${response.status} ${response.statusText}`);\n }\n\n return response;\n } catch (error) {\n retries++;\n console.error(`文件上传错误(尝试 ${retries}/${maxRetries}):`, error);\n\n // 如果已达到最大重试次数,则抛出错误\n if (retries >= maxRetries) {\n throw error;\n }\n\n // 重试前延迟,每次重试增加延迟时间\n const delayTime = 1000 * retries;\n syncDelay(delayTime);\n }\n }\n};\n\n/**\n * 通过后端API上传文件\n * @param file 要上传的文件\n * @param headers 可选的请求头\n * @param params 可选的额外参数\n * @returns Promise 包含上传结果\n */\nexport const uploadFileToBackend = async (file: File, headers?: Record<string, string>, params?: Record<string, any>): Promise<FileUploadResponse> => {\n try {\n // 计算文件的SHA256哈希值\n const sha256 = await calculateFileSHA256(file);\n\n // 第一步:获取腾讯云上传URL\n const uploadUrlResponse = await sendHttpRequest<{\n upload_url: string;\n content_type: string;\n filetype: string;\n is_deleted: number;\n cos: {\n cos_key: string;\n };\n filename: string;\n filesize: string;\n }>({\n url: '/sdk/v1/files/generate-upload-url',\n method: 'POST',\n data: {\n ...params,\n filename: file.name,\n filesize: file.size,\n sha256: sha256,\n },\n headers,\n });\n\n if (!uploadUrlResponse.success || !uploadUrlResponse.data) {\n throw new Error(uploadUrlResponse.message || '获取上传URL失败');\n }\n const generate = uploadUrlResponse.data;\n\n if (generate.is_deleted != 1) {\n // 第二步:使用带重试机制的方法上传文件到腾讯云\n const uploadResponse = await uploadFileWithRetry(\n generate.upload_url,\n file,\n generate.content_type || 'application/octet-stream'\n );\n\n if (!uploadResponse.ok) {\n throw new Error(`文件上传到腾讯云失败: ${uploadResponse.status} ${uploadResponse.statusText}`);\n }\n\n // 第三步:标记上传完成\n sendHttpRequest({\n url: '/sdk/v1/files/mark-as-upload',\n method: 'POST',\n data: {\n cos_key: generate.cos.cos_key,\n },\n headers,\n });\n }\n\n // 返回文件信息\n return {\n cos_key: generate.cos.cos_key,\n file_name: generate.filename,\n file_size: generate.filesize,\n ext: generate.filetype,\n };\n } catch (error) {\n console.error('文件上传错误:', error);\n throw error;\n }\n};\n\n/**\n * 合成语音音频\n * @param text 要转换为语音的文本\n * @param token API密钥(可选,如果不提供则从 authStore 获取)\n * @param isRetry 是否为重试请求\n * @returns Promise<string> 返回音频的Blob URL\n */\nexport const synthesizeAudio = async (text: string, token?: string, isRetry = false): Promise<string> => {\n // 如果没有提供 token,则从 authStore 获取\n const effectiveToken = token || getEffectiveToken();\n\n if (!effectiveToken) {\n throw new Error('API密钥不能为空');\n }\n\n try {\n const response = await fetchWithTimeout(`${API_DOMAIN}/sdk/v1/tts/synthesize_audio`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'authorization': 'Bearer ' + effectiveToken,\n },\n body: JSON.stringify({ text }),\n });\n\n // 检查是否为401错误(未授权)\n if (response.status === 401) {\n // 触发全局token无效事件\n createTokenInvalidEvent();\n\n // 如果不是重试请求,则使用同步延迟500毫秒后重试一次\n if (!isRetry) {\n syncDelay(500); // 阻塞式延迟\n return synthesizeAudio(text, token, true);\n }\n }\n\n if (!response.ok) {\n throw new Error('语音合成失败');\n }\n\n // 获取音频数据并创建Blob URL\n const audioBlob = await response.blob();\n return URL.createObjectURL(audioBlob);\n } catch (error) {\n console.error('语音合成错误:', error);\n\n // 如果是超时错误且不是重试请求,则重试一次\n if (!isRetry) {\n console.log('语音合成请求超时,正在重试...');\n syncDelay(1000); // 延迟1秒后重试\n return synthesizeAudio(text, token, true);\n }\n\n throw error;\n }\n};\n\n/**\n * 获取COS文件的预签名URL\n * @param cosKey COS文件key\n * @param headers 可选的请求头\n * @returns Promise<string | null> 返回预签名URL,失败时返回null\n */\nexport const getCosPresignedUrl = async (cosKey: string, headers?: Record<string, string>): Promise<string | null> => {\n try {\n const response = await sendHttpRequest<{ file_url: string }>({\n url: '/sdk/v1/files/presigned-url',\n method: 'GET',\n params: {\n cos_key: cosKey\n },\n headers\n });\n\n if (response.success && response.data?.file_url) {\n return response.data.file_url;\n }\n return null;\n } catch (error) {\n console.error('获取预签名URL失败:', error);\n return null;\n }\n};\n\n/**\n * 获取COS文件的预览URL(用于文档预览)\n * @param cosKey COS文件key\n * @param headers 可选的请求头\n * @returns Promise<string | null> 返回预览URL,失败时返回null\n */\nexport const getCosPreviewUrl = async (cosKey: string, headers?: Record<string, string>): Promise<string | null> => {\n try {\n const fileUrl = await getCosPresignedUrl(cosKey, headers);\n if (fileUrl) {\n return `${fileUrl}${fileUrl.includes('?') ? '&' : '?'}ci-process=doc-preview©able=1&dstType=html`;\n }\n return null;\n } catch (error) {\n console.error('获取预览URL失败:', error);\n return null;\n }\n};\n\n\n/**\n * 格式化文件大小\n * @param size 文件大小(单位B)\n * @returns 格式化后的文件大小字符串,如 \"12.3MB\"\n */\n\nexport const formatFileSize = (size?: number) => {\n if (!size && size !== 0) {\n return null;\n }\n const numSize = Number(size);\n if (isNaN(numSize)) return null;\n if (size < 1024) {\n return size + \"B\";\n }\n if (size < 1024 * 1024) {\n return (size / 1024).toFixed(1) + \"KB\";\n }\n return (size / 1024 / 1024).toFixed(1) + \"MB\";\n};\n\n/**\n * 判断当前设备是PC还是移动端\n * @returns {boolean} true表示是移动端,false表示是PC端\n */\nexport const isMobile = (): boolean => {\n const userAgentInfo = navigator.userAgent;\n const mobileAgents = ['Android', 'iPhone', 'iPad', 'iPod', 'Windows Phone', 'BlackBerry', 'SymbianOS', 'MicroMessenger'];\n let isMobileFlag = false;\n for (let i = 0; i < mobileAgents.length; i++) {\n if (userAgentInfo.indexOf(mobileAgents[i]) > -1) {\n isMobileFlag = true;\n break;\n }\n }\n if (!isMobileFlag) {\n isMobileFlag = window.innerWidth < 768;\n }\n\n return isMobileFlag;\n}"]}
|