@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.
- package/.env.example +21 -0
- package/LICENSE +21 -0
- package/README.md +629 -0
- package/dist/examples/character-generator/character-generator.messages.d.ts +9 -0
- package/dist/examples/character-generator/character-generator.messages.d.ts.map +1 -0
- package/dist/examples/character-generator/character-generator.messages.js +54 -0
- package/dist/examples/character-generator/character-generator.messages.js.map +1 -0
- package/dist/examples/character-generator/character-generator.usecase.d.ts +129 -0
- package/dist/examples/character-generator/character-generator.usecase.d.ts.map +1 -0
- package/dist/examples/character-generator/character-generator.usecase.js +209 -0
- package/dist/examples/character-generator/character-generator.usecase.js.map +1 -0
- package/dist/examples/character-generator/create-character.messages.d.ts +11 -0
- package/dist/examples/character-generator/create-character.messages.d.ts.map +1 -0
- package/dist/examples/character-generator/create-character.messages.js +38 -0
- package/dist/examples/character-generator/create-character.messages.js.map +1 -0
- package/dist/examples/flat-formatter-demo/product-preset.example.d.ts +99 -0
- package/dist/examples/flat-formatter-demo/product-preset.example.d.ts.map +1 -0
- package/dist/examples/flat-formatter-demo/product-preset.example.js +85 -0
- package/dist/examples/flat-formatter-demo/product-preset.example.js.map +1 -0
- package/dist/examples/simple-chat/chat.controller.d.ts +15 -0
- package/dist/examples/simple-chat/chat.controller.d.ts.map +1 -0
- package/dist/examples/simple-chat/chat.controller.js +39 -0
- package/dist/examples/simple-chat/chat.controller.js.map +1 -0
- package/dist/examples/simple-chat/chat.messages.d.ts +10 -0
- package/dist/examples/simple-chat/chat.messages.d.ts.map +1 -0
- package/dist/examples/simple-chat/chat.messages.js +17 -0
- package/dist/examples/simple-chat/chat.messages.js.map +1 -0
- package/dist/examples/simple-chat/chat.usecase.d.ts +33 -0
- package/dist/examples/simple-chat/chat.usecase.d.ts.map +1 -0
- package/dist/examples/simple-chat/chat.usecase.js +40 -0
- package/dist/examples/simple-chat/chat.usecase.js.map +1 -0
- package/dist/examples/simple-chat/index.d.ts +3 -0
- package/dist/examples/simple-chat/index.d.ts.map +1 -0
- package/dist/examples/simple-chat/index.js +57 -0
- package/dist/examples/simple-chat/index.js.map +1 -0
- package/dist/examples/story-generator/story-generator.messages.d.ts +13 -0
- package/dist/examples/story-generator/story-generator.messages.d.ts.map +1 -0
- package/dist/examples/story-generator/story-generator.messages.js +41 -0
- package/dist/examples/story-generator/story-generator.messages.js.map +1 -0
- package/dist/examples/story-generator/story-generator.usecase.d.ts +115 -0
- package/dist/examples/story-generator/story-generator.usecase.d.ts.map +1 -0
- package/dist/examples/story-generator/story-generator.usecase.js +121 -0
- package/dist/examples/story-generator/story-generator.usecase.js.map +1 -0
- package/dist/examples/tweet-generator/tweet-generator.messages.d.ts +15 -0
- package/dist/examples/tweet-generator/tweet-generator.messages.d.ts.map +1 -0
- package/dist/examples/tweet-generator/tweet-generator.messages.js +40 -0
- package/dist/examples/tweet-generator/tweet-generator.messages.js.map +1 -0
- package/dist/examples/tweet-generator/tweet-generator.usecase.d.ts +92 -0
- package/dist/examples/tweet-generator/tweet-generator.usecase.d.ts.map +1 -0
- package/dist/examples/tweet-generator/tweet-generator.usecase.js +116 -0
- package/dist/examples/tweet-generator/tweet-generator.usecase.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/controllers/base/base.controller.d.ts +16 -0
- package/dist/middleware/controllers/base/base.controller.d.ts.map +1 -0
- package/dist/middleware/controllers/base/base.controller.js +38 -0
- package/dist/middleware/controllers/base/base.controller.js.map +1 -0
- package/dist/middleware/controllers/base/index.d.ts +2 -0
- package/dist/middleware/controllers/base/index.d.ts.map +1 -0
- package/dist/middleware/controllers/base/index.js +19 -0
- package/dist/middleware/controllers/base/index.js.map +1 -0
- package/dist/middleware/index.d.ts +7 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +27 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/services/data-flow-logger/data-flow-logger.service.d.ts +127 -0
- package/dist/middleware/services/data-flow-logger/data-flow-logger.service.d.ts.map +1 -0
- package/dist/middleware/services/data-flow-logger/data-flow-logger.service.js +341 -0
- package/dist/middleware/services/data-flow-logger/data-flow-logger.service.js.map +1 -0
- package/dist/middleware/services/data-flow-logger/index.d.ts +2 -0
- package/dist/middleware/services/data-flow-logger/index.d.ts.map +1 -0
- package/dist/middleware/services/data-flow-logger/index.js +18 -0
- package/dist/middleware/services/data-flow-logger/index.js.map +1 -0
- package/dist/middleware/services/flat-formatter/flat-formatter.service.d.ts +86 -0
- package/dist/middleware/services/flat-formatter/flat-formatter.service.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/flat-formatter.service.js +333 -0
- package/dist/middleware/services/flat-formatter/flat-formatter.service.js.map +1 -0
- package/dist/middleware/services/flat-formatter/index.d.ts +4 -0
- package/dist/middleware/services/flat-formatter/index.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/index.js +28 -0
- package/dist/middleware/services/flat-formatter/index.js.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/base-preset.d.ts +68 -0
- package/dist/middleware/services/flat-formatter/presets/base-preset.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/base-preset.js +238 -0
- package/dist/middleware/services/flat-formatter/presets/base-preset.js.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/index.d.ts +5 -0
- package/dist/middleware/services/flat-formatter/presets/index.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/index.js +28 -0
- package/dist/middleware/services/flat-formatter/presets/index.js.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/types/entity-types.d.ts +23 -0
- package/dist/middleware/services/flat-formatter/presets/types/entity-types.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/types/entity-types.js +3 -0
- package/dist/middleware/services/flat-formatter/presets/types/entity-types.js.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.d.ts +30 -0
- package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.d.ts.map +1 -0
- package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.js +3 -0
- package/dist/middleware/services/flat-formatter/presets/types/processed-entity-types.js.map +1 -0
- package/dist/middleware/services/index.d.ts +10 -0
- package/dist/middleware/services/index.d.ts.map +1 -0
- package/dist/middleware/services/index.js +28 -0
- package/dist/middleware/services/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/index.d.ts +3 -0
- package/dist/middleware/services/json-cleaner/helpers/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/index.js +19 -0
- package/dist/middleware/services/json-cleaner/helpers/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.d.ts +52 -0
- package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.js +271 -0
- package/dist/middleware/services/json-cleaner/helpers/json-cleaner.analyzer.js.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.d.ts +83 -0
- package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.js +326 -0
- package/dist/middleware/services/json-cleaner/helpers/json-validation.helper.js.map +1 -0
- package/dist/middleware/services/json-cleaner/index.d.ts +9 -0
- package/dist/middleware/services/json-cleaner/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/index.js +31 -0
- package/dist/middleware/services/json-cleaner/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner-logger.d.ts +59 -0
- package/dist/middleware/services/json-cleaner/json-cleaner-logger.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner-logger.js +164 -0
- package/dist/middleware/services/json-cleaner/json-cleaner-logger.js.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.d.ts +56 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.js +178 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.orchestrator.js.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.service.d.ts +94 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.service.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.service.js +175 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.service.js.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.types.d.ts +92 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.types.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.types.js +3 -0
- package/dist/middleware/services/json-cleaner/json-cleaner.types.js.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/index.d.ts +4 -0
- package/dist/middleware/services/json-cleaner/parsers/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/index.js +20 -0
- package/dist/middleware/services/json-cleaner/parsers/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.d.ts +32 -0
- package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.js +148 -0
- package/dist/middleware/services/json-cleaner/parsers/json-extractor.parser.js.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/markdown.parser.d.ts +19 -0
- package/dist/middleware/services/json-cleaner/parsers/markdown.parser.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/markdown.parser.js +43 -0
- package/dist/middleware/services/json-cleaner/parsers/markdown.parser.js.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.d.ts +19 -0
- package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.js +37 -0
- package/dist/middleware/services/json-cleaner/parsers/think-tag.parser.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.d.ts +40 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.js +138 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-context.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.d.ts +74 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.js +230 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-engine.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.d.ts +16 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.js +179 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/cleaning-recipe.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.d.ts +88 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.js +178 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/conditions.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.d.ts +51 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.js +219 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-builder.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.d.ts +62 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.js +217 -0
- package/dist/middleware/services/json-cleaner/recipe-system/core/recipe-steps.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/factory.d.ts +46 -0
- package/dist/middleware/services/json-cleaner/recipe-system/factory.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/factory.js +52 -0
- package/dist/middleware/services/json-cleaner/recipe-system/factory.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/index.d.ts +12 -0
- package/dist/middleware/services/json-cleaner/recipe-system/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/index.js +28 -0
- package/dist/middleware/services/json-cleaner/recipe-system/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.d.ts +55 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.js +348 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/detectors.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.d.ts +70 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.js +568 -0
- package/dist/middleware/services/json-cleaner/recipe-system/operations/fixers.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.d.ts +11 -0
- package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.js +103 -0
- package/dist/middleware/services/json-cleaner/recipe-system/recipes/templates.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.d.ts +171 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.js +3 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/operation.types.js.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.d.ts +224 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.js +3 -0
- package/dist/middleware/services/json-cleaner/recipe-system/types/recipe.types.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.d.ts +29 -0
- package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.js +128 -0
- package/dist/middleware/services/json-cleaner/strategies/aggressive.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.d.ts +38 -0
- package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.js +18 -0
- package/dist/middleware/services/json-cleaner/strategies/base-cleaner.strategy.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.d.ts +65 -0
- package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.js +420 -0
- package/dist/middleware/services/json-cleaner/strategies/comma-fixer.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.d.ts +50 -0
- package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.js +416 -0
- package/dist/middleware/services/json-cleaner/strategies/control-character.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.d.ts +27 -0
- package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.js +84 -0
- package/dist/middleware/services/json-cleaner/strategies/duplicate-key.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/index.d.ts +8 -0
- package/dist/middleware/services/json-cleaner/strategies/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/index.js +24 -0
- package/dist/middleware/services/json-cleaner/strategies/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.d.ts +23 -0
- package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.js +65 -0
- package/dist/middleware/services/json-cleaner/strategies/string-escaper.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.d.ts +48 -0
- package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.js +188 -0
- package/dist/middleware/services/json-cleaner/strategies/structural-repair.cleaner.js.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/console-logger.util.d.ts +50 -0
- package/dist/middleware/services/json-cleaner/utils/console-logger.util.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/console-logger.util.js +95 -0
- package/dist/middleware/services/json-cleaner/utils/console-logger.util.js.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.d.ts +59 -0
- package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.js +326 -0
- package/dist/middleware/services/json-cleaner/utils/control-char-diagnostics.util.js.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/index.d.ts +3 -0
- package/dist/middleware/services/json-cleaner/utils/index.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/index.js +19 -0
- package/dist/middleware/services/json-cleaner/utils/index.js.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/json-inspector.util.d.ts +27 -0
- package/dist/middleware/services/json-cleaner/utils/json-inspector.util.d.ts.map +1 -0
- package/dist/middleware/services/json-cleaner/utils/json-inspector.util.js +139 -0
- package/dist/middleware/services/json-cleaner/utils/json-inspector.util.js.map +1 -0
- package/dist/middleware/services/llm/index.d.ts +5 -0
- package/dist/middleware/services/llm/index.d.ts.map +1 -0
- package/dist/middleware/services/llm/index.js +25 -0
- package/dist/middleware/services/llm/index.js.map +1 -0
- package/dist/middleware/services/llm/llm.service.d.ts +43 -0
- package/dist/middleware/services/llm/llm.service.d.ts.map +1 -0
- package/dist/middleware/services/llm/llm.service.js +70 -0
- package/dist/middleware/services/llm/llm.service.js.map +1 -0
- package/dist/middleware/services/llm/providers/base-llm-provider.d.ts +37 -0
- package/dist/middleware/services/llm/providers/base-llm-provider.d.ts.map +1 -0
- package/dist/middleware/services/llm/providers/base-llm-provider.js +41 -0
- package/dist/middleware/services/llm/providers/base-llm-provider.js.map +1 -0
- package/dist/middleware/services/llm/providers/index.d.ts +3 -0
- package/dist/middleware/services/llm/providers/index.d.ts.map +1 -0
- package/dist/middleware/services/llm/providers/index.js +25 -0
- package/dist/middleware/services/llm/providers/index.js.map +1 -0
- package/dist/middleware/services/llm/providers/ollama-provider.d.ts +39 -0
- package/dist/middleware/services/llm/providers/ollama-provider.d.ts.map +1 -0
- package/dist/middleware/services/llm/providers/ollama-provider.js +398 -0
- package/dist/middleware/services/llm/providers/ollama-provider.js.map +1 -0
- package/dist/middleware/services/llm/types/common.types.d.ts +81 -0
- package/dist/middleware/services/llm/types/common.types.d.ts.map +1 -0
- package/dist/middleware/services/llm/types/common.types.js +17 -0
- package/dist/middleware/services/llm/types/common.types.js.map +1 -0
- package/dist/middleware/services/llm/types/index.d.ts +3 -0
- package/dist/middleware/services/llm/types/index.d.ts.map +1 -0
- package/dist/middleware/services/llm/types/index.js +21 -0
- package/dist/middleware/services/llm/types/index.js.map +1 -0
- package/dist/middleware/services/llm/types/ollama.types.d.ts +48 -0
- package/dist/middleware/services/llm/types/ollama.types.d.ts.map +1 -0
- package/dist/middleware/services/llm/types/ollama.types.js +8 -0
- package/dist/middleware/services/llm/types/ollama.types.js.map +1 -0
- package/dist/middleware/services/llm/utils/debug-llm.utils.d.ts +42 -0
- package/dist/middleware/services/llm/utils/debug-llm.utils.d.ts.map +1 -0
- package/dist/middleware/services/llm/utils/debug-llm.utils.js +325 -0
- package/dist/middleware/services/llm/utils/debug-llm.utils.js.map +1 -0
- package/dist/middleware/services/llm/utils/index.d.ts +3 -0
- package/dist/middleware/services/llm/utils/index.d.ts.map +1 -0
- package/dist/middleware/services/llm/utils/index.js +19 -0
- package/dist/middleware/services/llm/utils/index.js.map +1 -0
- package/dist/middleware/services/llm/utils/text-analysis.utils.d.ts +75 -0
- package/dist/middleware/services/llm/utils/text-analysis.utils.d.ts.map +1 -0
- package/dist/middleware/services/llm/utils/text-analysis.utils.js +197 -0
- package/dist/middleware/services/llm/utils/text-analysis.utils.js.map +1 -0
- package/dist/middleware/services/model-parameter-manager/index.d.ts +2 -0
- package/dist/middleware/services/model-parameter-manager/index.d.ts.map +1 -0
- package/dist/middleware/services/model-parameter-manager/index.js +18 -0
- package/dist/middleware/services/model-parameter-manager/index.js.map +1 -0
- package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.d.ts +165 -0
- package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.d.ts.map +1 -0
- package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.js +325 -0
- package/dist/middleware/services/model-parameter-manager/model-parameter-manager.service.js.map +1 -0
- package/dist/middleware/services/request-formatter/index.d.ts +2 -0
- package/dist/middleware/services/request-formatter/index.d.ts.map +1 -0
- package/dist/middleware/services/request-formatter/index.js +18 -0
- package/dist/middleware/services/request-formatter/index.js.map +1 -0
- package/dist/middleware/services/request-formatter/request-formatter.service.d.ts +71 -0
- package/dist/middleware/services/request-formatter/request-formatter.service.d.ts.map +1 -0
- package/dist/middleware/services/request-formatter/request-formatter.service.js +230 -0
- package/dist/middleware/services/request-formatter/request-formatter.service.js.map +1 -0
- package/dist/middleware/services/response-processor.service.d.ts +106 -0
- package/dist/middleware/services/response-processor.service.d.ts.map +1 -0
- package/dist/middleware/services/response-processor.service.js +236 -0
- package/dist/middleware/services/response-processor.service.js.map +1 -0
- package/dist/middleware/services/token-estimator/index.d.ts +2 -0
- package/dist/middleware/services/token-estimator/index.d.ts.map +1 -0
- package/dist/middleware/services/token-estimator/index.js +18 -0
- package/dist/middleware/services/token-estimator/index.js.map +1 -0
- package/dist/middleware/services/token-estimator/token-estimator.service.d.ts +97 -0
- package/dist/middleware/services/token-estimator/token-estimator.service.d.ts.map +1 -0
- package/dist/middleware/services/token-estimator/token-estimator.service.js +190 -0
- package/dist/middleware/services/token-estimator/token-estimator.service.js.map +1 -0
- package/dist/middleware/services/use-case-metrics-logger/index.d.ts +2 -0
- package/dist/middleware/services/use-case-metrics-logger/index.d.ts.map +1 -0
- package/dist/middleware/services/use-case-metrics-logger/index.js +18 -0
- package/dist/middleware/services/use-case-metrics-logger/index.js.map +1 -0
- package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.d.ts +89 -0
- package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.d.ts.map +1 -0
- package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.js +112 -0
- package/dist/middleware/services/use-case-metrics-logger/use-case-metrics-logger.service.js.map +1 -0
- package/dist/middleware/shared/config/app.config.d.ts +3 -0
- package/dist/middleware/shared/config/app.config.d.ts.map +1 -0
- package/dist/middleware/shared/config/app.config.js +76 -0
- package/dist/middleware/shared/config/app.config.js.map +1 -0
- package/dist/middleware/shared/config/index.d.ts +4 -0
- package/dist/middleware/shared/config/index.d.ts.map +1 -0
- package/dist/middleware/shared/config/index.js +21 -0
- package/dist/middleware/shared/config/index.js.map +1 -0
- package/dist/middleware/shared/config/logging.config.d.ts +49 -0
- package/dist/middleware/shared/config/logging.config.d.ts.map +1 -0
- package/dist/middleware/shared/config/logging.config.js +16 -0
- package/dist/middleware/shared/config/logging.config.js.map +1 -0
- package/dist/middleware/shared/config/models.config.d.ts +19 -0
- package/dist/middleware/shared/config/models.config.d.ts.map +1 -0
- package/dist/middleware/shared/config/models.config.js +39 -0
- package/dist/middleware/shared/config/models.config.js.map +1 -0
- package/dist/middleware/shared/constants/index.d.ts +2 -0
- package/dist/middleware/shared/constants/index.d.ts.map +1 -0
- package/dist/middleware/shared/constants/index.js +19 -0
- package/dist/middleware/shared/constants/index.js.map +1 -0
- package/dist/middleware/shared/constants/json-formatting.constants.d.ts +36 -0
- package/dist/middleware/shared/constants/json-formatting.constants.d.ts.map +1 -0
- package/dist/middleware/shared/constants/json-formatting.constants.js +81 -0
- package/dist/middleware/shared/constants/json-formatting.constants.js.map +1 -0
- package/dist/middleware/shared/types/base-request.types.d.ts +27 -0
- package/dist/middleware/shared/types/base-request.types.d.ts.map +1 -0
- package/dist/middleware/shared/types/base-request.types.js +3 -0
- package/dist/middleware/shared/types/base-request.types.js.map +1 -0
- package/dist/middleware/shared/types/client-info.d.ts +8 -0
- package/dist/middleware/shared/types/client-info.d.ts.map +1 -0
- package/dist/middleware/shared/types/client-info.js +3 -0
- package/dist/middleware/shared/types/client-info.js.map +1 -0
- package/dist/middleware/shared/types/index.d.ts +43 -0
- package/dist/middleware/shared/types/index.d.ts.map +1 -0
- package/dist/middleware/shared/types/index.js +20 -0
- package/dist/middleware/shared/types/index.js.map +1 -0
- package/dist/middleware/shared/utils/http.utils.d.ts +25 -0
- package/dist/middleware/shared/utils/http.utils.d.ts.map +1 -0
- package/dist/middleware/shared/utils/http.utils.js +44 -0
- package/dist/middleware/shared/utils/http.utils.js.map +1 -0
- package/dist/middleware/shared/utils/index.d.ts +5 -0
- package/dist/middleware/shared/utils/index.d.ts.map +1 -0
- package/dist/middleware/shared/utils/index.js +22 -0
- package/dist/middleware/shared/utils/index.js.map +1 -0
- package/dist/middleware/shared/utils/logging.utils.d.ts +30 -0
- package/dist/middleware/shared/utils/logging.utils.d.ts.map +1 -0
- package/dist/middleware/shared/utils/logging.utils.js +91 -0
- package/dist/middleware/shared/utils/logging.utils.js.map +1 -0
- package/dist/middleware/shared/utils/memory-management.utils.d.ts +10 -0
- package/dist/middleware/shared/utils/memory-management.utils.d.ts.map +1 -0
- package/dist/middleware/shared/utils/memory-management.utils.js +31 -0
- package/dist/middleware/shared/utils/memory-management.utils.js.map +1 -0
- package/dist/middleware/shared/utils/validation.utils.d.ts +12 -0
- package/dist/middleware/shared/utils/validation.utils.d.ts.map +1 -0
- package/dist/middleware/shared/utils/validation.utils.js +36 -0
- package/dist/middleware/shared/utils/validation.utils.js.map +1 -0
- package/dist/middleware/usecases/base/base-ai.usecase.d.ts +72 -0
- package/dist/middleware/usecases/base/base-ai.usecase.d.ts.map +1 -0
- package/dist/middleware/usecases/base/base-ai.usecase.js +125 -0
- package/dist/middleware/usecases/base/base-ai.usecase.js.map +1 -0
- package/dist/middleware/usecases/base/index.d.ts +2 -0
- package/dist/middleware/usecases/base/index.d.ts.map +1 -0
- package/dist/middleware/usecases/base/index.js +18 -0
- package/dist/middleware/usecases/base/index.js.map +1 -0
- 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
|