@senguoyun/dsh-arkme 0.1.16 → 0.1.23
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/gallery-linear.svg +5 -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 +7 -1
- package/docs/plugin-release.md +23 -0
- package/docs/third-party-notices.md +13 -0
- package/lib/client.js +78297 -24546
- package/lib/client.js.map +1 -1
- package/lib/extension-profile-restart-helper.js +19 -7
- package/lib/index.js +1374 -531
- package/lib/{install-store-Beau1y-o.js → install-store-C1tAM346.js} +1 -1
- package/lib/persistent-extension.js +1 -1
- package/lib/{persistent-runtime-D_hNgTX3.js → persistent-runtime-BIJ2Er-6.js} +6332 -1638
- package/lib/plugin-updater-helper-Ddppbids.js +2 -0
- package/lib/plugin-updater-helper-Lmz7W2ph.js +768 -0
- package/lib/plugin-updater-helper.js +5 -2
- package/lib/{profile-package-manager-DwuQu8ZL.js → profile-bundle-policy-CvojZuTD.js} +76 -1
- package/lib/sdk.js +117 -1
- package/lib/types/arkme-service.d.ts +68 -3
- package/lib/types/arkme-service.d.ts.map +1 -1
- package/lib/types/chat-realtime.d.ts +22 -1
- 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 +13 -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 +31 -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 +3 -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/ArkmeMarketplace.d.ts +6 -3
- package/lib/types/client/ArkmeMarketplace.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/ArkmeMessageReadReceipt.d.ts +24 -0
- package/lib/types/client/ArkmeMessageReadReceipt.d.ts.map +1 -0
- package/lib/types/client/ArkmeNoteDetails.d.ts +14 -0
- package/lib/types/client/ArkmeNoteDetails.d.ts.map +1 -0
- package/lib/types/client/ArkmeOutgoingCallHost.d.ts.map +1 -1
- package/lib/types/client/ArkmePersistentShell.d.ts +11 -4
- 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/ArkmeQuickAdd.d.ts.map +1 -1
- package/lib/types/client/ArkmeRecordingSurface.d.ts.map +1 -1
- package/lib/types/client/ArkmeRichComposerInput.d.ts +38 -0
- package/lib/types/client/ArkmeRichComposerInput.d.ts.map +1 -0
- package/lib/types/client/ArkmeRichContent.d.ts +13 -1
- package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
- package/lib/types/client/ArkmeSearchSurface.d.ts +24 -1
- 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 +53 -4
- package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
- package/lib/types/client/ArkmeSourceBreadcrumb.d.ts +30 -6
- 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/ArkmeTopicCreateDialog.d.ts +3 -1
- package/lib/types/client/ArkmeTopicCreateDialog.d.ts.map +1 -1
- package/lib/types/client/ArkmeTopicDirectoryPopover.d.ts +8 -1
- package/lib/types/client/ArkmeTopicDirectoryPopover.d.ts.map +1 -1
- package/lib/types/client/ArkmeTopicManagementDialog.d.ts +22 -0
- package/lib/types/client/ArkmeTopicManagementDialog.d.ts.map +1 -0
- 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 +21 -3
- package/lib/types/client/ArkmeVirtualWorkspace.d.ts.map +1 -1
- package/lib/types/client/ArkmeVoiceContent.d.ts +16 -0
- package/lib/types/client/ArkmeVoiceContent.d.ts.map +1 -0
- 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 +18 -5
- 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/account-settings-nav-icon.d.ts +10 -0
- package/lib/types/client/account-settings-nav-icon.d.ts.map +1 -0
- 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 +81 -0
- package/lib/types/client/arkme-login-locales.d.ts.map +1 -0
- package/lib/types/client/arkme-theme.d.ts +2 -1
- package/lib/types/client/arkme-theme.d.ts.map +1 -1
- package/lib/types/client/arkme-voice-compat.d.ts +7 -0
- package/lib/types/client/arkme-voice-compat.d.ts.map +1 -0
- 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 +20 -1
- 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/message-read-receipt-store.d.ts +63 -0
- package/lib/types/client/message-read-receipt-store.d.ts.map +1 -0
- package/lib/types/client/navigation-cache.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/source-tree.d.ts +13 -1
- package/lib/types/client/source-tree.d.ts.map +1 -1
- package/lib/types/client/ui-controller.d.ts +22 -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 +14 -0
- package/lib/types/extensions/client-owner.d.ts.map +1 -0
- package/lib/types/extensions/manager.d.ts +32 -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-bundle-policy.d.ts +16 -0
- package/lib/types/extensions/profile-bundle-policy.d.ts.map +1 -0
- package/lib/types/extensions/profile-installer.d.ts +3 -0
- package/lib/types/extensions/profile-installer.d.ts.map +1 -1
- package/lib/types/extensions/profile-restart-helper.d.ts +5 -1
- package/lib/types/extensions/profile-restart-helper.d.ts.map +1 -1
- package/lib/types/extensions/types.d.ts +2 -0
- package/lib/types/extensions/types.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/mention-metadata.d.ts +3 -0
- package/lib/types/mention-metadata.d.ts.map +1 -0
- 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 +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 +17 -1
- 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/rich-media-routes.d.ts.map +1 -1
- package/lib/types/sdk/index.d.ts +31 -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 +37 -3
- package/lib/types/services/bot-service.d.ts.map +1 -1
- package/lib/types/services/calendar-service.d.ts +3 -1
- package/lib/types/services/calendar-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 +2 -0
- package/lib/types/services/chat-realtime-service.d.ts.map +1 -1
- package/lib/types/services/chat-service.d.ts +44 -4
- 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 +26 -1
- 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/privacy-visibility.d.ts +17 -0
- package/lib/types/services/privacy-visibility.d.ts.map +1 -0
- 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 +8 -1
- package/lib/types/services/record-service.d.ts.map +1 -1
- package/lib/types/services/search-service.d.ts +7 -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 +61 -3
- 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/conversation/favorite-stickers.d.ts +5 -0
- package/lib/types/tools/business/conversation/favorite-stickers.d.ts.map +1 -0
- package/lib/types/tools/business/conversation/index.d.ts.map +1 -1
- package/lib/types/tools/business/conversation/read-receipts.d.ts +4 -0
- package/lib/types/tools/business/conversation/read-receipts.d.ts.map +1 -0
- package/lib/types/tools/business/conversation/unread.d.ts +4 -0
- package/lib/types/tools/business/conversation/unread.d.ts.map +1 -0
- 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/conversations.d.ts +18 -1
- package/lib/types/tools/ports/conversations.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 +414 -6
- 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 +22 -7
- 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
|
|
@@ -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="M7.2 21H16.8C19.8 21 21 19.8 21 16.8V7.2C21 4.2 19.8 3 16.8 3H7.2C4.2 3 3 4.2 3 7.2V16.8C3 19.8 4.2 21 7.2 21Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M8.5 10C9.32843 10 10 9.32843 10 8.5C10 7.67157 9.32843 7 8.5 7C7.67157 7 7 7.67157 7 8.5C7 9.32843 7.67157 10 8.5 10Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M3.67 17.95L7.37 15.46C7.96 15.06 8.81 15.11 9.34 15.57L9.59 15.79C10.17 16.29 11.1 16.29 11.68 15.79L14.8 13.11C15.38 12.61 16.31 12.61 16.89 13.11L20.85 16.51" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
</svg>
|
|
@@ -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.
|
|
@@ -105,6 +107,10 @@ Chat items returned by `readSource()` may include an opaque sender `avatarRef`.
|
|
|
105
107
|
|
|
106
108
|
Timeline items may include `contentBlocks` for image, video, audio, and file content. Long articles use the owner contract's `templateKind: 8`; `displayKind: 1` remains accepted only as a compatibility signal for previously sent plugin records. Each block's `mediaRef` is account-bound and short-lived. Render it with `sdk.mediaUrl(mediaRef)`; never decode or persist it. `upload()` sends a browser file only to the same-origin plugin route and returns an Arkme asset descriptor for `sendRich()`.
|
|
107
109
|
|
|
110
|
+
`capabilities().features.forwardContent === true` advertises expanded `readSource()` forward snapshots. `forwardRecords.items` may contain `sourceType`, `segments` (speaker, full text, relative start/end milliseconds), `contentBlocks` and `mediaUnavailable`. Segment audio also uses `contentBlocks`, never raw URLs. The same snapshot is returned to the built-in UI and `arkme_source_read`. Missing optional fields on older Providers mean text-only rendering, not an error. Unknown source types remain `unknown`; filenames must not determine recording type. No original chat name or source access is implied. A transcript with no attachment is not playable. `truncated` marks bounded output (100 flattened records, nesting depth four; up to 500 segments per record / 2000 total; 32 attachments per record). Display it as partial, never silently claim a complete archive.
|
|
111
|
+
|
|
112
|
+
Consumers retain no additional resources for a one-shot `readSource()`. If they call `subscribe()`, invoke its returned unsubscribe function on disposal. Refresh the received timeline when a media reference expires; do not query the private original recording or cache/decode its reference. Unsupported `contractVersion` is rejected by `capabilities()`; an absent optional `forwardContent` feature falls back to the existing text snapshot.
|
|
113
|
+
|
|
108
114
|
Long-article detail and update calls always include the opaque `sourceRef` and stable record UID. The Provider reloads the Record owner detail, verifies source membership and author ownership, and forwards the current `version` to the existing CAS update endpoint. A failed or stale update must retain the editor content and must never be retried by creating a second record. Draft helpers persist only title, body and duration in Provider state and isolate them by account, source and edited record.
|
|
109
115
|
|
|
110
116
|
The Provider exposes one facade while preserving owner boundaries: default-category/topic reads and sends go to Record, while private/group reads and sends go to Chat. Consumers must not treat these business objects as interchangeable merely because they share the same UI shell.
|
|
@@ -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`:存在不兼容变更时使用。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
## Mediabunny 1.55.2
|
|
4
|
+
|
|
5
|
+
The browser bundle includes unmodified Mediabunny code, copyright (c) Vanilagy,
|
|
6
|
+
licensed under the Mozilla Public License 2.0 (MPL-2.0).
|
|
7
|
+
|
|
8
|
+
- License: https://www.mozilla.org/MPL/2.0/
|
|
9
|
+
- Exact source distribution (includes `src` and `LICENSE`): https://registry.npmjs.org/mediabunny/-/mediabunny-1.55.2.tgz
|
|
10
|
+
- Project: https://github.com/Vanilagy/mediabunny
|
|
11
|
+
|
|
12
|
+
Mediabunny is used to demux/remux AAC voice media for local browser playback.
|
|
13
|
+
It is not used to upload media or run an external transcoding service.
|