@futdevpro/nts-dynamo 1.15.84 → 1.15.86
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 +2818 -0
- package/.dynamo/logs/cicd-pipeline/status.json +94 -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/_collections/static-cache-control.util.d.ts +18 -0
- package/build/_collections/static-cache-control.util.d.ts.map +1 -0
- package/build/_collections/static-cache-control.util.js +24 -0
- package/build/_collections/static-cache-control.util.js.map +1 -0
- package/build/_modules/server/errors/errors.controller.d.ts.map +1 -1
- package/build/_modules/server/errors/errors.controller.js +1 -12
- package/build/_modules/server/errors/errors.controller.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +9 -4
- package/build/_services/server/app.server.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +2 -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 +109 -109
- 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/_collections/static-cache-control.util.spec.ts +47 -0
- package/src/_collections/static-cache-control.util.ts +25 -0
- 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 +627 -627
- package/src/_models/control-models/endpoint-params.control-model.ts +627 -627
- 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 +235 -235
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
- package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
- package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
- package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
- package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
- package/src/_modules/ai/_modules/document-ai/_collections/dai-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 +1033 -1033
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding-mock.service.spec.ts +115 -115
- package/src/_modules/ai/_services/ai-embedding-mock.service.ts +212 -212
- 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.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +519 -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 +23 -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/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 -527
- 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 +396 -396
- package/src/_modules/server/server-status/server-status.controller.spec.ts +255 -255
- package/src/_modules/server/server-status/server-status.controller.ts +272 -272
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +209 -209
- package/src/_services/base/archive-data.service.ts +224 -224
- package/src/_services/base/data.service.spec.ts +729 -729
- package/src/_services/base/data.service.ts +2740 -2740
- package/src/_services/base/db.service.spec.ts +73 -73
- package/src/_services/base/db.service.ts +1575 -1575
- package/src/_services/base/singleton.service-base.spec.ts +28 -28
- package/src/_services/base/singleton.service-base.ts +24 -24
- package/src/_services/base/singleton.service.spec.ts +114 -114
- package/src/_services/base/singleton.service.ts +38 -38
- package/src/_services/core/api.service.spec.ts +140 -140
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +742 -742
- package/src/_services/core/global.service.spec.ts +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 +1912 -1905
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +97 -97
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP-réteg shared vokabulár (BFR-AM-003) — a domain-agnosztikus MCP-szerver-base + adaptor közös
|
|
3
|
-
* típusai. Egy fájlban a szorosan összetartozó tool-/transport-típusok (`*.interface.ts` az
|
|
4
|
-
* egy-export-per-file konvenció ismert kivétele a tightly-coupled shape-ekre).
|
|
5
|
-
*
|
|
6
|
-
* Boundary: a `DyNTS_McpToolDefinition` + a `DyNTS_Mcp_Adapter` egyetlen `registerTool` choke-pontot
|
|
7
|
-
* ad — a hivatalos `@modelcontextprotocol/sdk` KIZÁRÓLAG az adaptor mögött él, így egy jövőbeli
|
|
8
|
-
* transport-/SDK-csere NEM-breaking (csak az adaptor cserélődik, a `DyNTS_Mcp_Server_ServiceBase` + a
|
|
9
|
-
* consumer-tool-ok változatlanok). A consumer a SAJÁT tool-jait regisztrálja (a bedrock NEM definiál
|
|
10
|
-
* domain-tool-okat — csak a server-base + a transport + a registry).
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Egy JSON-schema fragment (a tool input-schema-jának típusa). Szabad-formájú JSON-objektum (a
|
|
15
|
-
* draft-07 / MCP tool-schema dialektusa); a `properties`/`required`/`type` mezők gyakoriak, de a
|
|
16
|
-
* shape nem kényszerített (az MCP-kliens a `tools/list`-ben kapja vissza, ahogy van).
|
|
17
|
-
*/
|
|
18
|
-
export interface DyNTS_Mcp_JsonSchema {
|
|
19
|
-
/** A JSON-schema gyökér-típusa (a tool input-ja jellemzően `object`). */
|
|
20
|
-
type: string;
|
|
21
|
-
/** A property-leírások (kulcs → al-schema). */
|
|
22
|
-
properties?: { [key: string]: DyNTS_Mcp_JsonSchema };
|
|
23
|
-
/** Kötelező property-nevek. */
|
|
24
|
-
required?: string[];
|
|
25
|
-
/** Array-elem schema (`type: 'array'` esetén). */
|
|
26
|
-
items?: DyNTS_Mcp_JsonSchema;
|
|
27
|
-
/** Enum-értékek (string/number/boolean literál-halmaz). */
|
|
28
|
-
enum?: (string | number | boolean)[];
|
|
29
|
-
/** Emberi leírás (a tool-választáshoz; az LLM ezt olvassa). */
|
|
30
|
-
description?: string;
|
|
31
|
-
/** Default érték (a kliens-hint). */
|
|
32
|
-
default?: unknown;
|
|
33
|
-
/** Engedi-e a nem-leírt property-ket (`object` schema-n). */
|
|
34
|
-
additionalProperties?: boolean;
|
|
35
|
-
/** Beágyazott `oneOf`/`anyOf` alternatívák. */
|
|
36
|
-
oneOf?: DyNTS_Mcp_JsonSchema[];
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Egy MCP tool-handler kimenete (a transport-agnosztikus core ezt adja; az adaptor MCP-tool-result-tá
|
|
41
|
-
* fordítja). A `data` a strukturált JSON-payload; az `isError` jelzi a strukturált hibát — a néma
|
|
42
|
-
* hiba TILOS (a hiba MINDIG `isError:true` payload VAGY dobott exception, amit az adaptor egységesen
|
|
43
|
-
* `isError`-re fordít).
|
|
44
|
-
*/
|
|
45
|
-
export interface DyNTS_Mcp_ToolOutcome {
|
|
46
|
-
/** A strukturált eredmény-payload (a tool output-shape JSON-ja). */
|
|
47
|
-
data: unknown;
|
|
48
|
-
/** `true`, ha a kimenet strukturált hiba — az adaptor `isError`-re fordítja. */
|
|
49
|
-
isError?: boolean;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Egy tool-handler aláírása. Az `args` a nyers tool-argumentumok (JSON); a handler a saját
|
|
54
|
-
* input-shape-jére validál + a `DyNTS_Mcp_ToolOutcome`-ot adja. A hibát NEM nyeli el (strukturált
|
|
55
|
-
* hiba-payload `isError:true`-val VAGY dobott exception, amit az adaptor egységes MCP-error-ré fordít).
|
|
56
|
-
*/
|
|
57
|
-
export type DyNTS_Mcp_ToolHandler = (args: unknown) => Promise<DyNTS_Mcp_ToolOutcome>;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Egy MCP tool-definíció (a `registerTool` egységes shape-je). A consumer ezt a shape-et használja az
|
|
61
|
-
* advertised halmazba (`name`+`description`+`inputSchema`+`handler`). A `tools/list` a regisztrált
|
|
62
|
-
* tool-ok `name`/`description`/`inputSchema`-ját hirdeti.
|
|
63
|
-
*/
|
|
64
|
-
export interface DyNTS_Mcp_ToolDefinition {
|
|
65
|
-
/** A tool neve (a `tools/list`-ben + a `tools/call` dispatch-kulcsa — UNIK kell legyen). */
|
|
66
|
-
name: string;
|
|
67
|
-
/** Agent-barát leírás (mikor melyik tool; az LLM ezt olvassa a tool-választáshoz). */
|
|
68
|
-
description: string;
|
|
69
|
-
/** A tool input JSON-schema-ja (a `tools/list` ezt hirdeti). */
|
|
70
|
-
inputSchema: DyNTS_Mcp_JsonSchema;
|
|
71
|
-
/** A handler (a transport-agnosztikus core-logika). */
|
|
72
|
-
handler: DyNTS_Mcp_ToolHandler;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Az MCP-szerver identitása (a SDK `serverInfo`-ja). A `name`/`version` a kliensnek hirdetett.
|
|
77
|
-
*/
|
|
78
|
-
export interface DyNTS_Mcp_ServerInfo {
|
|
79
|
-
/** A szerver neve (a kliensnek hirdetett `serverInfo.name`). */
|
|
80
|
-
name: string;
|
|
81
|
-
/** A szerver verziója (a kliensnek hirdetett `serverInfo.version`). */
|
|
82
|
-
version: string;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* A támogatott transport-fajták. MVP: `stdio` (a JSON-RPC a stdin/stdout-on). A `start({transport})`
|
|
87
|
-
* ezzel választ — egy jövőbeli transport (pl. `http`/`sse`) NON-breaking módon bővíthető (csak az
|
|
88
|
-
* adaptor `start`-ja kap új ágat; a server-base + a tool-ok változatlanok).
|
|
89
|
-
*/
|
|
90
|
-
export type DyNTS_Mcp_TransportKind = 'stdio';
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* A `start()` opciói. A `transport` választja a csatornát (default `stdio`).
|
|
94
|
-
*/
|
|
95
|
-
export interface DyNTS_Mcp_StartOptions {
|
|
96
|
-
/** A transport-csatorna (default `stdio`). */
|
|
97
|
-
transport?: DyNTS_Mcp_TransportKind;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Egy MCP `tools/call` strukturált eredménye (a transport-payload shape-je). Az adaptor ezt termeli;
|
|
102
|
-
* a `content` egy text-JSON blokk, az `isError` a strukturált-hiba jelzés. Ez a SDK
|
|
103
|
-
* `CallToolResult`-tal wire-kompatibilis al-shape (a SDK-t az adaptor izolálja, ezért itt a saját,
|
|
104
|
-
* SDK-független shape él).
|
|
105
|
-
*/
|
|
106
|
-
export interface DyNTS_Mcp_CallResult {
|
|
107
|
-
/** A tartalom-blokkok (MVP: egyetlen `text`-JSON blokk). */
|
|
108
|
-
content: { type: 'text'; text: string }[];
|
|
109
|
-
/** `true`, ha a hívás strukturált hibával végződött (no-silent-failure). */
|
|
110
|
-
isError?: boolean;
|
|
111
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* MCP-réteg shared vokabulár (BFR-AM-003) — a domain-agnosztikus MCP-szerver-base + adaptor közös
|
|
3
|
+
* típusai. Egy fájlban a szorosan összetartozó tool-/transport-típusok (`*.interface.ts` az
|
|
4
|
+
* egy-export-per-file konvenció ismert kivétele a tightly-coupled shape-ekre).
|
|
5
|
+
*
|
|
6
|
+
* Boundary: a `DyNTS_McpToolDefinition` + a `DyNTS_Mcp_Adapter` egyetlen `registerTool` choke-pontot
|
|
7
|
+
* ad — a hivatalos `@modelcontextprotocol/sdk` KIZÁRÓLAG az adaptor mögött él, így egy jövőbeli
|
|
8
|
+
* transport-/SDK-csere NEM-breaking (csak az adaptor cserélődik, a `DyNTS_Mcp_Server_ServiceBase` + a
|
|
9
|
+
* consumer-tool-ok változatlanok). A consumer a SAJÁT tool-jait regisztrálja (a bedrock NEM definiál
|
|
10
|
+
* domain-tool-okat — csak a server-base + a transport + a registry).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Egy JSON-schema fragment (a tool input-schema-jának típusa). Szabad-formájú JSON-objektum (a
|
|
15
|
+
* draft-07 / MCP tool-schema dialektusa); a `properties`/`required`/`type` mezők gyakoriak, de a
|
|
16
|
+
* shape nem kényszerített (az MCP-kliens a `tools/list`-ben kapja vissza, ahogy van).
|
|
17
|
+
*/
|
|
18
|
+
export interface DyNTS_Mcp_JsonSchema {
|
|
19
|
+
/** A JSON-schema gyökér-típusa (a tool input-ja jellemzően `object`). */
|
|
20
|
+
type: string;
|
|
21
|
+
/** A property-leírások (kulcs → al-schema). */
|
|
22
|
+
properties?: { [key: string]: DyNTS_Mcp_JsonSchema };
|
|
23
|
+
/** Kötelező property-nevek. */
|
|
24
|
+
required?: string[];
|
|
25
|
+
/** Array-elem schema (`type: 'array'` esetén). */
|
|
26
|
+
items?: DyNTS_Mcp_JsonSchema;
|
|
27
|
+
/** Enum-értékek (string/number/boolean literál-halmaz). */
|
|
28
|
+
enum?: (string | number | boolean)[];
|
|
29
|
+
/** Emberi leírás (a tool-választáshoz; az LLM ezt olvassa). */
|
|
30
|
+
description?: string;
|
|
31
|
+
/** Default érték (a kliens-hint). */
|
|
32
|
+
default?: unknown;
|
|
33
|
+
/** Engedi-e a nem-leírt property-ket (`object` schema-n). */
|
|
34
|
+
additionalProperties?: boolean;
|
|
35
|
+
/** Beágyazott `oneOf`/`anyOf` alternatívák. */
|
|
36
|
+
oneOf?: DyNTS_Mcp_JsonSchema[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Egy MCP tool-handler kimenete (a transport-agnosztikus core ezt adja; az adaptor MCP-tool-result-tá
|
|
41
|
+
* fordítja). A `data` a strukturált JSON-payload; az `isError` jelzi a strukturált hibát — a néma
|
|
42
|
+
* hiba TILOS (a hiba MINDIG `isError:true` payload VAGY dobott exception, amit az adaptor egységesen
|
|
43
|
+
* `isError`-re fordít).
|
|
44
|
+
*/
|
|
45
|
+
export interface DyNTS_Mcp_ToolOutcome {
|
|
46
|
+
/** A strukturált eredmény-payload (a tool output-shape JSON-ja). */
|
|
47
|
+
data: unknown;
|
|
48
|
+
/** `true`, ha a kimenet strukturált hiba — az adaptor `isError`-re fordítja. */
|
|
49
|
+
isError?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Egy tool-handler aláírása. Az `args` a nyers tool-argumentumok (JSON); a handler a saját
|
|
54
|
+
* input-shape-jére validál + a `DyNTS_Mcp_ToolOutcome`-ot adja. A hibát NEM nyeli el (strukturált
|
|
55
|
+
* hiba-payload `isError:true`-val VAGY dobott exception, amit az adaptor egységes MCP-error-ré fordít).
|
|
56
|
+
*/
|
|
57
|
+
export type DyNTS_Mcp_ToolHandler = (args: unknown) => Promise<DyNTS_Mcp_ToolOutcome>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Egy MCP tool-definíció (a `registerTool` egységes shape-je). A consumer ezt a shape-et használja az
|
|
61
|
+
* advertised halmazba (`name`+`description`+`inputSchema`+`handler`). A `tools/list` a regisztrált
|
|
62
|
+
* tool-ok `name`/`description`/`inputSchema`-ját hirdeti.
|
|
63
|
+
*/
|
|
64
|
+
export interface DyNTS_Mcp_ToolDefinition {
|
|
65
|
+
/** A tool neve (a `tools/list`-ben + a `tools/call` dispatch-kulcsa — UNIK kell legyen). */
|
|
66
|
+
name: string;
|
|
67
|
+
/** Agent-barát leírás (mikor melyik tool; az LLM ezt olvassa a tool-választáshoz). */
|
|
68
|
+
description: string;
|
|
69
|
+
/** A tool input JSON-schema-ja (a `tools/list` ezt hirdeti). */
|
|
70
|
+
inputSchema: DyNTS_Mcp_JsonSchema;
|
|
71
|
+
/** A handler (a transport-agnosztikus core-logika). */
|
|
72
|
+
handler: DyNTS_Mcp_ToolHandler;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Az MCP-szerver identitása (a SDK `serverInfo`-ja). A `name`/`version` a kliensnek hirdetett.
|
|
77
|
+
*/
|
|
78
|
+
export interface DyNTS_Mcp_ServerInfo {
|
|
79
|
+
/** A szerver neve (a kliensnek hirdetett `serverInfo.name`). */
|
|
80
|
+
name: string;
|
|
81
|
+
/** A szerver verziója (a kliensnek hirdetett `serverInfo.version`). */
|
|
82
|
+
version: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A támogatott transport-fajták. MVP: `stdio` (a JSON-RPC a stdin/stdout-on). A `start({transport})`
|
|
87
|
+
* ezzel választ — egy jövőbeli transport (pl. `http`/`sse`) NON-breaking módon bővíthető (csak az
|
|
88
|
+
* adaptor `start`-ja kap új ágat; a server-base + a tool-ok változatlanok).
|
|
89
|
+
*/
|
|
90
|
+
export type DyNTS_Mcp_TransportKind = 'stdio';
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A `start()` opciói. A `transport` választja a csatornát (default `stdio`).
|
|
94
|
+
*/
|
|
95
|
+
export interface DyNTS_Mcp_StartOptions {
|
|
96
|
+
/** A transport-csatorna (default `stdio`). */
|
|
97
|
+
transport?: DyNTS_Mcp_TransportKind;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Egy MCP `tools/call` strukturált eredménye (a transport-payload shape-je). Az adaptor ezt termeli;
|
|
102
|
+
* a `content` egy text-JSON blokk, az `isError` a strukturált-hiba jelzés. Ez a SDK
|
|
103
|
+
* `CallToolResult`-tal wire-kompatibilis al-shape (a SDK-t az adaptor izolálja, ezért itt a saját,
|
|
104
|
+
* SDK-független shape él).
|
|
105
|
+
*/
|
|
106
|
+
export interface DyNTS_Mcp_CallResult {
|
|
107
|
+
/** A tartalom-blokkok (MVP: egyetlen `text`-JSON blokk). */
|
|
108
|
+
content: { type: 'text'; text: string }[];
|
|
109
|
+
/** `true`, ha a hívás strukturált hibával végződött (no-silent-failure). */
|
|
110
|
+
isError?: boolean;
|
|
111
|
+
}
|
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
import { DyNTS_Mcp_Server_ServiceBase } from './dynts-mcp-server.service-base';
|
|
2
|
-
import {
|
|
3
|
-
DyNTS_Mcp_CallResult,
|
|
4
|
-
DyNTS_Mcp_ServerInfo,
|
|
5
|
-
DyNTS_Mcp_ToolDefinition
|
|
6
|
-
} from '../_models/interfaces/dynts-mcp.interface';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* CONTRACT — `DyNTS_Mcp_Server_ServiceBase` tool-registry + dispatch (BFR-AM-003). A transportot NEM nyitjuk
|
|
10
|
-
* meg (nincs valódi stdio-szerver) — a `build()` + `callTool()` közvetlen dispatch-ét teszteljük,
|
|
11
|
-
* ami UGYANAZ a logika, mint a SDK `tools/call`-ja:
|
|
12
|
-
* - N tool regisztrálása → `getAdvertisedToolNames` PONTOSAN ezeket listázza,
|
|
13
|
-
* - `callTool` a megfelelő handler-re dispatch-el (a `name` szerint),
|
|
14
|
-
* - ismeretlen tool → strukturált `isError:true` (NEM néma, NEM crash),
|
|
15
|
-
* - handler-dobott hiba → `isError:true` fordítás (a payload tartalmazza a message-et),
|
|
16
|
-
* - `isError:true` outcome → `isError:true` call-result.
|
|
17
|
-
*/
|
|
18
|
-
describe('| DyNTS_Mcp_Server_ServiceBase (tool-registry + dispatch, BFR-AM-003)', () => {
|
|
19
|
-
|
|
20
|
-
/** A handler-hívások nyoma (melyik tool, milyen args) — a dispatch-helyesség igazolásához. */
|
|
21
|
-
let calls: { name: string; args: unknown }[];
|
|
22
|
-
|
|
23
|
-
/** Egy teszt-tool-definíció gyára (a handler `data`-ba teszi a tool-nevet + az args-ot). */
|
|
24
|
-
const makeTool = (name: string): DyNTS_Mcp_ToolDefinition => ({
|
|
25
|
-
name: name,
|
|
26
|
-
description: `Test tool ${name}.`,
|
|
27
|
-
inputSchema: { type: 'object', properties: { x: { type: 'string' } } },
|
|
28
|
-
handler: async (args: unknown) => {
|
|
1
|
+
import { DyNTS_Mcp_Server_ServiceBase } from './dynts-mcp-server.service-base';
|
|
2
|
+
import {
|
|
3
|
+
DyNTS_Mcp_CallResult,
|
|
4
|
+
DyNTS_Mcp_ServerInfo,
|
|
5
|
+
DyNTS_Mcp_ToolDefinition
|
|
6
|
+
} from '../_models/interfaces/dynts-mcp.interface';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* CONTRACT — `DyNTS_Mcp_Server_ServiceBase` tool-registry + dispatch (BFR-AM-003). A transportot NEM nyitjuk
|
|
10
|
+
* meg (nincs valódi stdio-szerver) — a `build()` + `callTool()` közvetlen dispatch-ét teszteljük,
|
|
11
|
+
* ami UGYANAZ a logika, mint a SDK `tools/call`-ja:
|
|
12
|
+
* - N tool regisztrálása → `getAdvertisedToolNames` PONTOSAN ezeket listázza,
|
|
13
|
+
* - `callTool` a megfelelő handler-re dispatch-el (a `name` szerint),
|
|
14
|
+
* - ismeretlen tool → strukturált `isError:true` (NEM néma, NEM crash),
|
|
15
|
+
* - handler-dobott hiba → `isError:true` fordítás (a payload tartalmazza a message-et),
|
|
16
|
+
* - `isError:true` outcome → `isError:true` call-result.
|
|
17
|
+
*/
|
|
18
|
+
describe('| DyNTS_Mcp_Server_ServiceBase (tool-registry + dispatch, BFR-AM-003)', () => {
|
|
19
|
+
|
|
20
|
+
/** A handler-hívások nyoma (melyik tool, milyen args) — a dispatch-helyesség igazolásához. */
|
|
21
|
+
let calls: { name: string; args: unknown }[];
|
|
22
|
+
|
|
23
|
+
/** Egy teszt-tool-definíció gyára (a handler `data`-ba teszi a tool-nevet + az args-ot). */
|
|
24
|
+
const makeTool = (name: string): DyNTS_Mcp_ToolDefinition => ({
|
|
25
|
+
name: name,
|
|
26
|
+
description: `Test tool ${name}.`,
|
|
27
|
+
inputSchema: { type: 'object', properties: { x: { type: 'string' } } },
|
|
28
|
+
handler: async (args: unknown) => {
|
|
29
29
|
calls.push({ name: name, args: args });
|
|
30
|
-
|
|
31
|
-
return { data: { tool: name, echo: args } };
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
/** A teszt-szerver: 3 tool + egy szándékosan dobó tool. */
|
|
36
|
-
class TestServer extends DyNTS_Mcp_Server_ServiceBase {
|
|
37
|
-
protected getServerInfo(): DyNTS_Mcp_ServerInfo {
|
|
38
|
-
return { name: 'test-mcp', version: '0.0.1-spec' };
|
|
39
|
-
}
|
|
40
|
-
protected getTools(): DyNTS_Mcp_ToolDefinition[] {
|
|
41
|
-
return [
|
|
42
|
-
makeTool('alpha'),
|
|
43
|
-
makeTool('beta'),
|
|
44
|
-
{
|
|
45
|
-
name: 'boom',
|
|
46
|
-
description: 'Always throws.',
|
|
47
|
-
inputSchema: { type: 'object' },
|
|
48
|
-
handler: async () => {
|
|
49
|
-
throw new Error('kaboom from handler');
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: 'structuredError',
|
|
54
|
-
description: 'Returns a structured error outcome.',
|
|
55
|
-
inputSchema: { type: 'object' },
|
|
56
|
-
handler: async () => ({ data: { reason: 'nope' }, isError: true }),
|
|
57
|
-
},
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
let server: TestServer;
|
|
63
|
-
|
|
64
|
-
beforeEach(() => {
|
|
65
|
-
calls = [];
|
|
66
|
-
server = new TestServer();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
/** A `content[0].text` JSON-payload kiparse-olása (a transport text-JSON shape-je). */
|
|
70
|
-
const payloadOf = (result: DyNTS_Mcp_CallResult): { [key: string]: unknown } =>
|
|
71
|
-
JSON.parse(result.content[0].text) as { [key: string]: unknown };
|
|
72
|
-
|
|
73
|
-
describe('| registry — getTools → advertised', () => {
|
|
74
|
-
it('| a deklarált tool-okat hirdeti build ELŐTT is (determinisztikus)', () => {
|
|
75
|
-
expect(server.getAdvertisedToolNames().sort())
|
|
76
|
-
.toEqual([ 'alpha', 'beta', 'boom', 'structuredError' ]);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('| build() után UGYANAZOK a hirdetett tool-ok (idempotens build)', () => {
|
|
80
|
-
const adapter1 = server.build();
|
|
30
|
+
|
|
31
|
+
return { data: { tool: name, echo: args } };
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
/** A teszt-szerver: 3 tool + egy szándékosan dobó tool. */
|
|
36
|
+
class TestServer extends DyNTS_Mcp_Server_ServiceBase {
|
|
37
|
+
protected getServerInfo(): DyNTS_Mcp_ServerInfo {
|
|
38
|
+
return { name: 'test-mcp', version: '0.0.1-spec' };
|
|
39
|
+
}
|
|
40
|
+
protected getTools(): DyNTS_Mcp_ToolDefinition[] {
|
|
41
|
+
return [
|
|
42
|
+
makeTool('alpha'),
|
|
43
|
+
makeTool('beta'),
|
|
44
|
+
{
|
|
45
|
+
name: 'boom',
|
|
46
|
+
description: 'Always throws.',
|
|
47
|
+
inputSchema: { type: 'object' },
|
|
48
|
+
handler: async () => {
|
|
49
|
+
throw new Error('kaboom from handler');
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'structuredError',
|
|
54
|
+
description: 'Returns a structured error outcome.',
|
|
55
|
+
inputSchema: { type: 'object' },
|
|
56
|
+
handler: async () => ({ data: { reason: 'nope' }, isError: true }),
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let server: TestServer;
|
|
63
|
+
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
calls = [];
|
|
66
|
+
server = new TestServer();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
/** A `content[0].text` JSON-payload kiparse-olása (a transport text-JSON shape-je). */
|
|
70
|
+
const payloadOf = (result: DyNTS_Mcp_CallResult): { [key: string]: unknown } =>
|
|
71
|
+
JSON.parse(result.content[0].text) as { [key: string]: unknown };
|
|
72
|
+
|
|
73
|
+
describe('| registry — getTools → advertised', () => {
|
|
74
|
+
it('| a deklarált tool-okat hirdeti build ELŐTT is (determinisztikus)', () => {
|
|
75
|
+
expect(server.getAdvertisedToolNames().sort())
|
|
76
|
+
.toEqual([ 'alpha', 'beta', 'boom', 'structuredError' ]);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('| build() után UGYANAZOK a hirdetett tool-ok (idempotens build)', () => {
|
|
80
|
+
const adapter1 = server.build();
|
|
81
81
|
const adapter2 = server.build();
|
|
82
|
-
|
|
83
|
-
expect(adapter1).toBe(adapter2);
|
|
84
|
-
expect(adapter1.getAdvertisedToolNames().sort())
|
|
85
|
-
.toEqual([ 'alpha', 'beta', 'boom', 'structuredError' ]);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
describe('| dispatch — callTool a megfelelő handler-re route-ol', () => {
|
|
90
|
-
it('| alpha → az alpha handler fut (a data a tool-nevet + az args-ot adja)', async () => {
|
|
82
|
+
|
|
83
|
+
expect(adapter1).toBe(adapter2);
|
|
84
|
+
expect(adapter1.getAdvertisedToolNames().sort())
|
|
85
|
+
.toEqual([ 'alpha', 'beta', 'boom', 'structuredError' ]);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe('| dispatch — callTool a megfelelő handler-re route-ol', () => {
|
|
90
|
+
it('| alpha → az alpha handler fut (a data a tool-nevet + az args-ot adja)', async () => {
|
|
91
91
|
const result: DyNTS_Mcp_CallResult = await server.callTool({ name: 'alpha', arguments: { x: '1' } });
|
|
92
|
-
|
|
93
|
-
expect(result.isError).toBe(false);
|
|
94
|
-
expect(calls).toEqual([{ name: 'alpha', args: { x: '1' } }]);
|
|
95
|
-
expect(payloadOf(result)).toEqual({ tool: 'alpha', echo: { x: '1' } });
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('| beta → a beta handler fut (a dispatch a `name` szerint választ)', async () => {
|
|
99
|
-
await server.callTool({ name: 'beta', arguments: { x: '2' } });
|
|
100
|
-
expect(calls).toEqual([{ name: 'beta', args: { x: '2' } }]);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe('| strukturált hiba (no-silent-failure)', () => {
|
|
105
|
-
it('| ismeretlen tool → isError:true + advertised-lista a message-ben (NEM néma/crash)', async () => {
|
|
92
|
+
|
|
93
|
+
expect(result.isError).toBe(false);
|
|
94
|
+
expect(calls).toEqual([{ name: 'alpha', args: { x: '1' } }]);
|
|
95
|
+
expect(payloadOf(result)).toEqual({ tool: 'alpha', echo: { x: '1' } });
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('| beta → a beta handler fut (a dispatch a `name` szerint választ)', async () => {
|
|
99
|
+
await server.callTool({ name: 'beta', arguments: { x: '2' } });
|
|
100
|
+
expect(calls).toEqual([{ name: 'beta', args: { x: '2' } }]);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe('| strukturált hiba (no-silent-failure)', () => {
|
|
105
|
+
it('| ismeretlen tool → isError:true + advertised-lista a message-ben (NEM néma/crash)', async () => {
|
|
106
106
|
const result: DyNTS_Mcp_CallResult = await server.callTool({ name: 'does_not_exist' });
|
|
107
|
-
|
|
108
|
-
expect(result.isError).toBe(true);
|
|
107
|
+
|
|
108
|
+
expect(result.isError).toBe(true);
|
|
109
109
|
const payload = payloadOf(result) as { ok: boolean; error: { message: string } };
|
|
110
|
-
|
|
111
|
-
expect(payload.ok).toBe(false);
|
|
112
|
-
expect(payload.error.message).toContain('does_not_exist');
|
|
113
|
-
expect(payload.error.message).toContain('alpha');
|
|
114
|
-
// egyetlen ismeretlen tool sem futtatott handlert.
|
|
115
|
-
expect(calls.length).toBe(0);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('| handler-dobott hiba → isError:true + a hiba message-e a payload-ban (NEM crash)', async () => {
|
|
110
|
+
|
|
111
|
+
expect(payload.ok).toBe(false);
|
|
112
|
+
expect(payload.error.message).toContain('does_not_exist');
|
|
113
|
+
expect(payload.error.message).toContain('alpha');
|
|
114
|
+
// egyetlen ismeretlen tool sem futtatott handlert.
|
|
115
|
+
expect(calls.length).toBe(0);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it('| handler-dobott hiba → isError:true + a hiba message-e a payload-ban (NEM crash)', async () => {
|
|
119
119
|
const result: DyNTS_Mcp_CallResult = await server.callTool({ name: 'boom' });
|
|
120
|
-
|
|
121
|
-
expect(result.isError).toBe(true);
|
|
120
|
+
|
|
121
|
+
expect(result.isError).toBe(true);
|
|
122
122
|
const payload = payloadOf(result) as { ok: boolean; error: { message: string } };
|
|
123
|
-
|
|
124
|
-
expect(payload.ok).toBe(false);
|
|
125
|
-
expect(payload.error.message).toContain('kaboom from handler');
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
it('| isError:true outcome → isError:true call-result (a strukturált hiba átmegy)', async () => {
|
|
123
|
+
|
|
124
|
+
expect(payload.ok).toBe(false);
|
|
125
|
+
expect(payload.error.message).toContain('kaboom from handler');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('| isError:true outcome → isError:true call-result (a strukturált hiba átmegy)', async () => {
|
|
129
129
|
const result: DyNTS_Mcp_CallResult = await server.callTool({ name: 'structuredError' });
|
|
130
|
-
|
|
131
|
-
expect(result.isError).toBe(true);
|
|
132
|
-
expect(payloadOf(result)).toEqual({ reason: 'nope' });
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
describe('| start — transport-választás', () => {
|
|
137
|
-
it('| ismeretlen transport → dob (exhaustiveness-guard); stdio nem nyílik a spec-ben', async () => {
|
|
130
|
+
|
|
131
|
+
expect(result.isError).toBe(true);
|
|
132
|
+
expect(payloadOf(result)).toEqual({ reason: 'nope' });
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
describe('| start — transport-választás', () => {
|
|
137
|
+
it('| ismeretlen transport → dob (exhaustiveness-guard); stdio nem nyílik a spec-ben', async () => {
|
|
138
138
|
let thrown: unknown;
|
|
139
|
-
|
|
140
|
-
try {
|
|
141
|
-
// Szándékosan érvénytelen transport (a típus-szűkítés megkerülésével) — a guard-ágat teszteli,
|
|
142
|
-
// valódi stdio-szervert NEM indítunk.
|
|
143
|
-
await server.start({ transport: 'http' as never });
|
|
144
|
-
} catch (error) {
|
|
145
|
-
thrown = error;
|
|
146
|
-
}
|
|
147
|
-
expect(thrown).toBeDefined();
|
|
148
|
-
expect((thrown as Error).message).toContain('Unsupported MCP transport');
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
});
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
// Szándékosan érvénytelen transport (a típus-szűkítés megkerülésével) — a guard-ágat teszteli,
|
|
142
|
+
// valódi stdio-szervert NEM indítunk.
|
|
143
|
+
await server.start({ transport: 'http' as never });
|
|
144
|
+
} catch (error) {
|
|
145
|
+
thrown = error;
|
|
146
|
+
}
|
|
147
|
+
expect(thrown).toBeDefined();
|
|
148
|
+
expect((thrown as Error).message).toContain('Unsupported MCP transport');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|