PraisonAI 2.4.2__tar.gz → 2.4.4__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 (183) hide show
  1. {praisonai-2.4.2 → praisonai-2.4.4}/PKG-INFO +6 -6
  2. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/PKG-INFO +6 -6
  3. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/SOURCES.txt +16 -0
  4. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-2.4.2 → praisonai-2.4.4}/README.md +4 -4
  6. praisonai-2.4.4/praisonai/cli/features/observability.py +293 -0
  7. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/deploy.py +1 -1
  8. praisonai-2.4.4/praisonai/persistence/conversation/async_mysql.py +427 -0
  9. praisonai-2.4.4/praisonai/persistence/conversation/async_postgres.py +410 -0
  10. praisonai-2.4.4/praisonai/persistence/conversation/async_sqlite.py +371 -0
  11. praisonai-2.4.4/praisonai/persistence/conversation/json_store.py +250 -0
  12. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/factory.py +70 -3
  13. praisonai-2.4.4/praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
  14. praisonai-2.4.4/praisonai/persistence/knowledge/couchbase.py +286 -0
  15. praisonai-2.4.4/praisonai/persistence/knowledge/langchain_adapter.py +291 -0
  16. praisonai-2.4.4/praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
  17. praisonai-2.4.4/praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
  18. praisonai-2.4.4/praisonai/persistence/knowledge/mongodb_vector.py +306 -0
  19. praisonai-2.4.4/praisonai/persistence/knowledge/singlestore_vector.py +299 -0
  20. praisonai-2.4.4/praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
  21. praisonai-2.4.4/praisonai/persistence/knowledge/upstash_vector.py +266 -0
  22. praisonai-2.4.4/praisonai/persistence/state/async_mongodb.py +200 -0
  23. praisonai-2.4.4/praisonai/persistence/state/gcs.py +155 -0
  24. praisonai-2.4.4/praisonai/version.py +1 -0
  25. {praisonai-2.4.2 → praisonai-2.4.4}/pyproject.toml +1 -1
  26. praisonai-2.4.2/praisonai/version.py +0 -1
  27. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/dependency_links.txt +0 -0
  28. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/entry_points.txt +0 -0
  29. {praisonai-2.4.2 → praisonai-2.4.4}/PraisonAI.egg-info/top_level.txt +0 -0
  30. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/__init__.py +0 -0
  31. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/__main__.py +0 -0
  32. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/agent_scheduler.py +0 -0
  33. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/agents_generator.py +0 -0
  34. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/api/call.py +0 -0
  35. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/auto.py +0 -0
  36. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/chainlit_ui.py +0 -0
  37. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/__init__.py +0 -0
  38. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/__init__.py +0 -0
  39. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/agent_scheduler.py +0 -0
  40. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/agents.py +0 -0
  41. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/at_mentions.py +0 -0
  42. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/auto_memory.py +0 -0
  43. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/autonomy_mode.py +0 -0
  44. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/background.py +0 -0
  45. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/base.py +0 -0
  46. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/checkpoints.py +0 -0
  47. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/compare.py +0 -0
  48. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/cost_tracker.py +0 -0
  49. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/eval.py +0 -0
  50. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/external_agents.py +0 -0
  51. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/fast_context.py +0 -0
  52. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/flow_display.py +0 -0
  53. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/git_integration.py +0 -0
  54. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/guardrail.py +0 -0
  55. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/handoff.py +0 -0
  56. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/hooks.py +0 -0
  57. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/image.py +0 -0
  58. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/interactive_tui.py +0 -0
  59. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/knowledge.py +0 -0
  60. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/mcp.py +0 -0
  61. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/message_queue.py +0 -0
  62. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/metrics.py +0 -0
  63. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/n8n.py +0 -0
  64. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/persistence.py +0 -0
  65. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/profile.py +0 -0
  66. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/profiling.py +0 -0
  67. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/repo_map.py +0 -0
  68. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/router.py +0 -0
  69. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/sandbox_executor.py +0 -0
  70. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/session.py +0 -0
  71. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/skills.py +0 -0
  72. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/slash_commands.py +0 -0
  73. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/telemetry.py +0 -0
  74. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/todo.py +0 -0
  75. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/tools.py +0 -0
  76. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/features/workflow.py +0 -0
  77. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/main.py +0 -0
  78. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/cli/schedule_cli.py +0 -0
  79. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/__init__.py +0 -0
  80. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/agent_tools.py +0 -0
  81. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/diff/__init__.py +0 -0
  82. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/diff/diff_strategy.py +0 -0
  83. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/__init__.py +0 -0
  84. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/apply_diff.py +0 -0
  85. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/execute_command.py +0 -0
  86. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/list_files.py +0 -0
  87. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/read_file.py +0 -0
  88. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/search_replace.py +0 -0
  89. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/tools/write_file.py +0 -0
  90. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/utils/__init__.py +0 -0
  91. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/utils/file_utils.py +0 -0
  92. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/utils/ignore_utils.py +0 -0
  93. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/code/utils/text_utils.py +0 -0
  94. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/inbuilt_tools/__init__.py +0 -0
  95. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  96. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/inc/__init__.py +0 -0
  97. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/inc/config.py +0 -0
  98. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/inc/models.py +0 -0
  99. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/__init__.py +0 -0
  100. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/base.py +0 -0
  101. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/claude_code.py +0 -0
  102. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/codex_cli.py +0 -0
  103. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/cursor_cli.py +0 -0
  104. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/integrations/gemini_cli.py +0 -0
  105. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/__init__.py +0 -0
  106. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/config.py +0 -0
  107. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/__init__.py +0 -0
  108. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/base.py +0 -0
  109. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/mysql.py +0 -0
  110. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/postgres.py +0 -0
  111. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/singlestore.py +0 -0
  112. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/sqlite.py +0 -0
  113. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/supabase.py +0 -0
  114. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/conversation/surrealdb.py +0 -0
  115. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/hooks/__init__.py +0 -0
  116. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  117. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/__init__.py +0 -0
  118. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/base.py +0 -0
  119. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/cassandra.py +0 -0
  120. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/chroma.py +0 -0
  121. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  122. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/lancedb.py +0 -0
  123. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/milvus.py +0 -0
  124. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/pgvector.py +0 -0
  125. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/pinecone.py +0 -0
  126. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/qdrant.py +0 -0
  127. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  128. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/knowledge/weaviate.py +0 -0
  129. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/migrations/__init__.py +0 -0
  130. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/migrations/manager.py +0 -0
  131. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/orchestrator.py +0 -0
  132. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/__init__.py +0 -0
  133. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/base.py +0 -0
  134. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/dynamodb.py +0 -0
  135. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/firestore.py +0 -0
  136. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/memory.py +0 -0
  137. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/mongodb.py +0 -0
  138. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/redis.py +0 -0
  139. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/state/upstash.py +0 -0
  140. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/tests/__init__.py +0 -0
  141. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/persistence/tests/test_all_backends.py +0 -0
  142. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/profiler.py +0 -0
  143. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/__init__.py +0 -0
  144. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/agent_scheduler.py +0 -0
  145. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/base.py +0 -0
  146. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/daemon_manager.py +0 -0
  147. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/state_manager.py +0 -0
  148. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler/yaml_loader.py +0 -0
  149. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/scheduler.py +0 -0
  150. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/setup/__init__.py +0 -0
  151. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/setup/build.py +0 -0
  152. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/setup/post_install.py +0 -0
  153. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/setup/setup_conda_env.py +0 -0
  154. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/setup.py +0 -0
  155. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/test.py +0 -0
  156. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/train.py +0 -0
  157. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/train_vision.py +0 -0
  158. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/agents.py +0 -0
  159. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/callbacks.py +0 -0
  160. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/chat.py +0 -0
  161. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/code.py +0 -0
  162. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/colab.py +0 -0
  163. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/colab_chainlit.py +0 -0
  164. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/components/aicoder.py +0 -0
  165. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/context.py +0 -0
  166. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/database_config.py +0 -0
  167. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/db.py +0 -0
  168. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/realtime.py +0 -0
  169. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/realtimeclient/__init__.py +0 -0
  170. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/realtimeclient/tools.py +0 -0
  171. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/ui/sql_alchemy.py +0 -0
  172. {praisonai-2.4.2 → praisonai-2.4.4}/praisonai/upload_vision.py +0 -0
  173. {praisonai-2.4.2 → praisonai-2.4.4}/setup.cfg +0 -0
  174. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test.py +0 -0
  175. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_agents_playbook.py +0 -0
  176. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_approval_system.py +0 -0
  177. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_basic.py +0 -0
  178. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_cli_features.py +0 -0
  179. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_custom_tools_fix.py +0 -0
  180. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_double_api_fix.py +0 -0
  181. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_n8n_integration.py +0 -0
  182. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_phase2_refactor.py +0 -0
  183. {praisonai-2.4.2 → praisonai-2.4.4}/tests/test_runner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.4.2
3
+ Version: 2.4.4
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=0.2.1
14
+ Requires-Dist: praisonaiagents>=0.2.2
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -2860,11 +2860,11 @@ agent.chat("Hello!") # Auto-persists messages, runs, traces
2860
2860
  | SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2861
2861
  | Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
2862
2862
  | ChromaDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2863
- | Pinecone | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2864
- | Weaviate | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2865
- | LanceDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2863
+ | Pinecone | Knowledge | `pip install pinecone` | [pinecone_wow.py](examples/vector/pinecone_wow.py) | [docs](https://docs.praison.ai/docs/databases/pinecone) |
2864
+ | Weaviate | Knowledge | `pip install weaviate-client` | [weaviate_wow.py](examples/vector/weaviate_wow.py) | [docs](https://docs.praison.ai/docs/databases/weaviate) |
2865
+ | LanceDB | Knowledge | `pip install lancedb` | [lancedb_real_wow.py](examples/vector/lancedb_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/lancedb) |
2866
2866
  | Milvus | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2867
- | PGVector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2867
+ | PGVector | Knowledge | `pip install psycopg2-binary` | [pgvector_real_wow.py](examples/vector/pgvector_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/pgvector) |
2868
2868
  | Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2869
2869
  | Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2870
2870
  | ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.4.2
3
+ Version: 2.4.4
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=0.2.1
14
+ Requires-Dist: praisonaiagents>=0.2.2
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -2860,11 +2860,11 @@ agent.chat("Hello!") # Auto-persists messages, runs, traces
2860
2860
  | SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2861
2861
  | Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
2862
2862
  | ChromaDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2863
- | Pinecone | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2864
- | Weaviate | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2865
- | LanceDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2863
+ | Pinecone | Knowledge | `pip install pinecone` | [pinecone_wow.py](examples/vector/pinecone_wow.py) | [docs](https://docs.praison.ai/docs/databases/pinecone) |
2864
+ | Weaviate | Knowledge | `pip install weaviate-client` | [weaviate_wow.py](examples/vector/weaviate_wow.py) | [docs](https://docs.praison.ai/docs/databases/weaviate) |
2865
+ | LanceDB | Knowledge | `pip install lancedb` | [lancedb_real_wow.py](examples/vector/lancedb_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/lancedb) |
2866
2866
  | Milvus | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2867
- | PGVector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2867
+ | PGVector | Knowledge | `pip install psycopg2-binary` | [pgvector_real_wow.py](examples/vector/pgvector_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/pgvector) |
2868
2868
  | Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2869
2869
  | Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2870
2870
  | ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
@@ -51,6 +51,7 @@ praisonai/cli/features/mcp.py
51
51
  praisonai/cli/features/message_queue.py
52
52
  praisonai/cli/features/metrics.py
53
53
  praisonai/cli/features/n8n.py
54
+ praisonai/cli/features/observability.py
54
55
  praisonai/cli/features/persistence.py
55
56
  praisonai/cli/features/profile.py
56
57
  praisonai/cli/features/profiling.py
@@ -95,7 +96,11 @@ praisonai/persistence/config.py
95
96
  praisonai/persistence/factory.py
96
97
  praisonai/persistence/orchestrator.py
97
98
  praisonai/persistence/conversation/__init__.py
99
+ praisonai/persistence/conversation/async_mysql.py
100
+ praisonai/persistence/conversation/async_postgres.py
101
+ praisonai/persistence/conversation/async_sqlite.py
98
102
  praisonai/persistence/conversation/base.py
103
+ praisonai/persistence/conversation/json_store.py
99
104
  praisonai/persistence/conversation/mysql.py
100
105
  praisonai/persistence/conversation/postgres.py
101
106
  praisonai/persistence/conversation/singlestore.py
@@ -109,19 +114,30 @@ praisonai/persistence/knowledge/base.py
109
114
  praisonai/persistence/knowledge/cassandra.py
110
115
  praisonai/persistence/knowledge/chroma.py
111
116
  praisonai/persistence/knowledge/clickhouse.py
117
+ praisonai/persistence/knowledge/cosmosdb_vector.py
118
+ praisonai/persistence/knowledge/couchbase.py
112
119
  praisonai/persistence/knowledge/lancedb.py
120
+ praisonai/persistence/knowledge/langchain_adapter.py
121
+ praisonai/persistence/knowledge/lightrag_adapter.py
122
+ praisonai/persistence/knowledge/llamaindex_adapter.py
113
123
  praisonai/persistence/knowledge/milvus.py
124
+ praisonai/persistence/knowledge/mongodb_vector.py
114
125
  praisonai/persistence/knowledge/pgvector.py
115
126
  praisonai/persistence/knowledge/pinecone.py
116
127
  praisonai/persistence/knowledge/qdrant.py
117
128
  praisonai/persistence/knowledge/redis_vector.py
129
+ praisonai/persistence/knowledge/singlestore_vector.py
130
+ praisonai/persistence/knowledge/surrealdb_vector.py
131
+ praisonai/persistence/knowledge/upstash_vector.py
118
132
  praisonai/persistence/knowledge/weaviate.py
119
133
  praisonai/persistence/migrations/__init__.py
120
134
  praisonai/persistence/migrations/manager.py
121
135
  praisonai/persistence/state/__init__.py
136
+ praisonai/persistence/state/async_mongodb.py
122
137
  praisonai/persistence/state/base.py
123
138
  praisonai/persistence/state/dynamodb.py
124
139
  praisonai/persistence/state/firestore.py
140
+ praisonai/persistence/state/gcs.py
125
141
  praisonai/persistence/state/memory.py
126
142
  praisonai/persistence/state/mongodb.py
127
143
  praisonai/persistence/state/redis.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=0.2.1
4
+ praisonaiagents>=0.2.2
5
5
  python-dotenv>=0.19.0
6
6
  instructor>=1.3.3
7
7
  PyYAML>=6.0
@@ -2763,11 +2763,11 @@ agent.chat("Hello!") # Auto-persists messages, runs, traces
2763
2763
  | SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2764
2764
  | Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
2765
2765
  | ChromaDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2766
- | Pinecone | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2767
- | Weaviate | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2768
- | LanceDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2766
+ | Pinecone | Knowledge | `pip install pinecone` | [pinecone_wow.py](examples/vector/pinecone_wow.py) | [docs](https://docs.praison.ai/docs/databases/pinecone) |
2767
+ | Weaviate | Knowledge | `pip install weaviate-client` | [weaviate_wow.py](examples/vector/weaviate_wow.py) | [docs](https://docs.praison.ai/docs/databases/weaviate) |
2768
+ | LanceDB | Knowledge | `pip install lancedb` | [lancedb_real_wow.py](examples/vector/lancedb_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/lancedb) |
2769
2769
  | Milvus | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2770
- | PGVector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2770
+ | PGVector | Knowledge | `pip install psycopg2-binary` | [pgvector_real_wow.py](examples/vector/pgvector_real_wow.py) | [docs](https://docs.praison.ai/docs/databases/pgvector) |
2771
2771
  | Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2772
2772
  | Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2773
2773
  | ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
@@ -0,0 +1,293 @@
1
+ """
2
+ Observability CLI Handler
3
+
4
+ CLI commands for managing observability providers.
5
+ Usage: praisonai obs <command>
6
+ """
7
+
8
+ import os
9
+ from typing import Any, Dict, List, Optional, Tuple
10
+
11
+ from .base import FlagHandler
12
+
13
+
14
+ class ObservabilityHandler(FlagHandler):
15
+ """
16
+ Handler for observability CLI commands.
17
+
18
+ Commands:
19
+ praisonai obs list - List available providers
20
+ praisonai obs doctor - Check provider connectivity
21
+ praisonai obs init <name> - Initialize a provider
22
+ """
23
+
24
+ @property
25
+ def feature_name(self) -> str:
26
+ return "observability"
27
+
28
+ @property
29
+ def flag_name(self) -> str:
30
+ return "obs"
31
+
32
+ @property
33
+ def flag_help(self) -> str:
34
+ return "Observability commands (list, doctor, init)"
35
+
36
+ def check_dependencies(self) -> Tuple[bool, str]:
37
+ """Check if observability module is available."""
38
+ try:
39
+ from praisonai_tools.observability import obs
40
+ return True, ""
41
+ except ImportError:
42
+ return False, "Observability requires praisonai-tools. Install with: pip install praisonai-tools"
43
+
44
+ def list_providers(self) -> Dict[str, Any]:
45
+ """List all available observability providers."""
46
+ result = {
47
+ "registered": [],
48
+ "available": [],
49
+ "configured": [],
50
+ }
51
+
52
+ try:
53
+ from praisonai_tools.observability.manager import ObservabilityManager
54
+ from praisonai_tools.observability.config import PROVIDER_ENV_KEYS
55
+
56
+ mgr = ObservabilityManager()
57
+
58
+ # Get all registered providers
59
+ result["registered"] = mgr.list_providers()
60
+
61
+ # Check which have env vars configured
62
+ for provider, keys in PROVIDER_ENV_KEYS.items():
63
+ if all(os.getenv(key) for key in keys):
64
+ result["configured"].append(provider)
65
+
66
+ # Check which SDKs are available
67
+ for provider in result["registered"]:
68
+ try:
69
+ mgr._load_provider(provider)
70
+ if provider in mgr._providers:
71
+ provider_class = mgr._providers[provider]
72
+ instance = provider_class()
73
+ if instance.is_available():
74
+ result["available"].append(provider)
75
+ except Exception:
76
+ pass
77
+
78
+ except ImportError:
79
+ pass
80
+
81
+ return result
82
+
83
+ def doctor(self, provider: Optional[str] = None) -> Dict[str, Any]:
84
+ """Run diagnostics on observability setup."""
85
+ try:
86
+ from praisonai_tools.observability import obs
87
+
88
+ if provider:
89
+ obs.init(provider=provider)
90
+
91
+ return obs.doctor()
92
+
93
+ except ImportError:
94
+ return {
95
+ "error": "praisonai-tools not installed",
96
+ "enabled": False,
97
+ }
98
+
99
+ def init_provider(self, provider: str, **kwargs) -> bool:
100
+ """Initialize a specific provider."""
101
+ try:
102
+ from praisonai_tools.observability import obs
103
+ return obs.init(provider=provider, **kwargs)
104
+ except ImportError:
105
+ return False
106
+
107
+ def execute(self, action: str = "list", **kwargs) -> Any:
108
+ """
109
+ Execute observability command.
110
+
111
+ Args:
112
+ action: Command to execute (list, doctor, init)
113
+ **kwargs: Additional arguments
114
+
115
+ Returns:
116
+ Command result
117
+ """
118
+ if action == "list":
119
+ return self._execute_list()
120
+ elif action == "doctor":
121
+ return self._execute_doctor(kwargs.get("provider"))
122
+ elif action == "init":
123
+ return self._execute_init(kwargs.get("provider"), **kwargs)
124
+ else:
125
+ self.print_status(f"Unknown action: {action}", "error")
126
+ return None
127
+
128
+ def _execute_list(self) -> Dict[str, Any]:
129
+ """Execute list command."""
130
+ result = self.list_providers()
131
+
132
+ self.print_status("\n📊 Observability Providers", "info")
133
+ self.print_status("=" * 40, "info")
134
+
135
+ # Provider status table
136
+ all_providers = [
137
+ "agentops", "langfuse", "langsmith", "traceloop",
138
+ "arize_phoenix", "openlit", "langtrace", "langwatch",
139
+ "datadog", "mlflow", "opik", "portkey",
140
+ "braintrust", "maxim", "weave", "neatlogs",
141
+ "langdb", "atla", "patronus", "truefoundry",
142
+ ]
143
+
144
+ for provider in all_providers:
145
+ status_parts = []
146
+ if provider in result.get("available", []):
147
+ status_parts.append("✅ SDK")
148
+ else:
149
+ status_parts.append("❌ SDK")
150
+
151
+ if provider in result.get("configured", []):
152
+ status_parts.append("🔑 Keys")
153
+ else:
154
+ status_parts.append("⚪ Keys")
155
+
156
+ status = " | ".join(status_parts)
157
+ self.print_status(f" {provider:20} {status}", "info")
158
+
159
+ self.print_status("\n✅ = Available ❌ = Not installed 🔑 = API key configured", "info")
160
+
161
+ return result
162
+
163
+ def _execute_doctor(self, provider: Optional[str] = None) -> Dict[str, Any]:
164
+ """Execute doctor command."""
165
+ result = self.doctor(provider)
166
+
167
+ self.print_status("\n🩺 Observability Diagnostics", "info")
168
+ self.print_status("=" * 40, "info")
169
+
170
+ self.print_status(f" Enabled: {result.get('enabled', False)}", "info")
171
+ self.print_status(f" Provider: {result.get('provider', 'None')}", "info")
172
+
173
+ if result.get("connection_status") is not None:
174
+ status = "✅" if result["connection_status"] else "❌"
175
+ self.print_status(f" Connection: {status} {result.get('connection_message', '')}", "info")
176
+
177
+ if result.get("available_providers"):
178
+ self.print_status(f" Available: {', '.join(result['available_providers'])}", "info")
179
+
180
+ return result
181
+
182
+ def _execute_init(self, provider: str, **kwargs) -> bool:
183
+ """Execute init command."""
184
+ if not provider:
185
+ self.print_status("Provider name required. Usage: praisonai obs init <provider>", "error")
186
+ return False
187
+
188
+ success = self.init_provider(provider, **kwargs)
189
+
190
+ if success:
191
+ self.print_status(f"✅ {provider} initialized successfully", "success")
192
+ else:
193
+ self.print_status(f"❌ Failed to initialize {provider}", "error")
194
+ self.print_status(f" Check that {provider} SDK is installed and API keys are set", "info")
195
+
196
+ return success
197
+
198
+ def apply_to_agent_config(self, config: Dict[str, Any], flag_value: Any) -> Dict[str, Any]:
199
+ """Apply observability to agent config."""
200
+ if flag_value:
201
+ try:
202
+ from praisonai_tools.observability import obs
203
+
204
+ if isinstance(flag_value, str):
205
+ obs.init(provider=flag_value)
206
+ else:
207
+ obs.init()
208
+
209
+ self.print_status("📊 Observability enabled", "success")
210
+ except ImportError:
211
+ self.print_status("Observability requires praisonai-tools", "warning")
212
+
213
+ return config
214
+
215
+
216
+ # Provider environment variable reference
217
+ PROVIDER_SETUP_GUIDE = {
218
+ "agentops": {
219
+ "env_vars": ["AGENTOPS_API_KEY"],
220
+ "install": "pip install agentops",
221
+ "docs": "https://agentops.ai/",
222
+ },
223
+ "langfuse": {
224
+ "env_vars": ["LANGFUSE_PUBLIC_KEY", "LANGFUSE_SECRET_KEY"],
225
+ "install": "pip install opentelemetry-sdk opentelemetry-exporter-otlp",
226
+ "docs": "https://langfuse.com/",
227
+ },
228
+ "langsmith": {
229
+ "env_vars": ["LANGSMITH_API_KEY"],
230
+ "install": "pip install opentelemetry-sdk opentelemetry-exporter-otlp",
231
+ "docs": "https://smith.langchain.com/",
232
+ },
233
+ "traceloop": {
234
+ "env_vars": ["TRACELOOP_API_KEY"],
235
+ "install": "pip install traceloop-sdk",
236
+ "docs": "https://traceloop.com/",
237
+ },
238
+ "arize_phoenix": {
239
+ "env_vars": ["PHOENIX_API_KEY"],
240
+ "install": "pip install arize-phoenix openinference-instrumentation",
241
+ "docs": "https://phoenix.arize.com/",
242
+ },
243
+ "openlit": {
244
+ "env_vars": [],
245
+ "install": "pip install openlit",
246
+ "docs": "https://github.com/openlit/openlit",
247
+ },
248
+ "langtrace": {
249
+ "env_vars": ["LANGTRACE_API_KEY"],
250
+ "install": "pip install langtrace-python-sdk",
251
+ "docs": "https://langtrace.ai/",
252
+ },
253
+ "langwatch": {
254
+ "env_vars": ["LANGWATCH_API_KEY"],
255
+ "install": "pip install langwatch",
256
+ "docs": "https://langwatch.ai/",
257
+ },
258
+ "datadog": {
259
+ "env_vars": ["DD_API_KEY"],
260
+ "install": "pip install ddtrace",
261
+ "docs": "https://www.datadoghq.com/product/llm-observability/",
262
+ },
263
+ "mlflow": {
264
+ "env_vars": ["MLFLOW_TRACKING_URI"],
265
+ "install": "pip install mlflow",
266
+ "docs": "https://mlflow.org/",
267
+ },
268
+ "opik": {
269
+ "env_vars": ["OPIK_API_KEY"],
270
+ "install": "pip install opik",
271
+ "docs": "https://www.comet.com/docs/opik/",
272
+ },
273
+ "portkey": {
274
+ "env_vars": ["PORTKEY_API_KEY"],
275
+ "install": "pip install portkey-ai",
276
+ "docs": "https://portkey.ai/",
277
+ },
278
+ "braintrust": {
279
+ "env_vars": ["BRAINTRUST_API_KEY"],
280
+ "install": "pip install braintrust",
281
+ "docs": "https://www.braintrust.dev/",
282
+ },
283
+ "maxim": {
284
+ "env_vars": ["MAXIM_API_KEY"],
285
+ "install": "pip install maxim-py",
286
+ "docs": "https://getmaxim.ai/",
287
+ },
288
+ "weave": {
289
+ "env_vars": ["WANDB_API_KEY"],
290
+ "install": "pip install weave",
291
+ "docs": "https://weave-docs.wandb.ai/",
292
+ },
293
+ }
@@ -57,7 +57,7 @@ class CloudDeployer:
57
57
  file.write("FROM python:3.11-slim\n")
58
58
  file.write("WORKDIR /app\n")
59
59
  file.write("COPY . .\n")
60
- file.write("RUN pip install flask praisonai==2.4.2 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==2.4.4 gunicorn markdown\n")
61
61
  file.write("EXPOSE 8080\n")
62
62
  file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
63
63