@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.
- package/lib/channels/ack-reactions.d.ts +46 -0
- package/lib/channels/ack-reactions.js +48 -0
- package/lib/channels/ack-reactions.js.map +1 -0
- package/lib/channels/allowlist-match.d.ts +38 -0
- package/lib/channels/allowlist-match.js +67 -0
- package/lib/channels/allowlist-match.js.map +1 -0
- package/lib/channels/channel-config.d.ts +46 -0
- package/lib/channels/channel-config.js +63 -0
- package/lib/channels/channel-config.js.map +1 -0
- package/lib/channels/command-gating.d.ts +47 -0
- package/lib/channels/command-gating.js +52 -0
- package/lib/channels/command-gating.js.map +1 -0
- package/lib/channels/conversation-label.d.ts +23 -0
- package/lib/channels/conversation-label.js +43 -0
- package/lib/channels/conversation-label.js.map +1 -0
- package/lib/channels/index.d.ts +18 -0
- package/lib/channels/mention-gating.d.ts +50 -0
- package/lib/channels/mention-gating.js +72 -0
- package/lib/channels/mention-gating.js.map +1 -0
- package/lib/channels/registry.d.ts +23 -0
- package/lib/channels/registry.js +282 -0
- package/lib/channels/registry.js.map +1 -0
- package/lib/channels/sender-identity.d.ts +11 -0
- package/lib/channels/sender-identity.js +48 -0
- package/lib/channels/sender-identity.js.map +1 -0
- package/lib/channels/session.d.ts +63 -0
- package/lib/channels/session.js +29 -0
- package/lib/channels/session.js.map +1 -0
- package/lib/channels/types.d.ts +147 -0
- package/lib/channels/types.js +28 -0
- package/lib/channels/types.js.map +1 -0
- package/lib/channels/typing.d.ts +62 -0
- package/lib/channels/typing.js +37 -0
- package/lib/channels/typing.js.map +1 -0
- package/lib/channels/typing.test.d.ts +1 -0
- package/lib/config/env-config.d.ts +7 -0
- package/lib/config/env-config.js +21 -1
- package/lib/config/env-config.js.map +1 -1
- package/lib/constants/default-channel-props.d.ts +11 -0
- package/lib/constants/default-channel-props.js +32 -0
- package/lib/constants/default-channel-props.js.map +1 -0
- package/lib/constants/default-notify-props.js.map +1 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/query.constants.js.map +1 -1
- package/lib/containers/containers.js +13 -7
- package/lib/containers/containers.js.map +1 -1
- package/lib/containers/context-services-from-container.d.ts +2 -2
- package/lib/containers/context-services-from-container.js +7 -7
- package/lib/containers/context-services-from-container.js.map +1 -1
- package/lib/gateway/channel-registry.d.ts +10 -0
- package/lib/gateway/gateway-service.d.ts +23 -0
- package/lib/gateway/index.d.ts +4 -0
- package/lib/gateway/message-router.d.ts +20 -0
- package/lib/gateway/types.d.ts +270 -0
- package/lib/graphql/resolvers/channel-capabilities.d.ts +13 -0
- package/lib/graphql/resolvers/channel-capabilities.js +179 -0
- package/lib/graphql/resolvers/channel-capabilities.js.map +1 -0
- package/lib/graphql/resolvers/channel-member.d.ts +3 -3
- package/lib/graphql/resolvers/channel-member.js +30 -5
- package/lib/graphql/resolvers/channel-member.js.map +1 -1
- package/lib/graphql/resolvers/channel.d.ts +3 -3
- package/lib/graphql/resolvers/channel.js +348 -55
- package/lib/graphql/resolvers/channel.js.map +1 -1
- package/lib/graphql/resolvers/chat-configuration.d.ts +59 -0
- package/lib/graphql/resolvers/chat-configuration.js +89 -0
- package/lib/graphql/resolvers/chat-configuration.js.map +1 -0
- package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
- package/lib/graphql/resolvers/extended-token-account.js +90 -23
- package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
- package/lib/graphql/resolvers/gateway.d.ts +18 -0
- package/lib/graphql/resolvers/index.d.ts +47 -26
- package/lib/graphql/resolvers/index.js +1 -1
- package/lib/graphql/resolvers/index.js.map +1 -1
- package/lib/graphql/resolvers/post-thread.d.ts +2 -3
- package/lib/graphql/resolvers/post-thread.js +294 -132
- package/lib/graphql/resolvers/post-thread.js.map +1 -1
- package/lib/graphql/resolvers/post.d.ts +2 -3
- package/lib/graphql/resolvers/post.js +764 -237
- package/lib/graphql/resolvers/post.js.map +1 -1
- package/lib/graphql/resolvers/reaction.d.ts +3 -3
- package/lib/graphql/resolvers/reaction.js +96 -14
- package/lib/graphql/resolvers/reaction.js.map +1 -1
- package/lib/graphql/resolvers/streaming.d.ts +20 -0
- package/lib/graphql/resolvers/streaming.js +147 -0
- package/lib/graphql/resolvers/streaming.js.map +1 -0
- package/lib/graphql/schema/channel-capabilities.graphql +492 -0
- package/lib/graphql/schema/channel-capabilities.graphql.js +1 -0
- package/lib/graphql/schema/channel-capabilities.graphql.js.map +1 -0
- package/lib/graphql/schema/channel-member.graphql +110 -21
- package/lib/graphql/schema/channel-member.graphql.js +1 -1
- package/lib/graphql/schema/channel.graphql +465 -24
- package/lib/graphql/schema/channel.graphql.js +1 -1
- package/lib/graphql/schema/chat-configuration.graphql +77 -0
- package/lib/graphql/schema/chat-configuration.graphql.js +1 -0
- package/lib/graphql/schema/chat-configuration.graphql.js.map +1 -0
- package/lib/graphql/schema/gateway.graphql +363 -0
- package/lib/graphql/schema/index.js +2 -2
- package/lib/graphql/schema/index.js.map +1 -1
- package/lib/graphql/schema/post-thread.graphql +167 -21
- package/lib/graphql/schema/post-thread.graphql.js +1 -1
- package/lib/graphql/schema/post.graphql +433 -36
- package/lib/graphql/schema/post.graphql.js +1 -1
- package/lib/graphql/schema/preferences.graphql +190 -3
- package/lib/graphql/schema/preferences.graphql.js +1 -1
- package/lib/graphql/schema/reaction.graphql +71 -13
- package/lib/graphql/schema/reaction.graphql.js +1 -1
- package/lib/graphql/schema/services.graphql +18 -0
- package/lib/graphql/schema/streaming.graphql +224 -0
- package/lib/graphql/schema/streaming.graphql.js +1 -0
- package/lib/graphql/schema/streaming.graphql.js.map +1 -0
- package/lib/graphql/schema/users.graphql +76 -13
- package/lib/graphql/schema/users.graphql.js +1 -1
- package/lib/graphql/schema/workflow-service.graphql +82 -0
- package/lib/index.d.ts +3 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.d.ts +0 -2
- package/lib/interfaces/services.d.ts +1 -3
- package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.d.ts +42 -0
- package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.js +60 -0
- package/lib/migrations/dbMigrations/AddChannelConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.d.ts +21 -0
- package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.js +30 -0
- package/lib/migrations/dbMigrations/AddChatConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/index.d.ts +3 -0
- package/lib/migrations/index.d.ts +1 -0
- package/lib/migrations/mail-template-migration.d.ts +3 -6
- package/lib/migrations/mail-template-migration.js +8 -21
- package/lib/migrations/mail-template-migration.js.map +1 -1
- package/lib/migrations/message-notification-template-migration.d.ts +4 -7
- package/lib/migrations/message-notification-template-migration.js +8 -25
- package/lib/migrations/message-notification-template-migration.js.map +1 -1
- package/lib/module.d.ts +1 -1
- package/lib/module.js +3 -10
- package/lib/module.js.map +1 -1
- package/lib/plugins/ChannelMoleculerService.d.ts +39 -0
- package/lib/plugins/ChannelMoleculerService.js +58 -0
- package/lib/plugins/ChannelMoleculerService.js.map +1 -0
- package/lib/plugins/ExtendedTokenAccountMoleculerService.d.ts +65 -0
- package/lib/plugins/ExtendedTokenAccountMoleculerService.js +88 -0
- package/lib/plugins/ExtendedTokenAccountMoleculerService.js.map +1 -0
- package/lib/plugins/MessengerNotificationMoleculerService.d.ts +52 -0
- package/lib/plugins/MessengerNotificationMoleculerService.js +84 -0
- package/lib/plugins/MessengerNotificationMoleculerService.js.map +1 -0
- package/lib/plugins/PostMoleculerService.d.ts +65 -0
- package/lib/plugins/PostMoleculerService.js +87 -0
- package/lib/plugins/PostMoleculerService.js.map +1 -0
- package/lib/plugins/PostThreadMoleculerService.d.ts +40 -0
- package/lib/plugins/PostThreadMoleculerService.js +59 -0
- package/lib/plugins/PostThreadMoleculerService.js.map +1 -0
- package/lib/plugins/ReactionMoleculerService.d.ts +37 -0
- package/lib/plugins/ReactionMoleculerService.js +56 -0
- package/lib/plugins/ReactionMoleculerService.js.map +1 -0
- package/lib/plugins/index.d.ts +18 -6
- package/lib/preferences/permissions/inbox-permission-contribution.js +58 -97
- package/lib/preferences/permissions/inbox-permission-contribution.js.map +1 -1
- package/lib/preferences/permissions/inbox-roles-permission-overwrite.js +144 -144
- package/lib/preferences/permissions/inbox-roles-permission-overwrite.js.map +1 -1
- package/lib/preferences/settings/channel-settings.d.ts +39 -0
- package/lib/preferences/settings/channel-settings.js +180 -0
- package/lib/preferences/settings/channel-settings.js.map +1 -0
- package/lib/preferences/settings/chat-settings.d.ts +248 -0
- package/lib/preferences/settings/chat-settings.js +1152 -0
- package/lib/preferences/settings/chat-settings.js.map +1 -0
- package/lib/preferences/settings/index.d.ts +3 -0
- package/lib/preferences/settings/messenger-channels-contribution.d.ts +39 -0
- package/lib/preferences/settings/messenger-channels-contribution.js +355 -0
- package/lib/preferences/settings/messenger-channels-contribution.js.map +1 -0
- package/lib/preferences/settings/post-settings.d.ts +16 -0
- package/lib/preferences/settings/post-settings.js +75 -3
- package/lib/preferences/settings/post-settings.js.map +1 -1
- package/lib/services/channel-service.d.ts +215 -34
- package/lib/services/channel-service.js +1058 -273
- package/lib/services/channel-service.js.map +1 -1
- package/lib/services/extended-token-account-service.d.ts +175 -20
- package/lib/services/extended-token-account-service.js +636 -56
- package/lib/services/extended-token-account-service.js.map +1 -1
- package/lib/services/messenger-notification-service.d.ts +177 -17
- package/lib/services/messenger-notification-service.js +975 -421
- package/lib/services/messenger-notification-service.js.map +1 -1
- package/lib/services/post-service.d.ts +245 -18
- package/lib/services/post-service.js +1027 -113
- package/lib/services/post-service.js.map +1 -1
- package/lib/services/post-thread-service.d.ts +153 -6
- package/lib/services/post-thread-service.js +475 -9
- package/lib/services/post-thread-service.js.map +1 -1
- package/lib/services/proxy-services/ChannelProxyService.d.ts +27 -0
- package/lib/services/proxy-services/ChannelProxyService.js +31 -0
- package/lib/services/proxy-services/ChannelProxyService.js.map +1 -0
- package/lib/services/proxy-services/ExtendedTokenAccountProxyService.d.ts +42 -0
- package/lib/services/proxy-services/ExtendedTokenAccountProxyService.js +46 -0
- package/lib/services/proxy-services/ExtendedTokenAccountProxyService.js.map +1 -0
- package/lib/services/proxy-services/MessengerNotificationProxyService.d.ts +44 -0
- package/lib/services/proxy-services/MessengerNotificationProxyService.js +54 -0
- package/lib/services/proxy-services/MessengerNotificationProxyService.js.map +1 -0
- package/lib/services/proxy-services/PostProxyService.d.ts +42 -0
- package/lib/services/proxy-services/PostProxyService.js +46 -0
- package/lib/services/proxy-services/PostProxyService.js.map +1 -0
- package/lib/services/proxy-services/PostThreadProxyService.d.ts +32 -0
- package/lib/services/proxy-services/PostThreadProxyService.js +36 -0
- package/lib/services/proxy-services/PostThreadProxyService.js.map +1 -0
- package/lib/services/proxy-services/ReactionProxyService.d.ts +41 -0
- package/lib/services/proxy-services/ReactionProxyService.js +45 -0
- package/lib/services/proxy-services/ReactionProxyService.js.map +1 -0
- package/lib/services/proxy-services/index.d.ts +17 -5
- package/lib/services/reaction-service.d.ts +124 -4
- package/lib/services/reaction-service.js +413 -3
- package/lib/services/reaction-service.js.map +1 -1
- package/lib/store/models/account-token-store.d.ts +1 -1
- package/lib/store/models/account-token-store.js.map +1 -1
- package/lib/store/models/channel.d.ts +2 -3
- package/lib/store/models/channel.js +216 -70
- package/lib/store/models/channel.js.map +1 -1
- package/lib/store/models/post-thread.d.ts +3 -3
- package/lib/store/models/post-thread.js +96 -14
- package/lib/store/models/post-thread.js.map +1 -1
- package/lib/store/models/post.d.ts +2 -3
- package/lib/store/models/post.js +143 -23
- package/lib/store/models/post.js.map +1 -1
- package/lib/store/models/reaction.d.ts +2 -3
- package/lib/store/models/reaction.js +67 -8
- package/lib/store/models/reaction.js.map +1 -1
- package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
- package/lib/store/repositories/channel-repository.d.ts +6 -6
- package/lib/store/repositories/channel-repository.js +5 -2
- package/lib/store/repositories/channel-repository.js.map +1 -1
- package/lib/store/repositories/post-repository.d.ts +6 -6
- package/lib/store/repositories/post-repository.js +5 -2
- package/lib/store/repositories/post-repository.js.map +1 -1
- package/lib/store/repositories/post-thread-repository.d.ts +6 -6
- package/lib/store/repositories/post-thread-repository.js +5 -2
- package/lib/store/repositories/post-thread-repository.js.map +1 -1
- package/lib/store/repositories/reaction-repository.d.ts +6 -6
- package/lib/store/repositories/reaction-repository.js +5 -2
- package/lib/store/repositories/reaction-repository.js.map +1 -1
- package/lib/streaming/block-chunker.d.ts +40 -0
- package/lib/streaming/block-chunker.js +103 -0
- package/lib/streaming/block-chunker.js.map +1 -0
- package/lib/streaming/block-chunker.test.d.ts +1 -0
- package/lib/streaming/index.d.ts +4 -0
- package/lib/streaming/stream-service.d.ts +71 -0
- package/lib/streaming/stream-service.js +325 -0
- package/lib/streaming/stream-service.js.map +1 -0
- package/lib/streaming/stream-service.test.d.ts +16 -0
- package/lib/streaming/streaming-post.integration.test.d.ts +10 -0
- package/lib/streaming/types.d.ts +33 -0
- package/lib/streaming/types.js +37 -0
- package/lib/streaming/types.js.map +1 -0
- package/lib/templates/constants/CONTRIBUTION_POINTS.ts.template +78 -0
- package/lib/templates/constants/SERVER_TYPES.ts.template +1 -4
- package/lib/templates/constants/WorkflowNamespace.ts.template +10 -0
- package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
- package/lib/templates/repositories/PostRepository.ts.template +3 -3
- package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
- package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
- package/lib/templates/services/ChannelService.ts.template +290 -39
- package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
- package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
- package/lib/templates/services/MessengerStreamService.ts.template +131 -0
- package/lib/templates/services/PostService.ts.template +228 -20
- package/lib/templates/services/PostThreadService.ts.template +151 -6
- package/lib/templates/services/ReactionService.ts.template +129 -3
- package/lib/templates/services/RedisCacheManager.ts.template +22 -0
- package/package.json +10 -6
- package/lib/interfaces/context.d.ts +0 -14
- package/lib/plugins/channel-moleculer-service.d.ts +0 -8
- package/lib/plugins/channel-moleculer-service.js +0 -129
- package/lib/plugins/channel-moleculer-service.js.map +0 -1
- package/lib/plugins/extended-token-account-moleculer-service.d.ts +0 -8
- package/lib/plugins/extended-token-account-moleculer-service.js +0 -47
- package/lib/plugins/extended-token-account-moleculer-service.js.map +0 -1
- package/lib/plugins/messenger-notification-moleculer-service.d.ts +0 -9
- package/lib/plugins/messenger-notification-moleculer-service.js +0 -116
- package/lib/plugins/messenger-notification-moleculer-service.js.map +0 -1
- package/lib/plugins/post-moleculer-service.d.ts +0 -35
- package/lib/plugins/post-moleculer-service.js +0 -393
- package/lib/plugins/post-moleculer-service.js.map +0 -1
- package/lib/plugins/post-thread-moleculer-service.d.ts +0 -8
- package/lib/plugins/post-thread-moleculer-service.js +0 -33
- package/lib/plugins/post-thread-moleculer-service.js.map +0 -1
- package/lib/plugins/reaction-moleculer-service.d.ts +0 -8
- package/lib/plugins/reaction-moleculer-service.js +0 -20
- package/lib/plugins/reaction-moleculer-service.js.map +0 -1
- package/lib/services/proxy-services/channel-microservice.d.ts +0 -44
- package/lib/services/proxy-services/channel-microservice.js +0 -199
- package/lib/services/proxy-services/channel-microservice.js.map +0 -1
- package/lib/services/proxy-services/messenger-notification-microservice.d.ts +0 -16
- package/lib/services/proxy-services/messenger-notification-microservice.js +0 -54
- package/lib/services/proxy-services/messenger-notification-microservice.js.map +0 -1
- package/lib/services/proxy-services/post-microservice.d.ts +0 -22
- package/lib/services/proxy-services/post-microservice.js +0 -64
- package/lib/services/proxy-services/post-microservice.js.map +0 -1
- package/lib/services/proxy-services/post-thread-microservice.d.ts +0 -10
- package/lib/services/proxy-services/post-thread-microservice.js +0 -15
- package/lib/services/proxy-services/post-thread-microservice.js.map +0 -1
- package/lib/services/proxy-services/reaction-microservice.d.ts +0 -9
- package/lib/services/proxy-services/reaction-microservice.js +0 -10
- package/lib/services/proxy-services/reaction-microservice.js.map +0 -1
- package/lib/store/models/common-options.js +0 -20
- 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"}
|