@senguoyun/dsh-arkme 0.1.15 → 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.
Files changed (275) hide show
  1. package/README.md +9 -0
  2. package/assets/desktop_call/arkme-video-linear.svg +5 -0
  3. package/assets/desktop_call/avatar-lin-xiaoman.jpeg +0 -0
  4. package/assets/desktop_call/avatar-mother.jpg +0 -0
  5. package/assets/desktop_call/avatar-self.png +0 -0
  6. package/assets/desktop_call/bundle.js +104 -5
  7. package/assets/desktop_call/call-add-linear.svg +13 -0
  8. package/assets/desktop_call/call-demo-peer.png +0 -0
  9. package/assets/desktop_call/call-demo-self.png +0 -0
  10. package/assets/desktop_call/icon-scan-add-contact.svg +4 -0
  11. package/assets/desktop_call/index.html +4 -2
  12. package/assets/desktop_call/manifest.json +1 -1
  13. package/assets/desktop_call/profile-circle-linear.svg +11 -0
  14. package/assets/desktop_call/user-add-linear.svg +15 -0
  15. package/assets/windows/arkme-credential-helper.exe +0 -0
  16. package/assets/windows/manifest.json +9 -0
  17. package/cordis.patch.yml +2 -0
  18. package/docs/consumer-plugin-contract.md +3 -1
  19. package/docs/plugin-release.md +23 -0
  20. package/lib/client.js +53369 -13516
  21. package/lib/client.js.map +1 -1
  22. package/lib/extension-profile-restart-helper.js +1 -1
  23. package/lib/index.js +804 -462
  24. package/lib/persistent-extension.js +1 -1
  25. package/lib/{persistent-runtime-D_hNgTX3.js → persistent-runtime-CNdmWCSF.js} +3754 -596
  26. package/lib/plugin-updater-helper-Bg28PYR7.js +2 -0
  27. package/lib/plugin-updater-helper-CEnlAUhI.js +731 -0
  28. package/lib/plugin-updater-helper.js +5 -2
  29. package/lib/sdk.js +58 -0
  30. package/lib/types/arkme-service.d.ts +43 -1
  31. package/lib/types/arkme-service.d.ts.map +1 -1
  32. package/lib/types/chat-realtime.d.ts +9 -0
  33. package/lib/types/chat-realtime.d.ts.map +1 -1
  34. package/lib/types/client/ArkmeAvatar.d.ts +5 -0
  35. package/lib/types/client/ArkmeAvatar.d.ts.map +1 -1
  36. package/lib/types/client/ArkmeCalendarSurface.d.ts +3 -1
  37. package/lib/types/client/ArkmeCalendarSurface.d.ts.map +1 -1
  38. package/lib/types/client/ArkmeCallHistorySurface.d.ts +57 -0
  39. package/lib/types/client/ArkmeCallHistorySurface.d.ts.map +1 -0
  40. package/lib/types/client/ArkmeCallSurface.d.ts +5 -0
  41. package/lib/types/client/ArkmeCallSurface.d.ts.map +1 -0
  42. package/lib/types/client/ArkmeChatMemberActions.d.ts +10 -2
  43. package/lib/types/client/ArkmeChatMemberActions.d.ts.map +1 -1
  44. package/lib/types/client/ArkmeComposerToolButton.d.ts +6 -0
  45. package/lib/types/client/ArkmeComposerToolButton.d.ts.map +1 -0
  46. package/lib/types/client/ArkmeComposerToolIcon.d.ts +3 -0
  47. package/lib/types/client/ArkmeComposerToolIcon.d.ts.map +1 -0
  48. package/lib/types/client/ArkmeDshAgentInputMarker.d.ts +10 -0
  49. package/lib/types/client/ArkmeDshAgentInputMarker.d.ts.map +1 -0
  50. package/lib/types/client/ArkmeEmojiPicker.d.ts +7 -0
  51. package/lib/types/client/ArkmeEmojiPicker.d.ts.map +1 -0
  52. package/lib/types/client/ArkmeFooterDropdown.d.ts.map +1 -1
  53. package/lib/types/client/ArkmeGroupChatControls.d.ts +1 -0
  54. package/lib/types/client/ArkmeGroupChatControls.d.ts.map +1 -1
  55. package/lib/types/client/ArkmeLogin.d.ts +2 -0
  56. package/lib/types/client/ArkmeLogin.d.ts.map +1 -1
  57. package/lib/types/client/ArkmeMentionTextarea.d.ts +6 -2
  58. package/lib/types/client/ArkmeMentionTextarea.d.ts.map +1 -1
  59. package/lib/types/client/ArkmeOutgoingCallHost.d.ts.map +1 -1
  60. package/lib/types/client/ArkmePersistentShell.d.ts +4 -3
  61. package/lib/types/client/ArkmePersistentShell.d.ts.map +1 -1
  62. package/lib/types/client/ArkmePluginUpdateDialog.d.ts +11 -0
  63. package/lib/types/client/ArkmePluginUpdateDialog.d.ts.map +1 -0
  64. package/lib/types/client/ArkmeProductNavigation.d.ts.map +1 -1
  65. package/lib/types/client/ArkmeRecordingSurface.d.ts.map +1 -1
  66. package/lib/types/client/ArkmeRichComposerInput.d.ts +27 -0
  67. package/lib/types/client/ArkmeRichComposerInput.d.ts.map +1 -0
  68. package/lib/types/client/ArkmeRichContent.d.ts +4 -0
  69. package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
  70. package/lib/types/client/ArkmeSearchSurface.d.ts +5 -0
  71. package/lib/types/client/ArkmeSearchSurface.d.ts.map +1 -1
  72. package/lib/types/client/ArkmeSettingsSurface.d.ts +17 -10
  73. package/lib/types/client/ArkmeSettingsSurface.d.ts.map +1 -1
  74. package/lib/types/client/ArkmeSidebar.d.ts +17 -3
  75. package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
  76. package/lib/types/client/ArkmeSourceBreadcrumb.d.ts +1 -1
  77. package/lib/types/client/ArkmeSourceBreadcrumb.d.ts.map +1 -1
  78. package/lib/types/client/ArkmeStartupAuthGate.d.ts +6 -2
  79. package/lib/types/client/ArkmeStartupAuthGate.d.ts.map +1 -1
  80. package/lib/types/client/ArkmeTopicDirectoryPopover.d.ts.map +1 -1
  81. package/lib/types/client/ArkmeUpdateSurfaces.d.ts +47 -0
  82. package/lib/types/client/ArkmeUpdateSurfaces.d.ts.map +1 -0
  83. package/lib/types/client/ArkmeVirtualWorkspace.d.ts +15 -2
  84. package/lib/types/client/ArkmeVirtualWorkspace.d.ts.map +1 -1
  85. package/lib/types/client/ArkmeWorldEmptyNotice.d.ts +7 -0
  86. package/lib/types/client/ArkmeWorldEmptyNotice.d.ts.map +1 -0
  87. package/lib/types/client/ArkmeWorldSurface.d.ts +9 -4
  88. package/lib/types/client/ArkmeWorldSurface.d.ts.map +1 -1
  89. package/lib/types/client/DeepSeekHarnessSurface.d.ts +9 -2
  90. package/lib/types/client/DeepSeekHarnessSurface.d.ts.map +1 -1
  91. package/lib/types/client/api.d.ts +1 -1
  92. package/lib/types/client/api.d.ts.map +1 -1
  93. package/lib/types/client/arkme-auth-flow.d.ts +4 -2
  94. package/lib/types/client/arkme-auth-flow.d.ts.map +1 -1
  95. package/lib/types/client/arkme-emoji-assets.d.ts +2 -0
  96. package/lib/types/client/arkme-emoji-assets.d.ts.map +1 -0
  97. package/lib/types/client/arkme-emoji.d.ts +23 -0
  98. package/lib/types/client/arkme-emoji.d.ts.map +1 -1
  99. package/lib/types/client/arkme-login-errors.d.ts +6 -0
  100. package/lib/types/client/arkme-login-errors.d.ts.map +1 -0
  101. package/lib/types/client/arkme-login-locales.d.ts +85 -0
  102. package/lib/types/client/arkme-login-locales.d.ts.map +1 -0
  103. package/lib/types/client/arkme-theme.d.ts +1 -0
  104. package/lib/types/client/arkme-theme.d.ts.map +1 -1
  105. package/lib/types/client/arko-conversation-preview-sync.d.ts +32 -0
  106. package/lib/types/client/arko-conversation-preview-sync.d.ts.map +1 -0
  107. package/lib/types/client/auth-store.d.ts +1 -0
  108. package/lib/types/client/auth-store.d.ts.map +1 -1
  109. package/lib/types/client/chat-directory-store.d.ts +15 -1
  110. package/lib/types/client/chat-directory-store.d.ts.map +1 -1
  111. package/lib/types/client/composer-draft-store.d.ts +14 -0
  112. package/lib/types/client/composer-draft-store.d.ts.map +1 -1
  113. package/lib/types/client/demo-audio.d.ts +2 -0
  114. package/lib/types/client/demo-audio.d.ts.map +1 -0
  115. package/lib/types/client/index.d.ts +5 -5
  116. package/lib/types/client/index.d.ts.map +1 -1
  117. package/lib/types/client/outgoing-call-bridge.d.ts +3 -0
  118. package/lib/types/client/outgoing-call-bridge.d.ts.map +1 -1
  119. package/lib/types/client/outgoing-call-runtime.d.ts +13 -1
  120. package/lib/types/client/outgoing-call-runtime.d.ts.map +1 -1
  121. package/lib/types/client/outgoing-call-ui-controller.d.ts +9 -0
  122. package/lib/types/client/outgoing-call-ui-controller.d.ts.map +1 -1
  123. package/lib/types/client/plugin-update-store.d.ts.map +1 -1
  124. package/lib/types/client/realtime-client-events.d.ts +3 -0
  125. package/lib/types/client/realtime-client-events.d.ts.map +1 -0
  126. package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts +20 -0
  127. package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts.map +1 -0
  128. package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts +13 -0
  129. package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts.map +1 -0
  130. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts +35 -0
  131. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts.map +1 -0
  132. package/lib/types/client/redesign/contacts/ContactProfileDetail.d.ts +96 -0
  133. package/lib/types/client/redesign/contacts/ContactProfileDetail.d.ts.map +1 -0
  134. package/lib/types/client/redesign/contacts/ContactWorldList.d.ts +44 -0
  135. package/lib/types/client/redesign/contacts/ContactWorldList.d.ts.map +1 -0
  136. package/lib/types/client/redesign/contacts/DirectoryDetailPane.d.ts +13 -0
  137. package/lib/types/client/redesign/contacts/DirectoryDetailPane.d.ts.map +1 -0
  138. package/lib/types/client/redesign/contacts/SpeakerChoicePanel.d.ts +21 -0
  139. package/lib/types/client/redesign/contacts/SpeakerChoicePanel.d.ts.map +1 -0
  140. package/lib/types/client/redesign/contacts/UnmarkedSpeakerAudioList.d.ts +15 -0
  141. package/lib/types/client/redesign/contacts/UnmarkedSpeakerAudioList.d.ts.map +1 -0
  142. package/lib/types/client/redesign/contacts/UnmarkedSpeakerDetail.d.ts +27 -0
  143. package/lib/types/client/redesign/contacts/UnmarkedSpeakerDetail.d.ts.map +1 -0
  144. package/lib/types/client/redesign/contacts/UnmarkedSpeakerVisuals.d.ts +9 -0
  145. package/lib/types/client/redesign/contacts/UnmarkedSpeakerVisuals.d.ts.map +1 -0
  146. package/lib/types/client/redesign/contacts/contact-directory-state.d.ts +66 -0
  147. package/lib/types/client/redesign/contacts/contact-directory-state.d.ts.map +1 -0
  148. package/lib/types/client/redesign/contacts/contacts-tab-store.d.ts +45 -0
  149. package/lib/types/client/redesign/contacts/contacts-tab-store.d.ts.map +1 -0
  150. package/lib/types/client/redesign/contacts/directory-workspace-controller.d.ts +58 -0
  151. package/lib/types/client/redesign/contacts/directory-workspace-controller.d.ts.map +1 -0
  152. package/lib/types/client/redesign/contacts/useSingleAudioPlayback.d.ts +16 -0
  153. package/lib/types/client/redesign/contacts/useSingleAudioPlayback.d.ts.map +1 -0
  154. package/lib/types/client/source-list.d.ts +2 -0
  155. package/lib/types/client/source-list.d.ts.map +1 -1
  156. package/lib/types/client/ui-controller.d.ts +5 -3
  157. package/lib/types/client/ui-controller.d.ts.map +1 -1
  158. package/lib/types/client/update-ui-controller.d.ts +16 -0
  159. package/lib/types/client/update-ui-controller.d.ts.map +1 -0
  160. package/lib/types/client/world-voiceprint-expectation-copy.d.ts +1 -6
  161. package/lib/types/client/world-voiceprint-expectation-copy.d.ts.map +1 -1
  162. package/lib/types/contact-directory-presentation.d.ts +19 -0
  163. package/lib/types/contact-directory-presentation.d.ts.map +1 -0
  164. package/lib/types/dsh-agent-input-source.d.ts +11 -0
  165. package/lib/types/dsh-agent-input-source.d.ts.map +1 -0
  166. package/lib/types/dsh-agent-input-sync.d.ts +14 -0
  167. package/lib/types/dsh-agent-input-sync.d.ts.map +1 -0
  168. package/lib/types/extensions/bundle-materializer.d.ts.map +1 -1
  169. package/lib/types/extensions/client-owner.d.ts +9 -0
  170. package/lib/types/extensions/client-owner.d.ts.map +1 -0
  171. package/lib/types/extensions/manager.d.ts +17 -1
  172. package/lib/types/extensions/manager.d.ts.map +1 -1
  173. package/lib/types/extensions/persistent-bundle.d.ts +9 -0
  174. package/lib/types/extensions/persistent-bundle.d.ts.map +1 -1
  175. package/lib/types/extensions/persistent-client-bundle.d.ts +3 -0
  176. package/lib/types/extensions/persistent-client-bundle.d.ts.map +1 -1
  177. package/lib/types/extensions/profile-installer.d.ts +1 -0
  178. package/lib/types/extensions/profile-installer.d.ts.map +1 -1
  179. package/lib/types/host-api.d.ts.map +1 -1
  180. package/lib/types/index.d.ts +4 -1
  181. package/lib/types/index.d.ts.map +1 -1
  182. package/lib/types/keychain-store.d.ts +2 -4
  183. package/lib/types/keychain-store.d.ts.map +1 -1
  184. package/lib/types/outgoing-call-assets.d.ts.map +1 -1
  185. package/lib/types/outgoing-call-broker.d.ts.map +1 -1
  186. package/lib/types/plugin-update-install-receipt.d.ts +9 -0
  187. package/lib/types/plugin-update-install-receipt.d.ts.map +1 -0
  188. package/lib/types/plugin-update-install-state.d.ts +1 -0
  189. package/lib/types/plugin-update-install-state.d.ts.map +1 -1
  190. package/lib/types/plugin-update-policy.d.ts +2 -0
  191. package/lib/types/plugin-update-policy.d.ts.map +1 -0
  192. package/lib/types/plugin-update.d.ts.map +1 -1
  193. package/lib/types/plugin-updater-helper-cli.d.ts +2 -0
  194. package/lib/types/plugin-updater-helper-cli.d.ts.map +1 -0
  195. package/lib/types/plugin-updater-helper.d.ts +8 -0
  196. package/lib/types/plugin-updater-helper.d.ts.map +1 -1
  197. package/lib/types/request-coordinator.d.ts +1 -1
  198. package/lib/types/request-coordinator.d.ts.map +1 -1
  199. package/lib/types/sdk/index.d.ts +18 -2
  200. package/lib/types/sdk/index.d.ts.map +1 -1
  201. package/lib/types/services/arko-service.d.ts.map +1 -1
  202. package/lib/types/services/auth-service.d.ts.map +1 -1
  203. package/lib/types/services/bot-service.d.ts +18 -2
  204. package/lib/types/services/bot-service.d.ts.map +1 -1
  205. package/lib/types/services/call-history-service.d.ts +28 -0
  206. package/lib/types/services/call-history-service.d.ts.map +1 -0
  207. package/lib/types/services/chat-realtime-service.d.ts +1 -0
  208. package/lib/types/services/chat-realtime-service.d.ts.map +1 -1
  209. package/lib/types/services/chat-service.d.ts +14 -1
  210. package/lib/types/services/chat-service.d.ts.map +1 -1
  211. package/lib/types/services/contact-directory-service.d.ts +46 -0
  212. package/lib/types/services/contact-directory-service.d.ts.map +1 -0
  213. package/lib/types/services/group-service.d.ts.map +1 -1
  214. package/lib/types/services/media-service.d.ts +13 -0
  215. package/lib/types/services/media-service.d.ts.map +1 -1
  216. package/lib/types/services/outgoing-call-service.d.ts.map +1 -1
  217. package/lib/types/services/profile-service.d.ts +2 -0
  218. package/lib/types/services/profile-service.d.ts.map +1 -1
  219. package/lib/types/services/record-service.d.ts +2 -0
  220. package/lib/types/services/record-service.d.ts.map +1 -1
  221. package/lib/types/services/search-service.d.ts.map +1 -1
  222. package/lib/types/services/service.d.ts +6 -0
  223. package/lib/types/services/service.d.ts.map +1 -1
  224. package/lib/types/services/source-service.d.ts +16 -0
  225. package/lib/types/services/source-service.d.ts.map +1 -1
  226. package/lib/types/services/unmarked-speaker-service.d.ts +56 -0
  227. package/lib/types/services/unmarked-speaker-service.d.ts.map +1 -0
  228. package/lib/types/services/world-service.d.ts +18 -2
  229. package/lib/types/services/world-service.d.ts.map +1 -1
  230. package/lib/types/tools/business/calls/detail.d.ts +2 -0
  231. package/lib/types/tools/business/calls/detail.d.ts.map +1 -0
  232. package/lib/types/tools/business/calls/history.d.ts +2 -0
  233. package/lib/types/tools/business/calls/history.d.ts.map +1 -0
  234. package/lib/types/tools/business/calls/index.d.ts +2 -0
  235. package/lib/types/tools/business/calls/index.d.ts.map +1 -0
  236. package/lib/types/tools/business/calls/retry-summary.d.ts +2 -0
  237. package/lib/types/tools/business/calls/retry-summary.d.ts.map +1 -0
  238. package/lib/types/tools/business/contacts/index.d.ts +2 -1
  239. package/lib/types/tools/business/contacts/index.d.ts.map +1 -1
  240. package/lib/types/tools/business/groups/index.d.ts +1 -1
  241. package/lib/types/tools/business/groups/index.d.ts.map +1 -1
  242. package/lib/types/tools/business/groups/rename.d.ts +2 -0
  243. package/lib/types/tools/business/groups/rename.d.ts.map +1 -0
  244. package/lib/types/tools/business/index.d.ts.map +1 -1
  245. package/lib/types/tools/business/world/index.d.ts +1 -0
  246. package/lib/types/tools/business/world/index.d.ts.map +1 -1
  247. package/lib/types/tools/business/world/open-private-chat.d.ts +2 -0
  248. package/lib/types/tools/business/world/open-private-chat.d.ts.map +1 -0
  249. package/lib/types/tools/ports/call-history.d.ts +7 -0
  250. package/lib/types/tools/ports/call-history.d.ts.map +1 -0
  251. package/lib/types/tools/ports/contacts.d.ts +4 -1
  252. package/lib/types/tools/ports/contacts.d.ts.map +1 -1
  253. package/lib/types/tools/ports/groups.d.ts +2 -1
  254. package/lib/types/tools/ports/groups.d.ts.map +1 -1
  255. package/lib/types/tools/ports/index.d.ts +3 -2
  256. package/lib/types/tools/ports/index.d.ts.map +1 -1
  257. package/lib/types/tools/ports/world.d.ts +2 -1
  258. package/lib/types/tools/ports/world.d.ts.map +1 -1
  259. package/lib/types/tools/prompts/business.d.ts.map +1 -1
  260. package/lib/types/tools/registry/registrar.d.ts.map +1 -1
  261. package/lib/types/tools/system/plugin-contract.d.ts.map +1 -1
  262. package/lib/types/types.d.ts +239 -4
  263. package/lib/types/types.d.ts.map +1 -1
  264. package/lib/types/windows-credential-helper.d.ts +29 -0
  265. package/lib/types/windows-credential-helper.d.ts.map +1 -0
  266. package/lib/types/world-voiceprint-copy.d.ts +18 -0
  267. package/lib/types/world-voiceprint-copy.d.ts.map +1 -0
  268. package/package.json +14 -6
  269. package/lib/plugin-updater-helper-BEYBTOld.js +0 -346
  270. package/lib/types/client/ArkmeAccountMenu.d.ts +0 -4
  271. package/lib/types/client/ArkmeAccountMenu.d.ts.map +0 -1
  272. package/lib/types/client/ArkmeSettingsRow.d.ts +0 -5
  273. package/lib/types/client/ArkmeSettingsRow.d.ts.map +0 -1
  274. package/lib/types/client/redesign/ArkmeRootFrame.d.ts +0 -19
  275. 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
+ [![npm 版本](https://img.shields.io/npm/v/%40senguoyun/dsh-arkme?label=npm%20%E7%89%88%E6%9C%AC)](https://www.npmjs.com/package/@senguoyun/dsh-arkme)
4
+ [![发布记录](https://img.shields.io/badge/%E5%8F%91%E5%B8%83%E8%AE%B0%E5%BD%95-GitHub-blue)](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("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#39;");
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
- try {
49701
- await state.engine.hangup();
49702
- } catch (error) {
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
- throw error;
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 = "";
@@ -0,0 +1,13 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Property 1=linear">
3
+ <g id="vuesax/linear/call-add">
4
+ <g id="call-add">
5
+ <g id="call-add_2">
6
+ <path id="Vector" d="M21.97 18.33C21.97 18.69 21.89 19.06 21.72 19.42C21.55 19.78 21.33 20.12 21.04 20.44C20.55 20.98 20.01 21.37 19.4 21.62C18.8 21.87 18.15 22 17.45 22C16.43 22 15.34 21.76 14.19 21.27C13.04 20.78 11.89 20.12 10.75 19.29C9.6 18.45 8.51 17.52 7.47 16.49C6.44 15.45 5.51 14.36 4.68 13.22C3.86 12.08 3.2 10.94 2.72 9.81C2.24 8.67 2 7.58 2 6.54C2 5.86 2.12 5.21 2.36 4.61C2.6 4 2.98 3.44 3.51 2.94C4.15 2.31 4.85 2 5.59 2C5.87 2 6.15 2.06 6.4 2.18C6.66 2.3 6.89 2.48 7.07 2.74L9.39 6.01C9.57 6.26 9.7 6.49 9.79 6.71C9.88 6.92 9.93 7.13 9.93 7.32C9.93 7.56 9.86 7.8 9.72 8.03C9.59 8.26 9.4 8.5 9.16 8.74L8.4 9.53C8.29 9.64 8.24 9.77 8.24 9.93C8.24 10.01 8.25 10.08 8.27 10.16C8.3 10.24 8.33 10.3 8.35 10.36C8.53 10.69 8.84 11.12 9.28 11.64C9.73 12.16 10.21 12.69 10.73 13.22C11.27 13.75 11.79 14.24 12.32 14.69C12.84 15.13 13.27 15.43 13.61 15.61C13.66 15.63 13.72 15.66 13.79 15.69C13.87 15.72 13.95 15.73 14.04 15.73C14.21 15.73 14.34 15.67 14.45 15.56L15.21 14.81C15.46 14.56 15.7 14.37 15.93 14.25C16.16 14.11 16.39 14.04 16.64 14.04C16.83 14.04 17.03 14.08 17.25 14.17C17.47 14.26 17.7 14.39 17.95 14.56L21.26 16.91C21.52 17.09 21.7 17.3 21.81 17.55C21.91 17.8 21.97 18.05 21.97 18.33Z" stroke="#292D32" stroke-width="1.5" stroke-miterlimit="10"/>
7
+ <path id="Vector_2" d="M15.5 6H20.5" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8
+ <path id="Vector_3" d="M18 8.5V3.5" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
9
+ </g>
10
+ </g>
11
+ </g>
12
+ </g>
13
+ </svg>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M5 8a1 1 0 0 1-2 0V5.923c0-.76.082-1.185.319-1.627.223-.419.558-.754.977-.977C4.738 3.082 5.162 3 5.923 3H8a1 1 0 0 1 0 2H5.923c-.459 0-.57.022-.684.082a.364.364 0 0 0-.157.157c-.06.113-.082.225-.082.684V8zm3 11a1 1 0 1 1 0 2H5.923c-.76 0-1.185-.082-1.627-.319a2.363 2.363 0 0 1-.977-.977C3.082 19.262 3 18.838 3 18.077V16a1 1 0 1 1 2 0v2.077c0 .459.022.57.082.684.038.07.087.12.157.157.113.06.225.082.684.082H8zm7-15a1 1 0 0 0 1 1h2.077c.459 0 .57.022.684.082.07.038.12.087.157.157.06.113.082.225.082.684V8a1 1 0 1 0 2 0V5.923c0-.76-.082-1.185-.319-1.627a2.363 2.363 0 0 0-.977-.977C19.262 3.082 18.838 3 18.077 3H16a1 1 0 0 0-1 1zm4 12a1 1 0 1 1 2 0v2.077c0 .76-.082 1.185-.319 1.627a2.364 2.364 0 0 1-.977.977c-.442.237-.866.319-1.627.319H16a1 1 0 1 1 0-2h2.077c.459 0 .57-.022.684-.082a.363.363 0 0 0 .157-.157c.06-.113.082-.225.082-.684V16zM3 11a1 1 0 1 0 0 2h18a1 1 0 1 0 0-2H3z" fill="#000000"/>
4
+ </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
- import("./bundle.js").catch((error) => {
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": "dadd84a0f617a80bd969ed144db356edc6a82a58b4490483d45006813ee03278",
7
+ "bundleSha256": "839e0376d8916472d99fe4b0cbcc39b165c3dc96ac00b31b15fb3910bcdf6917",
8
8
  "iconSha256": "583d7dbd34069c5b50ca294a071637bbd3beed913cecdb91a202c001004eed45",
9
9
  "outgoingOnly": true
10
10
  }
@@ -0,0 +1,11 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Property 1=linear">
3
+ <g id="vuesax/linear/profile-circle">
4
+ <g id="profile-circle">
5
+ <path id="Vector" d="M12.12 12.78C12.05 12.77 11.96 12.77 11.88 12.78C10.12 12.72 8.71997 11.28 8.71997 9.50998C8.71997 7.69998 10.18 6.22998 12 6.22998C13.81 6.22998 15.28 7.69998 15.28 9.50998C15.27 11.28 13.88 12.72 12.12 12.78Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path id="Vector_2" d="M18.74 19.38C16.96 21.01 14.6 22 12 22C9.40001 22 7.04001 21.01 5.26001 19.38C5.36001 18.44 5.96001 17.52 7.03001 16.8C9.77001 14.98 14.25 14.98 16.97 16.8C18.04 17.52 18.64 18.44 18.74 19.38Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
+ <path id="Vector_3" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Property 1=linear">
3
+ <g id="vuesax/linear/user-add">
4
+ <g id="user-add">
5
+ <path id="Vector" d="M12 12C14.7614 12 17 9.76142 17 7C17 4.23858 14.7614 2 12 2C9.23858 2 7 4.23858 7 7C7 9.76142 9.23858 12 12 12Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path id="Vector_2" d="M3.41003 22C3.41003 18.13 7.26003 15 12 15C12.96 15 13.89 15.13 14.76 15.37" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
+ <path id="Vector_3" d="M22 18C22 18.32 21.96 18.63 21.88 18.93C21.79 19.33 21.63 19.72 21.42 20.06C20.73 21.22 19.46 22 18 22C16.97 22 16.04 21.61 15.34 20.97C15.04 20.71 14.78 20.4 14.58 20.06C14.21 19.46 14 18.75 14 18C14 16.92 14.43 15.93 15.13 15.21C15.86 14.46 16.88 14 18 14C19.18 14 20.25 14.51 20.97 15.33C21.61 16.04 22 16.98 22 18Z" stroke="#292D32" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
8
+ <g id="Group">
9
+ <path id="Vector_4" d="M19.49 17.98H16.51" stroke="#292D32" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
10
+ <path id="Vector_5" d="M18 16.52V19.51" stroke="#292D32" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
11
+ </g>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </svg>
@@ -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: `sidebar.footer.action` owns the launcher, inline Arkme directory, and a non-modal translucent React portal that floats the Arkme message surface over the center column; `settings.general.item` owns account controls. The plugin never registers or replaces `conversation`, so the native DSH Conversation remains mounted and remains perceptible through and around the frosted card. Consumers must not depend on private `sidebar.workspaces.virtual` or `main.surface` extensions.
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`:存在不兼容变更时使用。