@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,325 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelParameterManagerService = void 0;
4
+ /**
5
+ * Service for managing and validating model parameters for AI requests
6
+ * Handles parameter combination, validation, and conversion to API formats
7
+ */
8
+ class ModelParameterManagerService {
9
+ /**
10
+ * Get the effective model parameters, combining config defaults and use case overrides
11
+ * @param modelConfig The model configuration from models.config
12
+ * @param overrides Optional overrides from the use case
13
+ * @returns Final model parameters to use
14
+ */
15
+ static getEffectiveParameters(modelConfig, overrides = {}) {
16
+ return {
17
+ temperature: overrides.temperatureOverride ?? modelConfig.temperature ?? this.DEFAULT_TEMPERATURE,
18
+ repeatPenalty: overrides.repeatPenalty,
19
+ topP: overrides.topP,
20
+ topK: overrides.topK,
21
+ frequencyPenalty: overrides.frequencyPenalty,
22
+ presencePenalty: overrides.presencePenalty,
23
+ repeatLastN: overrides.repeatLastN,
24
+ numPredict: overrides.num_predict,
25
+ numCtx: overrides.num_ctx,
26
+ numBatch: overrides.num_batch
27
+ };
28
+ }
29
+ /**
30
+ * Validate parameter values are within acceptable ranges
31
+ * @param parameters The parameters to validate
32
+ * @returns Validated parameters with any out-of-range values corrected
33
+ */
34
+ static validateParameters(parameters) {
35
+ const validated = { ...parameters };
36
+ // Temperature should be between 0 and 2
37
+ if (validated.temperature < 0)
38
+ validated.temperature = 0;
39
+ if (validated.temperature > 2)
40
+ validated.temperature = 2;
41
+ // Repeat penalty should be > 0
42
+ if (validated.repeatPenalty !== undefined) {
43
+ if (validated.repeatPenalty <= 0)
44
+ validated.repeatPenalty = 1.0;
45
+ }
46
+ // Top-p should be between 0 and 1
47
+ if (validated.topP !== undefined) {
48
+ if (validated.topP < 0)
49
+ validated.topP = 0;
50
+ if (validated.topP > 1)
51
+ validated.topP = 1;
52
+ }
53
+ // Top-k should be positive integer
54
+ if (validated.topK !== undefined) {
55
+ if (validated.topK < 1)
56
+ validated.topK = 1;
57
+ validated.topK = Math.round(validated.topK);
58
+ }
59
+ // Frequency penalty should be between 0 and 2
60
+ if (validated.frequencyPenalty !== undefined) {
61
+ if (validated.frequencyPenalty < 0)
62
+ validated.frequencyPenalty = 0;
63
+ if (validated.frequencyPenalty > 2)
64
+ validated.frequencyPenalty = 2;
65
+ }
66
+ // Presence penalty should be between 0 and 2
67
+ if (validated.presencePenalty !== undefined) {
68
+ if (validated.presencePenalty < 0)
69
+ validated.presencePenalty = 0;
70
+ if (validated.presencePenalty > 2)
71
+ validated.presencePenalty = 2;
72
+ }
73
+ // repeatLastN should be a positive number or -1 for num_ctx
74
+ if (validated.repeatLastN !== undefined) {
75
+ if (validated.repeatLastN < -1)
76
+ validated.repeatLastN = 64; // Default fallback
77
+ // If not -1 (for num_ctx), round to whole number
78
+ if (validated.repeatLastN !== -1) {
79
+ validated.repeatLastN = Math.round(validated.repeatLastN);
80
+ }
81
+ }
82
+ // numPredict should be a positive integer (max tokens to generate)
83
+ if (validated.numPredict !== undefined) {
84
+ if (validated.numPredict < 1)
85
+ validated.numPredict = 1;
86
+ validated.numPredict = Math.round(validated.numPredict);
87
+ }
88
+ // numCtx should be a positive integer (context window size)
89
+ if (validated.numCtx !== undefined) {
90
+ if (validated.numCtx < 128)
91
+ validated.numCtx = 128; // Minimum context
92
+ validated.numCtx = Math.round(validated.numCtx);
93
+ }
94
+ // numBatch should be a positive integer (batch size)
95
+ if (validated.numBatch !== undefined) {
96
+ if (validated.numBatch < 1)
97
+ validated.numBatch = 1;
98
+ validated.numBatch = Math.round(validated.numBatch);
99
+ }
100
+ return validated;
101
+ }
102
+ /**
103
+ * Create parameter subset for logging (only non-undefined values)
104
+ * @param parameters The parameters to filter
105
+ * @returns Object with only defined parameters
106
+ */
107
+ static getDefinedParameters(parameters) {
108
+ const result = {
109
+ temperature: parameters.temperature
110
+ };
111
+ if (parameters.repeatPenalty !== undefined) {
112
+ result.repeatPenalty = parameters.repeatPenalty;
113
+ }
114
+ if (parameters.topP !== undefined) {
115
+ result.topP = parameters.topP;
116
+ }
117
+ if (parameters.topK !== undefined) {
118
+ result.topK = parameters.topK;
119
+ }
120
+ if (parameters.frequencyPenalty !== undefined) {
121
+ result.frequencyPenalty = parameters.frequencyPenalty;
122
+ }
123
+ if (parameters.presencePenalty !== undefined) {
124
+ result.presencePenalty = parameters.presencePenalty;
125
+ }
126
+ if (parameters.repeatLastN !== undefined) {
127
+ result.repeatLastN = parameters.repeatLastN;
128
+ }
129
+ if (parameters.numPredict !== undefined) {
130
+ result.numPredict = parameters.numPredict;
131
+ }
132
+ if (parameters.numCtx !== undefined) {
133
+ result.numCtx = parameters.numCtx;
134
+ }
135
+ if (parameters.numBatch !== undefined) {
136
+ result.numBatch = parameters.numBatch;
137
+ }
138
+ return result;
139
+ }
140
+ /**
141
+ * Create parameter object for Ollama API request
142
+ * @param parameters The validated parameters
143
+ * @returns Object suitable for the Ollama API options field
144
+ */
145
+ static toOllamaOptions(parameters) {
146
+ const options = {};
147
+ // Add temperature (always included)
148
+ options.temperature = parameters.temperature;
149
+ // Add optional parameters with correct Ollama API names
150
+ if (parameters.repeatPenalty !== undefined) {
151
+ options.repeat_penalty = parameters.repeatPenalty;
152
+ }
153
+ if (parameters.topP !== undefined) {
154
+ options.top_p = parameters.topP;
155
+ }
156
+ if (parameters.topK !== undefined) {
157
+ options.top_k = parameters.topK;
158
+ }
159
+ if (parameters.frequencyPenalty !== undefined) {
160
+ options.frequency_penalty = parameters.frequencyPenalty;
161
+ }
162
+ if (parameters.presencePenalty !== undefined) {
163
+ options.presence_penalty = parameters.presencePenalty;
164
+ }
165
+ if (parameters.repeatLastN !== undefined) {
166
+ options.repeat_last_n = parameters.repeatLastN;
167
+ }
168
+ if (parameters.numPredict !== undefined) {
169
+ options.num_predict = parameters.numPredict;
170
+ }
171
+ if (parameters.numCtx !== undefined) {
172
+ options.num_ctx = parameters.numCtx;
173
+ }
174
+ if (parameters.numBatch !== undefined) {
175
+ options.num_batch = parameters.numBatch;
176
+ }
177
+ return options;
178
+ }
179
+ /**
180
+ * Create default parameters for a given model type or use case
181
+ *
182
+ * Available presets:
183
+ * - 'creative' / 'creative_writing': Optimized for novels, stories, narrative fiction
184
+ * - 'factual': Optimized for reports, documentation, journalism
185
+ * - 'poetic': Optimized for poetry, lyrics, artistic expression
186
+ * - 'dialogue': Optimized for character dialogue, conversational content
187
+ * - 'technical': Optimized for code documentation, technical guides
188
+ * - 'marketing': Optimized for advertisements, promotional content
189
+ * - 'analytical': General analytical tasks (legacy)
190
+ * - 'balanced': General balanced approach (default)
191
+ *
192
+ * @param modelType The type of model or use case
193
+ * @returns Default parameters for the model type
194
+ *
195
+ * For detailed documentation about each preset, see docs/OLLAMA_PARAMETERS.md
196
+ */
197
+ static getDefaultParametersForType(modelType) {
198
+ switch (modelType.toLowerCase()) {
199
+ // Creative Writing preset - for novels, stories, narrative fiction
200
+ case 'creative':
201
+ case 'creative_writing':
202
+ return {
203
+ temperature: 0.8,
204
+ repeatPenalty: 1.3,
205
+ frequencyPenalty: 0.2,
206
+ presencePenalty: 0.2,
207
+ topP: 0.92,
208
+ topK: 60,
209
+ repeatLastN: 128
210
+ };
211
+ // Factual Content preset - for reports, documentation, journalism
212
+ case 'factual':
213
+ return {
214
+ temperature: 0.4,
215
+ repeatPenalty: 1.2,
216
+ frequencyPenalty: 0.1,
217
+ presencePenalty: 0.1,
218
+ topP: 0.85,
219
+ topK: 40,
220
+ repeatLastN: 96
221
+ };
222
+ // Poetic Text preset - for poetry, lyrics, artistic expression
223
+ case 'poetic':
224
+ case 'poetry':
225
+ return {
226
+ temperature: 1.0,
227
+ repeatPenalty: 1.2,
228
+ frequencyPenalty: 0.3,
229
+ presencePenalty: 0.2,
230
+ topP: 0.95,
231
+ topK: 80,
232
+ repeatLastN: 64
233
+ };
234
+ // Dialogue & Conversation preset - for character dialogue, chat
235
+ case 'dialogue':
236
+ case 'conversation':
237
+ case 'conversational':
238
+ return {
239
+ temperature: 0.7,
240
+ repeatPenalty: 1.1,
241
+ frequencyPenalty: 0.3,
242
+ presencePenalty: 0.0,
243
+ topP: 0.9,
244
+ topK: 50,
245
+ repeatLastN: 32
246
+ };
247
+ // Technical Documentation preset - for code docs, API references
248
+ case 'technical':
249
+ case 'tech':
250
+ case 'documentation':
251
+ return {
252
+ temperature: 0.3,
253
+ repeatPenalty: 1.05,
254
+ frequencyPenalty: 0.0,
255
+ presencePenalty: 0.1,
256
+ topP: 0.8,
257
+ topK: 30,
258
+ repeatLastN: 128
259
+ };
260
+ // Marketing Copy preset - for ads, sales copy, promotional content
261
+ case 'marketing':
262
+ case 'advertising':
263
+ case 'promotional':
264
+ return {
265
+ temperature: 0.7,
266
+ repeatPenalty: 1.3,
267
+ frequencyPenalty: 0.4,
268
+ presencePenalty: 0.3,
269
+ topP: 0.9,
270
+ topK: 60,
271
+ repeatLastN: 96
272
+ };
273
+ // Legacy presets for backward compatibility
274
+ case 'analytical':
275
+ return {
276
+ temperature: 0.3,
277
+ topP: 0.8,
278
+ repeatPenalty: 1.05
279
+ };
280
+ // Balanced preset (default)
281
+ case 'balanced':
282
+ default:
283
+ return {
284
+ temperature: this.DEFAULT_TEMPERATURE,
285
+ topP: 0.9,
286
+ repeatPenalty: 1.1
287
+ };
288
+ }
289
+ }
290
+ /**
291
+ * Compare two parameter sets and return the differences
292
+ * @param params1 First parameter set
293
+ * @param params2 Second parameter set
294
+ * @returns Object showing differences
295
+ */
296
+ static compareParameters(params1, params2) {
297
+ const differences = {};
298
+ const allKeys = new Set([
299
+ ...Object.keys(params1),
300
+ ...Object.keys(params2)
301
+ ]);
302
+ for (const key of allKeys) {
303
+ if (params1[key] !== params2[key]) {
304
+ differences[key] = {
305
+ from: params1[key],
306
+ to: params2[key]
307
+ };
308
+ }
309
+ }
310
+ return differences;
311
+ }
312
+ /**
313
+ * Generate a summary string of the parameters for logging
314
+ * @param parameters The parameters to summarize
315
+ * @returns Human-readable parameter summary
316
+ */
317
+ static summarizeParameters(parameters) {
318
+ const defined = this.getDefinedParameters(parameters);
319
+ const parts = Object.entries(defined).map(([key, value]) => `${key}=${value}`);
320
+ return parts.join(', ');
321
+ }
322
+ }
323
+ exports.ModelParameterManagerService = ModelParameterManagerService;
324
+ ModelParameterManagerService.DEFAULT_TEMPERATURE = 0.7;
325
+ //# sourceMappingURL=model-parameter-manager.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-parameter-manager.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/model-parameter-manager/model-parameter-manager.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './request-formatter.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/request-formatter/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,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("./request-formatter.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/services/request-formatter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Generic RequestFormatterService for handling complex prompt objects.
3
+ * - Removes domain-specific dependencies (no book-specific fields)
4
+ * - Supports flexible extraction and formatting of nested request structures
5
+ */
6
+ export declare class RequestFormatterService {
7
+ /**
8
+ * Format user message based on the prompt type and use case template.
9
+ * Handles strings directly and formats objects into structured sections.
10
+ */
11
+ static formatUserMessage(prompt: any, templateFunction: (formattedPrompt: string) => string, useCaseName: string): string;
12
+ /**
13
+ * Validate that a prompt is not empty
14
+ */
15
+ static isValidPrompt(prompt: any): boolean;
16
+ /**
17
+ * Extract context information from various prompt formats (generic)
18
+ */
19
+ static extractContext(prompt: any): any | null;
20
+ /**
21
+ * Extract user instruction from various prompt formats (generic)
22
+ */
23
+ static extractInstruction(prompt: any): string;
24
+ /**
25
+ * Backward-compat alias for extractInstruction()
26
+ */
27
+ static extractUserInstruction(prompt: any): string;
28
+ /**
29
+ * Create a structured prompt object from simple inputs
30
+ */
31
+ static createStructuredPrompt(instruction: string, context?: any): object;
32
+ /**
33
+ * Merge multiple prompt components into a single formatted prompt string
34
+ */
35
+ static mergePromptComponents(components: Array<string | object>): string;
36
+ /**
37
+ * Sanitize prompt content to remove potentially problematic characters
38
+ */
39
+ static sanitizePrompt(prompt: string): string;
40
+ /**
41
+ * Get statistics about a prompt
42
+ */
43
+ static getPromptStats(prompt: any): {
44
+ type: 'string' | 'object' | 'unknown';
45
+ charCount: number;
46
+ wordCount: number;
47
+ hasContext: boolean;
48
+ isValid: boolean;
49
+ };
50
+ /**
51
+ * Extract data from various prompt formats (context + instruction + raw)
52
+ */
53
+ private static extractPromptData;
54
+ /**
55
+ * Build formatted prompt string from extracted data using FlatFormatter for context
56
+ */
57
+ private static buildFormattedPrompt;
58
+ /**
59
+ * Format a context object using FlatFormatter
60
+ */
61
+ private static formatContext;
62
+ /**
63
+ * Format a raw prompt object that doesn't match expected structure
64
+ */
65
+ private static formatRawPrompt;
66
+ /**
67
+ * Extract text content from various object structures (used by stats/merge fallbacks)
68
+ */
69
+ private static extractTextFromObject;
70
+ }
71
+ //# sourceMappingURL=request-formatter.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-formatter.service.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/request-formatter/request-formatter.service.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC;;;OAGG;WACW,iBAAiB,CAC7B,MAAM,EAAE,GAAG,EACX,gBAAgB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,EACrD,WAAW,EAAE,MAAM,GAClB,MAAM;IAUT;;OAEG;WACW,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAmBjD;;OAEG;WACW,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IAmBrD;;OAEG;WACW,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAoBrD;;OAEG;WACW,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAIzD;;OAEG;WACW,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM;IAMhF;;OAEG;WACW,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAe/E;;OAEG;WACW,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQpD;;OAEG;WACW,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG;QACzC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB;IAeD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAoBhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAsBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAa9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAwBrC"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestFormatterService = void 0;
4
+ const flat_formatter_1 = require("../flat-formatter");
5
+ /**
6
+ * Generic RequestFormatterService for handling complex prompt objects.
7
+ * - Removes domain-specific dependencies (no book-specific fields)
8
+ * - Supports flexible extraction and formatting of nested request structures
9
+ */
10
+ class RequestFormatterService {
11
+ /**
12
+ * Format user message based on the prompt type and use case template.
13
+ * Handles strings directly and formats objects into structured sections.
14
+ */
15
+ static formatUserMessage(prompt, templateFunction, useCaseName) {
16
+ if (typeof prompt === 'string') {
17
+ return templateFunction(prompt);
18
+ }
19
+ const extracted = this.extractPromptData(prompt);
20
+ const formattedPrompt = this.buildFormattedPrompt(extracted, useCaseName);
21
+ return templateFunction(formattedPrompt);
22
+ }
23
+ /**
24
+ * Validate that a prompt is not empty
25
+ */
26
+ static isValidPrompt(prompt) {
27
+ if (!prompt)
28
+ return false;
29
+ if (typeof prompt === 'string') {
30
+ return prompt.trim().length > 0;
31
+ }
32
+ if (typeof prompt === 'object') {
33
+ return Object.keys(prompt).some(key => {
34
+ const value = prompt[key];
35
+ if (typeof value === 'string')
36
+ return value.trim().length > 0;
37
+ if (typeof value === 'object' && value !== null)
38
+ return Object.keys(value).length > 0;
39
+ return false;
40
+ });
41
+ }
42
+ return false;
43
+ }
44
+ /**
45
+ * Extract context information from various prompt formats (generic)
46
+ */
47
+ static extractContext(prompt) {
48
+ if (typeof prompt !== 'object' || prompt === null)
49
+ return null;
50
+ // Prefer explicit, generic context fields
51
+ const contextFields = ['context', 'sessionContext', 'metadata'];
52
+ for (const field of contextFields) {
53
+ if (prompt[field]) {
54
+ return prompt[field];
55
+ }
56
+ }
57
+ // Nested prompt structure
58
+ if (prompt.prompt && typeof prompt.prompt === 'object') {
59
+ return this.extractContext(prompt.prompt);
60
+ }
61
+ return null;
62
+ }
63
+ /**
64
+ * Extract user instruction from various prompt formats (generic)
65
+ */
66
+ static extractInstruction(prompt) {
67
+ if (typeof prompt === 'string')
68
+ return prompt;
69
+ if (typeof prompt !== 'object' || prompt === null)
70
+ return '';
71
+ // Nested prompt structure support
72
+ if (prompt.prompt?.instruction) {
73
+ return prompt.prompt.instruction;
74
+ }
75
+ // Common instruction field names
76
+ const candidates = ['instruction', 'userInstruction', 'task', 'message', 'text', 'content', 'query', 'input', 'description'];
77
+ for (const key of candidates) {
78
+ const v = prompt[key];
79
+ if (typeof v === 'string' && v.trim())
80
+ return v;
81
+ }
82
+ // Fallback to general text extraction
83
+ return this.extractTextFromObject(prompt, 'instruction');
84
+ }
85
+ /**
86
+ * Backward-compat alias for extractInstruction()
87
+ */
88
+ static extractUserInstruction(prompt) {
89
+ return this.extractInstruction(prompt);
90
+ }
91
+ /**
92
+ * Create a structured prompt object from simple inputs
93
+ */
94
+ static createStructuredPrompt(instruction, context) {
95
+ const prompt = { userInstruction: instruction };
96
+ if (context)
97
+ prompt.context = context;
98
+ return prompt;
99
+ }
100
+ /**
101
+ * Merge multiple prompt components into a single formatted prompt string
102
+ */
103
+ static mergePromptComponents(components) {
104
+ const textParts = [];
105
+ for (const component of components) {
106
+ if (typeof component === 'string' && component.trim()) {
107
+ textParts.push(component.trim());
108
+ }
109
+ else if (typeof component === 'object' && component !== null) {
110
+ const extracted = this.extractTextFromObject(component, 'merge');
111
+ if (extracted.trim())
112
+ textParts.push(extracted.trim());
113
+ }
114
+ }
115
+ return textParts.join('\n\n');
116
+ }
117
+ /**
118
+ * Sanitize prompt content to remove potentially problematic characters
119
+ */
120
+ static sanitizePrompt(prompt) {
121
+ return prompt
122
+ .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '')
123
+ .replace(/\r\n/g, '\n')
124
+ .replace(/\r/g, '\n')
125
+ .trim();
126
+ }
127
+ /**
128
+ * Get statistics about a prompt
129
+ */
130
+ static getPromptStats(prompt) {
131
+ const type = typeof prompt === 'string' ? 'string' : typeof prompt === 'object' && prompt !== null ? 'object' : 'unknown';
132
+ const text = type === 'string' ? prompt : this.extractTextFromObject(prompt, 'stats');
133
+ const charCount = text.length;
134
+ const wordCount = text.trim() ? text.trim().split(/\s+/).length : 0;
135
+ const hasContext = type === 'object' && this.extractContext(prompt) !== null;
136
+ const isValid = this.isValidPrompt(prompt);
137
+ return { type, charCount, wordCount, hasContext, isValid };
138
+ }
139
+ // ===============
140
+ // Internal helpers
141
+ // ===============
142
+ /**
143
+ * Extract data from various prompt formats (context + instruction + raw)
144
+ */
145
+ static extractPromptData(prompt) {
146
+ if (prompt?.prompt && typeof prompt.prompt === 'object') {
147
+ return {
148
+ context: prompt.prompt.context ?? prompt.context,
149
+ instruction: prompt.prompt.instruction ?? prompt.instruction ?? prompt.userInstruction,
150
+ rawPrompt: prompt.prompt
151
+ };
152
+ }
153
+ return {
154
+ context: prompt?.context,
155
+ instruction: prompt?.instruction ?? prompt?.userInstruction,
156
+ rawPrompt: prompt
157
+ };
158
+ }
159
+ /**
160
+ * Build formatted prompt string from extracted data using FlatFormatter for context
161
+ */
162
+ static buildFormattedPrompt(extracted, useCaseName) {
163
+ const sections = [];
164
+ if (extracted.context && typeof extracted.context === 'object') {
165
+ const contextStr = this.formatContext(extracted.context);
166
+ if (contextStr)
167
+ sections.push(`## CONTEXT:\n${contextStr}`);
168
+ }
169
+ if (extracted.instruction && typeof extracted.instruction === 'string') {
170
+ sections.push(`## INSTRUCTION:\n${extracted.instruction}`);
171
+ }
172
+ if (sections.length === 0 && extracted.rawPrompt) {
173
+ return this.formatRawPrompt(extracted.rawPrompt);
174
+ }
175
+ return sections.join('\n\n');
176
+ }
177
+ /**
178
+ * Format a context object using FlatFormatter
179
+ */
180
+ static formatContext(context) {
181
+ if (typeof context !== 'object' || context === null) {
182
+ return String(context);
183
+ }
184
+ return flat_formatter_1.FlatFormatter.flatten(context, {
185
+ format: 'numbered',
186
+ ignoreEmptyValues: true,
187
+ keyValueSeparator: ': '
188
+ });
189
+ }
190
+ /**
191
+ * Format a raw prompt object that doesn't match expected structure
192
+ */
193
+ static formatRawPrompt(rawPrompt) {
194
+ if (typeof rawPrompt === 'string')
195
+ return rawPrompt;
196
+ if (typeof rawPrompt === 'object' && rawPrompt !== null) {
197
+ return flat_formatter_1.FlatFormatter.flatten(rawPrompt, {
198
+ format: 'numbered',
199
+ ignoreEmptyValues: true
200
+ });
201
+ }
202
+ return String(rawPrompt);
203
+ }
204
+ /**
205
+ * Extract text content from various object structures (used by stats/merge fallbacks)
206
+ */
207
+ static extractTextFromObject(obj, context) {
208
+ if (typeof obj === 'string')
209
+ return obj;
210
+ if (!obj || typeof obj !== 'object')
211
+ return '';
212
+ const textFields = [
213
+ 'instruction', 'userInstruction', 'task', 'message', 'text', 'content', 'query', 'input', 'description'
214
+ ];
215
+ for (const field of textFields) {
216
+ if (obj[field] && typeof obj[field] === 'string') {
217
+ return obj[field];
218
+ }
219
+ }
220
+ if (obj.prompt && typeof obj.prompt === 'object') {
221
+ return this.extractTextFromObject(obj.prompt, context);
222
+ }
223
+ const stringValues = Object.values(obj)
224
+ .filter((value) => typeof value === 'string' && value.trim().length > 0)
225
+ .join(' ');
226
+ return stringValues || '';
227
+ }
228
+ }
229
+ exports.RequestFormatterService = RequestFormatterService;
230
+ //# sourceMappingURL=request-formatter.service.js.map