@futdevpro/nts-dynamo 1.15.15 → 1.15.17
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/pnpm-workspace.yaml +2 -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,229 +1,229 @@
|
|
|
1
|
-
|
|
2
|
-
import { DyNTS_AI_LLMChat_ServiceBase } from './ai-llm-chat.service-base';
|
|
3
|
-
import { DyNTS_AI_LLM_ServiceBase } from './ai-llm.service-base';
|
|
4
|
-
import { DyFM_AI_CallSettings, DyFM_AI_MessageRole, DyFM_AI_Message } from '@futdevpro/fsm-dynamo/ai';
|
|
5
|
-
import { DyFM_AI_ConversationBase_Input, DyFM_AI_ConversationGenericSelect_Input, DyFM_AI_ConversationGenericMultiSelect_Input, DyFM_AI_ConversationJSONKeysDescription_Input, DyFM_AI_ConversationJSONExactKeys_Input } from '../_models/ai-input-interfaces';
|
|
6
|
-
|
|
7
|
-
class TestLLMChatService extends DyNTS_AI_LLMChat_ServiceBase<DyFM_AI_CallSettings> {
|
|
8
|
-
readonly aiProvider: any = {} as any;
|
|
9
|
-
readonly capabilities: any = {} as any;
|
|
10
|
-
setup = (config: any): void => {};
|
|
11
|
-
testConnection = async (issuer: string): Promise<boolean> => true;
|
|
12
|
-
readonly defaultSettings: DyFM_AI_CallSettings = {
|
|
13
|
-
systemPrompt: 'Test system prompt',
|
|
14
|
-
useModel: 'test-model',
|
|
15
|
-
debugLog: false,
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
readonly predefinedRequests = {
|
|
19
|
-
yesNo: {
|
|
20
|
-
upperCaseYes: 'YES',
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
requestSimpleMessage = async (set: any): Promise<string> => { return ''; };
|
|
25
|
-
requestYesNo = async (set: any): Promise<boolean> => { return false; };
|
|
26
|
-
requestPercentage = async (set: any): Promise<number> => { return 0; };
|
|
27
|
-
requestSelect = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
28
|
-
requestMultiselect = async <T>(set: any): Promise<T[] | { unparsableResult: string }> => { return []; };
|
|
29
|
-
requestJSON = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
30
|
-
requestJSONQuestionWithKeysDescription = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
31
|
-
requestJSONWithExactKeys = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
32
|
-
requestList = async <T>(set: any): Promise<T[] | { unparsableResult: string }> => { return []; };
|
|
33
|
-
|
|
34
|
-
async requestSimpleMessageInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<string> {
|
|
35
|
-
return 'Test response';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async requestYesNoInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<boolean> {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async requestPercentageInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<number> {
|
|
43
|
-
return 50;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async requestSelectInConversation<T>(set: DyFM_AI_ConversationGenericSelect_Input<T, DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
47
|
-
return null as any;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async requestMultiselectInConversation<T>(set: DyFM_AI_ConversationGenericMultiSelect_Input<T, DyFM_AI_CallSettings>): Promise<T[] | { unparsableResult: string }> {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async requestJSONInConversation<T = any>(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
55
|
-
return null as any;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async requestJSONInConversationWithKeysDescription<T>(set: DyFM_AI_ConversationJSONKeysDescription_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
59
|
-
return null as any;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async requestJSONInConversationWithExactKeys<T>(set: DyFM_AI_ConversationJSONExactKeys_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
63
|
-
return null as any;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async requestListInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<string[] | { unparsableResult: string }> {
|
|
67
|
-
return [];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
static getInstance(): TestLLMChatService {
|
|
71
|
-
return TestLLMChatService.getSingletonInstance();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
describe('| DyNTS_AI_LLMChat_ServiceBase', () => {
|
|
76
|
-
let service: TestLLMChatService;
|
|
77
|
-
|
|
78
|
-
beforeEach(() => {
|
|
79
|
-
service = new (TestLLMChatService as any)();
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('| constructor', () => {
|
|
83
|
-
it('| should extend LLM service base', () => {
|
|
84
|
-
expect(service).toBeInstanceOf(DyNTS_AI_LLM_ServiceBase);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
describe('| requestSimpleMessageInConversation', () => {
|
|
89
|
-
it('| should request simple message in conversation', async () => {
|
|
90
|
-
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
91
|
-
conversation: [
|
|
92
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Hello' },
|
|
93
|
-
],
|
|
94
|
-
issuer: 'test-issuer',
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const result = await service.requestSimpleMessageInConversation(input);
|
|
98
|
-
|
|
99
|
-
expect(result).toBe('Test response');
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
describe('| requestYesNoInConversation', () => {
|
|
104
|
-
it('| should request yes/no in conversation', async () => {
|
|
105
|
-
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
106
|
-
conversation: [
|
|
107
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Is this true?' },
|
|
108
|
-
],
|
|
109
|
-
issuer: 'test-issuer',
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
const result = await service.requestYesNoInConversation(input);
|
|
113
|
-
|
|
114
|
-
expect(result).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
describe('| requestPercentageInConversation', () => {
|
|
119
|
-
it('| should request percentage in conversation', async () => {
|
|
120
|
-
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
121
|
-
conversation: [
|
|
122
|
-
{ role: DyFM_AI_MessageRole.user, content: 'What percentage?' },
|
|
123
|
-
],
|
|
124
|
-
issuer: 'test-issuer',
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const result = await service.requestPercentageInConversation(input);
|
|
128
|
-
|
|
129
|
-
expect(result).toBe(50);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
describe('| requestSelectInConversation', () => {
|
|
134
|
-
it('| should request select in conversation', async () => {
|
|
135
|
-
const input: DyFM_AI_ConversationGenericSelect_Input<string, DyFM_AI_CallSettings> = {
|
|
136
|
-
conversation: [
|
|
137
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Choose one' },
|
|
138
|
-
],
|
|
139
|
-
selectFrom: ['option1', 'option2'],
|
|
140
|
-
issuer: 'test-issuer',
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
const result = await service.requestSelectInConversation(input);
|
|
144
|
-
|
|
145
|
-
expect(result).toBeDefined();
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
describe('| requestMultiselectInConversation', () => {
|
|
150
|
-
it('| should request multiselect in conversation', async () => {
|
|
151
|
-
const input: DyFM_AI_ConversationGenericMultiSelect_Input<string, DyFM_AI_CallSettings> = {
|
|
152
|
-
conversation: [
|
|
153
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Choose multiple' },
|
|
154
|
-
],
|
|
155
|
-
options: ['option1', 'option2'],
|
|
156
|
-
issuer: 'test-issuer',
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
const result = await service.requestMultiselectInConversation(input);
|
|
160
|
-
|
|
161
|
-
expect(result).toBeDefined();
|
|
162
|
-
expect(Array.isArray(result)).toBe(true);
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
describe('| requestJSONInConversation', () => {
|
|
167
|
-
it('| should request JSON in conversation', async () => {
|
|
168
|
-
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
169
|
-
conversation: [
|
|
170
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON' },
|
|
171
|
-
],
|
|
172
|
-
issuer: 'test-issuer',
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
const result = await service.requestJSONInConversation(input);
|
|
176
|
-
|
|
177
|
-
expect(result).toBeDefined();
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
describe('| requestJSONInConversationWithKeysDescription', () => {
|
|
182
|
-
it('| should request JSON with keys description in conversation', async () => {
|
|
183
|
-
const input: DyFM_AI_ConversationJSONKeysDescription_Input<DyFM_AI_CallSettings> = {
|
|
184
|
-
conversation: [
|
|
185
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON with keys' },
|
|
186
|
-
],
|
|
187
|
-
keysDescription: 'key1: Description 1',
|
|
188
|
-
issuer: 'test-issuer',
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
const result = await service.requestJSONInConversationWithKeysDescription(input);
|
|
192
|
-
|
|
193
|
-
expect(result).toBeDefined();
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
describe('| requestJSONInConversationWithExactKeys', () => {
|
|
198
|
-
it('| should request JSON with exact keys in conversation', async () => {
|
|
199
|
-
const input: DyFM_AI_ConversationJSONExactKeys_Input<DyFM_AI_CallSettings> = {
|
|
200
|
-
conversation: [
|
|
201
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON with exact keys' },
|
|
202
|
-
],
|
|
203
|
-
keys: ['key1', 'key2'],
|
|
204
|
-
issuer: 'test-issuer',
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
const result = await service.requestJSONInConversationWithExactKeys(input);
|
|
208
|
-
|
|
209
|
-
expect(result).toBeDefined();
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
describe('| requestListInConversation', () => {
|
|
214
|
-
it('| should request list in conversation', async () => {
|
|
215
|
-
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
216
|
-
conversation: [
|
|
217
|
-
{ role: DyFM_AI_MessageRole.user, content: 'Return list' },
|
|
218
|
-
],
|
|
219
|
-
issuer: 'test-issuer',
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
const result = await service.requestListInConversation(input);
|
|
223
|
-
|
|
224
|
-
expect(result).toBeDefined();
|
|
225
|
-
expect(Array.isArray(result)).toBe(true);
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
|
|
1
|
+
|
|
2
|
+
import { DyNTS_AI_LLMChat_ServiceBase } from './ai-llm-chat.service-base';
|
|
3
|
+
import { DyNTS_AI_LLM_ServiceBase } from './ai-llm.service-base';
|
|
4
|
+
import { DyFM_AI_CallSettings, DyFM_AI_MessageRole, DyFM_AI_Message } from '@futdevpro/fsm-dynamo/ai';
|
|
5
|
+
import { DyFM_AI_ConversationBase_Input, DyFM_AI_ConversationGenericSelect_Input, DyFM_AI_ConversationGenericMultiSelect_Input, DyFM_AI_ConversationJSONKeysDescription_Input, DyFM_AI_ConversationJSONExactKeys_Input } from '../_models/ai-input-interfaces';
|
|
6
|
+
|
|
7
|
+
class TestLLMChatService extends DyNTS_AI_LLMChat_ServiceBase<DyFM_AI_CallSettings> {
|
|
8
|
+
readonly aiProvider: any = {} as any;
|
|
9
|
+
readonly capabilities: any = {} as any;
|
|
10
|
+
setup = (config: any): void => {};
|
|
11
|
+
testConnection = async (issuer: string): Promise<boolean> => true;
|
|
12
|
+
readonly defaultSettings: DyFM_AI_CallSettings = {
|
|
13
|
+
systemPrompt: 'Test system prompt',
|
|
14
|
+
useModel: 'test-model',
|
|
15
|
+
debugLog: false,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
readonly predefinedRequests = {
|
|
19
|
+
yesNo: {
|
|
20
|
+
upperCaseYes: 'YES',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
requestSimpleMessage = async (set: any): Promise<string> => { return ''; };
|
|
25
|
+
requestYesNo = async (set: any): Promise<boolean> => { return false; };
|
|
26
|
+
requestPercentage = async (set: any): Promise<number> => { return 0; };
|
|
27
|
+
requestSelect = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
28
|
+
requestMultiselect = async <T>(set: any): Promise<T[] | { unparsableResult: string }> => { return []; };
|
|
29
|
+
requestJSON = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
30
|
+
requestJSONQuestionWithKeysDescription = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
31
|
+
requestJSONWithExactKeys = async <T>(set: any): Promise<T | { unparsableResult: string }> => { return null as any; };
|
|
32
|
+
requestList = async <T>(set: any): Promise<T[] | { unparsableResult: string }> => { return []; };
|
|
33
|
+
|
|
34
|
+
async requestSimpleMessageInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<string> {
|
|
35
|
+
return 'Test response';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async requestYesNoInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<boolean> {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async requestPercentageInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<number> {
|
|
43
|
+
return 50;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async requestSelectInConversation<T>(set: DyFM_AI_ConversationGenericSelect_Input<T, DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
47
|
+
return null as any;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async requestMultiselectInConversation<T>(set: DyFM_AI_ConversationGenericMultiSelect_Input<T, DyFM_AI_CallSettings>): Promise<T[] | { unparsableResult: string }> {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async requestJSONInConversation<T = any>(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
55
|
+
return null as any;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async requestJSONInConversationWithKeysDescription<T>(set: DyFM_AI_ConversationJSONKeysDescription_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
59
|
+
return null as any;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async requestJSONInConversationWithExactKeys<T>(set: DyFM_AI_ConversationJSONExactKeys_Input<DyFM_AI_CallSettings>): Promise<T | { unparsableResult: string }> {
|
|
63
|
+
return null as any;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async requestListInConversation(set: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings>): Promise<string[] | { unparsableResult: string }> {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static getInstance(): TestLLMChatService {
|
|
71
|
+
return TestLLMChatService.getSingletonInstance();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
describe('| DyNTS_AI_LLMChat_ServiceBase', () => {
|
|
76
|
+
let service: TestLLMChatService;
|
|
77
|
+
|
|
78
|
+
beforeEach(() => {
|
|
79
|
+
service = new (TestLLMChatService as any)();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('| constructor', () => {
|
|
83
|
+
it('| should extend LLM service base', () => {
|
|
84
|
+
expect(service).toBeInstanceOf(DyNTS_AI_LLM_ServiceBase);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe('| requestSimpleMessageInConversation', () => {
|
|
89
|
+
it('| should request simple message in conversation', async () => {
|
|
90
|
+
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
91
|
+
conversation: [
|
|
92
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Hello' },
|
|
93
|
+
],
|
|
94
|
+
issuer: 'test-issuer',
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const result = await service.requestSimpleMessageInConversation(input);
|
|
98
|
+
|
|
99
|
+
expect(result).toBe('Test response');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
describe('| requestYesNoInConversation', () => {
|
|
104
|
+
it('| should request yes/no in conversation', async () => {
|
|
105
|
+
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
106
|
+
conversation: [
|
|
107
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Is this true?' },
|
|
108
|
+
],
|
|
109
|
+
issuer: 'test-issuer',
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const result = await service.requestYesNoInConversation(input);
|
|
113
|
+
|
|
114
|
+
expect(result).toBe(true);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe('| requestPercentageInConversation', () => {
|
|
119
|
+
it('| should request percentage in conversation', async () => {
|
|
120
|
+
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
121
|
+
conversation: [
|
|
122
|
+
{ role: DyFM_AI_MessageRole.user, content: 'What percentage?' },
|
|
123
|
+
],
|
|
124
|
+
issuer: 'test-issuer',
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const result = await service.requestPercentageInConversation(input);
|
|
128
|
+
|
|
129
|
+
expect(result).toBe(50);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe('| requestSelectInConversation', () => {
|
|
134
|
+
it('| should request select in conversation', async () => {
|
|
135
|
+
const input: DyFM_AI_ConversationGenericSelect_Input<string, DyFM_AI_CallSettings> = {
|
|
136
|
+
conversation: [
|
|
137
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Choose one' },
|
|
138
|
+
],
|
|
139
|
+
selectFrom: ['option1', 'option2'],
|
|
140
|
+
issuer: 'test-issuer',
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const result = await service.requestSelectInConversation(input);
|
|
144
|
+
|
|
145
|
+
expect(result).toBeDefined();
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe('| requestMultiselectInConversation', () => {
|
|
150
|
+
it('| should request multiselect in conversation', async () => {
|
|
151
|
+
const input: DyFM_AI_ConversationGenericMultiSelect_Input<string, DyFM_AI_CallSettings> = {
|
|
152
|
+
conversation: [
|
|
153
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Choose multiple' },
|
|
154
|
+
],
|
|
155
|
+
options: ['option1', 'option2'],
|
|
156
|
+
issuer: 'test-issuer',
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const result = await service.requestMultiselectInConversation(input);
|
|
160
|
+
|
|
161
|
+
expect(result).toBeDefined();
|
|
162
|
+
expect(Array.isArray(result)).toBe(true);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
describe('| requestJSONInConversation', () => {
|
|
167
|
+
it('| should request JSON in conversation', async () => {
|
|
168
|
+
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
169
|
+
conversation: [
|
|
170
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON' },
|
|
171
|
+
],
|
|
172
|
+
issuer: 'test-issuer',
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
const result = await service.requestJSONInConversation(input);
|
|
176
|
+
|
|
177
|
+
expect(result).toBeDefined();
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
describe('| requestJSONInConversationWithKeysDescription', () => {
|
|
182
|
+
it('| should request JSON with keys description in conversation', async () => {
|
|
183
|
+
const input: DyFM_AI_ConversationJSONKeysDescription_Input<DyFM_AI_CallSettings> = {
|
|
184
|
+
conversation: [
|
|
185
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON with keys' },
|
|
186
|
+
],
|
|
187
|
+
keysDescription: 'key1: Description 1',
|
|
188
|
+
issuer: 'test-issuer',
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const result = await service.requestJSONInConversationWithKeysDescription(input);
|
|
192
|
+
|
|
193
|
+
expect(result).toBeDefined();
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
describe('| requestJSONInConversationWithExactKeys', () => {
|
|
198
|
+
it('| should request JSON with exact keys in conversation', async () => {
|
|
199
|
+
const input: DyFM_AI_ConversationJSONExactKeys_Input<DyFM_AI_CallSettings> = {
|
|
200
|
+
conversation: [
|
|
201
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Return JSON with exact keys' },
|
|
202
|
+
],
|
|
203
|
+
keys: ['key1', 'key2'],
|
|
204
|
+
issuer: 'test-issuer',
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const result = await service.requestJSONInConversationWithExactKeys(input);
|
|
208
|
+
|
|
209
|
+
expect(result).toBeDefined();
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
describe('| requestListInConversation', () => {
|
|
214
|
+
it('| should request list in conversation', async () => {
|
|
215
|
+
const input: DyFM_AI_ConversationBase_Input<DyFM_AI_CallSettings> = {
|
|
216
|
+
conversation: [
|
|
217
|
+
{ role: DyFM_AI_MessageRole.user, content: 'Return list' },
|
|
218
|
+
],
|
|
219
|
+
issuer: 'test-issuer',
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
const result = await service.requestListInConversation(input);
|
|
223
|
+
|
|
224
|
+
expect(result).toBeDefined();
|
|
225
|
+
expect(Array.isArray(result)).toBe(true);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { DyNTS_AI_LLM_ServiceBase } from './ai-llm.service-base';
|
|
2
|
-
import { DyFM_AI_Message, DyFM_AI_CallSettings } from '@futdevpro/fsm-dynamo/ai';
|
|
3
|
-
import {
|
|
4
|
-
DyFM_AI_ConversationBase_Input,
|
|
5
|
-
DyFM_AI_ConversationSelect_Input,
|
|
6
|
-
DyFM_AI_ConversationGenericSelect_Input,
|
|
7
|
-
DyFM_AI_ConversationMultiSelect_Input,
|
|
8
|
-
DyFM_AI_ConversationGenericMultiSelect_Input,
|
|
9
|
-
DyFM_AI_ConversationJSONKeysDescription_Input,
|
|
10
|
-
DyFM_AI_ConversationJSONExactKeys_Input,
|
|
11
|
-
} from '../_models/ai-input-interfaces';
|
|
12
|
-
import { DyFM_getLocalStackLocation, DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Abstract base class for LLM Chat services
|
|
16
|
-
* Extends LLM service with conversation management capabilities
|
|
17
|
-
*/
|
|
18
|
-
export abstract class DyNTS_AI_LLMChat_ServiceBase<
|
|
19
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
20
|
-
> extends DyNTS_AI_LLM_ServiceBase<T_AISettings> {
|
|
21
|
-
// History management
|
|
22
|
-
/**
|
|
23
|
-
* Add a message to the conversation history
|
|
24
|
-
*/
|
|
25
|
-
/* abstract addMessageToHistory(message: DyFM_AI_Message, issuer: string): void; */
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Clear the conversation history for an issuer
|
|
29
|
-
*/
|
|
30
|
-
/* abstract clearHistory(issuer: string): void; */
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Get the conversation history for an issuer
|
|
34
|
-
*/
|
|
35
|
-
/* abstract getHistory(issuer: string): DyFM_AI_Message[]; */
|
|
36
|
-
|
|
37
|
-
// Conversation methods (from OAI_LLMChat_ServiceBase)
|
|
38
|
-
abstract requestSimpleMessageInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<string>;
|
|
39
|
-
abstract requestYesNoInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<boolean>;
|
|
40
|
-
abstract requestPercentageInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<number>;
|
|
41
|
-
|
|
42
|
-
/* abstract selectQuestionInConversation(set: DyFM_AI_ConversationSelect_Input): Promise<string>; */
|
|
43
|
-
abstract requestSelectInConversation<T>(
|
|
44
|
-
set: DyFM_AI_ConversationGenericSelect_Input<T, T_AISettings>
|
|
45
|
-
): Promise<T | { unparsableResult: string }>;
|
|
46
|
-
/* abstract multipleSelectQuestionInConversationWithOptions(
|
|
47
|
-
set: DyFM_AI_ConversationMultiSelect_Input<T_AISettings>
|
|
48
|
-
): Promise<string[]>; */
|
|
49
|
-
abstract requestMultiselectInConversation<T>(
|
|
50
|
-
set: DyFM_AI_ConversationGenericMultiSelect_Input<T, T_AISettings>
|
|
51
|
-
): Promise<T[] | { unparsableResult: string }>;
|
|
52
|
-
|
|
53
|
-
abstract requestJSONInConversation<T = any>(
|
|
54
|
-
set: DyFM_AI_ConversationBase_Input<T_AISettings>
|
|
55
|
-
): Promise<T | { unparsableResult: string }>;
|
|
56
|
-
abstract requestJSONInConversationWithKeysDescription<T>(
|
|
57
|
-
set: DyFM_AI_ConversationJSONKeysDescription_Input<T_AISettings>
|
|
58
|
-
): Promise<T | { unparsableResult: string }>;
|
|
59
|
-
abstract requestJSONInConversationWithExactKeys<T>(
|
|
60
|
-
set: DyFM_AI_ConversationJSONExactKeys_Input<T_AISettings>
|
|
61
|
-
): Promise<T | { unparsableResult: string }>;
|
|
62
|
-
//abstract getQuestionAnswerInConversation(set: DyFM_AI_ConversationQuestion_Input): Promise<string>;
|
|
63
|
-
//abstract getAnswerInConversation(set: DyFM_AI_ConversationGetAnswer_Input): Promise<string>;
|
|
64
|
-
|
|
65
|
-
abstract requestListInConversation(
|
|
66
|
-
set: DyFM_AI_ConversationBase_Input<T_AISettings>
|
|
67
|
-
): Promise<string[] | { unparsableResult: string }>;
|
|
68
|
-
}
|
|
1
|
+
import { DyNTS_AI_LLM_ServiceBase } from './ai-llm.service-base';
|
|
2
|
+
import { DyFM_AI_Message, DyFM_AI_CallSettings } from '@futdevpro/fsm-dynamo/ai';
|
|
3
|
+
import {
|
|
4
|
+
DyFM_AI_ConversationBase_Input,
|
|
5
|
+
DyFM_AI_ConversationSelect_Input,
|
|
6
|
+
DyFM_AI_ConversationGenericSelect_Input,
|
|
7
|
+
DyFM_AI_ConversationMultiSelect_Input,
|
|
8
|
+
DyFM_AI_ConversationGenericMultiSelect_Input,
|
|
9
|
+
DyFM_AI_ConversationJSONKeysDescription_Input,
|
|
10
|
+
DyFM_AI_ConversationJSONExactKeys_Input,
|
|
11
|
+
} from '../_models/ai-input-interfaces';
|
|
12
|
+
import { DyFM_getLocalStackLocation, DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Abstract base class for LLM Chat services
|
|
16
|
+
* Extends LLM service with conversation management capabilities
|
|
17
|
+
*/
|
|
18
|
+
export abstract class DyNTS_AI_LLMChat_ServiceBase<
|
|
19
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
20
|
+
> extends DyNTS_AI_LLM_ServiceBase<T_AISettings> {
|
|
21
|
+
// History management
|
|
22
|
+
/**
|
|
23
|
+
* Add a message to the conversation history
|
|
24
|
+
*/
|
|
25
|
+
/* abstract addMessageToHistory(message: DyFM_AI_Message, issuer: string): void; */
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Clear the conversation history for an issuer
|
|
29
|
+
*/
|
|
30
|
+
/* abstract clearHistory(issuer: string): void; */
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Get the conversation history for an issuer
|
|
34
|
+
*/
|
|
35
|
+
/* abstract getHistory(issuer: string): DyFM_AI_Message[]; */
|
|
36
|
+
|
|
37
|
+
// Conversation methods (from OAI_LLMChat_ServiceBase)
|
|
38
|
+
abstract requestSimpleMessageInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<string>;
|
|
39
|
+
abstract requestYesNoInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<boolean>;
|
|
40
|
+
abstract requestPercentageInConversation(set: DyFM_AI_ConversationBase_Input<T_AISettings>): Promise<number>;
|
|
41
|
+
|
|
42
|
+
/* abstract selectQuestionInConversation(set: DyFM_AI_ConversationSelect_Input): Promise<string>; */
|
|
43
|
+
abstract requestSelectInConversation<T>(
|
|
44
|
+
set: DyFM_AI_ConversationGenericSelect_Input<T, T_AISettings>
|
|
45
|
+
): Promise<T | { unparsableResult: string }>;
|
|
46
|
+
/* abstract multipleSelectQuestionInConversationWithOptions(
|
|
47
|
+
set: DyFM_AI_ConversationMultiSelect_Input<T_AISettings>
|
|
48
|
+
): Promise<string[]>; */
|
|
49
|
+
abstract requestMultiselectInConversation<T>(
|
|
50
|
+
set: DyFM_AI_ConversationGenericMultiSelect_Input<T, T_AISettings>
|
|
51
|
+
): Promise<T[] | { unparsableResult: string }>;
|
|
52
|
+
|
|
53
|
+
abstract requestJSONInConversation<T = any>(
|
|
54
|
+
set: DyFM_AI_ConversationBase_Input<T_AISettings>
|
|
55
|
+
): Promise<T | { unparsableResult: string }>;
|
|
56
|
+
abstract requestJSONInConversationWithKeysDescription<T>(
|
|
57
|
+
set: DyFM_AI_ConversationJSONKeysDescription_Input<T_AISettings>
|
|
58
|
+
): Promise<T | { unparsableResult: string }>;
|
|
59
|
+
abstract requestJSONInConversationWithExactKeys<T>(
|
|
60
|
+
set: DyFM_AI_ConversationJSONExactKeys_Input<T_AISettings>
|
|
61
|
+
): Promise<T | { unparsableResult: string }>;
|
|
62
|
+
//abstract getQuestionAnswerInConversation(set: DyFM_AI_ConversationQuestion_Input): Promise<string>;
|
|
63
|
+
//abstract getAnswerInConversation(set: DyFM_AI_ConversationGetAnswer_Input): Promise<string>;
|
|
64
|
+
|
|
65
|
+
abstract requestListInConversation(
|
|
66
|
+
set: DyFM_AI_ConversationBase_Input<T_AISettings>
|
|
67
|
+
): Promise<string[] | { unparsableResult: string }>;
|
|
68
|
+
}
|