@senguoyun/dsh-arkme 0.1.49 → 0.1.51

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 (202) hide show
  1. package/assets/desktop_call/call-incoming-linear.svg +12 -0
  2. package/assets/desktop_call/call-linear.svg +11 -0
  3. package/assets/desktop_call/call-outgoing-linear.svg +12 -0
  4. package/assets/desktop_call/video-incoming-linear.svg +9 -0
  5. package/assets/desktop_call/video-linear.svg +11 -0
  6. package/assets/desktop_call/video-outgoing-linear.svg +9 -0
  7. package/docs/member-statistics-review.md +53 -0
  8. package/docs/private-chat-actions.md +58 -0
  9. package/docs/shared-conversation-members.md +10 -0
  10. package/lib/client.js +34312 -31286
  11. package/lib/client.js.map +1 -1
  12. package/lib/harness-model-client.js +18 -0
  13. package/lib/index.js +533 -821
  14. package/lib/persistent-extension.js +1 -1
  15. package/lib/{persistent-runtime-D2pt8S-e.js → persistent-runtime-Be8cvpQd.js} +4018 -2325
  16. package/lib/sdk.js +18 -0
  17. package/lib/types/account-session-owner.d.ts +3 -0
  18. package/lib/types/account-session-owner.d.ts.map +1 -1
  19. package/lib/types/arkme-service.d.ts +20 -7
  20. package/lib/types/arkme-service.d.ts.map +1 -1
  21. package/lib/types/bot-chat-directory-projection.d.ts +11 -0
  22. package/lib/types/bot-chat-directory-projection.d.ts.map +1 -0
  23. package/lib/types/call-record-presentation.d.ts +7 -0
  24. package/lib/types/call-record-presentation.d.ts.map +1 -0
  25. package/lib/types/chat-policy-projection.d.ts +4 -0
  26. package/lib/types/chat-policy-projection.d.ts.map +1 -0
  27. package/lib/types/client/ArkmeArkoSurface.d.ts.map +1 -1
  28. package/lib/types/client/ArkmeCallDetailDrawer.d.ts +7 -0
  29. package/lib/types/client/ArkmeCallDetailDrawer.d.ts.map +1 -0
  30. package/lib/types/client/ArkmeCallRecordContent.d.ts +7 -0
  31. package/lib/types/client/ArkmeCallRecordContent.d.ts.map +1 -0
  32. package/lib/types/client/ArkmeCallTranscript.d.ts +6 -0
  33. package/lib/types/client/ArkmeCallTranscript.d.ts.map +1 -0
  34. package/lib/types/client/ArkmeCallVideoClips.d.ts +5 -0
  35. package/lib/types/client/ArkmeCallVideoClips.d.ts.map +1 -0
  36. package/lib/types/client/ArkmeCallVideoPlayer.d.ts +6 -0
  37. package/lib/types/client/ArkmeCallVideoPlayer.d.ts.map +1 -0
  38. package/lib/types/client/ArkmeConfirmDialog.d.ts +11 -4
  39. package/lib/types/client/ArkmeConfirmDialog.d.ts.map +1 -1
  40. package/lib/types/client/ArkmeDirectoryWindow.d.ts +2 -1
  41. package/lib/types/client/ArkmeDirectoryWindow.d.ts.map +1 -1
  42. package/lib/types/client/ArkmeFileViewer.d.ts +29 -1
  43. package/lib/types/client/ArkmeFileViewer.d.ts.map +1 -1
  44. package/lib/types/client/ArkmeGroupChatControls.d.ts +2 -2
  45. package/lib/types/client/ArkmeGroupChatControls.d.ts.map +1 -1
  46. package/lib/types/client/ArkmeMarkdownBody.d.ts +4 -2
  47. package/lib/types/client/ArkmeMarkdownBody.d.ts.map +1 -1
  48. package/lib/types/client/ArkmeMessageReadReceipt.d.ts.map +1 -1
  49. package/lib/types/client/ArkmePrivateCallMenu.d.ts +13 -0
  50. package/lib/types/client/ArkmePrivateCallMenu.d.ts.map +1 -1
  51. package/lib/types/client/ArkmeProductNavigation.d.ts.map +1 -1
  52. package/lib/types/client/ArkmeRecordTopicAssignmentDialog.d.ts +14 -0
  53. package/lib/types/client/ArkmeRecordTopicAssignmentDialog.d.ts.map +1 -0
  54. package/lib/types/client/ArkmeRichContent.d.ts +13 -2
  55. package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
  56. package/lib/types/client/ArkmeRichText.d.ts +8 -2
  57. package/lib/types/client/ArkmeRichText.d.ts.map +1 -1
  58. package/lib/types/client/ArkmeSidebar.d.ts +5 -1
  59. package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
  60. package/lib/types/client/ArkmeVirtualWorkspace.d.ts.map +1 -1
  61. package/lib/types/client/PrivateChatActions.d.ts +30 -0
  62. package/lib/types/client/PrivateChatActions.d.ts.map +1 -0
  63. package/lib/types/client/api.d.ts +1 -1
  64. package/lib/types/client/api.d.ts.map +1 -1
  65. package/lib/types/client/bot-chat-directory-projection.d.ts +1 -10
  66. package/lib/types/client/bot-chat-directory-projection.d.ts.map +1 -1
  67. package/lib/types/client/chat-directory-store.d.ts +17 -1
  68. package/lib/types/client/chat-directory-store.d.ts.map +1 -1
  69. package/lib/types/client/composer-focus.d.ts +6 -0
  70. package/lib/types/client/composer-focus.d.ts.map +1 -1
  71. package/lib/types/client/conversation-resize-anchor.d.ts +1 -1
  72. package/lib/types/client/conversation-resize-anchor.d.ts.map +1 -1
  73. package/lib/types/client/direct-message-admission.d.ts +1 -1
  74. package/lib/types/client/direct-message-admission.d.ts.map +1 -1
  75. package/lib/types/client/index.d.ts +1 -0
  76. package/lib/types/client/index.d.ts.map +1 -1
  77. package/lib/types/client/preserve-text-toggle-position.d.ts +3 -0
  78. package/lib/types/client/preserve-text-toggle-position.d.ts.map +1 -0
  79. package/lib/types/client/private-chat-actions-auth-binding.d.ts +5 -0
  80. package/lib/types/client/private-chat-actions-auth-binding.d.ts.map +1 -0
  81. package/lib/types/client/private-chat-actions-store.d.ts +48 -0
  82. package/lib/types/client/private-chat-actions-store.d.ts.map +1 -0
  83. package/lib/types/client/provider-instance-runtime.d.ts +1 -0
  84. package/lib/types/client/provider-instance-runtime.d.ts.map +1 -1
  85. package/lib/types/client/read-retry.d.ts.map +1 -1
  86. package/lib/types/client/realtime-client-events.d.ts.map +1 -1
  87. package/lib/types/client/record-topic-assignment-port.d.ts +16 -0
  88. package/lib/types/client/record-topic-assignment-port.d.ts.map +1 -0
  89. package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts +2 -1
  90. package/lib/types/client/redesign/contacts/CollapsibleDirectorySection.d.ts.map +1 -1
  91. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts +3 -1
  92. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts.map +1 -1
  93. package/lib/types/client/redesign/contacts/contact-directory-state.d.ts +3 -0
  94. package/lib/types/client/redesign/contacts/contact-directory-state.d.ts.map +1 -1
  95. package/lib/types/client/resource-store.d.ts +47 -0
  96. package/lib/types/client/resource-store.d.ts.map +1 -0
  97. package/lib/types/client/ui-controller.d.ts +2 -0
  98. package/lib/types/client/ui-controller.d.ts.map +1 -1
  99. package/lib/types/client/use-resource.d.ts +7 -0
  100. package/lib/types/client/use-resource.d.ts.map +1 -0
  101. package/lib/types/conversation-attention.d.ts +24 -0
  102. package/lib/types/conversation-attention.d.ts.map +1 -0
  103. package/lib/types/directory-reader.d.ts +23 -0
  104. package/lib/types/directory-reader.d.ts.map +1 -0
  105. package/lib/types/dsh-session-events.d.ts +8 -0
  106. package/lib/types/dsh-session-events.d.ts.map +1 -0
  107. package/lib/types/extensions/session-preview-attachments.d.ts.map +1 -1
  108. package/lib/types/host-api.d.ts.map +1 -1
  109. package/lib/types/http-retry-after.d.ts +3 -0
  110. package/lib/types/http-retry-after.d.ts.map +1 -0
  111. package/lib/types/index.d.ts.map +1 -1
  112. package/lib/types/local-database.d.ts +2 -2
  113. package/lib/types/local-database.d.ts.map +1 -1
  114. package/lib/types/openapi-capability-gateway.d.ts +3 -1
  115. package/lib/types/openapi-capability-gateway.d.ts.map +1 -1
  116. package/lib/types/outgoing-call-assets.d.ts.map +1 -1
  117. package/lib/types/realtime-events.d.ts.map +1 -1
  118. package/lib/types/record-topic-assignment-contract.d.ts +12 -0
  119. package/lib/types/record-topic-assignment-contract.d.ts.map +1 -0
  120. package/lib/types/record-topic-assignment-ref.d.ts +11 -0
  121. package/lib/types/record-topic-assignment-ref.d.ts.map +1 -0
  122. package/lib/types/recording-directory-import.d.ts +55 -0
  123. package/lib/types/recording-directory-import.d.ts.map +1 -0
  124. package/lib/types/recording-directory-source.d.ts +40 -0
  125. package/lib/types/recording-directory-source.d.ts.map +1 -0
  126. package/lib/types/recording-import-contract.d.ts +58 -1
  127. package/lib/types/recording-import-contract.d.ts.map +1 -1
  128. package/lib/types/recording-import-coordinator.d.ts +2 -2
  129. package/lib/types/recording-import-coordinator.d.ts.map +1 -1
  130. package/lib/types/recording-import-probe.d.ts +6 -0
  131. package/lib/types/recording-import-probe.d.ts.map +1 -1
  132. package/lib/types/recording-tool-import.d.ts +6 -0
  133. package/lib/types/recording-tool-import.d.ts.map +1 -0
  134. package/lib/types/request-coordinator.d.ts +14 -0
  135. package/lib/types/request-coordinator.d.ts.map +1 -1
  136. package/lib/types/sdk/index.d.ts +8 -0
  137. package/lib/types/sdk/index.d.ts.map +1 -1
  138. package/lib/types/services/ai-video-service.d.ts +2 -1
  139. package/lib/types/services/ai-video-service.d.ts.map +1 -1
  140. package/lib/types/services/bot-service.d.ts.map +1 -1
  141. package/lib/types/services/call-history-service.d.ts +2 -0
  142. package/lib/types/services/call-history-service.d.ts.map +1 -1
  143. package/lib/types/services/chat-policy.d.ts +18 -0
  144. package/lib/types/services/chat-policy.d.ts.map +1 -0
  145. package/lib/types/services/chat-realtime-service.d.ts +7 -2
  146. package/lib/types/services/chat-realtime-service.d.ts.map +1 -1
  147. package/lib/types/services/chat-service.d.ts +5 -2
  148. package/lib/types/services/chat-service.d.ts.map +1 -1
  149. package/lib/types/services/contact-directory-service.d.ts +7 -2
  150. package/lib/types/services/contact-directory-service.d.ts.map +1 -1
  151. package/lib/types/services/conversation-directory-service.d.ts +2 -0
  152. package/lib/types/services/conversation-directory-service.d.ts.map +1 -1
  153. package/lib/types/services/directory-snapshot.d.ts +20 -0
  154. package/lib/types/services/directory-snapshot.d.ts.map +1 -0
  155. package/lib/types/services/group-service.d.ts.map +1 -1
  156. package/lib/types/services/profile-service.d.ts.map +1 -1
  157. package/lib/types/services/record-reedit-attachments.d.ts +1 -0
  158. package/lib/types/services/record-reedit-attachments.d.ts.map +1 -1
  159. package/lib/types/services/record-service.d.ts.map +1 -1
  160. package/lib/types/services/record-topic-assignment-service.d.ts +11 -0
  161. package/lib/types/services/record-topic-assignment-service.d.ts.map +1 -0
  162. package/lib/types/services/recording-import-gateway.d.ts +8 -1
  163. package/lib/types/services/recording-import-gateway.d.ts.map +1 -1
  164. package/lib/types/services/recording-service.d.ts +8 -7
  165. package/lib/types/services/recording-service.d.ts.map +1 -1
  166. package/lib/types/services/service.d.ts +20 -4
  167. package/lib/types/services/service.d.ts.map +1 -1
  168. package/lib/types/services/source-service.d.ts +8 -1
  169. package/lib/types/services/source-service.d.ts.map +1 -1
  170. package/lib/types/services/team-service.d.ts +3 -1
  171. package/lib/types/services/team-service.d.ts.map +1 -1
  172. package/lib/types/services/user-ban-service.d.ts +1 -0
  173. package/lib/types/services/user-ban-service.d.ts.map +1 -1
  174. package/lib/types/state-store.d.ts +2 -2
  175. package/lib/types/state-store.d.ts.map +1 -1
  176. package/lib/types/tools/business/contacts/directory.d.ts +2 -0
  177. package/lib/types/tools/business/contacts/directory.d.ts.map +1 -0
  178. package/lib/types/tools/business/index.d.ts.map +1 -1
  179. package/lib/types/tools/business/media/ai-video.d.ts +2 -1
  180. package/lib/types/tools/business/media/ai-video.d.ts.map +1 -1
  181. package/lib/types/tools/business/recordings/import-folder.d.ts +2 -0
  182. package/lib/types/tools/business/recordings/import-folder.d.ts.map +1 -0
  183. package/lib/types/tools/business/recordings/import.d.ts +2 -0
  184. package/lib/types/tools/business/recordings/import.d.ts.map +1 -0
  185. package/lib/types/tools/business/recordings/index.d.ts +0 -10
  186. package/lib/types/tools/business/recordings/index.d.ts.map +1 -1
  187. package/lib/types/tools/contract/module.d.ts +2 -2
  188. package/lib/types/tools/contract/module.d.ts.map +1 -1
  189. package/lib/types/tools/ports/ai-video.d.ts +2 -1
  190. package/lib/types/tools/ports/ai-video.d.ts.map +1 -1
  191. package/lib/types/tools/ports/recordings.d.ts +8 -6
  192. package/lib/types/tools/ports/recordings.d.ts.map +1 -1
  193. package/lib/types/tools/prompts/business.d.ts.map +1 -1
  194. package/lib/types/tools/registry/registrar.d.ts +1 -1
  195. package/lib/types/tools/registry/registrar.d.ts.map +1 -1
  196. package/lib/types/tools/shared/conversational-confirmation.d.ts +12 -2
  197. package/lib/types/tools/shared/conversational-confirmation.d.ts.map +1 -1
  198. package/lib/types/types.d.ts +49 -13
  199. package/lib/types/types.d.ts.map +1 -1
  200. package/package.json +5 -5
  201. package/lib/types/chat-pin-projection.d.ts +0 -4
  202. package/lib/types/chat-pin-projection.d.ts.map +0 -1
@@ -0,0 +1,12 @@
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-incoming">
4
+ <g id="call-incoming">
5
+ <g id="call-incoming_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="M16.2 7.8H21M16.2 7.8V3V7.8Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </g>
12
+ </svg>
@@ -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/call">
4
+ <g id="call">
5
+ <g id="call_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
+ </g>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,12 @@
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-outgoing">
4
+ <g id="call-outgoing">
5
+ <g id="call-outgoing_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="M20 4H15.2M20 4V8.8V4Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,9 @@
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="video-incoming">
4
+ <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"/>
5
+ <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"/>
6
+ <path d="M13.37 16H5.37V8" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
+ </g>
8
+ </g>
9
+ </svg>
@@ -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/video">
4
+ <g id="video">
5
+ <path id="Vector" 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"/>
6
+ <path id="Vector_2" 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"/>
7
+ <path id="Vector_3" 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"/>
8
+ </g>
9
+ </g>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,9 @@
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="video-outgoing">
4
+ <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"/>
5
+ <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"/>
6
+ <path d="M5.37 8H13.37V16" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
+ </g>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,53 @@
1
+ # 成员统计审查与验证
2
+
3
+ ## 范围与结论
4
+
5
+ 审查插件相对 official/dev `49f9c57` 的本任务差异,以及 Chat 后端相对 develop `ebf0109` 的完整差异;覆盖已部署功能提交 `73809d7` 和本次审查修复。客户端参考 `97800db`,仅运行载体,无源码修改。未追逐其他业务分支或改动测试账号昵称。
6
+
7
+ 保留“基础名单分页、资料按批补齐”的既有架构。Chat 持有查询与权限,插件 Host 持有安全引用和展示投影;UI、SDK、Tools 复用同一业务入口。统计需求通过请求字段表达,不建立第二套数据源或生命周期。
8
+
9
+ ## 已确认并修复的问题
10
+
11
+ | 问题 | 修复 | 证据 |
12
+ | --- | --- | --- |
13
+ | 统计聚合失败会阻断成员资料,慢统计会占满资料请求预算 | 统计使用独立 2 秒子上下文;失败仍返回身份,去除响应中的旧计数,取消仍失败 | Handler 回归先失败后通过,覆盖未请求、成功、失败、父请求取消、权限拒绝;校验原成员 extra 未被修改 |
14
+ | 非法统计被标记未知,但越界数字仍可能进入缓存校验,导致整批资料更新被拒绝 | Host 统一校验两个非负安全整数,未知值归一化为安全占位,展示依据 statsKnown | 真实 Host、SQLite、公开 SDK 合同覆盖缺失、负数、小数、两个字段分别越界、真实零与非零 |
15
+ | 未知统计被成员目录标记为新鲜,后续读取可能直接复用不完整状态 | 复用原有 presentationFailed/stale 判断,未知统计也允许下次正常刷新 | 失败时身份可用;下一次读取补齐;成功后不重复请求,无新增定时器 |
16
+
17
+ ## 架构、数据与资源核对
18
+
19
+ - 基础分页不等待统计;成员资料最多两批并行、每批 50 人,复用既有请求协调器、取消和生命周期。
20
+ - 不把成员身份、资料可用性、统计已知、实际零值、无昵称与权限失效混为一谈;权限拒绝仍清除对应成员缓存,统计失败不删除成员。
21
+ - 聚合复用原发送记录与提及记录语义;快记按当前群及目标 sender 过滤,提及计数包括 @所有人,不以当前加载页长度推算总数。
22
+ - Mongo 实际请求只包含两次聚合,使用现有 sender/mention 索引。100 条测试数据中快记查询扫描 10 个索引键、10 条文档;提及查询扫描 5 个索引键、0 条文档。Explain 无 COLLSCAN,无新增索引。
23
+ - 业务集合没有新增写入、迁移或持久状态。响应 extra 使用既有克隆投影;失败清理不会改动原成员数据。
24
+ - 插件沿用已有 statsKnown 数据合同,不增加版本分支、旧接口探测、双读兜底、配置项、依赖、提示词、根 README 或版本号修改。
25
+
26
+ ## 验证
27
+
28
+ - 插件全量 4915 项通过、6 项跳过;相关测试 32 项通过,覆盖 SDK、官方 DSH ToolRuntime、真实 SQLite、UI 菜单和 500 人慢网络分页;typecheck 通过。
29
+ - Chat Handler 包全量测试、相关真实 Mongo 测试、go vet、backend_guard 通过。
30
+ - 原有 Chat Mongo 全包的 12 项失败已在未修改基线复现;这不是全包全绿证明。测试机没有 Docker,Mongo 检查使用独立临时目录中的原生 Mongo 7.0.14。
31
+ - 初次部署后的真实测试群 23 名成员计数与旧完整名单逐人一致,100 人群全部资料与统计已取得;51 个空昵称为测试账号现有数据,按用户要求不处理。
32
+
33
+ ## 既有问题与边界
34
+
35
+ 此前额外发现的入群提示问题(空群昵称丢事件、邀请人跨页丢引用)位于未修改的基线投影逻辑,本轮未混入统计修复,也不声称它们已经修复。
36
+
37
+ 尚未做 Windows/Linux 实机和长期压力测试。无平台代码变更;本轮不能据此承诺任何环境下绝无缺陷。最终提交、部署和桌面复验状态在交付时分别记录。
38
+
39
+ ## 最终交付状态
40
+
41
+ 后端审查修复已提交并推送为 `ae68cc6accd0a32f05c902b813315fab18d93247`,develop 集成提交 `69959942884643f21f5c83884201c735c55a318c` 与功能分支源码树一致;测试流水线 #668 签出该 SHA,构建、分发、重启均为 SUCCESS。
42
+
43
+ 插件最终 tgz 已通过包清单、路径检查,并安装到官方 DSH 0.1.1-rc.2 的全新 Profile。隔离运行验证了 7 名成员在统计不可用时仍返回身份,后续恢复为 0 至 6 条。统计未知/恢复没有额外协议探测或全名单请求。
44
+
45
+ 本任务 Arkme Test 已重启加载最终代码并保持运行;真实百人群缓存包含 100 名成员,100 人统计均已知,非零数包括 280、101、4、2、1。成员面板与输入框可用;重启后窗口置前即正常显示,未见 renderer/slot 崩溃。原有正式客户端未被操作。
46
+
47
+ 插件版本保持 0.1.49;客户端、DSH 上游源码未改。审查专用 Mongo、合成 Profile 进程与合成凭据已清理,真实测试客户端和用户数据保留。
48
+
49
+ ## 提交前基线复核
50
+
51
+ 后端 MR 从最新 master `aee1dc3` 仅提取本次两笔提交,未包含 develop 的其他功能;新基线上的 Handler 全包、相关 Mongo/Explain、go vet 和规范检查通过。
52
+
53
+ 插件提交前已适配 dev `4b70c9c`。该上游提交中的 `src/services/conversation-directory-service.ts` 引用了未入库的 `src/chat-pin-projection.ts`:本分支和未修改的独立 dev worktree 均报相同 TS2307。此前 4915 项全量通过对应初审基线;适配后 4 个相关测试文件、36 项通过,另一个合同测试文件被上述上游缺文件阻断。未将此上游置顶投影修复混入成员统计 PR,也未将当前门禁记为全绿;测试客户端保留已验收的运行产物。
@@ -0,0 +1,58 @@
1
+ # 私聊操作菜单
2
+
3
+ 本次实现基线:official/dev `f7a9f1f`。开发前同步 `0bd6b9b`,交付前再次 rebase,纳入会话策略、输入框聚焦、个人快记主题和成员统计更新。合并前审核期间继续合入 `dev@3acb791` 的图片预览与快记背景音更新,保留已推送任务历史并重新回归。一次性替换菜单客户端状态管理,不新增配置、灰度或业务接口。
4
+
5
+ ## 能力边界
6
+
7
+ | 消费面 | 本次范围 | 验证 |
8
+ | --- | --- | --- |
9
+ | UI | 统一菜单、共享查询快照、明确操作意图、身份隔离及失败恢复 | 资源/业务/组件/Sidebar 回归及页面验收 |
10
+ | Host owner | 沿用现有服务;补齐相关录音取消信号,封禁解析与提交绑定同一登录上下文 | 分发、服务及真实 HTTP 连通测试 |
11
+ | SDK | 不新增业务能力;沿用现有查询、写入与取消合同 | 既有 SDK 合同回归 |
12
+ | Tools | 不新增业务能力;沿用权限、确认及版本校验 | 既有工具合同回归 |
13
+
14
+ 公共资源层不解释员工、拒收或封禁,只管理请求合并、快照、失效、操作屏障和有界缓存。业务通过 Interface 接入,不使用动态工作流引擎。
15
+
16
+ 展示默认值不写成真实事实。拒收未知时不伪造 revision/canSend;已知拒收仍约束编辑器。菜单后台刷新不禁用其他操作;员工入口只使用当前账号本次登录经网络核验且有效的身份,服务端仍实时校验权限。
17
+
18
+ 身份展示新鲜度采用内部 60 秒上限,不持久化授予资格;这不是远端角色撤销零延迟的保证。未知/过期身份隐藏受限项,仍有效身份刷新时不闪烁。
19
+
20
+ 持久化拒收沿用现有存储协议,不增加双读迁移路径;共享内存快照按稳定会话身份管理,引用变化更新请求绑定,不丢弃已知事实。
21
+
22
+ 查询失败保留事实;修改失败保留对应业务的恢复语义。拒收冲突不自动重放;封禁未确认时明确重试原命令,不把反向动作当恢复。默认缓存不替代服务端权限、目标或版本校验。
23
+
24
+ 查询重试开始不清除已知错误,只有成功结果才能解除已知的权限拒绝。身份查询失败后,用户重新打开菜单会重新核验;仍有效身份无需等待后台刷新。封禁 Host owner 在解析私聊对端前后校验账号和登录凭据,并将同一会话传给 Backend;账号变化不能借用新账号提交旧操作。
25
+
26
+ ## 资源与扩展
27
+
28
+ | 资源 | 键与策略 | 默认展示 |
29
+ | --- | --- | --- |
30
+ | 当前身份 | 当前环境与账号;每次登录重新确认,登录预热、前台恢复与过期核验 | 未确认不显示员工项 |
31
+ | 相关录音资格 | 当前环境与账号;只共享 able-func 资格,每次打开仍以当前私聊引用刷新 | 无缓存隐藏 |
32
+ | 拒收准入 | 账号 + 稳定会话键;保留完整投影,两个版本轴均不得倒退 | 未勾选,不伪造发送权限或版本 |
33
+ | 对端封禁 | 账号 + 稳定会话键;只有已核验员工打开菜单才读取 | 员工显示“封禁用户” |
34
+
35
+ 相关录音列表、私聊目标解析和最终写入权限仍由原 Host/服务端 owner 校验。账号级资格缓存不授权访问另一个私聊或预加载录音列表。引用更新不会清空同一会话的已知事实。
36
+
37
+ 新增选项在 `privateChatActionItems` 中显式声明可见条件、标签、固定 id 和动作;需要查询时在 `PrivateChatActionsPort` 下接入独立业务资源。无需修改公共 Store 或菜单渲染器,不引入动态注册框架、依赖图、轮询配置或兼容双读分支。
38
+
39
+ 查询刷新不禁用按钮;仅对应项目执行修改时禁用。指针按下时捕获动作意图,行集合变化则取消当前手势;支持方向键、Home/End、Escape、Tab 和焦点恢复。使用实际菜单尺寸定位。
40
+
41
+ ## 验证记录(2026-09-09)
42
+
43
+ - Node 24.19.0 类型构建、全量测试及 bundle 构建通过:460 个测试文件通过、4 个跳过;5,124 项测试通过、6 项跳过。仓库已有跳过项未改为已验收。
44
+ - 资源、业务、DOM 与 Sidebar 测试覆盖无缓存/离线、存量持久化数据、双版本冲突、读写竞态、同帧重复点击、取消确认、换账号/同账号重新登录、Provider 失效、权限过期、封禁不确定结果及第四项扩展。
45
+ - 通过官方 DSH CLI 将不可变 `.tgz` 安装到全新临时 Home、带空格路径的独立 Profile,插件版本仍为 `0.1.49`。实际运行时为未修改的官方 `0.1.0-rc.8`;原有常驻实例未改动。
46
+ - 制品页面通过本地 Host 响应夹具验收:30 秒慢请求下无加载占位;热打开重新请求;Escape 恢复焦点;普通账号无封禁入口且封禁查询为 0;资格失败可独立重试;拒收/解除恢复原草稿,消息发送次数为 0。
47
+ - 模拟封禁已写事实但投影失败:读取已封禁仍显示“重试封禁用户”;两次提交均为封禁,没有误发解封,成功回执后才显示解封。
48
+ - 手动页面夹具:`node tests/fixtures/private-chat-actions-browser.mjs <隔离 DSH 的 loopback 地址>`。所有 Arkme API 路径均由夹具处理,不转发业务写入;只适用于无真实凭据的隔离实例。
49
+
50
+ ## 明确边界
51
+
52
+ - 角色展示最多复用 60 秒的当前登录已验证身份;没有实时角色撤销推送,不宣称远端撤销零延迟消失。未知、过期、账号切换和已知权限拒绝均保守隐藏;Backend 仍实时鉴权。
53
+ - 封禁没有公开 CAS 版本,不能宣称解决多管理员同时修改。未确认操作的同向重试保留在当前客户端资源生命周期内,不新增跨重启持久化命令队列。
54
+ - 页面验收使用模拟业务数据;没有对生产或测试服真实用户执行拒收/封禁。Windows/Linux 未进行真实系统运行验收;本次没有改动平台、进程、路径或凭据实现。
55
+ - 缓存不保证减少请求:每次打开刷新比旧版“成功后永久复用”请求更多;完整身份查询沿用 Profile 服务及其头像补全,不新增轻量身份接口。
56
+ - 本次不修改服务端业务合同、插件版本或根 README。按后续明确授权提交并推送任务分支;不合并、发布或替换常驻插件。
57
+
58
+ 后续合并前审核、修复循环及分层验证记录位于仓库 `docs/changes/private-chat-actions-premerge-review.md`(审核资料不随运行制品发布)。
@@ -59,3 +59,13 @@ Chat 后端新增分页的真实 Mongo 验证覆盖 500 人/10 页、无重复
59
59
  代码基线:插件 official/dev 121f68e9;后端 master 9f649eac;合同 meta master 8bb0b7a9。没有生产部署、PR、版本变更或 Windows/Linux 实机验收。
60
60
 
61
61
  已存在内容时采用静默刷新:成员标题和已读详情不显示“更新中”或“正在更新”,不插入资料加载行;首次无数据与真实失败保留必要反馈。
62
+
63
+ ## 成员统计合同
64
+
65
+ 成员资料请求固定传入 `include_stats: true`,继续通过现有 `source.members.presentation` 服务 UI、Tools 和 SDK。Chat 后端按本批至多 50 个成员聚合 `extra.record_count` 与 `extra.mention_count`,复用完整名单的可见性、撤回及 @所有人语义;不传参数的身份查询不增加统计开销。
66
+
67
+ 统计是可选展示数据:查询最多占用 2 秒,失败时保留已授权的身份与昵称,并从响应中移除两个统计字段,不采用持久化 extra 中可能过期的计数。请求取消仍按取消处理,不伪装成功。统计聚合与响应清理均不写业务数据。
68
+
69
+ 插件只有在两个统计字段都是非负安全整数时设置 `statsKnown: true`。缺失或非法值保持未知并归一化为安全占位值;成员行、菜单及快记标题不会显示假零。成员目录在统计未知时保留可用身份,沿用既有失效与刷新入口恢复;真实零和未设置昵称都不等同于加载失败。
70
+
71
+ 本次没有新增 Host 路由、版本探测、全名单兜底、轮询、状态机、提示词或插件版本变更。详见 [成员统计审查与验证](member-statistics-review.md)。