@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,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM Service Orchestrator
|
|
4
|
+
* Provides a unified interface for interacting with different LLM providers
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.llmService = exports.LLMService = void 0;
|
|
8
|
+
const ollama_provider_1 = require("./providers/ollama-provider");
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
class LLMService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.defaultProvider = types_1.LLMProvider.OLLAMA;
|
|
13
|
+
this.providers = new Map();
|
|
14
|
+
// Initialize available providers
|
|
15
|
+
this.providers.set(types_1.LLMProvider.OLLAMA, new ollama_provider_1.OllamaProvider());
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get a specific provider instance
|
|
19
|
+
*/
|
|
20
|
+
getProvider(provider) {
|
|
21
|
+
const providerInstance = this.providers.get(provider);
|
|
22
|
+
if (!providerInstance) {
|
|
23
|
+
throw new Error(`Provider ${provider} is not available. Available providers: ${Array.from(this.providers.keys()).join(', ')}`);
|
|
24
|
+
}
|
|
25
|
+
return providerInstance;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Set the default provider for all requests
|
|
29
|
+
*/
|
|
30
|
+
setDefaultProvider(provider) {
|
|
31
|
+
if (!this.providers.has(provider)) {
|
|
32
|
+
throw new Error(`Provider ${provider} is not available`);
|
|
33
|
+
}
|
|
34
|
+
this.defaultProvider = provider;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the current default provider
|
|
38
|
+
*/
|
|
39
|
+
getDefaultProvider() {
|
|
40
|
+
return this.defaultProvider;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Call an LLM with a custom system message
|
|
44
|
+
* Uses the specified provider or the default provider
|
|
45
|
+
*/
|
|
46
|
+
async callWithSystemMessage(userPrompt, systemMessage, options = {}) {
|
|
47
|
+
const provider = options.provider || this.defaultProvider;
|
|
48
|
+
const providerInstance = this.getProvider(provider);
|
|
49
|
+
return providerInstance.callWithSystemMessage(userPrompt, systemMessage, options);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Call an LLM with the default system message
|
|
53
|
+
* Uses the specified provider or the default provider
|
|
54
|
+
*/
|
|
55
|
+
async call(prompt, options = {}) {
|
|
56
|
+
const provider = options.provider || this.defaultProvider;
|
|
57
|
+
const providerInstance = this.getProvider(provider);
|
|
58
|
+
return providerInstance.call(prompt, options);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get list of available providers
|
|
62
|
+
*/
|
|
63
|
+
getAvailableProviders() {
|
|
64
|
+
return Array.from(this.providers.keys());
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.LLMService = LLMService;
|
|
68
|
+
// Export singleton instance
|
|
69
|
+
exports.llmService = new LLMService();
|
|
70
|
+
//# sourceMappingURL=llm.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/llm/llm.service.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,iEAA6D;AAC7D,mCAA2E;AAE3E,MAAa,UAAU;IAIrB;QAFQ,oBAAe,GAAgB,mBAAW,CAAC,MAAM,CAAC;QAGxD,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,iCAAiC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,MAAM,EAAE,IAAI,gCAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAqB;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,2CAA2C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,QAAqB;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,mBAAmB,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,qBAAqB,CAChC,UAAkB,EAClB,aAAqB,EACrB,UAAyD,EAAE;QAE3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI,CACf,MAAc,EACd,UAAyD,EAAE;QAE3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAvED,gCAuEC;AAED,4BAA4B;AACf,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base abstract class for all LLM providers
|
|
3
|
+
* Defines the contract that all providers must implement
|
|
4
|
+
*/
|
|
5
|
+
import { CommonLLMOptions, CommonLLMResponse, LLMProvider } from '../types';
|
|
6
|
+
export declare abstract class BaseLLMProvider {
|
|
7
|
+
protected providerName: LLMProvider;
|
|
8
|
+
constructor(providerName: LLMProvider);
|
|
9
|
+
/**
|
|
10
|
+
* Get the provider name
|
|
11
|
+
*/
|
|
12
|
+
getProviderName(): LLMProvider;
|
|
13
|
+
/**
|
|
14
|
+
* Call the LLM API with a custom system message
|
|
15
|
+
* This is the main method that all providers must implement
|
|
16
|
+
*
|
|
17
|
+
* @param userPrompt - The user's prompt for the model
|
|
18
|
+
* @param systemMessage - The system message defining AI behavior
|
|
19
|
+
* @param options - Provider-specific options
|
|
20
|
+
* @returns The API response or null on error
|
|
21
|
+
*/
|
|
22
|
+
abstract callWithSystemMessage(userPrompt: string, systemMessage: string, options: CommonLLMOptions): Promise<CommonLLMResponse | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Call the LLM API with default system message
|
|
25
|
+
*
|
|
26
|
+
* @param prompt - The prompt for the model
|
|
27
|
+
* @param options - Provider-specific options
|
|
28
|
+
* @returns The API response or null on error
|
|
29
|
+
*/
|
|
30
|
+
call(prompt: string, options?: CommonLLMOptions): Promise<CommonLLMResponse | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Validate that required configuration is present
|
|
33
|
+
* Override this in specific providers if they need validation
|
|
34
|
+
*/
|
|
35
|
+
protected validateConfig(options: CommonLLMOptions): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=base-llm-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-llm-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/base-llm-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5E,8BAAsB,eAAe;IACnC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;gBAExB,YAAY,EAAE,WAAW;IAIrC;;OAEG;IACI,eAAe,IAAI,WAAW;IAIrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAEpC;;;;;;OAMG;IACU,IAAI,CACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAKpC;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAQ1D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base abstract class for all LLM providers
|
|
4
|
+
* Defines the contract that all providers must implement
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BaseLLMProvider = void 0;
|
|
8
|
+
class BaseLLMProvider {
|
|
9
|
+
constructor(providerName) {
|
|
10
|
+
this.providerName = providerName;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the provider name
|
|
14
|
+
*/
|
|
15
|
+
getProviderName() {
|
|
16
|
+
return this.providerName;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Call the LLM API with default system message
|
|
20
|
+
*
|
|
21
|
+
* @param prompt - The prompt for the model
|
|
22
|
+
* @param options - Provider-specific options
|
|
23
|
+
* @returns The API response or null on error
|
|
24
|
+
*/
|
|
25
|
+
async call(prompt, options = {}) {
|
|
26
|
+
const defaultSystemMessage = "You are a helpful assistant, who provides clear and precise answers.";
|
|
27
|
+
return this.callWithSystemMessage(prompt, defaultSystemMessage, options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate that required configuration is present
|
|
31
|
+
* Override this in specific providers if they need validation
|
|
32
|
+
*/
|
|
33
|
+
validateConfig(options) {
|
|
34
|
+
if (!options.model) {
|
|
35
|
+
throw new Error(`Model name is required for ${this.providerName} provider. ` +
|
|
36
|
+
'Please ensure model is set in your options or environment variables.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.BaseLLMProvider = BaseLLMProvider;
|
|
41
|
+
//# sourceMappingURL=base-llm-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-llm-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/base-llm-provider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAsB,eAAe;IAGnC,YAAY,YAAyB;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAiBD;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CACf,MAAc,EACd,UAA4B,EAAE;QAE9B,MAAM,oBAAoB,GAAG,sEAAsE,CAAC;QACpG,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,OAAyB;QAChD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,YAAY,aAAa;gBAC5D,sEAAsE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAxDD,0CAwDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Base provider
|
|
18
|
+
__exportStar(require("./base-llm-provider"), exports);
|
|
19
|
+
// Concrete providers
|
|
20
|
+
__exportStar(require("./ollama-provider"), exports);
|
|
21
|
+
// Future providers will be added here:
|
|
22
|
+
// export * from './openai-provider';
|
|
23
|
+
// export * from './anthropic-provider';
|
|
24
|
+
// export * from './google-provider';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gBAAgB;AAChB,sDAAoC;AAEpC,qBAAqB;AACrB,oDAAkC;AAElC,uCAAuC;AACvC,qCAAqC;AACrC,wCAAwC;AACxC,qCAAqC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BaseLLMProvider } from './base-llm-provider';
|
|
2
|
+
import { CommonLLMResponse } from '../types';
|
|
3
|
+
import { OllamaRequestOptions, OllamaResponse } from '../types/ollama.types';
|
|
4
|
+
/**
|
|
5
|
+
* Ollama provider implementation with advanced features:
|
|
6
|
+
* - Comprehensive debugging and logging
|
|
7
|
+
* - Retry logic with authentication fallbacks
|
|
8
|
+
* - Session management
|
|
9
|
+
* - Parameter handling
|
|
10
|
+
* - Error recovery strategies
|
|
11
|
+
*/
|
|
12
|
+
export declare class OllamaProvider extends BaseLLMProvider {
|
|
13
|
+
private dataFlowLogger;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Call the Ollama API with a custom system message
|
|
17
|
+
* @param userPrompt - The user's prompt for the model
|
|
18
|
+
* @param systemMessage - The system message defining AI behavior
|
|
19
|
+
* @param options - Options for the API call (including token and sessionId)
|
|
20
|
+
* @returns The API response or null on error
|
|
21
|
+
*/
|
|
22
|
+
callWithSystemMessage(userPrompt: string, systemMessage: string, options?: OllamaRequestOptions): Promise<CommonLLMResponse | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Helper method to handle successful responses consistently
|
|
25
|
+
*/
|
|
26
|
+
private handleSuccessfulResponse;
|
|
27
|
+
/**
|
|
28
|
+
* Backward compatibility: Old method name
|
|
29
|
+
*/
|
|
30
|
+
callOllamaApiWithSystemMessage(userPrompt: string, systemMessage: string, options?: OllamaRequestOptions): Promise<OllamaResponse | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Backward compatibility: Old method name
|
|
33
|
+
*/
|
|
34
|
+
callOllamaApi(prompt: string, options?: OllamaRequestOptions): Promise<OllamaResponse | null>;
|
|
35
|
+
}
|
|
36
|
+
export declare const ollamaProvider: OllamaProvider;
|
|
37
|
+
export { OllamaProvider as OllamaService };
|
|
38
|
+
export { ollamaProvider as ollamaService };
|
|
39
|
+
//# sourceMappingURL=ollama-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/ollama-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAe,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI7E;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,cAAc,CAAwB;;IAO9C;;;;;;OAMG;IACU,qBAAqB,CAChC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA8ZpC;;OAEG;YACW,wBAAwB;IAkCtC;;OAEG;IACU,8BAA8B,CACzC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIjC;;OAEG;IACU,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAGlC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAGnD,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,CAAC;AAC3C,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ollamaService = exports.OllamaService = exports.ollamaProvider = exports.OllamaProvider = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
const logging_utils_1 = require("../../../shared/utils/logging.utils");
|
|
10
|
+
const base_llm_provider_1 = require("./base-llm-provider");
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
const debug_llm_utils_1 = require("../utils/debug-llm.utils");
|
|
13
|
+
const data_flow_logger_1 = require("../../data-flow-logger");
|
|
14
|
+
/**
|
|
15
|
+
* Ollama provider implementation with advanced features:
|
|
16
|
+
* - Comprehensive debugging and logging
|
|
17
|
+
* - Retry logic with authentication fallbacks
|
|
18
|
+
* - Session management
|
|
19
|
+
* - Parameter handling
|
|
20
|
+
* - Error recovery strategies
|
|
21
|
+
*/
|
|
22
|
+
class OllamaProvider extends base_llm_provider_1.BaseLLMProvider {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(types_1.LLMProvider.OLLAMA);
|
|
25
|
+
this.dataFlowLogger = data_flow_logger_1.DataFlowLoggerService.getInstance();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Call the Ollama API with a custom system message
|
|
29
|
+
* @param userPrompt - The user's prompt for the model
|
|
30
|
+
* @param systemMessage - The system message defining AI behavior
|
|
31
|
+
* @param options - Options for the API call (including token and sessionId)
|
|
32
|
+
* @returns The API response or null on error
|
|
33
|
+
*/
|
|
34
|
+
async callWithSystemMessage(userPrompt, systemMessage, options = {}) {
|
|
35
|
+
const { authToken, model, temperature = 0.7, baseUrl = process.env.MODEL1_URL || "http://localhost:11434", repeat_penalty, top_p, top_k, frequency_penalty, presence_penalty, repeat_last_n, num_predict, debugContext, sessionId = (0, uuid_1.v4)(), chapterNumber, pageNumber, pageName } = options;
|
|
36
|
+
// Validate that model is provided
|
|
37
|
+
if (!model) {
|
|
38
|
+
throw new Error('Model name is required but not provided. ' +
|
|
39
|
+
'Please ensure MODEL1_NAME is set in your .env file or pass model explicitly in options.');
|
|
40
|
+
}
|
|
41
|
+
const headers = {
|
|
42
|
+
'Content-Type': 'application/json'
|
|
43
|
+
};
|
|
44
|
+
if (authToken) {
|
|
45
|
+
headers['Authorization'] = `Bearer ${authToken}`;
|
|
46
|
+
}
|
|
47
|
+
// Create base data without session_id
|
|
48
|
+
const baseData = {
|
|
49
|
+
model: model,
|
|
50
|
+
messages: [
|
|
51
|
+
{ role: "system", content: systemMessage },
|
|
52
|
+
{ role: "user", content: userPrompt }
|
|
53
|
+
],
|
|
54
|
+
temperature: temperature,
|
|
55
|
+
stream: false,
|
|
56
|
+
options: {
|
|
57
|
+
...(repeat_penalty !== undefined && { repeat_penalty }),
|
|
58
|
+
...(top_p !== undefined && { top_p }),
|
|
59
|
+
...(top_k !== undefined && { top_k }),
|
|
60
|
+
...(frequency_penalty !== undefined && { frequency_penalty }),
|
|
61
|
+
...(presence_penalty !== undefined && { presence_penalty }),
|
|
62
|
+
...(repeat_last_n !== undefined && { repeat_last_n }),
|
|
63
|
+
...(num_predict !== undefined && { num_predict })
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
// Add session_id if it should be used
|
|
67
|
+
const data = {
|
|
68
|
+
...baseData,
|
|
69
|
+
session_id: sessionId
|
|
70
|
+
};
|
|
71
|
+
// Get client request body from global scope
|
|
72
|
+
let clientRequestBody = undefined;
|
|
73
|
+
try {
|
|
74
|
+
clientRequestBody = global.currentRequestBody;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
// Ignore as it's optional
|
|
78
|
+
}
|
|
79
|
+
// Prepare debug info
|
|
80
|
+
const debugInfo = {
|
|
81
|
+
timestamp: new Date(),
|
|
82
|
+
provider: this.providerName,
|
|
83
|
+
model: model,
|
|
84
|
+
baseUrl: baseUrl,
|
|
85
|
+
systemMessage: systemMessage,
|
|
86
|
+
userMessage: userPrompt,
|
|
87
|
+
requestData: data,
|
|
88
|
+
useCase: debugContext,
|
|
89
|
+
clientRequestBody: clientRequestBody,
|
|
90
|
+
sessionId: sessionId,
|
|
91
|
+
chapterNumber: chapterNumber,
|
|
92
|
+
pageNumber: pageNumber,
|
|
93
|
+
pageName: pageName
|
|
94
|
+
};
|
|
95
|
+
// Log request
|
|
96
|
+
await debug_llm_utils_1.LLMDebugger.logRequest(debugInfo);
|
|
97
|
+
// Log to data flow logger
|
|
98
|
+
const contextForLogger = {
|
|
99
|
+
currentChapterNr: chapterNumber,
|
|
100
|
+
currentPage: pageNumber,
|
|
101
|
+
debugContext
|
|
102
|
+
};
|
|
103
|
+
const requestId = this.dataFlowLogger.startRequest(debugContext || 'ollama-direct', contextForLogger);
|
|
104
|
+
this.dataFlowLogger.logLLMRequest({
|
|
105
|
+
stage: debugContext || 'ollama-direct',
|
|
106
|
+
prompt: userPrompt,
|
|
107
|
+
systemMessage: systemMessage,
|
|
108
|
+
modelName: model,
|
|
109
|
+
temperature: temperature,
|
|
110
|
+
contextInfo: {
|
|
111
|
+
sessionId,
|
|
112
|
+
chapterNumber,
|
|
113
|
+
pageNumber,
|
|
114
|
+
pageName,
|
|
115
|
+
parameters: {
|
|
116
|
+
repeat_penalty,
|
|
117
|
+
top_p,
|
|
118
|
+
top_k,
|
|
119
|
+
frequency_penalty,
|
|
120
|
+
presence_penalty,
|
|
121
|
+
repeat_last_n,
|
|
122
|
+
num_predict
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}, contextForLogger, requestId);
|
|
126
|
+
const requestStartTime = Date.now();
|
|
127
|
+
try {
|
|
128
|
+
logging_utils_1.logger.info('Sending request to Ollama API', {
|
|
129
|
+
context: 'OllamaProvider',
|
|
130
|
+
metadata: {
|
|
131
|
+
url: `${baseUrl}/api/chat`,
|
|
132
|
+
model: model,
|
|
133
|
+
hasAuthToken: !!authToken,
|
|
134
|
+
promptLength: userPrompt.length
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
const response = await axios_1.default.post(`${baseUrl}/api/chat`, data, {
|
|
138
|
+
headers,
|
|
139
|
+
timeout: 90000 // 90 second timeout
|
|
140
|
+
});
|
|
141
|
+
const requestDuration = Date.now() - requestStartTime;
|
|
142
|
+
if (response && response.status === 200) {
|
|
143
|
+
const aiResponse = response.data;
|
|
144
|
+
// Add session ID to response
|
|
145
|
+
aiResponse.sessionId = sessionId;
|
|
146
|
+
// Add metadata
|
|
147
|
+
aiResponse.metadata = {
|
|
148
|
+
provider: this.providerName,
|
|
149
|
+
model: model,
|
|
150
|
+
tokensUsed: aiResponse.eval_count,
|
|
151
|
+
processingTime: requestDuration
|
|
152
|
+
};
|
|
153
|
+
// Add response info
|
|
154
|
+
debugInfo.responseTimestamp = new Date();
|
|
155
|
+
debugInfo.response = aiResponse.message.content;
|
|
156
|
+
debugInfo.rawResponseData = aiResponse;
|
|
157
|
+
// Try to extract thinking content
|
|
158
|
+
const thinkMatch = aiResponse.message.content.match(/<think>([\s\S]*?)<\/think>/);
|
|
159
|
+
if (thinkMatch && thinkMatch[1]) {
|
|
160
|
+
debugInfo.thinking = thinkMatch[1].trim();
|
|
161
|
+
}
|
|
162
|
+
// Log response (including markdown saving)
|
|
163
|
+
await debug_llm_utils_1.LLMDebugger.logResponse(debugInfo);
|
|
164
|
+
// Log to data flow logger
|
|
165
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'ollama-direct', {
|
|
166
|
+
rawResponse: aiResponse.message.content,
|
|
167
|
+
processingTime: requestDuration
|
|
168
|
+
}, contextForLogger, requestId);
|
|
169
|
+
return aiResponse;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
const error = new Error(`Status ${response?.status || 'unknown'}`);
|
|
173
|
+
logging_utils_1.logger.error('Error calling Ollama API', {
|
|
174
|
+
context: this.constructor.name,
|
|
175
|
+
error: error.message,
|
|
176
|
+
metadata: response?.data || {}
|
|
177
|
+
});
|
|
178
|
+
// Log error to data flow logger
|
|
179
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'ollama-direct', {
|
|
180
|
+
rawResponse: '',
|
|
181
|
+
processingTime: Date.now() - requestStartTime,
|
|
182
|
+
error
|
|
183
|
+
}, contextForLogger, requestId);
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
// Type-safe error handling
|
|
189
|
+
let errorMessage = 'Unknown error';
|
|
190
|
+
let errorDetails = {};
|
|
191
|
+
if (error instanceof Error) {
|
|
192
|
+
errorMessage = error.message;
|
|
193
|
+
}
|
|
194
|
+
// Check for Axios error and safely extract properties
|
|
195
|
+
if (error &&
|
|
196
|
+
typeof error === 'object' &&
|
|
197
|
+
'isAxiosError' in error &&
|
|
198
|
+
error.isAxiosError === true) {
|
|
199
|
+
const axiosError = error;
|
|
200
|
+
if (axiosError.response) {
|
|
201
|
+
errorDetails = {
|
|
202
|
+
statusCode: axiosError.response.status,
|
|
203
|
+
statusText: axiosError.response.statusText,
|
|
204
|
+
data: axiosError.response.data
|
|
205
|
+
};
|
|
206
|
+
// Check for session ID related errors
|
|
207
|
+
if (axiosError.response.status === 400 &&
|
|
208
|
+
typeof axiosError.response.data === 'object' &&
|
|
209
|
+
axiosError.response.data?.error?.includes('session_id')) {
|
|
210
|
+
logging_utils_1.logger.warn('Session ID not supported in this Ollama version', {
|
|
211
|
+
context: this.constructor.name,
|
|
212
|
+
error: axiosError.response.data?.error,
|
|
213
|
+
metadata: { sessionId }
|
|
214
|
+
});
|
|
215
|
+
// Retry without session_id
|
|
216
|
+
try {
|
|
217
|
+
const retryResponse = await axios_1.default.post(`${baseUrl}/api/chat`, baseData, { headers });
|
|
218
|
+
if (retryResponse && retryResponse.status === 200) {
|
|
219
|
+
const aiResponse = retryResponse.data;
|
|
220
|
+
// Add session ID for internal tracking anyway
|
|
221
|
+
aiResponse.sessionId = sessionId;
|
|
222
|
+
debugInfo.responseTimestamp = new Date();
|
|
223
|
+
debugInfo.response = aiResponse.message.content;
|
|
224
|
+
debugInfo.rawResponseData = aiResponse;
|
|
225
|
+
const thinkMatch = aiResponse.message.content.match(/<think>([\s\S]*?)<\/think>/);
|
|
226
|
+
if (thinkMatch && thinkMatch[1]) {
|
|
227
|
+
debugInfo.thinking = thinkMatch[1].trim();
|
|
228
|
+
}
|
|
229
|
+
await debug_llm_utils_1.LLMDebugger.logResponse(debugInfo);
|
|
230
|
+
// Log successful retry to data flow logger
|
|
231
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'ollama-direct', {
|
|
232
|
+
rawResponse: aiResponse.message.content,
|
|
233
|
+
processingTime: Date.now() - requestStartTime
|
|
234
|
+
}, contextForLogger, requestId);
|
|
235
|
+
return aiResponse;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (retryError) {
|
|
239
|
+
// Error in retry, continue with original error
|
|
240
|
+
logging_utils_1.logger.error('Retry also failed', {
|
|
241
|
+
context: this.constructor.name,
|
|
242
|
+
error: retryError instanceof Error ? retryError.message : 'Unknown retry error'
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Check for auth errors specifically
|
|
247
|
+
if (axiosError.response.status === 401 || axiosError.response.status === 403) {
|
|
248
|
+
logging_utils_1.logger.error('Authentication error with Ollama API', {
|
|
249
|
+
context: this.constructor.name,
|
|
250
|
+
error: 'Invalid or missing authentication token',
|
|
251
|
+
metadata: {
|
|
252
|
+
baseUrl,
|
|
253
|
+
hasToken: !!authToken,
|
|
254
|
+
statusCode: axiosError.response.status
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// Retry strategy ladder:
|
|
258
|
+
// 1) Authorization: <raw token>
|
|
259
|
+
if (authToken) {
|
|
260
|
+
try {
|
|
261
|
+
const headersRawAuth = {
|
|
262
|
+
'Content-Type': 'application/json',
|
|
263
|
+
'Authorization': authToken
|
|
264
|
+
};
|
|
265
|
+
const retryRaw = await axios_1.default.post(`${baseUrl}/api/chat`, baseData, {
|
|
266
|
+
headers: headersRawAuth,
|
|
267
|
+
timeout: 90000
|
|
268
|
+
});
|
|
269
|
+
if (retryRaw && retryRaw.status === 200) {
|
|
270
|
+
return this.handleSuccessfulResponse(retryRaw.data, debugInfo, sessionId, requestStartTime, debugContext, contextForLogger, requestId);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (retryRawErr) {
|
|
274
|
+
logging_utils_1.logger.warn('Retry with raw Authorization header failed', {
|
|
275
|
+
context: this.constructor.name,
|
|
276
|
+
error: retryRawErr instanceof Error ? retryRawErr.message : 'Unknown'
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// 2) X-API-Key header
|
|
281
|
+
if (authToken) {
|
|
282
|
+
try {
|
|
283
|
+
const headersApiKey = {
|
|
284
|
+
'Content-Type': 'application/json',
|
|
285
|
+
'X-API-Key': authToken
|
|
286
|
+
};
|
|
287
|
+
const retryApiKey = await axios_1.default.post(`${baseUrl}/api/chat`, baseData, {
|
|
288
|
+
headers: headersApiKey,
|
|
289
|
+
timeout: 90000
|
|
290
|
+
});
|
|
291
|
+
if (retryApiKey && retryApiKey.status === 200) {
|
|
292
|
+
return this.handleSuccessfulResponse(retryApiKey.data, debugInfo, sessionId, requestStartTime, debugContext, contextForLogger, requestId);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch (retryKeyErr) {
|
|
296
|
+
logging_utils_1.logger.warn('Retry with X-API-Key header failed', {
|
|
297
|
+
context: this.constructor.name,
|
|
298
|
+
error: retryKeyErr instanceof Error ? retryKeyErr.message : 'Unknown'
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// 3) No auth (for dev instances)
|
|
303
|
+
try {
|
|
304
|
+
const headersNoAuth = { 'Content-Type': 'application/json' };
|
|
305
|
+
const retryAuthless = await axios_1.default.post(`${baseUrl}/api/chat`, baseData, {
|
|
306
|
+
headers: headersNoAuth,
|
|
307
|
+
timeout: 90000
|
|
308
|
+
});
|
|
309
|
+
if (retryAuthless && retryAuthless.status === 200) {
|
|
310
|
+
return this.handleSuccessfulResponse(retryAuthless.data, debugInfo, sessionId, requestStartTime, debugContext, contextForLogger, requestId);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch (retryAuthlessError) {
|
|
314
|
+
logging_utils_1.logger.error('Authless retry failed', {
|
|
315
|
+
context: this.constructor.name,
|
|
316
|
+
error: retryAuthlessError instanceof Error ? retryAuthlessError.message : 'Unknown authless retry error'
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
logging_utils_1.logger.error('Error in API request', {
|
|
323
|
+
context: this.constructor.name,
|
|
324
|
+
error: errorMessage,
|
|
325
|
+
metadata: {
|
|
326
|
+
...errorDetails,
|
|
327
|
+
requestModel: model,
|
|
328
|
+
baseUrl: baseUrl,
|
|
329
|
+
sessionId: sessionId
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
// Log error to data flow logger
|
|
333
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'ollama-direct', {
|
|
334
|
+
rawResponse: '',
|
|
335
|
+
processingTime: Date.now() - requestStartTime,
|
|
336
|
+
error: error instanceof Error ? error : new Error(errorMessage)
|
|
337
|
+
}, contextForLogger, requestId);
|
|
338
|
+
// Add error info
|
|
339
|
+
debugInfo.responseTimestamp = new Date();
|
|
340
|
+
debugInfo.error = {
|
|
341
|
+
message: errorMessage,
|
|
342
|
+
details: errorDetails
|
|
343
|
+
};
|
|
344
|
+
// Log error
|
|
345
|
+
await debug_llm_utils_1.LLMDebugger.logError(debugInfo);
|
|
346
|
+
// Check for memory errors in response
|
|
347
|
+
const errorResponseData = errorDetails.data;
|
|
348
|
+
if (errorResponseData &&
|
|
349
|
+
typeof errorResponseData === 'object' &&
|
|
350
|
+
'error' in errorResponseData &&
|
|
351
|
+
typeof errorResponseData.error === 'string') {
|
|
352
|
+
const errorText = errorResponseData.error;
|
|
353
|
+
if (errorText.includes('model requires more system memory') ||
|
|
354
|
+
errorText.includes('model request too large for system')) {
|
|
355
|
+
throw new Error(`Insufficient memory to load model ${model}. Try closing other applications or using a smaller model.`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return null;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Helper method to handle successful responses consistently
|
|
363
|
+
*/
|
|
364
|
+
async handleSuccessfulResponse(aiResponse, debugInfo, sessionId, requestStartTime, debugContext, contextForLogger, requestId) {
|
|
365
|
+
aiResponse.sessionId = sessionId;
|
|
366
|
+
debugInfo.responseTimestamp = new Date();
|
|
367
|
+
debugInfo.response = aiResponse.message.content;
|
|
368
|
+
debugInfo.rawResponseData = aiResponse;
|
|
369
|
+
const thinkMatch = aiResponse.message.content.match(/<think>([\s\S]*?)<\/think>/);
|
|
370
|
+
if (thinkMatch && thinkMatch[1]) {
|
|
371
|
+
debugInfo.thinking = thinkMatch[1].trim();
|
|
372
|
+
}
|
|
373
|
+
await debug_llm_utils_1.LLMDebugger.logResponse(debugInfo);
|
|
374
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'ollama-direct', {
|
|
375
|
+
rawResponse: aiResponse.message.content,
|
|
376
|
+
processingTime: Date.now() - requestStartTime
|
|
377
|
+
}, contextForLogger, requestId);
|
|
378
|
+
return aiResponse;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Backward compatibility: Old method name
|
|
382
|
+
*/
|
|
383
|
+
async callOllamaApiWithSystemMessage(userPrompt, systemMessage, options = {}) {
|
|
384
|
+
return this.callWithSystemMessage(userPrompt, systemMessage, options);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Backward compatibility: Old method name
|
|
388
|
+
*/
|
|
389
|
+
async callOllamaApi(prompt, options = {}) {
|
|
390
|
+
return this.call(prompt, options);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
exports.OllamaProvider = OllamaProvider;
|
|
394
|
+
exports.OllamaService = OllamaProvider;
|
|
395
|
+
// Export singleton instance for backward compatibility
|
|
396
|
+
exports.ollamaProvider = new OllamaProvider();
|
|
397
|
+
exports.ollamaService = exports.ollamaProvider;
|
|
398
|
+
//# sourceMappingURL=ollama-provider.js.map
|