@senguoyun/dsh-arkme 0.1.16 → 0.1.22
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/README.md +9 -0
- package/assets/desktop_call/arkme-video-linear.svg +5 -0
- package/assets/desktop_call/bundle.js +104 -5
- package/assets/desktop_call/call-demo-peer.png +0 -0
- package/assets/desktop_call/call-demo-self.png +0 -0
- package/assets/desktop_call/index.html +4 -2
- package/assets/desktop_call/manifest.json +1 -1
- package/assets/windows/arkme-credential-helper.exe +0 -0
- package/assets/windows/manifest.json +9 -0
- package/cordis.patch.yml +2 -0
- package/docs/consumer-plugin-contract.md +3 -1
- package/docs/plugin-release.md +23 -0
- package/lib/client.js +48592 -11863
- package/lib/client.js.map +1 -1
- package/lib/extension-profile-restart-helper.js +1 -1
- package/lib/index.js +776 -462
- package/lib/persistent-extension.js +1 -1
- package/lib/{persistent-runtime-D_hNgTX3.js → persistent-runtime-CNdmWCSF.js} +3754 -596
- package/lib/plugin-updater-helper-Bg28PYR7.js +2 -0
- package/lib/plugin-updater-helper-CEnlAUhI.js +731 -0
- package/lib/plugin-updater-helper.js +5 -2
- package/lib/sdk.js +58 -0
- package/lib/types/arkme-service.d.ts +43 -1
- package/lib/types/arkme-service.d.ts.map +1 -1
- package/lib/types/chat-realtime.d.ts +9 -0
- package/lib/types/chat-realtime.d.ts.map +1 -1
- package/lib/types/client/ArkmeAvatar.d.ts +5 -0
- package/lib/types/client/ArkmeAvatar.d.ts.map +1 -1
- package/lib/types/client/ArkmeCalendarSurface.d.ts +3 -1
- package/lib/types/client/ArkmeCalendarSurface.d.ts.map +1 -1
- package/lib/types/client/ArkmeCallSurface.d.ts +5 -0
- package/lib/types/client/ArkmeCallSurface.d.ts.map +1 -0
- package/lib/types/client/ArkmeChatMemberActions.d.ts +10 -2
- package/lib/types/client/ArkmeChatMemberActions.d.ts.map +1 -1
- package/lib/types/client/ArkmeComposerToolButton.d.ts +6 -0
- package/lib/types/client/ArkmeComposerToolButton.d.ts.map +1 -0
- package/lib/types/client/ArkmeComposerToolIcon.d.ts +3 -0
- package/lib/types/client/ArkmeComposerToolIcon.d.ts.map +1 -0
- package/lib/types/client/ArkmeDshAgentInputMarker.d.ts +10 -0
- package/lib/types/client/ArkmeDshAgentInputMarker.d.ts.map +1 -0
- package/lib/types/client/ArkmeEmojiPicker.d.ts +7 -0
- package/lib/types/client/ArkmeEmojiPicker.d.ts.map +1 -0
- package/lib/types/client/ArkmeFooterDropdown.d.ts.map +1 -1
- package/lib/types/client/ArkmeGroupChatControls.d.ts +1 -0
- package/lib/types/client/ArkmeGroupChatControls.d.ts.map +1 -1
- package/lib/types/client/ArkmeLogin.d.ts +2 -0
- package/lib/types/client/ArkmeLogin.d.ts.map +1 -1
- package/lib/types/client/ArkmeMentionTextarea.d.ts +6 -2
- package/lib/types/client/ArkmeMentionTextarea.d.ts.map +1 -1
- package/lib/types/client/ArkmeOutgoingCallHost.d.ts.map +1 -1
- package/lib/types/client/ArkmePersistentShell.d.ts +4 -3
- package/lib/types/client/ArkmePersistentShell.d.ts.map +1 -1
- package/lib/types/client/ArkmePluginUpdateDialog.d.ts +11 -0
- package/lib/types/client/ArkmePluginUpdateDialog.d.ts.map +1 -0
- package/lib/types/client/ArkmeProductNavigation.d.ts.map +1 -1
- package/lib/types/client/ArkmeRecordingSurface.d.ts.map +1 -1
- package/lib/types/client/ArkmeRichComposerInput.d.ts +27 -0
- package/lib/types/client/ArkmeRichComposerInput.d.ts.map +1 -0
- package/lib/types/client/ArkmeRichContent.d.ts +4 -0
- package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
- package/lib/types/client/ArkmeSearchSurface.d.ts +5 -0
- package/lib/types/client/ArkmeSearchSurface.d.ts.map +1 -1
- package/lib/types/client/ArkmeSettingsSurface.d.ts +17 -10
- package/lib/types/client/ArkmeSettingsSurface.d.ts.map +1 -1
- package/lib/types/client/ArkmeSidebar.d.ts +17 -3
- package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
- package/lib/types/client/ArkmeSourceBreadcrumb.d.ts +1 -1
- package/lib/types/client/ArkmeSourceBreadcrumb.d.ts.map +1 -1
- package/lib/types/client/ArkmeStartupAuthGate.d.ts +6 -2
- package/lib/types/client/ArkmeStartupAuthGate.d.ts.map +1 -1
- package/lib/types/client/ArkmeTopicDirectoryPopover.d.ts.map +1 -1
- package/lib/types/client/ArkmeUpdateSurfaces.d.ts +47 -0
- package/lib/types/client/ArkmeUpdateSurfaces.d.ts.map +1 -0
- package/lib/types/client/ArkmeVirtualWorkspace.d.ts +11 -2
- package/lib/types/client/ArkmeVirtualWorkspace.d.ts.map +1 -1
- package/lib/types/client/ArkmeWorldEmptyNotice.d.ts +7 -0
- package/lib/types/client/ArkmeWorldEmptyNotice.d.ts.map +1 -0
- package/lib/types/client/ArkmeWorldSurface.d.ts +9 -4
- package/lib/types/client/ArkmeWorldSurface.d.ts.map +1 -1
- package/lib/types/client/DeepSeekHarnessSurface.d.ts +9 -2
- package/lib/types/client/DeepSeekHarnessSurface.d.ts.map +1 -1
- package/lib/types/client/api.d.ts +1 -1
- package/lib/types/client/api.d.ts.map +1 -1
- package/lib/types/client/arkme-auth-flow.d.ts +4 -2
- package/lib/types/client/arkme-auth-flow.d.ts.map +1 -1
- package/lib/types/client/arkme-emoji-assets.d.ts +2 -0
- package/lib/types/client/arkme-emoji-assets.d.ts.map +1 -0
- package/lib/types/client/arkme-emoji.d.ts +23 -0
- package/lib/types/client/arkme-emoji.d.ts.map +1 -1
- package/lib/types/client/arkme-login-errors.d.ts +6 -0
- package/lib/types/client/arkme-login-errors.d.ts.map +1 -0
- package/lib/types/client/arkme-login-locales.d.ts +85 -0
- package/lib/types/client/arkme-login-locales.d.ts.map +1 -0
- package/lib/types/client/arkme-theme.d.ts +1 -0
- package/lib/types/client/arkme-theme.d.ts.map +1 -1
- package/lib/types/client/arko-conversation-preview-sync.d.ts +32 -0
- package/lib/types/client/arko-conversation-preview-sync.d.ts.map +1 -0
- package/lib/types/client/auth-store.d.ts +1 -0
- package/lib/types/client/auth-store.d.ts.map +1 -1
- package/lib/types/client/chat-directory-store.d.ts +15 -1
- package/lib/types/client/chat-directory-store.d.ts.map +1 -1
- package/lib/types/client/composer-draft-store.d.ts +14 -0
- package/lib/types/client/composer-draft-store.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +3 -4
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/outgoing-call-bridge.d.ts +3 -0
- package/lib/types/client/outgoing-call-bridge.d.ts.map +1 -1
- package/lib/types/client/outgoing-call-runtime.d.ts +13 -1
- package/lib/types/client/outgoing-call-runtime.d.ts.map +1 -1
- package/lib/types/client/outgoing-call-ui-controller.d.ts +9 -0
- package/lib/types/client/outgoing-call-ui-controller.d.ts.map +1 -1
- package/lib/types/client/plugin-update-store.d.ts.map +1 -1
- package/lib/types/client/realtime-client-events.d.ts +3 -0
- package/lib/types/client/realtime-client-events.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts +20 -0
- package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts +13 -0
- package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts +35 -0
- package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/ContactProfileDetail.d.ts +96 -0
- package/lib/types/client/redesign/contacts/ContactProfileDetail.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/ContactWorldList.d.ts +44 -0
- package/lib/types/client/redesign/contacts/ContactWorldList.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/DirectoryDetailPane.d.ts +13 -0
- package/lib/types/client/redesign/contacts/DirectoryDetailPane.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/SpeakerChoicePanel.d.ts +21 -0
- package/lib/types/client/redesign/contacts/SpeakerChoicePanel.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerAudioList.d.ts +15 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerAudioList.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerDetail.d.ts +27 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerDetail.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerVisuals.d.ts +9 -0
- package/lib/types/client/redesign/contacts/UnmarkedSpeakerVisuals.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/contact-directory-state.d.ts +66 -0
- package/lib/types/client/redesign/contacts/contact-directory-state.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/contacts-tab-store.d.ts +45 -0
- package/lib/types/client/redesign/contacts/contacts-tab-store.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/directory-workspace-controller.d.ts +58 -0
- package/lib/types/client/redesign/contacts/directory-workspace-controller.d.ts.map +1 -0
- package/lib/types/client/redesign/contacts/useSingleAudioPlayback.d.ts +16 -0
- package/lib/types/client/redesign/contacts/useSingleAudioPlayback.d.ts.map +1 -0
- package/lib/types/client/source-list.d.ts +2 -0
- package/lib/types/client/source-list.d.ts.map +1 -1
- package/lib/types/client/ui-controller.d.ts +4 -3
- package/lib/types/client/ui-controller.d.ts.map +1 -1
- package/lib/types/client/update-ui-controller.d.ts +16 -0
- package/lib/types/client/update-ui-controller.d.ts.map +1 -0
- package/lib/types/client/world-voiceprint-expectation-copy.d.ts +1 -6
- package/lib/types/client/world-voiceprint-expectation-copy.d.ts.map +1 -1
- package/lib/types/contact-directory-presentation.d.ts +19 -0
- package/lib/types/contact-directory-presentation.d.ts.map +1 -0
- package/lib/types/dsh-agent-input-source.d.ts +11 -0
- package/lib/types/dsh-agent-input-source.d.ts.map +1 -0
- package/lib/types/dsh-agent-input-sync.d.ts +14 -0
- package/lib/types/dsh-agent-input-sync.d.ts.map +1 -0
- package/lib/types/extensions/bundle-materializer.d.ts.map +1 -1
- package/lib/types/extensions/client-owner.d.ts +9 -0
- package/lib/types/extensions/client-owner.d.ts.map +1 -0
- package/lib/types/extensions/manager.d.ts +17 -1
- package/lib/types/extensions/manager.d.ts.map +1 -1
- package/lib/types/extensions/persistent-bundle.d.ts +9 -0
- package/lib/types/extensions/persistent-bundle.d.ts.map +1 -1
- package/lib/types/extensions/persistent-client-bundle.d.ts +3 -0
- package/lib/types/extensions/persistent-client-bundle.d.ts.map +1 -1
- package/lib/types/extensions/profile-installer.d.ts +1 -0
- package/lib/types/extensions/profile-installer.d.ts.map +1 -1
- package/lib/types/host-api.d.ts.map +1 -1
- package/lib/types/index.d.ts +4 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/keychain-store.d.ts +2 -4
- package/lib/types/keychain-store.d.ts.map +1 -1
- package/lib/types/outgoing-call-assets.d.ts.map +1 -1
- package/lib/types/outgoing-call-broker.d.ts.map +1 -1
- package/lib/types/plugin-update-install-receipt.d.ts +9 -0
- package/lib/types/plugin-update-install-receipt.d.ts.map +1 -0
- package/lib/types/plugin-update-install-state.d.ts +1 -0
- package/lib/types/plugin-update-install-state.d.ts.map +1 -1
- package/lib/types/plugin-update-policy.d.ts +2 -0
- package/lib/types/plugin-update-policy.d.ts.map +1 -0
- package/lib/types/plugin-update.d.ts.map +1 -1
- package/lib/types/plugin-updater-helper-cli.d.ts +2 -0
- package/lib/types/plugin-updater-helper-cli.d.ts.map +1 -0
- package/lib/types/plugin-updater-helper.d.ts +8 -0
- package/lib/types/plugin-updater-helper.d.ts.map +1 -1
- package/lib/types/request-coordinator.d.ts +1 -1
- package/lib/types/request-coordinator.d.ts.map +1 -1
- package/lib/types/sdk/index.d.ts +18 -2
- package/lib/types/sdk/index.d.ts.map +1 -1
- package/lib/types/services/arko-service.d.ts.map +1 -1
- package/lib/types/services/auth-service.d.ts.map +1 -1
- package/lib/types/services/bot-service.d.ts +18 -2
- package/lib/types/services/bot-service.d.ts.map +1 -1
- package/lib/types/services/call-history-service.d.ts +28 -0
- package/lib/types/services/call-history-service.d.ts.map +1 -0
- package/lib/types/services/chat-realtime-service.d.ts +1 -0
- package/lib/types/services/chat-realtime-service.d.ts.map +1 -1
- package/lib/types/services/chat-service.d.ts +14 -1
- package/lib/types/services/chat-service.d.ts.map +1 -1
- package/lib/types/services/contact-directory-service.d.ts +46 -0
- package/lib/types/services/contact-directory-service.d.ts.map +1 -0
- package/lib/types/services/group-service.d.ts.map +1 -1
- package/lib/types/services/media-service.d.ts +13 -0
- package/lib/types/services/media-service.d.ts.map +1 -1
- package/lib/types/services/outgoing-call-service.d.ts.map +1 -1
- package/lib/types/services/profile-service.d.ts +2 -0
- package/lib/types/services/profile-service.d.ts.map +1 -1
- package/lib/types/services/record-service.d.ts +2 -0
- package/lib/types/services/record-service.d.ts.map +1 -1
- package/lib/types/services/search-service.d.ts.map +1 -1
- package/lib/types/services/service.d.ts +6 -0
- package/lib/types/services/service.d.ts.map +1 -1
- package/lib/types/services/source-service.d.ts +16 -0
- package/lib/types/services/source-service.d.ts.map +1 -1
- package/lib/types/services/unmarked-speaker-service.d.ts +56 -0
- package/lib/types/services/unmarked-speaker-service.d.ts.map +1 -0
- package/lib/types/services/world-service.d.ts +18 -2
- package/lib/types/services/world-service.d.ts.map +1 -1
- package/lib/types/tools/business/calls/detail.d.ts +2 -0
- package/lib/types/tools/business/calls/detail.d.ts.map +1 -0
- package/lib/types/tools/business/calls/history.d.ts +2 -0
- package/lib/types/tools/business/calls/history.d.ts.map +1 -0
- package/lib/types/tools/business/calls/index.d.ts +2 -0
- package/lib/types/tools/business/calls/index.d.ts.map +1 -0
- package/lib/types/tools/business/calls/retry-summary.d.ts +2 -0
- package/lib/types/tools/business/calls/retry-summary.d.ts.map +1 -0
- package/lib/types/tools/business/contacts/index.d.ts +2 -1
- package/lib/types/tools/business/contacts/index.d.ts.map +1 -1
- package/lib/types/tools/business/groups/index.d.ts +1 -1
- package/lib/types/tools/business/groups/index.d.ts.map +1 -1
- package/lib/types/tools/business/groups/rename.d.ts +2 -0
- package/lib/types/tools/business/groups/rename.d.ts.map +1 -0
- package/lib/types/tools/business/index.d.ts.map +1 -1
- package/lib/types/tools/business/world/index.d.ts +1 -0
- package/lib/types/tools/business/world/index.d.ts.map +1 -1
- package/lib/types/tools/business/world/open-private-chat.d.ts +2 -0
- package/lib/types/tools/business/world/open-private-chat.d.ts.map +1 -0
- package/lib/types/tools/ports/call-history.d.ts +7 -0
- package/lib/types/tools/ports/call-history.d.ts.map +1 -0
- package/lib/types/tools/ports/contacts.d.ts +4 -1
- package/lib/types/tools/ports/contacts.d.ts.map +1 -1
- package/lib/types/tools/ports/groups.d.ts +2 -1
- package/lib/types/tools/ports/groups.d.ts.map +1 -1
- package/lib/types/tools/ports/index.d.ts +3 -2
- package/lib/types/tools/ports/index.d.ts.map +1 -1
- package/lib/types/tools/ports/world.d.ts +2 -1
- package/lib/types/tools/ports/world.d.ts.map +1 -1
- package/lib/types/tools/prompts/business.d.ts.map +1 -1
- package/lib/types/tools/registry/registrar.d.ts.map +1 -1
- package/lib/types/tools/system/plugin-contract.d.ts.map +1 -1
- package/lib/types/types.d.ts +239 -4
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/windows-credential-helper.d.ts +29 -0
- package/lib/types/windows-credential-helper.d.ts.map +1 -0
- package/lib/types/world-voiceprint-copy.d.ts +18 -0
- package/lib/types/world-voiceprint-copy.d.ts.map +1 -0
- package/package.json +14 -6
- package/lib/plugin-updater-helper-BEYBTOld.js +0 -346
- package/lib/types/client/ArkmeAccountMenu.d.ts +0 -4
- package/lib/types/client/ArkmeAccountMenu.d.ts.map +0 -1
- package/lib/types/client/ArkmeSettingsRow.d.ts +0 -5
- package/lib/types/client/ArkmeSettingsRow.d.ts.map +0 -1
- package/lib/types/client/redesign/ArkmeRootFrame.d.ts +0 -19
- package/lib/types/client/redesign/ArkmeRootFrame.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
# Arkme DSH Plugin
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@senguoyun/dsh-arkme)
|
|
4
|
+
[](https://github.com/arkme-senx/arkme-dsh-plugin/releases)
|
|
5
|
+
|
|
3
6
|
Arkme 的 DeepSeek Harness 集成插件,为 DSH 提供账号、记录、聊天、Bot、社区、通话和市集能力。
|
|
4
7
|
|
|
5
8
|
- npm:[`@senguoyun/dsh-arkme`](https://www.npmjs.com/package/@senguoyun/dsh-arkme)
|
|
6
9
|
- 源码:[`arkme-senx/arkme-dsh-plugin`](https://github.com/arkme-senx/arkme-dsh-plugin)
|
|
7
10
|
|
|
11
|
+
## 版本与发布
|
|
12
|
+
|
|
13
|
+
- 项目首页顶部的 **npm 版本** 徽章显示当前可通过 npm 安装的正式版本。
|
|
14
|
+
- 功能分支只提交功能代码;版本号、更新说明和 GitHub Release 由合并后的发版流程统一处理。
|
|
15
|
+
- 发版负责人通过 GitHub Actions 的“准备插件发版”创建发版 PR;合并后自动发布 npm、创建同版本 Git Tag 和 GitHub Release。详见[插件自动发版](docs/plugin-release.md)。
|
|
16
|
+
|
|
8
17
|
## 功能
|
|
9
18
|
|
|
10
19
|
- 内置搜索页支持快记搜索、搜索历史、纯图片库和已生成 AI 视频快速入口;图片库采用桌面端多列视图并排除普通视频。
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M12.53 20.4201H6.21C3.05 20.4201 2 18.3201 2 16.2101V7.79008C2 4.63008 3.05 3.58008 6.21 3.58008H12.53C15.69 3.58008 16.74 4.63008 16.74 7.79008V16.2101C16.74 19.3701 15.68 20.4201 12.53 20.4201Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M19.52 17.0999L16.74 15.1499V8.83989L19.52 6.88989C20.88 5.93989 22 6.51989 22 8.18989V15.8099C22 17.4799 20.88 18.0599 19.52 17.0999Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M11.5 11C12.3284 11 13 10.3284 13 9.5C13 8.67157 12.3284 8 11.5 8C10.6716 8 10 8.67157 10 9.5C10 10.3284 10.6716 11 11.5 11Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
</svg>
|
|
@@ -45764,6 +45764,14 @@ function summarizeDiagPayload(payload = {}) {
|
|
|
45764
45764
|
function diagLog(label, payload = {}) {
|
|
45765
45765
|
try {
|
|
45766
45766
|
console.log(`[DesktopCallDiag] ${label} ${safeJsonStringify(payload)}`);
|
|
45767
|
+
try {
|
|
45768
|
+
postToWebHostBridge({
|
|
45769
|
+
type: "diag",
|
|
45770
|
+
label,
|
|
45771
|
+
detail: payload
|
|
45772
|
+
});
|
|
45773
|
+
} catch (_) {
|
|
45774
|
+
}
|
|
45767
45775
|
} catch (error) {
|
|
45768
45776
|
console.log(
|
|
45769
45777
|
`[DesktopCallDiag] ${label} ${safeJsonStringify({
|
|
@@ -46334,6 +46342,30 @@ function safeJsonStringify(value) {
|
|
|
46334
46342
|
return "{}";
|
|
46335
46343
|
}
|
|
46336
46344
|
}
|
|
46345
|
+
function resolveWebHostCallRequestId() {
|
|
46346
|
+
try {
|
|
46347
|
+
const parsed = JSON.parse(String(window.name || "{}"));
|
|
46348
|
+
return safeString(parsed?.callRequestId);
|
|
46349
|
+
} catch (_) {
|
|
46350
|
+
return "";
|
|
46351
|
+
}
|
|
46352
|
+
}
|
|
46353
|
+
function postToWebHostBridge(message) {
|
|
46354
|
+
if (!window.parent || window.parent === window) {
|
|
46355
|
+
return false;
|
|
46356
|
+
}
|
|
46357
|
+
const callRequestId = resolveWebHostCallRequestId();
|
|
46358
|
+
if (!callRequestId) {
|
|
46359
|
+
return false;
|
|
46360
|
+
}
|
|
46361
|
+
const payload = typeof message === "string" ? message : safeJsonStringify(message);
|
|
46362
|
+
window.parent.postMessage({
|
|
46363
|
+
channel: "jotmo-desktop-call",
|
|
46364
|
+
callRequestId,
|
|
46365
|
+
message: payload
|
|
46366
|
+
}, window.location.origin);
|
|
46367
|
+
return true;
|
|
46368
|
+
}
|
|
46337
46369
|
function escapeHtml(value) {
|
|
46338
46370
|
return safeString(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
46339
46371
|
}
|
|
@@ -46443,9 +46475,11 @@ function postToFlutter(type, extra = {}) {
|
|
|
46443
46475
|
message: safeString(extra.message)
|
|
46444
46476
|
});
|
|
46445
46477
|
const bridge = resolveFlutterBridge();
|
|
46478
|
+
const postedToWebHost = postToWebHostBridge(payload);
|
|
46446
46479
|
diagLog("post_to_flutter", {
|
|
46447
46480
|
type,
|
|
46448
46481
|
hasBridge: Boolean(bridge),
|
|
46482
|
+
postedToWebHost,
|
|
46449
46483
|
roomId: statePayload.roomId,
|
|
46450
46484
|
callId: statePayload.callId,
|
|
46451
46485
|
mediaType: statePayload.mediaType,
|
|
@@ -46455,12 +46489,52 @@ function postToFlutter(type, extra = {}) {
|
|
|
46455
46489
|
connectionRole: state.connectionRole
|
|
46456
46490
|
});
|
|
46457
46491
|
if (!bridge) {
|
|
46492
|
+
if (postedToWebHost) {
|
|
46493
|
+
return true;
|
|
46494
|
+
}
|
|
46458
46495
|
console.warn("[DesktopCall] flutter bridge unavailable", payload);
|
|
46459
46496
|
return false;
|
|
46460
46497
|
}
|
|
46461
46498
|
bridge.postMessage(payload);
|
|
46462
46499
|
return true;
|
|
46463
46500
|
}
|
|
46501
|
+
function postLocalTerminalToWebHost(type, message) {
|
|
46502
|
+
const peer = getFlutterPeer();
|
|
46503
|
+
const payload = safeJsonStringify({
|
|
46504
|
+
type,
|
|
46505
|
+
roomId: state.activeRoomId,
|
|
46506
|
+
callId: state.activeCallId,
|
|
46507
|
+
mediaType: state.activeMediaType,
|
|
46508
|
+
statusText: safeString(message),
|
|
46509
|
+
phase: CALL_PHASE.ending,
|
|
46510
|
+
hasActiveCall: false,
|
|
46511
|
+
audioEnabled: state.audioEnabled,
|
|
46512
|
+
videoEnabled: state.videoEnabled,
|
|
46513
|
+
speakerEnabled: state.speakerEnabled,
|
|
46514
|
+
elapsedLabel: state.elapsedLabel,
|
|
46515
|
+
caller: {
|
|
46516
|
+
name: state.caller.name,
|
|
46517
|
+
avatar: state.caller.avatar
|
|
46518
|
+
},
|
|
46519
|
+
peer: {
|
|
46520
|
+
name: peer.name,
|
|
46521
|
+
avatar: peer.avatar
|
|
46522
|
+
},
|
|
46523
|
+
userData: state.lastUserData,
|
|
46524
|
+
reason: "local_hangup_hint",
|
|
46525
|
+
message: safeString(message)
|
|
46526
|
+
});
|
|
46527
|
+
const posted = postToWebHostBridge(payload);
|
|
46528
|
+
diagLog("local_terminal_web_host_hint", {
|
|
46529
|
+
type,
|
|
46530
|
+
posted,
|
|
46531
|
+
roomId: state.activeRoomId,
|
|
46532
|
+
callId: state.activeCallId,
|
|
46533
|
+
mediaType: state.activeMediaType,
|
|
46534
|
+
phase: state.phase
|
|
46535
|
+
});
|
|
46536
|
+
return posted;
|
|
46537
|
+
}
|
|
46464
46538
|
function setStatusText(text) {
|
|
46465
46539
|
state.lastStatusText = safeString(text);
|
|
46466
46540
|
}
|
|
@@ -49191,8 +49265,22 @@ function markTerminalEmitted(payload = {}) {
|
|
|
49191
49265
|
state.terminalBridgeKey = resolveCallSessionKey(payload);
|
|
49192
49266
|
}
|
|
49193
49267
|
async function finalizeTerminalState(type, payload = {}, statusText) {
|
|
49268
|
+
diagLog("finalize_terminal_state_start", {
|
|
49269
|
+
type,
|
|
49270
|
+
payload: summarizeDiagPayload(payload),
|
|
49271
|
+
statusText,
|
|
49272
|
+
pendingLocalTerminalAction: state.pendingLocalTerminalAction,
|
|
49273
|
+
terminalBridgeKey: state.terminalBridgeKey,
|
|
49274
|
+
sessionKey: resolveCallSessionKey(payload)
|
|
49275
|
+
});
|
|
49194
49276
|
updateCallIdentity(payload);
|
|
49195
49277
|
if (isTerminalAlreadyEmitted(payload)) {
|
|
49278
|
+
diagLog("finalize_terminal_state_duplicate_skip", {
|
|
49279
|
+
type,
|
|
49280
|
+
payload: summarizeDiagPayload(payload),
|
|
49281
|
+
terminalBridgeKey: state.terminalBridgeKey,
|
|
49282
|
+
sessionKey: resolveCallSessionKey(payload)
|
|
49283
|
+
});
|
|
49196
49284
|
return;
|
|
49197
49285
|
}
|
|
49198
49286
|
markTerminalEmitted(payload);
|
|
@@ -49220,6 +49308,12 @@ async function finalizeTerminalState(type, payload = {}, statusText) {
|
|
|
49220
49308
|
await cleanupActiveMedia();
|
|
49221
49309
|
resetRuntimeState({ preserveBootstrap: true });
|
|
49222
49310
|
render();
|
|
49311
|
+
diagLog("finalize_terminal_state_done", {
|
|
49312
|
+
type,
|
|
49313
|
+
resolvedStatusText,
|
|
49314
|
+
phase: state.phase,
|
|
49315
|
+
terminalBridgeKey: state.terminalBridgeKey
|
|
49316
|
+
});
|
|
49223
49317
|
}
|
|
49224
49318
|
async function attachRemoteView(userId) {
|
|
49225
49319
|
const normalizedUserId = safeString(userId);
|
|
@@ -49696,13 +49790,18 @@ async function hangupCall() {
|
|
|
49696
49790
|
if (!state.engine) {
|
|
49697
49791
|
return;
|
|
49698
49792
|
}
|
|
49793
|
+
const engine = state.engine;
|
|
49699
49794
|
state.pendingLocalTerminalAction = "hangup";
|
|
49700
|
-
|
|
49701
|
-
|
|
49702
|
-
}
|
|
49795
|
+
diagLog("hangup_call_start", captureRuntimeSnapshot({
|
|
49796
|
+
pendingLocalTerminalAction: state.pendingLocalTerminalAction
|
|
49797
|
+
}));
|
|
49798
|
+
postLocalTerminalToWebHost("end", "\u901A\u8BDD\u5DF2\u7ED3\u675F");
|
|
49799
|
+
void engine.hangup().catch(() => {
|
|
49703
49800
|
state.pendingLocalTerminalAction = "";
|
|
49704
|
-
|
|
49705
|
-
}
|
|
49801
|
+
diagLog("hangup_call_engine_failed", captureRuntimeSnapshot());
|
|
49802
|
+
});
|
|
49803
|
+
await finalizeTerminalState("end", {}, "\u901A\u8BDD\u5DF2\u7ED3\u675F");
|
|
49804
|
+
diagLog("hangup_call_done", captureRuntimeSnapshot());
|
|
49706
49805
|
}
|
|
49707
49806
|
async function requestToggleFullscreen() {
|
|
49708
49807
|
state.activeDevicePopover = "";
|
|
Binary file
|
|
Binary file
|
|
@@ -24,10 +24,11 @@
|
|
|
24
24
|
const listeners = [];
|
|
25
25
|
window.JotmoDesktopCallBridge = {
|
|
26
26
|
postMessage(message) {
|
|
27
|
+
const payload = typeof message === "string" ? message : JSON.stringify(message);
|
|
27
28
|
parent.postMessage({
|
|
28
29
|
channel: "jotmo-desktop-call",
|
|
29
30
|
callRequestId: context.callRequestId,
|
|
30
|
-
message,
|
|
31
|
+
message: payload,
|
|
31
32
|
}, location.origin);
|
|
32
33
|
},
|
|
33
34
|
};
|
|
@@ -65,7 +66,8 @@
|
|
|
65
66
|
}
|
|
66
67
|
};
|
|
67
68
|
["process", "global", "module", "require"].forEach(blockGlobal);
|
|
68
|
-
|
|
69
|
+
const bundleUrl = `./bundle.js?callRequestId=${encodeURIComponent(context.callRequestId || "idle")}`;
|
|
70
|
+
import(bundleUrl).catch((error) => {
|
|
69
71
|
window.__JOTMO_DESKTOP_CALL_HOST__.postFlutterMessage(JSON.stringify({
|
|
70
72
|
type: "fatal_error",
|
|
71
73
|
message: error instanceof Error ? error.message : "呼叫界面加载失败",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"callEnginePackage": "@trtc/call-engine-lite-js",
|
|
5
5
|
"callEngineRange": "^3.5.9",
|
|
6
6
|
"upstreamBundleSha256": "6ff59d3eb9ce4d7556ba4054bac0df22ae279a7bccc56ccbf5712b6f475c95ce",
|
|
7
|
-
"bundleSha256": "
|
|
7
|
+
"bundleSha256": "839e0376d8916472d99fe4b0cbcc39b165c3dc96ac00b31b15fb3910bcdf6917",
|
|
8
8
|
"iconSha256": "583d7dbd34069c5b50ca294a071637bbd3beed913cecdb91a202c001004eed45",
|
|
9
9
|
"outgoingOnly": true
|
|
10
10
|
}
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"platform": "win32",
|
|
4
|
+
"arch": "x64",
|
|
5
|
+
"file": "arkme-credential-helper.exe",
|
|
6
|
+
"sha256": "8b598f3f4facb0c785c3fbc29ccddb75a08e90528ba02a55fc6c996442ec4a16",
|
|
7
|
+
"sourceSha256": "7e2267aa232d4fbe785d2ab88bd707ab6edacd88bd454fda7f8017ddfc0335b6",
|
|
8
|
+
"goVersion": "go version go1.25.5 darwin/arm64"
|
|
9
|
+
}
|
package/cordis.patch.yml
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
authBaseUrl: https://api.jotmo.cc
|
|
7
7
|
subjectBaseUrl: https://subject.jotmo.cc
|
|
8
8
|
recordBaseUrl: https://record.jotmo.cc
|
|
9
|
+
dataBaseUrl: https://data.jotmo.cc
|
|
9
10
|
chatBaseUrl: https://chat.jotmo.cc
|
|
10
11
|
botBaseUrl: https://bot.jotmo.cc
|
|
11
12
|
imBaseUrl: https://im.jotmo.cc
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
relatedRecordingsEnabled: true
|
|
26
27
|
geetestCaptchaId: ec81315ab8b0f18a7bfa13602d01e307
|
|
27
28
|
interwovenMomentsEnabled: true
|
|
29
|
+
chatMemberJoinEventsEnabled: true
|
|
28
30
|
allowNonLoopback: false
|
|
29
31
|
allowProduction: true
|
|
30
32
|
updateCheckEnabled: true
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`@senguoyun/dsh-arkme` owns authentication, OS credential-store access, SQLite caching, account isolation, remote synchronization, and retry semantics. A generated Consumer plugin owns only presentation and user interaction.
|
|
4
4
|
|
|
5
|
-
The bundled UI uses only official DSH slots
|
|
5
|
+
The bundled UI uses only official DSH slots. `sidebar`, `conversation`, and `details` compose the resident Arkme product shell; `settings.section` owns the single `arkme-account` section inside native DSH Settings; `shell.overlay` owns lifecycle dialogs. DSH owns Settings chrome, ordering, and scrolling, while `ArkmeSettingsSurface` owns only Arkme account content and actions. Consumers must not depend on private `sidebar.workspaces.virtual` or `main.surface` extensions.
|
|
6
6
|
|
|
7
7
|
## Browser SDK
|
|
8
8
|
|
|
@@ -91,6 +91,8 @@ Plugin update discovery and acknowledgement are lifecycle concerns owned by the
|
|
|
91
91
|
|
|
92
92
|
`capabilities().features.outgoingCall` reports whether the Provider's bundled private-chat outgoing-call flow is installed. Contract v1 does not expose a Browser SDK method for starting or preparing calls: short-lived UserSig, room bootstrap data, raw user IDs, and WebRTC account values stay inside the built-in Host/runtime path. Consumers must not invoke raw `calls.outgoing.*` operations or recreate a credential-bearing call API.
|
|
93
93
|
|
|
94
|
+
`capabilities().features.callHistory === true` advertises Browser-safe call-history access. `callHistory()` returns recent call records with opaque account-scoped `callRef` values, display metadata, result labels, summary status and summary previews. `callDetail(callRef)` accepts only an unchanged `callRef` from the Provider and returns safe metadata, participants, summary and transcript text. `retryCallSummary(callRef)` is a write-like operation and must only run from a current explicit human request to retry or regenerate that call summary. Consumers must never expect or reconstruct raw room IDs, WebRTC credentials, recording URLs, video URLs, signed media URLs or upstream tokens from this contract.
|
|
95
|
+
|
|
94
96
|
`profile()` exposes only UI-safe fields: display name, nickname, avatar reference, Arkme ID, optional one-time Arkme ID change availability, account type, creation time, binding flags, and masked phone/email. Raw phone, raw email, real name, and credentials are intentionally excluded from contract v1. The model-facing `arkme_id_set` tool owns the one-time write workflow; the Browser SDK does not expose a profile mutation method.
|
|
95
97
|
|
|
96
98
|
`readImage(avatarRef)` resolves an opaque image reference returned by `profile()` or `listSources()`. Private chats expose one optional `avatarRef`. Groups expose the preferred additive `groupAvatar` presentation plus legacy `avatarRefs`: `groupAvatar.slots` preserves the server-selected order for up to five members, including safe phone-default or generic fallbacks when a real image is absent, while legacy `avatarRefs` contains only resolvable real images. `memberCount`, `strategy`, and `computedAtMillis` describe the snapshot without exposing member or session identities. The Provider refreshes an authorized public profile image before downloading it and returns bounded PNG/JPEG/WebP/GIF base64 bytes; signed URLs, STS credentials and bearer tokens never enter the browser contract. Consumers must use `imageDataUrl()` (or decode the payload themselves) instead of concatenating OSS URLs or fetching an avatar reference directly.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 插件自动发版
|
|
2
|
+
|
|
3
|
+
日常功能分支不修改 `package.json.version` 或 `arkme.updateNotice`。功能合并到 `master` 后,由发版负责人在 GitHub 的 **Actions → 准备插件发版 → Run workflow** 中选择发版级别并填写一句更新说明。
|
|
4
|
+
|
|
5
|
+
该工作流会自动创建 `release/v<版本号>` 发版 PR,并在其中更新版本号、插件内更新说明和 GitHub Release 链接,随后执行完整测试、类型检查和构建。
|
|
6
|
+
|
|
7
|
+
合并该发版 PR 后,发布工作流会再次验证代码,发布 npm 包、创建 `v<版本号>` Git Tag,并生成 GitHub Release。
|
|
8
|
+
|
|
9
|
+
## 一次性配置
|
|
10
|
+
|
|
11
|
+
在 npm 包 `@senguoyun/dsh-arkme` 的发布设置中创建 GitHub Trusted Publisher,绑定:
|
|
12
|
+
|
|
13
|
+
- GitHub Organization:`arkme-senx`
|
|
14
|
+
- Repository:`arkme-dsh-plugin`
|
|
15
|
+
- Workflow:`publish-plugin-release.yml`
|
|
16
|
+
|
|
17
|
+
Trusted Publisher 配置完成后,GitHub Actions 通过短期身份凭据发布 npm,不需要把 npm Token 保存到 GitHub Secrets。
|
|
18
|
+
|
|
19
|
+
## 版本选择
|
|
20
|
+
|
|
21
|
+
- `patch`:修复和小优化,如 `0.1.19 → 0.1.20`。
|
|
22
|
+
- `minor`:新增一组用户可见能力,如 `0.1.19 → 0.2.0`。
|
|
23
|
+
- `major`:存在不兼容变更时使用。
|