@loonylabs/llm-middleware 2.0.0

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 (396) hide show
  1. package/.env.example +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +629 -0
  4. package/dist/examples/character-generator/character-generator.messages.d.ts +9 -0
  5. package/dist/examples/character-generator/character-generator.messages.d.ts.map +1 -0
  6. package/dist/examples/character-generator/character-generator.messages.js +54 -0
  7. package/dist/examples/character-generator/character-generator.messages.js.map +1 -0
  8. package/dist/examples/character-generator/character-generator.usecase.d.ts +129 -0
  9. package/dist/examples/character-generator/character-generator.usecase.d.ts.map +1 -0
  10. package/dist/examples/character-generator/character-generator.usecase.js +209 -0
  11. package/dist/examples/character-generator/character-generator.usecase.js.map +1 -0
  12. package/dist/examples/character-generator/create-character.messages.d.ts +11 -0
  13. package/dist/examples/character-generator/create-character.messages.d.ts.map +1 -0
  14. package/dist/examples/character-generator/create-character.messages.js +38 -0
  15. package/dist/examples/character-generator/create-character.messages.js.map +1 -0
  16. package/dist/examples/flat-formatter-demo/product-preset.example.d.ts +99 -0
  17. package/dist/examples/flat-formatter-demo/product-preset.example.d.ts.map +1 -0
  18. package/dist/examples/flat-formatter-demo/product-preset.example.js +85 -0
  19. package/dist/examples/flat-formatter-demo/product-preset.example.js.map +1 -0
  20. package/dist/examples/simple-chat/chat.controller.d.ts +15 -0
  21. package/dist/examples/simple-chat/chat.controller.d.ts.map +1 -0
  22. package/dist/examples/simple-chat/chat.controller.js +39 -0
  23. package/dist/examples/simple-chat/chat.controller.js.map +1 -0
  24. package/dist/examples/simple-chat/chat.messages.d.ts +10 -0
  25. package/dist/examples/simple-chat/chat.messages.d.ts.map +1 -0
  26. package/dist/examples/simple-chat/chat.messages.js +17 -0
  27. package/dist/examples/simple-chat/chat.messages.js.map +1 -0
  28. package/dist/examples/simple-chat/chat.usecase.d.ts +33 -0
  29. package/dist/examples/simple-chat/chat.usecase.d.ts.map +1 -0
  30. package/dist/examples/simple-chat/chat.usecase.js +40 -0
  31. package/dist/examples/simple-chat/chat.usecase.js.map +1 -0
  32. package/dist/examples/simple-chat/index.d.ts +3 -0
  33. package/dist/examples/simple-chat/index.d.ts.map +1 -0
  34. package/dist/examples/simple-chat/index.js +57 -0
  35. package/dist/examples/simple-chat/index.js.map +1 -0
  36. package/dist/examples/story-generator/story-generator.messages.d.ts +13 -0
  37. package/dist/examples/story-generator/story-generator.messages.d.ts.map +1 -0
  38. package/dist/examples/story-generator/story-generator.messages.js +41 -0
  39. package/dist/examples/story-generator/story-generator.messages.js.map +1 -0
  40. package/dist/examples/story-generator/story-generator.usecase.d.ts +115 -0
  41. package/dist/examples/story-generator/story-generator.usecase.d.ts.map +1 -0
  42. package/dist/examples/story-generator/story-generator.usecase.js +121 -0
  43. package/dist/examples/story-generator/story-generator.usecase.js.map +1 -0
  44. package/dist/examples/tweet-generator/tweet-generator.messages.d.ts +15 -0
  45. package/dist/examples/tweet-generator/tweet-generator.messages.d.ts.map +1 -0
  46. package/dist/examples/tweet-generator/tweet-generator.messages.js +40 -0
  47. package/dist/examples/tweet-generator/tweet-generator.messages.js.map +1 -0
  48. package/dist/examples/tweet-generator/tweet-generator.usecase.d.ts +92 -0
  49. package/dist/examples/tweet-generator/tweet-generator.usecase.d.ts.map +1 -0
  50. package/dist/examples/tweet-generator/tweet-generator.usecase.js +116 -0
  51. package/dist/examples/tweet-generator/tweet-generator.usecase.js.map +1 -0
  52. package/dist/index.d.ts +2 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +19 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/middleware/controllers/base/base.controller.d.ts +16 -0
  57. package/dist/middleware/controllers/base/base.controller.d.ts.map +1 -0
  58. package/dist/middleware/controllers/base/base.controller.js +38 -0
  59. package/dist/middleware/controllers/base/base.controller.js.map +1 -0
  60. package/dist/middleware/controllers/base/index.d.ts +2 -0
  61. package/dist/middleware/controllers/base/index.d.ts.map +1 -0
  62. package/dist/middleware/controllers/base/index.js +19 -0
  63. package/dist/middleware/controllers/base/index.js.map +1 -0
  64. package/dist/middleware/index.d.ts +7 -0
  65. package/dist/middleware/index.d.ts.map +1 -0
  66. package/dist/middleware/index.js +27 -0
  67. package/dist/middleware/index.js.map +1 -0
  68. package/dist/middleware/services/data-flow-logger/data-flow-logger.service.d.ts +127 -0
  69. package/dist/middleware/services/data-flow-logger/data-flow-logger.service.d.ts.map +1 -0
  70. package/dist/middleware/services/data-flow-logger/data-flow-logger.service.js +341 -0
  71. package/dist/middleware/services/data-flow-logger/data-flow-logger.service.js.map +1 -0
  72. package/dist/middleware/services/data-flow-logger/index.d.ts +2 -0
  73. package/dist/middleware/services/data-flow-logger/index.d.ts.map +1 -0
  74. package/dist/middleware/services/data-flow-logger/index.js +18 -0
  75. package/dist/middleware/services/data-flow-logger/index.js.map +1 -0
  76. package/dist/middleware/services/flat-formatter/flat-formatter.service.d.ts +86 -0
  77. package/dist/middleware/services/flat-formatter/flat-formatter.service.d.ts.map +1 -0
  78. package/dist/middleware/services/flat-formatter/flat-formatter.service.js +333 -0
  79. package/dist/middleware/services/flat-formatter/flat-formatter.service.js.map +1 -0
  80. package/dist/middleware/services/flat-formatter/index.d.ts +4 -0
  81. package/dist/middleware/services/flat-formatter/index.d.ts.map +1 -0
  82. package/dist/middleware/services/flat-formatter/index.js +28 -0
  83. package/dist/middleware/services/flat-formatter/index.js.map +1 -0
  84. package/dist/middleware/services/flat-formatter/presets/base-preset.d.ts +68 -0
  85. package/dist/middleware/services/flat-formatter/presets/base-preset.d.ts.map +1 -0
  86. package/dist/middleware/services/flat-formatter/presets/base-preset.js +238 -0
  87. package/dist/middleware/services/flat-formatter/presets/base-preset.js.map +1 -0
  88. package/dist/middleware/services/flat-formatter/presets/index.d.ts +5 -0
  89. package/dist/middleware/services/flat-formatter/presets/index.d.ts.map +1 -0
  90. package/dist/middleware/services/flat-formatter/presets/index.js +28 -0
  91. package/dist/middleware/services/flat-formatter/presets/index.js.map +1 -0
  92. package/dist/middleware/services/flat-formatter/presets/types/entity-types.d.ts +23 -0
  93. package/dist/middleware/services/flat-formatter/presets/types/entity-types.d.ts.map +1 -0
  94. package/dist/middleware/services/flat-formatter/presets/types/entity-types.js +3 -0
  95. package/dist/middleware/services/flat-formatter/presets/types/entity-types.js.map +1 -0
  96. package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.d.ts +30 -0
  97. package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.d.ts.map +1 -0
  98. package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.js +3 -0
  99. package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.js.map +1 -0
  100. package/dist/middleware/services/index.d.ts +10 -0
  101. package/dist/middleware/services/index.d.ts.map +1 -0
  102. package/dist/middleware/services/index.js +28 -0
  103. package/dist/middleware/services/index.js.map +1 -0
  104. package/dist/middleware/services/json-cleaner/helpers/index.d.ts +3 -0
  105. package/dist/middleware/services/json-cleaner/helpers/index.d.ts.map +1 -0
  106. package/dist/middleware/services/json-cleaner/helpers/index.js +19 -0
  107. package/dist/middleware/services/json-cleaner/helpers/index.js.map +1 -0
  108. package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.d.ts +52 -0
  109. package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.d.ts.map +1 -0
  110. package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.js +271 -0
  111. package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.js.map +1 -0
  112. package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.d.ts +83 -0
  113. package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.d.ts.map +1 -0
  114. package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.js +326 -0
  115. package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.js.map +1 -0
  116. package/dist/middleware/services/json-cleaner/index.d.ts +9 -0
  117. package/dist/middleware/services/json-cleaner/index.d.ts.map +1 -0
  118. package/dist/middleware/services/json-cleaner/index.js +31 -0
  119. package/dist/middleware/services/json-cleaner/index.js.map +1 -0
  120. package/dist/middleware/services/json-cleaner/json-cleaner-logger.d.ts +59 -0
  121. package/dist/middleware/services/json-cleaner/json-cleaner-logger.d.ts.map +1 -0
  122. package/dist/middleware/services/json-cleaner/json-cleaner-logger.js +164 -0
  123. package/dist/middleware/services/json-cleaner/json-cleaner-logger.js.map +1 -0
  124. package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.d.ts +56 -0
  125. package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.d.ts.map +1 -0
  126. package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.js +178 -0
  127. package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.js.map +1 -0
  128. package/dist/middleware/services/json-cleaner/json-cleaner.service.d.ts +94 -0
  129. package/dist/middleware/services/json-cleaner/json-cleaner.service.d.ts.map +1 -0
  130. package/dist/middleware/services/json-cleaner/json-cleaner.service.js +175 -0
  131. package/dist/middleware/services/json-cleaner/json-cleaner.service.js.map +1 -0
  132. package/dist/middleware/services/json-cleaner/json-cleaner.types.d.ts +92 -0
  133. package/dist/middleware/services/json-cleaner/json-cleaner.types.d.ts.map +1 -0
  134. package/dist/middleware/services/json-cleaner/json-cleaner.types.js +3 -0
  135. package/dist/middleware/services/json-cleaner/json-cleaner.types.js.map +1 -0
  136. package/dist/middleware/services/json-cleaner/parsers/index.d.ts +4 -0
  137. package/dist/middleware/services/json-cleaner/parsers/index.d.ts.map +1 -0
  138. package/dist/middleware/services/json-cleaner/parsers/index.js +20 -0
  139. package/dist/middleware/services/json-cleaner/parsers/index.js.map +1 -0
  140. package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.d.ts +32 -0
  141. package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.d.ts.map +1 -0
  142. package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.js +148 -0
  143. package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.js.map +1 -0
  144. package/dist/middleware/services/json-cleaner/parsers/markdown.parser.d.ts +19 -0
  145. package/dist/middleware/services/json-cleaner/parsers/markdown.parser.d.ts.map +1 -0
  146. package/dist/middleware/services/json-cleaner/parsers/markdown.parser.js +43 -0
  147. package/dist/middleware/services/json-cleaner/parsers/markdown.parser.js.map +1 -0
  148. package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.d.ts +19 -0
  149. package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.d.ts.map +1 -0
  150. package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.js +37 -0
  151. package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.js.map +1 -0
  152. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.d.ts +40 -0
  153. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.d.ts.map +1 -0
  154. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.js +138 -0
  155. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.js.map +1 -0
  156. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.d.ts +74 -0
  157. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.d.ts.map +1 -0
  158. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.js +230 -0
  159. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.js.map +1 -0
  160. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.d.ts +16 -0
  161. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.d.ts.map +1 -0
  162. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.js +179 -0
  163. package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.js.map +1 -0
  164. package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.d.ts +88 -0
  165. package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.d.ts.map +1 -0
  166. package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.js +178 -0
  167. package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.js.map +1 -0
  168. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.d.ts +51 -0
  169. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.d.ts.map +1 -0
  170. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.js +219 -0
  171. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.js.map +1 -0
  172. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.d.ts +62 -0
  173. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.d.ts.map +1 -0
  174. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.js +217 -0
  175. package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.js.map +1 -0
  176. package/dist/middleware/services/json-cleaner/recipe-system/factory.d.ts +46 -0
  177. package/dist/middleware/services/json-cleaner/recipe-system/factory.d.ts.map +1 -0
  178. package/dist/middleware/services/json-cleaner/recipe-system/factory.js +52 -0
  179. package/dist/middleware/services/json-cleaner/recipe-system/factory.js.map +1 -0
  180. package/dist/middleware/services/json-cleaner/recipe-system/index.d.ts +12 -0
  181. package/dist/middleware/services/json-cleaner/recipe-system/index.d.ts.map +1 -0
  182. package/dist/middleware/services/json-cleaner/recipe-system/index.js +28 -0
  183. package/dist/middleware/services/json-cleaner/recipe-system/index.js.map +1 -0
  184. package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.d.ts +55 -0
  185. package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.d.ts.map +1 -0
  186. package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.js +348 -0
  187. package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.js.map +1 -0
  188. package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.d.ts +70 -0
  189. package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.d.ts.map +1 -0
  190. package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.js +568 -0
  191. package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.js.map +1 -0
  192. package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.d.ts +11 -0
  193. package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.d.ts.map +1 -0
  194. package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.js +103 -0
  195. package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.js.map +1 -0
  196. package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.d.ts +171 -0
  197. package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.d.ts.map +1 -0
  198. package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.js +3 -0
  199. package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.js.map +1 -0
  200. package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.d.ts +224 -0
  201. package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.d.ts.map +1 -0
  202. package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.js +3 -0
  203. package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.js.map +1 -0
  204. package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.d.ts +29 -0
  205. package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.d.ts.map +1 -0
  206. package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.js +128 -0
  207. package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.js.map +1 -0
  208. package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.d.ts +38 -0
  209. package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.d.ts.map +1 -0
  210. package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.js +18 -0
  211. package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.js.map +1 -0
  212. package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.d.ts +65 -0
  213. package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.d.ts.map +1 -0
  214. package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.js +420 -0
  215. package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.js.map +1 -0
  216. package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.d.ts +50 -0
  217. package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.d.ts.map +1 -0
  218. package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.js +416 -0
  219. package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.js.map +1 -0
  220. package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.d.ts +27 -0
  221. package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.d.ts.map +1 -0
  222. package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.js +84 -0
  223. package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.js.map +1 -0
  224. package/dist/middleware/services/json-cleaner/strategies/index.d.ts +8 -0
  225. package/dist/middleware/services/json-cleaner/strategies/index.d.ts.map +1 -0
  226. package/dist/middleware/services/json-cleaner/strategies/index.js +24 -0
  227. package/dist/middleware/services/json-cleaner/strategies/index.js.map +1 -0
  228. package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.d.ts +23 -0
  229. package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.d.ts.map +1 -0
  230. package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.js +65 -0
  231. package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.js.map +1 -0
  232. package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.d.ts +48 -0
  233. package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.d.ts.map +1 -0
  234. package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.js +188 -0
  235. package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.js.map +1 -0
  236. package/dist/middleware/services/json-cleaner/utils/console-logger.util.d.ts +50 -0
  237. package/dist/middleware/services/json-cleaner/utils/console-logger.util.d.ts.map +1 -0
  238. package/dist/middleware/services/json-cleaner/utils/console-logger.util.js +95 -0
  239. package/dist/middleware/services/json-cleaner/utils/console-logger.util.js.map +1 -0
  240. package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.d.ts +59 -0
  241. package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.d.ts.map +1 -0
  242. package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.js +326 -0
  243. package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.js.map +1 -0
  244. package/dist/middleware/services/json-cleaner/utils/index.d.ts +3 -0
  245. package/dist/middleware/services/json-cleaner/utils/index.d.ts.map +1 -0
  246. package/dist/middleware/services/json-cleaner/utils/index.js +19 -0
  247. package/dist/middleware/services/json-cleaner/utils/index.js.map +1 -0
  248. package/dist/middleware/services/json-cleaner/utils/json-inspector.util.d.ts +27 -0
  249. package/dist/middleware/services/json-cleaner/utils/json-inspector.util.d.ts.map +1 -0
  250. package/dist/middleware/services/json-cleaner/utils/json-inspector.util.js +139 -0
  251. package/dist/middleware/services/json-cleaner/utils/json-inspector.util.js.map +1 -0
  252. package/dist/middleware/services/llm/index.d.ts +5 -0
  253. package/dist/middleware/services/llm/index.d.ts.map +1 -0
  254. package/dist/middleware/services/llm/index.js +25 -0
  255. package/dist/middleware/services/llm/index.js.map +1 -0
  256. package/dist/middleware/services/llm/llm.service.d.ts +43 -0
  257. package/dist/middleware/services/llm/llm.service.d.ts.map +1 -0
  258. package/dist/middleware/services/llm/llm.service.js +70 -0
  259. package/dist/middleware/services/llm/llm.service.js.map +1 -0
  260. package/dist/middleware/services/llm/providers/base-llm-provider.d.ts +37 -0
  261. package/dist/middleware/services/llm/providers/base-llm-provider.d.ts.map +1 -0
  262. package/dist/middleware/services/llm/providers/base-llm-provider.js +41 -0
  263. package/dist/middleware/services/llm/providers/base-llm-provider.js.map +1 -0
  264. package/dist/middleware/services/llm/providers/index.d.ts +3 -0
  265. package/dist/middleware/services/llm/providers/index.d.ts.map +1 -0
  266. package/dist/middleware/services/llm/providers/index.js +25 -0
  267. package/dist/middleware/services/llm/providers/index.js.map +1 -0
  268. package/dist/middleware/services/llm/providers/ollama-provider.d.ts +39 -0
  269. package/dist/middleware/services/llm/providers/ollama-provider.d.ts.map +1 -0
  270. package/dist/middleware/services/llm/providers/ollama-provider.js +398 -0
  271. package/dist/middleware/services/llm/providers/ollama-provider.js.map +1 -0
  272. package/dist/middleware/services/llm/types/common.types.d.ts +81 -0
  273. package/dist/middleware/services/llm/types/common.types.d.ts.map +1 -0
  274. package/dist/middleware/services/llm/types/common.types.js +17 -0
  275. package/dist/middleware/services/llm/types/common.types.js.map +1 -0
  276. package/dist/middleware/services/llm/types/index.d.ts +3 -0
  277. package/dist/middleware/services/llm/types/index.d.ts.map +1 -0
  278. package/dist/middleware/services/llm/types/index.js +21 -0
  279. package/dist/middleware/services/llm/types/index.js.map +1 -0
  280. package/dist/middleware/services/llm/types/ollama.types.d.ts +48 -0
  281. package/dist/middleware/services/llm/types/ollama.types.d.ts.map +1 -0
  282. package/dist/middleware/services/llm/types/ollama.types.js +8 -0
  283. package/dist/middleware/services/llm/types/ollama.types.js.map +1 -0
  284. package/dist/middleware/services/llm/utils/debug-llm.utils.d.ts +42 -0
  285. package/dist/middleware/services/llm/utils/debug-llm.utils.d.ts.map +1 -0
  286. package/dist/middleware/services/llm/utils/debug-llm.utils.js +325 -0
  287. package/dist/middleware/services/llm/utils/debug-llm.utils.js.map +1 -0
  288. package/dist/middleware/services/llm/utils/index.d.ts +3 -0
  289. package/dist/middleware/services/llm/utils/index.d.ts.map +1 -0
  290. package/dist/middleware/services/llm/utils/index.js +19 -0
  291. package/dist/middleware/services/llm/utils/index.js.map +1 -0
  292. package/dist/middleware/services/llm/utils/text-analysis.utils.d.ts +75 -0
  293. package/dist/middleware/services/llm/utils/text-analysis.utils.d.ts.map +1 -0
  294. package/dist/middleware/services/llm/utils/text-analysis.utils.js +197 -0
  295. package/dist/middleware/services/llm/utils/text-analysis.utils.js.map +1 -0
  296. package/dist/middleware/services/model-parameter-manager/index.d.ts +2 -0
  297. package/dist/middleware/services/model-parameter-manager/index.d.ts.map +1 -0
  298. package/dist/middleware/services/model-parameter-manager/index.js +18 -0
  299. package/dist/middleware/services/model-parameter-manager/index.js.map +1 -0
  300. package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.d.ts +165 -0
  301. package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.d.ts.map +1 -0
  302. package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.js +325 -0
  303. package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.js.map +1 -0
  304. package/dist/middleware/services/request-formatter/index.d.ts +2 -0
  305. package/dist/middleware/services/request-formatter/index.d.ts.map +1 -0
  306. package/dist/middleware/services/request-formatter/index.js +18 -0
  307. package/dist/middleware/services/request-formatter/index.js.map +1 -0
  308. package/dist/middleware/services/request-formatter/request-formatter.service.d.ts +71 -0
  309. package/dist/middleware/services/request-formatter/request-formatter.service.d.ts.map +1 -0
  310. package/dist/middleware/services/request-formatter/request-formatter.service.js +230 -0
  311. package/dist/middleware/services/request-formatter/request-formatter.service.js.map +1 -0
  312. package/dist/middleware/services/response-processor.service.d.ts +106 -0
  313. package/dist/middleware/services/response-processor.service.d.ts.map +1 -0
  314. package/dist/middleware/services/response-processor.service.js +236 -0
  315. package/dist/middleware/services/response-processor.service.js.map +1 -0
  316. package/dist/middleware/services/token-estimator/index.d.ts +2 -0
  317. package/dist/middleware/services/token-estimator/index.d.ts.map +1 -0
  318. package/dist/middleware/services/token-estimator/index.js +18 -0
  319. package/dist/middleware/services/token-estimator/index.js.map +1 -0
  320. package/dist/middleware/services/token-estimator/token-estimator.service.d.ts +97 -0
  321. package/dist/middleware/services/token-estimator/token-estimator.service.d.ts.map +1 -0
  322. package/dist/middleware/services/token-estimator/token-estimator.service.js +190 -0
  323. package/dist/middleware/services/token-estimator/token-estimator.service.js.map +1 -0
  324. package/dist/middleware/services/use-case-metrics-logger/index.d.ts +2 -0
  325. package/dist/middleware/services/use-case-metrics-logger/index.d.ts.map +1 -0
  326. package/dist/middleware/services/use-case-metrics-logger/index.js +18 -0
  327. package/dist/middleware/services/use-case-metrics-logger/index.js.map +1 -0
  328. package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.d.ts +89 -0
  329. package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.d.ts.map +1 -0
  330. package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.js +112 -0
  331. package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.js.map +1 -0
  332. package/dist/middleware/shared/config/app.config.d.ts +3 -0
  333. package/dist/middleware/shared/config/app.config.d.ts.map +1 -0
  334. package/dist/middleware/shared/config/app.config.js +76 -0
  335. package/dist/middleware/shared/config/app.config.js.map +1 -0
  336. package/dist/middleware/shared/config/index.d.ts +4 -0
  337. package/dist/middleware/shared/config/index.d.ts.map +1 -0
  338. package/dist/middleware/shared/config/index.js +21 -0
  339. package/dist/middleware/shared/config/index.js.map +1 -0
  340. package/dist/middleware/shared/config/logging.config.d.ts +49 -0
  341. package/dist/middleware/shared/config/logging.config.d.ts.map +1 -0
  342. package/dist/middleware/shared/config/logging.config.js +16 -0
  343. package/dist/middleware/shared/config/logging.config.js.map +1 -0
  344. package/dist/middleware/shared/config/models.config.d.ts +19 -0
  345. package/dist/middleware/shared/config/models.config.d.ts.map +1 -0
  346. package/dist/middleware/shared/config/models.config.js +39 -0
  347. package/dist/middleware/shared/config/models.config.js.map +1 -0
  348. package/dist/middleware/shared/constants/index.d.ts +2 -0
  349. package/dist/middleware/shared/constants/index.d.ts.map +1 -0
  350. package/dist/middleware/shared/constants/index.js +19 -0
  351. package/dist/middleware/shared/constants/index.js.map +1 -0
  352. package/dist/middleware/shared/constants/json-formatting.constants.d.ts +36 -0
  353. package/dist/middleware/shared/constants/json-formatting.constants.d.ts.map +1 -0
  354. package/dist/middleware/shared/constants/json-formatting.constants.js +81 -0
  355. package/dist/middleware/shared/constants/json-formatting.constants.js.map +1 -0
  356. package/dist/middleware/shared/types/base-request.types.d.ts +27 -0
  357. package/dist/middleware/shared/types/base-request.types.d.ts.map +1 -0
  358. package/dist/middleware/shared/types/base-request.types.js +3 -0
  359. package/dist/middleware/shared/types/base-request.types.js.map +1 -0
  360. package/dist/middleware/shared/types/client-info.d.ts +8 -0
  361. package/dist/middleware/shared/types/client-info.d.ts.map +1 -0
  362. package/dist/middleware/shared/types/client-info.js +3 -0
  363. package/dist/middleware/shared/types/client-info.js.map +1 -0
  364. package/dist/middleware/shared/types/index.d.ts +43 -0
  365. package/dist/middleware/shared/types/index.d.ts.map +1 -0
  366. package/dist/middleware/shared/types/index.js +20 -0
  367. package/dist/middleware/shared/types/index.js.map +1 -0
  368. package/dist/middleware/shared/utils/http.utils.d.ts +25 -0
  369. package/dist/middleware/shared/utils/http.utils.d.ts.map +1 -0
  370. package/dist/middleware/shared/utils/http.utils.js +44 -0
  371. package/dist/middleware/shared/utils/http.utils.js.map +1 -0
  372. package/dist/middleware/shared/utils/index.d.ts +5 -0
  373. package/dist/middleware/shared/utils/index.d.ts.map +1 -0
  374. package/dist/middleware/shared/utils/index.js +22 -0
  375. package/dist/middleware/shared/utils/index.js.map +1 -0
  376. package/dist/middleware/shared/utils/logging.utils.d.ts +30 -0
  377. package/dist/middleware/shared/utils/logging.utils.d.ts.map +1 -0
  378. package/dist/middleware/shared/utils/logging.utils.js +91 -0
  379. package/dist/middleware/shared/utils/logging.utils.js.map +1 -0
  380. package/dist/middleware/shared/utils/memory-management.utils.d.ts +10 -0
  381. package/dist/middleware/shared/utils/memory-management.utils.d.ts.map +1 -0
  382. package/dist/middleware/shared/utils/memory-management.utils.js +31 -0
  383. package/dist/middleware/shared/utils/memory-management.utils.js.map +1 -0
  384. package/dist/middleware/shared/utils/validation.utils.d.ts +12 -0
  385. package/dist/middleware/shared/utils/validation.utils.d.ts.map +1 -0
  386. package/dist/middleware/shared/utils/validation.utils.js +36 -0
  387. package/dist/middleware/shared/utils/validation.utils.js.map +1 -0
  388. package/dist/middleware/usecases/base/base-ai.usecase.d.ts +72 -0
  389. package/dist/middleware/usecases/base/base-ai.usecase.d.ts.map +1 -0
  390. package/dist/middleware/usecases/base/base-ai.usecase.js +125 -0
  391. package/dist/middleware/usecases/base/base-ai.usecase.js.map +1 -0
  392. package/dist/middleware/usecases/base/index.d.ts +2 -0
  393. package/dist/middleware/usecases/base/index.d.ts.map +1 -0
  394. package/dist/middleware/usecases/base/index.js +18 -0
  395. package/dist/middleware/usecases/base/index.js.map +1 -0
  396. package/package.json +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-management.utils.d.ts","sourceRoot":"","sources":["../../../../src/middleware/shared/utils/memory-management.utils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,IAAI,WAAW,CAQ5C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAW5D"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMemoryUsage = getMemoryUsage;
4
+ exports.isMemoryUsageCritical = isMemoryUsageCritical;
5
+ exports.forceGarbageCollection = forceGarbageCollection;
6
+ const ONE_MB = 1024 * 1024;
7
+ function getMemoryUsage() {
8
+ const used = process.memoryUsage();
9
+ return {
10
+ rss: `${Math.round(used.rss / ONE_MB)}MB`,
11
+ heapTotal: `${Math.round(used.heapTotal / ONE_MB)}MB`,
12
+ heapUsed: `${Math.round(used.heapUsed / ONE_MB)}MB`,
13
+ external: `${Math.round(used.external / ONE_MB)}MB`
14
+ };
15
+ }
16
+ function isMemoryUsageCritical(limit) {
17
+ const currentUsage = process.memoryUsage().heapUsed / ONE_MB;
18
+ return currentUsage > limit;
19
+ }
20
+ async function forceGarbageCollection() {
21
+ if (global.gc) {
22
+ const beforeGC = getMemoryUsage();
23
+ global.gc();
24
+ const afterGC = getMemoryUsage();
25
+ console.log('Manual garbage collection executed', {
26
+ before: beforeGC,
27
+ after: afterGC
28
+ });
29
+ }
30
+ }
31
+ //# sourceMappingURL=memory-management.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-management.utils.js","sourceRoot":"","sources":["../../../../src/middleware/shared/utils/memory-management.utils.ts"],"names":[],"mappings":";;AASA,wCAQC;AAED,sDAGC;AAED,wDAWC;AAnCD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAS3B,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO;QACL,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI;QACzC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI;QACrD,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;QACnD,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;KACpD,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC7D,OAAO,YAAY,GAAG,KAAK,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,sBAAsB;IAC1C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;YAChD,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Generic validation utilities for request parameters and data
3
+ */
4
+ export declare function validateRequestParams(params: Record<string, any>, required: string[]): {
5
+ isValid: boolean;
6
+ missing: string[];
7
+ };
8
+ export declare function isValidJsonString(str: string): boolean;
9
+ export declare function isNonEmptyString(value: any): value is string;
10
+ export declare function isPositiveNumber(value: any): boolean;
11
+ export declare function isValidRange(min: number, max: number, value: number): boolean;
12
+ //# sourceMappingURL=validation.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.utils.d.ts","sourceRoot":"","sources":["../../../../src/middleware/shared/utils/validation.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAAE,GACjB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAMzC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAEpD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7E"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * Generic validation utilities for request parameters and data
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateRequestParams = validateRequestParams;
7
+ exports.isValidJsonString = isValidJsonString;
8
+ exports.isNonEmptyString = isNonEmptyString;
9
+ exports.isPositiveNumber = isPositiveNumber;
10
+ exports.isValidRange = isValidRange;
11
+ function validateRequestParams(params, required) {
12
+ const missing = required.filter(param => !params[param]);
13
+ return {
14
+ isValid: missing.length === 0,
15
+ missing
16
+ };
17
+ }
18
+ function isValidJsonString(str) {
19
+ try {
20
+ JSON.parse(str);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ function isNonEmptyString(value) {
28
+ return typeof value === 'string' && value.trim().length > 0;
29
+ }
30
+ function isPositiveNumber(value) {
31
+ return typeof value === 'number' && value > 0 && !isNaN(value);
32
+ }
33
+ function isValidRange(min, max, value) {
34
+ return value >= min && value <= max;
35
+ }
36
+ //# sourceMappingURL=validation.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.utils.js","sourceRoot":"","sources":["../../../../src/middleware/shared/utils/validation.utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,sDASC;AAED,8CAOC;AAED,4CAEC;AAED,4CAEC;AAED,oCAEC;AA9BD,SAAgB,qBAAqB,CACnC,MAA2B,EAC3B,QAAkB;IAElB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC7B,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAU;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAU;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IAClE,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;AACtC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { ModelConfigKey, ValidatedLLMModelConfig } from '../../shared/config/models.config';
2
+ import { BaseAIRequest, BaseAIResult } from '../../shared/types/base-request.types';
3
+ import { ModelParameterOverrides } from '../../services/model-parameter-manager/model-parameter-manager.service';
4
+ /**
5
+ * Base abstract class for all AI use cases
6
+ * Provides common functionality and enforces configuration for each use case
7
+ * TPrompt: The type of prompt data (string, object, etc.)
8
+ * TRequest: The request type (must extend BaseAIRequest<TPrompt>)
9
+ * TResult: The result type (must extend BaseAIResult)
10
+ */
11
+ export declare abstract class BaseAIUseCase<TPrompt = string, TRequest extends BaseAIRequest<TPrompt> = BaseAIRequest<TPrompt>, TResult extends BaseAIResult = BaseAIResult> {
12
+ /**
13
+ * The system message defines the behavior and instructions for the AI model
14
+ * Must be defined by each specific use case
15
+ */
16
+ protected abstract readonly systemMessage: string;
17
+ /**
18
+ * Default model configuration key to use across all use cases
19
+ * Can be overridden by specific use cases if needed
20
+ */
21
+ protected static readonly DEFAULT_MODEL_CONFIG_KEY: ModelConfigKey;
22
+ /**
23
+ * The model configuration key to use for this specific use case
24
+ * If not overridden, uses the default model config key
25
+ */
26
+ protected get modelConfigKey(): ModelConfigKey;
27
+ /**
28
+ * Get the model configuration for this use case
29
+ * Returns validated config with guaranteed model name
30
+ */
31
+ protected get modelConfig(): ValidatedLLMModelConfig;
32
+ /**
33
+ * Creates a user message from the prompt
34
+ * Override in child classes for custom formatting
35
+ */
36
+ protected formatUserMessage(prompt: any): string;
37
+ /**
38
+ * Abstract method that each use case MUST implement
39
+ * Returns the specific template function for the use case
40
+ * This enforces the message pattern: each use case should have a corresponding message file
41
+ */
42
+ protected abstract getUserTemplate(): (formattedPrompt: string) => string;
43
+ /**
44
+ * Override model parameters for this specific use case
45
+ * Override this method in child classes to customize parameters
46
+ * @returns Parameter overrides to apply to the default model configuration
47
+ */
48
+ protected getParameterOverrides(): ModelParameterOverrides;
49
+ /**
50
+ * Execute the AI use case
51
+ * @param request The request parameters
52
+ * @returns The result of the AI processing
53
+ */
54
+ execute(request: TRequest): Promise<TResult>;
55
+ /**
56
+ * Process the raw AI response using the modern Recipe System
57
+ * Can be overridden by specific use cases if special processing is needed
58
+ */
59
+ protected processResponse(response: string): Promise<{
60
+ cleanedJson: string;
61
+ thinking: string;
62
+ }>;
63
+ /**
64
+ * Create the result object
65
+ * This is a template method to be implemented by specific use cases
66
+ * @param content The processed content to use for the result
67
+ * @param usedPrompt The formatted prompt that was used
68
+ * @param thinking Optional thinking content from the model
69
+ */
70
+ protected abstract createResult(content: string, usedPrompt: string, thinking?: string): TResult;
71
+ }
72
+ //# sourceMappingURL=base-ai.usecase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ai.usecase.d.ts","sourceRoot":"","sources":["../../../../src/middleware/usecases/base/base-ai.usecase.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,cAAc,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5G,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAEpF,OAAO,EAAgC,uBAAuB,EAAE,MAAM,wEAAwE,CAAC;AAG/I;;;;;;GAMG;AACH,8BAAsB,aAAa,CACjC,OAAO,GAAG,MAAM,EAChB,QAAQ,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAChE,OAAO,SAAS,YAAY,GAAG,YAAY;IAE3C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAElD;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAAY;IAE9E;;;OAGG;IACH,SAAS,KAAK,cAAc,IAAI,cAAc,CAE7C;IAED;;;OAGG;IACH,SAAS,KAAK,WAAW,IAAI,uBAAuB,CAEnD;IAED;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAShD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM;IAEzE;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,uBAAuB;IAI1D;;;;OAIG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IA2GzD;;;OAGG;cACa,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrG;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;CACjG"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAIUseCase = void 0;
4
+ const services_1 = require("../../services");
5
+ const models_config_1 = require("../../shared/config/models.config");
6
+ const response_processor_service_1 = require("../../services/response-processor.service");
7
+ const model_parameter_manager_service_1 = require("../../services/model-parameter-manager/model-parameter-manager.service");
8
+ const use_case_metrics_logger_1 = require("../../services/use-case-metrics-logger");
9
+ /**
10
+ * Base abstract class for all AI use cases
11
+ * Provides common functionality and enforces configuration for each use case
12
+ * TPrompt: The type of prompt data (string, object, etc.)
13
+ * TRequest: The request type (must extend BaseAIRequest<TPrompt>)
14
+ * TResult: The result type (must extend BaseAIResult)
15
+ */
16
+ class BaseAIUseCase {
17
+ /**
18
+ * The model configuration key to use for this specific use case
19
+ * If not overridden, uses the default model config key
20
+ */
21
+ get modelConfigKey() {
22
+ return this.constructor.DEFAULT_MODEL_CONFIG_KEY;
23
+ }
24
+ /**
25
+ * Get the model configuration for this use case
26
+ * Returns validated config with guaranteed model name
27
+ */
28
+ get modelConfig() {
29
+ return (0, models_config_1.getModelConfig)(this.modelConfigKey);
30
+ }
31
+ /**
32
+ * Creates a user message from the prompt
33
+ * Override in child classes for custom formatting
34
+ */
35
+ formatUserMessage(prompt) {
36
+ if (typeof prompt === 'string') {
37
+ return prompt;
38
+ }
39
+ // Basic JSON formatting for complex prompts
40
+ return JSON.stringify(prompt, null, 2);
41
+ }
42
+ /**
43
+ * Override model parameters for this specific use case
44
+ * Override this method in child classes to customize parameters
45
+ * @returns Parameter overrides to apply to the default model configuration
46
+ */
47
+ getParameterOverrides() {
48
+ return {}; // Default: no overrides
49
+ }
50
+ /**
51
+ * Execute the AI use case
52
+ * @param request The request parameters
53
+ * @returns The result of the AI processing
54
+ */
55
+ async execute(request) {
56
+ if (!request.prompt) {
57
+ throw new Error('Valid prompt must be provided');
58
+ }
59
+ // Format the raw prompt using formatUserMessage
60
+ const formattedPrompt = this.formatUserMessage(request.prompt);
61
+ // Apply the user template to create the final message
62
+ const userTemplate = this.getUserTemplate();
63
+ const formattedUserMessage = userTemplate(formattedPrompt);
64
+ const startTime = Date.now();
65
+ let success = false;
66
+ let errorMessage = '';
67
+ let thinking = '';
68
+ // Get parameter overrides from the use case
69
+ const overrides = this.getParameterOverrides();
70
+ // Get effective parameters by combining config and overrides
71
+ const effectiveParams = model_parameter_manager_service_1.ModelParameterManagerService.getEffectiveParameters({
72
+ temperature: this.modelConfig.temperature
73
+ }, overrides);
74
+ // Validate parameters
75
+ const validatedParams = model_parameter_manager_service_1.ModelParameterManagerService.validateParameters(effectiveParams);
76
+ const definedParams = model_parameter_manager_service_1.ModelParameterManagerService.getDefinedParameters(validatedParams);
77
+ // Log the start of execution with metrics
78
+ use_case_metrics_logger_1.UseCaseMetricsLoggerService.logStart(this.constructor.name, this.modelConfig.name, formattedUserMessage.length, validatedParams.temperature, definedParams);
79
+ try {
80
+ const result = await services_1.ollamaService.callOllamaApiWithSystemMessage(formattedUserMessage, this.systemMessage, {
81
+ model: this.modelConfig.name,
82
+ temperature: validatedParams.temperature,
83
+ authToken: this.modelConfig.bearerToken,
84
+ baseUrl: this.modelConfig.baseUrl,
85
+ ...model_parameter_manager_service_1.ModelParameterManagerService.toOllamaOptions(validatedParams),
86
+ debugContext: this.constructor.name
87
+ });
88
+ if (!result || !result.message) {
89
+ throw new Error('No response received from the LLM provider');
90
+ }
91
+ // Process the response using the ResponseProcessorService (async for Recipe System)
92
+ const { cleanedJson: processedContent, thinking: extractedThinking } = await response_processor_service_1.ResponseProcessorService.processResponseAsync(result.message.content);
93
+ thinking = extractedThinking;
94
+ success = true;
95
+ // Calculate and log metrics
96
+ const metrics = use_case_metrics_logger_1.UseCaseMetricsLoggerService.calculateMetrics(startTime, this.systemMessage, formattedUserMessage, result.message.content, thinking, this.modelConfig.name, success, errorMessage, definedParams);
97
+ // Log completion with metrics
98
+ use_case_metrics_logger_1.UseCaseMetricsLoggerService.logCompletion(this.constructor.name, metrics);
99
+ // Create and return the result
100
+ return this.createResult(processedContent, formattedUserMessage, extractedThinking);
101
+ }
102
+ catch (error) {
103
+ errorMessage = error instanceof Error ? error.message : 'Unknown error';
104
+ // Calculate metrics for failed execution
105
+ const metrics = use_case_metrics_logger_1.UseCaseMetricsLoggerService.calculateMetrics(startTime, this.systemMessage, formattedUserMessage, '', thinking, this.modelConfig.name, false, errorMessage, definedParams);
106
+ // Log completion with error
107
+ use_case_metrics_logger_1.UseCaseMetricsLoggerService.logCompletion(this.constructor.name, metrics);
108
+ throw error;
109
+ }
110
+ }
111
+ /**
112
+ * Process the raw AI response using the modern Recipe System
113
+ * Can be overridden by specific use cases if special processing is needed
114
+ */
115
+ async processResponse(response) {
116
+ return response_processor_service_1.ResponseProcessorService.processResponseAsync(response);
117
+ }
118
+ }
119
+ exports.BaseAIUseCase = BaseAIUseCase;
120
+ /**
121
+ * Default model configuration key to use across all use cases
122
+ * Can be overridden by specific use cases if needed
123
+ */
124
+ BaseAIUseCase.DEFAULT_MODEL_CONFIG_KEY = 'MODEL1';
125
+ //# sourceMappingURL=base-ai.usecase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ai.usecase.js","sourceRoot":"","sources":["../../../../src/middleware/usecases/base/base-ai.usecase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './base-ai.usecase';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/usecases/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base-ai.usecase"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/usecases/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
package/package.json ADDED
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "@loonylabs/llm-middleware",
3
+ "version": "2.0.0",
4
+ "description": "Complete middleware infrastructure for LLM-based backends with multi-provider support (Ollama, OpenAI, Anthropic, Google)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "start": "ts-node src/examples/simple-chat/index.ts",
9
+ "dev": "ts-node-dev --inspect --respawn src/examples/simple-chat/index.ts",
10
+ "build": "tsc",
11
+ "test": "npm run test:unit",
12
+ "test:all": "npm run test:unit && npm run test:basic && npm run test:integration && npm run test:integration:parameters && npm run test:robustness",
13
+ "test:unit": "jest",
14
+ "test:unit:watch": "jest --watch",
15
+ "test:unit:coverage": "jest --coverage",
16
+ "test:basic": "node tests/basic/test-middleware.js",
17
+ "test:integration": "node tests/integration/test-flat-formatter.js",
18
+ "test:integration:parameters": "node tests/integration/test-parameter-limits.js",
19
+ "test:robustness": "node tests/robustness/test-json-handling.js",
20
+ "test:e2e": "node tests/e2e/test-workflow.js",
21
+ "test:manual:smoke": "ts-node tests/manual/smoke-test.ts",
22
+ "test:manual:verify-params": "node tests/manual/verify-parameters.js",
23
+ "test:manual:formatter-demo": "ts-node tests/manual/request-formatter-demo.ts",
24
+ "test:manual:story-test": "ts-node tests/manual/story-generator-test.ts",
25
+ "test:ci": "jest --runInBand --ci --coverage",
26
+ "lint": "eslint src/**/*.ts",
27
+ "clean": "rm -rf dist",
28
+ "prepare": "npm run build",
29
+ "prepublishOnly": "npm run clean && npm run build && npm run test"
30
+ },
31
+ "keywords": [
32
+ "llm",
33
+ "middleware",
34
+ "ai",
35
+ "ollama",
36
+ "openai",
37
+ "anthropic",
38
+ "google",
39
+ "multi-provider",
40
+ "backend",
41
+ "typescript",
42
+ "express",
43
+ "json-cleaner",
44
+ "logging",
45
+ "chatbot",
46
+ "api",
47
+ "async",
48
+ "streaming",
49
+ "response-processing"
50
+ ],
51
+ "author": "loonylabs-dev",
52
+ "license": "MIT",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/loonylabs-dev/llm-middleware.git"
56
+ },
57
+ "bugs": {
58
+ "url": "https://github.com/loonylabs-dev/llm-middleware/issues"
59
+ },
60
+ "homepage": "https://github.com/loonylabs-dev/llm-middleware#readme",
61
+ "dependencies": {
62
+ "axios": "^1.7.9",
63
+ "cors": "^2.8.5",
64
+ "dotenv": "^16.4.7",
65
+ "express": "^4.18.2",
66
+ "gpt-tokenizer": "^3.2.0",
67
+ "uuid": "^11.1.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/cors": "^2.8.17",
71
+ "@types/express": "^4.17.21",
72
+ "@types/jest": "^29.5.14",
73
+ "@types/node": "^22.10.2",
74
+ "@types/uuid": "^10.0.0",
75
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
76
+ "@typescript-eslint/parser": "^6.0.0",
77
+ "eslint": "^8.45.0",
78
+ "jest": "^29.7.0",
79
+ "nodemon": "^3.1.9",
80
+ "ts-jest": "^29.3.4",
81
+ "ts-node": "^10.9.2",
82
+ "ts-node-dev": "^2.0.0",
83
+ "typescript": "^5.7.2"
84
+ },
85
+ "engines": {
86
+ "node": ">=18.0.0"
87
+ },
88
+ "files": [
89
+ "dist",
90
+ "README.md",
91
+ "LICENSE",
92
+ ".env.example"
93
+ ],
94
+ "publishConfig": {
95
+ "access": "public"
96
+ }
97
+ }