@futdevpro/nts-dynamo 1.15.151 → 1.15.154
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/__main.mdc +64 -64
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_debug.mdc +7 -7
- package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
- package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
- package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
- 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_running_commands.mdc +4 -4
- package/.cursor/rules/_ag_server-controller.mdc +5 -5
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/_ag_swearing.mdc +47 -47
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/ai_directives.md +114 -114
- 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/pipeline.cicd.config.json +190 -190
- package/.dynamo/version-bump.config.json +5 -5
- package/.github/workflows/main.yml +438 -438
- package/.husky/pre-commit +3 -3
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/README.md +790 -749
- package/__documentations/2026-04-28-logs-module.md +49 -49
- package/__documentations/2026-05-17-oai-compatible-providers.md +229 -229
- package/__documentations/2026-05-17-static-client-serving-howto.md +144 -144
- package/__documentations/2026-06-01-fr041-cors-middleware.md +96 -96
- package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +81 -81
- package/__documentations/2026-06-15-fr193-memory-guard.md +73 -73
- package/__documentations/2026-08-08-fr292-app-version-header.md +38 -38
- package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +124 -124
- package/__documentations/2026-08-18-artifact-compiler.md +46 -46
- package/__documentations/2026-08-18-mongo-transaction-control-service.md +82 -82
- package/__documentations/2026-08-18-standalone-account-security-and-privacy-bedrock.md +132 -132
- package/__documentations/2026-08-21-distributed-rate-limit-bfr-ctm-010.md +59 -59
- package/__documentations/2026-08-22-content-free-process-error-boundary.md +91 -0
- package/__documentations/2026-08-22-npm-token-state-classifier.md +92 -92
- 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/_models/control-models/app-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/app-params.control-model.js +1 -2
- package/build/_models/control-models/app-params.control-model.js.map +1 -1
- package/build/_modules/server/index.d.ts +8 -0
- package/build/_modules/server/index.d.ts.map +1 -1
- package/build/_modules/server/index.js +9 -0
- package/build/_modules/server/index.js.map +1 -1
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.d.ts +9 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.js +13 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts +20 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js +24 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts +19 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js +83 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.d.ts +19 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.js +3 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts +14 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js +18 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts +8 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js +12 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts +14 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.js +126 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts +18 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.js +3 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.js.map +1 -0
- package/build/_services/core/global.service.d.ts +3 -3
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +24 -18
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts +2 -0
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +71 -199
- package/build/_services/server/app.server.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +1 -1
- package/pnpm-workspace.yaml +6 -6
- package/scripts/_seed-out/aim-seed.fixtures.ts +161 -161
- package/scripts/_seed-out/llm-expand-raw.json +59 -59
- package/scripts/_seed-out/seed-raw.json +152 -152
- package/scripts/ai-fixture-seed.js +126 -126
- 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/app-version-header.util.spec.ts +108 -108
- package/src/_collections/app-version-header.util.ts +74 -74
- package/src/_collections/archive-service-registry.const.ts +21 -21
- 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/client-safe-error.util.spec.ts +151 -151
- package/src/_collections/client-safe-error.util.ts +107 -107
- 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/field-encryption.util.spec.ts +195 -195
- package/src/_collections/field-encryption.util.ts +222 -222
- 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/load-shed.util.spec.ts +62 -62
- package/src/_collections/load-shed.util.ts +51 -51
- package/src/_collections/mongo-reconnect-guard.util.spec.ts +52 -52
- package/src/_collections/mongo-reconnect-guard.util.ts +172 -172
- package/src/_collections/npm-token-check.util.spec.ts +218 -218
- package/src/_collections/npm-token-check.util.ts +327 -327
- package/src/_collections/sample.env +21 -21
- package/src/_collections/security-headers.util.spec.ts +98 -98
- package/src/_collections/security-headers.util.ts +96 -96
- package/src/_collections/signed-url.util.spec.ts +198 -198
- package/src/_collections/signed-url.util.ts +170 -170
- 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 -47
- package/src/_collections/static-cache-control.util.ts +25 -25
- 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 +213 -209
- package/src/_models/control-models/app-params.control-model.ts +130 -129
- 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 +664 -664
- 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/data-models/schema-migration.data-model.ts +50 -50
- package/src/_models/interfaces/app-version-header-settings.interface.ts +17 -17
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/compare-data-options.interface.ts +27 -27
- package/src/_models/interfaces/compare-data-result.interface.ts +12 -12
- package/src/_models/interfaces/cors-settings.interface.spec.ts +52 -52
- package/src/_models/interfaces/cors-settings.interface.ts +56 -56
- package/src/_models/interfaces/db-query-options.interface.ts +33 -33
- 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 +294 -294
- package/src/_models/interfaces/migration-entry.interface.ts +19 -19
- package/src/_models/interfaces/mongo-transaction-settings.interface.ts +9 -9
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/security-headers-settings.interface.ts +50 -50
- package/src/_models/interfaces/signed-url-verify-result.interface.ts +13 -13
- 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/account-security/_enums/account-challenge-purpose.type-enum.ts +5 -5
- package/src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts +6 -6
- package/src/_modules/account-security/_enums/account-session-state.type-enum.ts +6 -6
- package/src/_modules/account-security/_models/account-challenge-adapter.interface.ts +17 -17
- package/src/_modules/account-security/_models/account-challenge-issued.interface.ts +6 -6
- package/src/_modules/account-security/_models/account-challenge-record.interface.ts +13 -13
- package/src/_modules/account-security/_models/account-challenge-result.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-challenge-settings.interface.ts +9 -9
- package/src/_modules/account-security/_models/account-password-policy.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-password-verification.interface.ts +5 -5
- package/src/_modules/account-security/_models/account-refresh-token-record.interface.ts +13 -13
- package/src/_modules/account-security/_models/account-session-adapter.interface.ts +19 -19
- package/src/_modules/account-security/_models/account-session-claims.interface.ts +7 -7
- package/src/_modules/account-security/_models/account-session-context.interface.ts +6 -6
- package/src/_modules/account-security/_models/account-session-create.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-session-record.interface.ts +21 -21
- package/src/_modules/account-security/_models/account-session-rotate.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-session-settings.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-session-token-pair.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-session-view.interface.ts +13 -13
- package/src/_modules/account-security/account-challenge.control-service.spec.ts +195 -195
- package/src/_modules/account-security/account-challenge.control-service.ts +164 -164
- package/src/_modules/account-security/account-password.control-service.spec.ts +96 -96
- package/src/_modules/account-security/account-password.control-service.ts +288 -288
- package/src/_modules/account-security/account-session.control-service.spec.ts +294 -294
- package/src/_modules/account-security/account-session.control-service.ts +376 -376
- package/src/_modules/account-security/index.ts +31 -31
- package/src/_modules/admin-auth/_models/admin-api-key-config.interface.ts +33 -33
- package/src/_modules/admin-auth/admin-api-key.auth-service.spec.ts +200 -200
- package/src/_modules/admin-auth/admin-api-key.auth-service.ts +220 -220
- package/src/_modules/admin-auth/index.ts +2 -2
- package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -150
- package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -131
- package/src/_modules/ai/_collections/ai-provider-error.util.ts +144 -144
- 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-cost-event-callback.interface.ts +14 -14
- package/src/_modules/ai/_models/interfaces/dynts-ai-cost-event.interface.ts +56 -56
- package/src/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -16
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -72
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -71
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -57
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -60
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -56
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +117 -117
- package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +28 -28
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -14
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -11
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -30
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -19
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -20
- package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
- package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -134
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -127
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -105
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -50
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -65
- package/src/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.ts +92 -92
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -112
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +155 -155
- package/src/_modules/ai/_modules/ai-mock/fixtures/aim-text.fixtures.ts +649 -649
- package/src/_modules/ai/_modules/ai-mock/index.ts +47 -47
- 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 +552 -552
- 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-doc-page.data-service.ts +572 -572
- 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-document.data-service.ts +435 -435
- 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-embedding.control-service.ts +132 -132
- 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 +1085 -1085
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_modules/open-ai/index.ts +74 -74
- package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
- package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
- 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 -133
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
- package/src/_modules/ai/_services/ai-provider.service-base.ts +67 -67
- 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 +399 -399
- package/src/_modules/ai/index.ts +33 -33
- package/src/_modules/artifact-compiler/_enums/artifact-compile-outcome.type-enum.ts +5 -5
- package/src/_modules/artifact-compiler/_enums/artifact-compile-stage.type-enum.ts +8 -8
- package/src/_modules/artifact-compiler/_enums/artifact-retry-class.type-enum.ts +6 -6
- package/src/_modules/artifact-compiler/_models/artifact-compile.interface.ts +35 -35
- package/src/_modules/artifact-compiler/artifact-compiler.control-service.spec.ts +151 -151
- package/src/_modules/artifact-compiler/artifact-compiler.control-service.ts +356 -356
- package/src/_modules/artifact-compiler/index.ts +9 -9
- 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-io.control-service.ts +74 -74
- 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/assistant/index.ts +19 -19
- 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-message-wrapper.interface.ts +90 -90
- 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/discord-bot/_services/dib-messaging-provider.control-service.ts +641 -641
- package/src/_modules/bot/_modules/discord-bot/index.ts +12 -12
- 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/slack-bot/index.ts +12 -12
- 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/_modules/teams-bot/index.ts +11 -11
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-commands.control-service.ts +158 -158
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-io.control-service.ts +329 -329
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-main.control-service.ts +489 -489
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.ts +158 -158
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/bot/_services/bot-routines.control-service.ts +78 -78
- package/src/_modules/bot/index.ts +37 -37
- 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 +176 -176
- 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/_services/dibo-routines.control-service.ts +97 -97
- 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 +60 -60
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-bm25.util.spec.ts +159 -159
- package/src/_modules/local-vector-search/_services/lvs-bm25.util.ts +206 -206
- 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 +214 -214
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
- 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 +130 -130
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
- package/src/_modules/local-vector-search/index.ts +16 -16
- package/src/_modules/logs/_models/file-log-entry.interface.ts +13 -13
- package/src/_modules/logs/_models/file-log-read-result.interface.ts +37 -37
- package/src/_modules/logs/file-log.service.spec.ts +341 -341
- package/src/_modules/logs/file-log.service.ts +466 -466
- package/src/_modules/logs/file-logs.controller.spec.ts +245 -245
- package/src/_modules/logs/file-logs.controller.ts +165 -165
- package/src/_modules/logs/get-file-logs-routing-module.util.ts +51 -51
- package/src/_modules/logs/get-logs-routing-module.util.ts +36 -36
- package/src/_modules/logs/index.ts +11 -11
- package/src/_modules/logs/log-buffer.service.ts +101 -101
- package/src/_modules/logs/logs.controller.ts +109 -109
- package/src/_modules/logs/logs.service.ts +100 -100
- package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +151 -151
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +125 -125
- 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/_collections/msg.util.ts +83 -83
- 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/_services/msg.controller.ts +370 -370
- 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/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.ts +5 -5
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.ts +10 -10
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.ts +7 -7
- package/src/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.ts +15 -15
- package/src/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.ts +12 -12
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.ts +15 -15
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.ts +13 -13
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.ts +14 -14
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.ts +8 -8
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor.interface.ts +17 -17
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.ts +21 -21
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.ts +10 -10
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.ts +11 -11
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.ts +13 -13
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.ts +19 -19
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-request-open.interface.ts +10 -10
- package/src/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-request-record.interface.ts +21 -21
- package/src/_modules/privacy-lifecycle/_models/privacy-request-result.interface.ts +8 -8
- package/src/_modules/privacy-lifecycle/_models/privacy-request-view.interface.ts +20 -20
- package/src/_modules/privacy-lifecycle/index.ts +40 -40
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.spec.ts +206 -206
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.ts +253 -253
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.spec.ts +353 -353
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.ts +586 -586
- package/src/_modules/rate-limit/_enums/rate-limit-store-kind.type-enum.ts +5 -5
- package/src/_modules/rate-limit/_models/rate-limit-config.interface.ts +82 -82
- package/src/_modules/rate-limit/_models/rate-limit-consume-request.interface.ts +9 -9
- package/src/_modules/rate-limit/_models/rate-limit-consume-result.interface.ts +6 -6
- package/src/_modules/rate-limit/_models/rate-limit-policy.interface.ts +16 -16
- package/src/_modules/rate-limit/_models/rate-limit-store.interface.ts +9 -9
- package/src/_modules/rate-limit/index.ts +8 -8
- package/src/_modules/rate-limit/rate-limit-in-memory.store.ts +91 -91
- package/src/_modules/rate-limit/rate-limit.middleware.spec.ts +488 -488
- package/src/_modules/rate-limit/rate-limit.middleware.ts +504 -504
- 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 +82 -82
- 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 +312 -312
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +311 -311
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +123 -123
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +108 -108
- package/src/_modules/scoped-config/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +246 -246
- package/src/_modules/server/errors/errors.control-service.ts +100 -100
- package/src/_modules/server/errors/errors.controller.spec.ts +340 -340
- package/src/_modules/server/errors/errors.controller.ts +559 -559
- package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
- package/src/_modules/server/errors/errors.data-service.ts +867 -867
- package/src/_modules/server/index.ts +37 -27
- package/src/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.ts +8 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.ts +19 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.spec.ts +124 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts +99 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.interface.ts +20 -0
- package/src/_modules/server/server-status/db-readiness-probe-code.type-enum.ts +13 -0
- package/src/_modules/server/server-status/db-readiness-probe-stage.type-enum.ts +7 -0
- package/src/_modules/server/server-status/db-readiness-probe.control-service.spec.ts +235 -0
- package/src/_modules/server/server-status/db-readiness-probe.control-service.ts +158 -0
- package/src/_modules/server/server-status/db-readiness-probe.interface.ts +20 -0
- 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 +672 -672
- package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
- package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
- package/src/_modules/server/server-status/server-status.controller.ts +336 -336
- 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 +165 -165
- package/src/_modules/socket/_models/socket-presence.control-model.ts +211 -211
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +33 -33
- 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 +272 -272
- package/src/_modules/socket/_services/socket-server.service.ts +1037 -1037
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +648 -648
- 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/test-email-sink/_collections/test-email-pattern.const.ts +10 -10
- package/src/_modules/test-email-sink/_models/data-models/dynts-sent-test-mail.data-model.ts +41 -41
- package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.ts +112 -112
- package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.ts +141 -141
- package/src/_modules/test-email-sink/get-sent-mail-routing-module.util.ts +29 -29
- package/src/_modules/test-email-sink/index.ts +11 -11
- package/src/_modules/test-email-sink/test-email-sink.controller.ts +83 -83
- 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 +106 -106
- package/src/_modules/usage/usage.controller.ts +140 -140
- 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 +228 -228
- package/src/_services/base/data.service.spec.ts +784 -784
- package/src/_services/base/data.service.ts +2792 -2792
- package/src/_services/base/db.service.encryption.spec.ts +76 -76
- package/src/_services/base/db.service.spec.ts +160 -160
- package/src/_services/base/db.service.ts +1698 -1698
- 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 +187 -187
- package/src/_services/core/api.service.ts +627 -627
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/collection-growth-monitor.service.spec.ts +119 -119
- package/src/_services/core/collection-growth-monitor.service.ts +234 -234
- package/src/_services/core/db-stats.service.ts +104 -104
- package/src/_services/core/diagnostics.service.spec.ts +44 -44
- package/src/_services/core/diagnostics.service.ts +158 -158
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +757 -757
- package/src/_services/core/event-loop-diag.service.spec.ts +22 -22
- package/src/_services/core/event-loop-diag.service.ts +144 -144
- package/src/_services/core/global.service.spec.ts +292 -292
- package/src/_services/core/global.service.ts +466 -465
- 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/migration-runner.service.spec.ts +91 -91
- package/src/_services/core/migration-runner.service.ts +106 -106
- package/src/_services/core/mongo-transaction.control-service.spec.ts +165 -165
- package/src/_services/core/mongo-transaction.control-service.ts +148 -148
- package/src/_services/core/request-hunter.service.spec.ts +124 -124
- package/src/_services/core/request-hunter.service.ts +157 -157
- 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-safe-diagnostic.spec.ts +124 -0
- package/src/_services/server/app.server-retention.spec.ts +106 -106
- package/src/_services/server/app.server.ts +1865 -1918
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +117 -117
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/.dynamo/logs/cicd-pipeline/output.log +0 -2883
- package/.dynamo/logs/cicd-pipeline/status.json +0 -74
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# Dynamo NTS distributed rate-limit boundary
|
|
2
|
-
|
|
3
|
-
**Contract:** `dynts-rate-limit/2`
|
|
4
|
-
|
|
5
|
-
**Release candidate:** `@futdevpro/nts-dynamo@1.15.147`
|
|
6
|
-
|
|
7
|
-
**Consumer trace:** `BFR-CTM-010`
|
|
8
|
-
|
|
9
|
-
## Purpose
|
|
10
|
-
|
|
11
|
-
This Bedrock boundary makes one rate-limit decision atomic across application processes while keeping persistence
|
|
12
|
-
application-owned. It replaces the former process-local-only middleware behavior without adding a replaceable
|
|
13
|
-
framework abstraction: consumers use the published `@futdevpro/nts-dynamo/rate-limit` types and middleware
|
|
14
|
-
directly and provide the storage adapter required by their deployment.
|
|
15
|
-
|
|
16
|
-
## Contract
|
|
17
|
-
|
|
18
|
-
`DyNTS_RateLimit_Store_Interface.consume(...)` receives one opaque bucket key, the active limit and window, the
|
|
19
|
-
positive request cost and a caller-supplied millisecond timestamp. It resolves one committed decision containing
|
|
20
|
-
`allowed`, `remaining` and `resetAt`. A production host enables `requireSharedStore` and supplies:
|
|
21
|
-
|
|
22
|
-
- a store advertising `storeKind: shared`;
|
|
23
|
-
- an explicit opaque subject extractor;
|
|
24
|
-
- an explicit stable endpoint-group extractor.
|
|
25
|
-
|
|
26
|
-
Configuration fails closed when any of these requirements is absent. Runtime store exceptions and malformed
|
|
27
|
-
store results become stable 503 errors without reflecting the bucket, the adapter exception or request content.
|
|
28
|
-
Policy rejection remains a stable 429 and includes the committed reset interval in response headers.
|
|
29
|
-
|
|
30
|
-
## Security and privacy properties
|
|
31
|
-
|
|
32
|
-
- The middleware never reads `x-forwarded-for` directly. Its local default uses Express `req.ip`, whose proxy
|
|
33
|
-
trust policy belongs to the host; production still requires an explicit extractor.
|
|
34
|
-
- Extractor exceptions, invalid callbacks, invalid clocks and malformed bucket components are converted to
|
|
35
|
-
content-free errors.
|
|
36
|
-
- Limits, windows, costs, timestamps, bucket component lengths and store results have hard numeric/structural
|
|
37
|
-
bounds.
|
|
38
|
-
- No raw storage key or adapter exception is placed in the generated error.
|
|
39
|
-
- The shared-store interface carries opaque identifiers only. The consuming application is responsible for
|
|
40
|
-
purpose-scoped pseudonymization and retention.
|
|
41
|
-
- The module starts no timer, cleanup loop, polling process or background task. Local cleanup is caller-triggered.
|
|
42
|
-
|
|
43
|
-
## Semantics
|
|
44
|
-
|
|
45
|
-
The provided in-memory implementation uses exact sliding-window timestamps. It exists for deterministic tests and
|
|
46
|
-
explicitly single-instance development, not production. A shared implementation may use exact sliding-window
|
|
47
|
-
semantics or a conservatively safe equivalent, but its read/prune/admit/write decision must be atomic. Concurrent
|
|
48
|
-
requests for the final permit may produce exactly one successful decision.
|
|
49
|
-
|
|
50
|
-
Weighted requests consume multiple permit units. An unsuccessful weighted request does not mutate the committed
|
|
51
|
-
usage, so `remaining` can be positive but lower than the attempted cost.
|
|
52
|
-
|
|
53
|
-
## Verification
|
|
54
|
-
|
|
55
|
-
The focused Bedrock suite covers singleton behavior, forwarding-header spoof resistance, deterministic window
|
|
56
|
-
reset, weighted cost, subject/endpoint isolation, headers, policy precedence, invalid configuration atomicity,
|
|
57
|
-
the production shared-store gate, cross-instance state, concurrent final-permit behavior, non-reflective store
|
|
58
|
-
failure, malformed store results and explicit timer-free cleanup. Full-package compilation, tests, lint, import and
|
|
59
|
-
naming validation are release gates for the candidate.
|
|
1
|
+
# Dynamo NTS distributed rate-limit boundary
|
|
2
|
+
|
|
3
|
+
**Contract:** `dynts-rate-limit/2`
|
|
4
|
+
|
|
5
|
+
**Release candidate:** `@futdevpro/nts-dynamo@1.15.147`
|
|
6
|
+
|
|
7
|
+
**Consumer trace:** `BFR-CTM-010`
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
This Bedrock boundary makes one rate-limit decision atomic across application processes while keeping persistence
|
|
12
|
+
application-owned. It replaces the former process-local-only middleware behavior without adding a replaceable
|
|
13
|
+
framework abstraction: consumers use the published `@futdevpro/nts-dynamo/rate-limit` types and middleware
|
|
14
|
+
directly and provide the storage adapter required by their deployment.
|
|
15
|
+
|
|
16
|
+
## Contract
|
|
17
|
+
|
|
18
|
+
`DyNTS_RateLimit_Store_Interface.consume(...)` receives one opaque bucket key, the active limit and window, the
|
|
19
|
+
positive request cost and a caller-supplied millisecond timestamp. It resolves one committed decision containing
|
|
20
|
+
`allowed`, `remaining` and `resetAt`. A production host enables `requireSharedStore` and supplies:
|
|
21
|
+
|
|
22
|
+
- a store advertising `storeKind: shared`;
|
|
23
|
+
- an explicit opaque subject extractor;
|
|
24
|
+
- an explicit stable endpoint-group extractor.
|
|
25
|
+
|
|
26
|
+
Configuration fails closed when any of these requirements is absent. Runtime store exceptions and malformed
|
|
27
|
+
store results become stable 503 errors without reflecting the bucket, the adapter exception or request content.
|
|
28
|
+
Policy rejection remains a stable 429 and includes the committed reset interval in response headers.
|
|
29
|
+
|
|
30
|
+
## Security and privacy properties
|
|
31
|
+
|
|
32
|
+
- The middleware never reads `x-forwarded-for` directly. Its local default uses Express `req.ip`, whose proxy
|
|
33
|
+
trust policy belongs to the host; production still requires an explicit extractor.
|
|
34
|
+
- Extractor exceptions, invalid callbacks, invalid clocks and malformed bucket components are converted to
|
|
35
|
+
content-free errors.
|
|
36
|
+
- Limits, windows, costs, timestamps, bucket component lengths and store results have hard numeric/structural
|
|
37
|
+
bounds.
|
|
38
|
+
- No raw storage key or adapter exception is placed in the generated error.
|
|
39
|
+
- The shared-store interface carries opaque identifiers only. The consuming application is responsible for
|
|
40
|
+
purpose-scoped pseudonymization and retention.
|
|
41
|
+
- The module starts no timer, cleanup loop, polling process or background task. Local cleanup is caller-triggered.
|
|
42
|
+
|
|
43
|
+
## Semantics
|
|
44
|
+
|
|
45
|
+
The provided in-memory implementation uses exact sliding-window timestamps. It exists for deterministic tests and
|
|
46
|
+
explicitly single-instance development, not production. A shared implementation may use exact sliding-window
|
|
47
|
+
semantics or a conservatively safe equivalent, but its read/prune/admit/write decision must be atomic. Concurrent
|
|
48
|
+
requests for the final permit may produce exactly one successful decision.
|
|
49
|
+
|
|
50
|
+
Weighted requests consume multiple permit units. An unsuccessful weighted request does not mutate the committed
|
|
51
|
+
usage, so `remaining` can be positive but lower than the attempted cost.
|
|
52
|
+
|
|
53
|
+
## Verification
|
|
54
|
+
|
|
55
|
+
The focused Bedrock suite covers singleton behavior, forwarding-header spoof resistance, deterministic window
|
|
56
|
+
reset, weighted cost, subject/endpoint isolation, headers, policy precedence, invalid configuration atomicity,
|
|
57
|
+
the production shared-store gate, cross-instance state, concurrent final-permit behavior, non-reflective store
|
|
58
|
+
failure, malformed store results and explicit timer-free cleanup. Full-package compilation, tests, lint, import and
|
|
59
|
+
naming validation are release gates for the candidate.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Content-free process error boundary
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-22
|
|
4
|
+
**Status:** implemented; verification evidence is recorded below
|
|
5
|
+
**Contract:** `dynts-safe-diagnostic/1`
|
|
6
|
+
**Package surface:** `@futdevpro/nts-dynamo`, server module exports
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Dynamo-NTS must remain debuggable without copying arbitrary application content into framework-owned logs or
|
|
11
|
+
error forwarding. Process failures can contain credentials, personal data, workbook values, HTTP request data,
|
|
12
|
+
provider responses or attacker-controlled strings in `message`, `stack`, rejected promises and nested error
|
|
13
|
+
objects. This boundary converts such failures to a fixed allowlist before they reach a Dynamo-NTS logger or the
|
|
14
|
+
global handler from `DyNTS_App`.
|
|
15
|
+
|
|
16
|
+
The capability is direct Dynamo Bedrock. Consuming applications must use it as supplied and may add their own
|
|
17
|
+
product metadata only through a separately reviewed, content-free contract.
|
|
18
|
+
|
|
19
|
+
## Normative public contract
|
|
20
|
+
|
|
21
|
+
`DyNTS_SafeDiagnostic_Interface` contains exactly these fields:
|
|
22
|
+
|
|
23
|
+
| Field | Meaning |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `contractVersion` | Literal `dynts-safe-diagnostic/1`. |
|
|
26
|
+
| `code` | Stable uppercase error code; invalid caller input fails closed to a fixed fallback. |
|
|
27
|
+
| `stage` | Closed lifecycle-stage enum. |
|
|
28
|
+
| `causeType` | Coarse classification only: Dynamo error, native error, object, primitive or unknown. |
|
|
29
|
+
| `fingerprint` | SHA-256 correlation of contract version, code, stage, cause type and status only. |
|
|
30
|
+
| `status` | Valid HTTP-style integer from 100 through 599; otherwise 500. |
|
|
31
|
+
|
|
32
|
+
No raw failure content participates in the returned object or the fingerprint. In particular, `message`,
|
|
33
|
+
`stack`, request/response objects, rejected promises, MongoDB URIs, usernames, passwords, tokens, workbook data
|
|
34
|
+
and arbitrary nested properties are not public fields and are never read for fingerprint construction.
|
|
35
|
+
|
|
36
|
+
The projection is immutable. `project()` returns it without side effects, `report()` logs only that projection,
|
|
37
|
+
and `toError()` creates a `DyFM_Error` whose message and additional content are derived solely from the safe
|
|
38
|
+
projection.
|
|
39
|
+
|
|
40
|
+
## Framework integration
|
|
41
|
+
|
|
42
|
+
`DyNTS_App` applies the projection before framework-owned logging and forwarding at these boundaries:
|
|
43
|
+
|
|
44
|
+
- bootstrap rejection and `unhandledRejection`;
|
|
45
|
+
- post-process, memory guard, event-loop diagnostics and collection-growth monitor failures;
|
|
46
|
+
- readiness reporting;
|
|
47
|
+
- initial MongoDB connect failure, runtime connection error and reconnect-guard diagnostics;
|
|
48
|
+
- HTTP and HTTPS server error/uncaught-exception events;
|
|
49
|
+
- open/secure route configuration and duplicate-route failures;
|
|
50
|
+
- Express error fallback and secondary global-handler failures;
|
|
51
|
+
- retention installation diagnostics.
|
|
52
|
+
|
|
53
|
+
MongoDB connection success logs only the stable fact that MongoDB is connected. Malformed URI warnings,
|
|
54
|
+
initial connection failure and runtime connection failure do not interpolate the URI. The URI remains an input
|
|
55
|
+
to Mongoose because it is operationally required, but it is not a diagnostic value.
|
|
56
|
+
|
|
57
|
+
The default `DyNTS_GlobalService` handler also projects a raw failure before logging. A consumer-supplied global
|
|
58
|
+
handler remains a consumer boundary; failures forwarded by `DyNTS_App` reach it as a content-free `DyFM_Error`.
|
|
59
|
+
If that handler throws or rejects, Dynamo-NTS projects the secondary failure rather than recursively logging it.
|
|
60
|
+
|
|
61
|
+
## Security and privacy properties
|
|
62
|
+
|
|
63
|
+
- The output is an exact allowlist rather than a denylist-based redaction attempt.
|
|
64
|
+
- Hostile getters on error objects cannot make raw content appear in the projection.
|
|
65
|
+
- Correlation is deterministic for the same safe classification but cannot be used to dictionary-test an error
|
|
66
|
+
message, password or token because raw values are excluded from the hash input.
|
|
67
|
+
- Invalid codes and statuses fail closed to stable defaults.
|
|
68
|
+
- Client responses continue to use the existing client-safe error utility; this capability governs
|
|
69
|
+
framework-owned process diagnostics and forwarding.
|
|
70
|
+
- This boundary reduces disclosure risk but does not authorize logging sensitive values elsewhere in a
|
|
71
|
+
consuming application.
|
|
72
|
+
|
|
73
|
+
## Verification matrix
|
|
74
|
+
|
|
75
|
+
| Evidence | Required assertion |
|
|
76
|
+
|---|---|
|
|
77
|
+
| Safe-diagnostic unit tests | Exact frozen allowlist, stable fingerprint, cause classification and fail-closed hostile input. |
|
|
78
|
+
| Report/toError unit test | Logger and serialized `DyFM_Error` contain the safe contract and exclude a credential-bearing canary. |
|
|
79
|
+
| Process-boundary runtime test | Unhandled rejection is projected before both logging and global-handler forwarding. |
|
|
80
|
+
| Bootstrap runtime test | Rejected construction is projected before logging/forwarding and terminates with exit code 1. |
|
|
81
|
+
| Default-handler runtime test | Raw input is projected before default global logging. |
|
|
82
|
+
| App-params test | A malformed credential-bearing MongoDB URI triggers a warning without exposing the URI. |
|
|
83
|
+
| Static source scan | No Dynamo-NTS App log call receives raw error, stack, promise, construct-error collection or DB URI. |
|
|
84
|
+
| Full package regression | Build, complete Jasmine suite and project validators remain green. |
|
|
85
|
+
|
|
86
|
+
## Consumer adoption requirement
|
|
87
|
+
|
|
88
|
+
A consumer adopts the capability by pinning the first exact `@futdevpro/nts-dynamo` version that contains this
|
|
89
|
+
document and by proving the package-level runtime tests in its dependency tree. Reimplementing the boundary in
|
|
90
|
+
the product does not count as Bedrock adoption. Product-specific diagnostics may compose the safe fields, but
|
|
91
|
+
must not copy or reinterpret raw failure content.
|
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
# NPM-token állapot-osztályozó (FR-320)
|
|
2
|
-
|
|
3
|
-
**Dátum:** 2026-08-22 · **Csomag:** `@futdevpro/nts-dynamo` ≥ `01.15.150` ·
|
|
4
|
-
**Belépési pont:** `checkNpmToken()` + `classifyNpmTokenShape()` / `classifyNpmTokenProbe()`
|
|
5
|
-
|
|
6
|
-
## 1. Miért kellett — a hibaosztály
|
|
7
|
-
|
|
8
|
-
2026-08-20-án a flotta npm-tokenje **lejárt**, majd a pótlására beállított token **nem kapott
|
|
9
|
-
írási / 2FA-bypass jogot**. A diagnózis **több napot és több kört** vitt el, mert az npm
|
|
10
|
-
**létezés-elrejtést** alkalmaz privát csomagnál: a jogosulatlan kérésre **404**-et ad, nem 401-et.
|
|
11
|
-
|
|
12
|
-
**Három külön képesség — mind ugyanazzal a hibakóddal bukik:**
|
|
13
|
-
|
|
14
|
-
| képesség | hibás tokennel | amit az operator lát |
|
|
15
|
-
|---|---|---|
|
|
16
|
-
| olvasás (`GET /@scope%2fpkg`) | **404** | „nincs ilyen csomag" |
|
|
17
|
-
| publikálás (`PUT /@scope%2fpkg`) | **404** | „nincs ilyen csomag" |
|
|
18
|
-
| hitelesítés (`GET /-/whoami`) | **401** | ← az **egyetlen** egyértelmű jel |
|
|
19
|
-
|
|
20
|
-
Emiatt a *„nincs ilyen csomag"*, a *„lejárt kulcs"* és a *„rossz jogú kulcs"* megkülönböztethetetlen
|
|
21
|
-
volt. Élesben ez így nézett ki: `ERR_PNPM_FETCH_404` négy projektben, `npm-publish` némán bukva, és
|
|
22
|
-
egy `PUT … 404`, **miközben ugyanaz a token olvasni tudta a csomagot**.
|
|
23
|
-
|
|
24
|
-
## 2. A kulcs-diszkriminátor
|
|
25
|
-
|
|
26
|
-
**Mindig a `/-/whoami`-val kell kezdeni.** Az **csomag-független**, ezért nem esik a 404-csapdába:
|
|
27
|
-
|
|
28
|
-
- rossz / hiányzó token → **401**
|
|
29
|
-
- érvényes token → **200** + `username`
|
|
30
|
-
|
|
31
|
-
Csak ha ez 200, akkor értelmezhető bármilyen csomag-szintű 404 — és élő token mellett az **mindig
|
|
32
|
-
jogosultság**, sosem hiányzó csomag.
|
|
33
|
-
|
|
34
|
-
## 3. Megkülönböztetett állapotok
|
|
35
|
-
|
|
36
|
-
| állapot | mit jelent | mérés |
|
|
37
|
-
|---|---|---|
|
|
38
|
-
| `missing` | nincs beállítva (env **és** `~/.npmrc`) | helyi, hálózat nélkül |
|
|
39
|
-
| `malformed` | van érték, de nem token-alakú (idézőjel, whitespace, bemásolt `.npmrc`-sor) | helyi |
|
|
40
|
-
| `invalid` | a registry elutasítja | whoami **401** |
|
|
41
|
-
| `no-scope-access` | a token él, de a csomagra nincs joga | whoami 200 + csomag 404/403 |
|
|
42
|
-
| `missing-publish-right` | olvas, de **publikálni nem tud** | whoami 200 + `EOTP`/`E403`/**`E404`** publish-hiba |
|
|
43
|
-
| `ok` | érvényes és a vizsgált csomagot is eléri | whoami 200 + csomag 200 |
|
|
44
|
-
| `unknown` | a próba el sem jutott a registryig | **nem** bizonyíték a token ellen |
|
|
45
|
-
|
|
46
|
-
## 4. Amit szándékosan NEM ígér
|
|
47
|
-
|
|
48
|
-
- A **2FA-bypass hiánya read-only próbával nem állapítható meg** — csak egy már elbukott publish
|
|
49
|
-
hibakódjából (`EOTP`). Ezért van opcionális `publishErrorCode` bemenet.
|
|
50
|
-
- A **lejárt** és a **visszavont** token kívülről egyforma 401.
|
|
51
|
-
- A token **élettartama** nem kérdezhető le.
|
|
52
|
-
- **Granular** tokennél az npm a `readonly`/`automation` mezőket sem teszi közzé
|
|
53
|
-
(`GET /-/npm/v1/tokens` → 200, de a jogok nélkül) — mérve.
|
|
54
|
-
|
|
55
|
-
## 5. Biztonság
|
|
56
|
-
|
|
57
|
-
A **token értéke sosem kerül a kimenetbe** — sem logba, sem eredménybe. A helyi alak-ellenőrzés
|
|
58
|
-
kizárólag minta-illesztés; külön teszt állítja, hogy nincs `cat /root/.npmrc` és nincs
|
|
59
|
-
`echo $NPM_TOKEN`. A `.npmrc`-t **csak olvassuk** — létrehozni flotta-szintű hard rule tiltja.
|
|
60
|
-
|
|
61
|
-
## 6. Használat
|
|
62
|
-
|
|
63
|
-
```ts
|
|
64
|
-
import { checkNpmToken, DyNTS_NpmTokenState } from '@futdevpro/nts-dynamo';
|
|
65
|
-
|
|
66
|
-
const result = await checkNpmToken({ scopedPackage: '@futdevpro/cli-dynamo' });
|
|
67
|
-
if (result.state !== DyNTS_NpmTokenState.ok) {
|
|
68
|
-
// result.detail = ember-olvasható magyarázat + a KÖVETKEZŐ LÉPÉS
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Token-feloldás prioritása: explicit paraméter → `NPM_TOKEN` env → `~/.npmrc`.
|
|
73
|
-
|
|
74
|
-
## 7. Teszt
|
|
75
|
-
|
|
76
|
-
27 spec. Élesben igazolva mindhárom ág: jó token → `ok` (whoami 200 + csomag 200), érvénytelen →
|
|
77
|
-
`invalid` (401), rossz alak → `malformed`.
|
|
78
|
-
|
|
79
|
-
**Két saját hibát a tesztek/mérés fogtak meg — mindkettő hamis negatív lett volna:**
|
|
80
|
-
|
|
81
|
-
1. Az első változat **csak a `process.env.NPM_TOKEN`-t** nézte → a workstationon `missing`-et adott,
|
|
82
|
-
holott az npm ott működött (a token a `~/.npmrc`-ben áll). Épp a legfontosabb helyeken
|
|
83
|
-
(runner-konténer, hosztok) sült volna el, ahol a token szintén fájlban van.
|
|
84
|
-
2. A host-összehasonlításnál csak az **egyik oldalt** normalizáltam, a `.npmrc` viszont **záró
|
|
85
|
-
perjellel** írja a hostot (`//registry.npmjs.org/`) → sosem illeszkedett.
|
|
86
|
-
|
|
87
|
-
## 8. Kapcsolódó
|
|
88
|
-
|
|
89
|
-
A lánc, ami emiatt állt: `install` (404) → `npm-publish` (💤/❌) → `trigger-runner-cli-hot-update`
|
|
90
|
-
(💤) → **a runnereken befagyott a CLI**. Az automatizmus nem volt hibás, csak **blokkolt** — egyetlen
|
|
91
|
-
ponton. Runner-oldali próba: `fdp-devops` FR-318/FR-319 (`POST /diag/runner/registry-auth` +
|
|
92
|
-
a `fdp diag-all` `2b. RUNNER REGISTRY-AUTH` szekciója).
|
|
1
|
+
# NPM-token állapot-osztályozó (FR-320)
|
|
2
|
+
|
|
3
|
+
**Dátum:** 2026-08-22 · **Csomag:** `@futdevpro/nts-dynamo` ≥ `01.15.150` ·
|
|
4
|
+
**Belépési pont:** `checkNpmToken()` + `classifyNpmTokenShape()` / `classifyNpmTokenProbe()`
|
|
5
|
+
|
|
6
|
+
## 1. Miért kellett — a hibaosztály
|
|
7
|
+
|
|
8
|
+
2026-08-20-án a flotta npm-tokenje **lejárt**, majd a pótlására beállított token **nem kapott
|
|
9
|
+
írási / 2FA-bypass jogot**. A diagnózis **több napot és több kört** vitt el, mert az npm
|
|
10
|
+
**létezés-elrejtést** alkalmaz privát csomagnál: a jogosulatlan kérésre **404**-et ad, nem 401-et.
|
|
11
|
+
|
|
12
|
+
**Három külön képesség — mind ugyanazzal a hibakóddal bukik:**
|
|
13
|
+
|
|
14
|
+
| képesség | hibás tokennel | amit az operator lát |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| olvasás (`GET /@scope%2fpkg`) | **404** | „nincs ilyen csomag" |
|
|
17
|
+
| publikálás (`PUT /@scope%2fpkg`) | **404** | „nincs ilyen csomag" |
|
|
18
|
+
| hitelesítés (`GET /-/whoami`) | **401** | ← az **egyetlen** egyértelmű jel |
|
|
19
|
+
|
|
20
|
+
Emiatt a *„nincs ilyen csomag"*, a *„lejárt kulcs"* és a *„rossz jogú kulcs"* megkülönböztethetetlen
|
|
21
|
+
volt. Élesben ez így nézett ki: `ERR_PNPM_FETCH_404` négy projektben, `npm-publish` némán bukva, és
|
|
22
|
+
egy `PUT … 404`, **miközben ugyanaz a token olvasni tudta a csomagot**.
|
|
23
|
+
|
|
24
|
+
## 2. A kulcs-diszkriminátor
|
|
25
|
+
|
|
26
|
+
**Mindig a `/-/whoami`-val kell kezdeni.** Az **csomag-független**, ezért nem esik a 404-csapdába:
|
|
27
|
+
|
|
28
|
+
- rossz / hiányzó token → **401**
|
|
29
|
+
- érvényes token → **200** + `username`
|
|
30
|
+
|
|
31
|
+
Csak ha ez 200, akkor értelmezhető bármilyen csomag-szintű 404 — és élő token mellett az **mindig
|
|
32
|
+
jogosultság**, sosem hiányzó csomag.
|
|
33
|
+
|
|
34
|
+
## 3. Megkülönböztetett állapotok
|
|
35
|
+
|
|
36
|
+
| állapot | mit jelent | mérés |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `missing` | nincs beállítva (env **és** `~/.npmrc`) | helyi, hálózat nélkül |
|
|
39
|
+
| `malformed` | van érték, de nem token-alakú (idézőjel, whitespace, bemásolt `.npmrc`-sor) | helyi |
|
|
40
|
+
| `invalid` | a registry elutasítja | whoami **401** |
|
|
41
|
+
| `no-scope-access` | a token él, de a csomagra nincs joga | whoami 200 + csomag 404/403 |
|
|
42
|
+
| `missing-publish-right` | olvas, de **publikálni nem tud** | whoami 200 + `EOTP`/`E403`/**`E404`** publish-hiba |
|
|
43
|
+
| `ok` | érvényes és a vizsgált csomagot is eléri | whoami 200 + csomag 200 |
|
|
44
|
+
| `unknown` | a próba el sem jutott a registryig | **nem** bizonyíték a token ellen |
|
|
45
|
+
|
|
46
|
+
## 4. Amit szándékosan NEM ígér
|
|
47
|
+
|
|
48
|
+
- A **2FA-bypass hiánya read-only próbával nem állapítható meg** — csak egy már elbukott publish
|
|
49
|
+
hibakódjából (`EOTP`). Ezért van opcionális `publishErrorCode` bemenet.
|
|
50
|
+
- A **lejárt** és a **visszavont** token kívülről egyforma 401.
|
|
51
|
+
- A token **élettartama** nem kérdezhető le.
|
|
52
|
+
- **Granular** tokennél az npm a `readonly`/`automation` mezőket sem teszi közzé
|
|
53
|
+
(`GET /-/npm/v1/tokens` → 200, de a jogok nélkül) — mérve.
|
|
54
|
+
|
|
55
|
+
## 5. Biztonság
|
|
56
|
+
|
|
57
|
+
A **token értéke sosem kerül a kimenetbe** — sem logba, sem eredménybe. A helyi alak-ellenőrzés
|
|
58
|
+
kizárólag minta-illesztés; külön teszt állítja, hogy nincs `cat /root/.npmrc` és nincs
|
|
59
|
+
`echo $NPM_TOKEN`. A `.npmrc`-t **csak olvassuk** — létrehozni flotta-szintű hard rule tiltja.
|
|
60
|
+
|
|
61
|
+
## 6. Használat
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { checkNpmToken, DyNTS_NpmTokenState } from '@futdevpro/nts-dynamo';
|
|
65
|
+
|
|
66
|
+
const result = await checkNpmToken({ scopedPackage: '@futdevpro/cli-dynamo' });
|
|
67
|
+
if (result.state !== DyNTS_NpmTokenState.ok) {
|
|
68
|
+
// result.detail = ember-olvasható magyarázat + a KÖVETKEZŐ LÉPÉS
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Token-feloldás prioritása: explicit paraméter → `NPM_TOKEN` env → `~/.npmrc`.
|
|
73
|
+
|
|
74
|
+
## 7. Teszt
|
|
75
|
+
|
|
76
|
+
27 spec. Élesben igazolva mindhárom ág: jó token → `ok` (whoami 200 + csomag 200), érvénytelen →
|
|
77
|
+
`invalid` (401), rossz alak → `malformed`.
|
|
78
|
+
|
|
79
|
+
**Két saját hibát a tesztek/mérés fogtak meg — mindkettő hamis negatív lett volna:**
|
|
80
|
+
|
|
81
|
+
1. Az első változat **csak a `process.env.NPM_TOKEN`-t** nézte → a workstationon `missing`-et adott,
|
|
82
|
+
holott az npm ott működött (a token a `~/.npmrc`-ben áll). Épp a legfontosabb helyeken
|
|
83
|
+
(runner-konténer, hosztok) sült volna el, ahol a token szintén fájlban van.
|
|
84
|
+
2. A host-összehasonlításnál csak az **egyik oldalt** normalizáltam, a `.npmrc` viszont **záró
|
|
85
|
+
perjellel** írja a hostot (`//registry.npmjs.org/`) → sosem illeszkedett.
|
|
86
|
+
|
|
87
|
+
## 8. Kapcsolódó
|
|
88
|
+
|
|
89
|
+
A lánc, ami emiatt állt: `install` (404) → `npm-publish` (💤/❌) → `trigger-runner-cli-hot-update`
|
|
90
|
+
(💤) → **a runnereken befagyott a CLI**. Az automatizmus nem volt hibás, csak **blokkolt** — egyetlen
|
|
91
|
+
ponton. Runner-oldali próba: `fdp-devops` FR-318/FR-319 (`POST /diag/runner/registry-auth` +
|
|
92
|
+
a `fdp diag-all` `2b. RUNNER REGISTRY-AUTH` szekciója).
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# NTS integration tests (unified host)
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-03-17
|
|
4
|
-
|
|
5
|
-
## Summary
|
|
6
|
-
|
|
7
|
-
First integration tests for dynamo-nts were added to cover the unified host behaviour (static client, API base path, socket path, default 404 page).
|
|
8
|
-
|
|
9
|
-
## Additions
|
|
10
|
-
|
|
11
|
-
- **Integration mock:** [src/_modules/mock/app-integration-test.mock.ts](../src/_modules/mock/app-integration-test.mock.ts)
|
|
12
|
-
`DyNTS_AppIntegrationTest_Mock` extends `DyNTS_AppWbMock_Mock`, runs without DB, and provides:
|
|
13
|
-
- `getAppParams()` with no `dbName`/`dbUri`
|
|
14
|
-
- `getPortSettings()` with `httpPort: 54536`, `socketPath: '/socket'`
|
|
15
|
-
- `getApiBasePath()` returning `'/api'`
|
|
16
|
-
- `getStaticClientSettings()` returning `root` from static property `integrationStaticRoot` (set by the spec), no `fallbackPath` (so 404 uses default HTML)
|
|
17
|
-
|
|
18
|
-
- **Integration spec:** [src/_modules/socket/app-extended.integration.spec.ts](../src/_modules/socket/app-extended.integration.spec.ts)
|
|
19
|
-
- Uses a temp dir for static files and starts the app in `beforeAll`; stops app and removes temp dir in `afterAll`.
|
|
20
|
-
- Timeout set to 15s for this suite.
|
|
21
|
-
- Tests: app starts (`started === true`), GET non-existent path → 404 + default “Page not found” HTML, GET `/index.html` → 200 + static content, GET `/api/test-0/test-base` and `/api/test-0/test-simple` → 200 with expected body.
|
|
22
|
-
|
|
23
|
-
## Conventions
|
|
24
|
-
|
|
25
|
-
- Same test style as existing NTS specs: Jasmine, `*.spec.ts`, run via `pnpm test` (build + jasmine).
|
|
26
|
-
- Port **54536** must be free when the integration spec runs (used by the mock app).
|
|
1
|
+
# NTS integration tests (unified host)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-03-17
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
First integration tests for dynamo-nts were added to cover the unified host behaviour (static client, API base path, socket path, default 404 page).
|
|
8
|
+
|
|
9
|
+
## Additions
|
|
10
|
+
|
|
11
|
+
- **Integration mock:** [src/_modules/mock/app-integration-test.mock.ts](../src/_modules/mock/app-integration-test.mock.ts)
|
|
12
|
+
`DyNTS_AppIntegrationTest_Mock` extends `DyNTS_AppWbMock_Mock`, runs without DB, and provides:
|
|
13
|
+
- `getAppParams()` with no `dbName`/`dbUri`
|
|
14
|
+
- `getPortSettings()` with `httpPort: 54536`, `socketPath: '/socket'`
|
|
15
|
+
- `getApiBasePath()` returning `'/api'`
|
|
16
|
+
- `getStaticClientSettings()` returning `root` from static property `integrationStaticRoot` (set by the spec), no `fallbackPath` (so 404 uses default HTML)
|
|
17
|
+
|
|
18
|
+
- **Integration spec:** [src/_modules/socket/app-extended.integration.spec.ts](../src/_modules/socket/app-extended.integration.spec.ts)
|
|
19
|
+
- Uses a temp dir for static files and starts the app in `beforeAll`; stops app and removes temp dir in `afterAll`.
|
|
20
|
+
- Timeout set to 15s for this suite.
|
|
21
|
+
- Tests: app starts (`started === true`), GET non-existent path → 404 + default “Page not found” HTML, GET `/index.html` → 200 + static content, GET `/api/test-0/test-base` and `/api/test-0/test-simple` → 200 with expected body.
|
|
22
|
+
|
|
23
|
+
## Conventions
|
|
24
|
+
|
|
25
|
+
- Same test style as existing NTS specs: Jasmine, `*.spec.ts`, run via `pnpm test` (build + jasmine).
|
|
26
|
+
- Port **54536** must be free when the integration spec runs (used by the mock app).
|