@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,157 +1,157 @@
|
|
|
1
|
-
import { OpenAI } from 'openai';
|
|
2
|
-
|
|
3
|
-
import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
|
|
4
|
-
import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
|
|
5
|
-
import { DyFM_OAI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai/open-ai';
|
|
6
|
-
import { DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
7
|
-
|
|
8
|
-
import { DyNTS_AI_UserKey_ServiceBase } from '../../../_services/ai-user-key.service-base';
|
|
9
|
-
import { DyNTS_AI_TestGeneration_Result } from '../../../_models/ai-test-generation-result.interface';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* OpenAI-specifikus user API key kezelo service
|
|
13
|
-
*
|
|
14
|
-
* A visszafejtett API kulcsbol OpenAI-specifikus konfigot allit ossze,
|
|
15
|
-
* es teszteli a kapcsolatot az OpenAI API-val.
|
|
16
|
-
*/
|
|
17
|
-
export class DyNTS_OAI_UserKey_ControlService extends DyNTS_AI_UserKey_ServiceBase {
|
|
18
|
-
|
|
19
|
-
static getInstance(): DyNTS_OAI_UserKey_ControlService {
|
|
20
|
-
return DyNTS_OAI_UserKey_ControlService.getSingletonInstance();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
readonly aiProvider: DyFM_AI_Provider = DyFM_AI_Provider.OpenAI;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* OpenAI config osszeallitasa a visszafejtett kulcsbol
|
|
27
|
-
*/
|
|
28
|
-
resolveConfig(
|
|
29
|
-
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
30
|
-
decryptedApiKey: string
|
|
31
|
-
): DyFM_AI_Config {
|
|
32
|
-
const oaiConfig: DyFM_OAI_UserProviderConfig =
|
|
33
|
-
userProviderConfig as DyFM_OAI_UserProviderConfig;
|
|
34
|
-
|
|
35
|
-
return {
|
|
36
|
-
apiKey: decryptedApiKey,
|
|
37
|
-
organization: oaiConfig.organization,
|
|
38
|
-
project: oaiConfig.project,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* OpenAI kapcsolat tesztelese a models.list() hivassal
|
|
44
|
-
*/
|
|
45
|
-
async testConnection(
|
|
46
|
-
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
47
|
-
decryptedApiKey: string
|
|
48
|
-
): Promise<boolean> {
|
|
49
|
-
try {
|
|
50
|
-
const config: DyFM_AI_Config = this.resolveConfig(userProviderConfig, decryptedApiKey);
|
|
51
|
-
const openai: OpenAI = new OpenAI({
|
|
52
|
-
apiKey: config.apiKey,
|
|
53
|
-
organization: config.organization,
|
|
54
|
-
project: config.project,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
await openai.models.list();
|
|
58
|
-
|
|
59
|
-
return true;
|
|
60
|
-
} catch (error) {
|
|
61
|
-
DyFM_Log.error(
|
|
62
|
-
'DyNTS_OAI_UserKey_ControlService',
|
|
63
|
-
'testConnection',
|
|
64
|
-
'OpenAI connection test failed',
|
|
65
|
-
{ error: error }
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Elerheto OpenAI modellek lekerdezese
|
|
74
|
-
* Szuri a chat/LLM modelleket (nem embedding, nem whisper stb.)
|
|
75
|
-
*/
|
|
76
|
-
async listAvailableModels(
|
|
77
|
-
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
78
|
-
decryptedApiKey: string
|
|
79
|
-
): Promise<string[]> {
|
|
80
|
-
const config: DyFM_AI_Config = this.resolveConfig(userProviderConfig, decryptedApiKey);
|
|
81
|
-
const openai: OpenAI = new OpenAI({
|
|
82
|
-
apiKey: config.apiKey,
|
|
83
|
-
organization: config.organization,
|
|
84
|
-
project: config.project,
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
const models = await openai.models.list();
|
|
88
|
-
|
|
89
|
-
return models.data
|
|
90
|
-
.map((m) => m.id)
|
|
91
|
-
.filter((id: string) => this.isLLMModel(id))
|
|
92
|
-
.sort();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Teszt generalas az OpenAI API-val
|
|
97
|
-
*/
|
|
98
|
-
async testGeneration(set: {
|
|
99
|
-
userProviderConfig: DyFM_AI_UserProviderConfig;
|
|
100
|
-
decryptedApiKey: string;
|
|
101
|
-
model: string;
|
|
102
|
-
}): Promise<DyNTS_AI_TestGeneration_Result> {
|
|
103
|
-
const startTime: number = Date.now();
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
const config: DyFM_AI_Config = this.resolveConfig(
|
|
107
|
-
set.userProviderConfig,
|
|
108
|
-
set.decryptedApiKey
|
|
109
|
-
);
|
|
110
|
-
const openai: OpenAI = new OpenAI({
|
|
111
|
-
apiKey: config.apiKey,
|
|
112
|
-
organization: config.organization,
|
|
113
|
-
project: config.project,
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
const response = await openai.chat.completions.create({
|
|
117
|
-
model: set.model,
|
|
118
|
-
messages: [{ role: 'user', content: 'Hello, this is a test. Reply with "OK".' }],
|
|
119
|
-
max_tokens: 10,
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
return {
|
|
123
|
-
success: true,
|
|
124
|
-
response: response.choices[0]?.message?.content,
|
|
125
|
-
model: set.model,
|
|
126
|
-
latencyMs: Date.now() - startTime,
|
|
127
|
-
};
|
|
128
|
-
} catch (error) {
|
|
129
|
-
DyFM_Log.error(
|
|
130
|
-
'DyNTS_OAI_UserKey_ControlService',
|
|
131
|
-
'testGeneration',
|
|
132
|
-
'OpenAI test generation failed',
|
|
133
|
-
{ error: error }
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
return {
|
|
137
|
-
success: false,
|
|
138
|
-
model: set.model,
|
|
139
|
-
latencyMs: Date.now() - startTime,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* LLM/Chat modell szures -- kiszuri az embedding, whisper, tts stb. modelleket
|
|
146
|
-
*/
|
|
147
|
-
private isLLMModel(modelId: string): boolean {
|
|
148
|
-
const excludePatterns: string[] = [
|
|
149
|
-
'embedding', 'whisper', 'tts', 'dall-e',
|
|
150
|
-
'moderation', 'davinci', 'babbage', 'ada',
|
|
151
|
-
];
|
|
152
|
-
|
|
153
|
-
return !excludePatterns.some(
|
|
154
|
-
(pattern: string) => modelId.includes(pattern)
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
1
|
+
import { OpenAI } from 'openai';
|
|
2
|
+
|
|
3
|
+
import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
|
|
4
|
+
import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
|
|
5
|
+
import { DyFM_OAI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai/open-ai';
|
|
6
|
+
import { DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
7
|
+
|
|
8
|
+
import { DyNTS_AI_UserKey_ServiceBase } from '../../../_services/ai-user-key.service-base';
|
|
9
|
+
import { DyNTS_AI_TestGeneration_Result } from '../../../_models/ai-test-generation-result.interface';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* OpenAI-specifikus user API key kezelo service
|
|
13
|
+
*
|
|
14
|
+
* A visszafejtett API kulcsbol OpenAI-specifikus konfigot allit ossze,
|
|
15
|
+
* es teszteli a kapcsolatot az OpenAI API-val.
|
|
16
|
+
*/
|
|
17
|
+
export class DyNTS_OAI_UserKey_ControlService extends DyNTS_AI_UserKey_ServiceBase {
|
|
18
|
+
|
|
19
|
+
static getInstance(): DyNTS_OAI_UserKey_ControlService {
|
|
20
|
+
return DyNTS_OAI_UserKey_ControlService.getSingletonInstance();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
readonly aiProvider: DyFM_AI_Provider = DyFM_AI_Provider.OpenAI;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* OpenAI config osszeallitasa a visszafejtett kulcsbol
|
|
27
|
+
*/
|
|
28
|
+
resolveConfig(
|
|
29
|
+
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
30
|
+
decryptedApiKey: string
|
|
31
|
+
): DyFM_AI_Config {
|
|
32
|
+
const oaiConfig: DyFM_OAI_UserProviderConfig =
|
|
33
|
+
userProviderConfig as DyFM_OAI_UserProviderConfig;
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
apiKey: decryptedApiKey,
|
|
37
|
+
organization: oaiConfig.organization,
|
|
38
|
+
project: oaiConfig.project,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* OpenAI kapcsolat tesztelese a models.list() hivassal
|
|
44
|
+
*/
|
|
45
|
+
async testConnection(
|
|
46
|
+
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
47
|
+
decryptedApiKey: string
|
|
48
|
+
): Promise<boolean> {
|
|
49
|
+
try {
|
|
50
|
+
const config: DyFM_AI_Config = this.resolveConfig(userProviderConfig, decryptedApiKey);
|
|
51
|
+
const openai: OpenAI = new OpenAI({
|
|
52
|
+
apiKey: config.apiKey,
|
|
53
|
+
organization: config.organization,
|
|
54
|
+
project: config.project,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
await openai.models.list();
|
|
58
|
+
|
|
59
|
+
return true;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
DyFM_Log.error(
|
|
62
|
+
'DyNTS_OAI_UserKey_ControlService',
|
|
63
|
+
'testConnection',
|
|
64
|
+
'OpenAI connection test failed',
|
|
65
|
+
{ error: error }
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Elerheto OpenAI modellek lekerdezese
|
|
74
|
+
* Szuri a chat/LLM modelleket (nem embedding, nem whisper stb.)
|
|
75
|
+
*/
|
|
76
|
+
async listAvailableModels(
|
|
77
|
+
userProviderConfig: DyFM_AI_UserProviderConfig,
|
|
78
|
+
decryptedApiKey: string
|
|
79
|
+
): Promise<string[]> {
|
|
80
|
+
const config: DyFM_AI_Config = this.resolveConfig(userProviderConfig, decryptedApiKey);
|
|
81
|
+
const openai: OpenAI = new OpenAI({
|
|
82
|
+
apiKey: config.apiKey,
|
|
83
|
+
organization: config.organization,
|
|
84
|
+
project: config.project,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const models = await openai.models.list();
|
|
88
|
+
|
|
89
|
+
return models.data
|
|
90
|
+
.map((m) => m.id)
|
|
91
|
+
.filter((id: string) => this.isLLMModel(id))
|
|
92
|
+
.sort();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Teszt generalas az OpenAI API-val
|
|
97
|
+
*/
|
|
98
|
+
async testGeneration(set: {
|
|
99
|
+
userProviderConfig: DyFM_AI_UserProviderConfig;
|
|
100
|
+
decryptedApiKey: string;
|
|
101
|
+
model: string;
|
|
102
|
+
}): Promise<DyNTS_AI_TestGeneration_Result> {
|
|
103
|
+
const startTime: number = Date.now();
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
const config: DyFM_AI_Config = this.resolveConfig(
|
|
107
|
+
set.userProviderConfig,
|
|
108
|
+
set.decryptedApiKey
|
|
109
|
+
);
|
|
110
|
+
const openai: OpenAI = new OpenAI({
|
|
111
|
+
apiKey: config.apiKey,
|
|
112
|
+
organization: config.organization,
|
|
113
|
+
project: config.project,
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
const response = await openai.chat.completions.create({
|
|
117
|
+
model: set.model,
|
|
118
|
+
messages: [{ role: 'user', content: 'Hello, this is a test. Reply with "OK".' }],
|
|
119
|
+
max_tokens: 10,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
success: true,
|
|
124
|
+
response: response.choices[0]?.message?.content,
|
|
125
|
+
model: set.model,
|
|
126
|
+
latencyMs: Date.now() - startTime,
|
|
127
|
+
};
|
|
128
|
+
} catch (error) {
|
|
129
|
+
DyFM_Log.error(
|
|
130
|
+
'DyNTS_OAI_UserKey_ControlService',
|
|
131
|
+
'testGeneration',
|
|
132
|
+
'OpenAI test generation failed',
|
|
133
|
+
{ error: error }
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
model: set.model,
|
|
139
|
+
latencyMs: Date.now() - startTime,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* LLM/Chat modell szures -- kiszuri az embedding, whisper, tts stb. modelleket
|
|
146
|
+
*/
|
|
147
|
+
private isLLMModel(modelId: string): boolean {
|
|
148
|
+
const excludePatterns: string[] = [
|
|
149
|
+
'embedding', 'whisper', 'tts', 'dall-e',
|
|
150
|
+
'moderation', 'davinci', 'babbage', 'ada',
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
return !excludePatterns.some(
|
|
154
|
+
(pattern: string) => modelId.includes(pattern)
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
|
|
2
|
-
import { DyNTS_AI_Embedding_ServiceBase } from './ai-embedding.service-base';
|
|
3
|
-
import { DyFM_DAI_EmbeddingInfo } from '@futdevpro/fsm-dynamo/ai/document-ai';
|
|
4
|
-
|
|
5
|
-
class TestEmbeddingService extends DyNTS_AI_Embedding_ServiceBase {
|
|
6
|
-
readonly aiProvider: any = {} as any;
|
|
7
|
-
readonly capabilities: any = {} as any;
|
|
8
|
-
setup = (config: any): void => {};
|
|
9
|
-
testConnection = async (issuer: string): Promise<boolean> => true;
|
|
10
|
-
createEmbedding = async (set: { text: string; model: string; fullResponse?: boolean; issuer: string }): Promise<number[] | any> => {
|
|
11
|
-
return [0.1, 0.2, 0.3];
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
createEmbeddings = async (set: { texts: string[]; model: string; fullResponse?: boolean; issuer: string }): Promise<number[][] | any> => {
|
|
15
|
-
return [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]];
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
getEmbeddingInfo = (model: string): DyFM_DAI_EmbeddingInfo => {
|
|
19
|
-
return {
|
|
20
|
-
model: model,
|
|
21
|
-
} as any;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
static getInstance(): TestEmbeddingService {
|
|
25
|
-
return TestEmbeddingService.getSingletonInstance();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
describe('| DyNTS_AI_Embedding_ServiceBase', () => {
|
|
30
|
-
let service: TestEmbeddingService;
|
|
31
|
-
|
|
32
|
-
beforeEach(() => {
|
|
33
|
-
service = TestEmbeddingService.getInstance();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('| should be a singleton instance', () => {
|
|
37
|
-
const instance1 = TestEmbeddingService.getInstance();
|
|
38
|
-
const instance2 = TestEmbeddingService.getInstance();
|
|
39
|
-
|
|
40
|
-
expect(instance1).toBe(instance2);
|
|
41
|
-
expect(instance1).toBeInstanceOf(TestEmbeddingService);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
describe('| createEmbedding', () => {
|
|
45
|
-
it('| should create embedding for single text', async () => {
|
|
46
|
-
const result = await service.createEmbedding({
|
|
47
|
-
text: 'Test text',
|
|
48
|
-
model: 'test-model',
|
|
49
|
-
issuer: 'issuer-123',
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
expect(result).toEqual([0.1, 0.2, 0.3]);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('| should accept fullResponse parameter', async () => {
|
|
56
|
-
const result = await service.createEmbedding({
|
|
57
|
-
text: 'Test text',
|
|
58
|
-
model: 'test-model',
|
|
59
|
-
fullResponse: true,
|
|
60
|
-
issuer: 'issuer-123',
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
expect(result).toBeDefined();
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
describe('| createEmbeddings', () => {
|
|
68
|
-
it('| should create embeddings for multiple texts', async () => {
|
|
69
|
-
const result = await service.createEmbeddings({
|
|
70
|
-
texts: ['Text 1', 'Text 2'],
|
|
71
|
-
model: 'test-model',
|
|
72
|
-
issuer: 'issuer-123',
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
expect(result).toEqual([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it('| should accept fullResponse parameter', async () => {
|
|
79
|
-
const result = await service.createEmbeddings({
|
|
80
|
-
texts: ['Text 1'],
|
|
81
|
-
model: 'test-model',
|
|
82
|
-
fullResponse: true,
|
|
83
|
-
issuer: 'issuer-123',
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
expect(result).toBeDefined();
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
describe('| getEmbeddingInfo', () => {
|
|
91
|
-
it('| should return embedding info for model', () => {
|
|
92
|
-
const result = service.getEmbeddingInfo('test-model');
|
|
93
|
-
|
|
94
|
-
expect(result.model).toBe('test-model');
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
|
|
1
|
+
|
|
2
|
+
import { DyNTS_AI_Embedding_ServiceBase } from './ai-embedding.service-base';
|
|
3
|
+
import { DyFM_DAI_EmbeddingInfo } from '@futdevpro/fsm-dynamo/ai/document-ai';
|
|
4
|
+
|
|
5
|
+
class TestEmbeddingService extends DyNTS_AI_Embedding_ServiceBase {
|
|
6
|
+
readonly aiProvider: any = {} as any;
|
|
7
|
+
readonly capabilities: any = {} as any;
|
|
8
|
+
setup = (config: any): void => {};
|
|
9
|
+
testConnection = async (issuer: string): Promise<boolean> => true;
|
|
10
|
+
createEmbedding = async (set: { text: string; model: string; fullResponse?: boolean; issuer: string }): Promise<number[] | any> => {
|
|
11
|
+
return [0.1, 0.2, 0.3];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
createEmbeddings = async (set: { texts: string[]; model: string; fullResponse?: boolean; issuer: string }): Promise<number[][] | any> => {
|
|
15
|
+
return [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]];
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getEmbeddingInfo = (model: string): DyFM_DAI_EmbeddingInfo => {
|
|
19
|
+
return {
|
|
20
|
+
model: model,
|
|
21
|
+
} as any;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
static getInstance(): TestEmbeddingService {
|
|
25
|
+
return TestEmbeddingService.getSingletonInstance();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('| DyNTS_AI_Embedding_ServiceBase', () => {
|
|
30
|
+
let service: TestEmbeddingService;
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
service = TestEmbeddingService.getInstance();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('| should be a singleton instance', () => {
|
|
37
|
+
const instance1 = TestEmbeddingService.getInstance();
|
|
38
|
+
const instance2 = TestEmbeddingService.getInstance();
|
|
39
|
+
|
|
40
|
+
expect(instance1).toBe(instance2);
|
|
41
|
+
expect(instance1).toBeInstanceOf(TestEmbeddingService);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('| createEmbedding', () => {
|
|
45
|
+
it('| should create embedding for single text', async () => {
|
|
46
|
+
const result = await service.createEmbedding({
|
|
47
|
+
text: 'Test text',
|
|
48
|
+
model: 'test-model',
|
|
49
|
+
issuer: 'issuer-123',
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
expect(result).toEqual([0.1, 0.2, 0.3]);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('| should accept fullResponse parameter', async () => {
|
|
56
|
+
const result = await service.createEmbedding({
|
|
57
|
+
text: 'Test text',
|
|
58
|
+
model: 'test-model',
|
|
59
|
+
fullResponse: true,
|
|
60
|
+
issuer: 'issuer-123',
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
expect(result).toBeDefined();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
describe('| createEmbeddings', () => {
|
|
68
|
+
it('| should create embeddings for multiple texts', async () => {
|
|
69
|
+
const result = await service.createEmbeddings({
|
|
70
|
+
texts: ['Text 1', 'Text 2'],
|
|
71
|
+
model: 'test-model',
|
|
72
|
+
issuer: 'issuer-123',
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
expect(result).toEqual([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('| should accept fullResponse parameter', async () => {
|
|
79
|
+
const result = await service.createEmbeddings({
|
|
80
|
+
texts: ['Text 1'],
|
|
81
|
+
model: 'test-model',
|
|
82
|
+
fullResponse: true,
|
|
83
|
+
issuer: 'issuer-123',
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
expect(result).toBeDefined();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
describe('| getEmbeddingInfo', () => {
|
|
91
|
+
it('| should return embedding info for model', () => {
|
|
92
|
+
const result = service.getEmbeddingInfo('test-model');
|
|
93
|
+
|
|
94
|
+
expect(result.model).toBe('test-model');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { CreateEmbeddingResponse } from 'openai/resources';
|
|
2
|
-
import { DyNTS_AI_Provider_ServiceBase } from './ai-provider.service-base';
|
|
3
|
-
import { DyFM_DAI_EmbeddingInfo } from '@futdevpro/fsm-dynamo/ai/document-ai';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Abstract base class for embedding services
|
|
7
|
-
* Defines the interface for AI providers that support embeddings
|
|
8
|
-
*/
|
|
9
|
-
export abstract class DyNTS_AI_Embedding_ServiceBase extends DyNTS_AI_Provider_ServiceBase {
|
|
10
|
-
/**
|
|
11
|
-
* Create an embedding for a single text
|
|
12
|
-
* @param text - The text to embed
|
|
13
|
-
* @param model - The embedding model to use
|
|
14
|
-
* @param issuer - The issuer making the request
|
|
15
|
-
* @returns Promise<number[]> - The embedding vector
|
|
16
|
-
*/
|
|
17
|
-
abstract createEmbedding(
|
|
18
|
-
set: {
|
|
19
|
-
text: string;
|
|
20
|
-
model: string;
|
|
21
|
-
fullResponse?: boolean;
|
|
22
|
-
issuer: string;
|
|
23
|
-
}
|
|
24
|
-
): Promise<number[] | CreateEmbeddingResponse>;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Create embeddings for multiple texts
|
|
28
|
-
* @param texts - Array of texts to embed
|
|
29
|
-
* @param model - The embedding model to use
|
|
30
|
-
* @param issuer - The issuer making the request
|
|
31
|
-
* @returns Promise<number[][]> - Array of embedding vectors
|
|
32
|
-
*/
|
|
33
|
-
abstract createEmbeddings(
|
|
34
|
-
set: {
|
|
35
|
-
texts: string[];
|
|
36
|
-
model: string;
|
|
37
|
-
fullResponse?: boolean;
|
|
38
|
-
issuer: string;
|
|
39
|
-
}
|
|
40
|
-
): Promise<number[][] | CreateEmbeddingResponse>;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Get embedding information for a model
|
|
44
|
-
* @param model - The model name
|
|
45
|
-
* @returns DyFM_DAI_EmbeddingInfo - Information about the model
|
|
46
|
-
*/
|
|
47
|
-
abstract getEmbeddingInfo(model: string): DyFM_DAI_EmbeddingInfo;
|
|
48
|
-
}
|
|
1
|
+
import { CreateEmbeddingResponse } from 'openai/resources';
|
|
2
|
+
import { DyNTS_AI_Provider_ServiceBase } from './ai-provider.service-base';
|
|
3
|
+
import { DyFM_DAI_EmbeddingInfo } from '@futdevpro/fsm-dynamo/ai/document-ai';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base class for embedding services
|
|
7
|
+
* Defines the interface for AI providers that support embeddings
|
|
8
|
+
*/
|
|
9
|
+
export abstract class DyNTS_AI_Embedding_ServiceBase extends DyNTS_AI_Provider_ServiceBase {
|
|
10
|
+
/**
|
|
11
|
+
* Create an embedding for a single text
|
|
12
|
+
* @param text - The text to embed
|
|
13
|
+
* @param model - The embedding model to use
|
|
14
|
+
* @param issuer - The issuer making the request
|
|
15
|
+
* @returns Promise<number[]> - The embedding vector
|
|
16
|
+
*/
|
|
17
|
+
abstract createEmbedding(
|
|
18
|
+
set: {
|
|
19
|
+
text: string;
|
|
20
|
+
model: string;
|
|
21
|
+
fullResponse?: boolean;
|
|
22
|
+
issuer: string;
|
|
23
|
+
}
|
|
24
|
+
): Promise<number[] | CreateEmbeddingResponse>;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Create embeddings for multiple texts
|
|
28
|
+
* @param texts - Array of texts to embed
|
|
29
|
+
* @param model - The embedding model to use
|
|
30
|
+
* @param issuer - The issuer making the request
|
|
31
|
+
* @returns Promise<number[][]> - Array of embedding vectors
|
|
32
|
+
*/
|
|
33
|
+
abstract createEmbeddings(
|
|
34
|
+
set: {
|
|
35
|
+
texts: string[];
|
|
36
|
+
model: string;
|
|
37
|
+
fullResponse?: boolean;
|
|
38
|
+
issuer: string;
|
|
39
|
+
}
|
|
40
|
+
): Promise<number[][] | CreateEmbeddingResponse>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get embedding information for a model
|
|
44
|
+
* @param model - The model name
|
|
45
|
+
* @returns DyFM_DAI_EmbeddingInfo - Information about the model
|
|
46
|
+
*/
|
|
47
|
+
abstract getEmbeddingInfo(model: string): DyFM_DAI_EmbeddingInfo;
|
|
48
|
+
}
|