fmode-ng 0.0.113 → 0.0.115
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/LICENSE.md +8 -0
- package/README.md +37 -37
- package/esm2022/fmode-ng.mjs +10 -5
- package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
- package/esm2022/lib/aigc/agent/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
- package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
- package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
- package/esm2022/lib/aigc/avatar/index.mjs +10 -8
- package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
- package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
- package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
- package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
- package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
- package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
- package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
- package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/index.mjs +10 -8
- package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
- package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
- package/esm2022/lib/aigc/index.mjs +10 -14
- package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
- package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
- package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
- package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
- package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
- package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
- package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
- package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
- package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
- package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
- package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
- package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
- package/esm2022/lib/aigc/story/index.mjs +10 -6
- package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
- package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
- package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
- package/esm2022/lib/aigc/story/story.service.mjs +10 -35
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
- package/esm2022/lib/aigc/voice/index.mjs +10 -7
- package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
- package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
- package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
- package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
- package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
- package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
- package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
- package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
- package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
- package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
- package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
- package/esm2022/lib/code/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
- package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
- package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
- package/esm2022/lib/core/agent/chat/index.mjs +10 -4
- package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
- package/esm2022/lib/core/agent/index.mjs +10 -6
- package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
- package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
- package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
- package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
- package/esm2022/lib/core/agent/story/index.mjs +10 -2
- package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
- package/esm2022/lib/core/agent/task/index.mjs +10 -2
- package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
- package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
- package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
- package/esm2022/lib/core/index.mjs +10 -4
- package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
- package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
- package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
- package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
- package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
- package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
- package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
- package/esm2022/lib/core/parse/index.mjs +10 -5
- package/esm2022/lib/core/parse/types.mjs +10 -2
- package/esm2022/lib/core/voice/index.mjs +10 -3
- package/esm2022/lib/core/voice/tts/index.mjs +10 -2
- package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
- package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
- package/esm2022/lib/icon/filetype/index.mjs +10 -12
- package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
- package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
- package/esm2022/lib/icon/index.mjs +10 -2
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
- package/esm2022/lib/map/index.mjs +10 -4
- package/esm2022/lib/map/map.module.mjs +10 -61
- package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
- package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
- package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
- package/esm2022/lib/nova-cloud/index.mjs +10 -3
- package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
- package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
- package/esm2022/lib/payment/index.mjs +10 -2
- package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
- package/esm2022/lib/payment/payment.service.mjs +10 -202
- package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
- package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
- package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
- package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
- package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
- package/esm2022/lib/person/index.mjs +10 -5
- package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
- package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
- package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
- package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
- package/esm2022/lib/person/person.service.mjs +8 -193
- package/esm2022/lib/platform/cross.service.mjs +10 -62
- package/esm2022/lib/platform/index.mjs +10 -2
- package/esm2022/lib/social/index.mjs +10 -2
- package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
- package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
- package/esm2022/lib/storage/index.mjs +10 -5
- package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
- package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
- package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
- package/esm2022/lib/storage/service-upload/index.mjs +10 -2
- package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
- package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
- package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
- package/esm2022/lib/storage/storage.module.mjs +10 -42
- package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
- package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
- package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
- package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
- package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
- package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
- package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
- package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
- package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
- package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
- package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
- package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
- package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
- package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
- package/esm2022/lib/text/index.mjs +10 -4
- package/esm2022/lib/user/account/account.service.mjs +10 -222
- package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
- package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
- package/esm2022/lib/user/index.mjs +10 -17
- package/esm2022/lib/user/login/auth.guard.mjs +10 -28
- package/esm2022/lib/user/login/auth.service.mjs +8 -433
- package/esm2022/lib/user/login/login.component.mjs +10 -916
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
- package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
- package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
- package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
- package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
- package/esm2022/lib/user/profile/profile.module.mjs +10 -54
- package/esm2022/lib/user/staff/index.mjs +10 -4
- package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
- package/esm2022/lib/user/staff/staff.module.mjs +10 -18
- package/esm2022/lib/user/staff/staff.service.mjs +10 -85
- package/esm2022/lib/user/user-name.pipe.mjs +10 -29
- package/esm2022/lib/user/user.module.mjs +10 -102
- package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
- package/esm2022/lib/video/index.mjs +10 -2
- package/esm2022/public-api.mjs +10 -21
- package/fesm2022/fmode-ng.mjs +7 -19788
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
- package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
- package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
- package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
- package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
- package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
- package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
- package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
- package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
- package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
- package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
- package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
- package/lib/aigc/story/story.service.d.ts +3 -2
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
- package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
- package/lib/core/agent/story/agent.story.d.ts +8 -8
- package/lib/core/parse/datatype/geopoint.d.ts +5 -1
- package/lib/core/parse/fmode.cloud.d.ts +32 -0
- package/lib/core/parse/fmode.object.d.ts +2 -2
- package/lib/core/parse/fmode.parse.d.ts +15 -9
- package/lib/core/parse/fmode.query.d.ts +41 -2
- package/lib/core/parse/fmode.user.d.ts +1 -0
- package/lib/core/parse/index.d.ts +1 -0
- package/lib/core/parse/types.d.ts +2 -0
- package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
- package/lib/payment/payment/payment.component.d.ts +3 -3
- package/lib/payment/payment.service.d.ts +4 -4
- package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
- package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
- package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
- package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
- package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
- package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
- package/lib/person/person-detail/person-detail.component.d.ts +4 -4
- package/lib/person/person.service.d.ts +7 -7
- package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
- package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
- package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
- package/lib/text/fm-article-editor/article.service.d.ts +12 -12
- package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
- package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
- package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
- package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
- package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
- package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
- package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
- package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
- package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
- package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
- package/lib/user/account/account.service.d.ts +2 -2
- package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
- package/lib/user/login/auth.service.d.ts +5 -5
- package/lib/user/login/login.component.d.ts +3 -3
- package/lib/user/profile/auth-profile.service.d.ts +8 -8
- package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
- package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
- package/lib/user/staff/staff.service.d.ts +3 -3
- package/lib/user/user-name.pipe.d.ts +2 -2
- package/package.json +12 -18
|
@@ -1,253 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { finalize } from 'rxjs';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { CompDiaryStoryComponent } from "./comp-diary-story/comp-diary-story.component";
|
|
12
|
-
import { CompChatStoryJsonComponent } from "./comp-chat-story-json/comp-chat-story-json.component";
|
|
13
|
-
import { addIcons } from 'ionicons';
|
|
14
|
-
import { alertCircleOutline } from 'ionicons/icons';
|
|
15
|
-
import { openPersonSelectModal } from '../../../person';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "@ionic/angular/standalone";
|
|
18
|
-
import * as i2 from "../../../person";
|
|
19
|
-
import * as i3 from "@angular/router";
|
|
20
|
-
import * as i4 from "@angular/common";
|
|
21
|
-
const agentPrompt = new AgentPrompt();
|
|
22
|
-
const PromptTplSessionStoryCode = "story-chat-session-tpl";
|
|
23
|
-
addIcons({ alertCircleOutline });
|
|
24
|
-
export class ModalChatStoryComponent {
|
|
25
|
-
constructor(alertCtrl, modalCtrl, personServ, navCtrl, route) {
|
|
26
|
-
this.alertCtrl = alertCtrl;
|
|
27
|
-
this.modalCtrl = modalCtrl;
|
|
28
|
-
this.personServ = personServ;
|
|
29
|
-
this.navCtrl = navCtrl;
|
|
30
|
-
this.route = route;
|
|
31
|
-
this.title = "";
|
|
32
|
-
this.subtitle = "";
|
|
33
|
-
this.desc = "";
|
|
34
|
-
this.promptTpl = PromptTplSessionStoryCode;
|
|
35
|
-
this.type = "chat";
|
|
36
|
-
this.now = new Date();
|
|
37
|
-
this.isCreating = false;
|
|
38
|
-
this.Story = Parse.Object.extend("Story");
|
|
39
|
-
this.relationName = "";
|
|
40
|
-
this.defaultAvatar = '/assets/img/icon/avatar.svg';
|
|
41
|
-
this.summaryContent = "";
|
|
42
|
-
}
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
this.loadPerson();
|
|
45
|
-
if (this.story?.id) {
|
|
46
|
-
this.onBreakPointSet && this.onBreakPointSet(0.75);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async loadPerson() {
|
|
50
|
-
let cid = this.chatSession?.id || this.chatSession?.objectId;
|
|
51
|
-
this.chatSession = await this.personServ.loadObjectById("ChatSession", cid, ["person", "user", 'recorder', 'story']);
|
|
52
|
-
this.story = this.chatSession.get("story");
|
|
53
|
-
if (!this.person?.id) {
|
|
54
|
-
let pidstr = (window.location.search?.replaceAll("?", "")).split("&").find(item => item.indexOf("pid=") > -1);
|
|
55
|
-
let pid = pidstr?.split("=")?.[1];
|
|
56
|
-
if (pid) {
|
|
57
|
-
// console.log(pid)
|
|
58
|
-
let query = new Parse.Query("Person");
|
|
59
|
-
this.person = await query.get(pid);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (!this.person?.id) {
|
|
63
|
-
this.person = this.story?.get("person") || this.story?.get("chatSession")?.get("person");
|
|
64
|
-
}
|
|
65
|
-
if (this.person?.__type == "Pointer") {
|
|
66
|
-
this.person = await this.personServ.loadPersonById(this.person?.objectId);
|
|
67
|
-
}
|
|
68
|
-
this.relationName = "朋友";
|
|
69
|
-
let userName = this.chatSession?.get("user")?.get("realname");
|
|
70
|
-
let personName = this.person?.get("name");
|
|
71
|
-
if (personName == userName) {
|
|
72
|
-
this.relationName = "本人";
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async createStory() {
|
|
76
|
-
let person = this.chatSession?.get("person") || this.person;
|
|
77
|
-
if (!person?.id) {
|
|
78
|
-
person = await openPersonSelectModal(this.modalCtrl);
|
|
79
|
-
}
|
|
80
|
-
// console.log(this.chatSession?.toJSON());
|
|
81
|
-
// console.log(this.person?.toJSON());
|
|
82
|
-
let cid = this.chatSession?.id || this.chatSession?.objectId;
|
|
83
|
-
this.chatSession = await this.personServ.loadObjectById("ChatSession", cid, ["person", "user", 'recorder']);
|
|
84
|
-
if (!this.chatSession?.id) {
|
|
85
|
-
let alert = await this.alertCtrl.create({
|
|
86
|
-
header: "当前会话未开始",
|
|
87
|
-
message: "请聊一会儿再总结哦!"
|
|
88
|
-
});
|
|
89
|
-
alert.present();
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
this.isCreating = true;
|
|
93
|
-
// this.onCanDismiss&&this.onCanDismiss(false) // 暂时禁用,创建时,允许关闭
|
|
94
|
-
let story = this.story || new this.Story();
|
|
95
|
-
if (this.person) {
|
|
96
|
-
story.set("person", this.person?.toPointer());
|
|
97
|
-
}
|
|
98
|
-
story.set("type", this.type);
|
|
99
|
-
story.set("user", Parse.User.current());
|
|
100
|
-
let recorder = await this.personServ.loadSelfPerson();
|
|
101
|
-
story.set("chatSession", this.chatSession?.toPointer());
|
|
102
|
-
story.set("recorder", recorder);
|
|
103
|
-
story.set("recordDate", this.chatSession?.createdAt);
|
|
104
|
-
// 根据消息列表,生成采访总结
|
|
105
|
-
let messageList = this.chatSession.get("messageList");
|
|
106
|
-
let messageRecord = ``;
|
|
107
|
-
let personName = this.person?.get("name");
|
|
108
|
-
let userName = this.chatSession?.get("user")?.get("realname");
|
|
109
|
-
messageList.forEach(message => {
|
|
110
|
-
if (message?.role == "system")
|
|
111
|
-
return;
|
|
112
|
-
let roleName = "记者";
|
|
113
|
-
if (message?.role == "user") {
|
|
114
|
-
roleName = userName;
|
|
115
|
-
}
|
|
116
|
-
let content = getMessageContentText(message?.content);
|
|
117
|
-
messageRecord += `${roleName}:\n${content}\n`;
|
|
118
|
-
});
|
|
119
|
-
this.relationName = "朋友";
|
|
120
|
-
if (personName == userName) {
|
|
121
|
-
this.relationName = "本人";
|
|
122
|
-
}
|
|
123
|
-
let summaryPrompt = await agentPrompt.getFormatTpl(this.promptTpl, {
|
|
124
|
-
personName: this.person?.get("name"),
|
|
125
|
-
userName: userName,
|
|
126
|
-
relationName: this.relationName,
|
|
127
|
-
messageRecord: messageRecord,
|
|
128
|
-
createdAt: this.chatSession?.createdAt,
|
|
129
|
-
});
|
|
130
|
-
// console.log(summaryPrompt)
|
|
131
|
-
// console.log(story.toJSON())
|
|
132
|
-
// 生成总结文档
|
|
133
|
-
let completion = new FmodeChatCompletion([{
|
|
134
|
-
role: "user",
|
|
135
|
-
content: summaryPrompt
|
|
136
|
-
}]);
|
|
137
|
-
completion.model = "fmode-4.0-cn-256k";
|
|
138
|
-
let comp$ = completion.sendCompletion({ isDirect: true }).pipe(finalize(() => {
|
|
139
|
-
})).subscribe(async (message) => {
|
|
140
|
-
this.summaryContent = message.content;
|
|
141
|
-
if (message?.complete) {
|
|
142
|
-
let content = message?.content || "";
|
|
143
|
-
let contentJson = agentPrompt.extractAndParseJson(content);
|
|
144
|
-
// console.log(message.content);
|
|
145
|
-
story.set("title", contentJson?.title);
|
|
146
|
-
story.set("desc", contentJson?.desc);
|
|
147
|
-
story.set("keywords", contentJson?.keywords);
|
|
148
|
-
story.set("content", contentJson?.content || "");
|
|
149
|
-
delete contentJson.content;
|
|
150
|
-
story.set("contentJson", contentJson);
|
|
151
|
-
story = await story.save();
|
|
152
|
-
this.story = story;
|
|
153
|
-
let personPointer = this.person?.toPointer() || (this.chatSession.get("person")?.toPointer && this.chatSession.get("person")?.toPointer()) || recorder?.toPointer();
|
|
154
|
-
this.chatSession?.set("title", contentJson?.title);
|
|
155
|
-
this.chatSession?.set("story", story.toPointer());
|
|
156
|
-
if (personPointer) {
|
|
157
|
-
console.log(personPointer);
|
|
158
|
-
this.chatSession?.set("person", personPointer);
|
|
159
|
-
}
|
|
160
|
-
this.chatSession = await this.chatSession?.save();
|
|
161
|
-
this.isCreating = false;
|
|
162
|
-
this.onCanDismiss && this.onCanDismiss(true);
|
|
163
|
-
this.onBreakPointSet && this.onBreakPointSet(0.75);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
confirm() {
|
|
169
|
-
this.modalCtrl.dismiss(null, "confirm");
|
|
170
|
-
if (window.location.pathname?.indexOf("chat/session") > -1) {
|
|
171
|
-
this.navCtrl.back();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
cancel() {
|
|
175
|
-
this.modalCtrl.dismiss(null, "cancel");
|
|
176
|
-
if (window.location.pathname?.indexOf("chat/session") > -1) {
|
|
177
|
-
this.navCtrl.back();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalChatStoryComponent, deps: [{ token: i1.AlertController }, { token: i1.ModalController }, { token: i2.PersonService }, { token: i1.NavController }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ModalChatStoryComponent, isStandalone: true, selector: "app-modal-chat-story", inputs: { title: "title", subtitle: "subtitle", desc: "desc", promptTpl: "promptTpl", type: "type", isCreating: "isCreating", story: "story" }, ngImport: i0, template: "<ion-header *ngIf=\"story?.id&&story?.get('contentJson')\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"cancel()\">\u8FD4\u56DE</ion-button>\r\n </ion-buttons>\r\n <ion-title>{{title}}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"confirm()\" [strong]=\"true\">\u786E\u8BA4</ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content class=\"ion-padding\">\r\n\r\n <!-- \u63D0\u793A\uFF1A\u603B\u7ED3\u5BF9\u8BDD -->\r\n <ion-list *ngIf=\"!(story || chatSession?.get('story'))?.get('contentJson') && !isCreating\">\r\n <ion-item>\r\n <ion-icon color=\"success\" name=\"alert-circle-outline\"></ion-icon>\r\n <ion-label>{{subtitle}}</ion-label>\r\n </ion-item>\r\n <ion-item>\r\n <ion-label>{{desc}}</ion-label>\r\n </ion-item>\r\n <div style=\"display:flex;justify-content: end;\">\r\n <ion-button color=\"light\" slot=\"end\" (click)=\"cancel()\">\u53D6\u6D88</ion-button>\r\n <ion-button style=\"margin-left:20px;\" (click)=\"createStory()\" color=\"success\" slot=\"end\">\u786E\u8BA4</ion-button>\r\n </div>\r\n </ion-list>\r\n\r\n\r\n <!-- \u52A0\u8F7D\uFF1A\u603B\u7ED3\u8FC7\u7A0B -->\r\n <div class=\"page\" *ngIf=\"isCreating\">\r\n <ion-spinner name=\"crescent\" color=\"primary\" style=\"width:80px;height:80px;\"></ion-spinner>\r\n <ion-label color=\"primary\">AI\u6B63\u5728\u5206\u6790\u4F1A\u8BDD\u5185\u5BB9...</ion-label>\r\n <ion-label color=\"primary\">{{(summaryContent?.length || 0)*1.5}} tokens</ion-label>\r\n \r\n </div>\r\n\r\n <!-- \u7ED3\u679C\uFF1A\u603B\u7ED3\u540E\u6210\u679C -->\r\n\r\n <ion-list *ngIf=\"(story || chatSession?.get('story'))?.get('contentJson')\">\r\n @if(type==\"diary\"){\r\n <comp-diary-story [story]=\"story\" [person]=\"person\"></comp-diary-story>\r\n }\r\n @if(type=='chat'){\r\n <ion-item-group *ngIf=\"person?.id\">\r\n <ion-item>\r\n <ion-label style=\"text-align:center;\">\u8BDD\u9898\u4EBA\u7269</ion-label>\r\n </ion-item>\r\n \r\n <fm-comp-person-item [person]=\"person\"></fm-comp-person-item>\r\n </ion-item-group>\r\n\r\n <ion-item-group>\r\n <ion-item>\r\n <ion-label style=\"text-align:center;\">\u91C7\u8BBF\u6458\u8981</ion-label>\r\n </ion-item>\r\n </ion-item-group>\r\n\r\n <ion-item>\r\n <ion-label>\u91C7\u8BBF\u65E5\u671F</ion-label>\r\n {{(story?.get(\"recordDate\") || now) | date:\"yy/MM/dd HH:mm\"}}\r\n </ion-item>\r\n <ion-item>\r\n <ion-label>\u88AB\u91C7\u8BBF\u4EBA</ion-label>\r\n {{story?.get(\"recorder\")?.get(\"name\")}} <ion-chip color=\"warning\" *ngIf=\"relationName\">{{relationName}}</ion-chip>\r\n </ion-item>\r\n <comp-chat-story-json [story]=\"story\"></comp-chat-story-json>\r\n }\r\n <!-- <ion-item>\r\n <fm-markdown-preview class=\"content\" *ngIf=\"story?.get('content')\" [content]=\"story?.get('content')\"></fm-markdown-preview>\r\n </ion-item> -->\r\n </ion-list>\r\n</ion-content>\r\n\r\n", styles: [".page{display:flex;justify-content:center;align-items:center;flex-direction:column}.content{filter:invert(1)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemGroup, selector: "ion-item-group" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: CompPersonItemComponent, selector: "fm-comp-person-item", inputs: ["person"] }, { kind: "ngmodule", type: MarkdownPreviewModule }, { kind: "component", type: CompDiaryStoryComponent, selector: "comp-diary-story", inputs: ["story", "person", "showHeader", "readOnly"] }, { kind: "component", type: CompChatStoryJsonComponent, selector: "comp-chat-story-json", inputs: ["story", "person", "showHeader"] }] }); }
|
|
182
|
-
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalChatStoryComponent, decorators: [{
|
|
184
|
-
type: Component,
|
|
185
|
-
args: [{ selector: 'app-modal-chat-story', standalone: true, imports: [
|
|
186
|
-
CommonModule, FormsModule, ReactiveFormsModule,
|
|
187
|
-
IonHeader, IonTitle,
|
|
188
|
-
IonToolbar,
|
|
189
|
-
IonButtons,
|
|
190
|
-
IonModal,
|
|
191
|
-
IonContent,
|
|
192
|
-
IonLabel,
|
|
193
|
-
IonAvatar,
|
|
194
|
-
IonImg,
|
|
195
|
-
IonButton,
|
|
196
|
-
IonIcon,
|
|
197
|
-
IonList,
|
|
198
|
-
IonItem,
|
|
199
|
-
IonItemGroup,
|
|
200
|
-
IonItemDivider,
|
|
201
|
-
IonTextarea,
|
|
202
|
-
IonSpinner,
|
|
203
|
-
IonChip,
|
|
204
|
-
CompPersonItemComponent,
|
|
205
|
-
MarkdownPreviewModule,
|
|
206
|
-
CompDiaryStoryComponent,
|
|
207
|
-
CompChatStoryJsonComponent,
|
|
208
|
-
], template: "<ion-header *ngIf=\"story?.id&&story?.get('contentJson')\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"cancel()\">\u8FD4\u56DE</ion-button>\r\n </ion-buttons>\r\n <ion-title>{{title}}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"confirm()\" [strong]=\"true\">\u786E\u8BA4</ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content class=\"ion-padding\">\r\n\r\n <!-- \u63D0\u793A\uFF1A\u603B\u7ED3\u5BF9\u8BDD -->\r\n <ion-list *ngIf=\"!(story || chatSession?.get('story'))?.get('contentJson') && !isCreating\">\r\n <ion-item>\r\n <ion-icon color=\"success\" name=\"alert-circle-outline\"></ion-icon>\r\n <ion-label>{{subtitle}}</ion-label>\r\n </ion-item>\r\n <ion-item>\r\n <ion-label>{{desc}}</ion-label>\r\n </ion-item>\r\n <div style=\"display:flex;justify-content: end;\">\r\n <ion-button color=\"light\" slot=\"end\" (click)=\"cancel()\">\u53D6\u6D88</ion-button>\r\n <ion-button style=\"margin-left:20px;\" (click)=\"createStory()\" color=\"success\" slot=\"end\">\u786E\u8BA4</ion-button>\r\n </div>\r\n </ion-list>\r\n\r\n\r\n <!-- \u52A0\u8F7D\uFF1A\u603B\u7ED3\u8FC7\u7A0B -->\r\n <div class=\"page\" *ngIf=\"isCreating\">\r\n <ion-spinner name=\"crescent\" color=\"primary\" style=\"width:80px;height:80px;\"></ion-spinner>\r\n <ion-label color=\"primary\">AI\u6B63\u5728\u5206\u6790\u4F1A\u8BDD\u5185\u5BB9...</ion-label>\r\n <ion-label color=\"primary\">{{(summaryContent?.length || 0)*1.5}} tokens</ion-label>\r\n \r\n </div>\r\n\r\n <!-- \u7ED3\u679C\uFF1A\u603B\u7ED3\u540E\u6210\u679C -->\r\n\r\n <ion-list *ngIf=\"(story || chatSession?.get('story'))?.get('contentJson')\">\r\n @if(type==\"diary\"){\r\n <comp-diary-story [story]=\"story\" [person]=\"person\"></comp-diary-story>\r\n }\r\n @if(type=='chat'){\r\n <ion-item-group *ngIf=\"person?.id\">\r\n <ion-item>\r\n <ion-label style=\"text-align:center;\">\u8BDD\u9898\u4EBA\u7269</ion-label>\r\n </ion-item>\r\n \r\n <fm-comp-person-item [person]=\"person\"></fm-comp-person-item>\r\n </ion-item-group>\r\n\r\n <ion-item-group>\r\n <ion-item>\r\n <ion-label style=\"text-align:center;\">\u91C7\u8BBF\u6458\u8981</ion-label>\r\n </ion-item>\r\n </ion-item-group>\r\n\r\n <ion-item>\r\n <ion-label>\u91C7\u8BBF\u65E5\u671F</ion-label>\r\n {{(story?.get(\"recordDate\") || now) | date:\"yy/MM/dd HH:mm\"}}\r\n </ion-item>\r\n <ion-item>\r\n <ion-label>\u88AB\u91C7\u8BBF\u4EBA</ion-label>\r\n {{story?.get(\"recorder\")?.get(\"name\")}} <ion-chip color=\"warning\" *ngIf=\"relationName\">{{relationName}}</ion-chip>\r\n </ion-item>\r\n <comp-chat-story-json [story]=\"story\"></comp-chat-story-json>\r\n }\r\n <!-- <ion-item>\r\n <fm-markdown-preview class=\"content\" *ngIf=\"story?.get('content')\" [content]=\"story?.get('content')\"></fm-markdown-preview>\r\n </ion-item> -->\r\n </ion-list>\r\n</ion-content>\r\n\r\n", styles: [".page{display:flex;justify-content:center;align-items:center;flex-direction:column}.content{filter:invert(1)!important}\n"] }]
|
|
209
|
-
}], ctorParameters: () => [{ type: i1.AlertController }, { type: i1.ModalController }, { type: i2.PersonService }, { type: i1.NavController }, { type: i3.ActivatedRoute }], propDecorators: { title: [{
|
|
210
|
-
type: Input
|
|
211
|
-
}], subtitle: [{
|
|
212
|
-
type: Input
|
|
213
|
-
}], desc: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], promptTpl: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], type: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], isCreating: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], story: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}] } });
|
|
224
|
-
export async function openChatStoryModal(modalCtrl, chatSession, options) {
|
|
225
|
-
let story = chatSession?.get("story");
|
|
226
|
-
let initialBreakpoint = 0.4;
|
|
227
|
-
if (story?.id && story?.get("contentJson")) {
|
|
228
|
-
initialBreakpoint = 0.75;
|
|
229
|
-
}
|
|
230
|
-
let props = { chatSession: chatSession, story: story, onBreakPointSet: (point) => {
|
|
231
|
-
modal.setCurrentBreakpoint(point);
|
|
232
|
-
}, onCanDismiss: (can) => {
|
|
233
|
-
modal.canDismiss = can;
|
|
234
|
-
} };
|
|
235
|
-
props.type = options?.type || "chat";
|
|
236
|
-
props.title = options?.title || "采访总结";
|
|
237
|
-
props.subtitle = options?.subtitle || "任务: 总结分析本次对话";
|
|
238
|
-
props.desc = options?.desc || "总结后的对话信息,将进入人物知识库,可被检索和选择。但不可继续聊天!您是否确认总结本次对话内容?";
|
|
239
|
-
props.promptTpl = options?.promptTpl || PromptTplSessionStoryCode;
|
|
240
|
-
let modal = await modalCtrl.create({
|
|
241
|
-
component: ModalChatStoryComponent,
|
|
242
|
-
componentProps: props,
|
|
243
|
-
breakpoints: [0.3, 0.5, 0.75, 1],
|
|
244
|
-
initialBreakpoint: initialBreakpoint,
|
|
245
|
-
});
|
|
246
|
-
modal.present();
|
|
247
|
-
let { data, role } = await modal.onWillDismiss();
|
|
248
|
-
if (role == "confirm") {
|
|
249
|
-
return data;
|
|
250
|
-
}
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY2hhdC1zdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2Mvc3RvcnkvbW9kYWwtY2hhdC1zdG9yeS9tb2RhbC1jaGF0LXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvYWlnYy9zdG9yeS9tb2RhbC1jaGF0LXN0b3J5L21vZGFsLWNoYXQtc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDalMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FB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U0FBUyxFQUFDLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgSW9uQXZhdGFyLCBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNoaXAsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uSWNvbiwgSW9uSW1nLCBJb25JdGVtLCBJb25JdGVtRGl2aWRlciwgSW9uSXRlbUdyb3VwLCBJb25MYWJlbCwgSW9uTGlzdCwgSW9uTW9kYWwsIElvblNwaW5uZXIsIElvblRleHRhcmVhLCBJb25UaXRsZSwgSW9uVG9vbGJhciwgTW9kYWxDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmVcIlxyXG5pbXBvcnQgeyBBZ2VudFByb21wdCwgRm1vZGVDaGF0Q29tcGxldGlvbiwgZ2V0TWVzc2FnZUNvbnRlbnRUZXh0LCBNYXJrZG93blByZXZpZXdNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9haWdjJztcclxuaW1wb3J0IFBhcnNlIGZyb20gXCJwYXJzZVwiO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQZXJzb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcGVyc29uJztcclxuaW1wb3J0IHtDb21wUGVyc29uSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL3BlcnNvblwiO1xyXG5pbXBvcnQge0NvbXBEaWFyeVN0b3J5Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wLWRpYXJ5LXN0b3J5L2NvbXAtZGlhcnktc3RvcnkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Q29tcENoYXRTdG9yeUpzb25Db21wb25lbnR9IGZyb20gXCIuL2NvbXAtY2hhdC1zdG9yeS1qc29uL2NvbXAtY2hhdC1zdG9yeS1qc29uLmNvbXBvbmVudFwiO1xyXG5cclxuXHJcbmNvbnN0IGFnZW50UHJvbXB0ID0gbmV3IEFnZW50UHJvbXB0KCk7XHJcbmNvbnN0IFByb21wdFRwbFNlc3Npb25TdG9yeUNvZGUgPSBcInN0b3J5LWNoYXQtc2Vzc2lvbi10cGxcIlxyXG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcclxuaW1wb3J0IHsgYWxlcnRDaXJjbGVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xyXG5pbXBvcnQgeyBvcGVuUGVyc29uU2VsZWN0TW9kYWwgfSBmcm9tICcuLi8uLi8uLi9wZXJzb24nO1xyXG5hZGRJY29ucyh7YWxlcnRDaXJjbGVPdXRsaW5lfSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbW9kYWwtY2hhdC1zdG9yeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWNoYXQtc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWNoYXQtc3RvcnkuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6W1xyXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSxSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSW9uSGVhZGVyLElvblRpdGxlLFxyXG4gICAgSW9uVG9vbGJhcixcclxuICAgIElvbkJ1dHRvbnMsXHJcbiAgICBJb25Nb2RhbCxcclxuICAgIElvbkNvbnRlbnQsXHJcbiAgICBJb25MYWJlbCxcclxuICAgIElvbkF2YXRhcixcclxuICAgIElvbkltZyxcclxuICAgIElvbkJ1dHRvbixcclxuICAgIElvbkljb24sXHJcbiAgICBJb25MaXN0LFxyXG4gICAgSW9uSXRlbSxcclxuICAgIElvbkl0ZW1Hcm91cCxcclxuICAgIElvbkl0ZW1EaXZpZGVyLFxyXG4gICAgSW9uVGV4dGFyZWEsXHJcbiAgICBJb25TcGlubmVyLFxyXG4gICAgSW9uQ2hpcCxcclxuICAgIENvbXBQZXJzb25JdGVtQ29tcG9uZW50LFxyXG4gICAgTWFya2Rvd25QcmV2aWV3TW9kdWxlLFxyXG4gICAgQ29tcERpYXJ5U3RvcnlDb21wb25lbnQsXHJcbiAgICBDb21wQ2hhdFN0b3J5SnNvbkNvbXBvbmVudCxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RhbENoYXRTdG9yeUNvbXBvbmVudCAgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIHRpdGxlOnN0cmluZyA9IFwiXCJcclxuICAgIEBJbnB1dCgpIHN1YnRpdGxlOnN0cmluZyA9IFwiXCJcclxuICAgIEBJbnB1dCgpIGRlc2M6c3RyaW5nID0gXCJcIlxyXG4gICAgQElucHV0KCkgcHJvbXB0VHBsOnN0cmluZyA9IFByb21wdFRwbFNlc3Npb25TdG9yeUNvZGVcclxuICAgIEBJbnB1dCgpIHR5cGU6c3RyaW5nID0gXCJjaGF0XCJcclxuICAgIG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBjaGF0U2Vzc2lvbjpQYXJzZS5PYmplY3R8YW55fHVuZGVmaW5lZDtcclxuICAgIEBJbnB1dCgpIGlzQ3JlYXRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgU3RvcnkgPSBQYXJzZS5PYmplY3QuZXh0ZW5kKFwiU3RvcnlcIilcclxuICAgIEBJbnB1dCgpIHN0b3J5OlBhcnNlLk9iamVjdHx1bmRlZmluZWQ7XHJcblxyXG4gICAgb25CcmVha1BvaW50U2V0OkZ1bmN0aW9ufHVuZGVmaW5lZDtcclxuICAgIG9uQ2FuRGlzbWlzczpGdW5jdGlvbnx1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgYWxlcnRDdHJsOkFsZXJ0Q29udHJvbGxlcixcclxuICAgICAgcHJpdmF0ZSBtb2RhbEN0cmw6TW9kYWxDb250cm9sbGVyLFxyXG4gICAgICBwcml2YXRlIHBlcnNvblNlcnY6UGVyc29uU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBuYXZDdHJsOk5hdkNvbnRyb2xsZXIsXHJcbiAgICAgIHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUsXHJcbiAgICBcclxuICAgICkgeyBcclxuXHJcblxyXG4gICAgfVxyXG4gICAgcmVsYXRpb25OYW1lID0gXCJcIjtcclxuXHJcbiAgICBkZWZhdWx0QXZhdGFyID0gJy9hc3NldHMvaW1nL2ljb24vYXZhdGFyLnN2ZydcclxuICAgIHBlcnNvbjpQYXJzZS5PYmplY3R8dW5kZWZpbmVkXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgdGhpcy5sb2FkUGVyc29uKCk7XHJcbiAgICAgIGlmKHRoaXMuc3Rvcnk/LmlkKXtcclxuICAgICAgICB0aGlzLm9uQnJlYWtQb2ludFNldCYmdGhpcy5vbkJyZWFrUG9pbnRTZXQoMC43NSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgbG9hZFBlcnNvbigpe1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaGF0U2Vzc2lvbj8uaWQgfHwgdGhpcy5jaGF0U2Vzc2lvbj8ub2JqZWN0SWRcclxuICAgICAgdGhpcy5jaGF0U2Vzc2lvbiA9IGF3YWl0IHRoaXMucGVyc29uU2Vydi5sb2FkT2JqZWN0QnlJZChcIkNoYXRTZXNzaW9uXCIsY2lkLFtcInBlcnNvblwiLFwidXNlclwiLCdyZWNvcmRlcicsJ3N0b3J5J10pXHJcbiAgICAgIHRoaXMuc3RvcnkgPSB0aGlzLmNoYXRTZXNzaW9uLmdldChcInN0b3J5XCIpO1xyXG4gICAgICBpZighdGhpcy5wZXJzb24/LmlkKXtcclxuICAgICAgICBsZXQgcGlkc3RyID0gKCh3aW5kb3cubG9jYXRpb24uc2VhcmNoIGFzIGFueSk/LnJlcGxhY2VBbGwoXCI/XCIsXCJcIikpLnNwbGl0KFwiJlwiKS5maW5kKGl0ZW09Pml0ZW0uaW5kZXhPZihcInBpZD1cIik+LTEpXHJcbiAgICAgICAgbGV0IHBpZCA9IHBpZHN0cj8uc3BsaXQoXCI9XCIpPy5bMV1cclxuICAgICAgICBcclxuICAgICAgICBpZihwaWQpe1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocGlkKVxyXG4gICAgICAgICAgbGV0IHF1ZXJ5ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiUGVyc29uXCIpO1xyXG4gICAgICAgICAgdGhpcy5wZXJzb24gPSBhd2FpdCBxdWVyeS5nZXQocGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMucGVyc29uPy5pZCl7XHJcbiAgICAgICAgdGhpcy5wZXJzb24gPSB0aGlzLnN0b3J5Py5nZXQoXCJwZXJzb25cIikgfHwgdGhpcy5zdG9yeT8uZ2V0KFwiY2hhdFNlc3Npb25cIik/LmdldChcInBlcnNvblwiKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKCh0aGlzLnBlcnNvbiBhcyBhbnkpPy5fX3R5cGU9PVwiUG9pbnRlclwiKXtcclxuICAgICAgICB0aGlzLnBlcnNvbiA9IGF3YWl0IHRoaXMucGVyc29uU2Vydi5sb2FkUGVyc29uQnlJZCgodGhpcy5wZXJzb24gYXMgYW55KT8ub2JqZWN0SWQpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxhdGlvbk5hbWUgPSBcIuaci+WPi1wiXHJcbiAgICAgIGxldCB1c2VyTmFtZSA9IHRoaXMuY2hhdFNlc3Npb24/LmdldChcInVzZXJcIik/LmdldChcInJlYWxuYW1lXCIpO1xyXG4gICAgICBsZXQgcGVyc29uTmFtZSA9IHRoaXMucGVyc29uPy5nZXQoXCJuYW1lXCIpXHJcbiAgICAgIGlmKHBlcnNvbk5hbWU9PXVzZXJOYW1lKXtcclxuICAgICAgICB0aGlzLnJlbGF0aW9uTmFtZSA9IFwi5pys5Lq6XCJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIFxyXG5cclxuICAgIHN1bW1hcnlDb250ZW50OmFueSA9IFwiXCI7XHJcbiAgICBhc3luYyBjcmVhdGVTdG9yeSgpe1xyXG4gICAgICBsZXQgcGVyc29uID0gdGhpcy5jaGF0U2Vzc2lvbj8uZ2V0KFwicGVyc29uXCIpIHx8IHRoaXMucGVyc29uXHJcbiAgICAgIGlmKCFwZXJzb24/LmlkKXtcclxuICAgICAgICBwZXJzb24gPSBhd2FpdCBvcGVuUGVyc29uU2VsZWN0TW9kYWwodGhpcy5tb2RhbEN0cmwpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2hhdFNlc3Npb24/LnRvSlNPTigpKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wZXJzb24/LnRvSlNPTigpKTtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2hhdFNlc3Npb24/LmlkIHx8IHRoaXMuY2hhdFNlc3Npb24/Lm9iamVjdElkXHJcbiAgICAgIHRoaXMuY2hhdFNlc3Npb24gPSBhd2FpdCB0aGlzLnBlcnNvblNlcnYubG9hZE9iamVjdEJ5SWQoXCJDaGF0U2Vzc2lvblwiLGNpZCxbXCJwZXJzb25cIixcInVzZXJcIiwncmVjb3JkZXInXSlcclxuICAgICAgaWYoIXRoaXMuY2hhdFNlc3Npb24/LmlkKXtcclxuICAgICAgICBsZXQgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q3RybC5jcmVhdGUoe1xyXG4gICAgICAgICAgaGVhZGVyOlwi5b2T5YmN5Lya6K+d5pyq5byA5aeLXCIsXHJcbiAgICAgICAgICBtZXNzYWdlOlwi6K+36IGK5LiA5Lya5YS/5YaN5oC757uT5ZOm77yBXCJcclxuICAgICAgICB9KVxyXG4gICAgICAgIGFsZXJ0LnByZXNlbnQoKTtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzQ3JlYXRpbmcgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLm9uQ2FuRGlzbWlzcyYmdGhpcy5vbkNhbkRpc21pc3MoZmFsc2UpIC8vIOaaguaXtuemgeeUqO+8jOWIm+W7uuaXtu+8jOWFgeiuuOWFs+mXrVxyXG4gICAgICBsZXQgc3RvcnkgPSB0aGlzLnN0b3J5IHx8IG5ldyB0aGlzLlN0b3J5KCk7XHJcbiAgICAgIGlmKHRoaXMucGVyc29uKXtcclxuICAgICAgICBzdG9yeS5zZXQoXCJwZXJzb25cIix0aGlzLnBlcnNvbj8udG9Qb2ludGVyKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0b3J5LnNldChcInR5cGVcIix0aGlzLnR5cGUpO1xyXG4gICAgICBzdG9yeS5zZXQoXCJ1c2VyXCIsUGFyc2UuVXNlci5jdXJyZW50KCkpO1xyXG4gICAgICBsZXQgcmVjb3JkZXIgPSBhd2FpdCB0aGlzLnBlcnNvblNlcnYubG9hZFNlbGZQZXJzb24oKTtcclxuICAgICAgc3Rvcnkuc2V0KFwiY2hhdFNlc3Npb25cIix0aGlzLmNoYXRTZXNzaW9uPy50b1BvaW50ZXIoKSk7XHJcbiAgICAgIHN0b3J5LnNldChcInJlY29yZGVyXCIscmVjb3JkZXIpO1xyXG4gICAgICBzdG9yeS5zZXQoXCJyZWNvcmREYXRlXCIsdGhpcy5jaGF0U2Vzc2lvbj8uY3JlYXRlZEF0KTtcclxuICAgICAgLy8g5qC55o2u5raI5oGv5YiX6KGo77yM55Sf5oiQ6YeH6K6/5oC757uTXHJcbiAgICAgIGxldCBtZXNzYWdlTGlzdCA9IHRoaXMuY2hhdFNlc3Npb24uZ2V0KFwibWVzc2FnZUxpc3RcIilcclxuICAgICAgbGV0IG1lc3NhZ2VSZWNvcmQgPSBgYFxyXG4gICAgICBsZXQgcGVyc29uTmFtZSA9IHRoaXMucGVyc29uPy5nZXQoXCJuYW1lXCIpO1xyXG4gICAgICBsZXQgdXNlck5hbWUgPSB0aGlzLmNoYXRTZXNzaW9uPy5nZXQoXCJ1c2VyXCIpPy5nZXQoXCJyZWFsbmFtZVwiKTtcclxuICAgICAgbWVzc2FnZUxpc3QuZm9yRWFjaChtZXNzYWdlPT57XHJcbiAgICAgICAgaWYobWVzc2FnZT8ucm9sZT09XCJzeXN0ZW1cIikgcmV0dXJuO1xyXG4gICAgICAgIGxldCByb2xlTmFtZSA9IFwi6K6w6ICFXCJcclxuICAgICAgICBpZihtZXNzYWdlPy5yb2xlPT1cInVzZXJcIil7XHJcbiAgICAgICAgICByb2xlTmFtZSA9IHVzZXJOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgY29udGVudCA9IGdldE1lc3NhZ2VDb250ZW50VGV4dChtZXNzYWdlPy5jb250ZW50KVxyXG4gICAgICAgIG1lc3NhZ2VSZWNvcmQgKz0gYCR7cm9sZU5hbWV9OlxcbiR7Y29udGVudH1cXG5gXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnJlbGF0aW9uTmFtZSA9IFwi5pyL5Y+LXCJcclxuICAgICAgaWYocGVyc29uTmFtZT09dXNlck5hbWUpe1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25OYW1lID0gXCLmnKzkurpcIlxyXG4gICAgICB9XHJcbiAgICAgIGxldCBzdW1tYXJ5UHJvbXB0ID0gYXdhaXQgYWdlbnRQcm9tcHQuZ2V0Rm9ybWF0VHBsKHRoaXMucHJvbXB0VHBsLHtcclxuICAgICAgICBwZXJzb25OYW1lOnRoaXMucGVyc29uPy5nZXQoXCJuYW1lXCIpLFxyXG4gICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLFxyXG4gICAgICAgIHJlbGF0aW9uTmFtZTp0aGlzLnJlbGF0aW9uTmFtZSxcclxuICAgICAgICBtZXNzYWdlUmVjb3JkOm1lc3NhZ2VSZWNvcmQsXHJcbiAgICAgICAgY3JlYXRlZEF0OnRoaXMuY2hhdFNlc3Npb24/LmNyZWF0ZWRBdCxcclxuICAgICAgfSlcclxuICAgICAgLy8gY29uc29sZS5sb2coc3VtbWFyeVByb21wdClcclxuICAgICAgLy8gY29uc29sZS5sb2coc3RvcnkudG9KU09OKCkpXHJcbiAgICAgIC8vIOeUn+aIkOaAu+e7k+aWh+aho1xyXG4gICAgICBsZXQgY29tcGxldGlvbiA9IG5ldyBGbW9kZUNoYXRDb21wbGV0aW9uKFt7XHJcbiAgICAgICAgcm9sZTpcInVzZXJcIixcclxuICAgICAgICBjb250ZW50OnN1bW1hcnlQcm9tcHRcclxuICAgICAgfV0pXHJcbiAgICAgIGNvbXBsZXRpb24ubW9kZWwgPSBcImZtb2RlLTQuMC1jbi0yNTZrXCJcclxuICAgICAgbGV0IGNvbXAkID0gY29tcGxldGlvbi5zZW5kQ29tcGxldGlvbih7aXNEaXJlY3Q6dHJ1ZX0pLnBpcGUoZmluYWxpemUoKCk9PntcclxuICAgICAgICB9KSkuc3Vic2NyaWJlKGFzeW5jIG1lc3NhZ2U9PntcclxuICAgICAgICAgIHRoaXMuc3VtbWFyeUNvbnRlbnQgPSBtZXNzYWdlLmNvbnRlbnQ7XHJcbiAgICAgICAgaWYobWVzc2FnZT8uY29tcGxldGUpe1xyXG4gICAgICAgICAgbGV0IGNvbnRlbnQ6YW55ID0gbWVzc2FnZT8uY29udGVudHx8XCJcIlxyXG4gICAgICAgICAgbGV0IGNvbnRlbnRKc29uID0gYWdlbnRQcm9tcHQuZXh0cmFjdEFuZFBhcnNlSnNvbihjb250ZW50KTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKG1lc3NhZ2UuY29udGVudCk7XHJcbiAgICAgICAgICBzdG9yeS5zZXQoXCJ0aXRsZVwiLGNvbnRlbnRKc29uPy50aXRsZSk7XHJcbiAgICAgICAgICBzdG9yeS5zZXQoXCJkZXNjXCIsY29udGVudEpzb24/LmRlc2MpO1xyXG4gICAgICAgICAgc3Rvcnkuc2V0KFwia2V5d29yZHNcIixjb250ZW50SnNvbj8ua2V5d29yZHMpO1xyXG4gICAgICAgICAgc3Rvcnkuc2V0KFwiY29udGVudFwiLGNvbnRlbnRKc29uPy5jb250ZW50fHxcIlwiKTtcclxuICAgICAgICAgIGRlbGV0ZSBjb250ZW50SnNvbi5jb250ZW50XHJcbiAgICAgICAgICBzdG9yeS5zZXQoXCJjb250ZW50SnNvblwiLGNvbnRlbnRKc29uKTtcclxuICAgICAgICAgIHN0b3J5ID0gYXdhaXQgc3Rvcnkuc2F2ZSgpO1xyXG4gICAgICAgICAgdGhpcy5zdG9yeSA9IHN0b3J5O1xyXG5cclxuICAgICAgICAgIGxldCBwZXJzb25Qb2ludGVyID0gdGhpcy5wZXJzb24/LnRvUG9pbnRlcigpIHx8ICh0aGlzLmNoYXRTZXNzaW9uLmdldChcInBlcnNvblwiKT8udG9Qb2ludGVyJiZ0aGlzLmNoYXRTZXNzaW9uLmdldChcInBlcnNvblwiKT8udG9Qb2ludGVyKCkpIHx8IHJlY29yZGVyPy50b1BvaW50ZXIoKSA7XHJcbiAgICAgICAgICB0aGlzLmNoYXRTZXNzaW9uPy5zZXQoXCJ0aXRsZVwiLGNvbnRlbnRKc29uPy50aXRsZSk7XHJcbiAgICAgICAgICB0aGlzLmNoYXRTZXNzaW9uPy5zZXQoXCJzdG9yeVwiLHN0b3J5LnRvUG9pbnRlcigpKTtcclxuICAgICAgICAgIGlmKHBlcnNvblBvaW50ZXIpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhwZXJzb25Qb2ludGVyKVxyXG4gICAgICAgICAgICB0aGlzLmNoYXRTZXNzaW9uPy5zZXQoXCJwZXJzb25cIixwZXJzb25Qb2ludGVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hhdFNlc3Npb24gPSBhd2FpdCB0aGlzLmNoYXRTZXNzaW9uPy5zYXZlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzQ3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25DYW5EaXNtaXNzJiZ0aGlzLm9uQ2FuRGlzbWlzcyh0cnVlKVxyXG4gICAgICAgICAgdGhpcy5vbkJyZWFrUG9pbnRTZXQmJnRoaXMub25CcmVha1BvaW50U2V0KDAuNzUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25maXJtKCl7XHJcbiAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MobnVsbCxcImNvbmZpcm1cIilcclxuICAgICAgaWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lPy5pbmRleE9mKFwiY2hhdC9zZXNzaW9uXCIpPi0xKXtcclxuICAgICAgICB0aGlzLm5hdkN0cmwuYmFjaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYW5jZWwoKXtcclxuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhudWxsLFwiY2FuY2VsXCIpXHJcbiAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZT8uaW5kZXhPZihcImNoYXQvc2Vzc2lvblwiKT4tMSl7XHJcbiAgICAgICAgdGhpcy5uYXZDdHJsLmJhY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbkNoYXRTdG9yeU1vZGFsKG1vZGFsQ3RybDpNb2RhbENvbnRyb2xsZXIsY2hhdFNlc3Npb246UGFyc2UuT2JqZWN0LG9wdGlvbnM/OntcclxuICB0eXBlOnN0cmluZ1xyXG4gIHRpdGxlOnN0cmluZ1xyXG4gIHN1YnRpdGxlOnN0cmluZ1xyXG4gIGRlc2M6c3RyaW5nXHJcbiAgcHJvbXB0VHBsOnN0cmluZ1xyXG59KXtcclxuICBsZXQgc3RvcnkgPSBjaGF0U2Vzc2lvbj8uZ2V0KFwic3RvcnlcIilcclxuICBsZXQgIGluaXRpYWxCcmVha3BvaW50ID0gMC40O1xyXG4gIGlmKHN0b3J5Py5pZCYmc3Rvcnk/LmdldChcImNvbnRlbnRKc29uXCIpKXtcclxuICAgIGluaXRpYWxCcmVha3BvaW50ID0gMC43NTtcclxuICB9XHJcbiAgbGV0IHByb3BzOmFueSA9IHtjaGF0U2Vzc2lvbjpjaGF0U2Vzc2lvbixzdG9yeTpzdG9yeSxvbkJyZWFrUG9pbnRTZXQ6KHBvaW50KT0+e1xyXG4gICAgbW9kYWwuc2V0Q3VycmVudEJyZWFrcG9pbnQocG9pbnQpXHJcbiAgfSxvbkNhbkRpc21pc3M6KGNhbjpib29sZWFuKT0+e1xyXG4gICAgbW9kYWwuY2FuRGlzbWlzcyA9IGNhblxyXG4gIH19XHJcbiAgcHJvcHMudHlwZSA9IG9wdGlvbnM/LnR5cGUgfHwgXCJjaGF0XCJcclxuICBwcm9wcy50aXRsZSA9IG9wdGlvbnM/LnRpdGxlIHx8IFwi6YeH6K6/5oC757uTXCJcclxuICBwcm9wcy5zdWJ0aXRsZSA9IG9wdGlvbnM/LnN1YnRpdGxlIHx8IFwi5Lu75YqhOiDmgLvnu5PliIbmnpDmnKzmrKHlr7nor51cIlxyXG4gIHByb3BzLmRlc2MgPSBvcHRpb25zPy5kZXNjIHx8IFwi5oC757uT5ZCO55qE5a+56K+d5L+h5oGv77yM5bCG6L+b5YWl5Lq654mp55+l6K+G5bqT77yM5Y+v6KKr5qOA57Si5ZKM6YCJ5oup44CC5L2G5LiN5Y+v57un57ut6IGK5aSp77yB5oKo5piv5ZCm56Gu6K6k5oC757uT5pys5qyh5a+56K+d5YaF5a6577yfXCJcclxuICBwcm9wcy5wcm9tcHRUcGwgPSBvcHRpb25zPy5wcm9tcHRUcGwgfHwgUHJvbXB0VHBsU2Vzc2lvblN0b3J5Q29kZSBcclxuICBsZXQgbW9kYWwgPSBhd2FpdCBtb2RhbEN0cmwuY3JlYXRlKHtcclxuICAgIGNvbXBvbmVudDpNb2RhbENoYXRTdG9yeUNvbXBvbmVudCxcclxuICAgIGNvbXBvbmVudFByb3BzOnByb3BzLFxyXG4gICAgYnJlYWtwb2ludHM6WzAuMywwLjUsMC43NSwxXSxcclxuICAgIGluaXRpYWxCcmVha3BvaW50OmluaXRpYWxCcmVha3BvaW50LFxyXG4gIH0pXHJcbiAgbW9kYWwucHJlc2VudCgpXHJcbiBcclxuICBsZXQge2RhdGEscm9sZX0gPSBhd2FpdCBtb2RhbC5vbldpbGxEaXNtaXNzKCk7XHJcbiAgaWYocm9sZT09XCJjb25maXJtXCIpe1xyXG4gICAgcmV0dXJuIGRhdGFcclxuICB9XHJcbiAgcmV0dXJuIG51bGxcclxufSIsIjxpb24taGVhZGVyICpuZ0lmPVwic3Rvcnk/LmlkJiZzdG9yeT8uZ2V0KCdjb250ZW50SnNvbicpXCI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj7ov5Tlm548L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPGlvbi10aXRsZT57e3RpdGxlfX08L2lvbi10aXRsZT5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjb25maXJtKClcIiBbc3Ryb25nXT1cInRydWVcIj7noa7orqQ8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gIDwvaW9uLXRvb2xiYXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XHJcblxyXG4gIDwhLS0g5o+Q56S677ya5oC757uT5a+56K+dIC0tPlxyXG4gIDxpb24tbGlzdCAqbmdJZj1cIiEoc3RvcnkgfHwgY2hhdFNlc3Npb24/LmdldCgnc3RvcnknKSk/LmdldCgnY29udGVudEpzb24nKSAmJiAhaXNDcmVhdGluZ1wiPlxyXG4gICAgPGlvbi1pdGVtPlxyXG4gICAgICA8aW9uLWljb24gY29sb3I9XCJzdWNjZXNzXCIgbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgPGlvbi1sYWJlbD57e3N1YnRpdGxlfX08L2lvbi1sYWJlbD5cclxuICAgIDwvaW9uLWl0ZW0+XHJcbiAgICA8aW9uLWl0ZW0+XHJcbiAgICAgIDxpb24tbGFiZWw+e3tkZXNjfX08L2lvbi1sYWJlbD5cclxuICAgIDwvaW9uLWl0ZW0+XHJcbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDogZW5kO1wiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCIgc2xvdD1cImVuZFwiIChjbGljayk9XCJjYW5jZWwoKVwiPuWPlua2iDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPGlvbi1idXR0b24gc3R5bGU9XCJtYXJnaW4tbGVmdDoyMHB4O1wiIChjbGljayk9XCJjcmVhdGVTdG9yeSgpXCIgY29sb3I9XCJzdWNjZXNzXCIgc2xvdD1cImVuZFwiPuehruiupDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvaW9uLWxpc3Q+XHJcblxyXG5cclxuICA8IS0tIOWKoOi9ve+8muaAu+e7k+i/h+eoiyAtLT5cclxuICA8ZGl2IGNsYXNzPVwicGFnZVwiICpuZ0lmPVwiaXNDcmVhdGluZ1wiPlxyXG4gICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwid2lkdGg6ODBweDtoZWlnaHQ6ODBweDtcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5BSeato+WcqOWIhuaekOS8muivneWGheWuuS4uLjwvaW9uLWxhYmVsPlxyXG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj57eyhzdW1tYXJ5Q29udGVudD8ubGVuZ3RoIHx8IDApKjEuNX19IHRva2VuczwvaW9uLWxhYmVsPlxyXG4gICAgXHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0g57uT5p6c77ya5oC757uT5ZCO5oiQ5p6cIC0tPlxyXG5cclxuICA8aW9uLWxpc3QgKm5nSWY9XCIoc3RvcnkgfHwgY2hhdFNlc3Npb24/LmdldCgnc3RvcnknKSk/LmdldCgnY29udGVudEpzb24nKVwiPlxyXG4gICAgQGlmKHR5cGU9PVwiZGlhcnlcIil7XHJcbiAgICAgIDxjb21wLWRpYXJ5LXN0b3J5IFtzdG9yeV09XCJzdG9yeVwiIFtwZXJzb25dPVwicGVyc29uXCI+PC9jb21wLWRpYXJ5LXN0b3J5PlxyXG4gICAgfVxyXG4gICAgQGlmKHR5cGU9PSdjaGF0Jyl7XHJcbiAgICAgIDxpb24taXRlbS1ncm91cCAqbmdJZj1cInBlcnNvbj8uaWRcIj5cclxuICAgICAgICA8aW9uLWl0ZW0+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWwgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj7or53popjkurrniak8L2lvbi1sYWJlbD5cclxuICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxmbS1jb21wLXBlcnNvbi1pdGVtIFtwZXJzb25dPVwicGVyc29uXCI+PC9mbS1jb21wLXBlcnNvbi1pdGVtPlxyXG4gICAgICA8L2lvbi1pdGVtLWdyb3VwPlxyXG5cclxuICAgICAgPGlvbi1pdGVtLWdyb3VwPlxyXG4gICAgICAgIDxpb24taXRlbT5cclxuICAgICAgICAgIDxpb24tbGFiZWwgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj7ph4forr/mkZjopoE8L2lvbi1sYWJlbD5cclxuICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICA8L2lvbi1pdGVtLWdyb3VwPlxyXG5cclxuICAgICAgPGlvbi1pdGVtPlxyXG4gICAgICAgICAgPGlvbi1sYWJlbD7ph4forr/ml6XmnJ88L2lvbi1sYWJlbD5cclxuICAgICAgICAgIHt7KHN0b3J5Py5nZXQoXCJyZWNvcmREYXRlXCIpIHx8IG5vdykgfCBkYXRlOlwieXkvTU0vZGQgSEg6bW1cIn19XHJcbiAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgIDxpb24taXRlbT5cclxuICAgICAgICAgIDxpb24tbGFiZWw+6KKr6YeH6K6/5Lq6PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICB7e3N0b3J5Py5nZXQoXCJyZWNvcmRlclwiKT8uZ2V0KFwibmFtZVwiKX19IDxpb24tY2hpcCBjb2xvcj1cIndhcm5pbmdcIiAqbmdJZj1cInJlbGF0aW9uTmFtZVwiPnt7cmVsYXRpb25OYW1lfX08L2lvbi1jaGlwPlxyXG4gICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICA8Y29tcC1jaGF0LXN0b3J5LWpzb24gW3N0b3J5XT1cInN0b3J5XCI+PC9jb21wLWNoYXQtc3RvcnktanNvbj5cclxuICAgIH1cclxuICAgIDwhLS0gPGlvbi1pdGVtPlxyXG4gICAgICA8Zm0tbWFya2Rvd24tcHJldmlldyBjbGFzcz1cImNvbnRlbnRcIiAqbmdJZj1cInN0b3J5Py5nZXQoJ2NvbnRlbnQnKVwiIFtjb250ZW50XT1cInN0b3J5Py5nZXQoJ2NvbnRlbnQnKVwiPjwvZm0tbWFya2Rvd24tcHJldmlldz5cclxuICAgIDwvaW9uLWl0ZW0+IC0tPlxyXG4gIDwvaW9uLWxpc3Q+XHJcbjwvaW9uLWNvbnRlbnQ+XHJcblxyXG4iXX0=
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,Input}from"@angular/core";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{ActivatedRoute}from"@angular/router";import{AlertController,IonAvatar,IonButton,IonButtons,IonChip,IonContent,IonHeader,IonIcon,IonImg,IonItem,IonItemDivider,IonItemGroup,IonLabel,IonList,IonModal,IonSpinner,IonTextarea,IonTitle,IonToolbar,ModalController,NavController}from"@ionic/angular/standalone";import{AgentPrompt,FmodeChatCompletion,getMessageContentText,MarkdownPreviewModule}from"../../../aigc";import{FmodeParse,FmodeObject}from"@fmode/parse";import{finalize}from"rxjs";import{PersonService}from"../../../person";import{CompPersonItemComponent}from"../../../person";import{CompDiaryStoryComponent}from"./comp-diary-story/comp-diary-story.component";import{CompChatStoryJsonComponent}from"./comp-chat-story-json/comp-chat-story-json.component";import{addIcons}from"ionicons";import{alertCircleOutline}from"ionicons/icons";import{openPersonSelectModal}from"../../../person";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular/standalone";import*as i2 from"../../../person";import*as i3 from"@angular/router";import*as i4 from"@angular/common";const Parse=FmodeParse.with("nova"),agentPrompt=new AgentPrompt,PromptTplSessionStoryCode="story-chat-session-tpl";addIcons({alertCircleOutline:alertCircleOutline});export class ModalChatStoryComponent{constructor(t,n,o,e,i){this.alertCtrl=t,this.modalCtrl=n,this.personServ=o,this.navCtrl=e,this.route=i,this.title="",this.subtitle="",this.desc="",this.promptTpl="story-chat-session-tpl",this.type="chat",this.now=new Date,this.isCreating=!1,this.Story=Parse.Object.extend("Story"),this.relationName="",this.defaultAvatar="/assets/img/icon/avatar.svg",this.summaryContent=""}ngOnInit(){this.loadPerson(),this.story?.id&&this.onBreakPointSet&&this.onBreakPointSet(.75)}async loadPerson(){let t=this.chatSession?.id||this.chatSession?.objectId;if(this.chatSession=await this.personServ.loadObjectById("ChatSession",t,["person","user","recorder","story"]),this.story=this.chatSession.get("story"),!this.person?.id){let t=(window.location.search?.replaceAll("?","")).split("&").find((t=>t.indexOf("pid=")>-1)),n=t?.split("=")?.[1];if(n){let t=new Parse.Query("Person");this.person=await t.get(n)}}this.person?.id||(this.person=this.story?.get("person")||this.story?.get("chatSession")?.get("person")),"Pointer"==this.person?.__type&&(this.person=await this.personServ.loadPersonById(this.person?.objectId)),this.relationName="朋友";let n=this.chatSession?.get("user")?.get("realname"),o=this.person?.get("name");o==n&&(this.relationName="本人")}async createStory(){let t=this.chatSession?.get("person")||this.person;t?.id||(t=await openPersonSelectModal(this.modalCtrl));let n=this.chatSession?.id||this.chatSession?.objectId;if(this.chatSession=await this.personServ.loadObjectById("ChatSession",n,["person","user","recorder"]),!this.chatSession?.id){return void(await this.alertCtrl.create({header:"当前会话未开始",message:"请聊一会儿再总结哦!"})).present()}this.isCreating=!0;let o=this.story||new this.Story;this.person&&o.set("person",this.person?.toPointer()),o.set("type",this.type),o.set("user",Parse.User.current());let e=await this.personServ.loadSelfPerson();o.set("chatSession",this.chatSession?.toPointer()),o.set("recorder",e),o.set("recordDate",this.chatSession?.createdAt);let i=this.chatSession.get("messageList"),s="",r=this.person?.get("name"),a=this.chatSession?.get("user")?.get("realname");i.forEach((t=>{if("system"==t?.role)return;let n="记者";"user"==t?.role&&(n=a);let o=getMessageContentText(t?.content);s+=`${n}:\n${o}\n`})),this.relationName="朋友",r==a&&(this.relationName="本人");let l=await agentPrompt.getFormatTpl(this.promptTpl,{personName:this.person?.get("name"),userName:a,relationName:this.relationName,messageRecord:s,createdAt:this.chatSession?.createdAt}),c=new FmodeChatCompletion([{role:"user",content:l}]);c.model="fmode-4.0-cn-256k";c.sendCompletion({isDirect:!0}).pipe(finalize((()=>{}))).subscribe((async t=>{if(this.summaryContent=t.content,t?.complete){let n=t?.content||"",i=agentPrompt.extractAndParseJson(n);o.set("title",i?.title),o.set("desc",i?.desc),o.set("keywords",i?.keywords),o.set("content",i?.content||""),delete i.content,o.set("contentJson",i),o=await o.save(),this.story=o;let s=this.person?.toPointer()||this.chatSession.get("person")?.toPointer&&this.chatSession.get("person")?.toPointer()||e?.toPointer();this.chatSession?.set("title",i?.title),this.chatSession?.set("story",o.toPointer()),s&&(console.log(s),this.chatSession?.set("person",s)),this.chatSession=await(this.chatSession?.save()),this.isCreating=!1,this.onCanDismiss&&this.onCanDismiss(!0),this.onBreakPointSet&&this.onBreakPointSet(.75)}}))}confirm(){this.modalCtrl.dismiss(null,"confirm"),window.location.pathname?.indexOf("chat/session")>-1&&this.navCtrl.back()}cancel(){this.modalCtrl.dismiss(null,"cancel"),window.location.pathname?.indexOf("chat/session")>-1&&this.navCtrl.back()}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ModalChatStoryComponent,deps:[{token:i1.AlertController},{token:i1.ModalController},{token:i2.PersonService},{token:i1.NavController},{token:i3.ActivatedRoute}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"17.3.12",type:ModalChatStoryComponent,isStandalone:!0,selector:"app-modal-chat-story",inputs:{title:"title",subtitle:"subtitle",desc:"desc",promptTpl:"promptTpl",type:"type",isCreating:"isCreating",story:"story"},ngImport:i0,template:'<ion-header *ngIf="story?.id&&story?.get(\'contentJson\')">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="cancel()">返回</ion-button>\n </ion-buttons>\n <ion-title>{{title}}</ion-title>\n <ion-buttons slot="end">\n <ion-button (click)="confirm()" [strong]="true">确认</ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class="ion-padding">\n\n \x3c!-- 提示:总结对话 --\x3e\n <ion-list *ngIf="!(story || chatSession?.get(\'story\'))?.get(\'contentJson\') && !isCreating">\n <ion-item>\n <ion-icon color="success" name="alert-circle-outline"></ion-icon>\n <ion-label>{{subtitle}}</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>{{desc}}</ion-label>\n </ion-item>\n <div style="display:flex;justify-content: end;">\n <ion-button color="light" slot="end" (click)="cancel()">取消</ion-button>\n <ion-button style="margin-left:20px;" (click)="createStory()" color="success" slot="end">确认</ion-button>\n </div>\n </ion-list>\n\n\n \x3c!-- 加载:总结过程 --\x3e\n <div class="page" *ngIf="isCreating">\n <ion-spinner name="crescent" color="primary" style="width:80px;height:80px;"></ion-spinner>\n <ion-label color="primary">AI正在分析会话内容...</ion-label>\n <ion-label color="primary">{{(summaryContent?.length || 0)*1.5}} tokens</ion-label>\n \n </div>\n\n \x3c!-- 结果:总结后成果 --\x3e\n\n <ion-list *ngIf="(story || chatSession?.get(\'story\'))?.get(\'contentJson\')">\n @if(type=="diary"){\n <comp-diary-story [story]="story" [person]="person"></comp-diary-story>\n }\n @if(type==\'chat\'){\n <ion-item-group *ngIf="person?.id">\n <ion-item>\n <ion-label style="text-align:center;">话题人物</ion-label>\n </ion-item>\n \n <fm-comp-person-item [person]="person"></fm-comp-person-item>\n </ion-item-group>\n\n <ion-item-group>\n <ion-item>\n <ion-label style="text-align:center;">采访摘要</ion-label>\n </ion-item>\n </ion-item-group>\n\n <ion-item>\n <ion-label>采访日期</ion-label>\n {{(story?.get("recordDate") || now) | date:"yy/MM/dd HH:mm"}}\n </ion-item>\n <ion-item>\n <ion-label>被采访人</ion-label>\n {{story?.get("recorder")?.get("name")}} <ion-chip color="warning" *ngIf="relationName">{{relationName}}</ion-chip>\n </ion-item>\n <comp-chat-story-json [story]="story"></comp-chat-story-json>\n }\n \x3c!-- <ion-item>\n <fm-markdown-preview class="content" *ngIf="story?.get(\'content\')" [content]="story?.get(\'content\')"></fm-markdown-preview>\n </ion-item> --\x3e\n </ion-list>\n</ion-content>\n\n',styles:[".page{display:flex;justify-content:center;align-items:center;flex-direction:column}.content{filter:invert(1)!important}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i4.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:i4.DatePipe,name:"date"},{kind:"ngmodule",type:FormsModule},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"component",type:IonHeader,selector:"ion-header",inputs:["collapse","mode","translucent"]},{kind:"component",type:IonTitle,selector:"ion-title",inputs:["color","size"]},{kind:"component",type:IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]},{kind:"component",type:IonButtons,selector:"ion-buttons",inputs:["collapse"]},{kind:"component",type:IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:IonItemGroup,selector:"ion-item-group"},{kind:"component",type:IonSpinner,selector:"ion-spinner",inputs:["color","duration","name","paused"]},{kind:"component",type:IonChip,selector:"ion-chip",inputs:["color","disabled","mode","outline"]},{kind:"component",type:CompPersonItemComponent,selector:"fm-comp-person-item",inputs:["person"]},{kind:"ngmodule",type:MarkdownPreviewModule},{kind:"component",type:CompDiaryStoryComponent,selector:"comp-diary-story",inputs:["story","person","showHeader","readOnly"]},{kind:"component",type:CompChatStoryJsonComponent,selector:"comp-chat-story-json",inputs:["story","person","showHeader"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ModalChatStoryComponent,decorators:[{type:Component,args:[{selector:"app-modal-chat-story",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,IonHeader,IonTitle,IonToolbar,IonButtons,IonModal,IonContent,IonLabel,IonAvatar,IonImg,IonButton,IonIcon,IonList,IonItem,IonItemGroup,IonItemDivider,IonTextarea,IonSpinner,IonChip,CompPersonItemComponent,MarkdownPreviewModule,CompDiaryStoryComponent,CompChatStoryJsonComponent],template:'<ion-header *ngIf="story?.id&&story?.get(\'contentJson\')">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="cancel()">返回</ion-button>\n </ion-buttons>\n <ion-title>{{title}}</ion-title>\n <ion-buttons slot="end">\n <ion-button (click)="confirm()" [strong]="true">确认</ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class="ion-padding">\n\n \x3c!-- 提示:总结对话 --\x3e\n <ion-list *ngIf="!(story || chatSession?.get(\'story\'))?.get(\'contentJson\') && !isCreating">\n <ion-item>\n <ion-icon color="success" name="alert-circle-outline"></ion-icon>\n <ion-label>{{subtitle}}</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>{{desc}}</ion-label>\n </ion-item>\n <div style="display:flex;justify-content: end;">\n <ion-button color="light" slot="end" (click)="cancel()">取消</ion-button>\n <ion-button style="margin-left:20px;" (click)="createStory()" color="success" slot="end">确认</ion-button>\n </div>\n </ion-list>\n\n\n \x3c!-- 加载:总结过程 --\x3e\n <div class="page" *ngIf="isCreating">\n <ion-spinner name="crescent" color="primary" style="width:80px;height:80px;"></ion-spinner>\n <ion-label color="primary">AI正在分析会话内容...</ion-label>\n <ion-label color="primary">{{(summaryContent?.length || 0)*1.5}} tokens</ion-label>\n \n </div>\n\n \x3c!-- 结果:总结后成果 --\x3e\n\n <ion-list *ngIf="(story || chatSession?.get(\'story\'))?.get(\'contentJson\')">\n @if(type=="diary"){\n <comp-diary-story [story]="story" [person]="person"></comp-diary-story>\n }\n @if(type==\'chat\'){\n <ion-item-group *ngIf="person?.id">\n <ion-item>\n <ion-label style="text-align:center;">话题人物</ion-label>\n </ion-item>\n \n <fm-comp-person-item [person]="person"></fm-comp-person-item>\n </ion-item-group>\n\n <ion-item-group>\n <ion-item>\n <ion-label style="text-align:center;">采访摘要</ion-label>\n </ion-item>\n </ion-item-group>\n\n <ion-item>\n <ion-label>采访日期</ion-label>\n {{(story?.get("recordDate") || now) | date:"yy/MM/dd HH:mm"}}\n </ion-item>\n <ion-item>\n <ion-label>被采访人</ion-label>\n {{story?.get("recorder")?.get("name")}} <ion-chip color="warning" *ngIf="relationName">{{relationName}}</ion-chip>\n </ion-item>\n <comp-chat-story-json [story]="story"></comp-chat-story-json>\n }\n \x3c!-- <ion-item>\n <fm-markdown-preview class="content" *ngIf="story?.get(\'content\')" [content]="story?.get(\'content\')"></fm-markdown-preview>\n </ion-item> --\x3e\n </ion-list>\n</ion-content>\n\n',styles:[".page{display:flex;justify-content:center;align-items:center;flex-direction:column}.content{filter:invert(1)!important}\n"]}]}],ctorParameters:()=>[{type:i1.AlertController},{type:i1.ModalController},{type:i2.PersonService},{type:i1.NavController},{type:i3.ActivatedRoute}],propDecorators:{title:[{type:Input}],subtitle:[{type:Input}],desc:[{type:Input}],promptTpl:[{type:Input}],type:[{type:Input}],isCreating:[{type:Input}],story:[{type:Input}]}});export async function openChatStoryModal(t,n,o){let e=n?.get("story"),i=.4;e?.id&&e?.get("contentJson")&&(i=.75);let s={chatSession:n,story:e,onBreakPointSet:t=>{r.setCurrentBreakpoint(t)},onCanDismiss:t=>{r.canDismiss=t}};s.type=o?.type||"chat",s.title=o?.title||"采访总结",s.subtitle=o?.subtitle||"任务: 总结分析本次对话",s.desc=o?.desc||"总结后的对话信息,将进入人物知识库,可被检索和选择。但不可继续聊天!您是否确认总结本次对话内容?",s.promptTpl=o?.promptTpl||"story-chat-session-tpl";let r=await t.create({component:ModalChatStoryComponent,componentProps:s,breakpoints:[.3,.5,.75,1],initialBreakpoint:i});r.present();let{data:a,role:l}=await r.onWillDismiss();return"confirm"==l?a:null}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3N0b3J5L21vZGFsLWNoYXQtc3RvcnkvbW9kYWwtY2hhdC1zdG9yeS5jb21wb25lbnQubWpz`
|
|
10
|
+
|
|
@@ -1,35 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
console.log("newStory");
|
|
12
|
-
let currentStory;
|
|
13
|
-
if (this.storyList?.[0] && !this.storyList?.[0]?.story?.id) {
|
|
14
|
-
currentStory = this.storyList?.[0];
|
|
15
|
-
console.log("新故事已创建");
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
let story = new AgentStory(undefined, options?.person, options?.book);
|
|
19
|
-
console.log("new:", story);
|
|
20
|
-
if (story) {
|
|
21
|
-
this.storyList?.unshift(story);
|
|
22
|
-
currentStory = story;
|
|
23
|
-
}
|
|
24
|
-
return story;
|
|
25
|
-
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
27
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoryService, providedIn: 'root' }); }
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoryService, decorators: [{
|
|
30
|
-
type: Injectable,
|
|
31
|
-
args: [{
|
|
32
|
-
providedIn: 'root'
|
|
33
|
-
}]
|
|
34
|
-
}], ctorParameters: () => [] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvYWlnYy9zdG9yeS9zdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLFlBQVk7SUFFdkI7UUFFQSxPQUFPO1FBQ1AsY0FBUyxHQUFpQyxFQUFFLENBQUE7SUFINUIsQ0FBQztJQU1qQixPQUFPO0lBQ1AsUUFBUSxDQUFDLE9BQWtEO1FBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDdkIsSUFBSSxZQUF1QixDQUFBO1FBQzNCLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztZQUN6RCxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDckIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFDekIsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUNSLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzlCLFlBQVksR0FBRyxLQUFLLENBQUE7UUFDdEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQzsrR0F6QlUsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFnZW50U3RvcnkgfSBmcm9tICcuLi8uLi9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3J5U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8vIOafpeivouaVheS6i1xyXG4gIHN0b3J5TGlzdDpBcnJheTxBZ2VudFN0b3J5PiB8IHVuZGVmaW5lZCA9IFtdXHJcblxyXG5cclxuICAvLyDmlrDlu7rmlYXkuotcclxuICBuZXdTdG9yeShvcHRpb25zPzp7Ym9vaz86UGFyc2UuT2JqZWN0LHBlcnNvbj86UGFyc2UuT2JqZWN0fSl7XHJcbiAgICBjb25zb2xlLmxvZyhcIm5ld1N0b3J5XCIpXHJcbiAgICBsZXQgY3VycmVudFN0b3J5OkFnZW50U3RvcnlcclxuICAgIGlmKHRoaXMuc3RvcnlMaXN0Py5bMF0gJiYgIXRoaXMuc3RvcnlMaXN0Py5bMF0/LnN0b3J5Py5pZCl7XHJcbiAgICAgIGN1cnJlbnRTdG9yeSA9IHRoaXMuc3RvcnlMaXN0Py5bMF1cclxuICAgICAgY29uc29sZS5sb2coXCLmlrDmlYXkuovlt7LliJvlu7pcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN0b3J5ID0gbmV3IEFnZW50U3RvcnkodW5kZWZpbmVkLG9wdGlvbnM/LnBlcnNvbixvcHRpb25zPy5ib29rKTtcclxuICAgIGNvbnNvbGUubG9nKFwibmV3OlwiLHN0b3J5KVxyXG4gICAgaWYoc3Rvcnkpe1xyXG4gICAgICB0aGlzLnN0b3J5TGlzdD8udW5zaGlmdChzdG9yeSlcclxuICAgICAgY3VycmVudFN0b3J5ID0gc3RvcnlcclxuICAgIH1cclxuICAgIHJldHVybiBzdG9yeVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/story/story.service.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Injectable}from"@angular/core";import{AgentStory}from"../../core";import*as i0 from"@angular/core";export class StoryService{constructor(){this.storyList=[]}newStory(t){let r;if(console.log("newStory"),this.storyList?.[0]&&!this.storyList?.[0]?.story?.id)return r=this.storyList?.[0],void console.log("新故事已创建");let o=new AgentStory(void 0,t?.person,t?.book);return console.log("new:",o),o&&(this.storyList?.unshift(o),r=o),o}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:StoryService,deps:[],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:StoryService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:StoryService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3N0b3J5L3N0b3J5LnNlcnZpY2UubWpz`
|
|
10
|
+
|