@wabot-dev/framework 0.0.5 → 0.0.7

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 (36) hide show
  1. package/dist/src/ai/openia/OpenaiChatBotAdapter.js +10 -8
  2. package/dist/src/channels/cmd/@cmd.js +18 -0
  3. package/dist/src/channels/cmd/CmdChannel.js +32 -12
  4. package/dist/src/channels/telegram/@telegram.js +1 -0
  5. package/dist/src/channels/telegram/TelegramChannel.js +27 -14
  6. package/dist/src/chatbot/ChatBot.js +7 -5
  7. package/dist/src/chatbot/ChatBotAdapter.js +12 -4
  8. package/dist/src/chatbot/metadata/@chatBot.js +3 -0
  9. package/dist/src/chatbot/metadata/ChatBotMetadataStore.js +3 -0
  10. package/dist/src/controller/channel/ChatResolver.js +9 -10
  11. package/dist/src/controller/channel/UserResolver.js +23 -0
  12. package/dist/src/core/IMessageContext.js +15 -0
  13. package/dist/src/{chatbot → core}/chat/Chat.js +1 -1
  14. package/dist/src/{chatbot → core}/chat/repository/ram/RamChatRepository.js +1 -0
  15. package/dist/src/core/user/User.js +42 -0
  16. package/dist/src/core/user/repository/IUserRepository.js +19 -0
  17. package/dist/src/core/user/repository/ram/RamUserRepository.js +28 -0
  18. package/dist/src/index.d.ts +251 -146
  19. package/dist/src/index.js +26 -13
  20. package/dist/src/mindset/IMindset.js +3 -3
  21. package/dist/src/mindset/metadata/params/@isOptional.js +1 -1
  22. package/dist/src/pre-made/modules/authentication/AuthenticationModule.js +99 -0
  23. package/dist/src/pre-made/modules/authentication/requests/SendOneTimePasswordRequest.js +25 -0
  24. package/dist/src/pre-made/modules/authentication/requests/ValidateOneTimePasswordRequest.js +25 -0
  25. package/dist/src/pre-made/modules/register-user/RegisterUserModule.js +58 -0
  26. package/dist/src/pre-made/modules/register-user/requests/RegisterUserWithEmailRequest.js +25 -0
  27. package/dist/src/pre-made/services/EmailService.js +13 -0
  28. package/dist/src/pre-made/services/OtpService.js +14 -0
  29. package/dist/src/server/prepareChatContainer.js +14 -10
  30. package/dist/src/server/runChannel.js +12 -4
  31. package/dist/src/server/runServer.js +15 -11
  32. package/package.json +8 -3
  33. package/dist/src/context/IContext.js +0 -10
  34. /package/dist/src/{chatbot → core}/chat/repository/IChatMemory.js +0 -0
  35. /package/dist/src/{chatbot → core}/chat/repository/IChatRepository.js +0 -0
  36. /package/dist/src/{chatbot → core}/chat/repository/ram/RamChatMemory.js +0 -0
@@ -1,111 +1,9 @@
1
+ import InjectionToken from 'tsyringe/dist/typings/providers/injection-token';
2
+ import DependencyContainer, { PreResolutionInterceptorCallback, PostResolutionInterceptorCallback } from 'tsyringe/dist/typings/types/dependency-container';
3
+ import InterceptionOptions from 'tsyringe/dist/typings/types/interceptor-options';
1
4
  import * as tsyringe from 'tsyringe';
2
- import { DependencyContainer, InjectionToken } from 'tsyringe';
5
+ import { DependencyContainer as DependencyContainer$1 } from 'tsyringe';
3
6
  export { DependencyContainer } from 'tsyringe';
4
- import { InterceptionOptions } from 'tsyringe/dist/typings/types';
5
- import { PreResolutionInterceptorCallback, PostResolutionInterceptorCallback } from 'tsyringe/dist/typings/types/dependency-container';
6
-
7
- interface IChatDocument {
8
- }
9
-
10
- interface IChatImage {
11
- }
12
-
13
- interface IChatSender {
14
- shortName: string;
15
- senderId?: string;
16
- }
17
-
18
- interface IChatMessage {
19
- sender: IChatSender;
20
- text?: string;
21
- documents?: IChatDocument[];
22
- images?: IChatImage[];
23
- }
24
-
25
- interface IChatFunctionCall {
26
- foreignId: string;
27
- name: string;
28
- arguments?: string;
29
- result: string;
30
- }
31
-
32
- type ISystemMessageItem = {
33
- type: 'BOT_MESSAGE';
34
- content: IChatMessage;
35
- };
36
- type IUserMessageItem = {
37
- type: 'USER_MESSAGE';
38
- content: IChatMessage;
39
- };
40
- type ISystemFunctionCallItem = {
41
- type: 'FUNCTION_CALL';
42
- content: IChatFunctionCall;
43
- };
44
- type IChatItem = {
45
- id: string;
46
- createdAt: Date;
47
- } & (ISystemMessageItem | IUserMessageItem | ISystemFunctionCallItem);
48
- type IChatItemType = IChatItem['type'];
49
-
50
- interface IChatMemory {
51
- findLastItems(count: number): Promise<IChatItem[]>;
52
- saveItem(item: IChatItem): Promise<void>;
53
- }
54
- declare class ChatMemory implements IChatMemory {
55
- findLastItems(count: number): Promise<IChatItem[]>;
56
- saveItem(item: IChatItem): Promise<void>;
57
- }
58
-
59
- declare class RamChatMemory implements IChatMemory {
60
- private memory;
61
- findLastItems(count: number): Promise<IChatItem[]>;
62
- saveItem(item: IChatItem): Promise<void>;
63
- clearMemory(): Promise<void>;
64
- }
65
-
66
- type IChatType = 'PRIVATE' | 'GROUP';
67
- interface IChatConnection {
68
- channelType: string;
69
- chatId: string;
70
- }
71
- interface IChatData {
72
- id?: string;
73
- createdAt?: Date;
74
- type: IChatType;
75
- connections: IChatConnection[];
76
- }
77
- declare class Chat {
78
- private data;
79
- constructor(data: IChatData);
80
- isPrivate(): boolean;
81
- isGroup(): boolean;
82
- hasConnection(connection: IChatConnection): boolean;
83
- private validatePrivateChat;
84
- private validateGroupChat;
85
- getId(): string;
86
- wasCreated(): boolean;
87
- validate(): void;
88
- }
89
-
90
- interface IChatRepository {
91
- create(chat: Chat): Promise<void>;
92
- findByConnection(query: IChatConnection): Promise<Chat | null>;
93
- findMemory(chatId: string): Promise<IChatMemory | null>;
94
- }
95
- declare class ChatRepository implements IChatRepository {
96
- create(chat: Chat): Promise<void>;
97
- findByConnection(query: IChatConnection): Promise<Chat | null>;
98
- findMemory(chatId: string): Promise<IChatMemory | null>;
99
- }
100
-
101
- declare class RamChatRepository implements IChatRepository {
102
- private items;
103
- private memories;
104
- create(chat: Chat): Promise<void>;
105
- findByConnection(query: IChatConnection): Promise<Chat | null>;
106
- findMemory(chatId: string): Promise<IChatMemory | null>;
107
- private getMemory;
108
- }
109
7
 
110
8
  interface IMindsetFunctionConfig {
111
9
  description: string;
@@ -159,6 +57,7 @@ interface IMindsetDecoration {
159
57
 
160
58
  interface IMindsetModuleConfig {
161
59
  description: string;
60
+ language?: string;
162
61
  }
163
62
 
164
63
  declare function mindsetModule<A>(config: IMindsetModuleConfig): (target: IConstructor<A>) => void;
@@ -188,6 +87,9 @@ interface IParamDecoration {
188
87
  decorationConfig: any;
189
88
  }
190
89
 
90
+ declare const PARAM_DECORATION_IS_OPTIONAL = "isOptional";
91
+ declare const PARAM_DECORATION_PARAM = "param";
92
+
191
93
  interface IMindsetFunctionParamMetadata {
192
94
  config: IParamConfig;
193
95
  name: string;
@@ -284,6 +186,165 @@ declare class ChatBotMetadataStore {
284
186
  getChatBotsMetadata(): IChatBotMetadata[];
285
187
  }
286
188
 
189
+ type IChatType = 'PRIVATE' | 'GROUP';
190
+ interface IChatConnection {
191
+ chatType: IChatType;
192
+ channelName: string;
193
+ id: string;
194
+ }
195
+ interface IChatData {
196
+ id?: string;
197
+ createdAt?: Date;
198
+ type: IChatType;
199
+ connections: IChatConnection[];
200
+ }
201
+ declare class Chat {
202
+ private data;
203
+ constructor(data: IChatData);
204
+ isPrivate(): boolean;
205
+ isGroup(): boolean;
206
+ hasConnection(connection: IChatConnection): boolean;
207
+ private validatePrivateChat;
208
+ private validateGroupChat;
209
+ getId(): string;
210
+ wasCreated(): boolean;
211
+ validate(): void;
212
+ }
213
+
214
+ interface IChatDocument {
215
+ }
216
+
217
+ interface IChatImage {
218
+ }
219
+
220
+ interface IUserConnection {
221
+ channelName: string;
222
+ id: string;
223
+ }
224
+ interface IUserData {
225
+ id?: string;
226
+ createdAt?: Date;
227
+ shortName: string;
228
+ connections: IUserConnection[];
229
+ keyValueData: {
230
+ [key: string]: string;
231
+ };
232
+ }
233
+ declare class User {
234
+ private data;
235
+ constructor(data: IUserData);
236
+ getId(): string;
237
+ hasConnection(connection: IUserConnection): boolean;
238
+ wasCreated(): boolean;
239
+ validate(): void;
240
+ getValue(key: string): string;
241
+ setValue(key: string, value: string): void;
242
+ addConnection(connection: IUserConnection): void;
243
+ }
244
+
245
+ interface IChatMessage {
246
+ text?: string;
247
+ documents?: IChatDocument[];
248
+ images?: IChatImage[];
249
+ senderName: string;
250
+ }
251
+ interface IConnectionChatMessage extends IChatMessage {
252
+ chatConnection: IChatConnection;
253
+ userConnection: IUserConnection;
254
+ userId?: string;
255
+ }
256
+
257
+ interface IChatFunctionCall {
258
+ id: string;
259
+ name: string;
260
+ arguments?: string;
261
+ result: string;
262
+ }
263
+
264
+ type ISystemMessageItem = {
265
+ type: 'BOT_MESSAGE';
266
+ content: IChatMessage;
267
+ };
268
+ type IReceivedMessageItem = {
269
+ type: 'CONNECTION_MESSAGE';
270
+ content: IConnectionChatMessage;
271
+ };
272
+ type ISystemFunctionCallItem = {
273
+ type: 'FUNCTION_CALL';
274
+ content: IChatFunctionCall;
275
+ };
276
+ type IChatItem = {
277
+ id: string;
278
+ createdAt: Date;
279
+ } & (ISystemMessageItem | IReceivedMessageItem | ISystemFunctionCallItem);
280
+ type IChatItemType = IChatItem['type'];
281
+
282
+ interface IChatMemory {
283
+ findLastItems(count: number): Promise<IChatItem[]>;
284
+ saveItem(item: IChatItem): Promise<void>;
285
+ }
286
+ declare class ChatMemory implements IChatMemory {
287
+ findLastItems(count: number): Promise<IChatItem[]>;
288
+ saveItem(item: IChatItem): Promise<void>;
289
+ }
290
+
291
+ declare class RamChatMemory implements IChatMemory {
292
+ private memory;
293
+ findLastItems(count: number): Promise<IChatItem[]>;
294
+ saveItem(item: IChatItem): Promise<void>;
295
+ clearMemory(): Promise<void>;
296
+ }
297
+
298
+ interface IChatRepository {
299
+ create(chat: Chat): Promise<void>;
300
+ findByConnection(query: IChatConnection): Promise<Chat | null>;
301
+ findMemory(chatId: string): Promise<IChatMemory | null>;
302
+ }
303
+ declare class ChatRepository implements IChatRepository {
304
+ create(chat: Chat): Promise<void>;
305
+ findByConnection(query: IChatConnection): Promise<Chat | null>;
306
+ findMemory(chatId: string): Promise<IChatMemory | null>;
307
+ }
308
+
309
+ declare class RamChatRepository implements IChatRepository {
310
+ private items;
311
+ private memories;
312
+ create(chat: Chat): Promise<void>;
313
+ findByConnection(query: IChatConnection): Promise<Chat | null>;
314
+ findMemory(chatId: string): Promise<IChatMemory | null>;
315
+ private getMemory;
316
+ }
317
+
318
+ interface IUserRepository {
319
+ create(chat: User): Promise<void>;
320
+ update(chat: User): Promise<void>;
321
+ findByConnection(query: IUserConnection): Promise<User | null>;
322
+ }
323
+ declare class UserRepository implements IUserRepository {
324
+ create(chat: User): Promise<void>;
325
+ update(chat: User): Promise<void>;
326
+ findByConnection(query: IUserConnection): Promise<User | null>;
327
+ }
328
+
329
+ declare class RamUserRepository implements IUserRepository {
330
+ private items;
331
+ create(chat: User): Promise<void>;
332
+ findByConnection(query: IUserConnection): Promise<User | null>;
333
+ update(chat: User): Promise<void>;
334
+ }
335
+
336
+ interface IMessageContext {
337
+ message: IConnectionChatMessage;
338
+ chat: Chat;
339
+ user: User | null;
340
+ }
341
+ declare class MessageContext implements IMessageContext {
342
+ message: IConnectionChatMessage;
343
+ chat: Chat;
344
+ user: User | null;
345
+ constructor(message: IConnectionChatMessage, chat: Chat, user: User | null);
346
+ }
347
+
287
348
  interface IChatBotAdapter {
288
349
  generateNextChatItem(chatItems: IChatItem[]): Promise<IChatItem>;
289
350
  }
@@ -296,12 +357,12 @@ declare class ChatBotAdapter implements IChatBotAdapter {
296
357
  id: string;
297
358
  createdAt: Date;
298
359
  } & ISystemMessageItem>;
299
- protected buildFunctionCallItem(foreignId: string, functionName: string, functionArguments: string): Promise<{
360
+ protected buildFunctionCallItem(id: string, functionName: string, functionArguments: string): Promise<{
300
361
  readonly id: string;
301
362
  readonly createdAt: Date;
302
363
  readonly type: "FUNCTION_CALL";
303
364
  readonly content: {
304
- readonly foreignId: string;
365
+ readonly id: string;
305
366
  readonly name: string;
306
367
  readonly arguments: string;
307
368
  readonly result: string;
@@ -317,7 +378,7 @@ declare class ChatBot implements IChatBot {
317
378
  private memory;
318
379
  private adapter;
319
380
  constructor(memory: ChatMemory, adapter: ChatBotAdapter);
320
- sendMessage(message: IChatMessage, callback: (message: IChatMessage) => void): Promise<void>;
381
+ sendMessage(message: IConnectionChatMessage, callback: (message: IChatMessage) => void): Promise<void>;
321
382
  protected processLoop(callback: (message: IChatMessage) => void): Promise<void>;
322
383
  }
323
384
 
@@ -329,46 +390,30 @@ declare class OpenaiChatBotAdapter extends ChatBotAdapter {
329
390
  private mapChatItems;
330
391
  }
331
392
 
332
- interface IChatContext {
333
- chatId: string;
334
- message: IChatMessage;
335
- reply: (message: IChatMessage) => void;
336
- }
337
- interface IUserContext {
338
- userId: string;
339
- }
340
- interface IContext {
341
- user?: IUserContext;
342
- chat: IChatContext;
343
- }
344
- declare class Context implements IContext {
345
- chat: IChatContext;
346
- user?: IUserContext | undefined;
347
- constructor(chat: IChatContext, user?: IUserContext | undefined);
348
- }
349
-
350
- interface IMessageOrigin {
351
- chatId: string;
352
- chatType: IChatType;
353
- channelType: Function;
354
- }
355
- interface IMessageContext extends IChatContext {
356
- origin: IMessageOrigin;
357
- }
393
+ declare function cmd(): (target: object, propertyKey: string | symbol) => void;
358
394
 
359
395
  declare class ChatResolver {
360
396
  private chatRepository;
361
397
  constructor(chatRepository: ChatRepository);
362
- resolve(origin: IMessageOrigin): Promise<Chat>;
398
+ resolve(connection: IChatConnection): Promise<Chat>;
363
399
  private resolveGroupChat;
364
400
  private resolvePrivateChat;
365
401
  }
366
402
 
403
+ interface IReceivedMessage extends IMessageContext {
404
+ reply: (message: IChatMessage) => void;
405
+ }
367
406
  interface IChatChannel {
368
- listen(callback: (message: IMessageContext) => void): void;
407
+ listen(callback: (message: IReceivedMessage) => void): void;
369
408
  connect(): void;
370
409
  }
371
410
 
411
+ declare class UserResolver {
412
+ private userRepository;
413
+ constructor(userRepository: UserRepository);
414
+ resolve(connection: IUserConnection): Promise<User | null>;
415
+ }
416
+
372
417
  interface IchatControllerConfig {
373
418
  }
374
419
 
@@ -382,7 +427,7 @@ interface IChannelMetadata {
382
427
  controllerConstructor: IConstructor<any>;
383
428
  functionName: string;
384
429
  channelConstructor: IConstructor<IChatChannel>;
385
- channelConfig: object;
430
+ channelConfig?: object;
386
431
  }
387
432
 
388
433
  declare class ControllerMetadataStore {
@@ -398,10 +443,11 @@ declare class ControllerMetadataStore {
398
443
 
399
444
  declare class CmdChannel implements IChatChannel {
400
445
  private chatResolver;
446
+ private userResolver;
401
447
  private rl;
402
448
  private callBack;
403
- constructor(chatResolver: ChatResolver);
404
- listen(callback: (message: IMessageContext) => void): void;
449
+ constructor(chatResolver: ChatResolver, userResolver: UserResolver);
450
+ listen(callback: (message: IReceivedMessage) => void): void;
405
451
  connect(): void;
406
452
  }
407
453
 
@@ -418,13 +464,14 @@ declare function telegram(config: ITelegramChannelConfig): (target: object, prop
418
464
  declare class TelegramChannel implements IChatChannel {
419
465
  private config;
420
466
  private chatResolver;
467
+ private userResolver;
421
468
  private bot;
422
- constructor(config: TelegramChannelConfig, chatResolver: ChatResolver);
423
- listen(callback: (message: IMessageContext) => void): void;
469
+ constructor(config: TelegramChannelConfig, chatResolver: ChatResolver, userResolver: UserResolver);
470
+ listen(callback: (message: IReceivedMessage) => void): void;
424
471
  connect(): void;
425
472
  }
426
473
 
427
- declare function prepareChatContainer(container: DependencyContainer, context: IContext, mindsetCtor?: IConstructor<IMindset>): Promise<DependencyContainer>;
474
+ declare function prepareChatContainer(container: DependencyContainer$1, context: IMessageContext, mindsetCtor?: IConstructor<IMindset>): Promise<DependencyContainer$1>;
428
475
 
429
476
  interface IrunChannelProps {
430
477
  channel: IConstructor<IChatChannel>;
@@ -435,11 +482,69 @@ interface IrunChannelProps {
435
482
  }
436
483
  declare function runChannel(props: IrunChannelProps): void;
437
484
 
485
+ interface IServerProvider<T, ST extends T> {
486
+ replace: IConstructor<T>;
487
+ with: IConstructor<ST>;
488
+ singleton?: true;
489
+ }
438
490
  interface IServerConfig {
439
491
  controllers: IConstructor<any>[];
440
- chatRepository?: IConstructor<IChatRepository>;
441
- chatBotAdapter?: IConstructor<IChatBotAdapter>;
492
+ providers?: IServerProvider<unknown, unknown>[];
442
493
  }
443
494
  declare function runServer(config: IServerConfig): void;
444
495
 
445
- export { Chat, ChatBot, ChatBotAdapter, ChatBotMetadataStore, ChatMemory, ChatRepository, ChatResolver, CmdChannel, Container, Context, ControllerMetadataStore, type IChannelMetadata, type IChatBot, type IChatBotAdapter, type IChatBotMetadata, type IChatChannel, type IChatConnection, type IChatContext, type IChatControllerMetadata, type IChatData, type IChatDocument, type IChatFunctionCall, type IChatImage, type IChatItem, type IChatItemType, type IChatMemory, type IChatMessage, type IChatRepository, type IChatSender, type IChatType, type IConstructor, type IContext, type IMessageContext, type IMessageOrigin, type IMindset, type IMindsetDecoration, type IMindsetFunctionConfig, type IMindsetFunctionDecoration, type IMindsetFunctionMetadata, type IMindsetFunctionParamMetadata, type IMindsetIdentity, type IMindsetMetadata, type IMindsetModuleConfig, type IMindsetModuleDecoration, type IMindsetModuleMetadata, type IParamDecoration, type IServerConfig, type ISystemFunctionCallItem, type ISystemMessageItem, type ITelegramChannelConfig, type IUserContext, type IUserMessageItem, type IchatControllerConfig, type IrunChannelProps, MINDSET_DECORATION_MINDSET, MINDSET_FUNCTION_DECORATION_FUNCTION, MINDSET_MODULE_DECORATION_MODULE, Mindset, MindsetMetadataStore, MindsetOperator, OpenaiChatBotAdapter, RamChatMemory, RamChatRepository, TelegramChannel, TelegramChannelConfig, chatBot, chatController, container, inject, injectable, isOptional, mindset, mindsetFunction, mindsetModule, param, prepareChatContainer, runChannel, runServer, singleton, telegram };
496
+ declare class SendOneTimePasswordRequest {
497
+ fromEmail: string;
498
+ toEmail: string;
499
+ }
500
+
501
+ declare class ValidateOneTimePasswordRequest {
502
+ userEmail: string;
503
+ otp: string;
504
+ }
505
+
506
+ interface ISendEmailRequest {
507
+ from: string;
508
+ to: string;
509
+ subject: string;
510
+ html: string;
511
+ }
512
+ interface IEmailService {
513
+ sendEmail(request: ISendEmailRequest): Promise<void>;
514
+ }
515
+ declare class EmailService implements IEmailService {
516
+ sendEmail(request: ISendEmailRequest): Promise<void>;
517
+ }
518
+
519
+ interface IOtpService {
520
+ generate(): Promise<string>;
521
+ }
522
+ declare class OtpService implements IOtpService {
523
+ generate(): Promise<string>;
524
+ }
525
+
526
+ declare class AuthenticationModule {
527
+ private userRepository;
528
+ private emailService;
529
+ private otpService;
530
+ private context;
531
+ constructor(userRepository: UserRepository, emailService: EmailService, otpService: OtpService, context: MessageContext);
532
+ sendOneTimePassword(request: SendOneTimePasswordRequest): Promise<string>;
533
+ validateOneTimePassword(request: ValidateOneTimePasswordRequest): Promise<string>;
534
+ protected generateOtpEmailHtml(otp: string, user: User): Promise<string>;
535
+ protected generateOtpEmailSubject(): Promise<string>;
536
+ }
537
+
538
+ declare class RegisterUserWithEmailRequest {
539
+ email: string;
540
+ shortName: string;
541
+ }
542
+
543
+ declare class RegisterUserModule {
544
+ private userRepository;
545
+ private context;
546
+ constructor(userRepository: UserRepository, context: MessageContext);
547
+ registerUserWithEmail(request: RegisterUserWithEmailRequest): Promise<string>;
548
+ }
549
+
550
+ export { AuthenticationModule, Chat, ChatBot, ChatBotAdapter, ChatBotMetadataStore, ChatMemory, ChatRepository, ChatResolver, CmdChannel, Container, ControllerMetadataStore, EmailService, type IChannelMetadata, type IChatBot, type IChatBotAdapter, type IChatBotMetadata, type IChatChannel, type IChatConnection, type IChatControllerMetadata, type IChatData, type IChatFunctionCall, type IChatItem, type IChatItemType, type IChatMemory, type IChatMessage, type IChatRepository, type IChatType, type IConnectionChatMessage, type IConstructor, type IEmailService, type IMessageContext, type IMindset, type IMindsetDecoration, type IMindsetFunctionConfig, type IMindsetFunctionDecoration, type IMindsetFunctionMetadata, type IMindsetFunctionParamMetadata, type IMindsetIdentity, type IMindsetMetadata, type IMindsetModuleConfig, type IMindsetModuleDecoration, type IMindsetModuleMetadata, type IOtpService, type IParamConfig, type IParamDecoration, type IReceivedMessage, type IReceivedMessageItem, type ISendEmailRequest, type IServerConfig, type IServerProvider, type ISystemFunctionCallItem, type ISystemMessageItem, type ITelegramChannelConfig, type IUserConnection, type IUserData, type IUserRepository, type IchatControllerConfig, type IrunChannelProps, MINDSET_DECORATION_MINDSET, MINDSET_FUNCTION_DECORATION_FUNCTION, MINDSET_MODULE_DECORATION_MODULE, MessageContext, Mindset, MindsetMetadataStore, MindsetOperator, OpenaiChatBotAdapter, OtpService, PARAM_DECORATION_IS_OPTIONAL, PARAM_DECORATION_PARAM, RamChatMemory, RamChatRepository, RamUserRepository, RegisterUserModule, RegisterUserWithEmailRequest, SendOneTimePasswordRequest, TelegramChannel, TelegramChannelConfig, User, UserRepository, UserResolver, ValidateOneTimePasswordRequest, chatBot, chatController, cmd, container, inject, injectable, isOptional, mindset, mindsetFunction, mindsetModule, param, prepareChatContainer, runChannel, runServer, singleton, telegram };
package/dist/src/index.js CHANGED
@@ -1,22 +1,11 @@
1
1
  export { OpenaiChatBotAdapter } from './ai/openia/OpenaiChatBotAdapter.js';
2
+ export { cmd } from './channels/cmd/@cmd.js';
2
3
  export { CmdChannel } from './channels/cmd/CmdChannel.js';
3
4
  export { telegram } from './channels/telegram/@telegram.js';
4
5
  export { TelegramChannelConfig } from './channels/telegram/TelegramChannelConfig.js';
5
6
  export { TelegramChannel } from './channels/telegram/TelegramChannel.js';
6
- export { RamChatMemory } from './chatbot/chat/repository/ram/RamChatMemory.js';
7
- export { RamChatRepository } from './chatbot/chat/repository/ram/RamChatRepository.js';
8
- export { ChatMemory } from './chatbot/chat/repository/IChatMemory.js';
9
- export { ChatRepository } from './chatbot/chat/repository/IChatRepository.js';
10
- export { Chat } from './chatbot/chat/Chat.js';
11
7
  export { chatBot } from './chatbot/metadata/@chatBot.js';
12
8
  export { ChatBotMetadataStore } from './chatbot/metadata/ChatBotMetadataStore.js';
13
- export { ChatBot } from './chatbot/ChatBot.js';
14
- export { ChatBotAdapter } from './chatbot/ChatBotAdapter.js';
15
- export { Context } from './context/IContext.js';
16
- export { ChatResolver } from './controller/channel/ChatResolver.js';
17
- export { chatController } from './controller/metadata/controller/@chatController.js';
18
- export { ControllerMetadataStore } from './controller/metadata/ControllerMetadataStore.js';
19
- export { container, inject, injectable, singleton } from './injection/index.js';
20
9
  export { mindsetFunction } from './mindset/metadata/functions/@mindsetFunction.js';
21
10
  export { MINDSET_FUNCTION_DECORATION_FUNCTION } from './mindset/metadata/functions/decoratorNames.js';
22
11
  export { mindset } from './mindset/metadata/mindsets/@mindset.js';
@@ -25,10 +14,34 @@ export { mindsetModule } from './mindset/metadata/modules/@mindsetModule.js';
25
14
  export { MINDSET_MODULE_DECORATION_MODULE } from './mindset/metadata/modules/decoratorNames.js';
26
15
  export { isOptional } from './mindset/metadata/params/@isOptional.js';
27
16
  export { param } from './mindset/metadata/params/@param.js';
28
- export { MindsetMetadataStore } from './mindset/metadata/MindsetMetadataStore.js';
17
+ export { PARAM_DECORATION_IS_OPTIONAL, PARAM_DECORATION_PARAM } from './mindset/metadata/params/decoratorNames.js';
29
18
  export { Mindset } from './mindset/IMindset.js';
19
+ export { MindsetMetadataStore } from './mindset/metadata/MindsetMetadataStore.js';
30
20
  export { MindsetOperator } from './mindset/MindsetOperator.js';
21
+ export { ChatBot } from './chatbot/ChatBot.js';
22
+ export { ChatBotAdapter } from './chatbot/ChatBotAdapter.js';
23
+ export { RamChatMemory } from './core/chat/repository/ram/RamChatMemory.js';
24
+ export { RamChatRepository } from './core/chat/repository/ram/RamChatRepository.js';
25
+ export { ChatMemory } from './core/chat/repository/IChatMemory.js';
26
+ export { ChatRepository } from './core/chat/repository/IChatRepository.js';
27
+ export { Chat } from './core/chat/Chat.js';
28
+ export { User } from './core/user/User.js';
29
+ export { RamUserRepository } from './core/user/repository/ram/RamUserRepository.js';
30
+ export { UserRepository } from './core/user/repository/IUserRepository.js';
31
+ export { MessageContext } from './core/IMessageContext.js';
32
+ export { ChatResolver } from './controller/channel/ChatResolver.js';
33
+ export { UserResolver } from './controller/channel/UserResolver.js';
34
+ export { chatController } from './controller/metadata/controller/@chatController.js';
35
+ export { ControllerMetadataStore } from './controller/metadata/ControllerMetadataStore.js';
36
+ export { container, inject, injectable, singleton } from './injection/index.js';
31
37
  export { prepareChatContainer } from './server/prepareChatContainer.js';
32
38
  export { runChannel } from './server/runChannel.js';
33
39
  export { runServer } from './server/runServer.js';
40
+ export { SendOneTimePasswordRequest } from './pre-made/modules/authentication/requests/SendOneTimePasswordRequest.js';
41
+ export { ValidateOneTimePasswordRequest } from './pre-made/modules/authentication/requests/ValidateOneTimePasswordRequest.js';
42
+ export { AuthenticationModule } from './pre-made/modules/authentication/AuthenticationModule.js';
43
+ export { RegisterUserWithEmailRequest } from './pre-made/modules/register-user/requests/RegisterUserWithEmailRequest.js';
44
+ export { RegisterUserModule } from './pre-made/modules/register-user/RegisterUserModule.js';
45
+ export { EmailService } from './pre-made/services/EmailService.js';
46
+ export { OtpService } from './pre-made/services/OtpService.js';
34
47
  export { Container } from './injection/Container.js';
@@ -1,12 +1,12 @@
1
1
  class Mindset {
2
2
  identity() {
3
- throw new Error("Method not implemented.");
3
+ throw new Error('Method not implemented.');
4
4
  }
5
5
  skills() {
6
- throw new Error("Method not implemented.");
6
+ throw new Error('Method not implemented.');
7
7
  }
8
8
  limits() {
9
- throw new Error("Method not implemented.");
9
+ throw new Error('Method not implemented.');
10
10
  }
11
11
  }
12
12
 
@@ -13,7 +13,7 @@ function isOptional() {
13
13
  paramType: paramType,
14
14
  paramName: paramName,
15
15
  constructor: target.constructor,
16
- decorationConfig: {}
16
+ decorationConfig: {},
17
17
  });
18
18
  };
19
19
  }
@@ -0,0 +1,99 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import '../../../core/chat/repository/ram/RamChatRepository.js';
3
+ import '../../../core/chat/repository/IChatRepository.js';
4
+ import '../../../core/user/repository/ram/RamUserRepository.js';
5
+ import { UserRepository } from '../../../core/user/repository/IUserRepository.js';
6
+ import { MessageContext } from '../../../core/IMessageContext.js';
7
+ import { mindsetFunction } from '../../../mindset/metadata/functions/@mindsetFunction.js';
8
+ import 'reflect-metadata';
9
+ import '../../../injection/index.js';
10
+ import '../../../mindset/metadata/MindsetMetadataStore.js';
11
+ import { mindsetModule } from '../../../mindset/metadata/modules/@mindsetModule.js';
12
+ import '../../../mindset/MindsetOperator.js';
13
+ import { EmailService } from '../../services/EmailService.js';
14
+ import { OtpService } from '../../services/OtpService.js';
15
+ import { SendOneTimePasswordRequest } from './requests/SendOneTimePasswordRequest.js';
16
+ import { ValidateOneTimePasswordRequest } from './requests/ValidateOneTimePasswordRequest.js';
17
+
18
+ let AuthenticationModule = class AuthenticationModule {
19
+ userRepository;
20
+ emailService;
21
+ otpService;
22
+ context;
23
+ constructor(userRepository, emailService, otpService, context) {
24
+ this.userRepository = userRepository;
25
+ this.emailService = emailService;
26
+ this.otpService = otpService;
27
+ this.context = context;
28
+ }
29
+ async sendOneTimePassword(request) {
30
+ const user = await this.userRepository.findByConnection({
31
+ channelName: 'EmailChannel',
32
+ id: request.toEmail,
33
+ });
34
+ if (!user)
35
+ return 'success';
36
+ const otp = await this.otpService.generate();
37
+ const html = await this.generateOtpEmailHtml(otp, user);
38
+ const subject = await this.generateOtpEmailSubject();
39
+ await this.emailService.sendEmail({
40
+ from: request.fromEmail,
41
+ to: request.toEmail,
42
+ subject,
43
+ html,
44
+ });
45
+ user.setValue('OTP', otp);
46
+ await this.userRepository.update(user);
47
+ return 'success';
48
+ }
49
+ async validateOneTimePassword(request) {
50
+ const user = await this.userRepository.findByConnection({
51
+ channelName: 'EmailChannel',
52
+ id: request.userEmail,
53
+ });
54
+ if (!user) {
55
+ throw new Error('Invalid OTP');
56
+ }
57
+ const otp = user.getValue('OTP');
58
+ if (otp !== request.otp) {
59
+ throw new Error('Invalid OTP');
60
+ }
61
+ user.addConnection(this.context.message.userConnection);
62
+ await this.userRepository.update(user);
63
+ return 'success';
64
+ }
65
+ async generateOtpEmailHtml(otp, user) {
66
+ return `<p>Your OTP Code is ${otp}</p>`;
67
+ }
68
+ async generateOtpEmailSubject() {
69
+ return 'OTP Code';
70
+ }
71
+ };
72
+ __decorate([
73
+ mindsetFunction({
74
+ description: 'Send an One Time Password to the user when want authenticate',
75
+ }),
76
+ __metadata("design:type", Function),
77
+ __metadata("design:paramtypes", [SendOneTimePasswordRequest]),
78
+ __metadata("design:returntype", Promise)
79
+ ], AuthenticationModule.prototype, "sendOneTimePassword", null);
80
+ __decorate([
81
+ mindsetFunction({
82
+ description: 'Send an One Time Password to the user when want authenticate',
83
+ }),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [ValidateOneTimePasswordRequest]),
86
+ __metadata("design:returntype", Promise)
87
+ ], AuthenticationModule.prototype, "validateOneTimePassword", null);
88
+ AuthenticationModule = __decorate([
89
+ mindsetModule({
90
+ description: 'Provide authentication methods',
91
+ language: 'english',
92
+ }),
93
+ __metadata("design:paramtypes", [UserRepository,
94
+ EmailService,
95
+ OtpService,
96
+ MessageContext])
97
+ ], AuthenticationModule);
98
+
99
+ export { AuthenticationModule };