@futdevpro/nts-dynamo 1.15.104 → 1.15.107
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/logs/cicd-pipeline/output.log +2798 -0
- package/.dynamo/logs/cicd-pipeline/status.json +74 -0
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/__documentations/plans/BEDROCK-HYPERPLAN.md +95 -95
- package/_specifications/BACKLOG.md +92 -92
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts +32 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts.map +1 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.js +95 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.js.map +1 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.d.ts +35 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.d.ts.map +1 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.js +82 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.js.map +1 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts +17 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts.map +1 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js +3 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts +23 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js +52 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts +34 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js +56 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts +33 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js +89 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts +16 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js +20 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts +15 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts +11 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts +30 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts +19 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts +19 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js.map +1 -0
- package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.d.ts +2 -2
- package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.d.ts.map +1 -0
- package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.js +1 -1
- package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts +48 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js +104 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts +35 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js +60 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts +60 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js +121 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/index.d.ts +14 -0
- package/build/_modules/ai/_modules/ai-mock/index.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/index.js +41 -0
- package/build/_modules/ai/_modules/ai-mock/index.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts +18 -0
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +58 -30
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.js +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.js.map +1 -1
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts +16 -0
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-llm.service-base.js +65 -0
- package/build/_modules/ai/_services/ai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/index.d.ts +4 -1
- package/build/_modules/ai/index.d.ts.map +1 -1
- package/build/_modules/ai/index.js +9 -1
- package/build/_modules/ai/index.js.map +1 -1
- package/build/_modules/server/server-status/server-status.control-service.d.ts +22 -1
- package/build/_modules/server/server-status/server-status.control-service.d.ts.map +1 -1
- package/build/_modules/server/server-status/server-status.control-service.js +22 -0
- package/build/_modules/server/server-status/server-status.control-service.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +11 -2
- package/pnpm-workspace.yaml +5 -5
- 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/global-settings.const.ts +126 -126
- 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 +669 -669
- package/src/_models/control-models/endpoint-params.control-model.ts +628 -628
- 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 +171 -171
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/global-settings.interface.ts +286 -286
- 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 +36 -36
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -0
- package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -0
- package/src/_modules/ai/_collections/ai-provider-error.util.ts +98 -0
- 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/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +107 -0
- package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +15 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -0
- package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.spec.ts +115 -115
- package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.ts +213 -213
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +142 -0
- package/src/_modules/ai/_modules/ai-mock/index.ts +44 -0
- 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-code-chunking.util.spec.ts +295 -295
- package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +518 -518
- 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-code-chunk.interface.ts +68 -68
- 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 +30 -30
- 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 +332 -332
- 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 +634 -634
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1075 -1033
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
- package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +110 -110
- 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.reconciler.spec.ts +133 -0
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -519
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
- package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +371 -371
- package/src/_modules/ai/index.ts +33 -23
- 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/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -161
- package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
- package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
- package/src/_modules/data-readers/index.ts +11 -11
- 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 +35 -35
- package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -59
- 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 +480 -480
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +198 -198
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +146 -146
- package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
- package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +106 -106
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +507 -507
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +272 -272
- package/src/_modules/local-vector-search/index.ts +16 -16
- package/src/_modules/logs/index.ts +11 -11
- package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -142
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -120
- package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
- package/src/_modules/mcp/index.ts +13 -13
- 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/scheduler/_models/scheduler-job.interface.ts +35 -35
- package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
- package/src/_modules/scheduler/index.ts +8 -8
- package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
- package/src/_modules/scheduler/scheduler.controller.ts +69 -69
- package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
- package/src/_modules/scheduler/scheduler.service.ts +176 -176
- package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
- package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -81
- package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -306
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -295
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -118
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -105
- package/src/_modules/scoped-config/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
- package/src/_modules/server/errors/errors.control-service.ts +100 -100
- package/src/_modules/server/errors/errors.controller.spec.ts +268 -268
- package/src/_modules/server/errors/errors.controller.ts +515 -515
- package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
- 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 +576 -576
- package/src/_modules/server/server-status/server-status.control-service.ts +421 -396
- package/src/_modules/server/server-status/server-status.controller.spec.ts +255 -255
- package/src/_modules/server/server-status/server-status.controller.ts +292 -292
- 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 +642 -642
- 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 +209 -209
- package/src/_services/base/archive-data.service.ts +223 -223
- package/src/_services/base/data.service.spec.ts +729 -729
- package/src/_services/base/data.service.ts +2758 -2758
- package/src/_services/base/db.service.spec.ts +160 -160
- package/src/_services/base/db.service.ts +1644 -1644
- 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 +757 -757
- package/src/_services/core/global.service.spec.ts +292 -292
- package/src/_services/core/global.service.ts +487 -487
- package/src/_services/core/memory-guard.service.spec.ts +245 -245
- package/src/_services/core/memory-guard.service.ts +481 -481
- 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/server/app.server.ts +1985 -1985
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +100 -100
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts.map +0 -1
- package/build/_modules/ai/_services/ai-embedding-mock.service.js.map +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
|
|
2
|
+
|
|
3
|
+
import { DyNTS_AI_ProviderError } from '../_models/interfaces/dynts-ai-provider-error.interface';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Provider-faithful hiba-alakok eloallitasa a FR-048 `settingsSchema` szabalysertesekhez — ugyanaz a
|
|
7
|
+
* hiba-alak, mint amit a valodi provider adna. A forras-igazsag a `settingsSchema` (SSoT); itt CSAK a
|
|
8
|
+
* hiba formazasa tortenik, szabaly-duplikatum nincs.
|
|
9
|
+
*
|
|
10
|
+
* **Pontossag (D4):** a hiba **strukturaja** (mezok + `code`/`type`) a dokumentalt provider-alak szerint
|
|
11
|
+
* keszult; a `message` SZOVEGE a valodi capture-ig kozelites. A gepileg fogyasztott resz (`reason`, `code`,
|
|
12
|
+
* `param`, `httpStatus`) a stabil — a byte-hu message a fixture-capture passzal pontosithato.
|
|
13
|
+
*/
|
|
14
|
+
export class DyNTS_AI_ProviderError_Util {
|
|
15
|
+
|
|
16
|
+
/** Az Anthropic provider-azonositoja (a hiba-alak valasztasahoz) — az enumbol, nem beegetett stringkent. */
|
|
17
|
+
private static readonly anthropicProviderId: string = DyFM_AI_Provider.Anthropic;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Nem tamogatott parameter → provider-hu HTTP 400 hiba-leiro.
|
|
21
|
+
* @param set - provider-azonosito + modell-azonosito + a kifogasolt parameter neve
|
|
22
|
+
*/
|
|
23
|
+
static buildUnsupportedParamError(
|
|
24
|
+
set: {
|
|
25
|
+
provider: string,
|
|
26
|
+
model: string,
|
|
27
|
+
param: string,
|
|
28
|
+
}
|
|
29
|
+
): DyNTS_AI_ProviderError {
|
|
30
|
+
if (set.provider === this.anthropicProviderId) {
|
|
31
|
+
return {
|
|
32
|
+
httpStatus: 400,
|
|
33
|
+
providerErrorBody: {
|
|
34
|
+
type: 'error',
|
|
35
|
+
error: {
|
|
36
|
+
type: 'invalid_request_error',
|
|
37
|
+
message: `${set.param}: Extra inputs are not permitted for model '${set.model}'.`,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
reason: `invalid_request_error:${set.param}`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
httpStatus: 400,
|
|
46
|
+
providerErrorBody: {
|
|
47
|
+
error: {
|
|
48
|
+
message: `Unsupported parameter: '${set.param}' is not supported with model '${set.model}'.`,
|
|
49
|
+
type: 'invalid_request_error',
|
|
50
|
+
param: set.param,
|
|
51
|
+
code: 'unsupported_parameter',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
reason: `unsupported_parameter:${set.param}`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Tamogatott parameter, de ERVENYTELEN ertek (tartomanyon kivul, vagy nem az engedett keszletbol) →
|
|
60
|
+
* provider-hu HTTP 400. Ez a `settingsSchema.constraints` (min/max/allowed) megsertese.
|
|
61
|
+
* @param set - provider + modell + parameter-nev + a rovid indoklas (pl. 'out of range 0..2')
|
|
62
|
+
*/
|
|
63
|
+
static buildInvalidValueError(
|
|
64
|
+
set: {
|
|
65
|
+
provider: string,
|
|
66
|
+
model: string,
|
|
67
|
+
param: string,
|
|
68
|
+
detail: string,
|
|
69
|
+
}
|
|
70
|
+
): DyNTS_AI_ProviderError {
|
|
71
|
+
if (set.provider === this.anthropicProviderId) {
|
|
72
|
+
return {
|
|
73
|
+
httpStatus: 400,
|
|
74
|
+
providerErrorBody: {
|
|
75
|
+
type: 'error',
|
|
76
|
+
error: {
|
|
77
|
+
type: 'invalid_request_error',
|
|
78
|
+
message: `${set.param}: ${set.detail} (model '${set.model}').`,
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
reason: `invalid_request_error:${set.param}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
httpStatus: 400,
|
|
87
|
+
providerErrorBody: {
|
|
88
|
+
error: {
|
|
89
|
+
message: `Invalid value for '${set.param}': ${set.detail} (model '${set.model}').`,
|
|
90
|
+
type: 'invalid_request_error',
|
|
91
|
+
param: set.param,
|
|
92
|
+
code: 'invalid_value',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
reason: `invalid_value:${set.param}`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
import { DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
|
|
2
|
-
import { DyFM_AI_Message } from '@futdevpro/fsm-dynamo/ai';
|
|
3
|
-
import { DyFM_AI_CallSettings } from '@futdevpro/fsm-dynamo/ai';
|
|
4
|
-
|
|
5
|
-
export interface DyFM_AI_Base_Input<
|
|
6
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
7
|
-
> {
|
|
8
|
-
/* message: string; */
|
|
9
|
-
issuer: string;
|
|
10
|
-
settings?: T_AISettings;
|
|
11
|
-
debugLog?: boolean;
|
|
12
|
-
replaceThisInLog?: string;
|
|
13
|
-
getFullResponse?: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface DyFM_AI_Message_Input<
|
|
17
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
18
|
-
> extends DyFM_AI_Base_Input<T_AISettings> {
|
|
19
|
-
message: string;
|
|
20
|
-
conversation?: DyFM_AI_Message[];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface DyFM_AI_ListSelect_Input<
|
|
24
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings,
|
|
25
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
26
|
-
selectFrom: string[];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface DyFM_AI_GenericSelect_Input<
|
|
30
|
-
T,
|
|
31
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
32
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
33
|
-
selectFrom: T[];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface DyFM_AI_MultiSelect_Input<
|
|
37
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
38
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
39
|
-
options: string[];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface DyFM_AI_GenericMultiSelect_Input<
|
|
43
|
-
T,
|
|
44
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
45
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
46
|
-
options: T[];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface DyFM_AI_JSONKeysDescription_Input<
|
|
50
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
51
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
52
|
-
keysDescription: string;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export interface DyFM_AI_JSONExactKeys_Input<
|
|
56
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
57
|
-
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
58
|
-
keys: string[];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* export interface DyFM_AI_SimpleMessage_Input extends DyFM_AI_Base_Input {
|
|
62
|
-
message: string;
|
|
63
|
-
} */
|
|
64
|
-
|
|
65
|
-
export interface DyFM_AI_ConversationBase_Input<
|
|
66
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
67
|
-
> extends DyFM_AI_Base_Input<T_AISettings> {
|
|
68
|
-
message?: string;
|
|
69
|
-
conversation: DyFM_AI_Message[];
|
|
70
|
-
/* replaceThisInLog?: string; */
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* export interface DyFM_AI_ConversationMessage_Input extends DyFM_AI_ConversationBase_Input {
|
|
74
|
-
message: string;
|
|
75
|
-
} */
|
|
76
|
-
|
|
77
|
-
export interface DyFM_AI_ConversationSelect_Input<
|
|
78
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
79
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
80
|
-
selectFrom: string[];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface DyFM_AI_ConversationGenericSelect_Input<
|
|
84
|
-
T,
|
|
85
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
86
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
87
|
-
selectFrom: T[];
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface DyFM_AI_ConversationMultiSelect_Input<
|
|
91
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
92
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
93
|
-
options: string[];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export interface DyFM_AI_ConversationGenericMultiSelect_Input<
|
|
97
|
-
T,
|
|
98
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
99
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
100
|
-
options: T[];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export interface DyFM_AI_ConversationJSONKeysDescription_Input<
|
|
104
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
105
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
106
|
-
keysDescription: string;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export interface DyFM_AI_ConversationJSONExactKeys_Input<
|
|
110
|
-
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
111
|
-
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
112
|
-
keys: string[];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/* export interface DyFM_AI_ConversationGetAnswer_Input extends DyFM_AI_ConversationBase_Input {
|
|
116
|
-
newMessage?: string;
|
|
117
|
-
} */
|
|
1
|
+
import { DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai';
|
|
2
|
+
import { DyFM_AI_Message } from '@futdevpro/fsm-dynamo/ai';
|
|
3
|
+
import { DyFM_AI_CallSettings } from '@futdevpro/fsm-dynamo/ai';
|
|
4
|
+
|
|
5
|
+
export interface DyFM_AI_Base_Input<
|
|
6
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
7
|
+
> {
|
|
8
|
+
/* message: string; */
|
|
9
|
+
issuer: string;
|
|
10
|
+
settings?: T_AISettings;
|
|
11
|
+
debugLog?: boolean;
|
|
12
|
+
replaceThisInLog?: string;
|
|
13
|
+
getFullResponse?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface DyFM_AI_Message_Input<
|
|
17
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
18
|
+
> extends DyFM_AI_Base_Input<T_AISettings> {
|
|
19
|
+
message: string;
|
|
20
|
+
conversation?: DyFM_AI_Message[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface DyFM_AI_ListSelect_Input<
|
|
24
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings,
|
|
25
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
26
|
+
selectFrom: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface DyFM_AI_GenericSelect_Input<
|
|
30
|
+
T,
|
|
31
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
32
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
33
|
+
selectFrom: T[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface DyFM_AI_MultiSelect_Input<
|
|
37
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
38
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
39
|
+
options: string[];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface DyFM_AI_GenericMultiSelect_Input<
|
|
43
|
+
T,
|
|
44
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
45
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
46
|
+
options: T[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface DyFM_AI_JSONKeysDescription_Input<
|
|
50
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
51
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
52
|
+
keysDescription: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface DyFM_AI_JSONExactKeys_Input<
|
|
56
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
57
|
+
> extends DyFM_AI_Message_Input<T_AISettings> {
|
|
58
|
+
keys: string[];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* export interface DyFM_AI_SimpleMessage_Input extends DyFM_AI_Base_Input {
|
|
62
|
+
message: string;
|
|
63
|
+
} */
|
|
64
|
+
|
|
65
|
+
export interface DyFM_AI_ConversationBase_Input<
|
|
66
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
67
|
+
> extends DyFM_AI_Base_Input<T_AISettings> {
|
|
68
|
+
message?: string;
|
|
69
|
+
conversation: DyFM_AI_Message[];
|
|
70
|
+
/* replaceThisInLog?: string; */
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* export interface DyFM_AI_ConversationMessage_Input extends DyFM_AI_ConversationBase_Input {
|
|
74
|
+
message: string;
|
|
75
|
+
} */
|
|
76
|
+
|
|
77
|
+
export interface DyFM_AI_ConversationSelect_Input<
|
|
78
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
79
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
80
|
+
selectFrom: string[];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface DyFM_AI_ConversationGenericSelect_Input<
|
|
84
|
+
T,
|
|
85
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
86
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
87
|
+
selectFrom: T[];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface DyFM_AI_ConversationMultiSelect_Input<
|
|
91
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
92
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
93
|
+
options: string[];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface DyFM_AI_ConversationGenericMultiSelect_Input<
|
|
97
|
+
T,
|
|
98
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
99
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
100
|
+
options: T[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface DyFM_AI_ConversationJSONKeysDescription_Input<
|
|
104
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
105
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
106
|
+
keysDescription: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface DyFM_AI_ConversationJSONExactKeys_Input<
|
|
110
|
+
T_AISettings extends DyFM_AI_CallSettings = DyFM_AI_CallSettings
|
|
111
|
+
> extends DyFM_AI_ConversationBase_Input<T_AISettings> {
|
|
112
|
+
keys: string[];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* export interface DyFM_AI_ConversationGetAnswer_Input extends DyFM_AI_ConversationBase_Input {
|
|
116
|
+
newMessage?: string;
|
|
117
|
+
} */
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Teszt generalas eredmenye
|
|
3
|
-
*
|
|
4
|
-
* A provider-specifikus testGeneration() metodus ezt adja vissza,
|
|
5
|
-
* tartalmazva a sikesseg flag-et, a valasz szoveget, a hasznalt modellt es a keses-idejet.
|
|
6
|
-
*/
|
|
7
|
-
export interface DyNTS_AI_TestGeneration_Result {
|
|
8
|
-
/** sikeres volt-e a teszt generalas */
|
|
9
|
-
success: boolean;
|
|
10
|
-
/** a provider valasza (sikertelen eseten undefined) */
|
|
11
|
-
response?: string;
|
|
12
|
-
/** a hasznalt modell azonosito */
|
|
13
|
-
model: string;
|
|
14
|
-
/** a keres-valasz ido milliszekundumban */
|
|
15
|
-
latencyMs: number;
|
|
16
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Teszt generalas eredmenye
|
|
3
|
+
*
|
|
4
|
+
* A provider-specifikus testGeneration() metodus ezt adja vissza,
|
|
5
|
+
* tartalmazva a sikesseg flag-et, a valasz szoveget, a hasznalt modellt es a keses-idejet.
|
|
6
|
+
*/
|
|
7
|
+
export interface DyNTS_AI_TestGeneration_Result {
|
|
8
|
+
/** sikeres volt-e a teszt generalas */
|
|
9
|
+
success: boolean;
|
|
10
|
+
/** a provider valasza (sikertelen eseten undefined) */
|
|
11
|
+
response?: string;
|
|
12
|
+
/** a hasznalt modell azonosito */
|
|
13
|
+
model: string;
|
|
14
|
+
/** a keres-valasz ido milliszekundumban */
|
|
15
|
+
latencyMs: number;
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-faithful hiba-leiro — azt irja le, MILYEN hibat adna a valodi provider egy szabalytalan
|
|
3
|
+
* hivasra (FR-048). A `providerErrorBody` a provider NATIV hiba-JSON-ja (OpenAI:
|
|
4
|
+
* `{error:{message,type,param,code}}`, Anthropic: `{type:'error',error:{type,message}}`).
|
|
5
|
+
*
|
|
6
|
+
* Egy helyen definialva, hogy a Layer A validator (`DyNTS_AI_ModelConfig_Validator`) es a Layer B
|
|
7
|
+
* mock-fixture-ok UGYANAZT az alakot hasznaljak — nincs parhuzamos hiba-shape (SSoT).
|
|
8
|
+
*/
|
|
9
|
+
export interface DyNTS_AI_ProviderError {
|
|
10
|
+
/** A reprodukalando HTTP-statusz (pl. 400). */
|
|
11
|
+
httpStatus: number;
|
|
12
|
+
/** A provider nativ hiba-body-ja. */
|
|
13
|
+
providerErrorBody: unknown;
|
|
14
|
+
/** Rovid, gepi ok-jeloles (pl. 'unsupported_parameter:temperature'). */
|
|
15
|
+
reason: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
|
|
2
|
+
|
|
3
|
+
import { DyNTS_AIMock_Modality } from '../_enums/aim-modality.enum';
|
|
4
|
+
import { DyNTS_AIMock_Fixture } from '../_models/interfaces/aim-fixture.interface';
|
|
5
|
+
import { DyNTS_AIMock_ServiceCollection } from '../_models/interfaces/aim-service-collection.interface';
|
|
6
|
+
import { DyNTS_AIMock_FixtureMatch_Util } from './aim-fixture-match.util';
|
|
7
|
+
import { getDefaultAiMockServiceCollection } from './aim-default-collection.util';
|
|
8
|
+
|
|
9
|
+
describe('| getDefaultAiMockServiceCollection (MP-7 SP-7.1)', () => {
|
|
10
|
+
|
|
11
|
+
function fixture(modality: DyNTS_AIMock_Modality, input: string): DyNTS_AIMock_Fixture {
|
|
12
|
+
return {
|
|
13
|
+
provider: 'open-ai',
|
|
14
|
+
model: 'gpt-5.4-mini',
|
|
15
|
+
modality: modality,
|
|
16
|
+
input: input,
|
|
17
|
+
inputHash: DyNTS_AIMock_FixtureMatch_Util.buildInputHash(input),
|
|
18
|
+
output: 'out',
|
|
19
|
+
capturedAt: '2026-07-21T00:00:00.000Z',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
it('| default: mindharom schema-s provider registry-je be van kotve', () => {
|
|
24
|
+
const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection();
|
|
25
|
+
|
|
26
|
+
expect(collection.registry.length).toBeGreaterThan(0);
|
|
27
|
+
expect(collection.registry.some((model) => model.provider === DyFM_AI_Provider.OpenAI)).toBe(true);
|
|
28
|
+
expect(collection.registry.some((model) => model.provider === DyFM_AI_Provider.Anthropic)).toBe(true);
|
|
29
|
+
expect(collection.registry.some((model) => model.provider === DyFM_AI_Provider.Google)).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('| providers szukites: csak a kert provider modelljei', () => {
|
|
33
|
+
const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
|
|
34
|
+
providers: [DyFM_AI_Provider.OpenAI],
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
expect(collection.registry.length).toBeGreaterThan(0);
|
|
38
|
+
expect(collection.registry.every((model) => model.provider === DyFM_AI_Provider.OpenAI)).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('| service + store ossze van drotozva (a store futas kozben bovitheto)', () => {
|
|
42
|
+
const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection();
|
|
43
|
+
|
|
44
|
+
expect(collection.store.size).toBe(0);
|
|
45
|
+
|
|
46
|
+
collection.store.register([fixture(DyNTS_AIMock_Modality.text, 'ping')]);
|
|
47
|
+
|
|
48
|
+
expect(collection.store.size).toBe(1);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('| modalities szukites: csak az adott modalitasu fixture-ok kerulnek a tarba', () => {
|
|
52
|
+
const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
|
|
53
|
+
modalities: [DyNTS_AIMock_Modality.embedding],
|
|
54
|
+
fixtures: [
|
|
55
|
+
fixture(DyNTS_AIMock_Modality.text, 'a'),
|
|
56
|
+
fixture(DyNTS_AIMock_Modality.embedding, 'b'),
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
expect(collection.store.size).toBe(1);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('| a bekototett fixture azonnal replay-elheto a service-en at', async () => {
|
|
64
|
+
const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
|
|
65
|
+
fixtures: [fixture(DyNTS_AIMock_Modality.text, 'ping')],
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
await expectAsync(
|
|
69
|
+
collection.service.chatCompletion({ provider: 'open-ai', model: 'gpt-5.4-mini', input: 'ping' })
|
|
70
|
+
).toBeResolvedTo('out');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { DyFM_AI_ModelInfo, DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
|
|
2
|
+
import { DyFM_OAI_Models } from '@futdevpro/fsm-dynamo/ai/open-ai';
|
|
3
|
+
import { DyFM_AAI_Models } from '@futdevpro/fsm-dynamo/ai/anthropic';
|
|
4
|
+
import { DyFM_GAI_Models } from '@futdevpro/fsm-dynamo/ai/google';
|
|
5
|
+
|
|
6
|
+
import { DyNTS_AIMock_Modality } from '../_enums/aim-modality.enum';
|
|
7
|
+
import { DyNTS_AIMock_Fixture } from '../_models/interfaces/aim-fixture.interface';
|
|
8
|
+
import { DyNTS_AIMock_ServiceCollection } from '../_models/interfaces/aim-service-collection.interface';
|
|
9
|
+
import { DyNTS_AIMock_FixtureStore_Service } from '../_services/aim-fixture-store.service';
|
|
10
|
+
import { DyNTS_AIMock_Service } from '../_services/aim-mock.service';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Provider → modell-registry hozzarendeles.
|
|
14
|
+
*
|
|
15
|
+
* CSAK azok a providerek szerepelnek, amelyeknek van FR-048 `settingsSchema`-juk — a `local-ai` es az
|
|
16
|
+
* `fdp-ai` szandekosan schema-mentes (runtime/gateway-fuggo), igy a registry-be emelesuk a validaciohoz
|
|
17
|
+
* semmit nem adna hozza. L. a fsm registry-fejleceket + `FR-048-LAYER-A.md`.
|
|
18
|
+
*/
|
|
19
|
+
const REGISTRY_BY_PROVIDER: Record<string, DyFM_AI_ModelInfo[]> = {
|
|
20
|
+
[DyFM_AI_Provider.OpenAI]: DyFM_OAI_Models,
|
|
21
|
+
[DyFM_AI_Provider.Anthropic]: DyFM_AAI_Models,
|
|
22
|
+
[DyFM_AI_Provider.Google]: DyFM_GAI_Models,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/** Provider-default: minden schema-val rendelkezo provider. */
|
|
26
|
+
const DEFAULT_PROVIDERS: DyFM_AI_Provider[] = [
|
|
27
|
+
DyFM_AI_Provider.OpenAI,
|
|
28
|
+
DyFM_AI_Provider.Anthropic,
|
|
29
|
+
DyFM_AI_Provider.Google,
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* **Default-bundle factory** (MP-7 SP-7.1) — egy hivassal osszeallit egy hasznalatra kesz AI-mock keszletet:
|
|
34
|
+
* fixture-tar + mock-provider + a config-validaciohoz bekototott modell-registry.
|
|
35
|
+
*
|
|
36
|
+
* A `fdp-templates` `getApiDefaultSettings`-mintajat koveti: a consumer teszt-modul egyetlen sorral kap egy
|
|
37
|
+
* mukodo mockot, es DI-vel a valodi provider helyere teheti.
|
|
38
|
+
*
|
|
39
|
+
* @param set - opcionalis szukites: mely providerek registry-je legyen bekotve, mely modalitasok
|
|
40
|
+
* fixture-oi keruljenek be, es a kezdo fixture-keszlet.
|
|
41
|
+
*/
|
|
42
|
+
export function getDefaultAiMockServiceCollection(
|
|
43
|
+
set?: {
|
|
44
|
+
/** Mely providerek registry-je legyen bekotve a config-validaciohoz (default: mind a harom schema-s). */
|
|
45
|
+
providers?: DyFM_AI_Provider[],
|
|
46
|
+
/** Ha meg van adva, CSAK az itt felsorolt modalitasu fixture-ok kerulnek a tarba. */
|
|
47
|
+
modalities?: DyNTS_AIMock_Modality[],
|
|
48
|
+
/** A kezdo (beegetett) fixture-keszlet. */
|
|
49
|
+
fixtures?: DyNTS_AIMock_Fixture[],
|
|
50
|
+
}
|
|
51
|
+
): DyNTS_AIMock_ServiceCollection {
|
|
52
|
+
const providers: DyFM_AI_Provider[] = set?.providers?.length ? set.providers : DEFAULT_PROVIDERS;
|
|
53
|
+
|
|
54
|
+
const registry: DyFM_AI_ModelInfo[] = providers.reduce(
|
|
55
|
+
(all: DyFM_AI_ModelInfo[], provider: DyFM_AI_Provider) => all.concat(REGISTRY_BY_PROVIDER[provider] ?? []),
|
|
56
|
+
[]
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const allFixtures: DyNTS_AIMock_Fixture[] = set?.fixtures ?? [];
|
|
60
|
+
const fixtures: DyNTS_AIMock_Fixture[] = set?.modalities?.length ?
|
|
61
|
+
allFixtures.filter((fixture: DyNTS_AIMock_Fixture) => set.modalities.includes(fixture.modality)) :
|
|
62
|
+
allFixtures;
|
|
63
|
+
|
|
64
|
+
const store: DyNTS_AIMock_FixtureStore_Service = new DyNTS_AIMock_FixtureStore_Service(fixtures);
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
store: store,
|
|
68
|
+
service: new DyNTS_AIMock_Service(store, registry),
|
|
69
|
+
registry: registry,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { DyNTS_AIMock_Modality } from '../_enums/aim-modality.enum';
|
|
2
|
+
import { DyNTS_AIMock_Request } from '../_models/interfaces/aim-request.interface';
|
|
3
|
+
import { DyNTS_AIMock_FixtureMatch_Util } from './aim-fixture-match.util';
|
|
4
|
+
|
|
5
|
+
describe('DyNTS_AIMock_FixtureMatch_Util', () => {
|
|
6
|
+
|
|
7
|
+
function req(overrides: Partial<DyNTS_AIMock_Request>): DyNTS_AIMock_Request {
|
|
8
|
+
return {
|
|
9
|
+
provider: 'open-ai',
|
|
10
|
+
model: 'gpt-4o-mini',
|
|
11
|
+
modality: DyNTS_AIMock_Modality.text,
|
|
12
|
+
config: { temperature: 0 },
|
|
13
|
+
input: 'ping',
|
|
14
|
+
...overrides,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
it('determinisztikus — azonos request kétszer → azonos kulcs', () => {
|
|
19
|
+
expect(DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({}))).toBe(
|
|
20
|
+
DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({}))
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('config-kulcs-sorrend független', () => {
|
|
25
|
+
const a: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ config: { temperature: 0, topP: 1 } }));
|
|
26
|
+
const b: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ config: { topP: 1, temperature: 0 } }));
|
|
27
|
+
|
|
28
|
+
expect(a).toBe(b);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('input-whitespace független', () => {
|
|
32
|
+
const a: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ input: 'hello world' }));
|
|
33
|
+
const b: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ input: ' hello world ' }));
|
|
34
|
+
|
|
35
|
+
expect(a).toBe(b);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('eltérő input → eltérő kulcs', () => {
|
|
39
|
+
const a: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ input: 'ping' }));
|
|
40
|
+
const b: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ input: 'pong' }));
|
|
41
|
+
|
|
42
|
+
expect(a).not.toBe(b);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('eltérő modalitás → eltérő kulcs (azonos input mellett is)', () => {
|
|
46
|
+
const a: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ modality: DyNTS_AIMock_Modality.text }));
|
|
47
|
+
const b: string = DyNTS_AIMock_FixtureMatch_Util.buildMatchKey(req({ modality: DyNTS_AIMock_Modality.embedding }));
|
|
48
|
+
|
|
49
|
+
expect(a).not.toBe(b);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('buildInputHash stabil ugyanarra a szövegre', () => {
|
|
53
|
+
expect(DyNTS_AIMock_FixtureMatch_Util.buildInputHash('alpha')).toBe(
|
|
54
|
+
DyNTS_AIMock_FixtureMatch_Util.buildInputHash('alpha')
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
|
|
3
|
+
import { DyNTS_AIMock_Request } from '../_models/interfaces/aim-request.interface';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A fixture-match kulcs DETERMINISZTIKUS képzése. Cél: azonos „jelentésű" request → azonos kulcs,
|
|
7
|
+
* függetlenül a config-kulcsok sorrendjétől és az input whitespace-variánsaitól (különben false
|
|
8
|
+
* reject-on-unknown, l. HYPERPLAN D3 + MP-3 SP-3.1). NEM végez generálást — tiszta, hálózat-mentes.
|
|
9
|
+
*/
|
|
10
|
+
export class DyNTS_AIMock_FixtureMatch_Util {
|
|
11
|
+
/**
|
|
12
|
+
* A teljes match-kulcs: `provider|model|modality|<config-hash>|<input-hash>`.
|
|
13
|
+
* @param request - a mock-hívás bemenete
|
|
14
|
+
*/
|
|
15
|
+
static buildMatchKey(request: DyNTS_AIMock_Request): string {
|
|
16
|
+
const configHash: string = this.hash(this.canonicalizeConfig(request.config ?? {}));
|
|
17
|
+
const inputHash: string = this.buildInputHash(request.input);
|
|
18
|
+
|
|
19
|
+
return `${request.provider}|${request.model}|${request.modality}|${configHash}|${inputHash}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Csak az input-hash (a `DyNTS_AIMock_Fixture.inputHash`-hez): a kanonizált input SHA-256-ja.
|
|
24
|
+
* @param input - a modalitás-függő bemenet
|
|
25
|
+
*/
|
|
26
|
+
static buildInputHash(input: unknown): string {
|
|
27
|
+
return this.hash(this.canonicalizeInput(input));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Kulcs-rendezett, stabil szöveg egy config-objektumból (a config-kulcsok sorrend-függetlenségéhez).
|
|
32
|
+
* Megjegyzés: a nested-objektum mély-kanonizációja jövőbeli finomítás (a shallow key-sort a config-flat
|
|
33
|
+
* paramétereket — temperature/dimensions/size — fedi).
|
|
34
|
+
* @param config - a kanonizálandó config
|
|
35
|
+
*/
|
|
36
|
+
private static canonicalizeConfig(config: Record<string, unknown>): string {
|
|
37
|
+
const sortedKeys: string[] = Object.keys(config).sort();
|
|
38
|
+
const parts: string[] = sortedKeys.map((key: string) => `${key}:${JSON.stringify(config[key])}`);
|
|
39
|
+
|
|
40
|
+
return parts.join('|');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Input-kanonizáció: string → trim + belső whitespace-összevonás; egyéb (pl. embedding-szöveg-tömb) →
|
|
45
|
+
* stabil JSON (a sorrend jelentős, pl. batch-embedding).
|
|
46
|
+
* @param input - a bemenet
|
|
47
|
+
*/
|
|
48
|
+
private static canonicalizeInput(input: unknown): string {
|
|
49
|
+
if (typeof input === 'string') {
|
|
50
|
+
return input.trim().replace(/\s+/g, ' ');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return JSON.stringify(input);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** SHA-256 hex az adott szövegből. */
|
|
57
|
+
private static hash(value: string): string {
|
|
58
|
+
return crypto.createHash('sha256').update(value).digest('hex');
|
|
59
|
+
}
|
|
60
|
+
}
|