@messenger-box/platform-server 10.0.3-alpha.2 → 10.0.3-alpha.201

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 (303) hide show
  1. package/lib/channels/ack-reactions.d.ts +46 -0
  2. package/lib/channels/ack-reactions.js +48 -0
  3. package/lib/channels/ack-reactions.js.map +1 -0
  4. package/lib/channels/allowlist-match.d.ts +38 -0
  5. package/lib/channels/allowlist-match.js +67 -0
  6. package/lib/channels/allowlist-match.js.map +1 -0
  7. package/lib/channels/channel-config.d.ts +46 -0
  8. package/lib/channels/channel-config.js +63 -0
  9. package/lib/channels/channel-config.js.map +1 -0
  10. package/lib/channels/command-gating.d.ts +47 -0
  11. package/lib/channels/command-gating.js +52 -0
  12. package/lib/channels/command-gating.js.map +1 -0
  13. package/lib/channels/conversation-label.d.ts +23 -0
  14. package/lib/channels/conversation-label.js +43 -0
  15. package/lib/channels/conversation-label.js.map +1 -0
  16. package/lib/channels/index.d.ts +18 -0
  17. package/lib/channels/mention-gating.d.ts +50 -0
  18. package/lib/channels/mention-gating.js +72 -0
  19. package/lib/channels/mention-gating.js.map +1 -0
  20. package/lib/channels/registry.d.ts +23 -0
  21. package/lib/channels/registry.js +282 -0
  22. package/lib/channels/registry.js.map +1 -0
  23. package/lib/channels/sender-identity.d.ts +11 -0
  24. package/lib/channels/sender-identity.js +48 -0
  25. package/lib/channels/sender-identity.js.map +1 -0
  26. package/lib/channels/session.d.ts +63 -0
  27. package/lib/channels/session.js +29 -0
  28. package/lib/channels/session.js.map +1 -0
  29. package/lib/channels/types.d.ts +147 -0
  30. package/lib/channels/types.js +28 -0
  31. package/lib/channels/types.js.map +1 -0
  32. package/lib/channels/typing.d.ts +62 -0
  33. package/lib/channels/typing.js +37 -0
  34. package/lib/channels/typing.js.map +1 -0
  35. package/lib/channels/typing.test.d.ts +1 -0
  36. package/lib/config/env-config.d.ts +7 -0
  37. package/lib/config/env-config.js +21 -1
  38. package/lib/config/env-config.js.map +1 -1
  39. package/lib/constants/default-channel-props.d.ts +11 -0
  40. package/lib/constants/default-channel-props.js +32 -0
  41. package/lib/constants/default-channel-props.js.map +1 -0
  42. package/lib/constants/default-notify-props.js.map +1 -1
  43. package/lib/constants/index.d.ts +1 -0
  44. package/lib/constants/query.constants.js.map +1 -1
  45. package/lib/containers/containers.js +13 -7
  46. package/lib/containers/containers.js.map +1 -1
  47. package/lib/containers/context-services-from-container.d.ts +2 -2
  48. package/lib/containers/context-services-from-container.js +7 -7
  49. package/lib/containers/context-services-from-container.js.map +1 -1
  50. package/lib/gateway/channel-registry.d.ts +10 -0
  51. package/lib/gateway/gateway-service.d.ts +23 -0
  52. package/lib/gateway/index.d.ts +4 -0
  53. package/lib/gateway/message-router.d.ts +20 -0
  54. package/lib/gateway/types.d.ts +270 -0
  55. package/lib/graphql/resolvers/channel-capabilities.d.ts +13 -0
  56. package/lib/graphql/resolvers/channel-capabilities.js +179 -0
  57. package/lib/graphql/resolvers/channel-capabilities.js.map +1 -0
  58. package/lib/graphql/resolvers/channel-member.d.ts +3 -3
  59. package/lib/graphql/resolvers/channel-member.js +30 -5
  60. package/lib/graphql/resolvers/channel-member.js.map +1 -1
  61. package/lib/graphql/resolvers/channel.d.ts +3 -3
  62. package/lib/graphql/resolvers/channel.js +348 -55
  63. package/lib/graphql/resolvers/channel.js.map +1 -1
  64. package/lib/graphql/resolvers/chat-configuration.d.ts +59 -0
  65. package/lib/graphql/resolvers/chat-configuration.js +89 -0
  66. package/lib/graphql/resolvers/chat-configuration.js.map +1 -0
  67. package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
  68. package/lib/graphql/resolvers/extended-token-account.js +90 -23
  69. package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
  70. package/lib/graphql/resolvers/gateway.d.ts +18 -0
  71. package/lib/graphql/resolvers/index.d.ts +47 -26
  72. package/lib/graphql/resolvers/index.js +1 -1
  73. package/lib/graphql/resolvers/index.js.map +1 -1
  74. package/lib/graphql/resolvers/post-thread.d.ts +2 -3
  75. package/lib/graphql/resolvers/post-thread.js +294 -132
  76. package/lib/graphql/resolvers/post-thread.js.map +1 -1
  77. package/lib/graphql/resolvers/post.d.ts +2 -3
  78. package/lib/graphql/resolvers/post.js +764 -237
  79. package/lib/graphql/resolvers/post.js.map +1 -1
  80. package/lib/graphql/resolvers/reaction.d.ts +3 -3
  81. package/lib/graphql/resolvers/reaction.js +96 -14
  82. package/lib/graphql/resolvers/reaction.js.map +1 -1
  83. package/lib/graphql/resolvers/streaming.d.ts +20 -0
  84. package/lib/graphql/resolvers/streaming.js +147 -0
  85. package/lib/graphql/resolvers/streaming.js.map +1 -0
  86. package/lib/graphql/schema/channel-capabilities.graphql +492 -0
  87. package/lib/graphql/schema/channel-capabilities.graphql.js +1 -0
  88. package/lib/graphql/schema/channel-capabilities.graphql.js.map +1 -0
  89. package/lib/graphql/schema/channel-member.graphql +110 -21
  90. package/lib/graphql/schema/channel-member.graphql.js +1 -1
  91. package/lib/graphql/schema/channel.graphql +465 -24
  92. package/lib/graphql/schema/channel.graphql.js +1 -1
  93. package/lib/graphql/schema/chat-configuration.graphql +77 -0
  94. package/lib/graphql/schema/chat-configuration.graphql.js +1 -0
  95. package/lib/graphql/schema/chat-configuration.graphql.js.map +1 -0
  96. package/lib/graphql/schema/gateway.graphql +363 -0
  97. package/lib/graphql/schema/index.js +2 -2
  98. package/lib/graphql/schema/index.js.map +1 -1
  99. package/lib/graphql/schema/post-thread.graphql +167 -21
  100. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  101. package/lib/graphql/schema/post.graphql +433 -36
  102. package/lib/graphql/schema/post.graphql.js +1 -1
  103. package/lib/graphql/schema/preferences.graphql +190 -3
  104. package/lib/graphql/schema/preferences.graphql.js +1 -1
  105. package/lib/graphql/schema/reaction.graphql +71 -13
  106. package/lib/graphql/schema/reaction.graphql.js +1 -1
  107. package/lib/graphql/schema/services.graphql +18 -0
  108. package/lib/graphql/schema/streaming.graphql +224 -0
  109. package/lib/graphql/schema/streaming.graphql.js +1 -0
  110. package/lib/graphql/schema/streaming.graphql.js.map +1 -0
  111. package/lib/graphql/schema/users.graphql +76 -13
  112. package/lib/graphql/schema/users.graphql.js +1 -1
  113. package/lib/graphql/schema/workflow-service.graphql +82 -0
  114. package/lib/index.d.ts +3 -1
  115. package/lib/index.js +1 -1
  116. package/lib/index.js.map +1 -1
  117. package/lib/interfaces/index.d.ts +0 -2
  118. package/lib/interfaces/services.d.ts +1 -3
  119. package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.d.ts +42 -0
  120. package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.js +60 -0
  121. package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.js.map +1 -0
  122. package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.d.ts +21 -0
  123. package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.js +30 -0
  124. package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.js.map +1 -0
  125. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
  126. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
  127. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
  128. package/lib/migrations/dbMigrations/index.d.ts +3 -0
  129. package/lib/migrations/index.d.ts +1 -0
  130. package/lib/migrations/mail-template-migration.d.ts +3 -6
  131. package/lib/migrations/mail-template-migration.js +8 -21
  132. package/lib/migrations/mail-template-migration.js.map +1 -1
  133. package/lib/migrations/message-notification-template-migration.d.ts +4 -7
  134. package/lib/migrations/message-notification-template-migration.js +8 -25
  135. package/lib/migrations/message-notification-template-migration.js.map +1 -1
  136. package/lib/module.d.ts +1 -1
  137. package/lib/module.js +3 -10
  138. package/lib/module.js.map +1 -1
  139. package/lib/plugins/ChannelMoleculerService.d.ts +39 -0
  140. package/lib/plugins/ChannelMoleculerService.js +58 -0
  141. package/lib/plugins/ChannelMoleculerService.js.map +1 -0
  142. package/lib/plugins/ExtendedTokenAccountMoleculerService.d.ts +65 -0
  143. package/lib/plugins/ExtendedTokenAccountMoleculerService.js +88 -0
  144. package/lib/plugins/ExtendedTokenAccountMoleculerService.js.map +1 -0
  145. package/lib/plugins/MessengerNotificationMoleculerService.d.ts +52 -0
  146. package/lib/plugins/MessengerNotificationMoleculerService.js +84 -0
  147. package/lib/plugins/MessengerNotificationMoleculerService.js.map +1 -0
  148. package/lib/plugins/PostMoleculerService.d.ts +65 -0
  149. package/lib/plugins/PostMoleculerService.js +87 -0
  150. package/lib/plugins/PostMoleculerService.js.map +1 -0
  151. package/lib/plugins/PostThreadMoleculerService.d.ts +40 -0
  152. package/lib/plugins/PostThreadMoleculerService.js +59 -0
  153. package/lib/plugins/PostThreadMoleculerService.js.map +1 -0
  154. package/lib/plugins/ReactionMoleculerService.d.ts +37 -0
  155. package/lib/plugins/ReactionMoleculerService.js +56 -0
  156. package/lib/plugins/ReactionMoleculerService.js.map +1 -0
  157. package/lib/plugins/index.d.ts +18 -6
  158. package/lib/preferences/permissions/inbox-permission-contribution.js +58 -97
  159. package/lib/preferences/permissions/inbox-permission-contribution.js.map +1 -1
  160. package/lib/preferences/permissions/inbox-roles-permission-overwrite.js +144 -144
  161. package/lib/preferences/permissions/inbox-roles-permission-overwrite.js.map +1 -1
  162. package/lib/preferences/settings/channel-settings.d.ts +39 -0
  163. package/lib/preferences/settings/channel-settings.js +180 -0
  164. package/lib/preferences/settings/channel-settings.js.map +1 -0
  165. package/lib/preferences/settings/chat-settings.d.ts +248 -0
  166. package/lib/preferences/settings/chat-settings.js +1152 -0
  167. package/lib/preferences/settings/chat-settings.js.map +1 -0
  168. package/lib/preferences/settings/index.d.ts +3 -0
  169. package/lib/preferences/settings/messenger-channels-contribution.d.ts +39 -0
  170. package/lib/preferences/settings/messenger-channels-contribution.js +355 -0
  171. package/lib/preferences/settings/messenger-channels-contribution.js.map +1 -0
  172. package/lib/preferences/settings/post-settings.d.ts +16 -0
  173. package/lib/preferences/settings/post-settings.js +75 -3
  174. package/lib/preferences/settings/post-settings.js.map +1 -1
  175. package/lib/services/channel-service.d.ts +215 -34
  176. package/lib/services/channel-service.js +1058 -273
  177. package/lib/services/channel-service.js.map +1 -1
  178. package/lib/services/extended-token-account-service.d.ts +175 -20
  179. package/lib/services/extended-token-account-service.js +636 -56
  180. package/lib/services/extended-token-account-service.js.map +1 -1
  181. package/lib/services/messenger-notification-service.d.ts +177 -17
  182. package/lib/services/messenger-notification-service.js +975 -421
  183. package/lib/services/messenger-notification-service.js.map +1 -1
  184. package/lib/services/post-service.d.ts +245 -18
  185. package/lib/services/post-service.js +1027 -113
  186. package/lib/services/post-service.js.map +1 -1
  187. package/lib/services/post-thread-service.d.ts +153 -6
  188. package/lib/services/post-thread-service.js +475 -9
  189. package/lib/services/post-thread-service.js.map +1 -1
  190. package/lib/services/proxy-services/ChannelProxyService.d.ts +27 -0
  191. package/lib/services/proxy-services/ChannelProxyService.js +31 -0
  192. package/lib/services/proxy-services/ChannelProxyService.js.map +1 -0
  193. package/lib/services/proxy-services/ExtendedTokenAccountProxyService.d.ts +42 -0
  194. package/lib/services/proxy-services/ExtendedTokenAccountProxyService.js +46 -0
  195. package/lib/services/proxy-services/ExtendedTokenAccountProxyService.js.map +1 -0
  196. package/lib/services/proxy-services/MessengerNotificationProxyService.d.ts +44 -0
  197. package/lib/services/proxy-services/MessengerNotificationProxyService.js +54 -0
  198. package/lib/services/proxy-services/MessengerNotificationProxyService.js.map +1 -0
  199. package/lib/services/proxy-services/PostProxyService.d.ts +42 -0
  200. package/lib/services/proxy-services/PostProxyService.js +46 -0
  201. package/lib/services/proxy-services/PostProxyService.js.map +1 -0
  202. package/lib/services/proxy-services/PostThreadProxyService.d.ts +32 -0
  203. package/lib/services/proxy-services/PostThreadProxyService.js +36 -0
  204. package/lib/services/proxy-services/PostThreadProxyService.js.map +1 -0
  205. package/lib/services/proxy-services/ReactionProxyService.d.ts +41 -0
  206. package/lib/services/proxy-services/ReactionProxyService.js +45 -0
  207. package/lib/services/proxy-services/ReactionProxyService.js.map +1 -0
  208. package/lib/services/proxy-services/index.d.ts +17 -5
  209. package/lib/services/reaction-service.d.ts +124 -4
  210. package/lib/services/reaction-service.js +413 -3
  211. package/lib/services/reaction-service.js.map +1 -1
  212. package/lib/store/models/account-token-store.d.ts +1 -1
  213. package/lib/store/models/account-token-store.js.map +1 -1
  214. package/lib/store/models/channel.d.ts +2 -3
  215. package/lib/store/models/channel.js +216 -70
  216. package/lib/store/models/channel.js.map +1 -1
  217. package/lib/store/models/post-thread.d.ts +3 -3
  218. package/lib/store/models/post-thread.js +96 -14
  219. package/lib/store/models/post-thread.js.map +1 -1
  220. package/lib/store/models/post.d.ts +2 -3
  221. package/lib/store/models/post.js +143 -23
  222. package/lib/store/models/post.js.map +1 -1
  223. package/lib/store/models/reaction.d.ts +2 -3
  224. package/lib/store/models/reaction.js +67 -8
  225. package/lib/store/models/reaction.js.map +1 -1
  226. package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
  227. package/lib/store/repositories/channel-repository.d.ts +6 -6
  228. package/lib/store/repositories/channel-repository.js +5 -2
  229. package/lib/store/repositories/channel-repository.js.map +1 -1
  230. package/lib/store/repositories/post-repository.d.ts +6 -6
  231. package/lib/store/repositories/post-repository.js +5 -2
  232. package/lib/store/repositories/post-repository.js.map +1 -1
  233. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  234. package/lib/store/repositories/post-thread-repository.js +5 -2
  235. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  236. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  237. package/lib/store/repositories/reaction-repository.js +5 -2
  238. package/lib/store/repositories/reaction-repository.js.map +1 -1
  239. package/lib/streaming/block-chunker.d.ts +40 -0
  240. package/lib/streaming/block-chunker.js +103 -0
  241. package/lib/streaming/block-chunker.js.map +1 -0
  242. package/lib/streaming/block-chunker.test.d.ts +1 -0
  243. package/lib/streaming/index.d.ts +4 -0
  244. package/lib/streaming/stream-service.d.ts +71 -0
  245. package/lib/streaming/stream-service.js +325 -0
  246. package/lib/streaming/stream-service.js.map +1 -0
  247. package/lib/streaming/stream-service.test.d.ts +16 -0
  248. package/lib/streaming/streaming-post.integration.test.d.ts +10 -0
  249. package/lib/streaming/types.d.ts +33 -0
  250. package/lib/streaming/types.js +37 -0
  251. package/lib/streaming/types.js.map +1 -0
  252. package/lib/templates/constants/CONTRIBUTION_POINTS.ts.template +78 -0
  253. package/lib/templates/constants/SERVER_TYPES.ts.template +1 -4
  254. package/lib/templates/constants/WorkflowNamespace.ts.template +10 -0
  255. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  256. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  257. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  258. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  259. package/lib/templates/services/ChannelService.ts.template +290 -39
  260. package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
  261. package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
  262. package/lib/templates/services/MessengerStreamService.ts.template +131 -0
  263. package/lib/templates/services/PostService.ts.template +228 -20
  264. package/lib/templates/services/PostThreadService.ts.template +151 -6
  265. package/lib/templates/services/ReactionService.ts.template +129 -3
  266. package/lib/templates/services/RedisCacheManager.ts.template +22 -0
  267. package/package.json +10 -6
  268. package/lib/interfaces/context.d.ts +0 -14
  269. package/lib/plugins/channel-moleculer-service.d.ts +0 -8
  270. package/lib/plugins/channel-moleculer-service.js +0 -129
  271. package/lib/plugins/channel-moleculer-service.js.map +0 -1
  272. package/lib/plugins/extended-token-account-moleculer-service.d.ts +0 -8
  273. package/lib/plugins/extended-token-account-moleculer-service.js +0 -47
  274. package/lib/plugins/extended-token-account-moleculer-service.js.map +0 -1
  275. package/lib/plugins/messenger-notification-moleculer-service.d.ts +0 -9
  276. package/lib/plugins/messenger-notification-moleculer-service.js +0 -116
  277. package/lib/plugins/messenger-notification-moleculer-service.js.map +0 -1
  278. package/lib/plugins/post-moleculer-service.d.ts +0 -35
  279. package/lib/plugins/post-moleculer-service.js +0 -393
  280. package/lib/plugins/post-moleculer-service.js.map +0 -1
  281. package/lib/plugins/post-thread-moleculer-service.d.ts +0 -8
  282. package/lib/plugins/post-thread-moleculer-service.js +0 -33
  283. package/lib/plugins/post-thread-moleculer-service.js.map +0 -1
  284. package/lib/plugins/reaction-moleculer-service.d.ts +0 -8
  285. package/lib/plugins/reaction-moleculer-service.js +0 -20
  286. package/lib/plugins/reaction-moleculer-service.js.map +0 -1
  287. package/lib/services/proxy-services/channel-microservice.d.ts +0 -44
  288. package/lib/services/proxy-services/channel-microservice.js +0 -199
  289. package/lib/services/proxy-services/channel-microservice.js.map +0 -1
  290. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +0 -16
  291. package/lib/services/proxy-services/messenger-notification-microservice.js +0 -54
  292. package/lib/services/proxy-services/messenger-notification-microservice.js.map +0 -1
  293. package/lib/services/proxy-services/post-microservice.d.ts +0 -22
  294. package/lib/services/proxy-services/post-microservice.js +0 -64
  295. package/lib/services/proxy-services/post-microservice.js.map +0 -1
  296. package/lib/services/proxy-services/post-thread-microservice.d.ts +0 -10
  297. package/lib/services/proxy-services/post-thread-microservice.js +0 -15
  298. package/lib/services/proxy-services/post-thread-microservice.js.map +0 -1
  299. package/lib/services/proxy-services/reaction-microservice.d.ts +0 -9
  300. package/lib/services/proxy-services/reaction-microservice.js +0 -10
  301. package/lib/services/proxy-services/reaction-microservice.js.map +0 -1
  302. package/lib/store/models/common-options.js +0 -20
  303. package/lib/store/models/common-options.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Channel registry - inspired by openclaw's registry,
3
+ * adapted to messenger-box's Props architecture.
4
+ *
5
+ * Defines the available channel types with metadata, capabilities,
6
+ * and dock configuration. Extends the existing RoomType enum with
7
+ * rich metadata and capability definitions.
8
+ */
9
+ import type { IChannelCapabilities, IChannelDock, IChannelMeta } from './types';
10
+ /**
11
+ * The ordered list of available channel types in the platform.
12
+ * Maps to RoomType enum values with extended metadata.
13
+ */
14
+ export declare const CHANNEL_TYPE_ORDER: readonly ["direct", "channel", "group", "public", "private", "service", "aiassistant", "visitor"];
15
+ export type ChannelTypeId = (typeof CHANNEL_TYPE_ORDER)[number];
16
+ export declare const DEFAULT_CHANNEL_TYPE: ChannelTypeId;
17
+ export declare const CHANNEL_TYPE_ALIASES: Record<string, ChannelTypeId>;
18
+ export declare function listChannelTypes(): IChannelMeta[];
19
+ export declare function getChannelTypeMeta(id: ChannelTypeId): IChannelMeta;
20
+ export declare function normalizeChannelTypeId(raw?: string | null): ChannelTypeId | null;
21
+ export declare function getChannelDock(id: ChannelTypeId): IChannelDock;
22
+ export declare function getChannelCapabilities(id: ChannelTypeId): IChannelCapabilities;
23
+ export declare function listChannelDocks(): IChannelDock[];
@@ -0,0 +1,282 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Channel Registry
3
+ // ---------------------------------------------------------------------------
4
+ /**
5
+ * The ordered list of available channel types in the platform.
6
+ * Maps to RoomType enum values with extended metadata.
7
+ */
8
+ const CHANNEL_TYPE_ORDER = ['direct', 'channel', 'group', 'public', 'private', 'service', 'aiassistant', 'visitor'];
9
+ const DEFAULT_CHANNEL_TYPE = 'channel';
10
+ // ---------------------------------------------------------------------------
11
+ // Channel Type Metadata
12
+ // ---------------------------------------------------------------------------
13
+ const CHANNEL_TYPE_META = {
14
+ direct: {
15
+ id: 'direct',
16
+ label: 'Direct Message',
17
+ selectionLabel: 'Direct Message (DM)',
18
+ detailLabel: 'Direct Message',
19
+ blurb: 'One-on-one private conversation between two users.',
20
+ systemImage: 'person.2',
21
+ order: 1
22
+ },
23
+ channel: {
24
+ id: 'channel',
25
+ label: 'Channel',
26
+ selectionLabel: 'Channel',
27
+ detailLabel: 'Organization Channel',
28
+ blurb: 'Standard channel for team communication within an organization.',
29
+ systemImage: 'number',
30
+ order: 2
31
+ },
32
+ group: {
33
+ id: 'group',
34
+ label: 'Group',
35
+ selectionLabel: 'Group Chat',
36
+ detailLabel: 'Group Conversation',
37
+ blurb: 'Group conversation with multiple participants.',
38
+ systemImage: 'person.3',
39
+ order: 3
40
+ },
41
+ public: {
42
+ id: 'public',
43
+ label: 'Public',
44
+ selectionLabel: 'Public Channel',
45
+ detailLabel: 'Public Channel',
46
+ blurb: 'Open channel visible and joinable by members from other organizations.',
47
+ systemImage: 'globe',
48
+ order: 4
49
+ },
50
+ private: {
51
+ id: 'private',
52
+ label: 'Private',
53
+ selectionLabel: 'Private Channel',
54
+ detailLabel: 'Private Channel',
55
+ blurb: 'Invite-only channel with restricted access.',
56
+ systemImage: 'lock',
57
+ order: 5
58
+ },
59
+ service: {
60
+ id: 'service',
61
+ label: 'Service',
62
+ selectionLabel: 'Service Channel',
63
+ detailLabel: 'Service Channel',
64
+ blurb: 'Automated service channel for system messages and integrations.',
65
+ systemImage: 'gearshape',
66
+ order: 6
67
+ },
68
+ aiassistant: {
69
+ id: 'aiassistant',
70
+ label: 'AI Assistant',
71
+ selectionLabel: 'AI Assistant Channel',
72
+ detailLabel: 'AI Assistant',
73
+ blurb: 'AI-powered assistant channel for automated responses.',
74
+ systemImage: 'brain',
75
+ order: 7
76
+ },
77
+ visitor: {
78
+ id: 'visitor',
79
+ label: 'Visitor',
80
+ selectionLabel: 'Visitor Channel',
81
+ detailLabel: 'Visitor Channel',
82
+ blurb: 'Channel for external visitors and guest interactions.',
83
+ systemImage: 'person.badge.plus',
84
+ order: 8
85
+ }
86
+ };
87
+ // ---------------------------------------------------------------------------
88
+ // Channel Type Aliases
89
+ // ---------------------------------------------------------------------------
90
+ const CHANNEL_TYPE_ALIASES = {
91
+ dm: 'direct',
92
+ 'direct-message': 'direct',
93
+ pub: 'public',
94
+ priv: 'private',
95
+ svc: 'service',
96
+ ai: 'aiassistant',
97
+ bot: 'aiassistant'
98
+ };
99
+ // ---------------------------------------------------------------------------
100
+ // Registry API
101
+ // ---------------------------------------------------------------------------
102
+ function listChannelTypes() {
103
+ return CHANNEL_TYPE_ORDER.map(id => CHANNEL_TYPE_META[id]);
104
+ }
105
+ function getChannelTypeMeta(id) {
106
+ return CHANNEL_TYPE_META[id];
107
+ }
108
+ function normalizeChannelTypeId(raw) {
109
+ const normalized = raw?.trim().toLowerCase();
110
+ if (!normalized) return null;
111
+ const resolved = CHANNEL_TYPE_ALIASES[normalized] ?? normalized;
112
+ return CHANNEL_TYPE_ORDER.includes(resolved) ? resolved : null;
113
+ }
114
+ // ---------------------------------------------------------------------------
115
+ // Channel Docks (lightweight behavior/metadata per channel type)
116
+ // ---------------------------------------------------------------------------
117
+ const DOCKS = {
118
+ direct: {
119
+ id: 'direct',
120
+ capabilities: {
121
+ chatTypes: ['direct'],
122
+ reactions: true,
123
+ edit: true,
124
+ reply: true,
125
+ threads: true,
126
+ media: true,
127
+ typingIndicators: true,
128
+ readReceipts: true,
129
+ presence: true,
130
+ forwarding: true,
131
+ pinning: true,
132
+ bookmarks: true,
133
+ search: true
134
+ }
135
+ },
136
+ channel: {
137
+ id: 'channel',
138
+ capabilities: {
139
+ chatTypes: ['channel', 'thread'],
140
+ reactions: true,
141
+ edit: true,
142
+ reply: true,
143
+ threads: true,
144
+ media: true,
145
+ typingIndicators: true,
146
+ readReceipts: true,
147
+ presence: true,
148
+ forwarding: true,
149
+ pinning: true,
150
+ bookmarks: true,
151
+ search: true,
152
+ groupManagement: true,
153
+ nativeCommands: true
154
+ },
155
+ threading: {
156
+ replyToMode: 'all'
157
+ }
158
+ },
159
+ group: {
160
+ id: 'group',
161
+ capabilities: {
162
+ chatTypes: ['group', 'thread'],
163
+ reactions: true,
164
+ edit: true,
165
+ reply: true,
166
+ threads: true,
167
+ media: true,
168
+ typingIndicators: true,
169
+ readReceipts: true,
170
+ presence: true,
171
+ forwarding: true,
172
+ pinning: true,
173
+ groupManagement: true,
174
+ search: true
175
+ },
176
+ threading: {
177
+ replyToMode: 'all'
178
+ }
179
+ },
180
+ public: {
181
+ id: 'public',
182
+ capabilities: {
183
+ chatTypes: ['channel', 'thread'],
184
+ reactions: true,
185
+ edit: true,
186
+ reply: true,
187
+ threads: true,
188
+ media: true,
189
+ typingIndicators: true,
190
+ readReceipts: false,
191
+ presence: false,
192
+ forwarding: true,
193
+ pinning: true,
194
+ bookmarks: true,
195
+ search: true,
196
+ groupManagement: true
197
+ },
198
+ threading: {
199
+ replyToMode: 'first'
200
+ }
201
+ },
202
+ private: {
203
+ id: 'private',
204
+ capabilities: {
205
+ chatTypes: ['channel', 'thread'],
206
+ reactions: true,
207
+ edit: true,
208
+ reply: true,
209
+ threads: true,
210
+ media: true,
211
+ typingIndicators: true,
212
+ readReceipts: true,
213
+ presence: true,
214
+ forwarding: true,
215
+ pinning: true,
216
+ bookmarks: true,
217
+ search: true,
218
+ groupManagement: true
219
+ },
220
+ threading: {
221
+ replyToMode: 'all'
222
+ }
223
+ },
224
+ service: {
225
+ id: 'service',
226
+ capabilities: {
227
+ chatTypes: ['channel'],
228
+ reactions: false,
229
+ edit: false,
230
+ reply: false,
231
+ threads: false,
232
+ media: true,
233
+ typingIndicators: false,
234
+ readReceipts: false,
235
+ presence: false,
236
+ nativeCommands: true
237
+ }
238
+ },
239
+ aiassistant: {
240
+ id: 'aiassistant',
241
+ capabilities: {
242
+ chatTypes: ['direct', 'thread'],
243
+ reactions: true,
244
+ edit: false,
245
+ reply: true,
246
+ threads: true,
247
+ media: true,
248
+ typingIndicators: true,
249
+ readReceipts: true,
250
+ blockStreaming: true,
251
+ nativeCommands: true
252
+ },
253
+ streaming: {
254
+ blockStreamingCoalesceDefaults: {
255
+ minChars: 100,
256
+ idleMs: 500
257
+ }
258
+ }
259
+ },
260
+ visitor: {
261
+ id: 'visitor',
262
+ capabilities: {
263
+ chatTypes: ['direct'],
264
+ reactions: false,
265
+ edit: false,
266
+ reply: true,
267
+ media: true,
268
+ typingIndicators: true,
269
+ readReceipts: false,
270
+ presence: false
271
+ }
272
+ }
273
+ };
274
+ function getChannelDock(id) {
275
+ return DOCKS[id];
276
+ }
277
+ function getChannelCapabilities(id) {
278
+ return DOCKS[id].capabilities;
279
+ }
280
+ function listChannelDocks() {
281
+ return CHANNEL_TYPE_ORDER.map(id => DOCKS[id]);
282
+ }export{CHANNEL_TYPE_ALIASES,CHANNEL_TYPE_ORDER,DEFAULT_CHANNEL_TYPE,getChannelCapabilities,getChannelDock,getChannelTypeMeta,listChannelDocks,listChannelTypes,normalizeChannelTypeId};//# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sources":["../../src/channels/registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface ISenderContext {
2
+ chatType?: string;
3
+ senderId?: string;
4
+ senderName?: string;
5
+ senderUsername?: string;
6
+ senderEmail?: string;
7
+ }
8
+ /**
9
+ * Validates sender identity fields, returning a list of issues found
10
+ */
11
+ export declare function validateSenderIdentity(ctx: ISenderContext): string[];
@@ -0,0 +1,48 @@
1
+ import {normalizeChatType}from'./types.js';/**
2
+ * Sender identity validation - inspired by openclaw's sender-identity,
3
+ * adapted to messenger-box's domain model.
4
+ *
5
+ * Validates sender identity fields for inbound messages to ensure
6
+ * proper attribution and security.
7
+ */
8
+ // ---------------------------------------------------------------------------
9
+ // Validation (mirrors openclaw's validateSenderIdentity)
10
+ // ---------------------------------------------------------------------------
11
+ /**
12
+ * Validates sender identity fields, returning a list of issues found
13
+ */
14
+ function validateSenderIdentity(ctx) {
15
+ const issues = [];
16
+ const chatType = normalizeChatType(ctx.chatType);
17
+ const isDirect = chatType === 'direct';
18
+ const senderId = ctx.senderId?.trim() || '';
19
+ const senderName = ctx.senderName?.trim() || '';
20
+ const senderUsername = ctx.senderUsername?.trim() || '';
21
+ const senderEmail = ctx.senderEmail?.trim() || '';
22
+ // In non-direct contexts, require at least one identity field
23
+ if (!isDirect) {
24
+ if (!senderId && !senderName && !senderUsername && !senderEmail) {
25
+ issues.push('missing sender identity (senderId/senderName/senderUsername/senderEmail)');
26
+ }
27
+ }
28
+ // Validate email format if provided
29
+ if (senderEmail) {
30
+ if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(senderEmail)) {
31
+ issues.push(`invalid senderEmail: ${senderEmail}`);
32
+ }
33
+ }
34
+ // Validate username format if provided
35
+ if (senderUsername) {
36
+ if (senderUsername.includes('@')) {
37
+ issues.push(`senderUsername should not include "@": ${senderUsername}`);
38
+ }
39
+ if (/\s/.test(senderUsername)) {
40
+ issues.push(`senderUsername should not include whitespace: ${senderUsername}`);
41
+ }
42
+ }
43
+ // Check for empty-but-set fields
44
+ if (ctx.senderId != null && !senderId) {
45
+ issues.push('senderId is set but empty');
46
+ }
47
+ return issues;
48
+ }export{validateSenderIdentity};//# sourceMappingURL=sender-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender-identity.js","sources":["../../src/channels/sender-identity.ts"],"sourcesContent":[null],"names":[],"mappings":"2CAAA;;;;;;AAMG;AAeH;AACA;AACA;AAEA;;AAEG;AACG,SAAU,sBAAsB,CAAC,GAAmB,EAAA;QACtD,MAAM,GAAM,EAAa;QAEzB,QAAM,oBAAW,CAAA,YAAsB,CAAA;AACvC,EAAA,MAAA,QAAM,GAAQ,QAAG,KAAQ;QAEzB,QAAM,GAAQ,GAAG,CAAA,QAAI,EAAQ,IAAE,EAAI,IAAE,EAAI;QACzC,UAAM,GAAU,GAAG,CAAA,UAAI,EAAU,IAAE,EAAI,IAAE,EAAI;QAC7C,cAAM,GAAc,GAAG,CAAA,cAAI,EAAc,IAAE,EAAI,IAAE,EAAI;QACrD,WAAM,GAAW,GAAG,CAAA,WAAI,EAAW,IAAE,EAAI,IAAE,EAAI;;MAG/C,CAAA,QAAK,EAAQ;AACT,IAAA,IAAA,CAAA,QAAK,IAAQ,CAAA,UAAK,IAAU,CAAA,cAAK,IAAc,CAAA,WAAK,EAAA;AAChD,MAAA,MAAA,CAAA,IAAA,CAAM,0EAAM,CAAA;;;;MAKpB,WAAI,EAAW;QACX,CAAA,iCAAkC,CAAA,WAAK,CAAA,EAAA;AACnC,MAAA,MAAA,CAAA,IAAA,CAAM,CAAC,kCAA6B,CAAA,CAAA,CAAA;;;;MAK5C,cAAI,EAAc;AACd,IAAA,IAAA,uBAAmB,CAAA,GAAQ,CAAC,EAAA;AACxB,MAAA,MAAA,CAAA,IAAA,CAAM,CAAC,uDAA+C,CAAA,CAAA,CAAA;;AAE1D,IAAA,IAAA,IAAI,KAAK,CAAA,cAAK,CAAA,EAAA;AACV,MAAA,MAAA,CAAA,IAAA,CAAM,CAAC,8DAAsD,CAAA,CAAA,CAAA;;;;MAKrE,GAAI,CAAA,QAAI,IAAQ,QAAQ,CAAA,QAAK,EAAQ;AACjC,IAAA,MAAA,CAAA,IAAO,CAAA,2BAAK,CAAA;;AAGhB,EAAA,OAAA;AACJ"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Session tracking - inspired by openclaw's session system,
3
+ * adapted to messenger-box's Props architecture.
4
+ *
5
+ * Tracks inbound/outbound sessions for messages, supporting
6
+ * last-route updates, group key resolution, and delivery context.
7
+ */
8
+ export interface ISessionEntry {
9
+ /** Session key (unique per user+channel combo) */
10
+ sessionKey: string;
11
+ /** Last active channel */
12
+ lastChannel?: string;
13
+ /** Channel type */
14
+ channelType?: string;
15
+ /** Last target/destination */
16
+ lastTo?: string;
17
+ /** Account ID */
18
+ accountId?: string;
19
+ /** Thread ID */
20
+ threadId?: string;
21
+ /** Last activity timestamp */
22
+ lastActivityAt?: Date;
23
+ /** Session creation timestamp */
24
+ createdAt: Date;
25
+ /** Metadata */
26
+ metadata?: Record<string, unknown>;
27
+ }
28
+ export interface IDeliveryContext {
29
+ /** Channel through which message was delivered */
30
+ channel: string;
31
+ /** Target destination */
32
+ to: string;
33
+ /** Account ID used */
34
+ accountId?: string;
35
+ /** Thread ID if applicable */
36
+ threadId?: string;
37
+ }
38
+ export interface ISessionProps {
39
+ /** Whether session tracking is enabled */
40
+ enabled: boolean;
41
+ /** Session timeout in milliseconds */
42
+ timeoutMs: number;
43
+ /** Whether to track group conversations */
44
+ trackGroups: boolean;
45
+ /** Whether to record delivery context */
46
+ recordDeliveryContext: boolean;
47
+ }
48
+ export declare const DEFAULT_SESSION_PROPS: ISessionProps;
49
+ /**
50
+ * Generates a unique session key from channel and user identifiers
51
+ */
52
+ export declare function generateSessionKey(channelId: string, userId: string): string;
53
+ /**
54
+ * Generates a group session key
55
+ */
56
+ export declare function generateGroupSessionKey(channelId: string, groupId: string): string;
57
+ export interface ILastRouteUpdate {
58
+ sessionKey: string;
59
+ channel: string;
60
+ to: string;
61
+ accountId?: string;
62
+ threadId?: string;
63
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Session tracking - inspired by openclaw's session system,
3
+ * adapted to messenger-box's Props architecture.
4
+ *
5
+ * Tracks inbound/outbound sessions for messages, supporting
6
+ * last-route updates, group key resolution, and delivery context.
7
+ */
8
+ const DEFAULT_SESSION_PROPS = {
9
+ enabled: true,
10
+ timeoutMs: 30 * 60 * 1000,
11
+ // 30 minutes
12
+ trackGroups: true,
13
+ recordDeliveryContext: true
14
+ };
15
+ // ---------------------------------------------------------------------------
16
+ // Session Key Generation
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Generates a unique session key from channel and user identifiers
20
+ */
21
+ function generateSessionKey(channelId, userId) {
22
+ return `session:${channelId}:${userId}`.toLowerCase();
23
+ }
24
+ /**
25
+ * Generates a group session key
26
+ */
27
+ function generateGroupSessionKey(channelId, groupId) {
28
+ return `session:group:${channelId}:${groupId}`.toLowerCase();
29
+ }export{DEFAULT_SESSION_PROPS,generateGroupSessionKey,generateSessionKey};//# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sources":["../../src/channels/session.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;AAMG;AAqDI,MAAM,qBAAqB,GAAkB;AAChD,EAAA,OAAA,EAAO,IAAE;AACT,EAAA,SAAA,EAAS,EAAE,GAAE,EAAG,GAAE,IAAG;AACrB;AACA,EAAA,WAAA,EAAA,IAAA;EACF,qBAAA,EAAA;AAEF;AACA;AACA;AAEA;;AAEG;AACH;AACI,SAAO,kBAAoB,CAAI,SAAS,EAAA,MAAA,EAAA;AAC5C,EAAC,OAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,WAAA,EAAA;AAED;;AAEG;AACH;AACI,SAAO,uBAA0B,CAAA,WAAc,OAAA,EAAA;AACnD,EAAC,OAAA,CAAA,cAAA,EAAA,SAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,CAAA,WAAA,EAAA;"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Channel types and capabilities - inspired by openclaw's channel plugin system,
3
+ * adapted to messenger-box's Props architecture.
4
+ *
5
+ * These types define the capability model, metadata, and configuration for
6
+ * channels, posts, and threads. They follow the existing Props pattern
7
+ * (e.g., INotificationProps) used throughout the messenger platform.
8
+ */
9
+ export type ChatType = 'direct' | 'group' | 'channel' | 'thread';
10
+ export declare function normalizeChatType(raw?: string | null): ChatType | undefined;
11
+ export interface IChannelCapabilities {
12
+ /** Supported chat types */
13
+ chatTypes: ChatType[];
14
+ /** Supports polls */
15
+ polls?: boolean;
16
+ /** Supports reactions (emoji, etc.) */
17
+ reactions?: boolean;
18
+ /** Supports message editing */
19
+ edit?: boolean;
20
+ /** Supports unsending messages */
21
+ unsend?: boolean;
22
+ /** Supports reply/quote */
23
+ reply?: boolean;
24
+ /** Supports message effects (confetti, etc.) */
25
+ effects?: boolean;
26
+ /** Supports group management (add/remove members, roles) */
27
+ groupManagement?: boolean;
28
+ /** Supports native threads (not just replies) */
29
+ threads?: boolean;
30
+ /** Supports media attachments (images, audio, video, files) */
31
+ media?: boolean;
32
+ /** Supports native slash commands */
33
+ nativeCommands?: boolean;
34
+ /** Supports block/chunked streaming */
35
+ blockStreaming?: boolean;
36
+ /** Supports typing indicators */
37
+ typingIndicators?: boolean;
38
+ /** Supports read receipts */
39
+ readReceipts?: boolean;
40
+ /** Supports presence/status */
41
+ presence?: boolean;
42
+ /** Supports message forwarding */
43
+ forwarding?: boolean;
44
+ /** Supports pinning messages */
45
+ pinning?: boolean;
46
+ /** Supports bookmarks/favorites */
47
+ bookmarks?: boolean;
48
+ /** Supports message search */
49
+ search?: boolean;
50
+ /** Supports scheduling messages */
51
+ scheduling?: boolean;
52
+ }
53
+ export interface IChannelMeta {
54
+ /** Unique channel type identifier */
55
+ id: string;
56
+ /** Human-readable label */
57
+ label: string;
58
+ /** Label for selection UI */
59
+ selectionLabel: string;
60
+ /** Documentation path */
61
+ docsPath?: string;
62
+ /** Short description / blurb */
63
+ blurb?: string;
64
+ /** Sort order */
65
+ order?: number;
66
+ /** Alternative names / aliases */
67
+ aliases?: string[];
68
+ /** Detail label for channel info */
69
+ detailLabel?: string;
70
+ /** Icon name / system image */
71
+ systemImage?: string;
72
+ /** Whether to show in configured list */
73
+ showConfigured?: boolean;
74
+ }
75
+ export interface IChannelDock {
76
+ /** Channel type identifier */
77
+ id: string;
78
+ /** Channel capabilities */
79
+ capabilities: IChannelCapabilities;
80
+ /** Outbound message constraints */
81
+ outbound?: {
82
+ textChunkLimit?: number;
83
+ };
84
+ /** Streaming configuration */
85
+ streaming?: {
86
+ blockStreamingCoalesceDefaults?: {
87
+ minChars?: number;
88
+ idleMs?: number;
89
+ };
90
+ };
91
+ /** Threading configuration */
92
+ threading?: IThreadingConfig;
93
+ }
94
+ export interface IThreadingConfig {
95
+ /** Reply-to mode: off = no threading, first = reply to first, all = reply to all */
96
+ replyToMode?: 'off' | 'first' | 'all';
97
+ /** Allow explicit reply tags when reply-to mode is off */
98
+ allowExplicitReplyTagsWhenOff?: boolean;
99
+ }
100
+ export interface IThreadingContext {
101
+ /** Current channel ID */
102
+ currentChannelId?: string;
103
+ /** Current thread timestamp/ID */
104
+ currentThreadTs?: string;
105
+ /** Reference to whether a reply has been sent */
106
+ hasRepliedRef?: {
107
+ value: boolean;
108
+ };
109
+ /** Reply-to mode override */
110
+ replyToMode?: 'off' | 'first' | 'all';
111
+ }
112
+ export type MessagingTargetKind = 'user' | 'channel' | 'group';
113
+ export interface IMessagingTarget {
114
+ kind: MessagingTargetKind;
115
+ id: string;
116
+ raw: string;
117
+ normalized: string;
118
+ }
119
+ export declare function normalizeTargetId(kind: MessagingTargetKind, id: string): string;
120
+ export declare function buildMessagingTarget(kind: MessagingTargetKind, id: string, raw: string): IMessagingTarget;
121
+ export interface IChannelAccountSnapshot {
122
+ accountId: string;
123
+ name?: string;
124
+ enabled?: boolean;
125
+ configured?: boolean;
126
+ connected?: boolean;
127
+ reconnectAttempts?: number;
128
+ lastConnectedAt?: number | null;
129
+ lastMessageAt?: number | null;
130
+ lastEventAt?: number | null;
131
+ lastError?: string | null;
132
+ lastStartAt?: number | null;
133
+ lastStopAt?: number | null;
134
+ lastInboundAt?: number | null;
135
+ lastOutboundAt?: number | null;
136
+ mode?: string;
137
+ dmPolicy?: string;
138
+ allowFrom?: string[];
139
+ }
140
+ export type ChannelStatusKind = 'intent' | 'permissions' | 'config' | 'auth' | 'runtime';
141
+ export interface IChannelStatusIssue {
142
+ channel: string;
143
+ accountId: string;
144
+ kind: ChannelStatusKind;
145
+ message: string;
146
+ fix?: string;
147
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Channel types and capabilities - inspired by openclaw's channel plugin system,
3
+ * adapted to messenger-box's Props architecture.
4
+ *
5
+ * These types define the capability model, metadata, and configuration for
6
+ * channels, posts, and threads. They follow the existing Props pattern
7
+ * (e.g., INotificationProps) used throughout the messenger platform.
8
+ */
9
+ function normalizeChatType(raw) {
10
+ const value = raw?.trim().toLowerCase();
11
+ if (!value) return undefined;
12
+ if (value === 'direct' || value === 'dm') return 'direct';
13
+ if (value === 'group') return 'group';
14
+ if (value === 'channel') return 'channel';
15
+ if (value === 'thread') return 'thread';
16
+ return undefined;
17
+ }
18
+ function normalizeTargetId(kind, id) {
19
+ return `${kind}:${id}`.toLowerCase();
20
+ }
21
+ function buildMessagingTarget(kind, id, raw) {
22
+ return {
23
+ kind,
24
+ id,
25
+ raw,
26
+ normalized: normalizeTargetId(kind, id)
27
+ };
28
+ }export{buildMessagingTarget,normalizeChatType,normalizeTargetId};//# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../src/channels/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;AAOG;AAQG,SAAU,iBAAiB,CAAC,GAAmB,EAAA;QACjD,KAAM,MAAQ,EAAG,MAAM,CAAA,WAAG,EAAW;AACrC,EAAA,IAAA,CAAA,KAAK,EAAK,OAAA,SAAA;AAAE,EAAA,IAAA,KAAA,aAAgB,IAAC,KAAA,KAAA,IAAA,EAAA,OAAA,QAAA;AAC7B,EAAA,IAAA,UAAS,OAAK,EAAA,OAAY;AAAgB,EAAA,IAAA,KAAA,cAAgB,EAAA,OAAA,SAAA;MAC1D,KAAI,aAAU,EAAO,OAAA,QAAA;AAAE,EAAA,OAAA;;AACE,0BAAiB,CAAA,IAAA,EAAA,EAAA,EAAA;SACtC,CAAA,EAAA,MAAU,EAAA,EAAA,CAAA,CAAA,CAAA,WAAQ,EAAA;AAAE;AACxB,6BAAiB,CAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA;AACrB,EAAC,OAAA;AAuID,IAAA,IAAM;IACF,EAAA;AACJ,IAAC,GAAA;AAED,IAAA,YAAgB,iBAAA,CAAA,QAA8C;AAC1D,GAAA;AACJ"}