@futdevpro/nts-dynamo 1.15.15 → 1.15.17

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.
Files changed (348) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  7. package/.cursor/rules/_ag_frontend.mdc +39 -39
  8. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  9. package/.cursor/rules/_ag_naming.mdc +115 -115
  10. package/.cursor/rules/_ag_should-be.mdc +6 -6
  11. package/.cursor/rules/ai_development_guide.md +60 -60
  12. package/.cursor/rules/cursor-rules.md +160 -160
  13. package/.cursor/rules/default-command.mdc +464 -464
  14. package/.cursor/rules/error_code_pattern.md +39 -39
  15. package/.cursor/rules/saved rule mcp server use.md +15 -15
  16. package/.dynamo/version-bump.config.json +5 -0
  17. package/.github/workflows/main.yml +426 -393
  18. package/.husky/pre-commit +1 -0
  19. package/.vscode/settings.json +10 -10
  20. package/HOWTO.md +15 -15
  21. package/LICENSE +21 -21
  22. package/__documentations/2026-04-28-logs-module.md +49 -0
  23. package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
  24. package/_specifications/BACKLOG.md +50 -50
  25. package/_specifications/TODO.md +15 -15
  26. package/_specifications/agent.md +138 -138
  27. package/eslint.config.js +3 -3
  28. package/nodemon.json +24 -24
  29. package/package.json +343 -362
  30. package/pipeline.cicd.config.json +152 -0
  31. package/pnpm-workspace.yaml +2 -0
  32. package/scripts/run-coverage-tests.js +28 -28
  33. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  34. package/spec/support/helpers/ts-node-helper.js +93 -93
  35. package/spec/support/jasmine.coverage.json +24 -24
  36. package/spec/support/jasmine.json +24 -24
  37. package/src/_collections/archive.util.spec.ts +57 -57
  38. package/src/_collections/archive.util.ts +18 -18
  39. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  40. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  41. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  42. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  43. package/src/_collections/default-not-found-page.const.ts +22 -22
  44. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  45. package/src/_collections/default-socket-path.const.ts +2 -2
  46. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  47. package/src/_collections/get-environment-settings.util.ts +48 -48
  48. package/src/_collections/sample.env +21 -21
  49. package/src/_collections/star.controller.spec.ts +224 -224
  50. package/src/_collections/star.controller.ts +129 -129
  51. package/src/_enums/data-model-type.enum.ts +14 -14
  52. package/src/_enums/data-service-function.enum.ts +24 -24
  53. package/src/_enums/predefined-data-types.enum.ts +16 -16
  54. package/src/_enums/route-security.enum.ts +12 -12
  55. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  56. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  57. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  58. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  59. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  60. package/src/_models/control-models/app-params.control-model.ts +136 -136
  61. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  62. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  63. package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -578
  64. package/src/_models/control-models/endpoint-params.control-model.ts +526 -526
  65. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  66. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  67. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  68. package/src/_models/control-models/system-control.control-model.ts +12 -12
  69. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  70. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  71. package/src/_models/interfaces/global-log-settings.interface.ts +108 -108
  72. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  73. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  74. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  75. package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
  76. package/src/_models/types/db-update.type.ts +100 -100
  77. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  78. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  79. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  80. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  81. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  82. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  83. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  84. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  85. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  86. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  87. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  88. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  89. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  90. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  91. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  92. package/src/_modules/ai/_modules/document-ai/index.ts +28 -28
  93. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  94. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  95. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  96. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  97. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  98. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  99. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  100. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  101. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  102. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  103. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  104. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  105. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  106. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +240 -240
  107. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +98 -98
  108. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  109. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +615 -615
  110. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +437 -437
  111. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +833 -833
  112. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  113. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  114. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  115. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  116. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  117. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  118. package/src/_modules/ai/_services/ai-llm.service-base.ts +332 -332
  119. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +79 -79
  120. package/src/_modules/ai/_services/ai-provider.service-base.ts +29 -29
  121. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  122. package/src/_modules/ai/index.ts +13 -13
  123. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  124. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  125. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  126. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  127. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  128. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  129. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  130. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  131. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  132. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  133. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  134. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  135. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  136. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  137. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  138. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  139. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  140. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  141. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  142. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  143. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  144. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  145. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  146. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  147. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  148. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  149. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  150. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  151. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  152. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  153. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  154. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  155. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  156. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  157. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  158. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  159. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  160. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  161. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  162. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  163. package/src/_modules/custom-data/index.ts +9 -9
  164. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  165. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  166. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  167. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  168. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  169. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  170. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  171. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  172. package/src/_modules/defaults/index.ts +17 -17
  173. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  174. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  175. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  176. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  177. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  178. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  179. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  180. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  181. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  182. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  183. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  184. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  185. package/src/_modules/discord-assistant/index.ts +38 -38
  186. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  187. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  188. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  189. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  190. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  191. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  192. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  193. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  194. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  195. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  196. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  197. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  198. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  199. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  200. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  201. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  202. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  203. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  204. package/src/_modules/discord-bot/index.ts +36 -36
  205. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +19 -19
  206. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  207. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  208. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  209. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +345 -345
  210. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +330 -330
  211. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
  212. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
  213. package/src/_modules/local-vector-search/index.ts +11 -11
  214. package/src/_modules/messaging/README.md +354 -354
  215. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  216. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  217. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  218. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  219. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  220. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  221. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  222. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  223. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  224. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  225. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  226. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  227. package/src/_modules/messaging/index.ts +30 -30
  228. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  229. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  230. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  231. package/src/_modules/mock/app-params.mock.ts +9 -9
  232. package/src/_modules/mock/app-server.mock.ts +188 -188
  233. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  234. package/src/_modules/mock/auth-service.mock.ts +28 -28
  235. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  236. package/src/_modules/mock/controller.mock.ts +16 -16
  237. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  238. package/src/_modules/mock/data-model.mock.ts +82 -82
  239. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  240. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  241. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  242. package/src/_modules/mock/email-service.mock.ts +20 -20
  243. package/src/_modules/mock/email-template.mock.html +14 -14
  244. package/src/_modules/mock/endpoint.mock.ts +91 -91
  245. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  246. package/src/_modules/mock/socket-client.mock.ts +45 -45
  247. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  248. package/src/_modules/mock/socket-server.mock.ts +46 -46
  249. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  250. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  251. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  252. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  253. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  254. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  255. package/src/_modules/oauth2/index.ts +17 -17
  256. package/src/_modules/server/errors/errors.control-service.spec.ts +230 -230
  257. package/src/_modules/server/errors/errors.control-service.ts +69 -69
  258. package/src/_modules/server/errors/errors.controller.spec.ts +165 -165
  259. package/src/_modules/server/errors/errors.controller.ts +270 -270
  260. package/src/_modules/server/errors/errors.data-service.spec.ts +355 -355
  261. package/src/_modules/server/index.ts +30 -30
  262. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  263. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  264. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  265. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  266. package/src/_modules/server/server-status/server-status.control-service.spec.ts +516 -516
  267. package/src/_modules/server/server-status/server-status.control-service.ts +336 -336
  268. package/src/_modules/server/server-status/server-status.controller.spec.ts +156 -156
  269. package/src/_modules/server/server-status/server-status.controller.ts +131 -131
  270. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  271. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  272. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  273. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
  274. package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
  275. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
  276. package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
  277. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  278. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  279. package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
  280. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  281. package/src/_modules/socket/app-extended.server.ts +630 -630
  282. package/src/_modules/socket/index.ts +42 -42
  283. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  284. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  285. package/src/_modules/test/index.ts +11 -11
  286. package/src/_modules/test/test.controller.spec.ts +72 -72
  287. package/src/_modules/test/test.controller.ts +115 -115
  288. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  289. package/src/_modules/usage/index.ts +15 -15
  290. package/src/_modules/usage/usage.controller.spec.ts +81 -81
  291. package/src/_modules/usage/usage.controller.ts +126 -126
  292. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  293. package/src/_modules/usage/usage.data-service.ts +185 -185
  294. package/src/_services/base/api.service-base.spec.ts +125 -125
  295. package/src/_services/base/api.service-base.ts +74 -74
  296. package/src/_services/base/archive-data.service.spec.ts +196 -196
  297. package/src/_services/base/archive-data.service.ts +216 -216
  298. package/src/_services/base/data.service.spec.ts +493 -493
  299. package/src/_services/base/data.service.ts +2525 -2525
  300. package/src/_services/base/db.service.spec.ts +73 -73
  301. package/src/_services/base/db.service.ts +1575 -1575
  302. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  303. package/src/_services/base/singleton.service-base.ts +24 -24
  304. package/src/_services/base/singleton.service.spec.ts +114 -114
  305. package/src/_services/base/singleton.service.ts +38 -38
  306. package/src/_services/core/api.service.spec.ts +140 -140
  307. package/src/_services/core/auth.service.spec.ts +159 -159
  308. package/src/_services/core/auth.service.ts +174 -174
  309. package/src/_services/core/email.service.spec.ts +85 -85
  310. package/src/_services/core/email.service.ts +742 -742
  311. package/src/_services/core/global.service.spec.ts +275 -275
  312. package/src/_services/core/global.service.ts +461 -461
  313. package/src/_services/core/service-collection.service.spec.ts +46 -46
  314. package/src/_services/core/service-collection.service.ts +6 -6
  315. package/src/_services/route/controller.service.spec.ts +53 -53
  316. package/src/_services/route/controller.service.ts +148 -148
  317. package/src/_services/route/routing-module.service.spec.ts +98 -98
  318. package/src/_services/route/routing-module.service.ts +330 -330
  319. package/src/_services/shared.static-service.spec.ts +99 -99
  320. package/src/_services/shared.static-service.ts +78 -78
  321. package/src/index.ts +94 -94
  322. package/tsconfig.app.json +12 -12
  323. package/tsconfig.json +42 -42
  324. package/build/_modules/logs/get-logs-routing-module.util.d.ts +0 -19
  325. package/build/_modules/logs/get-logs-routing-module.util.d.ts.map +0 -1
  326. package/build/_modules/logs/get-logs-routing-module.util.js +0 -32
  327. package/build/_modules/logs/get-logs-routing-module.util.js.map +0 -1
  328. package/build/_modules/logs/index.d.ts +0 -4
  329. package/build/_modules/logs/index.d.ts.map +0 -1
  330. package/build/_modules/logs/index.js +0 -10
  331. package/build/_modules/logs/index.js.map +0 -1
  332. package/build/_modules/logs/log-buffer.service.d.ts +0 -38
  333. package/build/_modules/logs/log-buffer.service.d.ts.map +0 -1
  334. package/build/_modules/logs/log-buffer.service.js +0 -97
  335. package/build/_modules/logs/log-buffer.service.js.map +0 -1
  336. package/build/_modules/logs/logs.controller.d.ts +0 -27
  337. package/build/_modules/logs/logs.controller.d.ts.map +0 -1
  338. package/build/_modules/logs/logs.controller.js +0 -90
  339. package/build/_modules/logs/logs.controller.js.map +0 -1
  340. package/build/_modules/logs/logs.service.d.ts +0 -40
  341. package/build/_modules/logs/logs.service.d.ts.map +0 -1
  342. package/build/_modules/logs/logs.service.js +0 -97
  343. package/build/_modules/logs/logs.service.js.map +0 -1
  344. package/src/_modules/logs/get-logs-routing-module.util.ts +0 -36
  345. package/src/_modules/logs/index.ts +0 -3
  346. package/src/_modules/logs/log-buffer.service.ts +0 -101
  347. package/src/_modules/logs/logs.controller.ts +0 -109
  348. package/src/_modules/logs/logs.service.ts +0 -100
@@ -1,330 +1,330 @@
1
- import { DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
2
- import {
3
- DyFM_DataModel_Params,
4
- DyFM_DataProperty_Params,
5
- DyFM_DBFilter,
6
- DyFM_Metadata,
7
- } from '@futdevpro/fsm-dynamo';
8
- import { DyFM_OAI_Settings } from '@futdevpro/fsm-dynamo/ai/open-ai';
9
-
10
- import { LVS_Search_Mode } from '../_enums/lvs-search-mode.enum';
11
- import { LVS_SearchResult } from '../_models/lvs-search-result.interface';
12
- import { LVS_VectorPool_ControlService } from './lvs-vector-pool.control-service';
13
- import { DyNTS_OAI_VectorDataService } from '../../ai/_modules/open-ai/_services/data-services/oai-vector-data.service';
14
- import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
15
-
16
- /**
17
- * Local Vector Data Service
18
- * Extends {@link DyNTS_OAI_VectorDataService} to perform in-memory vector similarity search
19
- * instead of MongoDB vector search
20
- *
21
- * This service loads data from the database, builds an in-memory vector pool,
22
- * and performs brute-force vector similarity search using cosine similarity or L2 distance
23
- *
24
- * @example
25
- * ```typescript
26
- * const service = new DyNTS_OAI_LocalVectorDataService(
27
- * data,
28
- * dataParams,
29
- * openAISettings,
30
- * issuer
31
- * );
32
- *
33
- * const results = await service.vectorSearch({
34
- * input: 'search query',
35
- * searchInKey: 'contentVectorized',
36
- * limit: 10,
37
- * filterBy: { category: 'docs' }
38
- * });
39
- * ```
40
- */
41
- export class DyNTS_LVS_VectorDataService<T extends DyFM_Metadata> extends DyNTS_OAI_VectorDataService<T> {
42
-
43
- /**
44
- * Default search mode
45
- * Cosine similarity is typically preferred for text embeddings
46
- */
47
- defaultSearchMode: LVS_Search_Mode = LVS_Search_Mode.cosineSimilarity;
48
-
49
- /**
50
- * Whether to use L2 normalization when storing vectors
51
- * Normalized vectors are more efficient for cosine similarity calculations
52
- */
53
- useL2Normalization: boolean = true;
54
-
55
- /**
56
- * Instance-based vector pool utility
57
- * Minden service instance saját vektor pool-t tart fenn
58
- */
59
- private vectorPool: LVS_VectorPool_ControlService = new LVS_VectorPool_ControlService();
60
-
61
- constructor(
62
- /**
63
- * Initial data, this will be used by functions on default
64
- */
65
- data: T,
66
- /**
67
- * DB data params will be used to connect to usable dbService on GlobalService
68
- */
69
- dataParams: DyFM_DataModel_Params<T>,
70
- /**
71
- * OpenAI settings
72
- */
73
- openAISettings: DyFM_OAI_Settings,
74
- /**
75
- * Initial set for issuer to be able to follow the issuer's activity
76
- */
77
- issuer: string
78
- ) {
79
- super(data, dataParams, openAISettings, issuer);
80
- }
81
-
82
- /**
83
- * Overrides the parent vectorSearch method to perform local in-memory vector search
84
- *
85
- * Process:
86
- * 1. Load data from DB using filterBy (if provided) or getAll()
87
- * 2. Extract vectorized properties from loaded data
88
- * 3. Build in-memory vector pool
89
- * 4. Vectorize input query
90
- * 5. Perform local vector search
91
- * 6. Map search results back to full data objects
92
- *
93
- * @param set Search parameters
94
- * @returns Array of data objects sorted by similarity score
95
- */
96
- override async vectorSearch(
97
- set: {
98
- input: string;
99
- /** this should be the vectorized property key */
100
- searchInKey: string;
101
- limit?: number;
102
- /**
103
- * Number of candidates that are used to find the best match
104
- * (Not used in local search, but kept for compatibility)
105
- */
106
- numberOfCandidates?: number;
107
- /**
108
- * Filter to narrow down candidates from DB before vector search
109
- */
110
- filterBy?: DyFM_DBFilter<T>;
111
- /**
112
- * Search mode (cosine similarity or L2 distance)
113
- * Defaults to this.defaultSearchMode
114
- */
115
- searchMode?: LVS_Search_Mode;
116
- },
117
- ): Promise<T[]> {
118
- try {
119
- if (!set.input) {
120
- throw new DyFM_Error({
121
- ...this.getDefaultErrorSettings(
122
- 'vectorSearch',
123
- new Error('input is required')
124
- ),
125
- errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS1`,
126
- });
127
- }
128
-
129
- set.limit ??= 3;
130
- const { input, searchInKey, limit, filterBy, searchMode } = set;
131
-
132
- // Validáljuk, hogy a searchInKey létezik-e
133
- const property: DyFM_DataProperty_Params<any, T> =
134
- this.dataParams.properties[searchInKey];
135
-
136
- if (!property) {
137
- throw new DyFM_Error({
138
- ...this.getDefaultErrorSettings(
139
- 'vectorSearch',
140
- new Error(
141
- `Property "${searchInKey}" not found! ` +
142
- `while searching "${this.dataParams.dataName}" ` +
143
- `(The searchable properties are: ` +
144
- `${this.vectorizedProperties.map(p => `"${p.key}"`).join(', ')})`
145
- )
146
- ),
147
- errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS2`,
148
- __localStack: this.dataParams.stackLocation,
149
- });
150
- }
151
-
152
- // Ellenőrizzük, hogy a property vectorized-e
153
- if (!this.vectorizedProperties.some(
154
- (p: DyFM_DataProperty_Params<any, T>) => p.key === searchInKey
155
- )) {
156
- throw new DyFM_Error({
157
- ...this.getDefaultErrorSettings(
158
- 'vectorSearch',
159
- new Error(
160
- `Property "${searchInKey}" is not a vectorized property! ` +
161
- `(The vectorized properties are: ` +
162
- `${this.vectorizedProperties.map(p => `"${p.key}"`).join(', ')})`
163
- )
164
- ),
165
- errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS3`,
166
- __localStack: this.dataParams.stackLocation,
167
- });
168
- }
169
-
170
- // 1. Betöltjük az adatokat a DB-ből (filterBy-val szűrve, ha van)
171
- let dataList: T[];
172
- if (filterBy) {
173
- // Ha van filterBy, akkor először szűrünk a DB-ben
174
- if (this.debugLog) {
175
- DyFM_Log.log(`Local vector search: filtering data with filterBy...`);
176
- }
177
- dataList = await this.findDataList(filterBy, true);
178
- } else {
179
- // Ha nincs filterBy, akkor minden adatot betöltünk
180
- if (this.debugLog) {
181
- DyFM_Log.log(`Local vector search: loading all data...`);
182
- }
183
- dataList = await this.getAll(true);
184
- }
185
-
186
- if (dataList.length === 0) {
187
- if (this.debugLog) {
188
- DyFM_Log.log(`Local vector search: no data found`);
189
- }
190
- return [];
191
- }
192
-
193
- // 2. Kinyerjük a vectorized property-ket és építjük a vector pool-t
194
- if (this.debugLog) {
195
- DyFM_Log.log(
196
- `Local vector search: building vector pool from ${dataList.length} items...`
197
- );
198
- }
199
-
200
- // Töröljük a korábbi pool-t
201
- this.vectorPool.clearPool();
202
-
203
- // Hozzáadjuk a vektorokat a pool-hoz
204
- const dataMap: Map<string, T> = new Map<string, T>();
205
- for (const dataItem of dataList) {
206
- if (!dataItem._id) {
207
- // Ha nincs _id, akkor kihagyjuk
208
- if (this.debugLog) {
209
- DyFM_Log.warn(
210
- `Local vector search: skipping item without _id`
211
- );
212
- }
213
- continue;
214
- }
215
-
216
- const vectorizedValue: number[] | undefined =
217
- dataItem[searchInKey] as number[] | undefined;
218
-
219
- if (!vectorizedValue || !Array.isArray(vectorizedValue)) {
220
- // Ha nincs vectorized érték, akkor kihagyjuk
221
- if (this.debugLog) {
222
- DyFM_Log.warn(
223
- `Local vector search: skipping item "${dataItem._id}" ` +
224
- `without vectorized value for "${searchInKey}"`
225
- );
226
- }
227
- continue;
228
- }
229
-
230
- // Hozzáadjuk a vektort a pool-hoz
231
- this.vectorPool.addVector(dataItem._id, vectorizedValue);
232
- dataMap.set(dataItem._id, dataItem);
233
- }
234
-
235
- if (dataMap.size === 0) {
236
- if (this.debugLog) {
237
- DyFM_Log.log(`Local vector search: no valid vectors found`);
238
- }
239
- return [];
240
- }
241
-
242
- // 3. Vectorizáljuk a query input-ot
243
- if (this.debugLog) {
244
- DyFM_Log.log(`Local vector search: vectorizing query input...`);
245
- }
246
-
247
- const queryVector: number[] = await this.vectorize(
248
- input,
249
- property.embeddingModel
250
- );
251
-
252
- // 4. Végrehajtjuk a local vector search-t
253
- const mode: LVS_Search_Mode = searchMode ?? this.defaultSearchMode;
254
-
255
- if (this.debugLog) {
256
- DyFM_Log.log(
257
- `Local vector search: searching with mode "${mode}", limit: ${limit}...`
258
- );
259
- }
260
-
261
- const searchResults: LVS_SearchResult[] = this.vectorPool.search(
262
- queryVector,
263
- limit,
264
- mode
265
- );
266
-
267
- if (this.debugLog) {
268
- DyFM_Log.log(
269
- `Local vector search: found ${searchResults.length} results`
270
- );
271
- }
272
-
273
- // 5. Map-eljük vissza a search results-ot a teljes data objektumokra
274
- const results: T[] = [];
275
- for (const searchResult of searchResults) {
276
- const dataItem: T | undefined = dataMap.get(searchResult.id);
277
- if (dataItem) {
278
- results.push(dataItem);
279
- }
280
- }
281
-
282
- // Töröljük a pool-t a memória felszabadítása érdekében
283
- this.vectorPool.clearPool();
284
-
285
- return results;
286
- } catch (error) {
287
- // Töröljük a pool-t hiba esetén is
288
- this.vectorPool.clearPool();
289
-
290
- throw new DyFM_Error({
291
- ...this.getDefaultErrorSettings('vectorSearch', error),
292
- errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS0`,
293
- });
294
- }
295
- }
296
- }
297
-
298
- /**
299
- * @example
300
- * ```typescript
301
- * // Create a local vector data service
302
- * const localVectorService = new DyNTS_OAI_LocalVectorDataService<CodeChunk>(
303
- * new CodeChunk(),
304
- * codeChunk_dataParams,
305
- * openAISettings,
306
- * 'example-issuer'
307
- * );
308
- *
309
- * // Perform vector search with filterBy
310
- * const results = await localVectorService.vectorSearch({
311
- * input: 'How to implement authentication?',
312
- * searchInKey: 'chunkParentedContentVectorized',
313
- * limit: 5,
314
- * filterBy: {
315
- * // Filter by category before vector search
316
- * category: 'documentation'
317
- * },
318
- * searchMode: LVS_Search_Mode.cosineSimilarity
319
- * });
320
- *
321
- * // Results are sorted by similarity score (highest first for cosine)
322
- * console.log(`Found ${results.length} similar chunks`);
323
- *
324
- * // Access the results
325
- * for (const result of results) {
326
- * console.log(`Chunk ID: ${result._id}, Content: ${result.chunkContent}`);
327
- * }
328
- * ```
329
- */
330
-
1
+ import { DyFM_Log, DyFM_Error } from '@futdevpro/fsm-dynamo';
2
+ import {
3
+ DyFM_DataModel_Params,
4
+ DyFM_DataProperty_Params,
5
+ DyFM_DBFilter,
6
+ DyFM_Metadata,
7
+ } from '@futdevpro/fsm-dynamo';
8
+ import { DyFM_OAI_Settings } from '@futdevpro/fsm-dynamo/ai/open-ai';
9
+
10
+ import { LVS_Search_Mode } from '../_enums/lvs-search-mode.enum';
11
+ import { LVS_SearchResult } from '../_models/lvs-search-result.interface';
12
+ import { LVS_VectorPool_ControlService } from './lvs-vector-pool.control-service';
13
+ import { DyNTS_OAI_VectorDataService } from '../../ai/_modules/open-ai/_services/data-services/oai-vector-data.service';
14
+ import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
15
+
16
+ /**
17
+ * Local Vector Data Service
18
+ * Extends {@link DyNTS_OAI_VectorDataService} to perform in-memory vector similarity search
19
+ * instead of MongoDB vector search
20
+ *
21
+ * This service loads data from the database, builds an in-memory vector pool,
22
+ * and performs brute-force vector similarity search using cosine similarity or L2 distance
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const service = new DyNTS_OAI_LocalVectorDataService(
27
+ * data,
28
+ * dataParams,
29
+ * openAISettings,
30
+ * issuer
31
+ * );
32
+ *
33
+ * const results = await service.vectorSearch({
34
+ * input: 'search query',
35
+ * searchInKey: 'contentVectorized',
36
+ * limit: 10,
37
+ * filterBy: { category: 'docs' }
38
+ * });
39
+ * ```
40
+ */
41
+ export class DyNTS_LVS_VectorDataService<T extends DyFM_Metadata> extends DyNTS_OAI_VectorDataService<T> {
42
+
43
+ /**
44
+ * Default search mode
45
+ * Cosine similarity is typically preferred for text embeddings
46
+ */
47
+ defaultSearchMode: LVS_Search_Mode = LVS_Search_Mode.cosineSimilarity;
48
+
49
+ /**
50
+ * Whether to use L2 normalization when storing vectors
51
+ * Normalized vectors are more efficient for cosine similarity calculations
52
+ */
53
+ useL2Normalization: boolean = true;
54
+
55
+ /**
56
+ * Instance-based vector pool utility
57
+ * Minden service instance saját vektor pool-t tart fenn
58
+ */
59
+ private vectorPool: LVS_VectorPool_ControlService = new LVS_VectorPool_ControlService();
60
+
61
+ constructor(
62
+ /**
63
+ * Initial data, this will be used by functions on default
64
+ */
65
+ data: T,
66
+ /**
67
+ * DB data params will be used to connect to usable dbService on GlobalService
68
+ */
69
+ dataParams: DyFM_DataModel_Params<T>,
70
+ /**
71
+ * OpenAI settings
72
+ */
73
+ openAISettings: DyFM_OAI_Settings,
74
+ /**
75
+ * Initial set for issuer to be able to follow the issuer's activity
76
+ */
77
+ issuer: string
78
+ ) {
79
+ super(data, dataParams, openAISettings, issuer);
80
+ }
81
+
82
+ /**
83
+ * Overrides the parent vectorSearch method to perform local in-memory vector search
84
+ *
85
+ * Process:
86
+ * 1. Load data from DB using filterBy (if provided) or getAll()
87
+ * 2. Extract vectorized properties from loaded data
88
+ * 3. Build in-memory vector pool
89
+ * 4. Vectorize input query
90
+ * 5. Perform local vector search
91
+ * 6. Map search results back to full data objects
92
+ *
93
+ * @param set Search parameters
94
+ * @returns Array of data objects sorted by similarity score
95
+ */
96
+ override async vectorSearch(
97
+ set: {
98
+ input: string;
99
+ /** this should be the vectorized property key */
100
+ searchInKey: string;
101
+ limit?: number;
102
+ /**
103
+ * Number of candidates that are used to find the best match
104
+ * (Not used in local search, but kept for compatibility)
105
+ */
106
+ numberOfCandidates?: number;
107
+ /**
108
+ * Filter to narrow down candidates from DB before vector search
109
+ */
110
+ filterBy?: DyFM_DBFilter<T>;
111
+ /**
112
+ * Search mode (cosine similarity or L2 distance)
113
+ * Defaults to this.defaultSearchMode
114
+ */
115
+ searchMode?: LVS_Search_Mode;
116
+ },
117
+ ): Promise<T[]> {
118
+ try {
119
+ if (!set.input) {
120
+ throw new DyFM_Error({
121
+ ...this.getDefaultErrorSettings(
122
+ 'vectorSearch',
123
+ new Error('input is required')
124
+ ),
125
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS1`,
126
+ });
127
+ }
128
+
129
+ set.limit ??= 3;
130
+ const { input, searchInKey, limit, filterBy, searchMode } = set;
131
+
132
+ // Validáljuk, hogy a searchInKey létezik-e
133
+ const property: DyFM_DataProperty_Params<any, T> =
134
+ this.dataParams.properties[searchInKey];
135
+
136
+ if (!property) {
137
+ throw new DyFM_Error({
138
+ ...this.getDefaultErrorSettings(
139
+ 'vectorSearch',
140
+ new Error(
141
+ `Property "${searchInKey}" not found! ` +
142
+ `while searching "${this.dataParams.dataName}" ` +
143
+ `(The searchable properties are: ` +
144
+ `${this.vectorizedProperties.map(p => `"${p.key}"`).join(', ')})`
145
+ )
146
+ ),
147
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS2`,
148
+ __localStack: this.dataParams.stackLocation,
149
+ });
150
+ }
151
+
152
+ // Ellenőrizzük, hogy a property vectorized-e
153
+ if (!this.vectorizedProperties.some(
154
+ (p: DyFM_DataProperty_Params<any, T>) => p.key === searchInKey
155
+ )) {
156
+ throw new DyFM_Error({
157
+ ...this.getDefaultErrorSettings(
158
+ 'vectorSearch',
159
+ new Error(
160
+ `Property "${searchInKey}" is not a vectorized property! ` +
161
+ `(The vectorized properties are: ` +
162
+ `${this.vectorizedProperties.map(p => `"${p.key}"`).join(', ')})`
163
+ )
164
+ ),
165
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS3`,
166
+ __localStack: this.dataParams.stackLocation,
167
+ });
168
+ }
169
+
170
+ // 1. Betöltjük az adatokat a DB-ből (filterBy-val szűrve, ha van)
171
+ let dataList: T[];
172
+ if (filterBy) {
173
+ // Ha van filterBy, akkor először szűrünk a DB-ben
174
+ if (this.debugLog) {
175
+ DyFM_Log.log(`Local vector search: filtering data with filterBy...`);
176
+ }
177
+ dataList = await this.findDataList(filterBy, true);
178
+ } else {
179
+ // Ha nincs filterBy, akkor minden adatot betöltünk
180
+ if (this.debugLog) {
181
+ DyFM_Log.log(`Local vector search: loading all data...`);
182
+ }
183
+ dataList = await this.getAll(true);
184
+ }
185
+
186
+ if (dataList.length === 0) {
187
+ if (this.debugLog) {
188
+ DyFM_Log.log(`Local vector search: no data found`);
189
+ }
190
+ return [];
191
+ }
192
+
193
+ // 2. Kinyerjük a vectorized property-ket és építjük a vector pool-t
194
+ if (this.debugLog) {
195
+ DyFM_Log.log(
196
+ `Local vector search: building vector pool from ${dataList.length} items...`
197
+ );
198
+ }
199
+
200
+ // Töröljük a korábbi pool-t
201
+ this.vectorPool.clearPool();
202
+
203
+ // Hozzáadjuk a vektorokat a pool-hoz
204
+ const dataMap: Map<string, T> = new Map<string, T>();
205
+ for (const dataItem of dataList) {
206
+ if (!dataItem._id) {
207
+ // Ha nincs _id, akkor kihagyjuk
208
+ if (this.debugLog) {
209
+ DyFM_Log.warn(
210
+ `Local vector search: skipping item without _id`
211
+ );
212
+ }
213
+ continue;
214
+ }
215
+
216
+ const vectorizedValue: number[] | undefined =
217
+ dataItem[searchInKey] as number[] | undefined;
218
+
219
+ if (!vectorizedValue || !Array.isArray(vectorizedValue)) {
220
+ // Ha nincs vectorized érték, akkor kihagyjuk
221
+ if (this.debugLog) {
222
+ DyFM_Log.warn(
223
+ `Local vector search: skipping item "${dataItem._id}" ` +
224
+ `without vectorized value for "${searchInKey}"`
225
+ );
226
+ }
227
+ continue;
228
+ }
229
+
230
+ // Hozzáadjuk a vektort a pool-hoz
231
+ this.vectorPool.addVector(dataItem._id, vectorizedValue);
232
+ dataMap.set(dataItem._id, dataItem);
233
+ }
234
+
235
+ if (dataMap.size === 0) {
236
+ if (this.debugLog) {
237
+ DyFM_Log.log(`Local vector search: no valid vectors found`);
238
+ }
239
+ return [];
240
+ }
241
+
242
+ // 3. Vectorizáljuk a query input-ot
243
+ if (this.debugLog) {
244
+ DyFM_Log.log(`Local vector search: vectorizing query input...`);
245
+ }
246
+
247
+ const queryVector: number[] = await this.vectorize(
248
+ input,
249
+ property.embeddingModel
250
+ );
251
+
252
+ // 4. Végrehajtjuk a local vector search-t
253
+ const mode: LVS_Search_Mode = searchMode ?? this.defaultSearchMode;
254
+
255
+ if (this.debugLog) {
256
+ DyFM_Log.log(
257
+ `Local vector search: searching with mode "${mode}", limit: ${limit}...`
258
+ );
259
+ }
260
+
261
+ const searchResults: LVS_SearchResult[] = this.vectorPool.search(
262
+ queryVector,
263
+ limit,
264
+ mode
265
+ );
266
+
267
+ if (this.debugLog) {
268
+ DyFM_Log.log(
269
+ `Local vector search: found ${searchResults.length} results`
270
+ );
271
+ }
272
+
273
+ // 5. Map-eljük vissza a search results-ot a teljes data objektumokra
274
+ const results: T[] = [];
275
+ for (const searchResult of searchResults) {
276
+ const dataItem: T | undefined = dataMap.get(searchResult.id);
277
+ if (dataItem) {
278
+ results.push(dataItem);
279
+ }
280
+ }
281
+
282
+ // Töröljük a pool-t a memória felszabadítása érdekében
283
+ this.vectorPool.clearPool();
284
+
285
+ return results;
286
+ } catch (error) {
287
+ // Töröljük a pool-t hiba esetén is
288
+ this.vectorPool.clearPool();
289
+
290
+ throw new DyFM_Error({
291
+ ...this.getDefaultErrorSettings('vectorSearch', error),
292
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-LVS-VS0`,
293
+ });
294
+ }
295
+ }
296
+ }
297
+
298
+ /**
299
+ * @example
300
+ * ```typescript
301
+ * // Create a local vector data service
302
+ * const localVectorService = new DyNTS_OAI_LocalVectorDataService<CodeChunk>(
303
+ * new CodeChunk(),
304
+ * codeChunk_dataParams,
305
+ * openAISettings,
306
+ * 'example-issuer'
307
+ * );
308
+ *
309
+ * // Perform vector search with filterBy
310
+ * const results = await localVectorService.vectorSearch({
311
+ * input: 'How to implement authentication?',
312
+ * searchInKey: 'chunkParentedContentVectorized',
313
+ * limit: 5,
314
+ * filterBy: {
315
+ * // Filter by category before vector search
316
+ * category: 'documentation'
317
+ * },
318
+ * searchMode: LVS_Search_Mode.cosineSimilarity
319
+ * });
320
+ *
321
+ * // Results are sorted by similarity score (highest first for cosine)
322
+ * console.log(`Found ${results.length} similar chunks`);
323
+ *
324
+ * // Access the results
325
+ * for (const result of results) {
326
+ * console.log(`Chunk ID: ${result._id}, Content: ${result.chunkContent}`);
327
+ * }
328
+ * ```
329
+ */
330
+