@futdevpro/nts-dynamo 1.15.15 → 1.15.16
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/.c8rc.json +26 -26
- package/.copilot/patterns.json +7 -7
- package/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.dynamo/version-bump.config.json +5 -0
- package/.github/workflows/main.yml +426 -393
- package/.husky/pre-commit +1 -0
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/2026-04-28-logs-module.md +49 -0
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/_specifications/BACKLOG.md +50 -50
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +343 -362
- package/pipeline.cicd.config.json +152 -0
- package/scripts/run-coverage-tests.js +28 -28
- package/spec/support/helpers/spec-reporter-loader.js +359 -359
- package/spec/support/helpers/ts-node-helper.js +93 -93
- package/spec/support/jasmine.coverage.json +24 -24
- package/spec/support/jasmine.json +24 -24
- package/src/_collections/archive.util.spec.ts +57 -57
- package/src/_collections/archive.util.ts +18 -18
- package/src/_collections/atlas-default-db-options.const.ts +9 -9
- package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
- package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
- package/src/_collections/default-not-found-page.const.spec.ts +19 -19
- package/src/_collections/default-not-found-page.const.ts +22 -22
- package/src/_collections/default-socket-path.const.spec.ts +12 -12
- package/src/_collections/default-socket-path.const.ts +2 -2
- package/src/_collections/get-environment-settings.util.spec.ts +210 -210
- package/src/_collections/get-environment-settings.util.ts +48 -48
- package/src/_collections/sample.env +21 -21
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +24 -24
- package/src/_enums/predefined-data-types.enum.ts +16 -16
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
- package/src/_models/control-models/api-call-params.control-model.ts +142 -142
- package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
- package/src/_models/control-models/app-params.control-model.ts +136 -136
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -578
- package/src/_models/control-models/endpoint-params.control-model.ts +526 -526
- package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
- package/src/_models/control-models/http-settings.control-model.ts +37 -37
- package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/environment-settings.interface.ts +59 -59
- package/src/_models/interfaces/global-log-settings.interface.ts +108 -108
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
- package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
- package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
- package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
- package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
- package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
- package/src/_modules/ai/_modules/document-ai/index.ts +28 -28
- package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
- package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
- package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
- package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +240 -240
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +98 -98
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +615 -615
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +437 -437
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +833 -833
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
- package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
- package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
- package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +332 -332
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +79 -79
- package/src/_modules/ai/_services/ai-provider.service-base.ts +29 -29
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/index.ts +13 -13
- package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
- package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
- package/src/_modules/assistant/_collections/ass.util.ts +50 -50
- package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
- package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
- package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
- package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
- package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
- package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
- package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
- package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
- package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
- package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
- package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
- package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
- package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
- package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
- package/src/_modules/custom-data/custom-data.controller.ts +67 -67
- package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
- package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
- package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
- package/src/_modules/custom-data/index.ts +9 -9
- package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
- package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
- package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
- package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
- package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
- package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
- package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
- package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
- package/src/_modules/defaults/index.ts +17 -17
- package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
- package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
- package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
- package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
- package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
- package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
- package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
- package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
- package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
- package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
- package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
- package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
- package/src/_modules/discord-assistant/index.ts +38 -38
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
- package/src/_modules/discord-assistant-voiced/index.ts +36 -36
- package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
- package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
- package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
- package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
- package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
- package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
- package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
- package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
- package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
- package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
- package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
- package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
- package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
- package/src/_modules/discord-bot/index.ts +36 -36
- package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +19 -19
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +345 -345
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +330 -330
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
- package/src/_modules/local-vector-search/index.ts +11 -11
- package/src/_modules/messaging/README.md +354 -354
- package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
- package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
- package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
- package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
- package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
- package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
- package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
- package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
- package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
- package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
- package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
- package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
- package/src/_modules/messaging/index.ts +30 -30
- package/src/_modules/mock/app-extended-server.mock.ts +201 -201
- package/src/_modules/mock/app-integration-test.mock.ts +51 -51
- package/src/_modules/mock/app-params.mock.spec.ts +21 -21
- package/src/_modules/mock/app-params.mock.ts +9 -9
- package/src/_modules/mock/app-server.mock.ts +188 -188
- package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
- package/src/_modules/mock/auth-service.mock.ts +28 -28
- package/src/_modules/mock/controller.mock.spec.ts +26 -26
- package/src/_modules/mock/controller.mock.ts +16 -16
- package/src/_modules/mock/data-model.mock.spec.ts +111 -111
- package/src/_modules/mock/data-model.mock.ts +82 -82
- package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
- package/src/_modules/mock/email-service-collection.mock.ts +15 -15
- package/src/_modules/mock/email-service.mock.spec.ts +17 -17
- package/src/_modules/mock/email-service.mock.ts +20 -20
- package/src/_modules/mock/email-template.mock.html +14 -14
- package/src/_modules/mock/endpoint.mock.ts +91 -91
- package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
- package/src/_modules/mock/socket-client.mock.ts +45 -45
- package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
- package/src/_modules/mock/socket-server.mock.ts +46 -46
- package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
- package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
- package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
- package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
- package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
- package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
- package/src/_modules/oauth2/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +230 -230
- package/src/_modules/server/errors/errors.control-service.ts +69 -69
- package/src/_modules/server/errors/errors.controller.spec.ts +165 -165
- package/src/_modules/server/errors/errors.controller.ts +270 -270
- package/src/_modules/server/errors/errors.data-service.spec.ts +355 -355
- package/src/_modules/server/index.ts +30 -30
- package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
- package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
- package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
- package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
- package/src/_modules/server/server-status/server-status.control-service.spec.ts +516 -516
- package/src/_modules/server/server-status/server-status.control-service.ts +336 -336
- package/src/_modules/server/server-status/server-status.controller.spec.ts +156 -156
- package/src/_modules/server/server-status/server-status.controller.ts +131 -131
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +196 -196
- package/src/_services/base/archive-data.service.ts +216 -216
- package/src/_services/base/data.service.spec.ts +493 -493
- package/src/_services/base/data.service.ts +2525 -2525
- package/src/_services/base/db.service.spec.ts +73 -73
- package/src/_services/base/db.service.ts +1575 -1575
- package/src/_services/base/singleton.service-base.spec.ts +28 -28
- package/src/_services/base/singleton.service-base.ts +24 -24
- package/src/_services/base/singleton.service.spec.ts +114 -114
- package/src/_services/base/singleton.service.ts +38 -38
- package/src/_services/core/api.service.spec.ts +140 -140
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +742 -742
- package/src/_services/core/global.service.spec.ts +275 -275
- package/src/_services/core/global.service.ts +461 -461
- package/src/_services/core/service-collection.service.spec.ts +46 -46
- package/src/_services/core/service-collection.service.ts +6 -6
- package/src/_services/route/controller.service.spec.ts +53 -53
- package/src/_services/route/controller.service.ts +148 -148
- package/src/_services/route/routing-module.service.spec.ts +98 -98
- package/src/_services/route/routing-module.service.ts +330 -330
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +94 -94
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/build/_modules/logs/get-logs-routing-module.util.d.ts +0 -19
- package/build/_modules/logs/get-logs-routing-module.util.d.ts.map +0 -1
- package/build/_modules/logs/get-logs-routing-module.util.js +0 -32
- package/build/_modules/logs/get-logs-routing-module.util.js.map +0 -1
- package/build/_modules/logs/index.d.ts +0 -4
- package/build/_modules/logs/index.d.ts.map +0 -1
- package/build/_modules/logs/index.js +0 -10
- package/build/_modules/logs/index.js.map +0 -1
- package/build/_modules/logs/log-buffer.service.d.ts +0 -38
- package/build/_modules/logs/log-buffer.service.d.ts.map +0 -1
- package/build/_modules/logs/log-buffer.service.js +0 -97
- package/build/_modules/logs/log-buffer.service.js.map +0 -1
- package/build/_modules/logs/logs.controller.d.ts +0 -27
- package/build/_modules/logs/logs.controller.d.ts.map +0 -1
- package/build/_modules/logs/logs.controller.js +0 -90
- package/build/_modules/logs/logs.controller.js.map +0 -1
- package/build/_modules/logs/logs.service.d.ts +0 -40
- package/build/_modules/logs/logs.service.d.ts.map +0 -1
- package/build/_modules/logs/logs.service.js +0 -97
- package/build/_modules/logs/logs.service.js.map +0 -1
- package/src/_modules/logs/get-logs-routing-module.util.ts +0 -36
- package/src/_modules/logs/index.ts +0 -3
- package/src/_modules/logs/log-buffer.service.ts +0 -101
- package/src/_modules/logs/logs.controller.ts +0 -109
- package/src/_modules/logs/logs.service.ts +0 -100
|
@@ -1,354 +1,354 @@
|
|
|
1
|
-
# Dynamo NTS Messaging Module [DyNTS-MSG]
|
|
2
|
-
|
|
3
|
-
TODO: The Entire Messaging system is AI generated, therefore we need to clean it up, and remove the unnecessary elements
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The DyNTS Messaging module provides the **backend implementation** for the unified messaging system. It handles all server-side operations including data persistence, business logic, real-time events, and API endpoints. The module integrates with bot and assistant modules to provide AI-powered messaging capabilities.
|
|
8
|
-
|
|
9
|
-
## Import
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
import * from '@futdevpro/dynamo-nts/messaging';
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Key Features
|
|
16
|
-
|
|
17
|
-
- **Data Services**: CRUD operations for messages and conversations
|
|
18
|
-
- **Control Services**: Business logic orchestration and validation
|
|
19
|
-
- **Event Handling**: Real-time socket communication
|
|
20
|
-
- **API Endpoints**: RESTful HTTP endpoints for all messaging operations
|
|
21
|
-
- **Bot Integration**: Seamless integration with AI bot modules
|
|
22
|
-
- **Assistant Integration**: Support for AI assistant workflows
|
|
23
|
-
- **Authentication**: User authentication and authorization
|
|
24
|
-
- **Error Handling**: Comprehensive error handling and logging
|
|
25
|
-
- **Real-time Events**: Socket-based live updates
|
|
26
|
-
- **Agent Process Tracking**: AI reasoning and tool usage recording
|
|
27
|
-
|
|
28
|
-
## Architecture
|
|
29
|
-
|
|
30
|
-
The messaging module follows a layered architecture:
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
┌─────────────────────────────────────┐
|
|
34
|
-
│ HTTP Controller (API) │
|
|
35
|
-
└────────────────┬──────────────────┘
|
|
36
|
-
│
|
|
37
|
-
┌────────────────▼──────────────────┐
|
|
38
|
-
│ Control Services │
|
|
39
|
-
│ • Main Control │
|
|
40
|
-
│ • Integration Control │
|
|
41
|
-
│ • Events Service │
|
|
42
|
-
└────────────────┬──────────────────┘
|
|
43
|
-
│
|
|
44
|
-
┌────────────────▼──────────────────┐
|
|
45
|
-
│ Data Services │
|
|
46
|
-
│ • Message Data Service │
|
|
47
|
-
│ • Conversation Data Service │
|
|
48
|
-
└────────────────┬──────────────────┘
|
|
49
|
-
│
|
|
50
|
-
┌────────────────▼──────────────────┐
|
|
51
|
-
│ Database Layer │
|
|
52
|
-
└─────────────────────────────────┘
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Services
|
|
56
|
-
|
|
57
|
-
### Data Services
|
|
58
|
-
|
|
59
|
-
#### `DyNTS_Msg_Message_DataService`
|
|
60
|
-
|
|
61
|
-
Handles all message data operations:
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
class DyNTS_Msg_Message_DataService {
|
|
65
|
-
async saveData(message: DyFM_Msg_Message): Promise<void>;
|
|
66
|
-
async getDataById(messageId: string): Promise<DyFM_Msg_Message>;
|
|
67
|
-
async markAsRead(messageId: string, userId: string): Promise<void>;
|
|
68
|
-
async deleteData(messageId: string): Promise<void>;
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Usage Example:**
|
|
73
|
-
```typescript
|
|
74
|
-
const messageService = new DyNTS_Msg_Message_DataService({
|
|
75
|
-
issuer: 'user-id',
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const message = await messageService.getDataById('msg-123');
|
|
79
|
-
await messageService.markAsRead('msg-123', 'user-id');
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
#### `DyNTS_Msg_Conversation_DataService`
|
|
83
|
-
|
|
84
|
-
Handles all conversation data operations:
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
class DyNTS_Msg_Conversation_DataService {
|
|
88
|
-
async saveData(conversation: DyFM_Msg_Conversation): Promise<void>;
|
|
89
|
-
async getDataById(conversationId: string): Promise<DyFM_Msg_Conversation>;
|
|
90
|
-
async updateLastMessage(conversationId: string, messageId: string, content: string): Promise<void>;
|
|
91
|
-
async addParticipant(conversationId: string, participant: DyFM_Msg_Participant): Promise<void>;
|
|
92
|
-
async removeParticipant(conversationId: string, userId: string): Promise<void>;
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Control Services
|
|
97
|
-
|
|
98
|
-
#### `DyNTS_Msg_Main_ControlService`
|
|
99
|
-
|
|
100
|
-
Singleton service for orchestration and business logic:
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
class DyNTS_Msg_Main_ControlService extends DyNTS_SingletonService {
|
|
104
|
-
static getInstance(): DyNTS_Msg_Main_ControlService;
|
|
105
|
-
|
|
106
|
-
// Messages
|
|
107
|
-
async sendMessage(conversationId: string, messageData: Partial<DyFM_Msg_Message>, senderId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
108
|
-
async editMessage(messageId: string, content: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
109
|
-
async deleteMessage(messageId: string, userId: string, issuer: string): Promise<void>;
|
|
110
|
-
async markMessagesAsRead(messageIds: string[], userId: string, issuer: string): Promise<{ success: boolean; count: number }>;
|
|
111
|
-
|
|
112
|
-
// Reactions
|
|
113
|
-
async addReaction(messageId: string, emoji: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
114
|
-
async removeReaction(messageId: string, emoji: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
115
|
-
|
|
116
|
-
// Conversations
|
|
117
|
-
async createConversation(conversationData: Partial<DyFM_Msg_Conversation>, creatorId: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
118
|
-
async updateConversation(conversationId: string, updateData: Partial<DyFM_Msg_Conversation>, userId: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
119
|
-
async deleteConversation(conversationId: string, userId: string, issuer: string): Promise<void>;
|
|
120
|
-
|
|
121
|
-
// Participants
|
|
122
|
-
async addParticipant(conversationId: string, newUserId: string, role: DyFM_Msg_ParticipantRole, requesterId: string, issuer: string): Promise<void>;
|
|
123
|
-
async removeParticipant(conversationId: string, userIdToRemove: string, requesterId: string, issuer: string): Promise<void>;
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Usage Example:**
|
|
128
|
-
```typescript
|
|
129
|
-
const controlService = DyNTS_Msg_Main_ControlService.getInstance();
|
|
130
|
-
|
|
131
|
-
// Send a message
|
|
132
|
-
const message = await controlService.sendMessage(
|
|
133
|
-
'conv-123',
|
|
134
|
-
{ content: 'Hello!' },
|
|
135
|
-
'user-456',
|
|
136
|
-
'user-456'
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
// Add reaction
|
|
140
|
-
await controlService.addReaction(
|
|
141
|
-
'msg-789',
|
|
142
|
-
'👍',
|
|
143
|
-
'user-456',
|
|
144
|
-
'user-456'
|
|
145
|
-
);
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
#### `DyNTS_Msg_Integration_ControlService`
|
|
149
|
-
|
|
150
|
-
Handles integration with bot and assistant modules:
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
class DyNTS_Msg_Integration_ControlService extends DyNTS_SingletonService {
|
|
154
|
-
static getInstance(): DyNTS_Msg_Integration_ControlService;
|
|
155
|
-
|
|
156
|
-
// Bot integration
|
|
157
|
-
async syncBotMessage<T>(botMessage: DyNTS_Bot_MessageWrapper<T>, conversationId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
158
|
-
|
|
159
|
-
// Assistant integration
|
|
160
|
-
async syncAssistantMessage(content: string, conversationId: string, aiProvider: string, aiModel: string, senderId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
161
|
-
|
|
162
|
-
// Find or create bot conversation
|
|
163
|
-
async findOrCreateBotConversation(channelId: string, platformSource: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
#### `DyNTS_Msg_Events_Service`
|
|
168
|
-
|
|
169
|
-
Handles real-time socket events:
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
class DyNTS_Msg_Events_Service extends DyNTS_SingletonService {
|
|
173
|
-
static getInstance(): DyNTS_Msg_Events_Service;
|
|
174
|
-
|
|
175
|
-
// Event emission
|
|
176
|
-
emitMessageSent(message: DyFM_Msg_Message, conversationId: string): void;
|
|
177
|
-
emitMessageUpdated(message: DyFM_Msg_Message, conversationId: string): void;
|
|
178
|
-
emitMessageDeleted(messageId: string, conversationId: string): void;
|
|
179
|
-
emitMessageRead(messageId: string, userId: string, conversationId: string): void;
|
|
180
|
-
emitTypingIndicator(userId: string, conversationId: string, isTyping: boolean): void;
|
|
181
|
-
emitConversationCreated(conversation: DyFM_Msg_Conversation, participantIds: string[]): void;
|
|
182
|
-
emitConversationUpdated(conversation: DyFM_Msg_Conversation): void;
|
|
183
|
-
emitConversationDeleted(conversationId: string): void;
|
|
184
|
-
emitParticipantAdded(conversationId: string, userId: string): void;
|
|
185
|
-
emitParticipantRemoved(conversationId: string, userId: string): void;
|
|
186
|
-
emitReactionAdded(messageId: string, reaction: DyFM_Msg_Reaction): void;
|
|
187
|
-
emitReactionRemoved(messageId: string, userId: string, emoji: string): void;
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Controllers
|
|
192
|
-
|
|
193
|
-
#### `DyNTS_Msg_Controller`
|
|
194
|
-
|
|
195
|
-
HTTP API controller for messaging endpoints:
|
|
196
|
-
|
|
197
|
-
**Endpoints:**
|
|
198
|
-
- `POST /api/messaging/messages` - Send a message
|
|
199
|
-
- `PUT /api/messaging/messages/:id` - Edit a message
|
|
200
|
-
- `DELETE /api/messaging/messages/:id` - Delete a message
|
|
201
|
-
- `POST /api/messaging/messages/:id/read` - Mark messages as read
|
|
202
|
-
- `POST /api/messaging/messages/:id/reactions` - Add reaction
|
|
203
|
-
- `DELETE /api/messaging/messages/:id/reactions` - Remove reaction
|
|
204
|
-
- `GET /api/messaging/conversations` - Get conversations
|
|
205
|
-
- `POST /api/messaging/conversations` - Create conversation
|
|
206
|
-
- `PUT /api/messaging/conversations/:id` - Update conversation
|
|
207
|
-
- `DELETE /api/messaging/conversations/:id` - Delete conversation
|
|
208
|
-
- `POST /api/messaging/conversations/:id/participants` - Add participant
|
|
209
|
-
- `DELETE /api/messaging/conversations/:id/participants/:userId` - Remove participant
|
|
210
|
-
|
|
211
|
-
## Configuration
|
|
212
|
-
|
|
213
|
-
### Global Settings
|
|
214
|
-
|
|
215
|
-
Configure messaging settings in your global configuration:
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
export const DyNTS_global_settings = {
|
|
219
|
-
messaging_settings: {
|
|
220
|
-
enableRealtimeEvents: true,
|
|
221
|
-
maxMessagesPerLoad: 50,
|
|
222
|
-
enableThreading: true,
|
|
223
|
-
enableReactions: true,
|
|
224
|
-
enableAttachments: true,
|
|
225
|
-
enableMentions: true,
|
|
226
|
-
enableReadReceipts: true,
|
|
227
|
-
enableTypingIndicators: true,
|
|
228
|
-
retry: {
|
|
229
|
-
maxRetries: 3,
|
|
230
|
-
retryDelay: 1000
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
## Routing
|
|
237
|
-
|
|
238
|
-
Add the messaging routing module to your application:
|
|
239
|
-
|
|
240
|
-
```typescript
|
|
241
|
-
import { DyNTS_getMessagingRoutingModule } from '@futdevpro/dynamo-nts/messaging';
|
|
242
|
-
|
|
243
|
-
const messagingRoutes = DyNTS_getMessagingRoutingModule(
|
|
244
|
-
DyNTS_RouteSecurity.authenticated
|
|
245
|
-
);
|
|
246
|
-
|
|
247
|
-
// Add to your routing configuration
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
## Integration
|
|
251
|
-
|
|
252
|
-
### Bot Integration
|
|
253
|
-
|
|
254
|
-
The messaging system integrates with the bot module to sync messages:
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
import { DyNTS_Msg_Integration_ControlService } from '@futdevpro/dynamo-nts/messaging';
|
|
258
|
-
import { DyNTS_Bot_MessageWrapper } from '@futdevpro/dynamo-nts/bot';
|
|
259
|
-
|
|
260
|
-
const integrationService = DyNTS_Msg_Integration_ControlService.getInstance();
|
|
261
|
-
|
|
262
|
-
// Sync bot message to messaging system
|
|
263
|
-
const message = await integrationService.syncBotMessage(
|
|
264
|
-
botMessage,
|
|
265
|
-
conversationId,
|
|
266
|
-
'bot-service'
|
|
267
|
-
);
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### Assistant Integration
|
|
271
|
-
|
|
272
|
-
Sync AI assistant responses:
|
|
273
|
-
|
|
274
|
-
```typescript
|
|
275
|
-
// Sync AI assistant message
|
|
276
|
-
const aiMessage = await integrationService.syncAssistantMessage(
|
|
277
|
-
'AI response text',
|
|
278
|
-
'conv-123',
|
|
279
|
-
'openai',
|
|
280
|
-
'gpt-4',
|
|
281
|
-
'ai-assistant-id',
|
|
282
|
-
'ai-service'
|
|
283
|
-
);
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
## Usage Examples
|
|
287
|
-
|
|
288
|
-
### Sending a Message
|
|
289
|
-
|
|
290
|
-
```typescript
|
|
291
|
-
import { DyNTS_Msg_Main_ControlService } from '@futdevpro/dynamo-nts/messaging';
|
|
292
|
-
|
|
293
|
-
const controlService = DyNTS_Msg_Main_ControlService.getInstance();
|
|
294
|
-
|
|
295
|
-
const message = await controlService.sendMessage(
|
|
296
|
-
'conv-123',
|
|
297
|
-
{
|
|
298
|
-
content: 'Hello from the backend!',
|
|
299
|
-
type: DyFM_Msg_Type.text
|
|
300
|
-
},
|
|
301
|
-
'user-456',
|
|
302
|
-
'backend-service'
|
|
303
|
-
);
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### Creating a Conversation
|
|
307
|
-
|
|
308
|
-
```typescript
|
|
309
|
-
const conversation = await controlService.createConversation(
|
|
310
|
-
{
|
|
311
|
-
type: DyFM_Msg_ConversationType.direct,
|
|
312
|
-
participants: [
|
|
313
|
-
{ userId: 'user-123', role: DyFM_Msg_ParticipantRole.member, joinedAt: new Date() },
|
|
314
|
-
{ userId: 'user-456', role: DyFM_Msg_ParticipantRole.member, joinedAt: new Date() }
|
|
315
|
-
]
|
|
316
|
-
},
|
|
317
|
-
'user-123',
|
|
318
|
-
'backend-service'
|
|
319
|
-
);
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Adding a Reaction
|
|
323
|
-
|
|
324
|
-
```typescript
|
|
325
|
-
const message = await controlService.addReaction(
|
|
326
|
-
'msg-123',
|
|
327
|
-
'👍',
|
|
328
|
-
'user-456',
|
|
329
|
-
'user-456'
|
|
330
|
-
);
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
## Error Handling
|
|
334
|
-
|
|
335
|
-
The module uses comprehensive error handling:
|
|
336
|
-
|
|
337
|
-
```typescript
|
|
338
|
-
try {
|
|
339
|
-
await controlService.sendMessage(...);
|
|
340
|
-
} catch (error) {
|
|
341
|
-
if (error instanceof DyFM_Error) {
|
|
342
|
-
console.error('Error code:', error.errorCode);
|
|
343
|
-
console.error('User message:', error.userMessage);
|
|
344
|
-
console.error('Technical message:', error.technicalMessage);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
## Related Documentation
|
|
350
|
-
|
|
351
|
-
- [Dynamo FSM Messaging Module](../dynamo-fsm/messaging/README.md)
|
|
352
|
-
- [Dynamo NGX Messaging Module](../dynamo-ngx/messaging/README.md)
|
|
353
|
-
- [Bot Module Integration](./bot/README.md)
|
|
354
|
-
- [Assistant Module Integration](./assistant/README.md)
|
|
1
|
+
# Dynamo NTS Messaging Module [DyNTS-MSG]
|
|
2
|
+
|
|
3
|
+
TODO: The Entire Messaging system is AI generated, therefore we need to clean it up, and remove the unnecessary elements
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The DyNTS Messaging module provides the **backend implementation** for the unified messaging system. It handles all server-side operations including data persistence, business logic, real-time events, and API endpoints. The module integrates with bot and assistant modules to provide AI-powered messaging capabilities.
|
|
8
|
+
|
|
9
|
+
## Import
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import * from '@futdevpro/dynamo-nts/messaging';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Key Features
|
|
16
|
+
|
|
17
|
+
- **Data Services**: CRUD operations for messages and conversations
|
|
18
|
+
- **Control Services**: Business logic orchestration and validation
|
|
19
|
+
- **Event Handling**: Real-time socket communication
|
|
20
|
+
- **API Endpoints**: RESTful HTTP endpoints for all messaging operations
|
|
21
|
+
- **Bot Integration**: Seamless integration with AI bot modules
|
|
22
|
+
- **Assistant Integration**: Support for AI assistant workflows
|
|
23
|
+
- **Authentication**: User authentication and authorization
|
|
24
|
+
- **Error Handling**: Comprehensive error handling and logging
|
|
25
|
+
- **Real-time Events**: Socket-based live updates
|
|
26
|
+
- **Agent Process Tracking**: AI reasoning and tool usage recording
|
|
27
|
+
|
|
28
|
+
## Architecture
|
|
29
|
+
|
|
30
|
+
The messaging module follows a layered architecture:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
┌─────────────────────────────────────┐
|
|
34
|
+
│ HTTP Controller (API) │
|
|
35
|
+
└────────────────┬──────────────────┘
|
|
36
|
+
│
|
|
37
|
+
┌────────────────▼──────────────────┐
|
|
38
|
+
│ Control Services │
|
|
39
|
+
│ • Main Control │
|
|
40
|
+
│ • Integration Control │
|
|
41
|
+
│ • Events Service │
|
|
42
|
+
└────────────────┬──────────────────┘
|
|
43
|
+
│
|
|
44
|
+
┌────────────────▼──────────────────┐
|
|
45
|
+
│ Data Services │
|
|
46
|
+
│ • Message Data Service │
|
|
47
|
+
│ • Conversation Data Service │
|
|
48
|
+
└────────────────┬──────────────────┘
|
|
49
|
+
│
|
|
50
|
+
┌────────────────▼──────────────────┐
|
|
51
|
+
│ Database Layer │
|
|
52
|
+
└─────────────────────────────────┘
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Services
|
|
56
|
+
|
|
57
|
+
### Data Services
|
|
58
|
+
|
|
59
|
+
#### `DyNTS_Msg_Message_DataService`
|
|
60
|
+
|
|
61
|
+
Handles all message data operations:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
class DyNTS_Msg_Message_DataService {
|
|
65
|
+
async saveData(message: DyFM_Msg_Message): Promise<void>;
|
|
66
|
+
async getDataById(messageId: string): Promise<DyFM_Msg_Message>;
|
|
67
|
+
async markAsRead(messageId: string, userId: string): Promise<void>;
|
|
68
|
+
async deleteData(messageId: string): Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Usage Example:**
|
|
73
|
+
```typescript
|
|
74
|
+
const messageService = new DyNTS_Msg_Message_DataService({
|
|
75
|
+
issuer: 'user-id',
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const message = await messageService.getDataById('msg-123');
|
|
79
|
+
await messageService.markAsRead('msg-123', 'user-id');
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### `DyNTS_Msg_Conversation_DataService`
|
|
83
|
+
|
|
84
|
+
Handles all conversation data operations:
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
class DyNTS_Msg_Conversation_DataService {
|
|
88
|
+
async saveData(conversation: DyFM_Msg_Conversation): Promise<void>;
|
|
89
|
+
async getDataById(conversationId: string): Promise<DyFM_Msg_Conversation>;
|
|
90
|
+
async updateLastMessage(conversationId: string, messageId: string, content: string): Promise<void>;
|
|
91
|
+
async addParticipant(conversationId: string, participant: DyFM_Msg_Participant): Promise<void>;
|
|
92
|
+
async removeParticipant(conversationId: string, userId: string): Promise<void>;
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Control Services
|
|
97
|
+
|
|
98
|
+
#### `DyNTS_Msg_Main_ControlService`
|
|
99
|
+
|
|
100
|
+
Singleton service for orchestration and business logic:
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
class DyNTS_Msg_Main_ControlService extends DyNTS_SingletonService {
|
|
104
|
+
static getInstance(): DyNTS_Msg_Main_ControlService;
|
|
105
|
+
|
|
106
|
+
// Messages
|
|
107
|
+
async sendMessage(conversationId: string, messageData: Partial<DyFM_Msg_Message>, senderId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
108
|
+
async editMessage(messageId: string, content: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
109
|
+
async deleteMessage(messageId: string, userId: string, issuer: string): Promise<void>;
|
|
110
|
+
async markMessagesAsRead(messageIds: string[], userId: string, issuer: string): Promise<{ success: boolean; count: number }>;
|
|
111
|
+
|
|
112
|
+
// Reactions
|
|
113
|
+
async addReaction(messageId: string, emoji: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
114
|
+
async removeReaction(messageId: string, emoji: string, userId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
115
|
+
|
|
116
|
+
// Conversations
|
|
117
|
+
async createConversation(conversationData: Partial<DyFM_Msg_Conversation>, creatorId: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
118
|
+
async updateConversation(conversationId: string, updateData: Partial<DyFM_Msg_Conversation>, userId: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
119
|
+
async deleteConversation(conversationId: string, userId: string, issuer: string): Promise<void>;
|
|
120
|
+
|
|
121
|
+
// Participants
|
|
122
|
+
async addParticipant(conversationId: string, newUserId: string, role: DyFM_Msg_ParticipantRole, requesterId: string, issuer: string): Promise<void>;
|
|
123
|
+
async removeParticipant(conversationId: string, userIdToRemove: string, requesterId: string, issuer: string): Promise<void>;
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Usage Example:**
|
|
128
|
+
```typescript
|
|
129
|
+
const controlService = DyNTS_Msg_Main_ControlService.getInstance();
|
|
130
|
+
|
|
131
|
+
// Send a message
|
|
132
|
+
const message = await controlService.sendMessage(
|
|
133
|
+
'conv-123',
|
|
134
|
+
{ content: 'Hello!' },
|
|
135
|
+
'user-456',
|
|
136
|
+
'user-456'
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
// Add reaction
|
|
140
|
+
await controlService.addReaction(
|
|
141
|
+
'msg-789',
|
|
142
|
+
'👍',
|
|
143
|
+
'user-456',
|
|
144
|
+
'user-456'
|
|
145
|
+
);
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### `DyNTS_Msg_Integration_ControlService`
|
|
149
|
+
|
|
150
|
+
Handles integration with bot and assistant modules:
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
class DyNTS_Msg_Integration_ControlService extends DyNTS_SingletonService {
|
|
154
|
+
static getInstance(): DyNTS_Msg_Integration_ControlService;
|
|
155
|
+
|
|
156
|
+
// Bot integration
|
|
157
|
+
async syncBotMessage<T>(botMessage: DyNTS_Bot_MessageWrapper<T>, conversationId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
158
|
+
|
|
159
|
+
// Assistant integration
|
|
160
|
+
async syncAssistantMessage(content: string, conversationId: string, aiProvider: string, aiModel: string, senderId: string, issuer: string): Promise<DyFM_Msg_Message>;
|
|
161
|
+
|
|
162
|
+
// Find or create bot conversation
|
|
163
|
+
async findOrCreateBotConversation(channelId: string, platformSource: string, issuer: string): Promise<DyFM_Msg_Conversation>;
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### `DyNTS_Msg_Events_Service`
|
|
168
|
+
|
|
169
|
+
Handles real-time socket events:
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
class DyNTS_Msg_Events_Service extends DyNTS_SingletonService {
|
|
173
|
+
static getInstance(): DyNTS_Msg_Events_Service;
|
|
174
|
+
|
|
175
|
+
// Event emission
|
|
176
|
+
emitMessageSent(message: DyFM_Msg_Message, conversationId: string): void;
|
|
177
|
+
emitMessageUpdated(message: DyFM_Msg_Message, conversationId: string): void;
|
|
178
|
+
emitMessageDeleted(messageId: string, conversationId: string): void;
|
|
179
|
+
emitMessageRead(messageId: string, userId: string, conversationId: string): void;
|
|
180
|
+
emitTypingIndicator(userId: string, conversationId: string, isTyping: boolean): void;
|
|
181
|
+
emitConversationCreated(conversation: DyFM_Msg_Conversation, participantIds: string[]): void;
|
|
182
|
+
emitConversationUpdated(conversation: DyFM_Msg_Conversation): void;
|
|
183
|
+
emitConversationDeleted(conversationId: string): void;
|
|
184
|
+
emitParticipantAdded(conversationId: string, userId: string): void;
|
|
185
|
+
emitParticipantRemoved(conversationId: string, userId: string): void;
|
|
186
|
+
emitReactionAdded(messageId: string, reaction: DyFM_Msg_Reaction): void;
|
|
187
|
+
emitReactionRemoved(messageId: string, userId: string, emoji: string): void;
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Controllers
|
|
192
|
+
|
|
193
|
+
#### `DyNTS_Msg_Controller`
|
|
194
|
+
|
|
195
|
+
HTTP API controller for messaging endpoints:
|
|
196
|
+
|
|
197
|
+
**Endpoints:**
|
|
198
|
+
- `POST /api/messaging/messages` - Send a message
|
|
199
|
+
- `PUT /api/messaging/messages/:id` - Edit a message
|
|
200
|
+
- `DELETE /api/messaging/messages/:id` - Delete a message
|
|
201
|
+
- `POST /api/messaging/messages/:id/read` - Mark messages as read
|
|
202
|
+
- `POST /api/messaging/messages/:id/reactions` - Add reaction
|
|
203
|
+
- `DELETE /api/messaging/messages/:id/reactions` - Remove reaction
|
|
204
|
+
- `GET /api/messaging/conversations` - Get conversations
|
|
205
|
+
- `POST /api/messaging/conversations` - Create conversation
|
|
206
|
+
- `PUT /api/messaging/conversations/:id` - Update conversation
|
|
207
|
+
- `DELETE /api/messaging/conversations/:id` - Delete conversation
|
|
208
|
+
- `POST /api/messaging/conversations/:id/participants` - Add participant
|
|
209
|
+
- `DELETE /api/messaging/conversations/:id/participants/:userId` - Remove participant
|
|
210
|
+
|
|
211
|
+
## Configuration
|
|
212
|
+
|
|
213
|
+
### Global Settings
|
|
214
|
+
|
|
215
|
+
Configure messaging settings in your global configuration:
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
export const DyNTS_global_settings = {
|
|
219
|
+
messaging_settings: {
|
|
220
|
+
enableRealtimeEvents: true,
|
|
221
|
+
maxMessagesPerLoad: 50,
|
|
222
|
+
enableThreading: true,
|
|
223
|
+
enableReactions: true,
|
|
224
|
+
enableAttachments: true,
|
|
225
|
+
enableMentions: true,
|
|
226
|
+
enableReadReceipts: true,
|
|
227
|
+
enableTypingIndicators: true,
|
|
228
|
+
retry: {
|
|
229
|
+
maxRetries: 3,
|
|
230
|
+
retryDelay: 1000
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Routing
|
|
237
|
+
|
|
238
|
+
Add the messaging routing module to your application:
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
import { DyNTS_getMessagingRoutingModule } from '@futdevpro/dynamo-nts/messaging';
|
|
242
|
+
|
|
243
|
+
const messagingRoutes = DyNTS_getMessagingRoutingModule(
|
|
244
|
+
DyNTS_RouteSecurity.authenticated
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
// Add to your routing configuration
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Integration
|
|
251
|
+
|
|
252
|
+
### Bot Integration
|
|
253
|
+
|
|
254
|
+
The messaging system integrates with the bot module to sync messages:
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
import { DyNTS_Msg_Integration_ControlService } from '@futdevpro/dynamo-nts/messaging';
|
|
258
|
+
import { DyNTS_Bot_MessageWrapper } from '@futdevpro/dynamo-nts/bot';
|
|
259
|
+
|
|
260
|
+
const integrationService = DyNTS_Msg_Integration_ControlService.getInstance();
|
|
261
|
+
|
|
262
|
+
// Sync bot message to messaging system
|
|
263
|
+
const message = await integrationService.syncBotMessage(
|
|
264
|
+
botMessage,
|
|
265
|
+
conversationId,
|
|
266
|
+
'bot-service'
|
|
267
|
+
);
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Assistant Integration
|
|
271
|
+
|
|
272
|
+
Sync AI assistant responses:
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
// Sync AI assistant message
|
|
276
|
+
const aiMessage = await integrationService.syncAssistantMessage(
|
|
277
|
+
'AI response text',
|
|
278
|
+
'conv-123',
|
|
279
|
+
'openai',
|
|
280
|
+
'gpt-4',
|
|
281
|
+
'ai-assistant-id',
|
|
282
|
+
'ai-service'
|
|
283
|
+
);
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Usage Examples
|
|
287
|
+
|
|
288
|
+
### Sending a Message
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
import { DyNTS_Msg_Main_ControlService } from '@futdevpro/dynamo-nts/messaging';
|
|
292
|
+
|
|
293
|
+
const controlService = DyNTS_Msg_Main_ControlService.getInstance();
|
|
294
|
+
|
|
295
|
+
const message = await controlService.sendMessage(
|
|
296
|
+
'conv-123',
|
|
297
|
+
{
|
|
298
|
+
content: 'Hello from the backend!',
|
|
299
|
+
type: DyFM_Msg_Type.text
|
|
300
|
+
},
|
|
301
|
+
'user-456',
|
|
302
|
+
'backend-service'
|
|
303
|
+
);
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Creating a Conversation
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
const conversation = await controlService.createConversation(
|
|
310
|
+
{
|
|
311
|
+
type: DyFM_Msg_ConversationType.direct,
|
|
312
|
+
participants: [
|
|
313
|
+
{ userId: 'user-123', role: DyFM_Msg_ParticipantRole.member, joinedAt: new Date() },
|
|
314
|
+
{ userId: 'user-456', role: DyFM_Msg_ParticipantRole.member, joinedAt: new Date() }
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
'user-123',
|
|
318
|
+
'backend-service'
|
|
319
|
+
);
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Adding a Reaction
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
const message = await controlService.addReaction(
|
|
326
|
+
'msg-123',
|
|
327
|
+
'👍',
|
|
328
|
+
'user-456',
|
|
329
|
+
'user-456'
|
|
330
|
+
);
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Error Handling
|
|
334
|
+
|
|
335
|
+
The module uses comprehensive error handling:
|
|
336
|
+
|
|
337
|
+
```typescript
|
|
338
|
+
try {
|
|
339
|
+
await controlService.sendMessage(...);
|
|
340
|
+
} catch (error) {
|
|
341
|
+
if (error instanceof DyFM_Error) {
|
|
342
|
+
console.error('Error code:', error.errorCode);
|
|
343
|
+
console.error('User message:', error.userMessage);
|
|
344
|
+
console.error('Technical message:', error.technicalMessage);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Related Documentation
|
|
350
|
+
|
|
351
|
+
- [Dynamo FSM Messaging Module](../dynamo-fsm/messaging/README.md)
|
|
352
|
+
- [Dynamo NGX Messaging Module](../dynamo-ngx/messaging/README.md)
|
|
353
|
+
- [Bot Module Integration](./bot/README.md)
|
|
354
|
+
- [Assistant Module Integration](./assistant/README.md)
|