@futdevpro/nts-dynamo 1.15.74 → 1.15.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.c8rc.json +26 -26
- package/.copilot/patterns.json +7 -7
- package/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.dynamo/logs/cicd-pipeline/output.log +2798 -0
- package/.dynamo/logs/cicd-pipeline/status.json +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/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 +97 -97
- package/src/_collections/sample.env +21 -21
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +24 -24
- package/src/_enums/predefined-data-types.enum.ts +16 -16
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
- package/src/_models/control-models/api-call-params.control-model.ts +142 -142
- package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
- package/src/_models/control-models/app-params.control-model.ts +136 -136
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.spec.ts +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 +216 -216
- 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 +241 -241
- package/src/_modules/server/errors/errors.controller.ts +489 -489
- 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 +240 -240
- package/src/_modules/server/server-status/server-status.controller.ts +253 -253
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +196 -196
- package/src/_services/base/archive-data.service.ts +216 -216
- package/src/_services/base/data.service.spec.ts +674 -674
- package/src/_services/base/data.service.ts +2719 -2719
- 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 +475 -475
- 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 +1747 -1747
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +96 -96
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
# BACKLOG.md
|
|
2
|
-
|
|
3
|
-
> STRICT PATTERN (MUST FOLLOW EXACTLY)
|
|
4
|
-
> - Entry header: "- [TYPE] (BL-YYYYMMDD-###) TITLE"
|
|
5
|
-
> - Immediately followed by (exact keys, colon-space, indented 2 spaces):
|
|
6
|
-
> - " status: <EMOJI status-key>"
|
|
7
|
-
> - " priority: <low|medium|high|urgent>"
|
|
8
|
-
> - " source: <user|system|assistant>"
|
|
9
|
-
> - " area: <ui|backend|infra|docs|tests|ux|general>"
|
|
10
|
-
> - " details: <single-line summary>"
|
|
11
|
-
> - NO blank line between header and fields (parser reads i+1..i+5).
|
|
12
|
-
> - One blank line between entries (readability).
|
|
13
|
-
> - TYPE values: FEATURE, BUG, IMPROVEMENT, QUESTION, RESEARCH, TASK
|
|
14
|
-
> - STATUS EMOJI: ❌ ⏳ 🔄 ✅ ⚠️ ❓
|
|
15
|
-
> - IDs: unique, format BL-YYYYMMDD-### (increment ###).
|
|
16
|
-
|
|
17
|
-
- [IMPROVEMENT] (BL-20260518-003) LVS hybrid: BM25 corpus + numberOfCandidates pre-filter cache (FR-004 followup)
|
|
18
|
-
status: ⏳ pending
|
|
19
|
-
priority: low
|
|
20
|
-
source: assistant
|
|
21
|
-
area: backend
|
|
22
|
-
details: A jelenlegi hybrid search minden vectorSearch hívásnál ujraepiti a BM25 corpus-t (O(N×|doc|)) és a cosine-t ALL candidate-re futtatja, nem csak top-N-re. ~100..10000 doc LVS-pool-ra elfogadható (ms-mp), de 100K+ doc + ~1KB/doc → ~100MB token allocation per query + GC pressure. Two-pronged optim: (1) opt-in BM25 index cache (corpus-key alapján, invalidate on data write), (2) `numberOfCandidates` érdemi haszna — cosine top-numberOfCandidates pre-filter, BM25 csak ezeken fut. CCAP RAG batch-hívásokra különösen releváns. Spec: lvs-bm25.util.ts (cache layer) + lvs-local-vector-search.data-service.ts (pre-filter branch hybrid módban).
|
|
23
|
-
|
|
24
|
-
- [IMPROVEMENT] (BL-20260518-002) LVS hybrid: Partial<hybridWeight> API ergonomics (FR-004 followup)
|
|
25
|
-
status: ⏳ pending
|
|
26
|
-
priority: low
|
|
27
|
-
source: assistant
|
|
28
|
-
area: backend
|
|
29
|
-
details: A jelenlegi `vectorSearch({ ..., hybridWeight: { vector: number; text: number } })` típus mindkét mezőt kötelezővé teszi ha `hybridWeight` megadva. Ergonomikusabb: `hybridWeight?: Partial<{ vector: number; text: number }>` — `{ vector: 0.8 }` esetén `text` default 0.5 (vagy `1 - vector` semantic-szal). Default-merge a `vectorSearch`-ben: `wVector = hybridWeight?.vector ?? 0.5`, `wText = hybridWeight?.text ?? (1 - wVector)`. Non-breaking (jelenlegi `{vector:0.7,text:0.3}` továbbra is valid). 1-2 új spec a partial override-ra. Fájl: lvs-local-vector-search.data-service.ts:130 + spec extension.
|
|
30
|
-
|
|
31
|
-
- [BUG] (BL-20260518-001) FR-002 cost-event batch test mock/assertion mismatch
|
|
32
|
-
status: ✅ done
|
|
33
|
-
priority: medium
|
|
34
|
-
source: assistant
|
|
35
|
-
area: tests
|
|
36
|
-
details: Fix opció (a) választva — mockEmbeddingsCreate.and.returnValue per-test override 2-elem data + usage:{prompt_tokens:10,total_tokens:10} a batch szándékát tükrözve. A spec-fájl `it('| createEmbeddings emits 1 cost-event with embedding-batch callType')` (oai-embedding.control-service.spec.ts:~275-290) override-ot kapott a top-level beforeEach (line 22-47) `prompt_tokens:5` default fölé. Verifikáció: `npx tsc` (build regenerate) + `npx jasmine` → 1232 specs / 0 failures. **Process root-cause azonosítva**: `spec/support/jasmine.json` `spec_dir: build/` — a jasmine a TS-fordított JS-ből fut, NEM a src-ből. A 08defee pre-commit smoke-ban `npx tsc --noEmit` (csak type-check, NEM emit) + `npx jasmine` futott → a `build/` STALE volt (az új teszt-em NEM volt benne), így a régi 1195 spec-pool fut zöldön, az új 10 spec-em sem assertelt. **5-stage cycle Test stage policy** (saját magamra): pre-commit jasmine futtatás MINDIG `npx tsc` (emit) ELŐZZE MEG, NEM `--noEmit`-tel ellenőrizni. Followup ez a process-tanulság a memóriába (feedback_test_locally_first kiegészítés).
|
|
37
|
-
|
|
38
|
-
- [FEATURE] (BL-20260517-002) Per-call cost-event hook on AI services (FR-002)
|
|
39
|
-
status: ✅ done
|
|
40
|
-
priority: high
|
|
41
|
-
source: user
|
|
42
|
-
area: backend
|
|
43
|
-
details: CCAP CT_ cost-tracking blokkoló (MP3-C, MP4-D, MP6-D). Non-breaking, additív: új `DyNTS_AI_CostEvent` interface (callType, provider, model, tokensUsed: {input, output?, total}, durationMs, issuer, timestamp, estimatedCostUsd?) + `DyNTS_AI_CostEventCallback` type alias. `DyNTS_AI_Provider_ServiceBase`-en protected `onCostEvent?` field + protected `emitCostEvent(event)` safe helper (try/catch, log warn — callback hibája NEM akasztja meg az AI-call-t). OAI emit-helyek: `DyNTS_OAI_Embedding_ControlService.createEmbedding` ('embedding-single'), `.createEmbeddings` ('embedding-batch'), `DyNTS_OAI_LLM_ServiceBase.resolveMessage` ('llm-completion' ha 1 user-msg, 'llm-chat' ha több), `DyNTS_OAI_LLM_Chat_ServiceBase.resolveConversation` ('llm-chat'). Timing: Date.now() start/end, durationMs >= 0. Provider/model auto-resolved (this.aiProvider + String(callInput.model)). Constructor opt: `DyFM_OAI_Settings & { onCostEvent? }` intersection. `estimatedCostUsd` Dynamo-szinten mindig undefined (nincs pricing registry); CCAP CT_ consumer tölti ki. 'llm-tool-use' callType jövőbeli FR. Anthropic / FDP-AI provider-ek csak az alap-osztály onCostEvent mezőt öröklik (még nem implementálnak embedding/LLM-et, saját emit-helyek külön FR). oai-vector-data.service.ts SKIPPED — fájl nem létezik (a spec hivatkozása konceptuális). 10 új jasmine teszt (4 base + 4 embedding + 2 LLM + 1 constructor). Full suite: 1195/0. Spec: __agent/feature-requests/FR-002-per-call-cost-event-hook.md (workspace).
|
|
44
|
-
|
|
45
|
-
- [FEATURE] (BL-20260517-003) LVS hybrid search: cosine + BM25 text-match (FR-004)
|
|
46
|
-
status: ✅ done
|
|
47
|
-
priority: low
|
|
48
|
-
source: user
|
|
49
|
-
area: backend
|
|
50
|
-
details: CCAP MVP3-candidate — exact-identifier matchre (UserController, REQ-RAG-MGMT-001) BM25 felülmúlja a pure cosine-t. Implementálva: LVS_Search_Mode.hybrid enum value + vectorSearch signature bővítés `hybridWeight?: {vector,text}` (default 0.5/0.5) + `textSearchKey: keyof T` (required hybrid módban). Pure-TS DyNTS_LVS_BM25_Corpus util (canonical k1=1.2 b=0.75, [\w]+ tokenizer case-insens, BM25+ IDF formula). Hybrid pipeline: cosine ALL candidate-re + BM25 ALL candidate-re + min-max [0,1] norm + weighted linear sum + sort desc + top-N slice. Throws: VS4 (missing textSearchKey) + VS5 (invalid hybridWeight). All-zero BM25 → effective cosine-only fallback. Non-breaking: új enum value + új optional params. Specs: 20/20 BM25 util + 8/8 hybrid (1232 spec total / 1 pre-existing FR-002 unrelated failure). Scope-out: MongoDB Atlas $search DB-backed variant (külön ticket), L2+hybrid kombinacio (explicit reject).
|
|
51
|
-
|
|
52
|
-
- [FEATURE] (BL-20260517-001) Generic compareData() method a DyNTS_DataService base-en (FR-001)
|
|
53
|
-
status: ✅ done
|
|
54
|
-
priority: high
|
|
55
|
-
source: user
|
|
56
|
-
area: backend
|
|
57
|
-
details: CCAP RAG-blokkoló (MP3-B, MP5-A/D/E/F) — eddig csak DyNTS_LVS_DocChunkDataService.compareChunk volt DocChunk-T-specifikus delta-detection; non-DocChunk RAG-okra (Rules/Knowledge/CodingPatterns/Memory) anti-DRY. Implementálva: `compareData(newData, oldData, options?): { result: 'equal'|'modified', changedFields? }` a base-en (sync), default deep-equal (primitive/Date/Array/POJO + Object.is fallback), DyFM_Metadata skip (_id, __created, __createdBy, __lastModified, __lastModifiedBy), `options.fields` scope-szűkít (+ skip-list-override), `options.customComparators` per-field, throw 400 (DyNTS-DS0-CD1) null input + 400 (DyNTS-DS0-CD2) üres fields. Non-breaking: új optional method; meglévő compareChunk változatlan. Spec: __agent/feature-requests/FR-001-generic-compareData.md (workspace). 15/15 új jasmine spec + 1195/0 full suite zöld.
|
|
58
|
-
|
|
59
|
-
- [FEATURE] (BL-20260417-001) Dynamo NTS kliens kiszolgálás képesség
|
|
60
|
-
status: ✅ done
|
|
61
|
-
priority: medium
|
|
62
|
-
source: user
|
|
63
|
-
area: backend
|
|
64
|
-
details: Alkalmassá kell tenni a Dynamo NTS-t, hogy kiszolgálja a klienst (frontend/client-side serving). Audit eredménye (2026-05-17): a capability MÁR implementálva van 2026-03-30 óta (commit 8ffe535) — DyNTS_App_Server.mountStaticClient() + getStaticClientSettings?() opt-in override + DyNTS_StaticClient_Settings interface (root, fallbackPath, assetCacheMaxAge, assetCacheImmutable, fallbackCacheMaxAge). Featureset: Express.static mount /-en az API route-ok után, SPA fallback sendFile-lal, asset+fallback Cache-Control (Angular hashed fájl optimalizálásra), default 404 HTML ha nincs fallbackPath, mindkét http/https express-en mount. Integration test megvan (app-extended.integration.spec.ts + app-integration-test.mock.ts). How-to doc: __documentations/2026-05-17-static-client-serving-howto.md (config matrix + example subclass + cache stratégia + edge case-ek).
|
|
65
|
-
|
|
66
|
-
- [FEATURE] (BL-20260420-001) Átfogó file-based log kezelési rendszer
|
|
67
|
-
status: ✅ done
|
|
68
|
-
priority: medium
|
|
69
|
-
source: user
|
|
70
|
-
area: backend
|
|
71
|
-
details: Config-vezérelt log rendszer, ahol egy boolean flag-gel be lehet kapcsolni a file-ba történő log írást, és további config opciókkal lehet állítani a maximum tárolt log mennyiséget (file size / rotation / retention) és egyéb log kezelési paramétereket. Implementálva (2026-05-17): DyNTS_FileLog_Service (singleton) — process.stdout/stderr.write monkey-patch, per-session log fájl, sync appendFileSync (crash-safe), config: file_log.{enabled, logDir, filenamePrefix, maxFileSizeMb, maxFiles, retentionDays, stripAnsi, includeStdout, includeStderr}. Rotation size-limitre, retention by count + age (ami előbb teljesül). Silent failure (file IO sosem blokkolja a szervert). Spec: 11 spec / 0 fail. Full suite: 1133/0. Smoke verified.
|
|
72
|
-
|
|
73
|
-
- [FEATURE] (BL-20260420-002) Admin API key alapú authentikációs réteg (env-ből)
|
|
74
|
-
status: ✅ done
|
|
75
|
-
priority: high
|
|
76
|
-
source: user
|
|
77
|
-
area: backend
|
|
78
|
-
details: Új admin authentikációs mechanizmus bevezetése, ahol az admin API key-t environment variable-ből olvassuk (pl. DYNTS_ADMIN_API_KEY), és ezzel lehet védeni az érzékeny / admin endpointokat. Implementálva (2026-05-17): DyNTS_AdminApiKey_AuthService (singleton) — preProcess `.verify(req, res)` fn opt-in átadható `DyNTS_Endpoint_Params.preProcesses`-be vagy `DyNTS_getLogsRoutingModule({ authPreProcess })`-be. Default env var DYNTS_ADMIN_API_KEY, header x-admin-api-key + Authorization Bearer fallback. Konfig: `configure({ envVarName, headerName, allowAuthorizationBearer })`. Timing-safe compare (crypto.timingSafeEqual + length-mismatch dummy compare). Hibák: 500 ha env nincs, 401 ha header hiányzik/rossz. Env minden híváskor olvasott (nem cache-elt). 15/15 spec + 1148/0 full suite + smoke verifikálva. Foundational a BL-003 (log fetch) és BL-004 (errors retrofit) entry-knek.
|
|
79
|
-
|
|
80
|
-
- [FEATURE] (BL-20260420-003) Server log file-ok lekérése admin endpointon keresztül
|
|
81
|
-
status: ✅ done
|
|
82
|
-
priority: medium
|
|
83
|
-
source: user
|
|
84
|
-
area: backend
|
|
85
|
-
details: A BL-20260420-001 file-based log rendszerre épülve egy új endpoint, amin keresztül le lehet kérni a szerverről a kiírt log file-ok tartalmát (pl. paged / range / tail módon). Implementálva (2026-05-17): DyNTS_FileLogs_Controller (GET /list + GET /file/:filename) + DyNTS_getFileLogsRoutingModule() factory + DyNTS_FileLog_Service bővítés (listLogFiles, readLogFile, getCurrentLogFilename). Olvasási módok: tail / head / range (max 10000 sor). Safeguards: filename whitelist regex prefix-szel, path traversal védelem (resolvedPath + sep ellenőrzés), 503/404/400 helyes status code-ok. Auth opt-in: `DyNTS_getFileLogsRoutingModule({ authPreProcess: adminAuth.verify })`. Default route /file-logs. 38/38 FileLog spec (24 service + 14 controller) + 1175/0 full suite + smoke 4/4 verifikálva.
|
|
86
|
-
|
|
87
|
-
- [IMPROVEMENT] (BL-20260420-004) Errors endpointok opcionális admin API key védelme
|
|
88
|
-
status: ✅ done
|
|
89
|
-
priority: medium
|
|
90
|
-
source: user
|
|
91
|
-
area: backend
|
|
92
|
-
details: A BL-20260420-002 admin API key auth réteget opcionálisan rá kell tudni húzni a meglévő DyNTS_Errors_Controller endpointjaira (errors.controller.ts) is, hogy érzékeny error-listázó / kezelő endpointok admin auth mögé kerülhessenek. Implementálva (2026-05-17): static `DyNTS_Errors_Controller.configure({ authPreProcess?, protectedEndpoints? })` — opt-in, default = no auth (backwards compatible). `authPreProcess` jelenléte esetén default mind a 8 endpoint védett, vagy `protectedEndpoints` subset-tel fine-grained kontroll. `getAuthConfig()` + `_resetAuthConfigForTesting()` segéd-fnk-ek. Per-endpoint `preProcesses: this.getPreProcessesFor(name)` thread-elve mind a 8 endpoint-konstrukcióba. 16/16 errors controller spec (11 régi backwards-compat + 5 új retrofit) + 1180/0 full suite + smoke 3/3 (default, full, subset).
|
|
1
|
+
# BACKLOG.md
|
|
2
|
+
|
|
3
|
+
> STRICT PATTERN (MUST FOLLOW EXACTLY)
|
|
4
|
+
> - Entry header: "- [TYPE] (BL-YYYYMMDD-###) TITLE"
|
|
5
|
+
> - Immediately followed by (exact keys, colon-space, indented 2 spaces):
|
|
6
|
+
> - " status: <EMOJI status-key>"
|
|
7
|
+
> - " priority: <low|medium|high|urgent>"
|
|
8
|
+
> - " source: <user|system|assistant>"
|
|
9
|
+
> - " area: <ui|backend|infra|docs|tests|ux|general>"
|
|
10
|
+
> - " details: <single-line summary>"
|
|
11
|
+
> - NO blank line between header and fields (parser reads i+1..i+5).
|
|
12
|
+
> - One blank line between entries (readability).
|
|
13
|
+
> - TYPE values: FEATURE, BUG, IMPROVEMENT, QUESTION, RESEARCH, TASK
|
|
14
|
+
> - STATUS EMOJI: ❌ ⏳ 🔄 ✅ ⚠️ ❓
|
|
15
|
+
> - IDs: unique, format BL-YYYYMMDD-### (increment ###).
|
|
16
|
+
|
|
17
|
+
- [IMPROVEMENT] (BL-20260518-003) LVS hybrid: BM25 corpus + numberOfCandidates pre-filter cache (FR-004 followup)
|
|
18
|
+
status: ⏳ pending
|
|
19
|
+
priority: low
|
|
20
|
+
source: assistant
|
|
21
|
+
area: backend
|
|
22
|
+
details: A jelenlegi hybrid search minden vectorSearch hívásnál ujraepiti a BM25 corpus-t (O(N×|doc|)) és a cosine-t ALL candidate-re futtatja, nem csak top-N-re. ~100..10000 doc LVS-pool-ra elfogadható (ms-mp), de 100K+ doc + ~1KB/doc → ~100MB token allocation per query + GC pressure. Two-pronged optim: (1) opt-in BM25 index cache (corpus-key alapján, invalidate on data write), (2) `numberOfCandidates` érdemi haszna — cosine top-numberOfCandidates pre-filter, BM25 csak ezeken fut. CCAP RAG batch-hívásokra különösen releváns. Spec: lvs-bm25.util.ts (cache layer) + lvs-local-vector-search.data-service.ts (pre-filter branch hybrid módban).
|
|
23
|
+
|
|
24
|
+
- [IMPROVEMENT] (BL-20260518-002) LVS hybrid: Partial<hybridWeight> API ergonomics (FR-004 followup)
|
|
25
|
+
status: ⏳ pending
|
|
26
|
+
priority: low
|
|
27
|
+
source: assistant
|
|
28
|
+
area: backend
|
|
29
|
+
details: A jelenlegi `vectorSearch({ ..., hybridWeight: { vector: number; text: number } })` típus mindkét mezőt kötelezővé teszi ha `hybridWeight` megadva. Ergonomikusabb: `hybridWeight?: Partial<{ vector: number; text: number }>` — `{ vector: 0.8 }` esetén `text` default 0.5 (vagy `1 - vector` semantic-szal). Default-merge a `vectorSearch`-ben: `wVector = hybridWeight?.vector ?? 0.5`, `wText = hybridWeight?.text ?? (1 - wVector)`. Non-breaking (jelenlegi `{vector:0.7,text:0.3}` továbbra is valid). 1-2 új spec a partial override-ra. Fájl: lvs-local-vector-search.data-service.ts:130 + spec extension.
|
|
30
|
+
|
|
31
|
+
- [BUG] (BL-20260518-001) FR-002 cost-event batch test mock/assertion mismatch
|
|
32
|
+
status: ✅ done
|
|
33
|
+
priority: medium
|
|
34
|
+
source: assistant
|
|
35
|
+
area: tests
|
|
36
|
+
details: Fix opció (a) választva — mockEmbeddingsCreate.and.returnValue per-test override 2-elem data + usage:{prompt_tokens:10,total_tokens:10} a batch szándékát tükrözve. A spec-fájl `it('| createEmbeddings emits 1 cost-event with embedding-batch callType')` (oai-embedding.control-service.spec.ts:~275-290) override-ot kapott a top-level beforeEach (line 22-47) `prompt_tokens:5` default fölé. Verifikáció: `npx tsc` (build regenerate) + `npx jasmine` → 1232 specs / 0 failures. **Process root-cause azonosítva**: `spec/support/jasmine.json` `spec_dir: build/` — a jasmine a TS-fordított JS-ből fut, NEM a src-ből. A 08defee pre-commit smoke-ban `npx tsc --noEmit` (csak type-check, NEM emit) + `npx jasmine` futott → a `build/` STALE volt (az új teszt-em NEM volt benne), így a régi 1195 spec-pool fut zöldön, az új 10 spec-em sem assertelt. **5-stage cycle Test stage policy** (saját magamra): pre-commit jasmine futtatás MINDIG `npx tsc` (emit) ELŐZZE MEG, NEM `--noEmit`-tel ellenőrizni. Followup ez a process-tanulság a memóriába (feedback_test_locally_first kiegészítés).
|
|
37
|
+
|
|
38
|
+
- [FEATURE] (BL-20260517-002) Per-call cost-event hook on AI services (FR-002)
|
|
39
|
+
status: ✅ done
|
|
40
|
+
priority: high
|
|
41
|
+
source: user
|
|
42
|
+
area: backend
|
|
43
|
+
details: CCAP CT_ cost-tracking blokkoló (MP3-C, MP4-D, MP6-D). Non-breaking, additív: új `DyNTS_AI_CostEvent` interface (callType, provider, model, tokensUsed: {input, output?, total}, durationMs, issuer, timestamp, estimatedCostUsd?) + `DyNTS_AI_CostEventCallback` type alias. `DyNTS_AI_Provider_ServiceBase`-en protected `onCostEvent?` field + protected `emitCostEvent(event)` safe helper (try/catch, log warn — callback hibája NEM akasztja meg az AI-call-t). OAI emit-helyek: `DyNTS_OAI_Embedding_ControlService.createEmbedding` ('embedding-single'), `.createEmbeddings` ('embedding-batch'), `DyNTS_OAI_LLM_ServiceBase.resolveMessage` ('llm-completion' ha 1 user-msg, 'llm-chat' ha több), `DyNTS_OAI_LLM_Chat_ServiceBase.resolveConversation` ('llm-chat'). Timing: Date.now() start/end, durationMs >= 0. Provider/model auto-resolved (this.aiProvider + String(callInput.model)). Constructor opt: `DyFM_OAI_Settings & { onCostEvent? }` intersection. `estimatedCostUsd` Dynamo-szinten mindig undefined (nincs pricing registry); CCAP CT_ consumer tölti ki. 'llm-tool-use' callType jövőbeli FR. Anthropic / FDP-AI provider-ek csak az alap-osztály onCostEvent mezőt öröklik (még nem implementálnak embedding/LLM-et, saját emit-helyek külön FR). oai-vector-data.service.ts SKIPPED — fájl nem létezik (a spec hivatkozása konceptuális). 10 új jasmine teszt (4 base + 4 embedding + 2 LLM + 1 constructor). Full suite: 1195/0. Spec: __agent/feature-requests/FR-002-per-call-cost-event-hook.md (workspace).
|
|
44
|
+
|
|
45
|
+
- [FEATURE] (BL-20260517-003) LVS hybrid search: cosine + BM25 text-match (FR-004)
|
|
46
|
+
status: ✅ done
|
|
47
|
+
priority: low
|
|
48
|
+
source: user
|
|
49
|
+
area: backend
|
|
50
|
+
details: CCAP MVP3-candidate — exact-identifier matchre (UserController, REQ-RAG-MGMT-001) BM25 felülmúlja a pure cosine-t. Implementálva: LVS_Search_Mode.hybrid enum value + vectorSearch signature bővítés `hybridWeight?: {vector,text}` (default 0.5/0.5) + `textSearchKey: keyof T` (required hybrid módban). Pure-TS DyNTS_LVS_BM25_Corpus util (canonical k1=1.2 b=0.75, [\w]+ tokenizer case-insens, BM25+ IDF formula). Hybrid pipeline: cosine ALL candidate-re + BM25 ALL candidate-re + min-max [0,1] norm + weighted linear sum + sort desc + top-N slice. Throws: VS4 (missing textSearchKey) + VS5 (invalid hybridWeight). All-zero BM25 → effective cosine-only fallback. Non-breaking: új enum value + új optional params. Specs: 20/20 BM25 util + 8/8 hybrid (1232 spec total / 1 pre-existing FR-002 unrelated failure). Scope-out: MongoDB Atlas $search DB-backed variant (külön ticket), L2+hybrid kombinacio (explicit reject).
|
|
51
|
+
|
|
52
|
+
- [FEATURE] (BL-20260517-001) Generic compareData() method a DyNTS_DataService base-en (FR-001)
|
|
53
|
+
status: ✅ done
|
|
54
|
+
priority: high
|
|
55
|
+
source: user
|
|
56
|
+
area: backend
|
|
57
|
+
details: CCAP RAG-blokkoló (MP3-B, MP5-A/D/E/F) — eddig csak DyNTS_LVS_DocChunkDataService.compareChunk volt DocChunk-T-specifikus delta-detection; non-DocChunk RAG-okra (Rules/Knowledge/CodingPatterns/Memory) anti-DRY. Implementálva: `compareData(newData, oldData, options?): { result: 'equal'|'modified', changedFields? }` a base-en (sync), default deep-equal (primitive/Date/Array/POJO + Object.is fallback), DyFM_Metadata skip (_id, __created, __createdBy, __lastModified, __lastModifiedBy), `options.fields` scope-szűkít (+ skip-list-override), `options.customComparators` per-field, throw 400 (DyNTS-DS0-CD1) null input + 400 (DyNTS-DS0-CD2) üres fields. Non-breaking: új optional method; meglévő compareChunk változatlan. Spec: __agent/feature-requests/FR-001-generic-compareData.md (workspace). 15/15 új jasmine spec + 1195/0 full suite zöld.
|
|
58
|
+
|
|
59
|
+
- [FEATURE] (BL-20260417-001) Dynamo NTS kliens kiszolgálás képesség
|
|
60
|
+
status: ✅ done
|
|
61
|
+
priority: medium
|
|
62
|
+
source: user
|
|
63
|
+
area: backend
|
|
64
|
+
details: Alkalmassá kell tenni a Dynamo NTS-t, hogy kiszolgálja a klienst (frontend/client-side serving). Audit eredménye (2026-05-17): a capability MÁR implementálva van 2026-03-30 óta (commit 8ffe535) — DyNTS_App_Server.mountStaticClient() + getStaticClientSettings?() opt-in override + DyNTS_StaticClient_Settings interface (root, fallbackPath, assetCacheMaxAge, assetCacheImmutable, fallbackCacheMaxAge). Featureset: Express.static mount /-en az API route-ok után, SPA fallback sendFile-lal, asset+fallback Cache-Control (Angular hashed fájl optimalizálásra), default 404 HTML ha nincs fallbackPath, mindkét http/https express-en mount. Integration test megvan (app-extended.integration.spec.ts + app-integration-test.mock.ts). How-to doc: __documentations/2026-05-17-static-client-serving-howto.md (config matrix + example subclass + cache stratégia + edge case-ek).
|
|
65
|
+
|
|
66
|
+
- [FEATURE] (BL-20260420-001) Átfogó file-based log kezelési rendszer
|
|
67
|
+
status: ✅ done
|
|
68
|
+
priority: medium
|
|
69
|
+
source: user
|
|
70
|
+
area: backend
|
|
71
|
+
details: Config-vezérelt log rendszer, ahol egy boolean flag-gel be lehet kapcsolni a file-ba történő log írást, és további config opciókkal lehet állítani a maximum tárolt log mennyiséget (file size / rotation / retention) és egyéb log kezelési paramétereket. Implementálva (2026-05-17): DyNTS_FileLog_Service (singleton) — process.stdout/stderr.write monkey-patch, per-session log fájl, sync appendFileSync (crash-safe), config: file_log.{enabled, logDir, filenamePrefix, maxFileSizeMb, maxFiles, retentionDays, stripAnsi, includeStdout, includeStderr}. Rotation size-limitre, retention by count + age (ami előbb teljesül). Silent failure (file IO sosem blokkolja a szervert). Spec: 11 spec / 0 fail. Full suite: 1133/0. Smoke verified.
|
|
72
|
+
|
|
73
|
+
- [FEATURE] (BL-20260420-002) Admin API key alapú authentikációs réteg (env-ből)
|
|
74
|
+
status: ✅ done
|
|
75
|
+
priority: high
|
|
76
|
+
source: user
|
|
77
|
+
area: backend
|
|
78
|
+
details: Új admin authentikációs mechanizmus bevezetése, ahol az admin API key-t environment variable-ből olvassuk (pl. DYNTS_ADMIN_API_KEY), és ezzel lehet védeni az érzékeny / admin endpointokat. Implementálva (2026-05-17): DyNTS_AdminApiKey_AuthService (singleton) — preProcess `.verify(req, res)` fn opt-in átadható `DyNTS_Endpoint_Params.preProcesses`-be vagy `DyNTS_getLogsRoutingModule({ authPreProcess })`-be. Default env var DYNTS_ADMIN_API_KEY, header x-admin-api-key + Authorization Bearer fallback. Konfig: `configure({ envVarName, headerName, allowAuthorizationBearer })`. Timing-safe compare (crypto.timingSafeEqual + length-mismatch dummy compare). Hibák: 500 ha env nincs, 401 ha header hiányzik/rossz. Env minden híváskor olvasott (nem cache-elt). 15/15 spec + 1148/0 full suite + smoke verifikálva. Foundational a BL-003 (log fetch) és BL-004 (errors retrofit) entry-knek.
|
|
79
|
+
|
|
80
|
+
- [FEATURE] (BL-20260420-003) Server log file-ok lekérése admin endpointon keresztül
|
|
81
|
+
status: ✅ done
|
|
82
|
+
priority: medium
|
|
83
|
+
source: user
|
|
84
|
+
area: backend
|
|
85
|
+
details: A BL-20260420-001 file-based log rendszerre épülve egy új endpoint, amin keresztül le lehet kérni a szerverről a kiírt log file-ok tartalmát (pl. paged / range / tail módon). Implementálva (2026-05-17): DyNTS_FileLogs_Controller (GET /list + GET /file/:filename) + DyNTS_getFileLogsRoutingModule() factory + DyNTS_FileLog_Service bővítés (listLogFiles, readLogFile, getCurrentLogFilename). Olvasási módok: tail / head / range (max 10000 sor). Safeguards: filename whitelist regex prefix-szel, path traversal védelem (resolvedPath + sep ellenőrzés), 503/404/400 helyes status code-ok. Auth opt-in: `DyNTS_getFileLogsRoutingModule({ authPreProcess: adminAuth.verify })`. Default route /file-logs. 38/38 FileLog spec (24 service + 14 controller) + 1175/0 full suite + smoke 4/4 verifikálva.
|
|
86
|
+
|
|
87
|
+
- [IMPROVEMENT] (BL-20260420-004) Errors endpointok opcionális admin API key védelme
|
|
88
|
+
status: ✅ done
|
|
89
|
+
priority: medium
|
|
90
|
+
source: user
|
|
91
|
+
area: backend
|
|
92
|
+
details: A BL-20260420-002 admin API key auth réteget opcionálisan rá kell tudni húzni a meglévő DyNTS_Errors_Controller endpointjaira (errors.controller.ts) is, hogy érzékeny error-listázó / kezelő endpointok admin auth mögé kerülhessenek. Implementálva (2026-05-17): static `DyNTS_Errors_Controller.configure({ authPreProcess?, protectedEndpoints? })` — opt-in, default = no auth (backwards compatible). `authPreProcess` jelenléte esetén default mind a 8 endpoint védett, vagy `protectedEndpoints` subset-tel fine-grained kontroll. `getAuthConfig()` + `_resetAuthConfigForTesting()` segéd-fnk-ek. Per-endpoint `preProcesses: this.getPreProcessesFor(name)` thread-elve mind a 8 endpoint-konstrukcióba. 16/16 errors controller spec (11 régi backwards-compat + 5 új retrofit) + 1180/0 full suite + smoke 3/3 (default, full, subset).
|
package/_specifications/TODO.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# TODO.md
|
|
2
|
-
|
|
3
|
-
> STRICT PATTERN (MUST FOLLOW EXACTLY)
|
|
4
|
-
> - Entry header: "- EMOJI (TD-YYYYMMDD-###) TITLE"
|
|
5
|
-
> - Immediately followed by (exact keys, colon-space, indented 2 spaces):
|
|
6
|
-
> - " priority: <low|medium|high|urgent>"
|
|
7
|
-
> - " area: <ui|backend|infra|docs|tests|ux|general>"
|
|
8
|
-
> - " source: <user|system|assistant|spec-file.md>"
|
|
9
|
-
> - " details: <single-line description>"
|
|
10
|
-
> - NO blank line between header and fields (parser reads i+1..i+4).
|
|
11
|
-
> - One blank line between entries (readability).
|
|
12
|
-
> - EMOJI values: ❌ ⏳ 🔄 🔍 ✅ ⚠️ ❓
|
|
13
|
-
> - IDs: unique per project, format TD-YYYYMMDD-### (increment ###).
|
|
14
|
-
> - Group entries by ## headings (spec file / feature area).
|
|
15
|
-
> - One deliverable per entry (atomic tasks).
|
|
1
|
+
# TODO.md
|
|
2
|
+
|
|
3
|
+
> STRICT PATTERN (MUST FOLLOW EXACTLY)
|
|
4
|
+
> - Entry header: "- EMOJI (TD-YYYYMMDD-###) TITLE"
|
|
5
|
+
> - Immediately followed by (exact keys, colon-space, indented 2 spaces):
|
|
6
|
+
> - " priority: <low|medium|high|urgent>"
|
|
7
|
+
> - " area: <ui|backend|infra|docs|tests|ux|general>"
|
|
8
|
+
> - " source: <user|system|assistant|spec-file.md>"
|
|
9
|
+
> - " details: <single-line description>"
|
|
10
|
+
> - NO blank line between header and fields (parser reads i+1..i+4).
|
|
11
|
+
> - One blank line between entries (readability).
|
|
12
|
+
> - EMOJI values: ❌ ⏳ 🔄 🔍 ✅ ⚠️ ❓
|
|
13
|
+
> - IDs: unique per project, format TD-YYYYMMDD-### (increment ###).
|
|
14
|
+
> - Group entries by ## headings (spec file / feature area).
|
|
15
|
+
> - One deliverable per entry (atomic tasks).
|
package/_specifications/agent.md
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Agent
|
|
6
|
-
|
|
7
|
-
0. A conversation listát megvágjuk, hogy beleférjen a chat-LLM hívásba (maxTokens)
|
|
8
|
-
|
|
9
|
-
1. Egy elő LLM kérdésben beköthetjük a Routine-okat (a routinok afféle felülírók, megelőzik az utolsó üzenetet, de közben meg kell oldjuk valahogy, hogy az üzenet is feldolgozásra kerüljön, és a routine is érvényesüljön ha kell (van, hogy csak hozzá kell adjunk valamit a parancshoz))
|
|
10
|
-
- mik alapján keresünk routine-okat:
|
|
11
|
-
- session doing/goal/intent alapú micro routine-ok (vektor keresés; mindig amikor...)
|
|
12
|
-
- egyéb micro routine-ok (vektor keresés; mindig amikor...)
|
|
13
|
-
- idő alapú triggering
|
|
14
|
-
- ???
|
|
15
|
-
|
|
16
|
-
2. Egy nagy LLM kérdésben megkérdezzük, hogy az utolsó user message teljesítéséhez...
|
|
17
|
-
- milyen operation-ök kellenek
|
|
18
|
-
- itt felsoroljuk az elérhető operation-öket
|
|
19
|
-
- Ez lehet több is.
|
|
20
|
-
- A: NONE | (operation-with-intent or get-operation-group-with-intent) list
|
|
21
|
-
- kell-e a kódbázisban keresni
|
|
22
|
-
- itt felsoroljuk az elérhető projekt-eket
|
|
23
|
-
- ha igen, mire kell vektorkeressünk
|
|
24
|
-
- A: NONE | vektor search keywords
|
|
25
|
-
- kell-e a dokumentumok között keresni keresni
|
|
26
|
-
- itt felsoroljuk az elérhető dokumentumokat/dokumentum tárakat (attól függően, hogy ne legyen túl sok opció)
|
|
27
|
-
- ha igen, mire kell vektorkeressünk
|
|
28
|
-
- A: NONE | vektor search keywords
|
|
29
|
-
- kell-e a DB context-ben keresni
|
|
30
|
-
- ha igen, mire kell vektorkeressünk
|
|
31
|
-
- A: NONE | vektor search keywords
|
|
32
|
-
- kell-e valamilyen specifikus context adat
|
|
33
|
-
- itt felsoroljuk az elérhető specifikus context adatokat
|
|
34
|
-
- ezek olyan speciális adatok amik fixek, és direkt method-okkal adjuk meg őket,
|
|
35
|
-
- pontos dátum-idő
|
|
36
|
-
- user neve/nickneve/amin szólítsa a bot
|
|
37
|
-
- user data
|
|
38
|
-
- user settings
|
|
39
|
-
- ... TODO: add more special context data keys
|
|
40
|
-
- A: NONE | special context data key
|
|
41
|
-
Mindegyik input lehet NONE, ami azt jelzi, hogy nincs rá szükség
|
|
42
|
-
|
|
43
|
-
3. Ha kell, bármilyen info, akkor először azokat gyűjtjük össze
|
|
44
|
-
- a talált info-kat beletesszük a beszélgetésbe mint assistant message-ek
|
|
45
|
-
(ezek valójában nem kerülnek elküldésre, a következő üzenet érkezésekkor nem fognak rendelkezésre állni, de elmentjük a db-be az egész conversation listát)
|
|
46
|
-
|
|
47
|
-
4. Ha kell, akkor lekérjük a kért operation-group-okat és abból újabb LLM kérdéssel összeszedjük a szükséges operation-öket
|
|
48
|
-
- az operation-group-okat különféle módon szerezhetjük be
|
|
49
|
-
- Group-olt operation-ök listázása
|
|
50
|
-
- MCP Server-ről kérés
|
|
51
|
-
- ... TODO: is there any more operation-group sources?
|
|
52
|
-
|
|
53
|
-
4. Ha kell, akkor végrehajtjuk a kért operation-öket
|
|
54
|
-
- a végrehajtás eredményéről röviden beszámolunk/értesítjük a user-t, hogy mit sikerült és nem sikerült csinálni
|
|
55
|
-
(nem csak a jelenlegi conversation listába tesszük be, hanem tényleg el is küldjük a user-nek egy message-et)
|
|
56
|
-
|
|
57
|
-
5. Egy újabb LLM kérdéssel kiszedjük az új context-et aminek be kell kerülnie a DB context-be
|
|
58
|
-
- ha kell akkor a mentendő context-et kell visszaadja, ha nem akkor a NONE
|
|
59
|
-
|
|
60
|
-
6. Megválaszoljuk a user üzenetét
|
|
61
|
-
|
|
62
|
-
7. A végeredményt elmentjük a DB-be
|
|
63
|
-
- minden llm kérdés-választ,
|
|
64
|
-
- és a result-okkal feltáplált conversation listát
|
|
65
|
-
- a vektor keresések eredményeit
|
|
66
|
-
- (not yet): ha nem messaging platformon vagyunk (discord/slack/teams), akkor chat session-ökbe mentjük az adatokat
|
|
67
|
-
- ebben az esetben külön kell válogatni azokat a message-eket amiket elküldtünk a user-nek (conversation) attól amik az operation-ök végrehajtása során keletkeznek (logs)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## Operation-ök
|
|
71
|
-
- az operation-ök lista kérésekor hangsúlyozzuk az LLM-nek, hogy mindig próbáljuk a leg apróbb lépésekből összeállítani a listát
|
|
72
|
-
- minden operation úgy működik mint egy MCP Server kérés, adott egy input schema
|
|
73
|
-
- az input-ot a conversation alapján állítjuk össze, úgy hogy az operation intent kerül bele a conversation-be mielőtt egy LLM hívással megpróbáljuk összeállítani az inputot
|
|
74
|
-
- az input-ok összeállításakor felhívjuk az LLM figyelmét, hogy a mentendő módosítandó adatokat csak akkor manipulálja, ha azt a user kérte, egyébként használjuk a user szava járását
|
|
75
|
-
- az operation-ok mindig string-et kell visszaadjanak ami szintén a conversation-be kerül bele (ha obj-et kapunk vissza, akkor azt egyszerűen string-gé alakítjuk)
|
|
76
|
-
- egyes operation-ök több lépéses operation-routine-okként hajtandóak végre (az LLM csak egy operation-t választ ki, de ha az egy operation-routine, akkor azokat hajtjuk végre sorban)
|
|
77
|
-
|
|
78
|
-
## Routine-ok
|
|
79
|
-
|
|
80
|
-
### Időalapú és Triggered routine-ok
|
|
81
|
-
- olyan routine-ok amiket egy adott időpontban/idő után/időközönként hajtunk végre
|
|
82
|
-
- ezek lehetnek olyan routine-ok is amiket nem egy felhasználói üzenet indít, hanem egy időpont, és ez után automatikusan üzenetet küld egy beállított default csatornára
|
|
83
|
-
- lehetnek webhook trigger alapúak is
|
|
84
|
-
- ezek lehetnek továbbá complex rutine-ok amik feladat folyamatokat indukálnak
|
|
85
|
-
pl.:
|
|
86
|
-
- minden reggel nézd át az email-eket és az üzeneteket és amire tudsz válaszolj, amire pedig nem, azt beszéljük át
|
|
87
|
-
- minden reggel gyűjtsd össze az aktuális top prio feladatokat és segíts megtervezni a napomat
|
|
88
|
-
- ha új task kerül a rendszerbe, tervezd meg a megvalósítást (de mindenképpen egyeztess róla a PO-val)
|
|
89
|
-
- az új task resolution plan-eket mindig validáltatssuk le a PO-val
|
|
90
|
-
- mindig amikor új PR kerül fel az xy repo-ba akkor review-zz
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
### Micro routine-ok
|
|
95
|
-
- olyan routine-ok amiket módosítanak a user input-on,
|
|
96
|
-
pl: mindig amikor kódokat generálunk, akkor figyeljünk oda, a hosszú sorok mindig törve legyenek (ilyenkor ezt mindig hozzáfűzzük a user message-hez)
|
|
97
|
-
- a micro routine-okat a DB-be mentjük, a kulcs adatokat vektorizálva
|
|
98
|
-
Adatok:
|
|
99
|
-
- goal: mindig amikor...
|
|
100
|
-
|
|
101
|
-
### Egyéb
|
|
102
|
-
- meg kell keresnünk azt a pontot és értelmezést, hogy hogyan tudunk segíteni a user-nek a gondolatai megfogalmazásában
|
|
103
|
-
(talán a "2. Egy nagy LLM kérdés"-be bele vehetnénk, hogy ha a user bizonytalannak tűnik, vagy nem összeszedettnek akkor javaslunk egy összeszedettebb inputot, amit ha elfogad, akkor úgy kezeljük mintha a user küldte volna)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
PROMPT
|
|
111
|
-
Az NTS-be szeretnénk implementálni egy Operation Handler Agent-öt, ami ugye az NTS package-be fog bekerülni egy saját modulba, és ezt a modult fogjuk használni a projektek implementálásakor úgy, hogy az IO-Control-ba handleMessage-be kötjük be.
|
|
112
|
-
|
|
113
|
-
Úgy kéne beépíteni ezt az Agent-öt, ahogy most is be van építve. Szóval ez az Agent modul, ez magában lesz. Megcsinál mindent, amit leírtunk ebbe a dokumentumban, specifikációba. Azt már a projekt implementálásnál kell majd megadni, hogy a socket.io-ból behívjuk az agent-öt.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
ezt a CCAP-ba az agent-2 module-ba fejlesztjük le mint POC/prototípus (not like agent module)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// TODO: we need to create a solution to create a maxed LLM call with 50-50% of the logs and the conversation
|
|
128
|
-
// the logs will go to the userPrompt, after the conversation, but we will need to cut them equally beside the system and control prompt (last user prompt)
|
|
129
|
-
// for the part that is before (both in log and conversation) we will need to be merged to a summary that is added as first (oldest element)
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Agent
|
|
6
|
+
|
|
7
|
+
0. A conversation listát megvágjuk, hogy beleférjen a chat-LLM hívásba (maxTokens)
|
|
8
|
+
|
|
9
|
+
1. Egy elő LLM kérdésben beköthetjük a Routine-okat (a routinok afféle felülírók, megelőzik az utolsó üzenetet, de közben meg kell oldjuk valahogy, hogy az üzenet is feldolgozásra kerüljön, és a routine is érvényesüljön ha kell (van, hogy csak hozzá kell adjunk valamit a parancshoz))
|
|
10
|
+
- mik alapján keresünk routine-okat:
|
|
11
|
+
- session doing/goal/intent alapú micro routine-ok (vektor keresés; mindig amikor...)
|
|
12
|
+
- egyéb micro routine-ok (vektor keresés; mindig amikor...)
|
|
13
|
+
- idő alapú triggering
|
|
14
|
+
- ???
|
|
15
|
+
|
|
16
|
+
2. Egy nagy LLM kérdésben megkérdezzük, hogy az utolsó user message teljesítéséhez...
|
|
17
|
+
- milyen operation-ök kellenek
|
|
18
|
+
- itt felsoroljuk az elérhető operation-öket
|
|
19
|
+
- Ez lehet több is.
|
|
20
|
+
- A: NONE | (operation-with-intent or get-operation-group-with-intent) list
|
|
21
|
+
- kell-e a kódbázisban keresni
|
|
22
|
+
- itt felsoroljuk az elérhető projekt-eket
|
|
23
|
+
- ha igen, mire kell vektorkeressünk
|
|
24
|
+
- A: NONE | vektor search keywords
|
|
25
|
+
- kell-e a dokumentumok között keresni keresni
|
|
26
|
+
- itt felsoroljuk az elérhető dokumentumokat/dokumentum tárakat (attól függően, hogy ne legyen túl sok opció)
|
|
27
|
+
- ha igen, mire kell vektorkeressünk
|
|
28
|
+
- A: NONE | vektor search keywords
|
|
29
|
+
- kell-e a DB context-ben keresni
|
|
30
|
+
- ha igen, mire kell vektorkeressünk
|
|
31
|
+
- A: NONE | vektor search keywords
|
|
32
|
+
- kell-e valamilyen specifikus context adat
|
|
33
|
+
- itt felsoroljuk az elérhető specifikus context adatokat
|
|
34
|
+
- ezek olyan speciális adatok amik fixek, és direkt method-okkal adjuk meg őket,
|
|
35
|
+
- pontos dátum-idő
|
|
36
|
+
- user neve/nickneve/amin szólítsa a bot
|
|
37
|
+
- user data
|
|
38
|
+
- user settings
|
|
39
|
+
- ... TODO: add more special context data keys
|
|
40
|
+
- A: NONE | special context data key
|
|
41
|
+
Mindegyik input lehet NONE, ami azt jelzi, hogy nincs rá szükség
|
|
42
|
+
|
|
43
|
+
3. Ha kell, bármilyen info, akkor először azokat gyűjtjük össze
|
|
44
|
+
- a talált info-kat beletesszük a beszélgetésbe mint assistant message-ek
|
|
45
|
+
(ezek valójában nem kerülnek elküldésre, a következő üzenet érkezésekkor nem fognak rendelkezésre állni, de elmentjük a db-be az egész conversation listát)
|
|
46
|
+
|
|
47
|
+
4. Ha kell, akkor lekérjük a kért operation-group-okat és abból újabb LLM kérdéssel összeszedjük a szükséges operation-öket
|
|
48
|
+
- az operation-group-okat különféle módon szerezhetjük be
|
|
49
|
+
- Group-olt operation-ök listázása
|
|
50
|
+
- MCP Server-ről kérés
|
|
51
|
+
- ... TODO: is there any more operation-group sources?
|
|
52
|
+
|
|
53
|
+
4. Ha kell, akkor végrehajtjuk a kért operation-öket
|
|
54
|
+
- a végrehajtás eredményéről röviden beszámolunk/értesítjük a user-t, hogy mit sikerült és nem sikerült csinálni
|
|
55
|
+
(nem csak a jelenlegi conversation listába tesszük be, hanem tényleg el is küldjük a user-nek egy message-et)
|
|
56
|
+
|
|
57
|
+
5. Egy újabb LLM kérdéssel kiszedjük az új context-et aminek be kell kerülnie a DB context-be
|
|
58
|
+
- ha kell akkor a mentendő context-et kell visszaadja, ha nem akkor a NONE
|
|
59
|
+
|
|
60
|
+
6. Megválaszoljuk a user üzenetét
|
|
61
|
+
|
|
62
|
+
7. A végeredményt elmentjük a DB-be
|
|
63
|
+
- minden llm kérdés-választ,
|
|
64
|
+
- és a result-okkal feltáplált conversation listát
|
|
65
|
+
- a vektor keresések eredményeit
|
|
66
|
+
- (not yet): ha nem messaging platformon vagyunk (discord/slack/teams), akkor chat session-ökbe mentjük az adatokat
|
|
67
|
+
- ebben az esetben külön kell válogatni azokat a message-eket amiket elküldtünk a user-nek (conversation) attól amik az operation-ök végrehajtása során keletkeznek (logs)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Operation-ök
|
|
71
|
+
- az operation-ök lista kérésekor hangsúlyozzuk az LLM-nek, hogy mindig próbáljuk a leg apróbb lépésekből összeállítani a listát
|
|
72
|
+
- minden operation úgy működik mint egy MCP Server kérés, adott egy input schema
|
|
73
|
+
- az input-ot a conversation alapján állítjuk össze, úgy hogy az operation intent kerül bele a conversation-be mielőtt egy LLM hívással megpróbáljuk összeállítani az inputot
|
|
74
|
+
- az input-ok összeállításakor felhívjuk az LLM figyelmét, hogy a mentendő módosítandó adatokat csak akkor manipulálja, ha azt a user kérte, egyébként használjuk a user szava járását
|
|
75
|
+
- az operation-ok mindig string-et kell visszaadjanak ami szintén a conversation-be kerül bele (ha obj-et kapunk vissza, akkor azt egyszerűen string-gé alakítjuk)
|
|
76
|
+
- egyes operation-ök több lépéses operation-routine-okként hajtandóak végre (az LLM csak egy operation-t választ ki, de ha az egy operation-routine, akkor azokat hajtjuk végre sorban)
|
|
77
|
+
|
|
78
|
+
## Routine-ok
|
|
79
|
+
|
|
80
|
+
### Időalapú és Triggered routine-ok
|
|
81
|
+
- olyan routine-ok amiket egy adott időpontban/idő után/időközönként hajtunk végre
|
|
82
|
+
- ezek lehetnek olyan routine-ok is amiket nem egy felhasználói üzenet indít, hanem egy időpont, és ez után automatikusan üzenetet küld egy beállított default csatornára
|
|
83
|
+
- lehetnek webhook trigger alapúak is
|
|
84
|
+
- ezek lehetnek továbbá complex rutine-ok amik feladat folyamatokat indukálnak
|
|
85
|
+
pl.:
|
|
86
|
+
- minden reggel nézd át az email-eket és az üzeneteket és amire tudsz válaszolj, amire pedig nem, azt beszéljük át
|
|
87
|
+
- minden reggel gyűjtsd össze az aktuális top prio feladatokat és segíts megtervezni a napomat
|
|
88
|
+
- ha új task kerül a rendszerbe, tervezd meg a megvalósítást (de mindenképpen egyeztess róla a PO-val)
|
|
89
|
+
- az új task resolution plan-eket mindig validáltatssuk le a PO-val
|
|
90
|
+
- mindig amikor új PR kerül fel az xy repo-ba akkor review-zz
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### Micro routine-ok
|
|
95
|
+
- olyan routine-ok amiket módosítanak a user input-on,
|
|
96
|
+
pl: mindig amikor kódokat generálunk, akkor figyeljünk oda, a hosszú sorok mindig törve legyenek (ilyenkor ezt mindig hozzáfűzzük a user message-hez)
|
|
97
|
+
- a micro routine-okat a DB-be mentjük, a kulcs adatokat vektorizálva
|
|
98
|
+
Adatok:
|
|
99
|
+
- goal: mindig amikor...
|
|
100
|
+
|
|
101
|
+
### Egyéb
|
|
102
|
+
- meg kell keresnünk azt a pontot és értelmezést, hogy hogyan tudunk segíteni a user-nek a gondolatai megfogalmazásában
|
|
103
|
+
(talán a "2. Egy nagy LLM kérdés"-be bele vehetnénk, hogy ha a user bizonytalannak tűnik, vagy nem összeszedettnek akkor javaslunk egy összeszedettebb inputot, amit ha elfogad, akkor úgy kezeljük mintha a user küldte volna)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
PROMPT
|
|
111
|
+
Az NTS-be szeretnénk implementálni egy Operation Handler Agent-öt, ami ugye az NTS package-be fog bekerülni egy saját modulba, és ezt a modult fogjuk használni a projektek implementálásakor úgy, hogy az IO-Control-ba handleMessage-be kötjük be.
|
|
112
|
+
|
|
113
|
+
Úgy kéne beépíteni ezt az Agent-öt, ahogy most is be van építve. Szóval ez az Agent modul, ez magában lesz. Megcsinál mindent, amit leírtunk ebbe a dokumentumban, specifikációba. Azt már a projekt implementálásnál kell majd megadni, hogy a socket.io-ból behívjuk az agent-öt.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
ezt a CCAP-ba az agent-2 module-ba fejlesztjük le mint POC/prototípus (not like agent module)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
// TODO: we need to create a solution to create a maxed LLM call with 50-50% of the logs and the conversation
|
|
128
|
+
// the logs will go to the userPrompt, after the conversation, but we will need to cut them equally beside the system and control prompt (last user prompt)
|
|
129
|
+
// for the part that is before (both in log and conversation) we will need to be merged to a summary that is added as first (oldest element)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
package/eslint.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const ntsPackageConfig = require('@futdevpro/dynamo-eslint/nts-package');
|
|
2
|
-
|
|
3
|
-
module.exports = ntsPackageConfig;
|
|
1
|
+
const ntsPackageConfig = require('@futdevpro/dynamo-eslint/nts-package');
|
|
2
|
+
|
|
3
|
+
module.exports = ntsPackageConfig;
|
package/nodemon.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"exec": "title Dynamo NTS && npm run nodemon-run",
|
|
3
|
-
"restartable": "rs",
|
|
4
|
-
"ext": "ts,json,tgz",
|
|
5
|
-
"delay": "5000",
|
|
6
|
-
"verbose": false,
|
|
7
|
-
"legacyWatch": false,
|
|
8
|
-
"watch": [
|
|
9
|
-
"./src/*",
|
|
10
|
-
"./package.json",
|
|
11
|
-
"./tsconfig.json",
|
|
12
|
-
"../tgz-collection/dynamo-fsm/*"
|
|
13
|
-
],
|
|
14
|
-
"ignore": [
|
|
15
|
-
"./node_modules",
|
|
16
|
-
"./build"
|
|
17
|
-
],
|
|
18
|
-
"events": {
|
|
19
|
-
"start": "echo 🚀 Starting nodemon...",
|
|
20
|
-
"restart": "echo 🔄 Restarting due to changes...",
|
|
21
|
-
"crash": "echo 💥 Application crashed!",
|
|
22
|
-
"exit": "echo 🛑 Application stopped!"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"exec": "title Dynamo NTS && npm run nodemon-run",
|
|
3
|
+
"restartable": "rs",
|
|
4
|
+
"ext": "ts,json,tgz",
|
|
5
|
+
"delay": "5000",
|
|
6
|
+
"verbose": false,
|
|
7
|
+
"legacyWatch": false,
|
|
8
|
+
"watch": [
|
|
9
|
+
"./src/*",
|
|
10
|
+
"./package.json",
|
|
11
|
+
"./tsconfig.json",
|
|
12
|
+
"../tgz-collection/dynamo-fsm/*"
|
|
13
|
+
],
|
|
14
|
+
"ignore": [
|
|
15
|
+
"./node_modules",
|
|
16
|
+
"./build"
|
|
17
|
+
],
|
|
18
|
+
"events": {
|
|
19
|
+
"start": "echo 🚀 Starting nodemon...",
|
|
20
|
+
"restart": "echo 🔄 Restarting due to changes...",
|
|
21
|
+
"crash": "echo 💥 Application crashed!",
|
|
22
|
+
"exit": "echo 🛑 Application stopped!"
|
|
23
|
+
}
|
|
24
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.75",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "server-package",
|
|
@@ -351,7 +351,7 @@
|
|
|
351
351
|
"@anthropic-ai/sdk": "~0.39.0",
|
|
352
352
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
353
353
|
"better-sqlite3": "~12.4.1",
|
|
354
|
-
"@futdevpro/fsm-dynamo": "1.16.
|
|
354
|
+
"@futdevpro/fsm-dynamo": "1.16.9",
|
|
355
355
|
"@types/express": "4.17.21",
|
|
356
356
|
"@types/geoip-lite": "~1.4.1",
|
|
357
357
|
"@types/node": "~24.1.0",
|
package/pnpm-workspace.yaml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
allowBuilds:
|
|
2
|
-
'@discordjs/opus': false
|
|
3
|
-
better-sqlite3: true
|
|
4
|
-
minimumReleaseAgeExclude:
|
|
5
|
-
- '@futdevpro/*'
|
|
1
|
+
allowBuilds:
|
|
2
|
+
'@discordjs/opus': false
|
|
3
|
+
better-sqlite3: true
|
|
4
|
+
minimumReleaseAgeExclude:
|
|
5
|
+
- '@futdevpro/*'
|