@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
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { DyNTS_StaticClient_Settings } from './static-client-settings.interface';
|
|
2
|
-
|
|
3
|
-
describe('| DyNTS_StaticClient_Settings', () => {
|
|
4
|
-
it('| should allow minimal settings with only root', () => {
|
|
5
|
-
const s: DyNTS_StaticClient_Settings = { root: '/dist' };
|
|
6
|
-
expect(s.root).toBe('/dist');
|
|
7
|
-
expect(s.fallbackPath).toBeUndefined();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('| should allow optional fallbackPath', () => {
|
|
11
|
-
const s: DyNTS_StaticClient_Settings = {
|
|
12
|
-
root: '/dist',
|
|
13
|
-
fallbackPath: 'index.html',
|
|
14
|
-
};
|
|
15
|
-
expect(s.fallbackPath).toBe('index.html');
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('| should allow SPA cache options', () => {
|
|
19
|
-
const s: DyNTS_StaticClient_Settings = {
|
|
20
|
-
root: '/dist',
|
|
21
|
-
assetCacheMaxAge: 31536000,
|
|
22
|
-
assetCacheImmutable: true,
|
|
23
|
-
fallbackCacheMaxAge: 0,
|
|
24
|
-
};
|
|
25
|
-
expect(s.assetCacheMaxAge).toBe(31536000);
|
|
26
|
-
expect(s.assetCacheImmutable).toBe(true);
|
|
27
|
-
expect(s.fallbackCacheMaxAge).toBe(0);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
1
|
+
import { DyNTS_StaticClient_Settings } from './static-client-settings.interface';
|
|
2
|
+
|
|
3
|
+
describe('| DyNTS_StaticClient_Settings', () => {
|
|
4
|
+
it('| should allow minimal settings with only root', () => {
|
|
5
|
+
const s: DyNTS_StaticClient_Settings = { root: '/dist' };
|
|
6
|
+
expect(s.root).toBe('/dist');
|
|
7
|
+
expect(s.fallbackPath).toBeUndefined();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('| should allow optional fallbackPath', () => {
|
|
11
|
+
const s: DyNTS_StaticClient_Settings = {
|
|
12
|
+
root: '/dist',
|
|
13
|
+
fallbackPath: 'index.html',
|
|
14
|
+
};
|
|
15
|
+
expect(s.fallbackPath).toBe('index.html');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('| should allow SPA cache options', () => {
|
|
19
|
+
const s: DyNTS_StaticClient_Settings = {
|
|
20
|
+
root: '/dist',
|
|
21
|
+
assetCacheMaxAge: 31536000,
|
|
22
|
+
assetCacheImmutable: true,
|
|
23
|
+
fallbackCacheMaxAge: 0,
|
|
24
|
+
};
|
|
25
|
+
expect(s.assetCacheMaxAge).toBe(31536000);
|
|
26
|
+
expect(s.assetCacheImmutable).toBe(true);
|
|
27
|
+
expect(s.fallbackCacheMaxAge).toBe(0);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Beállítások a client static fájlok kiszolgálásához (pl. SPA) a '/' path alatt.
|
|
3
|
-
* Ha megadva, a getStaticClientSettings() által visszaadott értéket a base app
|
|
4
|
-
* a mountStaticClient() során használja (API route-ok után).
|
|
5
|
-
* A cache mezők SPA (pl. Angular) optimalizáláshoz opcionálisak; ha nincs kitöltve,
|
|
6
|
-
* viselkedés változatlan (alkalmas nem-SPA kiszolgálásra is).
|
|
7
|
-
*/
|
|
8
|
-
export interface DyNTS_StaticClient_Settings {
|
|
9
|
-
/** A static fájlok könyvtárának path-ja (abszolút vagy process.cwd()-hez képest). */
|
|
10
|
-
root: string;
|
|
11
|
-
/** SPA fallback: ha a kérés nem egy fájlra mutat, ezt a fájlt szolgáljuk ki (pl. 'index.html'). */
|
|
12
|
-
fallbackPath?: string;
|
|
13
|
-
/**
|
|
14
|
-
* Static asset-ek (pl. JS, CSS) Cache-Control max-age másodpercben.
|
|
15
|
-
* SPA (Angular) hashed fájloknál pl. 1 év (31536000).
|
|
16
|
-
*/
|
|
17
|
-
assetCacheMaxAge?: number;
|
|
18
|
-
/**
|
|
19
|
-
* Ha true és assetCacheMaxAge is megadva, Cache-Control-hoz hozzáadódik az immutable direktíva
|
|
20
|
-
* (Angular hashed fájlokra ideális).
|
|
21
|
-
*/
|
|
22
|
-
assetCacheImmutable?: boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Fallback (pl. index.html) Cache-Control max-age másodpercben.
|
|
25
|
-
* SPA esetén ajánlott 0, hogy a böngésző ne cache-elje az index.html-t (deploy után friss).
|
|
26
|
-
*/
|
|
27
|
-
fallbackCacheMaxAge?: number;
|
|
28
|
-
/**
|
|
29
|
-
* API-namespace prefixek, amikre a SPA-fallback NEM vonatkozik (BFR-DYNAMOBUILDER-001):
|
|
30
|
-
* egy ismeretlen `GET /api/...` így 404 JSON-t kap a megtévesztő `200 + index.html` helyett
|
|
31
|
-
* (a SPA-fallback catch-all eddig az API-namespace-t is fedte). Default:
|
|
32
|
-
* `['/api', '/auth-api']` — felülírható/üríthető, ha az app más namespace-t használ,
|
|
33
|
-
* vagy szándékosan SPA-route-ol API-szerű path alatt.
|
|
34
|
-
*/
|
|
35
|
-
fallbackExcludePrefixes?: string[];
|
|
36
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Beállítások a client static fájlok kiszolgálásához (pl. SPA) a '/' path alatt.
|
|
3
|
+
* Ha megadva, a getStaticClientSettings() által visszaadott értéket a base app
|
|
4
|
+
* a mountStaticClient() során használja (API route-ok után).
|
|
5
|
+
* A cache mezők SPA (pl. Angular) optimalizáláshoz opcionálisak; ha nincs kitöltve,
|
|
6
|
+
* viselkedés változatlan (alkalmas nem-SPA kiszolgálásra is).
|
|
7
|
+
*/
|
|
8
|
+
export interface DyNTS_StaticClient_Settings {
|
|
9
|
+
/** A static fájlok könyvtárának path-ja (abszolút vagy process.cwd()-hez képest). */
|
|
10
|
+
root: string;
|
|
11
|
+
/** SPA fallback: ha a kérés nem egy fájlra mutat, ezt a fájlt szolgáljuk ki (pl. 'index.html'). */
|
|
12
|
+
fallbackPath?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Static asset-ek (pl. JS, CSS) Cache-Control max-age másodpercben.
|
|
15
|
+
* SPA (Angular) hashed fájloknál pl. 1 év (31536000).
|
|
16
|
+
*/
|
|
17
|
+
assetCacheMaxAge?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Ha true és assetCacheMaxAge is megadva, Cache-Control-hoz hozzáadódik az immutable direktíva
|
|
20
|
+
* (Angular hashed fájlokra ideális).
|
|
21
|
+
*/
|
|
22
|
+
assetCacheImmutable?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Fallback (pl. index.html) Cache-Control max-age másodpercben.
|
|
25
|
+
* SPA esetén ajánlott 0, hogy a böngésző ne cache-elje az index.html-t (deploy után friss).
|
|
26
|
+
*/
|
|
27
|
+
fallbackCacheMaxAge?: number;
|
|
28
|
+
/**
|
|
29
|
+
* API-namespace prefixek, amikre a SPA-fallback NEM vonatkozik (BFR-DYNAMOBUILDER-001):
|
|
30
|
+
* egy ismeretlen `GET /api/...` így 404 JSON-t kap a megtévesztő `200 + index.html` helyett
|
|
31
|
+
* (a SPA-fallback catch-all eddig az API-namespace-t is fedte). Default:
|
|
32
|
+
* `['/api', '/auth-api']` — felülírható/üríthető, ha az app más namespace-t használ,
|
|
33
|
+
* vagy szándékosan SPA-route-ol API-szerű path alatt.
|
|
34
|
+
*/
|
|
35
|
+
fallbackExcludePrefixes?: string[];
|
|
36
|
+
}
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @param update this uses the basic Mongoose updateOne
|
|
4
|
-
* @example
|
|
5
|
-
* // increase a specific value (here by 15):
|
|
6
|
-
* { $inc: { popularity: 15 } }
|
|
7
|
-
* //
|
|
8
|
-
* @example
|
|
9
|
-
* // or add element to a list:
|
|
10
|
-
* { $push: { reactions: this.newReaction }
|
|
11
|
-
* // or add multiple elements to a list
|
|
12
|
-
* { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
|
|
13
|
-
* //
|
|
14
|
-
* @example
|
|
15
|
-
* // or all at once
|
|
16
|
-
* {
|
|
17
|
-
* $inc: { popularity: this.newVote.amount },
|
|
18
|
-
* emailVerified: true,
|
|
19
|
-
* $push: { reactions: this.newReaction }
|
|
20
|
-
* }
|
|
21
|
-
* // further tools (syntax matches with $inc):
|
|
22
|
-
* $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
|
|
23
|
-
* $min: // Only updates the field if the specified value is less than the existing field value.
|
|
24
|
-
* $max: // Only updates the field if the specified value is greater than the existing field value.
|
|
25
|
-
* $mul: // Multiplies the value of the field by the specified amount.
|
|
26
|
-
* $rename: // Renames a field.
|
|
27
|
-
* $unset: // Removes the specified field from a document. (set: "" to value)
|
|
28
|
-
* //
|
|
29
|
-
*/
|
|
30
|
-
export type DyNTS_DBUpdate<T> = {
|
|
31
|
-
/**
|
|
32
|
-
* Sets the value of a field to current date, either as a Date or a Timestamp.
|
|
33
|
-
*/
|
|
34
|
-
/* $currentDate?: { [K in keyof T]?: boolean }; */
|
|
35
|
-
/**
|
|
36
|
-
* Increments the value of the field by the specified amount.
|
|
37
|
-
*/
|
|
38
|
-
$inc?: { [K in keyof T]?: number };
|
|
39
|
-
/**
|
|
40
|
-
* Only updates the field if the specified value is less than the existing field value.
|
|
41
|
-
*/
|
|
42
|
-
$min?: { [K in keyof T]?: number };
|
|
43
|
-
/**
|
|
44
|
-
* Only updates the field if the specified value is greater than the existing field value.
|
|
45
|
-
*/
|
|
46
|
-
$max?: { [K in keyof T]?: number };
|
|
47
|
-
/**
|
|
48
|
-
* Multiplies the value of the field by the specified amount.
|
|
49
|
-
*/
|
|
50
|
-
$mul?: { [K in keyof T]?: number };
|
|
51
|
-
/**
|
|
52
|
-
* Renames a field.
|
|
53
|
-
*/
|
|
54
|
-
$rename?: { [K in keyof T]?: string };
|
|
55
|
-
/**
|
|
56
|
-
* Removes the specified field from a document. (set: "" to value)
|
|
57
|
-
*/
|
|
58
|
-
$unset?: { [K in keyof T]?: string };
|
|
59
|
-
/**
|
|
60
|
-
* Sets the value of a field in a document.
|
|
61
|
-
*/
|
|
62
|
-
$set?: { [K in keyof T]?: string } | any;
|
|
63
|
-
/**
|
|
64
|
-
* Sets the value of a field if an update results in an insert of a document.
|
|
65
|
-
* Has no effect on update operations that modify existing documents.
|
|
66
|
-
*/
|
|
67
|
-
$setOnInsert?: { [K in keyof T]?: T[K] };
|
|
68
|
-
/**
|
|
69
|
-
* Removes the first or last item of an array.
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
// array only operations
|
|
73
|
-
/**
|
|
74
|
-
* Removes the first or last item of an array.
|
|
75
|
-
*/
|
|
76
|
-
$push?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
77
|
-
/**
|
|
78
|
-
* Removes the first or last item of an array.
|
|
79
|
-
*/
|
|
80
|
-
$addToSet?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
81
|
-
/**
|
|
82
|
-
* Removes the first or last item of an array.
|
|
83
|
-
*/
|
|
84
|
-
$pop?: { [K in keyof T]?: 1 | -1 };
|
|
85
|
-
/**
|
|
86
|
-
* Removes all array elements that match a specified query.
|
|
87
|
-
*/
|
|
88
|
-
$pull?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
89
|
-
/**
|
|
90
|
-
* Removes all array elements that match a specified query.
|
|
91
|
-
*/
|
|
92
|
-
$pullAll?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
93
|
-
} & DyNTS_DBSimpleUpdate<T>;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
*
|
|
97
|
-
*/
|
|
98
|
-
export type DyNTS_DBSimpleUpdate<T> = {
|
|
99
|
-
[K in keyof T]?: T[K];
|
|
100
|
-
};
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @param update this uses the basic Mongoose updateOne
|
|
4
|
+
* @example
|
|
5
|
+
* // increase a specific value (here by 15):
|
|
6
|
+
* { $inc: { popularity: 15 } }
|
|
7
|
+
* //
|
|
8
|
+
* @example
|
|
9
|
+
* // or add element to a list:
|
|
10
|
+
* { $push: { reactions: this.newReaction }
|
|
11
|
+
* // or add multiple elements to a list
|
|
12
|
+
* { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
|
|
13
|
+
* //
|
|
14
|
+
* @example
|
|
15
|
+
* // or all at once
|
|
16
|
+
* {
|
|
17
|
+
* $inc: { popularity: this.newVote.amount },
|
|
18
|
+
* emailVerified: true,
|
|
19
|
+
* $push: { reactions: this.newReaction }
|
|
20
|
+
* }
|
|
21
|
+
* // further tools (syntax matches with $inc):
|
|
22
|
+
* $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
|
|
23
|
+
* $min: // Only updates the field if the specified value is less than the existing field value.
|
|
24
|
+
* $max: // Only updates the field if the specified value is greater than the existing field value.
|
|
25
|
+
* $mul: // Multiplies the value of the field by the specified amount.
|
|
26
|
+
* $rename: // Renames a field.
|
|
27
|
+
* $unset: // Removes the specified field from a document. (set: "" to value)
|
|
28
|
+
* //
|
|
29
|
+
*/
|
|
30
|
+
export type DyNTS_DBUpdate<T> = {
|
|
31
|
+
/**
|
|
32
|
+
* Sets the value of a field to current date, either as a Date or a Timestamp.
|
|
33
|
+
*/
|
|
34
|
+
/* $currentDate?: { [K in keyof T]?: boolean }; */
|
|
35
|
+
/**
|
|
36
|
+
* Increments the value of the field by the specified amount.
|
|
37
|
+
*/
|
|
38
|
+
$inc?: { [K in keyof T]?: number };
|
|
39
|
+
/**
|
|
40
|
+
* Only updates the field if the specified value is less than the existing field value.
|
|
41
|
+
*/
|
|
42
|
+
$min?: { [K in keyof T]?: number };
|
|
43
|
+
/**
|
|
44
|
+
* Only updates the field if the specified value is greater than the existing field value.
|
|
45
|
+
*/
|
|
46
|
+
$max?: { [K in keyof T]?: number };
|
|
47
|
+
/**
|
|
48
|
+
* Multiplies the value of the field by the specified amount.
|
|
49
|
+
*/
|
|
50
|
+
$mul?: { [K in keyof T]?: number };
|
|
51
|
+
/**
|
|
52
|
+
* Renames a field.
|
|
53
|
+
*/
|
|
54
|
+
$rename?: { [K in keyof T]?: string };
|
|
55
|
+
/**
|
|
56
|
+
* Removes the specified field from a document. (set: "" to value)
|
|
57
|
+
*/
|
|
58
|
+
$unset?: { [K in keyof T]?: string };
|
|
59
|
+
/**
|
|
60
|
+
* Sets the value of a field in a document.
|
|
61
|
+
*/
|
|
62
|
+
$set?: { [K in keyof T]?: string } | any;
|
|
63
|
+
/**
|
|
64
|
+
* Sets the value of a field if an update results in an insert of a document.
|
|
65
|
+
* Has no effect on update operations that modify existing documents.
|
|
66
|
+
*/
|
|
67
|
+
$setOnInsert?: { [K in keyof T]?: T[K] };
|
|
68
|
+
/**
|
|
69
|
+
* Removes the first or last item of an array.
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
// array only operations
|
|
73
|
+
/**
|
|
74
|
+
* Removes the first or last item of an array.
|
|
75
|
+
*/
|
|
76
|
+
$push?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
77
|
+
/**
|
|
78
|
+
* Removes the first or last item of an array.
|
|
79
|
+
*/
|
|
80
|
+
$addToSet?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
81
|
+
/**
|
|
82
|
+
* Removes the first or last item of an array.
|
|
83
|
+
*/
|
|
84
|
+
$pop?: { [K in keyof T]?: 1 | -1 };
|
|
85
|
+
/**
|
|
86
|
+
* Removes all array elements that match a specified query.
|
|
87
|
+
*/
|
|
88
|
+
$pull?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
89
|
+
/**
|
|
90
|
+
* Removes all array elements that match a specified query.
|
|
91
|
+
*/
|
|
92
|
+
$pullAll?: { [K in keyof T]?: any | { $each?: T[K] } };
|
|
93
|
+
} & DyNTS_DBSimpleUpdate<T>;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
*/
|
|
98
|
+
export type DyNTS_DBSimpleUpdate<T> = {
|
|
99
|
+
[K in keyof T]?: T[K];
|
|
100
|
+
};
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyFM_AI_ModelInfo, DyFM_AI_ModelType, DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
|
|
3
|
+
|
|
4
|
+
import { DyNTS_AI_ModelConfig_Validator } from './ai-model-config-validator.util';
|
|
5
|
+
|
|
6
|
+
describe('| DyNTS_AI_ModelConfig_Validator (FR-048 validate-mode)', () => {
|
|
7
|
+
|
|
8
|
+
const registry: DyFM_AI_ModelInfo[] = [
|
|
9
|
+
{
|
|
10
|
+
id: 'reasoning-model',
|
|
11
|
+
provider: DyFM_AI_Provider.OpenAI,
|
|
12
|
+
modelType: DyFM_AI_ModelType.Chat,
|
|
13
|
+
capabilities: {} as any,
|
|
14
|
+
settingsSchema: { unsupported: ['temperature', 'topP'] },
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'opus-model',
|
|
18
|
+
provider: DyFM_AI_Provider.Anthropic,
|
|
19
|
+
modelType: DyFM_AI_ModelType.Chat,
|
|
20
|
+
capabilities: {} as any,
|
|
21
|
+
settingsSchema: { unsupported: ['temperature'] },
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'plain-model',
|
|
25
|
+
provider: DyFM_AI_Provider.OpenAI,
|
|
26
|
+
modelType: DyFM_AI_ModelType.Chat,
|
|
27
|
+
capabilities: {} as any,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'constrained-model',
|
|
31
|
+
provider: DyFM_AI_Provider.OpenAI,
|
|
32
|
+
modelType: DyFM_AI_ModelType.Chat,
|
|
33
|
+
capabilities: {} as any,
|
|
34
|
+
settingsSchema: {
|
|
35
|
+
supported: ['maxTokens', 'reasoningEffort'],
|
|
36
|
+
constraints: {
|
|
37
|
+
reasoningEffort: { allowed: ['low', 'medium', 'high'] },
|
|
38
|
+
maxTokens: { min: 10, max: 100 },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
it('| nem tamogatott param → provider-faithful DyFM_Error', () => {
|
|
45
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
46
|
+
provider: 'open-ai',
|
|
47
|
+
model: 'reasoning-model',
|
|
48
|
+
config: { temperature: 0.5 },
|
|
49
|
+
registry: registry,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
expect(error instanceof DyFM_Error).toBe(true);
|
|
53
|
+
expect(error.message).toContain('unsupported_parameter:temperature');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('| csak tamogatott paramok → null (OK)', () => {
|
|
57
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
58
|
+
provider: 'open-ai',
|
|
59
|
+
model: 'reasoning-model',
|
|
60
|
+
config: { maxTokens: 100 },
|
|
61
|
+
registry: registry,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
expect(error).toBeNull();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('| Anthropic provider → anthropic-alaku hiba-body', () => {
|
|
68
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
69
|
+
provider: 'anthropic',
|
|
70
|
+
model: 'opus-model',
|
|
71
|
+
config: { temperature: 0.5 },
|
|
72
|
+
registry: registry,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
expect(error.message).toContain('invalid_request_error:temperature');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('| schema-mentes modell → null (permissziv, nem talalgat)', () => {
|
|
79
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
80
|
+
provider: 'open-ai',
|
|
81
|
+
model: 'plain-model',
|
|
82
|
+
config: { temperature: 0.5 },
|
|
83
|
+
registry: registry,
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
expect(error).toBeNull();
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('| ismeretlen modell → null (permissziv)', () => {
|
|
90
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
91
|
+
provider: 'open-ai',
|
|
92
|
+
model: 'nincs-ilyen',
|
|
93
|
+
config: { temperature: 0.5 },
|
|
94
|
+
registry: registry,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
expect(error).toBeNull();
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it('| constraints.allowed megsertve → invalid_value hiba', () => {
|
|
101
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
102
|
+
provider: 'open-ai',
|
|
103
|
+
model: 'constrained-model',
|
|
104
|
+
config: { reasoningEffort: 'ultra' },
|
|
105
|
+
registry: registry,
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
expect(error instanceof DyFM_Error).toBe(true);
|
|
109
|
+
expect(error.message).toContain('invalid_value:reasoningEffort');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('| constraints.allowed betartva → null', () => {
|
|
113
|
+
expect(DyNTS_AI_ModelConfig_Validator.validate({
|
|
114
|
+
provider: 'open-ai',
|
|
115
|
+
model: 'constrained-model',
|
|
116
|
+
config: { reasoningEffort: 'medium' },
|
|
117
|
+
registry: registry,
|
|
118
|
+
})).toBeNull();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('| constraints min/max megsertve → invalid_value hiba', () => {
|
|
122
|
+
const tooHigh: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
123
|
+
provider: 'open-ai',
|
|
124
|
+
model: 'constrained-model',
|
|
125
|
+
config: { maxTokens: 5000 },
|
|
126
|
+
registry: registry,
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
expect(tooHigh.message).toContain('invalid_value:maxTokens');
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('| constraints tartomanyon belul → null', () => {
|
|
133
|
+
expect(DyNTS_AI_ModelConfig_Validator.validate({
|
|
134
|
+
provider: 'open-ai',
|
|
135
|
+
model: 'constrained-model',
|
|
136
|
+
config: { maxTokens: 50 },
|
|
137
|
+
registry: registry,
|
|
138
|
+
})).toBeNull();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('| config nelkul → null', () => {
|
|
142
|
+
const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
|
|
143
|
+
provider: 'open-ai',
|
|
144
|
+
model: 'reasoning-model',
|
|
145
|
+
registry: registry,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
expect(error).toBeNull();
|
|
149
|
+
});
|
|
150
|
+
});
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import {
|
|
3
|
+
DyFM_AI_ModelInfo,
|
|
4
|
+
DyFM_AI_ModelRegistry_Util,
|
|
5
|
+
DyFM_AI_ModelSettingsSchema,
|
|
6
|
+
DyFM_AI_SettingConstraint,
|
|
7
|
+
} from '@futdevpro/fsm-dynamo/ai';
|
|
8
|
+
|
|
9
|
+
import { DyNTS_AI_ProviderError } from '../_models/interfaces/dynts-ai-provider-error.interface';
|
|
10
|
+
import { DyNTS_AI_ProviderError_Util } from './ai-provider-error.util';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* FR-048 **validate-mode** — a per-model `settingsSchema` szerinti config-ellenorzes MUTACIO NELKUL.
|
|
14
|
+
*
|
|
15
|
+
* Testvere a `DyNTS_AI_LLM_ServiceBase.reconcileCallSettings`-nek: a reconciler a hivas elott CSENDBEN
|
|
16
|
+
* dropol/clampel (hogy a hivas atmenjen), ez viszont HIBAT AD — igy hasznalhato **production
|
|
17
|
+
* pre-validaciora** (UI-form submit elott, backend service-boundary-n) es tesztben egyarant.
|
|
18
|
+
* **Ugyanabbol az egy forrasbol** (`settingsSchema`) dolgozik mindketto — nincs parhuzamos szabaly-keszlet.
|
|
19
|
+
*
|
|
20
|
+
* A visszateres `null` = OK; kulonben provider-faithful `DyFM_Error` (a nativ hiba-body az
|
|
21
|
+
* `additionalContent.providerErrorBody`-ban).
|
|
22
|
+
*
|
|
23
|
+
* Ismeretlen modell / schema-mentes registry-bejegyzes → `null` (permissziv, best-effort) — NEM talalgatunk.
|
|
24
|
+
*/
|
|
25
|
+
export class DyNTS_AI_ModelConfig_Validator {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Egy hivas-config ellenorzese a modell `settingsSchema`-ja ellen.
|
|
29
|
+
* @param set - provider + modell + a vizsgalando config + a provider modell-registry-je
|
|
30
|
+
*/
|
|
31
|
+
static validate(
|
|
32
|
+
set: {
|
|
33
|
+
provider: string,
|
|
34
|
+
model: string,
|
|
35
|
+
config?: Record<string, unknown>,
|
|
36
|
+
registry: DyFM_AI_ModelInfo[],
|
|
37
|
+
}
|
|
38
|
+
): DyFM_Error {
|
|
39
|
+
if (!set.config) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const modelInfo: DyFM_AI_ModelInfo = DyFM_AI_ModelRegistry_Util.findModelInfo(set.registry ?? [], set.model);
|
|
44
|
+
const schema: DyFM_AI_ModelSettingsSchema = modelInfo?.settingsSchema;
|
|
45
|
+
|
|
46
|
+
if (!schema) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// 1) NEM tamogatott parameter (a modell 400-zal elutasitana)
|
|
51
|
+
for (const param of schema.unsupported ?? []) {
|
|
52
|
+
if (set.config[param] !== undefined) {
|
|
53
|
+
return this.toError(
|
|
54
|
+
DyNTS_AI_ProviderError_Util.buildUnsupportedParamError({
|
|
55
|
+
provider: set.provider,
|
|
56
|
+
model: set.model,
|
|
57
|
+
param: param,
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// 2) Tamogatott parameter, de ervenytelen ertek (constraints: allowed / min / max)
|
|
64
|
+
return this.validateConstraints({
|
|
65
|
+
provider: set.provider,
|
|
66
|
+
model: set.model,
|
|
67
|
+
config: set.config,
|
|
68
|
+
schema: schema,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** A `constraints` (allowed / min / max) ellenorzese. `null` = OK. */
|
|
73
|
+
private static validateConstraints(
|
|
74
|
+
set: {
|
|
75
|
+
provider: string,
|
|
76
|
+
model: string,
|
|
77
|
+
config: Record<string, unknown>,
|
|
78
|
+
schema: DyFM_AI_ModelSettingsSchema,
|
|
79
|
+
}
|
|
80
|
+
): DyFM_Error {
|
|
81
|
+
const constraints: Record<string, DyFM_AI_SettingConstraint> = set.schema.constraints ?? {};
|
|
82
|
+
|
|
83
|
+
for (const param of Object.keys(constraints)) {
|
|
84
|
+
const constraint: DyFM_AI_SettingConstraint = constraints[param];
|
|
85
|
+
const value: unknown = set.config[param];
|
|
86
|
+
|
|
87
|
+
if (value === undefined) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (constraint.allowed?.length && !constraint.allowed.includes(value)) {
|
|
92
|
+
return this.toError(
|
|
93
|
+
DyNTS_AI_ProviderError_Util.buildInvalidValueError({
|
|
94
|
+
provider: set.provider,
|
|
95
|
+
model: set.model,
|
|
96
|
+
param: param,
|
|
97
|
+
detail: `must be one of [${constraint.allowed.join(', ')}]`,
|
|
98
|
+
})
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (typeof value === 'number') {
|
|
103
|
+
const belowMin: boolean = typeof constraint.min === 'number' && value < constraint.min;
|
|
104
|
+
const aboveMax: boolean = typeof constraint.max === 'number' && value > constraint.max;
|
|
105
|
+
|
|
106
|
+
if (belowMin || aboveMax) {
|
|
107
|
+
return this.toError(
|
|
108
|
+
DyNTS_AI_ProviderError_Util.buildInvalidValueError({
|
|
109
|
+
provider: set.provider,
|
|
110
|
+
model: set.model,
|
|
111
|
+
param: param,
|
|
112
|
+
detail: `out of range (${constraint.min ?? '-∞'}..${constraint.max ?? '∞'})`,
|
|
113
|
+
})
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Provider-faithful hiba-leiroból a `DyFM_Error`. */
|
|
123
|
+
private static toError(providerError: DyNTS_AI_ProviderError): DyFM_Error {
|
|
124
|
+
return new DyFM_Error({
|
|
125
|
+
message: `[FR-048] provider-faithful error (HTTP ${providerError.httpStatus}): ${providerError.reason}`,
|
|
126
|
+
userMessage: 'The AI request contains a parameter this model does not accept.',
|
|
127
|
+
errorCode: 'DyNTS-AICFG-UNSUP',
|
|
128
|
+
additionalContent: { providerErrorBody: providerError.providerErrorBody },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|