@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,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHARACTER_GENERATOR_USER_TEMPLATE = exports.CHARACTER_GENERATOR_SYSTEM_MESSAGE = void 0;
4
+ // src/examples/character-generator/character-generator.messages.ts
5
+ const json_formatting_constants_1 = require("../../middleware/shared/constants/json-formatting.constants");
6
+ /**
7
+ * System message for character generation with detailed JSON schema
8
+ */
9
+ exports.CHARACTER_GENERATOR_SYSTEM_MESSAGE = (0, json_formatting_constants_1.withBasicJsonInstruction)(`You are an expert character creation assistant for creative writing. Your task is to generate detailed, compelling characters based on the provided context.
10
+
11
+ IMPORTANT: You MUST respond with ONLY a valid JSON object following this exact schema:
12
+
13
+ {
14
+ "Name": "Full character name",
15
+ "Age": "Age or age range (e.g. '25' or 'Early 20s')",
16
+ "Description": "Brief 2-3 sentence character overview",
17
+ "Appearance": "Detailed physical description including distinguishing features",
18
+ "Personality": "Core personality traits, temperament, and behavioral patterns",
19
+ "Background": "Character's history, upbringing, and formative experiences",
20
+ "Goals": "What the character wants to achieve (short and long-term)",
21
+ "Conflicts": "Internal and external conflicts the character faces",
22
+ "Relationships": "Key relationships and how they relate to others",
23
+ "SpecialAbilities": "Special skills, talents, or supernatural abilities (if any)",
24
+ "Weaknesses": "Character flaws, vulnerabilities, and limitations",
25
+ "Motivation": "Core driving force behind the character's actions",
26
+ "CharacterArc": "How the character is likely to grow or change",
27
+ "Dialogue_Style": "How the character speaks and communicates",
28
+ "Key_Relationships": ["Array of important relationship types"],
29
+ "Character_Flaws": ["Array of specific character flaws"],
30
+ "Strengths": ["Array of character strengths and positive traits"]
31
+ }
32
+
33
+ Rules:
34
+ - Respond with ONLY the JSON object, no additional text
35
+ - All fields are required except SpecialAbilities
36
+ - Make the character believable and three-dimensional
37
+ - Ensure the character fits the provided setting, genre, and audience
38
+ - Create internal consistency between all character elements
39
+ - Include realistic flaws and strengths that create story potential
40
+
41
+ <think>
42
+ I need to analyze the provided context carefully:
43
+ 1. Review the setting, genre, and target audience constraints
44
+ 2. Consider the specific role and constraints provided
45
+ 3. Create a character that fits organically within these parameters
46
+ 4. Ensure all JSON fields are populated with detailed, relevant content
47
+ 5. Make sure the character has clear motivation and potential for growth
48
+ </think>`);
49
+ /**
50
+ * User template - the formatted context is already complete from formatUserMessage
51
+ */
52
+ const CHARACTER_GENERATOR_USER_TEMPLATE = (formattedContext) => formattedContext;
53
+ exports.CHARACTER_GENERATOR_USER_TEMPLATE = CHARACTER_GENERATOR_USER_TEMPLATE;
54
+ //# sourceMappingURL=character-generator.messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-generator.messages.js","sourceRoot":"","sources":["../../../src/examples/character-generator/character-generator.messages.ts"],"names":[],"mappings":";;;AAAA,mEAAmE;AACnE,2GAAuG;AAEvG;;GAEG;AACU,QAAA,kCAAkC,GAAG,IAAA,oDAAwB,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAuClE,CAAC,CAAC;AAEX;;GAEG;AACI,MAAM,iCAAiC,GAAG,CAAC,gBAAwB,EAAU,EAAE,CAAC,gBAAgB,CAAC;AAA3F,QAAA,iCAAiC,qCAA0D"}
@@ -0,0 +1,129 @@
1
+ import { BaseAIUseCase } from '../../middleware/usecases/base/base-ai.usecase';
2
+ import { BaseAIRequest, BaseAIResult } from '../../middleware/shared/types/base-request.types';
3
+ import { ModelParameterOverrides } from '../../middleware/services/model-parameter-manager/model-parameter-manager.service';
4
+ /**
5
+ * Character generation prompt data
6
+ */
7
+ export interface CharacterPromptData {
8
+ characterName?: string;
9
+ role: string;
10
+ setting?: {
11
+ Name: string;
12
+ TimePeriod: string;
13
+ Location: string;
14
+ Culture: string;
15
+ Atmosphere: string;
16
+ };
17
+ genre?: {
18
+ Name: string;
19
+ Themes: string;
20
+ Style: string;
21
+ Conventions: string;
22
+ };
23
+ targetAudience?: {
24
+ Name: string;
25
+ AgeRange: string;
26
+ ReadingLevel: string;
27
+ PreferredThemes: string;
28
+ };
29
+ constraints: string[];
30
+ }
31
+ /**
32
+ * Character generation request interface
33
+ * Extends BaseAIRequest to support complex prompt objects
34
+ */
35
+ export interface CharacterGeneratorRequest extends BaseAIRequest<CharacterPromptData | string> {
36
+ }
37
+ /**
38
+ * Generated character structure (expected JSON response)
39
+ */
40
+ export interface GeneratedCharacter {
41
+ Name: string;
42
+ Age: string;
43
+ Description: string;
44
+ Appearance: string;
45
+ Personality: string;
46
+ Background: string;
47
+ Goals: string;
48
+ Conflicts: string;
49
+ Relationships: string;
50
+ SpecialAbilities?: string;
51
+ Weaknesses: string;
52
+ Motivation: string;
53
+ CharacterArc: string;
54
+ Dialogue_Style: string;
55
+ Key_Relationships: string[];
56
+ Character_Flaws: string[];
57
+ Strengths: string[];
58
+ }
59
+ /**
60
+ * Character generation result interface
61
+ * Extends BaseAIResult with character-specific data
62
+ */
63
+ export interface CharacterGeneratorResult extends BaseAIResult {
64
+ character: GeneratedCharacter;
65
+ rawResponse: string;
66
+ wasRepaired: boolean;
67
+ }
68
+ /**
69
+ * Advanced character generator use case that demonstrates:
70
+ * - FlatFormatter for input context preparation
71
+ * - Structured JSON output with schema
72
+ * - JSON cleaning and repair
73
+ * - Complex context building with presets
74
+ * - Message pattern with separate message files
75
+ */
76
+ export declare class CharacterGeneratorUseCase extends BaseAIUseCase<CharacterPromptData | string, CharacterGeneratorRequest, CharacterGeneratorResult> {
77
+ /**
78
+ * System message from message file
79
+ */
80
+ protected readonly systemMessage: string;
81
+ /**
82
+ * Get the user template from message file
83
+ */
84
+ protected getUserTemplate(): (formattedPrompt: string) => string;
85
+ /**
86
+ * Override model parameters for character generation
87
+ *
88
+ * Uses the Creative Writing preset optimized for generating rich, varied character descriptions.
89
+ * This configuration balances creativity with coherence, ensuring characters are interesting
90
+ * while maintaining consistency across all fields.
91
+ *
92
+ * @returns ModelParameterOverrides with Creative Writing preset
93
+ *
94
+ * **Parameter Selection Rationale:**
95
+ * - `temperature: 0.8` - Higher temperature for creative, varied character traits and descriptions
96
+ * - `repeatPenalty: 1.3` - Moderate penalty to reduce word repetition while allowing natural language flow
97
+ * - `frequencyPenalty: 0.2` - Encourages diverse vocabulary for richer character descriptions
98
+ * - `presencePenalty: 0.2` - Promotes introducing new character traits and avoiding clichés
99
+ * - `topP: 0.92` - High nucleus sampling for creative token selection
100
+ * - `topK: 60` - Moderate vocabulary diversity for balanced output
101
+ * - `repeatLastN: 128` - Extended context window to maintain consistency across all character fields
102
+ *
103
+ * **Expected Impact:**
104
+ * - More unique and memorable characters with distinct personalities
105
+ * - Reduced repetitive phrasing across character description fields
106
+ * - Natural, fluid writing style that doesn't feel formulaic
107
+ * - Consistent character voice throughout the entire description
108
+ *
109
+ * For more information about parameter presets, see docs/OLLAMA_PARAMETERS.md
110
+ */
111
+ protected getParameterOverrides(): ModelParameterOverrides;
112
+ /**
113
+ * Format the user message using FlatFormatter and presets
114
+ */
115
+ protected formatUserMessage(prompt: CharacterPromptData | string): string;
116
+ /**
117
+ * Create the result with parsed character data
118
+ */
119
+ protected createResult(content: string, usedPrompt: string, thinking?: string): CharacterGeneratorResult;
120
+ /**
121
+ * Validate that the character has all required fields
122
+ */
123
+ private validateCharacter;
124
+ /**
125
+ * Create a fallback character when JSON parsing completely fails
126
+ */
127
+ private createFallbackCharacter;
128
+ }
129
+ //# sourceMappingURL=character-generator.usecase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-generator.usecase.d.ts","sourceRoot":"","sources":["../../../src/examples/character-generator/character-generator.usecase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAM/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AAE5H;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,aAAa,CAAC,mBAAmB,GAAG,MAAM,CAAC;CAAG;AAEjG;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,qBAAa,yBAA0B,SAAQ,aAAa,CAAC,mBAAmB,GAAG,MAAM,EAAE,yBAAyB,EAAE,wBAAwB,CAAC;IAE7I;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,SAAsC;IAEtE;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM;IAIhE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,SAAS,CAAC,qBAAqB,IAAI,uBAAuB;IAa1D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,MAAM;IAmEzE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,wBAAwB;IAiCxG;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAoBhC"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharacterGeneratorUseCase = void 0;
4
+ const base_ai_usecase_1 = require("../../middleware/usecases/base/base-ai.usecase");
5
+ const character_generator_messages_1 = require("./character-generator.messages");
6
+ const flat_formatter_1 = require("../../middleware/services/flat-formatter");
7
+ /**
8
+ * Advanced character generator use case that demonstrates:
9
+ * - FlatFormatter for input context preparation
10
+ * - Structured JSON output with schema
11
+ * - JSON cleaning and repair
12
+ * - Complex context building with presets
13
+ * - Message pattern with separate message files
14
+ */
15
+ class CharacterGeneratorUseCase extends base_ai_usecase_1.BaseAIUseCase {
16
+ constructor() {
17
+ super(...arguments);
18
+ /**
19
+ * System message from message file
20
+ */
21
+ this.systemMessage = character_generator_messages_1.CHARACTER_GENERATOR_SYSTEM_MESSAGE;
22
+ }
23
+ /**
24
+ * Get the user template from message file
25
+ */
26
+ getUserTemplate() {
27
+ return character_generator_messages_1.CHARACTER_GENERATOR_USER_TEMPLATE;
28
+ }
29
+ /**
30
+ * Override model parameters for character generation
31
+ *
32
+ * Uses the Creative Writing preset optimized for generating rich, varied character descriptions.
33
+ * This configuration balances creativity with coherence, ensuring characters are interesting
34
+ * while maintaining consistency across all fields.
35
+ *
36
+ * @returns ModelParameterOverrides with Creative Writing preset
37
+ *
38
+ * **Parameter Selection Rationale:**
39
+ * - `temperature: 0.8` - Higher temperature for creative, varied character traits and descriptions
40
+ * - `repeatPenalty: 1.3` - Moderate penalty to reduce word repetition while allowing natural language flow
41
+ * - `frequencyPenalty: 0.2` - Encourages diverse vocabulary for richer character descriptions
42
+ * - `presencePenalty: 0.2` - Promotes introducing new character traits and avoiding clichés
43
+ * - `topP: 0.92` - High nucleus sampling for creative token selection
44
+ * - `topK: 60` - Moderate vocabulary diversity for balanced output
45
+ * - `repeatLastN: 128` - Extended context window to maintain consistency across all character fields
46
+ *
47
+ * **Expected Impact:**
48
+ * - More unique and memorable characters with distinct personalities
49
+ * - Reduced repetitive phrasing across character description fields
50
+ * - Natural, fluid writing style that doesn't feel formulaic
51
+ * - Consistent character voice throughout the entire description
52
+ *
53
+ * For more information about parameter presets, see docs/OLLAMA_PARAMETERS.md
54
+ */
55
+ getParameterOverrides() {
56
+ // Creative Writing preset - optimized for character generation
57
+ return {
58
+ temperatureOverride: 0.8,
59
+ repeatPenalty: 1.3,
60
+ frequencyPenalty: 0.2,
61
+ presencePenalty: 0.2,
62
+ topP: 0.92,
63
+ topK: 60,
64
+ repeatLastN: 128
65
+ };
66
+ }
67
+ /**
68
+ * Format the user message using FlatFormatter and presets
69
+ */
70
+ formatUserMessage(prompt) {
71
+ // If it's already a string, return as is
72
+ if (typeof prompt === 'string') {
73
+ return prompt;
74
+ }
75
+ const { characterName, role, setting, genre, targetAudience, constraints } = prompt;
76
+ let contextSections = [];
77
+ // Add role requirement
78
+ contextSections.push(`## CHARACTER ROLE REQUIREMENT:\n${role}`);
79
+ // Add optional character name
80
+ if (characterName) {
81
+ contextSections.push(`## SUGGESTED NAME:\n${characterName}`);
82
+ }
83
+ // Format setting as simple object if provided
84
+ if (setting) {
85
+ const formattedSetting = flat_formatter_1.FlatFormatter.flatten(setting, {
86
+ format: 'separator',
87
+ keyValueSeparator: ': ',
88
+ separator: '•'
89
+ });
90
+ contextSections.push(`## STORY SETTING:\n${formattedSetting}`);
91
+ }
92
+ // Format genre as simple object if provided
93
+ if (genre) {
94
+ const formattedGenre = flat_formatter_1.FlatFormatter.flatten(genre, {
95
+ format: 'separator',
96
+ keyValueSeparator: ': ',
97
+ separator: '•'
98
+ });
99
+ contextSections.push(`## GENRE REQUIREMENTS:\n${formattedGenre}`);
100
+ }
101
+ // Format target audience if provided
102
+ if (targetAudience) {
103
+ const formattedAudience = flat_formatter_1.FlatFormatter.flatten(targetAudience, {
104
+ format: 'separator',
105
+ keyValueSeparator: ': ',
106
+ separator: '•'
107
+ });
108
+ contextSections.push(`## TARGET AUDIENCE:\n${formattedAudience}`);
109
+ }
110
+ // Format constraints using FlatFormatter
111
+ if (constraints && constraints.length > 0) {
112
+ const constraintsFormatted = flat_formatter_1.FlatFormatter.flatten(constraints.map((constraint, index) => ({
113
+ constraint: constraint,
114
+ priority: "MUST FOLLOW"
115
+ })), {
116
+ format: 'numbered',
117
+ entryTitleKey: 'constraint',
118
+ ignoredKeys: ['constraint'],
119
+ keyValueSeparator: ': '
120
+ });
121
+ contextSections.push(`## CHARACTER CONSTRAINTS:\n${constraintsFormatted}`);
122
+ }
123
+ return contextSections.join('\n\n');
124
+ }
125
+ /**
126
+ * Create the result with parsed character data
127
+ */
128
+ createResult(content, usedPrompt, thinking) {
129
+ let character;
130
+ let wasRepaired = false;
131
+ let rawResponse = content;
132
+ try {
133
+ // First try to parse directly
134
+ character = JSON.parse(content);
135
+ }
136
+ catch (error) {
137
+ // If direct parsing fails, this indicates JSON was repaired by ResponseProcessorService
138
+ wasRepaired = true;
139
+ try {
140
+ character = JSON.parse(content);
141
+ }
142
+ catch (secondError) {
143
+ // If it still fails after cleaning, create a fallback character
144
+ character = this.createFallbackCharacter(content, rawResponse);
145
+ }
146
+ }
147
+ // Validate required fields
148
+ this.validateCharacter(character);
149
+ return {
150
+ generatedContent: content,
151
+ model: this.modelConfig.name,
152
+ usedPrompt: usedPrompt,
153
+ thinking: thinking,
154
+ character: character,
155
+ rawResponse: rawResponse,
156
+ wasRepaired: wasRepaired
157
+ };
158
+ }
159
+ /**
160
+ * Validate that the character has all required fields
161
+ */
162
+ validateCharacter(character) {
163
+ const requiredFields = [
164
+ 'Name', 'Age', 'Description', 'Appearance', 'Personality',
165
+ 'Background', 'Goals', 'Conflicts', 'Relationships',
166
+ 'Weaknesses', 'Motivation', 'CharacterArc', 'Dialogue_Style'
167
+ ];
168
+ const missingFields = requiredFields.filter(field => !character[field] ||
169
+ String(character[field]).trim() === '');
170
+ if (missingFields.length > 0) {
171
+ throw new Error(`Generated character is missing required fields: ${missingFields.join(', ')}`);
172
+ }
173
+ // Validate array fields
174
+ if (!Array.isArray(character.Key_Relationships)) {
175
+ character.Key_Relationships = [];
176
+ }
177
+ if (!Array.isArray(character.Character_Flaws)) {
178
+ character.Character_Flaws = [];
179
+ }
180
+ if (!Array.isArray(character.Strengths)) {
181
+ character.Strengths = [];
182
+ }
183
+ }
184
+ /**
185
+ * Create a fallback character when JSON parsing completely fails
186
+ */
187
+ createFallbackCharacter(content, rawResponse) {
188
+ return {
189
+ Name: "Character Generation Failed",
190
+ Age: "Unknown",
191
+ Description: "Character generation failed due to invalid response format.",
192
+ Appearance: "Unable to generate appearance.",
193
+ Personality: "Unable to generate personality.",
194
+ Background: "Unable to generate background.",
195
+ Goals: "Unable to generate goals.",
196
+ Conflicts: "Unable to generate conflicts.",
197
+ Relationships: "Unable to generate relationships.",
198
+ Weaknesses: "Unable to generate weaknesses.",
199
+ Motivation: "Unable to generate motivation.",
200
+ CharacterArc: "Unable to generate character arc.",
201
+ Dialogue_Style: "Unable to generate dialogue style.",
202
+ Key_Relationships: [],
203
+ Character_Flaws: ["Generation failure"],
204
+ Strengths: []
205
+ };
206
+ }
207
+ }
208
+ exports.CharacterGeneratorUseCase = CharacterGeneratorUseCase;
209
+ //# sourceMappingURL=character-generator.usecase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-generator.usecase.js","sourceRoot":"","sources":["../../../src/examples/character-generator/character-generator.usecase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * System message for the create character use case.
3
+ * This defines how the AI should behave and what format it should return.
4
+ */
5
+ export declare const CREATE_CHARACTER_SYSTEM_MESSAGE: string;
6
+ /**
7
+ * Template for constructing the user message.
8
+ * Takes the base user input and formats it into a complete prompt.
9
+ */
10
+ export declare const CREATE_CHARACTER_USER_TEMPLATE: (baseInput: string) => string;
11
+ //# sourceMappingURL=create-character.messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-character.messages.d.ts","sourceRoot":"","sources":["../../../src/examples/character-generator/create-character.messages.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,QAiBxC,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,WAAW,MAAM,KAAG,MAI7B,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CREATE_CHARACTER_USER_TEMPLATE = exports.CREATE_CHARACTER_SYSTEM_MESSAGE = void 0;
4
+ // src/middleware/messages/examples/create-character.messages.ts
5
+ const json_formatting_constants_1 = require("../../middleware/shared/constants/json-formatting.constants");
6
+ /**
7
+ * System message for the create character use case.
8
+ * This defines how the AI should behave and what format it should return.
9
+ */
10
+ exports.CREATE_CHARACTER_SYSTEM_MESSAGE = (0, json_formatting_constants_1.withArrayJsonInstruction)(`
11
+ You are a character expert in literature. Your job is to create literary character suggestions based on user input.
12
+ Be creative but plausible. Keep it concise.
13
+ When creating characters, strictly follow this JSON Array structure:
14
+ [{
15
+ "Character_Name": "Name of the character",
16
+ "Character_Description": "Brief description of the character and their role in the story",
17
+ "Character_Appearance": "Description of physical appearance",
18
+ "Character_Strengths": ["Strength1", "Strength2", "Strength3"],
19
+ "Character_Weaknesses": ["Weakness1", "Weakness2", "Weakness3"],
20
+ "Character_SelfImage": "How the character sees themselves",
21
+ "Character_Relationships": {
22
+ "Family": "Description of family relationships",
23
+ "Friends": "Description of friendships",
24
+ "Rivals": "Description of rivalries"
25
+ },
26
+ "Character_Specialty": "Special ability or expertise of the character"
27
+ }]`);
28
+ /**
29
+ * Template for constructing the user message.
30
+ * Takes the base user input and formats it into a complete prompt.
31
+ */
32
+ const CREATE_CHARACTER_USER_TEMPLATE = (baseInput) => `
33
+ Create 2 characters based on the following elements: ${baseInput}
34
+ Make sure the characters fit well together and the setting, but are still different from each other.
35
+
36
+ ${json_formatting_constants_1.JSON_ARRAY_FORMATTING_INSTRUCTIONS}`;
37
+ exports.CREATE_CHARACTER_USER_TEMPLATE = CREATE_CHARACTER_USER_TEMPLATE;
38
+ //# sourceMappingURL=create-character.messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-character.messages.js","sourceRoot":"","sources":["../../../src/examples/character-generator/create-character.messages.ts"],"names":[],"mappings":";;;AAAA,gEAAgE;AAChE,2GAA2I;AAE3I;;;GAGG;AACU,QAAA,+BAA+B,GAAG,IAAA,oDAAwB,EAAC;;;;;;;;;;;;;;;;;GAiBrE,CAAC,CAAC;AAEL;;;GAGG;AACI,MAAM,8BAA8B,GAAG,CAAC,SAAiB,EAAU,EAAE,CAAC;uDACtB,SAAS;;;EAG9D,8DAAkC,EAAE,CAAC;AAJ1B,QAAA,8BAA8B,kCAIJ"}
@@ -0,0 +1,99 @@
1
+ import { BasePreset, ProcessedEntity } from '../../middleware/services/flat-formatter';
2
+ /**
3
+ * Product entity - Example demonstrating COMPLEX FlatFormatter capabilities
4
+ *
5
+ * This example shows:
6
+ * - **Nested objects** (pricing, metadata)
7
+ * - **Arrays** (features, tags, reviews)
8
+ * - **Optional fields** with fallbacks
9
+ * - **Complex transformations** (joining, aggregating, calculating)
10
+ * - **String composition** (combining multiple fields)
11
+ *
12
+ * Use this as a template for entities with complex structures.
13
+ */
14
+ export interface Product {
15
+ id?: string;
16
+ name: string;
17
+ description: string;
18
+ category: string;
19
+ pricing: {
20
+ basePrice: number;
21
+ currency: string;
22
+ discountPercent?: number;
23
+ taxRate?: number;
24
+ };
25
+ features?: string[];
26
+ tags?: string[];
27
+ metadata?: {
28
+ manufacturer: string;
29
+ origin: string;
30
+ certifications?: string[];
31
+ };
32
+ reviews?: Array<{
33
+ rating: number;
34
+ comment: string;
35
+ author?: string;
36
+ }>;
37
+ inStock?: boolean;
38
+ quantity?: number;
39
+ }
40
+ /**
41
+ * ProcessedProduct - Normalized, LLM-ready structure
42
+ *
43
+ * Shows how preprocessing transforms complex data:
44
+ * - Arrays joined to strings
45
+ * - Nested objects flattened
46
+ * - Calculated fields added
47
+ * - Everything normalized to strings
48
+ */
49
+ export interface ProcessedProduct extends ProcessedEntity {
50
+ [key: string]: string | number | boolean;
51
+ Name: string;
52
+ Description: string;
53
+ Category: string;
54
+ 'Price': string;
55
+ 'Discount': string;
56
+ 'Final Price': string;
57
+ 'Features': string;
58
+ 'Tags': string;
59
+ 'Manufacturer': string;
60
+ 'Origin': string;
61
+ 'Certifications': string;
62
+ 'Average Rating': string;
63
+ 'Review Count': string;
64
+ 'Sample Reviews': string;
65
+ 'Availability': string;
66
+ }
67
+ /**
68
+ * ProductPreset - Demonstrates advanced preprocessing
69
+ *
70
+ * Key techniques:
71
+ * 1. Array handling (join, map, filter)
72
+ * 2. Nested object access with optional chaining
73
+ * 3. Calculations (discounts, averages)
74
+ * 4. String composition
75
+ * 5. Fallback values
76
+ */
77
+ export declare class ProductPreset extends BasePreset<Product, ProcessedProduct> {
78
+ constructor();
79
+ protected preprocessEntity(product: Product): ProcessedProduct;
80
+ }
81
+ /**
82
+ * Singleton instance for global use
83
+ *
84
+ * Usage:
85
+ * ```typescript
86
+ * import { productPreset } from 'llm-middleware';
87
+ *
88
+ * const product = {
89
+ * name: 'Wireless Mouse',
90
+ * pricing: { basePrice: 29.99, currency: 'USD', discountPercent: 15 },
91
+ * features: ['Bluetooth', 'Ergonomic', '3-year warranty'],
92
+ * // ... more fields
93
+ * };
94
+ *
95
+ * const formatted = productPreset.formatForLLM(product, "## PRODUCT:");
96
+ * ```
97
+ */
98
+ export declare const productPreset: ProductPreset;
99
+ //# sourceMappingURL=product-preset.example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-preset.example.d.ts","sourceRoot":"","sources":["../../../src/examples/flat-formatter-demo/product-preset.example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEvF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAGhB,QAAQ,CAAC,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAGF,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IAGH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IAGf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC;;IAKtE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;CAuD/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.productPreset = exports.ProductPreset = void 0;
4
+ const flat_formatter_1 = require("../../middleware/services/flat-formatter");
5
+ /**
6
+ * ProductPreset - Demonstrates advanced preprocessing
7
+ *
8
+ * Key techniques:
9
+ * 1. Array handling (join, map, filter)
10
+ * 2. Nested object access with optional chaining
11
+ * 3. Calculations (discounts, averages)
12
+ * 4. String composition
13
+ * 5. Fallback values
14
+ */
15
+ class ProductPreset extends flat_formatter_1.BasePreset {
16
+ constructor() {
17
+ super('Product');
18
+ }
19
+ preprocessEntity(product) {
20
+ // Calculate pricing
21
+ const basePrice = product.pricing.basePrice;
22
+ const currency = product.pricing.currency;
23
+ const discount = product.pricing.discountPercent || 0;
24
+ const finalPrice = basePrice * (1 - discount / 100);
25
+ // Process reviews
26
+ const reviews = product.reviews || [];
27
+ const avgRating = reviews.length > 0
28
+ ? (reviews.reduce((sum, r) => sum + r.rating, 0) / reviews.length).toFixed(1)
29
+ : 'No ratings';
30
+ const sampleReviews = reviews.length > 0
31
+ ? reviews
32
+ .slice(0, 2) // First 2 reviews
33
+ .map(r => `"${r.comment}" (${r.rating}/5)${r.author ? ` - ${r.author}` : ''}`)
34
+ .join('; ')
35
+ : 'No reviews yet';
36
+ // Determine availability
37
+ const inStock = product.inStock ?? false;
38
+ const quantity = product.quantity ?? 0;
39
+ const availability = inStock
40
+ ? `In Stock (${quantity} units available)`
41
+ : 'Out of Stock';
42
+ return {
43
+ 'Name': product.name,
44
+ 'Description': product.description,
45
+ 'Category': product.category,
46
+ // Pricing
47
+ 'Price': `${basePrice.toFixed(2)} ${currency}`,
48
+ 'Discount': discount > 0 ? `${discount}% OFF` : 'No discount',
49
+ 'Final Price': `${finalPrice.toFixed(2)} ${currency}`,
50
+ // Arrays - join with commas
51
+ 'Features': product.features?.join(', ') || 'No features listed',
52
+ 'Tags': product.tags?.join(', ') || 'No tags',
53
+ // Metadata - flatten nested object
54
+ 'Manufacturer': product.metadata?.manufacturer || 'Unknown',
55
+ 'Origin': product.metadata?.origin || 'Unknown',
56
+ 'Certifications': product.metadata?.certifications?.join(', ') || 'None',
57
+ // Reviews - aggregate data
58
+ 'Average Rating': avgRating + ' / 5',
59
+ 'Review Count': `${reviews.length} review${reviews.length !== 1 ? 's' : ''}`,
60
+ 'Sample Reviews': sampleReviews,
61
+ // Availability
62
+ 'Availability': availability
63
+ };
64
+ }
65
+ }
66
+ exports.ProductPreset = ProductPreset;
67
+ /**
68
+ * Singleton instance for global use
69
+ *
70
+ * Usage:
71
+ * ```typescript
72
+ * import { productPreset } from 'llm-middleware';
73
+ *
74
+ * const product = {
75
+ * name: 'Wireless Mouse',
76
+ * pricing: { basePrice: 29.99, currency: 'USD', discountPercent: 15 },
77
+ * features: ['Bluetooth', 'Ergonomic', '3-year warranty'],
78
+ * // ... more fields
79
+ * };
80
+ *
81
+ * const formatted = productPreset.formatForLLM(product, "## PRODUCT:");
82
+ * ```
83
+ */
84
+ exports.productPreset = new ProductPreset();
85
+ //# sourceMappingURL=product-preset.example.js.map