narrative-ai-framework 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. narrative_ai_framework-0.1.0/LICENSE +21 -0
  2. narrative_ai_framework-0.1.0/MANIFEST.in +8 -0
  3. narrative_ai_framework-0.1.0/PKG-INFO +211 -0
  4. narrative_ai_framework-0.1.0/README.md +55 -0
  5. narrative_ai_framework-0.1.0/config/__init__.py +31 -0
  6. narrative_ai_framework-0.1.0/config/env.example.txt +96 -0
  7. narrative_ai_framework-0.1.0/config/providers.py +454 -0
  8. narrative_ai_framework-0.1.0/config/providers.yml +621 -0
  9. narrative_ai_framework-0.1.0/narrative_ai/__init__.py +28 -0
  10. narrative_ai_framework-0.1.0/narrative_ai/api/__init__.py +0 -0
  11. narrative_ai_framework-0.1.0/narrative_ai/api/__main__.py +6 -0
  12. narrative_ai_framework-0.1.0/narrative_ai/api/app.py +415 -0
  13. narrative_ai_framework-0.1.0/narrative_ai/api/dependencies.py +484 -0
  14. narrative_ai_framework-0.1.0/narrative_ai/api/http_helpers.py +26 -0
  15. narrative_ai_framework-0.1.0/narrative_ai/api/idempotency.py +89 -0
  16. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/__init__.py +0 -0
  17. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/auth.py +129 -0
  18. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/correlation_id.py +60 -0
  19. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/error_handler.py +196 -0
  20. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/jwt_user_id.py +49 -0
  21. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/logging.py +51 -0
  22. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/rate_limit.py +163 -0
  23. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/security_headers.py +30 -0
  24. narrative_ai_framework-0.1.0/narrative_ai/api/middleware/tenant.py +1 -0
  25. narrative_ai_framework-0.1.0/narrative_ai/api/models/__init__.py +0 -0
  26. narrative_ai_framework-0.1.0/narrative_ai/api/models/audio.py +0 -0
  27. narrative_ai_framework-0.1.0/narrative_ai/api/models/companion.py +0 -0
  28. narrative_ai_framework-0.1.0/narrative_ai/api/models/entry.py +0 -0
  29. narrative_ai_framework-0.1.0/narrative_ai/api/models/error.py +0 -0
  30. narrative_ai_framework-0.1.0/narrative_ai/api/models/pagination.py +0 -0
  31. narrative_ai_framework-0.1.0/narrative_ai/api/models/search.py +0 -0
  32. narrative_ai_framework-0.1.0/narrative_ai/api/routes/__init__.py +1 -0
  33. narrative_ai_framework-0.1.0/narrative_ai/api/routes/analytics.py +137 -0
  34. narrative_ai_framework-0.1.0/narrative_ai/api/routes/auth.py +444 -0
  35. narrative_ai_framework-0.1.0/narrative_ai/api/routes/companion.py +209 -0
  36. narrative_ai_framework-0.1.0/narrative_ai/api/routes/entries.py +658 -0
  37. narrative_ai_framework-0.1.0/narrative_ai/api/routes/export.py +21 -0
  38. narrative_ai_framework-0.1.0/narrative_ai/api/routes/ingestion.py +170 -0
  39. narrative_ai_framework-0.1.0/narrative_ai/api/routes/llm.py +408 -0
  40. narrative_ai_framework-0.1.0/narrative_ai/api/routes/ocr.py +89 -0
  41. narrative_ai_framework-0.1.0/narrative_ai/api/routes/rag.py +207 -0
  42. narrative_ai_framework-0.1.0/narrative_ai/api/routes/search.py +20 -0
  43. narrative_ai_framework-0.1.0/narrative_ai/api/routes/stt.py +274 -0
  44. narrative_ai_framework-0.1.0/narrative_ai/api/routes/tts.py +324 -0
  45. narrative_ai_framework-0.1.0/narrative_ai/api/routes/vlm.py +155 -0
  46. narrative_ai_framework-0.1.0/narrative_ai/api/routes/web_intel.py +79 -0
  47. narrative_ai_framework-0.1.0/narrative_ai/api/services/__init__.py +1 -0
  48. narrative_ai_framework-0.1.0/narrative_ai/api/services/entry_processor.py +211 -0
  49. narrative_ai_framework-0.1.0/narrative_ai/application/__init__.py +6 -0
  50. narrative_ai_framework-0.1.0/narrative_ai/application/dto/__init__.py +35 -0
  51. narrative_ai_framework-0.1.0/narrative_ai/application/dto/ingestion_dto.py +52 -0
  52. narrative_ai_framework-0.1.0/narrative_ai/application/dto/llm_dto.py +83 -0
  53. narrative_ai_framework-0.1.0/narrative_ai/application/dto/rag_dto.py +101 -0
  54. narrative_ai_framework-0.1.0/narrative_ai/application/dto/stt_dto.py +56 -0
  55. narrative_ai_framework-0.1.0/narrative_ai/application/dto/tts_dto.py +61 -0
  56. narrative_ai_framework-0.1.0/narrative_ai/application/dto/vlm_dto.py +64 -0
  57. narrative_ai_framework-0.1.0/narrative_ai/application/services/__init__.py +26 -0
  58. narrative_ai_framework-0.1.0/narrative_ai/application/services/companion_chat_pipeline.py +988 -0
  59. narrative_ai_framework-0.1.0/narrative_ai/application/services/entry_service.py +475 -0
  60. narrative_ai_framework-0.1.0/narrative_ai/application/services/ingestion_service.py +50 -0
  61. narrative_ai_framework-0.1.0/narrative_ai/application/services/llm_service.py +79 -0
  62. narrative_ai_framework-0.1.0/narrative_ai/application/services/rag_service.py +94 -0
  63. narrative_ai_framework-0.1.0/narrative_ai/application/services/stt_service.py +40 -0
  64. narrative_ai_framework-0.1.0/narrative_ai/application/services/tts_service.py +59 -0
  65. narrative_ai_framework-0.1.0/narrative_ai/application/services/user_profile_service.py +109 -0
  66. narrative_ai_framework-0.1.0/narrative_ai/application/services/user_service.py +146 -0
  67. narrative_ai_framework-0.1.0/narrative_ai/application/services/vlm_service.py +54 -0
  68. narrative_ai_framework-0.1.0/narrative_ai/domain/__init__.py +6 -0
  69. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/__init__.py +17 -0
  70. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/ingestion_engine.py +36 -0
  71. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/llm_engine.py +39 -0
  72. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/rag_service.py +41 -0
  73. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/stt_engine.py +34 -0
  74. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/tts_engine.py +39 -0
  75. narrative_ai_framework-0.1.0/narrative_ai/domain/domain_services/vlm_engine.py +24 -0
  76. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/__init__.py +21 -0
  77. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/analytics.py +24 -0
  78. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/audio_file.py +48 -0
  79. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/conversation.py +95 -0
  80. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/diary_entry.py +77 -0
  81. narrative_ai_framework-0.1.0/narrative_ai/domain/entities/user.py +63 -0
  82. narrative_ai_framework-0.1.0/narrative_ai/domain/events/__init__.py +15 -0
  83. narrative_ai_framework-0.1.0/narrative_ai/domain/events/chat_events.py +0 -0
  84. narrative_ai_framework-0.1.0/narrative_ai/domain/events/domain_event.py +17 -0
  85. narrative_ai_framework-0.1.0/narrative_ai/domain/events/entry_events.py +57 -0
  86. narrative_ai_framework-0.1.0/narrative_ai/domain/events/event_bus.py +67 -0
  87. narrative_ai_framework-0.1.0/narrative_ai/domain/events/export_events.py +0 -0
  88. narrative_ai_framework-0.1.0/narrative_ai/domain/events/search_events.py +0 -0
  89. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/__init__.py +31 -0
  90. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/chat_exceptions.py +0 -0
  91. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/domain_exception.py +33 -0
  92. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/entry_exceptions.py +44 -0
  93. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/export_exceptions.py +0 -0
  94. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/search_exceptions.py +0 -0
  95. narrative_ai_framework-0.1.0/narrative_ai/domain/exceptions/user_exceptions.py +37 -0
  96. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/__init__.py +20 -0
  97. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/audio_repository.py +39 -0
  98. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/conversation_repository.py +46 -0
  99. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/entry_repository.py +58 -0
  100. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/search_repository.py +47 -0
  101. narrative_ai_framework-0.1.0/narrative_ai/domain/repositories/user_repository.py +45 -0
  102. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/__init__.py +17 -0
  103. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/audio_metadata.py +19 -0
  104. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/embedding.py +27 -0
  105. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/emotion.py +28 -0
  106. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/entry_id.py +32 -0
  107. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/tenant_id.py +51 -0
  108. narrative_ai_framework-0.1.0/narrative_ai/domain/value_objects/user_id.py +32 -0
  109. narrative_ai_framework-0.1.0/narrative_ai/engines/__init__.py +95 -0
  110. narrative_ai_framework-0.1.0/narrative_ai/engines/analytics/__init__.py +0 -0
  111. narrative_ai_framework-0.1.0/narrative_ai/engines/analytics/config.py +0 -0
  112. narrative_ai_framework-0.1.0/narrative_ai/engines/analytics/emotion_analytics.py +0 -0
  113. narrative_ai_framework-0.1.0/narrative_ai/engines/analytics/metrics_calculator.py +0 -0
  114. narrative_ai_framework-0.1.0/narrative_ai/engines/analytics/pattern_detector.py +0 -0
  115. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/__init__.py +0 -0
  116. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/audio_response_builder.py +11 -0
  117. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/companion_engine.py +0 -0
  118. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/config.py +0 -0
  119. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/conversation_manager.py +0 -0
  120. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/intent_classifier.py +381 -0
  121. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/intent_exemplars.yaml +89 -0
  122. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/llm_client.py +0 -0
  123. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/prompt_builder.py +0 -0
  124. narrative_ai_framework-0.1.0/narrative_ai/engines/companion/response_processor.py +0 -0
  125. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/__init__.py +0 -0
  126. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/batch_processor.py +0 -0
  127. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/chunking.py +0 -0
  128. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/config.py +0 -0
  129. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/embedding_engine.py +0 -0
  130. narrative_ai_framework-0.1.0/narrative_ai/engines/embeddings/model_loader.py +0 -0
  131. narrative_ai_framework-0.1.0/narrative_ai/engines/export/__init__.py +0 -0
  132. narrative_ai_framework-0.1.0/narrative_ai/engines/export/audiobook_generator.py +0 -0
  133. narrative_ai_framework-0.1.0/narrative_ai/engines/export/config.py +0 -0
  134. narrative_ai_framework-0.1.0/narrative_ai/engines/export/epub_generator.py +0 -0
  135. narrative_ai_framework-0.1.0/narrative_ai/engines/export/export_engine.py +0 -0
  136. narrative_ai_framework-0.1.0/narrative_ai/engines/export/pdf_generator.py +0 -0
  137. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/__init__.py +130 -0
  138. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/api.py +169 -0
  139. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/assembler.py +334 -0
  140. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/audio_processor.py +339 -0
  141. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/config.py +476 -0
  142. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/document_extractor.py +424 -0
  143. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/factory.py +156 -0
  144. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/image_processor.py +280 -0
  145. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/ingestion_config.yaml +143 -0
  146. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/ingestion_pipeline.py +516 -0
  147. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/input_handler.py +414 -0
  148. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/ocr_processor.py +91 -0
  149. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/stt_processor.py +119 -0
  150. narrative_ai_framework-0.1.0/narrative_ai/engines/input_processor/types.py +436 -0
  151. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/__init__.py +253 -0
  152. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/api.py +230 -0
  153. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/base_llm.py +423 -0
  154. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/claude_llm.py +674 -0
  155. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/config.py +666 -0
  156. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/conversation_manager.py +620 -0
  157. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/conversation_storage.py +853 -0
  158. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/deepseek_llm.py +687 -0
  159. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/error_mapper.py +627 -0
  160. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/gemini_llm.py +867 -0
  161. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/input_processor.py +555 -0
  162. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/llm_engine.py +1212 -0
  163. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/llm_strategy.py +705 -0
  164. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/ollama_llm.py +386 -0
  165. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/openai_llm.py +773 -0
  166. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/response_processor.py +535 -0
  167. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/token_budget.py +116 -0
  168. narrative_ai_framework-0.1.0/narrative_ai/engines/llm/xai_llm.py +650 -0
  169. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/__init__.py +52 -0
  170. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/api.py +318 -0
  171. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/config/config.yaml +41 -0
  172. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/config.py +0 -0
  173. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/core/__init__.py +14 -0
  174. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/core/api.py +59 -0
  175. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/core/factory.py +20 -0
  176. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/core/registry.py +46 -0
  177. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/demos/streamlit_app.py +222 -0
  178. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/dewarpnet/__init__.py +5 -0
  179. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/dewarpnet/infer.py +133 -0
  180. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/dewarpnet/models/densenetccnl.py +176 -0
  181. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/dewarpnet/models/unetnc.py +82 -0
  182. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/dewarpnet/utils.py +12 -0
  183. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/__init__.py +18 -0
  184. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/base.py +108 -0
  185. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/dewarpnet_filter.py +218 -0
  186. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/dewarpnet_models/__init__.py +29 -0
  187. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/dewarpnet_models/densenetccnl.py +169 -0
  188. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/dewarpnet_models/unetnc.py +88 -0
  189. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/docres_filter.py +295 -0
  190. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/filters/remote_docres.py +259 -0
  191. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/kaggle_server.py +666 -0
  192. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/pipeline.py +428 -0
  193. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/providers/__init__.py +3 -0
  194. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/providers/remote.py +218 -0
  195. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/requirements.txt +39 -0
  196. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/__init__.py +1 -0
  197. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/debug_server.py +53 -0
  198. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/test_filters.py +22 -0
  199. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/test_functional_api.py +59 -0
  200. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/test_pipeline.py +43 -0
  201. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/test_providers.py +34 -0
  202. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/test_utils.py +39 -0
  203. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/verify_integration.py +60 -0
  204. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/tests/verify_universal_formats.py +51 -0
  205. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/utils/docres_utils.py +109 -0
  206. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/utils/image.py +29 -0
  207. narrative_ai_framework-0.1.0/narrative_ai/engines/ocr/utils/image_processing.py +69 -0
  208. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/__init__.py +49 -0
  209. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/api.py +295 -0
  210. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/augmentation.py +175 -0
  211. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/cache.py +441 -0
  212. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/config.py +185 -0
  213. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/context_builder.py +195 -0
  214. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/hybrid_search.py +203 -0
  215. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/memory_config.yaml +64 -0
  216. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/memory_manager.py +805 -0
  217. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/__init__.py +78 -0
  218. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/base.py +163 -0
  219. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/embeddings/__init__.py +14 -0
  220. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/embeddings/bge_m3.py +226 -0
  221. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/embeddings/cohere_provider.py +103 -0
  222. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/embeddings/openai_provider.py +90 -0
  223. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/rerankers/__init__.py +11 -0
  224. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/rerankers/bge_reranker.py +66 -0
  225. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/providers/rerankers/cohere_reranker.py +81 -0
  226. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/query_processor.py +328 -0
  227. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/ranking.py +0 -0
  228. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/retrieval_engine.py +0 -0
  229. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/strategies/__init__.py +33 -0
  230. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/strategies/base.py +97 -0
  231. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/strategies/default.py +75 -0
  232. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/strategies/diary.py +111 -0
  233. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/text_splitter.py +389 -0
  234. narrative_ai_framework-0.1.0/narrative_ai/engines/rag/types.py +104 -0
  235. narrative_ai_framework-0.1.0/narrative_ai/engines/storage_interface.py +130 -0
  236. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/__init__.py +251 -0
  237. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/__main__.py +6 -0
  238. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/api.py +266 -0
  239. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/audio_processor.py +612 -0
  240. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/base_stt.py +441 -0
  241. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/config.py +663 -0
  242. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/conformer_model.py +0 -0
  243. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/elevenlabs_stt.py +1179 -0
  244. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/emotion_detector.py +717 -0
  245. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/faster_whisper_stt.py +408 -0
  246. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/main.py +98 -0
  247. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/stt_engine.py +1765 -0
  248. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/stt_strategy.py +766 -0
  249. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/vad_processor.py +579 -0
  250. narrative_ai_framework-0.1.0/narrative_ai/engines/stt/whisper_stt.py +706 -0
  251. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/__init__.py +0 -0
  252. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/config.py +0 -0
  253. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/grammar_fixer.py +0 -0
  254. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/llm_enhancer.py +0 -0
  255. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/normalizer.py +0 -0
  256. narrative_ai_framework-0.1.0/narrative_ai/engines/text_enhancement/validator.py +0 -0
  257. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/__init__.py +254 -0
  258. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/__main__.py +6 -0
  259. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/api.py +194 -0
  260. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/audio_processor.py +640 -0
  261. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/base_tts.py +740 -0
  262. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/config.py +599 -0
  263. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/elevenlabs_tts.py +871 -0
  264. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/emotion_applicator.py +464 -0
  265. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/main.py +113 -0
  266. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/model_loader.py +0 -0
  267. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/openai_tts.py +712 -0
  268. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/prosody_engine.py +0 -0
  269. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/streaming.py +0 -0
  270. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/tts_engine.py +1140 -0
  271. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/tts_strategy.py +755 -0
  272. narrative_ai_framework-0.1.0/narrative_ai/engines/tts/voice_selector.py +0 -0
  273. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/__init__.py +5 -0
  274. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/api.py +106 -0
  275. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/base.py +49 -0
  276. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/config.py +70 -0
  277. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/factory.py +49 -0
  278. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/processor.py +306 -0
  279. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/providers/google.py +121 -0
  280. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/providers/ollama_cloud.py +112 -0
  281. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/providers/ollama_local.py +90 -0
  282. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/providers/openai.py +97 -0
  283. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/types.py +38 -0
  284. narrative_ai_framework-0.1.0/narrative_ai/engines/vlm/utils.py +44 -0
  285. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/__init__.py +36 -0
  286. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/agent.py +244 -0
  287. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/api.py +42 -0
  288. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/config.py +177 -0
  289. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/constants.py +22 -0
  290. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/conversation.py +419 -0
  291. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/llm_adapter.py +348 -0
  292. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/main.py +37 -0
  293. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/plugins/__init__.py +23 -0
  294. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/plugins/llm.py +288 -0
  295. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/plugins/stt.py +485 -0
  296. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/plugins/tts.py +286 -0
  297. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/security_hooks.py +277 -0
  298. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/stt_adapter.py +429 -0
  299. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/tts_adapter.py +325 -0
  300. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/voice_agent.py +171 -0
  301. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/webrtc_vad.py +337 -0
  302. narrative_ai_framework-0.1.0/narrative_ai/engines/voice_mode/worker.py +715 -0
  303. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/__init__.py +17 -0
  304. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/api.py +79 -0
  305. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/cache.py +131 -0
  306. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/engine.py +326 -0
  307. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/models.py +74 -0
  308. narrative_ai_framework-0.1.0/narrative_ai/engines/web_intel/providers.py +178 -0
  309. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/__init__.py +5 -0
  310. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/__init__.py +37 -0
  311. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/base_cache.py +30 -0
  312. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/config.py +41 -0
  313. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/memcached_cache.py +0 -0
  314. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/memory_cache.py +54 -0
  315. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/redis_cache.py +187 -0
  316. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/cache/user_profile_cache.py +129 -0
  317. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/config.py +30 -0
  318. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/__init__.py +21 -0
  319. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/config.py +57 -0
  320. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/connection.py +86 -0
  321. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/env.py +95 -0
  322. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/001_initial_schema.py +200 -0
  323. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/002_add_pgvector.py +76 -0
  324. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/003_add_indexes.py +67 -0
  325. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/004_audit_immutability.py +62 -0
  326. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/005_add_user_preferences.py +55 -0
  327. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/006_add_entry_media.py +39 -0
  328. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/migrations/versions/007_audit_logs_tenant_timestamp_index.py +29 -0
  329. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/__init__.py +41 -0
  330. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/analytics_event_model.py +23 -0
  331. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/audio_file_model.py +32 -0
  332. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/audit_log_model.py +35 -0
  333. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/base.py +24 -0
  334. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/conversation_message_model.py +26 -0
  335. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/conversation_model.py +29 -0
  336. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/diary_embedding_model.py +34 -0
  337. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/diary_entry_model.py +37 -0
  338. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/entry_media_model.py +25 -0
  339. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/export_job_model.py +22 -0
  340. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/subscription_model.py +21 -0
  341. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/user_model.py +28 -0
  342. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/models/user_preference_model.py +29 -0
  343. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/__init__.py +17 -0
  344. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/analytics_event_repository_impl.py +40 -0
  345. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/audio_repository_impl.py +98 -0
  346. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/base_repository.py +64 -0
  347. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/conversation_repository_impl.py +148 -0
  348. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/entry_media_repository_impl.py +58 -0
  349. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/entry_repository_impl.py +244 -0
  350. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/search_repository_impl.py +121 -0
  351. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/repositories/user_repository_impl.py +106 -0
  352. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/schema.py +42 -0
  353. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/database/session.py +64 -0
  354. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/external/__init__.py +0 -0
  355. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/external/email_client.py +0 -0
  356. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/external/llm_client.py +0 -0
  357. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/external/notification_client.py +0 -0
  358. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/external/stt_client.py +0 -0
  359. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/__init__.py +0 -0
  360. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/auth_service.py +0 -0
  361. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/config.py +0 -0
  362. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/encryption.py +0 -0
  363. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/jwt_service.py +113 -0
  364. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/password_hasher.py +37 -0
  365. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/security/rate_limiter.py +0 -0
  366. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/__init__.py +0 -0
  367. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/azure_storage.py +0 -0
  368. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/base_storage.py +0 -0
  369. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/config.py +0 -0
  370. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/gcs_storage.py +0 -0
  371. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/local_storage.py +0 -0
  372. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/storage/s3_storage.py +0 -0
  373. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/__init__.py +31 -0
  374. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/base_vector_store.py +153 -0
  375. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/config.py +39 -0
  376. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/milvus_store.py +0 -0
  377. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/pgvector_store.py +120 -0
  378. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/pinecone_store.py +0 -0
  379. narrative_ai_framework-0.1.0/narrative_ai/infrastructure/vector/qdrant_store.py +424 -0
  380. narrative_ai_framework-0.1.0/narrative_ai/models/__init__.py +10 -0
  381. narrative_ai_framework-0.1.0/narrative_ai/models/registry.py +268 -0
  382. narrative_ai_framework-0.1.0/narrative_ai/security/__init__.py +67 -0
  383. narrative_ai_framework-0.1.0/narrative_ai/security/audit_trail.py +834 -0
  384. narrative_ai_framework-0.1.0/narrative_ai/security/circuit_breaker.py +179 -0
  385. narrative_ai_framework-0.1.0/narrative_ai/security/engine_integration.py +251 -0
  386. narrative_ai_framework-0.1.0/narrative_ai/security/error_handling.py +439 -0
  387. narrative_ai_framework-0.1.0/narrative_ai/security/input_validation.py +513 -0
  388. narrative_ai_framework-0.1.0/narrative_ai/security/rate_limiting.py +1069 -0
  389. narrative_ai_framework-0.1.0/narrative_ai/security/stream_isolation.py +389 -0
  390. narrative_ai_framework-0.1.0/narrative_ai/shared/__init__.py +0 -0
  391. narrative_ai_framework-0.1.0/narrative_ai/shared/constants.py +0 -0
  392. narrative_ai_framework-0.1.0/narrative_ai/shared/crypto.py +0 -0
  393. narrative_ai_framework-0.1.0/narrative_ai/shared/date_utils.py +0 -0
  394. narrative_ai_framework-0.1.0/narrative_ai/shared/decorators.py +0 -0
  395. narrative_ai_framework-0.1.0/narrative_ai/shared/exceptions.py +0 -0
  396. narrative_ai_framework-0.1.0/narrative_ai/shared/jwt_utils.py +0 -0
  397. narrative_ai_framework-0.1.0/narrative_ai/shared/logger.py +0 -0
  398. narrative_ai_framework-0.1.0/narrative_ai/shared/retry_utils.py +62 -0
  399. narrative_ai_framework-0.1.0/narrative_ai/shared/typing.py +0 -0
  400. narrative_ai_framework-0.1.0/narrative_ai/shared/validators.py +0 -0
  401. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/PKG-INFO +211 -0
  402. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/SOURCES.txt +408 -0
  403. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/dependency_links.txt +1 -0
  404. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/entry_points.txt +6 -0
  405. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/requires.txt +157 -0
  406. narrative_ai_framework-0.1.0/narrative_ai_framework.egg-info/top_level.txt +2 -0
  407. narrative_ai_framework-0.1.0/pyproject.toml +246 -0
  408. narrative_ai_framework-0.1.0/requirements-ml.txt +31 -0
  409. narrative_ai_framework-0.1.0/requirements.txt +167 -0
  410. narrative_ai_framework-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Narrative AI Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ recursive-include narrative_ai *.yaml
2
+ recursive-include narrative_ai *.json
3
+ recursive-include narrative_ai *.txt
4
+ recursive-include config *.yml
5
+ recursive-include config *.txt
6
+ include README.md
7
+ include LICENSE
8
+ include requirements*.txt
@@ -0,0 +1,211 @@
1
+ Metadata-Version: 2.4
2
+ Name: narrative-ai-framework
3
+ Version: 0.1.0
4
+ Summary: AI-powered voice diary framework: STT, TTS, LLM, RAG, and voice-agent engines
5
+ Author: Narrative AI Team
6
+ License: MIT
7
+ Keywords: ai,voice,diary,stt,tts,llm,rag,arabic
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: PyYAML>=6.0.1
12
+ Requires-Dist: python-dotenv>=1.0.0
13
+ Requires-Dist: pydantic>=2.5.0
14
+ Requires-Dist: aiohttp>=3.9.0
15
+ Requires-Dist: aiofiles>=23.2.1
16
+ Requires-Dist: requests>=2.28.0
17
+ Requires-Dist: shortuuid>=1.0.11
18
+ Requires-Dist: pyngrok>=7.0.0
19
+ Requires-Dist: nest-asyncio>=1.5.8
20
+ Requires-Dist: sympy>=1.12
21
+ Provides-Extra: stt
22
+ Requires-Dist: soundfile>=0.12.1; extra == "stt"
23
+ Requires-Dist: scipy>=1.11.0; extra == "stt"
24
+ Requires-Dist: webrtcvad>=2.0.10; extra == "stt"
25
+ Requires-Dist: numpy>=1.24.0; extra == "stt"
26
+ Requires-Dist: elevenlabs>=0.2.0; extra == "stt"
27
+ Requires-Dist: yt-dlp>=2023.11.0; extra == "stt"
28
+ Requires-Dist: pydub>=0.25.1; extra == "stt"
29
+ Requires-Dist: transformers>=4.36.0; extra == "stt"
30
+ Requires-Dist: accelerate>=0.25.0; extra == "stt"
31
+ Requires-Dist: torch>=2.1.0; extra == "stt"
32
+ Requires-Dist: ctranslate2>=4.0.0; extra == "stt"
33
+ Requires-Dist: faster-whisper>=1.0.0; extra == "stt"
34
+ Provides-Extra: tts
35
+ Requires-Dist: aiohttp>=3.9.0; extra == "tts"
36
+ Requires-Dist: numpy>=1.24.0; extra == "tts"
37
+ Provides-Extra: ocr
38
+ Requires-Dist: opencv-python>=4.8.0; extra == "ocr"
39
+ Requires-Dist: scikit-image>=0.21.0; extra == "ocr"
40
+ Requires-Dist: pdf2image>=1.16.3; extra == "ocr"
41
+ Requires-Dist: python-docx>=1.1.0; extra == "ocr"
42
+ Requires-Dist: einops>=0.6.1; extra == "ocr"
43
+ Requires-Dist: torch>=2.0.1; extra == "ocr"
44
+ Requires-Dist: torchvision>=0.15.2; extra == "ocr"
45
+ Requires-Dist: transformers>=4.45.0; extra == "ocr"
46
+ Requires-Dist: accelerate>=0.26.0; extra == "ocr"
47
+ Requires-Dist: qwen-vl-utils>=0.0.4; extra == "ocr"
48
+ Requires-Dist: timm>=0.9.2; extra == "ocr"
49
+ Requires-Dist: basicsr>=1.4.2; extra == "ocr"
50
+ Requires-Dist: realesrgan>=0.3.0; extra == "ocr"
51
+ Provides-Extra: llm
52
+ Requires-Dist: google-generativeai>=0.3.0; extra == "llm"
53
+ Requires-Dist: google-genai>=0.3.0; extra == "llm"
54
+ Requires-Dist: openai>=1.3.0; extra == "llm"
55
+ Requires-Dist: anthropic>=0.18.0; extra == "llm"
56
+ Requires-Dist: tiktoken>=0.5.0; extra == "llm"
57
+ Provides-Extra: voice
58
+ Requires-Dist: livekit>=0.11.0; extra == "voice"
59
+ Requires-Dist: livekit-api>=0.4.0; extra == "voice"
60
+ Requires-Dist: livekit-agents>=0.7.0; extra == "voice"
61
+ Requires-Dist: livekit-plugins-silero>=0.6.0; extra == "voice"
62
+ Requires-Dist: livekit-plugins-elevenlabs>=1.3.0; extra == "voice"
63
+ Requires-Dist: livekit-plugins-turn-detector>=1.3.0; extra == "voice"
64
+ Requires-Dist: livekit-plugins-noise-cancellation>=0.2.0; extra == "voice"
65
+ Requires-Dist: sounddevice>=0.5.0; extra == "voice"
66
+ Provides-Extra: db
67
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "db"
68
+ Requires-Dist: asyncpg>=0.29.0; extra == "db"
69
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "db"
70
+ Requires-Dist: alembic>=1.13.0; extra == "db"
71
+ Requires-Dist: redis>=5.0.0; extra == "db"
72
+ Provides-Extra: security
73
+ Requires-Dist: redis>=5.0.0; extra == "security"
74
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "security"
75
+ Requires-Dist: cryptography>=41.0.0; extra == "security"
76
+ Requires-Dist: PyJWT>=2.8.0; extra == "security"
77
+ Requires-Dist: bcrypt>=4.0.0; extra == "security"
78
+ Provides-Extra: api
79
+ Requires-Dist: fastapi>=0.109.0; extra == "api"
80
+ Requires-Dist: uvicorn[standard]>=0.27.0; extra == "api"
81
+ Requires-Dist: python-multipart>=0.0.6; extra == "api"
82
+ Requires-Dist: email-validator>=2.1.0; extra == "api"
83
+ Provides-Extra: rag
84
+ Requires-Dist: sentence-transformers>=2.2.2; extra == "rag"
85
+ Requires-Dist: FlagEmbedding>=1.3.5; extra == "rag"
86
+ Requires-Dist: pillow>=10.0.0; extra == "rag"
87
+ Requires-Dist: psutil>=5.9.0; extra == "rag"
88
+ Requires-Dist: unstructured[all-docs]>=0.10.0; extra == "rag"
89
+ Requires-Dist: python-magic>=0.4.27; extra == "rag"
90
+ Requires-Dist: pytesseract>=0.3.10; extra == "rag"
91
+ Requires-Dist: pgvector>=0.2.5; extra == "rag"
92
+ Requires-Dist: qdrant-client>=1.7.0; extra == "rag"
93
+ Provides-Extra: web
94
+ Requires-Dist: ddgs>=9.0.0; extra == "web"
95
+ Provides-Extra: vlm
96
+ Requires-Dist: pillow>=10.0.0; extra == "vlm"
97
+ Requires-Dist: numpy>=1.24.0; extra == "vlm"
98
+ Requires-Dist: ollama>=0.1.0; extra == "vlm"
99
+ Provides-Extra: all
100
+ Requires-Dist: soundfile>=0.12.1; extra == "all"
101
+ Requires-Dist: scipy>=1.11.0; extra == "all"
102
+ Requires-Dist: webrtcvad>=2.0.10; extra == "all"
103
+ Requires-Dist: numpy>=1.24.0; extra == "all"
104
+ Requires-Dist: elevenlabs>=0.2.0; extra == "all"
105
+ Requires-Dist: yt-dlp>=2023.11.0; extra == "all"
106
+ Requires-Dist: pydub>=0.25.1; extra == "all"
107
+ Requires-Dist: transformers>=4.36.0; extra == "all"
108
+ Requires-Dist: accelerate>=0.25.0; extra == "all"
109
+ Requires-Dist: torch>=2.1.0; extra == "all"
110
+ Requires-Dist: ctranslate2>=4.0.0; extra == "all"
111
+ Requires-Dist: faster-whisper>=1.0.0; extra == "all"
112
+ Requires-Dist: aiohttp>=3.9.0; extra == "all"
113
+ Requires-Dist: google-generativeai>=0.3.0; extra == "all"
114
+ Requires-Dist: google-genai>=0.3.0; extra == "all"
115
+ Requires-Dist: openai>=1.3.0; extra == "all"
116
+ Requires-Dist: anthropic>=0.18.0; extra == "all"
117
+ Requires-Dist: tiktoken>=0.5.0; extra == "all"
118
+ Requires-Dist: livekit>=0.11.0; extra == "all"
119
+ Requires-Dist: livekit-api>=0.4.0; extra == "all"
120
+ Requires-Dist: livekit-agents>=0.7.0; extra == "all"
121
+ Requires-Dist: livekit-plugins-silero>=0.6.0; extra == "all"
122
+ Requires-Dist: livekit-plugins-elevenlabs>=1.3.0; extra == "all"
123
+ Requires-Dist: livekit-plugins-turn-detector>=1.3.0; extra == "all"
124
+ Requires-Dist: livekit-plugins-noise-cancellation>=0.2.0; extra == "all"
125
+ Requires-Dist: sounddevice>=0.5.0; extra == "all"
126
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "all"
127
+ Requires-Dist: asyncpg>=0.29.0; extra == "all"
128
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "all"
129
+ Requires-Dist: alembic>=1.13.0; extra == "all"
130
+ Requires-Dist: redis>=5.0.0; extra == "all"
131
+ Requires-Dist: cryptography>=41.0.0; extra == "all"
132
+ Requires-Dist: PyJWT>=2.8.0; extra == "all"
133
+ Requires-Dist: bcrypt>=4.0.0; extra == "all"
134
+ Requires-Dist: fastapi>=0.109.0; extra == "all"
135
+ Requires-Dist: uvicorn[standard]>=0.27.0; extra == "all"
136
+ Requires-Dist: python-multipart>=0.0.6; extra == "all"
137
+ Requires-Dist: email-validator>=2.1.0; extra == "all"
138
+ Requires-Dist: ddgs>=9.0.0; extra == "all"
139
+ Requires-Dist: opencv-python>=4.8.0; extra == "all"
140
+ Requires-Dist: scikit-image>=0.21.0; extra == "all"
141
+ Requires-Dist: pdf2image>=1.16.3; extra == "all"
142
+ Requires-Dist: python-docx>=1.1.0; extra == "all"
143
+ Requires-Dist: einops>=0.6.1; extra == "all"
144
+ Requires-Dist: qwen-vl-utils>=0.0.4; extra == "all"
145
+ Requires-Dist: pgvector>=0.2.5; extra == "all"
146
+ Requires-Dist: qdrant-client>=1.7.0; extra == "all"
147
+ Requires-Dist: ollama>=0.1.0; extra == "all"
148
+ Provides-Extra: dev
149
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
150
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
151
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
152
+ Requires-Dist: httpx>=0.25.0; extra == "dev"
153
+ Requires-Dist: mypy>=1.7.0; extra == "dev"
154
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
155
+ Dynamic: license-file
156
+
157
+ # Narrative AI SDK 🚀
158
+
159
+ A powerful, production-ready AI framework designed for developers to build multi-engine AI applications with ease. Supporting LLM, OCR, STT, TTS, RAG, and more.
160
+
161
+ ## 🌟 Features
162
+
163
+ - **Unified API**: Control multiple AI engines (OpenAI, Gemini, Anthropic, ElevenLabs, etc.) through a single interface.
164
+ - **Arabic-Aware**: Specialized support for Arabic text processing and speech.
165
+ - **Multimodal**: Seamlessly integrate Voice, Text, Images, and Web data.
166
+ - **Production-Ready**: Includes rate limiting, audit logging, and robust error handling.
167
+
168
+ ## 📦 Installation
169
+
170
+ ```bash
171
+ pip install narrative-ai-framework
172
+ ```
173
+
174
+ To install specific engine requirements (e.g., STT and TTS):
175
+ ```bash
176
+ pip install "narrative-ai-framework[stt,tts]"
177
+ ```
178
+
179
+ ## 🚀 Quick Start
180
+
181
+ ```python
182
+ import narrative_ai as nai
183
+ import asyncio
184
+
185
+ async def main():
186
+ # 1. Setup your API keys
187
+ nai.llm.set_api_key("your-openai-key", provider="openai")
188
+
189
+ # 2. Simple Generation
190
+ response = await nai.llm.generate("Tell me a story about a helpful robot.")
191
+ print(response.text)
192
+
193
+ if __name__ == "__main__":
194
+ asyncio.run(main())
195
+ ```
196
+
197
+ ## ⛓️ Supported Integration Workflows
198
+
199
+ The SDK allows you to easily chain multiple engines together:
200
+
201
+ | Workflow Name | Engines Involved | Description |
202
+ | :--- | :--- | :--- |
203
+ | **Voice Chat** | STT ➡️ LLM ➡️ TTS | Full voice-to-voice interaction. |
204
+ | **Doc Analysis** | Input ➡️ OCR ➡️ LLM | Summarize and analyze PDF/Images. |
205
+ | **Smart Memory** | Input ➡️ RAG ➡️ LLM | Knowledge base and Q&A. |
206
+ | **AI Research** | Web ➡️ LLM | Search the web and synthesize reports. |
207
+ | **Visual Chat** | VLM ➡️ LLM | Chat about image contents. |
208
+
209
+ ## 🛡️ License
210
+
211
+ This project is licensed under the MIT License.
@@ -0,0 +1,55 @@
1
+ # Narrative AI SDK 🚀
2
+
3
+ A powerful, production-ready AI framework designed for developers to build multi-engine AI applications with ease. Supporting LLM, OCR, STT, TTS, RAG, and more.
4
+
5
+ ## 🌟 Features
6
+
7
+ - **Unified API**: Control multiple AI engines (OpenAI, Gemini, Anthropic, ElevenLabs, etc.) through a single interface.
8
+ - **Arabic-Aware**: Specialized support for Arabic text processing and speech.
9
+ - **Multimodal**: Seamlessly integrate Voice, Text, Images, and Web data.
10
+ - **Production-Ready**: Includes rate limiting, audit logging, and robust error handling.
11
+
12
+ ## 📦 Installation
13
+
14
+ ```bash
15
+ pip install narrative-ai-framework
16
+ ```
17
+
18
+ To install specific engine requirements (e.g., STT and TTS):
19
+ ```bash
20
+ pip install "narrative-ai-framework[stt,tts]"
21
+ ```
22
+
23
+ ## 🚀 Quick Start
24
+
25
+ ```python
26
+ import narrative_ai as nai
27
+ import asyncio
28
+
29
+ async def main():
30
+ # 1. Setup your API keys
31
+ nai.llm.set_api_key("your-openai-key", provider="openai")
32
+
33
+ # 2. Simple Generation
34
+ response = await nai.llm.generate("Tell me a story about a helpful robot.")
35
+ print(response.text)
36
+
37
+ if __name__ == "__main__":
38
+ asyncio.run(main())
39
+ ```
40
+
41
+ ## ⛓️ Supported Integration Workflows
42
+
43
+ The SDK allows you to easily chain multiple engines together:
44
+
45
+ | Workflow Name | Engines Involved | Description |
46
+ | :--- | :--- | :--- |
47
+ | **Voice Chat** | STT ➡️ LLM ➡️ TTS | Full voice-to-voice interaction. |
48
+ | **Doc Analysis** | Input ➡️ OCR ➡️ LLM | Summarize and analyze PDF/Images. |
49
+ | **Smart Memory** | Input ➡️ RAG ➡️ LLM | Knowledge base and Q&A. |
50
+ | **AI Research** | Web ➡️ LLM | Search the web and synthesize reports. |
51
+ | **Visual Chat** | VLM ➡️ LLM | Chat about image contents. |
52
+
53
+ ## 🛡️ License
54
+
55
+ This project is licensed under the MIT License.
@@ -0,0 +1,31 @@
1
+ """
2
+ Configuration module for Narrative AI Framework.
3
+
4
+ This module provides centralized configuration management for all
5
+ providers and services.
6
+ """
7
+
8
+ from .providers import (
9
+ ProvidersConfig,
10
+ ProviderInfo,
11
+ ProviderType,
12
+ get_providers_config,
13
+ get_llm_provider,
14
+ get_stt_provider,
15
+ get_tts_provider,
16
+ get_web_provider,
17
+ )
18
+
19
+ __all__ = [
20
+ # Classes
21
+ "ProvidersConfig",
22
+ "ProviderInfo",
23
+ "ProviderType",
24
+
25
+ # Functions
26
+ "get_providers_config",
27
+ "get_llm_provider",
28
+ "get_stt_provider",
29
+ "get_tts_provider",
30
+ "get_web_provider",
31
+ ]
@@ -0,0 +1,96 @@
1
+ # =============================================================================
2
+ # NARRATIVE AI - ENVIRONMENT VARIABLES
3
+ # =============================================================================
4
+ #
5
+ # Instructions:
6
+ # 1. Copy this file to .env in the project root (the directory that contains
7
+ # framework/ and config/). The API loads .env from the project root.
8
+ # 2. Fill in your API keys
9
+ # 3. The providers.yml file references these variables
10
+ #
11
+ # =============================================================================
12
+
13
+ # =============================================================================
14
+ # LLM PROVIDERS
15
+ # =============================================================================
16
+
17
+ # ------------- GEMINI (Google) - FREE -------------
18
+ # Get your key: https://aistudio.google.com/apikey
19
+ GEMINI_API_KEY=your_gemini_api_key_here
20
+
21
+ # ------------- OPENAI (GPT) - Paid -------------
22
+ # Get your key: https://platform.openai.com/api-keys
23
+ OPENAI_API_KEY=your_openai_api_key_here
24
+ OPENAI_ORG_ID= # Optional
25
+
26
+ # ------------- WEB INTELLIGENCE (Optional) -------------
27
+ # Default provider is DuckDuckGo (no key required)
28
+ WEB_INTEL_ENABLED=1
29
+ WEB_INTEL_MODE=auto # off | auto | force
30
+ # For Google Custom Search (optional)
31
+ # GOOGLE_SEARCH_API_KEY=your_google_search_api_key
32
+ # GOOGLE_SEARCH_CX=your_google_search_engine_id
33
+
34
+ # ------------- ANTHROPIC (Claude) - Paid -------------
35
+ # Get your key: https://console.anthropic.com/
36
+ ANTHROPIC_API_KEY=your_anthropic_api_key_here
37
+
38
+ # =============================================================================
39
+ # STT/TTS PROVIDERS
40
+ # =============================================================================
41
+
42
+ # ------------- ELEVENLABS - FREE tier: 10K chars/month -------------
43
+ # Get your key: https://elevenlabs.io/app/settings/api-keys
44
+ ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
45
+ ELEVENLABS_VOICE_ID= # Optional: Custom voice ID
46
+
47
+ # ------------- GOOGLE CLOUD (Optional) -------------
48
+ # Download credentials JSON from Google Cloud Console
49
+ GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
50
+
51
+ # =============================================================================
52
+ # REAL-TIME (LIVEKIT)
53
+ # =============================================================================
54
+
55
+ # ------------- LIVEKIT - FREE tier available -------------
56
+ # Get credentials: https://cloud.livekit.io
57
+ LIVEKIT_URL=wss://your-project.livekit.cloud
58
+ LIVEKIT_API_KEY=your_livekit_api_key
59
+ LIVEKIT_API_SECRET=your_livekit_api_secret
60
+
61
+ # =============================================================================
62
+ # CUSTOM/LOCAL MODELS
63
+ # =============================================================================
64
+
65
+ # Fine-tuned Whisper server
66
+ WHISPER_MODEL_PATH= # Local path or HuggingFace ID
67
+ WHISPER_SERVER_URL=http://localhost:8000 # If using server mode
68
+
69
+ # Fine-tuned Conformer model
70
+ CONFORMER_MODEL_PATH= # Local path or HuggingFace ID
71
+
72
+ # Custom TTS server
73
+ CUSTOM_TTS_SERVER_URL=http://localhost:8001
74
+
75
+ # =============================================================================
76
+ # INFRASTRUCTURE
77
+ # =============================================================================
78
+
79
+ # Database (PostgreSQL)
80
+ DATABASE_URL=postgresql://narrative:narrative_dev_password@localhost:5432/narrative_ai
81
+
82
+ # Redis (Caching & Rate Limiting)
83
+ REDIS_URL=redis://localhost:6379/0
84
+
85
+ # Environment
86
+ ENV=development # development, staging, production
87
+
88
+ # =============================================================================
89
+ # SECURITY
90
+ # =============================================================================
91
+
92
+ # JWT Secret (generate with: openssl rand -hex 32)
93
+ JWT_SECRET=your_jwt_secret_here
94
+
95
+ # Encryption Key (generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
96
+ ENCRYPTION_KEY=your_encryption_key_here