praisonAI 2.4.0__tar.gz → 2.4.2__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 (167) hide show
  1. {praisonai-2.4.0 → praisonai-2.4.2}/PKG-INFO +289 -3
  2. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/PKG-INFO +289 -3
  3. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/SOURCES.txt +39 -0
  4. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-2.4.0 → praisonai-2.4.2}/README.md +287 -1
  6. praisonai-2.4.2/praisonai/cli/features/persistence.py +637 -0
  7. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/main.py +6 -0
  8. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/deploy.py +1 -1
  9. praisonai-2.4.2/praisonai/persistence/__init__.py +84 -0
  10. praisonai-2.4.2/praisonai/persistence/config.py +238 -0
  11. praisonai-2.4.2/praisonai/persistence/conversation/__init__.py +25 -0
  12. praisonai-2.4.2/praisonai/persistence/conversation/base.py +151 -0
  13. praisonai-2.4.2/praisonai/persistence/conversation/mysql.py +387 -0
  14. praisonai-2.4.2/praisonai/persistence/conversation/postgres.py +401 -0
  15. praisonai-2.4.2/praisonai/persistence/conversation/singlestore.py +240 -0
  16. praisonai-2.4.2/praisonai/persistence/conversation/sqlite.py +341 -0
  17. praisonai-2.4.2/praisonai/persistence/conversation/supabase.py +203 -0
  18. praisonai-2.4.2/praisonai/persistence/conversation/surrealdb.py +287 -0
  19. praisonai-2.4.2/praisonai/persistence/factory.py +234 -0
  20. praisonai-2.4.2/praisonai/persistence/hooks/__init__.py +18 -0
  21. praisonai-2.4.2/praisonai/persistence/hooks/agent_hooks.py +297 -0
  22. praisonai-2.4.2/praisonai/persistence/knowledge/__init__.py +26 -0
  23. praisonai-2.4.2/praisonai/persistence/knowledge/base.py +144 -0
  24. praisonai-2.4.2/praisonai/persistence/knowledge/cassandra.py +232 -0
  25. praisonai-2.4.2/praisonai/persistence/knowledge/chroma.py +295 -0
  26. praisonai-2.4.2/praisonai/persistence/knowledge/clickhouse.py +242 -0
  27. praisonai-2.4.2/praisonai/persistence/knowledge/lancedb.py +216 -0
  28. praisonai-2.4.2/praisonai/persistence/knowledge/milvus.py +277 -0
  29. praisonai-2.4.2/praisonai/persistence/knowledge/pgvector.py +335 -0
  30. praisonai-2.4.2/praisonai/persistence/knowledge/pinecone.py +253 -0
  31. praisonai-2.4.2/praisonai/persistence/knowledge/qdrant.py +301 -0
  32. praisonai-2.4.2/praisonai/persistence/knowledge/redis_vector.py +291 -0
  33. praisonai-2.4.2/praisonai/persistence/knowledge/weaviate.py +223 -0
  34. praisonai-2.4.2/praisonai/persistence/migrations/__init__.py +10 -0
  35. praisonai-2.4.2/praisonai/persistence/migrations/manager.py +251 -0
  36. praisonai-2.4.2/praisonai/persistence/orchestrator.py +406 -0
  37. praisonai-2.4.2/praisonai/persistence/state/__init__.py +21 -0
  38. praisonai-2.4.2/praisonai/persistence/state/base.py +107 -0
  39. praisonai-2.4.2/praisonai/persistence/state/dynamodb.py +226 -0
  40. praisonai-2.4.2/praisonai/persistence/state/firestore.py +175 -0
  41. praisonai-2.4.2/praisonai/persistence/state/memory.py +245 -0
  42. praisonai-2.4.2/praisonai/persistence/state/mongodb.py +158 -0
  43. praisonai-2.4.2/praisonai/persistence/state/redis.py +190 -0
  44. praisonai-2.4.2/praisonai/persistence/state/upstash.py +144 -0
  45. praisonai-2.4.2/praisonai/persistence/tests/__init__.py +3 -0
  46. praisonai-2.4.2/praisonai/persistence/tests/test_all_backends.py +633 -0
  47. praisonai-2.4.2/praisonai/version.py +1 -0
  48. {praisonai-2.4.0 → praisonai-2.4.2}/pyproject.toml +1 -1
  49. praisonai-2.4.0/praisonai/version.py +0 -1
  50. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/dependency_links.txt +0 -0
  51. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/entry_points.txt +0 -0
  52. {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/top_level.txt +0 -0
  53. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/__init__.py +0 -0
  54. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/__main__.py +0 -0
  55. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/agent_scheduler.py +0 -0
  56. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/agents_generator.py +0 -0
  57. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/api/call.py +0 -0
  58. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/auto.py +0 -0
  59. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/chainlit_ui.py +0 -0
  60. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/__init__.py +0 -0
  61. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/__init__.py +0 -0
  62. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/agent_scheduler.py +0 -0
  63. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/agents.py +0 -0
  64. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/at_mentions.py +0 -0
  65. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/auto_memory.py +0 -0
  66. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/autonomy_mode.py +0 -0
  67. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/background.py +0 -0
  68. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/base.py +0 -0
  69. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/checkpoints.py +0 -0
  70. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/compare.py +0 -0
  71. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/cost_tracker.py +0 -0
  72. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/eval.py +0 -0
  73. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/external_agents.py +0 -0
  74. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/fast_context.py +0 -0
  75. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/flow_display.py +0 -0
  76. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/git_integration.py +0 -0
  77. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/guardrail.py +0 -0
  78. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/handoff.py +0 -0
  79. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/hooks.py +0 -0
  80. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/image.py +0 -0
  81. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/interactive_tui.py +0 -0
  82. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/knowledge.py +0 -0
  83. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/mcp.py +0 -0
  84. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/message_queue.py +0 -0
  85. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/metrics.py +0 -0
  86. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/n8n.py +0 -0
  87. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/profile.py +0 -0
  88. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/profiling.py +0 -0
  89. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/repo_map.py +0 -0
  90. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/router.py +0 -0
  91. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/sandbox_executor.py +0 -0
  92. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/session.py +0 -0
  93. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/skills.py +0 -0
  94. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/slash_commands.py +0 -0
  95. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/telemetry.py +0 -0
  96. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/todo.py +0 -0
  97. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/tools.py +0 -0
  98. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/workflow.py +0 -0
  99. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/schedule_cli.py +0 -0
  100. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/__init__.py +0 -0
  101. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/agent_tools.py +0 -0
  102. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/diff/__init__.py +0 -0
  103. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/diff/diff_strategy.py +0 -0
  104. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/__init__.py +0 -0
  105. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/apply_diff.py +0 -0
  106. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/execute_command.py +0 -0
  107. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/list_files.py +0 -0
  108. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/read_file.py +0 -0
  109. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/search_replace.py +0 -0
  110. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/write_file.py +0 -0
  111. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/__init__.py +0 -0
  112. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/file_utils.py +0 -0
  113. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/ignore_utils.py +0 -0
  114. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/text_utils.py +0 -0
  115. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inbuilt_tools/__init__.py +0 -0
  116. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  117. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/__init__.py +0 -0
  118. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/config.py +0 -0
  119. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/models.py +0 -0
  120. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/__init__.py +0 -0
  121. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/base.py +0 -0
  122. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/claude_code.py +0 -0
  123. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/codex_cli.py +0 -0
  124. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/cursor_cli.py +0 -0
  125. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/gemini_cli.py +0 -0
  126. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/profiler.py +0 -0
  127. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/__init__.py +0 -0
  128. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/agent_scheduler.py +0 -0
  129. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/base.py +0 -0
  130. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/daemon_manager.py +0 -0
  131. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/state_manager.py +0 -0
  132. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/yaml_loader.py +0 -0
  133. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler.py +0 -0
  134. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/__init__.py +0 -0
  135. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/build.py +0 -0
  136. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/post_install.py +0 -0
  137. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/setup_conda_env.py +0 -0
  138. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup.py +0 -0
  139. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/test.py +0 -0
  140. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/train.py +0 -0
  141. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/train_vision.py +0 -0
  142. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/agents.py +0 -0
  143. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/callbacks.py +0 -0
  144. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/chat.py +0 -0
  145. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/code.py +0 -0
  146. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/colab.py +0 -0
  147. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/colab_chainlit.py +0 -0
  148. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/components/aicoder.py +0 -0
  149. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/context.py +0 -0
  150. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/database_config.py +0 -0
  151. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/db.py +0 -0
  152. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtime.py +0 -0
  153. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtimeclient/__init__.py +0 -0
  154. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtimeclient/tools.py +0 -0
  155. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/sql_alchemy.py +0 -0
  156. {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/upload_vision.py +0 -0
  157. {praisonai-2.4.0 → praisonai-2.4.2}/setup.cfg +0 -0
  158. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test.py +0 -0
  159. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_agents_playbook.py +0 -0
  160. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_approval_system.py +0 -0
  161. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_basic.py +0 -0
  162. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_cli_features.py +0 -0
  163. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_custom_tools_fix.py +0 -0
  164. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_double_api_fix.py +0 -0
  165. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_n8n_integration.py +0 -0
  166. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_phase2_refactor.py +0 -0
  167. {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_runner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.4.0
3
+ Version: 2.4.2
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.0
14
+ Requires-Dist: praisonaiagents>=0.2.1
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -358,6 +358,12 @@ npm install praisonai
358
358
  | ↳ 100+ LLM Support | [Example](examples/python/providers/openai/openai_gpt4_example.py) | [📖](https://docs.praison.ai/models) |
359
359
  | ↳ Callback Agents | [Example](examples/python/general/advanced-callback-systems.py) | [📖](https://docs.praison.ai/features/callbacks) |
360
360
  | ↳ Hooks | [Example](#9-hooks) | [📖](https://docs.praison.ai/features/hooks) |
361
+ | ↳ Shadow Git Checkpoints | [Example](#10-shadow-git-checkpoints) | [📖](https://docs.praison.ai/features/checkpoints) |
362
+ | ↳ Background Tasks | [Example](examples/background/basic_background.py) | [📖](https://docs.praison.ai/features/background-tasks) |
363
+ | ↳ Policy Engine | [Example](examples/policy/basic_policy.py) | [📖](https://docs.praison.ai/features/policy-engine) |
364
+ | ↳ Thinking Budgets | [Example](examples/thinking/basic_thinking.py) | [📖](https://docs.praison.ai/features/thinking-budgets) |
365
+ | ↳ Output Styles | [Example](examples/output/basic_output.py) | [📖](https://docs.praison.ai/features/output-styles) |
366
+ | ↳ Context Compaction | [Example](examples/compaction/basic_compaction.py) | [📖](https://docs.praison.ai/features/context-compaction) |
361
367
  | **📊 Monitoring & Management** | | |
362
368
  | ↳ Sessions Management | [Example](examples/python/sessions/comprehensive-session-management.py) | [📖](https://docs.praison.ai/features/sessions) |
363
369
  | ↳ Auto-Save Sessions | [Example](#session-management-python) | [📖](https://docs.praison.ai/docs/cli/session) |
@@ -1027,8 +1033,191 @@ praisonai checkpoint diff # Show changes
1027
1033
  praisonai checkpoint restore abc123 # Restore to checkpoint
1028
1034
  ```
1029
1035
 
1036
+ **Links:**
1037
+ - [📖 Coding Docs](https://docs.praison.ai/features/checkpoints)
1038
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/checkpoint)
1039
+ - [💻 Example](examples/checkpoints/basic_checkpoints.py)
1030
1040
 
1031
- ### 11. Field Names Reference (A-I-G-S)
1041
+ ---
1042
+
1043
+ ### 11. Background Tasks
1044
+
1045
+ Run agent tasks asynchronously without blocking:
1046
+
1047
+ ```python
1048
+ import asyncio
1049
+ from praisonaiagents.background import BackgroundRunner, BackgroundConfig
1050
+
1051
+ async def main():
1052
+ config = BackgroundConfig(max_concurrent_tasks=3)
1053
+ runner = BackgroundRunner(config=config)
1054
+
1055
+ async def my_task(name: str) -> str:
1056
+ await asyncio.sleep(2)
1057
+ return f"Task {name} completed"
1058
+
1059
+ task = await runner.submit(my_task, args=("example",), name="my_task")
1060
+ await task.wait(timeout=10.0)
1061
+ print(task.result)
1062
+
1063
+ asyncio.run(main())
1064
+ ```
1065
+
1066
+ **CLI Commands:**
1067
+ ```bash
1068
+ praisonai background list # List running tasks
1069
+ praisonai background status <id> # Check task status
1070
+ praisonai background cancel <id> # Cancel a task
1071
+ praisonai background clear # Clear completed tasks
1072
+ ```
1073
+
1074
+ **Links:**
1075
+ - [📖 Coding Docs](https://docs.praison.ai/features/background-tasks)
1076
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/background)
1077
+ - [💻 Example](examples/background/basic_background.py)
1078
+
1079
+ ---
1080
+
1081
+ ### 12. Policy Engine
1082
+
1083
+ Control what agents can and cannot do with policy-based execution:
1084
+
1085
+ ```python
1086
+ from praisonaiagents.policy import (
1087
+ PolicyEngine, Policy, PolicyRule, PolicyAction
1088
+ )
1089
+
1090
+ engine = PolicyEngine()
1091
+
1092
+ policy = Policy(
1093
+ name="no_delete",
1094
+ rules=[
1095
+ PolicyRule(
1096
+ action=PolicyAction.DENY,
1097
+ resource="tool:delete_*",
1098
+ reason="Delete operations blocked"
1099
+ )
1100
+ ]
1101
+ )
1102
+ engine.add_policy(policy)
1103
+
1104
+ result = engine.check("tool:delete_file", {})
1105
+ print(f"Allowed: {result.allowed}")
1106
+ ```
1107
+
1108
+ **CLI Commands:**
1109
+ ```bash
1110
+ praisonai policy list # List policies
1111
+ praisonai policy check "tool:name" # Check if allowed
1112
+ praisonai policy init # Create template
1113
+ ```
1114
+
1115
+ **Links:**
1116
+ - [📖 Coding Docs](https://docs.praison.ai/features/policy-engine)
1117
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/policy)
1118
+ - [💻 Example](examples/policy/basic_policy.py)
1119
+
1120
+ ---
1121
+
1122
+ ### 13. Thinking Budgets
1123
+
1124
+ Configure token budgets for extended thinking:
1125
+
1126
+ ```python
1127
+ from praisonaiagents.thinking import ThinkingBudget, ThinkingTracker
1128
+
1129
+ # Use predefined levels
1130
+ budget = ThinkingBudget.high() # 16,000 tokens
1131
+
1132
+ # Track usage
1133
+ tracker = ThinkingTracker()
1134
+ session = tracker.start_session(budget_tokens=16000)
1135
+ tracker.end_session(session, tokens_used=12000)
1136
+
1137
+ summary = tracker.get_summary()
1138
+ print(f"Utilization: {summary['average_utilization']:.1%}")
1139
+ ```
1140
+
1141
+ **CLI Commands:**
1142
+ ```bash
1143
+ praisonai thinking status # Show current budget
1144
+ praisonai thinking set high # Set budget level
1145
+ praisonai thinking stats # Show usage statistics
1146
+ ```
1147
+
1148
+ **Links:**
1149
+ - [📖 Coding Docs](https://docs.praison.ai/features/thinking-budgets)
1150
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/thinking)
1151
+ - [💻 Example](examples/thinking/basic_thinking.py)
1152
+
1153
+ ---
1154
+
1155
+ ### 14. Output Styles
1156
+
1157
+ Configure how agents format their responses:
1158
+
1159
+ ```python
1160
+ from praisonaiagents.output import OutputStyle, OutputFormatter
1161
+
1162
+ # Use preset styles
1163
+ style = OutputStyle.concise()
1164
+ formatter = OutputFormatter(style)
1165
+
1166
+ # Format output
1167
+ text = "# Hello\n\nThis is **bold** text."
1168
+ plain = formatter.format(text)
1169
+ print(plain)
1170
+ ```
1171
+
1172
+ **CLI Commands:**
1173
+ ```bash
1174
+ praisonai output status # Show current style
1175
+ praisonai output set concise # Set output style
1176
+ ```
1177
+
1178
+ **Links:**
1179
+ - [📖 Coding Docs](https://docs.praison.ai/features/output-styles)
1180
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/output-style)
1181
+ - [💻 Example](examples/output/basic_output.py)
1182
+
1183
+ ---
1184
+
1185
+ ### 15. Context Compaction
1186
+
1187
+ Automatically manage context window size:
1188
+
1189
+ ```python
1190
+ from praisonaiagents.compaction import (
1191
+ ContextCompactor, CompactionStrategy
1192
+ )
1193
+
1194
+ compactor = ContextCompactor(
1195
+ max_tokens=4000,
1196
+ strategy=CompactionStrategy.SLIDING,
1197
+ preserve_recent=3
1198
+ )
1199
+
1200
+ messages = [...] # Your conversation history
1201
+ compacted, result = compactor.compact(messages)
1202
+
1203
+ print(f"Compression: {result.compression_ratio:.1%}")
1204
+ ```
1205
+
1206
+ **CLI Commands:**
1207
+ ```bash
1208
+ praisonai compaction status # Show settings
1209
+ praisonai compaction set sliding # Set strategy
1210
+ praisonai compaction stats # Show statistics
1211
+ ```
1212
+
1213
+ **Links:**
1214
+ - [📖 Coding Docs](https://docs.praison.ai/features/context-compaction)
1215
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/compaction)
1216
+ - [💻 Example](examples/compaction/basic_compaction.py)
1217
+
1218
+ ---
1219
+
1220
+ ### 16. Field Names Reference (A-I-G-S)
1032
1221
 
1033
1222
  PraisonAI accepts both old (agents.yaml) and new (workflow.yaml) field names. Use the **canonical names** for new projects:
1034
1223
 
@@ -2632,6 +2821,103 @@ PraisonAI provides zero-dependency persistent memory for agents. For detailed ex
2632
2821
 
2633
2822
  ---
2634
2823
 
2824
+ ## 💾 Persistence (Databases)
2825
+
2826
+ Enable automatic conversation persistence with 2 lines of code:
2827
+
2828
+ ```python
2829
+ from praisonaiagents import Agent, db
2830
+
2831
+ agent = Agent(
2832
+ name="Assistant",
2833
+ db=db(database_url="postgresql://localhost/mydb"), # db(...) shortcut
2834
+ session_id="my-session" # Optional: defaults to per-hour ID (YYYYMMDDHH)
2835
+ )
2836
+ agent.chat("Hello!") # Auto-persists messages, runs, traces
2837
+ ```
2838
+
2839
+ ### Persistence CLI Commands
2840
+
2841
+ | Command | Description |
2842
+ |---------|-------------|
2843
+ | `praisonai persistence doctor` | Validate DB connectivity |
2844
+ | `praisonai persistence run` | Run agent with persistence |
2845
+ | `praisonai persistence resume` | Resume existing session |
2846
+ | `praisonai persistence export` | Export session to JSONL |
2847
+ | `praisonai persistence import` | Import session from JSONL |
2848
+ | `praisonai persistence migrate` | Apply schema migrations |
2849
+ | `praisonai persistence status` | Show schema status |
2850
+
2851
+ ### Databases Table
2852
+
2853
+ | Database | Store Type | Install | Example | Docs |
2854
+ |----------|------------|---------|---------|------|
2855
+ | PostgreSQL | Conversation | `pip install "praisonai[tools]"` | [simple_db_agent.py](examples/persistence/simple_db_agent.py) | [docs](https://docs.praison.ai/docs/databases/postgres) |
2856
+ | MySQL | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2857
+ | SQLite | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2858
+ | SingleStore | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2859
+ | Supabase | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2860
+ | SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2861
+ | Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
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) |
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) |
2868
+ | Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2869
+ | Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2870
+ | ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2871
+ | Redis | State | `pip install "praisonai[tools]"` | [state_redis.py](examples/persistence/state_redis.py) | [docs](https://docs.praison.ai/docs/databases/redis) |
2872
+ | MongoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2873
+ | DynamoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2874
+ | Firestore | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2875
+ | Upstash | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2876
+ | Memory | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2877
+
2878
+ ---
2879
+
2880
+ ## 🔧 Tools Table
2881
+
2882
+ Install all tools with: `pip install "praisonai[tools]"`
2883
+
2884
+ | Tool | Category | Import | Docs |
2885
+ |------|----------|--------|------|
2886
+ | Tavily | Web Search | `from praisonai_tools import TavilyTool` | [docs](https://docs.praison.ai/docs/tools/external/tavily) |
2887
+ | DuckDuckGo | Web Search | `from praisonai_tools import DuckDuckGoTool` | [docs](https://docs.praison.ai/docs/tools/external/duckduckgo) |
2888
+ | Exa | Web Search | `from praisonai_tools import ExaTool` | [docs](https://docs.praison.ai/docs/tools/external/exa) |
2889
+ | Serper | Web Search | `from praisonai_tools import SerperTool` | [docs](https://docs.praison.ai/docs/tools/external/serper) |
2890
+ | Jina | Web Reader | `from praisonai_tools import JinaTool` | [docs](https://docs.praison.ai/docs/tools/external/jina) |
2891
+ | Firecrawl | Web Scraping | `from praisonai_tools import FirecrawlTool` | [docs](https://docs.praison.ai/docs/tools/external/firecrawl) |
2892
+ | Crawl4AI | Web Scraping | `from praisonai_tools import Crawl4AITool` | [docs](https://docs.praison.ai/docs/tools/external/crawl4ai) |
2893
+ | Wikipedia | Knowledge | `from praisonai_tools import WikipediaTool` | [docs](https://docs.praison.ai/docs/tools/external/wikipedia) |
2894
+ | ArXiv | Research | `from praisonai_tools import ArxivTool` | [docs](https://docs.praison.ai/docs/tools/external/arxiv) |
2895
+ | HackerNews | News | `from praisonai_tools import HackerNewsTool` | [docs](https://docs.praison.ai/docs/tools/external/hackernews) |
2896
+ | YouTube | Media | `from praisonai_tools import YouTubeTool` | [docs](https://docs.praison.ai/docs/tools/external/youtube) |
2897
+ | Weather | Data | `from praisonai_tools import WeatherTool` | [docs](https://docs.praison.ai/docs/tools/external/weather) |
2898
+ | PostgreSQL | Database | `from praisonai_tools import PostgresTool` | [docs](https://docs.praison.ai/docs/tools/external/postgres) |
2899
+ | MySQL | Database | `from praisonai_tools import MySQLTool` | [docs](https://docs.praison.ai/docs/tools/external/mysql) |
2900
+ | SQLite | Database | `from praisonai_tools import SQLiteTool` | [docs](https://docs.praison.ai/docs/tools/external/sqlite) |
2901
+ | MongoDB | Database | `from praisonai_tools import MongoDBTool` | [docs](https://docs.praison.ai/docs/tools/external/mongodb) |
2902
+ | Redis | Database | `from praisonai_tools import RedisTool` | [docs](https://docs.praison.ai/docs/tools/external/redis) |
2903
+ | Qdrant | Vector DB | `from praisonai_tools import QdrantTool` | [docs](https://docs.praison.ai/docs/tools/external/qdrant) |
2904
+ | GitHub | DevOps | `from praisonai_tools import GitHubTool` | [docs](https://docs.praison.ai/docs/tools/external/github) |
2905
+ | Slack | Communication | `from praisonai_tools import SlackTool` | [docs](https://docs.praison.ai/docs/tools/external/slack) |
2906
+ | Discord | Communication | `from praisonai_tools import DiscordTool` | [docs](https://docs.praison.ai/docs/tools/external/discord) |
2907
+ | Telegram | Communication | `from praisonai_tools import TelegramTool` | [docs](https://docs.praison.ai/docs/tools/external/telegram) |
2908
+ | Email | Communication | `from praisonai_tools import EmailTool` | [docs](https://docs.praison.ai/docs/tools/external/email) |
2909
+ | Notion | Productivity | `from praisonai_tools import NotionTool` | [docs](https://docs.praison.ai/docs/tools/external/notion) |
2910
+ | File | File System | `from praisonai_tools import FileTool` | [docs](https://docs.praison.ai/docs/tools/external/file) |
2911
+ | Shell | System | `from praisonai_tools import ShellTool` | [docs](https://docs.praison.ai/docs/tools/external/shell) |
2912
+ | Python | Code | `from praisonai_tools import PythonTool` | [docs](https://docs.praison.ai/docs/tools/external/python) |
2913
+ | JSON | Data | `from praisonai_tools import JSONTool` | [docs](https://docs.praison.ai/docs/tools/external/json) |
2914
+ | CSV | Data | `from praisonai_tools import CSVTool` | [docs](https://docs.praison.ai/docs/tools/external/csv) |
2915
+ | Calculator | Math | `from praisonai_tools import CalculatorTool` | [docs](https://docs.praison.ai/docs/tools/external/calculator) |
2916
+
2917
+ > See [full tools documentation](https://docs.praison.ai/docs/tools/tools) for all 100+ available tools.
2918
+
2919
+ ---
2920
+
2635
2921
  ## 🎓 Video Tutorials
2636
2922
 
2637
2923
  Learn PraisonAI through our comprehensive video series:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.4.0
3
+ Version: 2.4.2
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.0
14
+ Requires-Dist: praisonaiagents>=0.2.1
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -358,6 +358,12 @@ npm install praisonai
358
358
  | ↳ 100+ LLM Support | [Example](examples/python/providers/openai/openai_gpt4_example.py) | [📖](https://docs.praison.ai/models) |
359
359
  | ↳ Callback Agents | [Example](examples/python/general/advanced-callback-systems.py) | [📖](https://docs.praison.ai/features/callbacks) |
360
360
  | ↳ Hooks | [Example](#9-hooks) | [📖](https://docs.praison.ai/features/hooks) |
361
+ | ↳ Shadow Git Checkpoints | [Example](#10-shadow-git-checkpoints) | [📖](https://docs.praison.ai/features/checkpoints) |
362
+ | ↳ Background Tasks | [Example](examples/background/basic_background.py) | [📖](https://docs.praison.ai/features/background-tasks) |
363
+ | ↳ Policy Engine | [Example](examples/policy/basic_policy.py) | [📖](https://docs.praison.ai/features/policy-engine) |
364
+ | ↳ Thinking Budgets | [Example](examples/thinking/basic_thinking.py) | [📖](https://docs.praison.ai/features/thinking-budgets) |
365
+ | ↳ Output Styles | [Example](examples/output/basic_output.py) | [📖](https://docs.praison.ai/features/output-styles) |
366
+ | ↳ Context Compaction | [Example](examples/compaction/basic_compaction.py) | [📖](https://docs.praison.ai/features/context-compaction) |
361
367
  | **📊 Monitoring & Management** | | |
362
368
  | ↳ Sessions Management | [Example](examples/python/sessions/comprehensive-session-management.py) | [📖](https://docs.praison.ai/features/sessions) |
363
369
  | ↳ Auto-Save Sessions | [Example](#session-management-python) | [📖](https://docs.praison.ai/docs/cli/session) |
@@ -1027,8 +1033,191 @@ praisonai checkpoint diff # Show changes
1027
1033
  praisonai checkpoint restore abc123 # Restore to checkpoint
1028
1034
  ```
1029
1035
 
1036
+ **Links:**
1037
+ - [📖 Coding Docs](https://docs.praison.ai/features/checkpoints)
1038
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/checkpoint)
1039
+ - [💻 Example](examples/checkpoints/basic_checkpoints.py)
1030
1040
 
1031
- ### 11. Field Names Reference (A-I-G-S)
1041
+ ---
1042
+
1043
+ ### 11. Background Tasks
1044
+
1045
+ Run agent tasks asynchronously without blocking:
1046
+
1047
+ ```python
1048
+ import asyncio
1049
+ from praisonaiagents.background import BackgroundRunner, BackgroundConfig
1050
+
1051
+ async def main():
1052
+ config = BackgroundConfig(max_concurrent_tasks=3)
1053
+ runner = BackgroundRunner(config=config)
1054
+
1055
+ async def my_task(name: str) -> str:
1056
+ await asyncio.sleep(2)
1057
+ return f"Task {name} completed"
1058
+
1059
+ task = await runner.submit(my_task, args=("example",), name="my_task")
1060
+ await task.wait(timeout=10.0)
1061
+ print(task.result)
1062
+
1063
+ asyncio.run(main())
1064
+ ```
1065
+
1066
+ **CLI Commands:**
1067
+ ```bash
1068
+ praisonai background list # List running tasks
1069
+ praisonai background status <id> # Check task status
1070
+ praisonai background cancel <id> # Cancel a task
1071
+ praisonai background clear # Clear completed tasks
1072
+ ```
1073
+
1074
+ **Links:**
1075
+ - [📖 Coding Docs](https://docs.praison.ai/features/background-tasks)
1076
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/background)
1077
+ - [💻 Example](examples/background/basic_background.py)
1078
+
1079
+ ---
1080
+
1081
+ ### 12. Policy Engine
1082
+
1083
+ Control what agents can and cannot do with policy-based execution:
1084
+
1085
+ ```python
1086
+ from praisonaiagents.policy import (
1087
+ PolicyEngine, Policy, PolicyRule, PolicyAction
1088
+ )
1089
+
1090
+ engine = PolicyEngine()
1091
+
1092
+ policy = Policy(
1093
+ name="no_delete",
1094
+ rules=[
1095
+ PolicyRule(
1096
+ action=PolicyAction.DENY,
1097
+ resource="tool:delete_*",
1098
+ reason="Delete operations blocked"
1099
+ )
1100
+ ]
1101
+ )
1102
+ engine.add_policy(policy)
1103
+
1104
+ result = engine.check("tool:delete_file", {})
1105
+ print(f"Allowed: {result.allowed}")
1106
+ ```
1107
+
1108
+ **CLI Commands:**
1109
+ ```bash
1110
+ praisonai policy list # List policies
1111
+ praisonai policy check "tool:name" # Check if allowed
1112
+ praisonai policy init # Create template
1113
+ ```
1114
+
1115
+ **Links:**
1116
+ - [📖 Coding Docs](https://docs.praison.ai/features/policy-engine)
1117
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/policy)
1118
+ - [💻 Example](examples/policy/basic_policy.py)
1119
+
1120
+ ---
1121
+
1122
+ ### 13. Thinking Budgets
1123
+
1124
+ Configure token budgets for extended thinking:
1125
+
1126
+ ```python
1127
+ from praisonaiagents.thinking import ThinkingBudget, ThinkingTracker
1128
+
1129
+ # Use predefined levels
1130
+ budget = ThinkingBudget.high() # 16,000 tokens
1131
+
1132
+ # Track usage
1133
+ tracker = ThinkingTracker()
1134
+ session = tracker.start_session(budget_tokens=16000)
1135
+ tracker.end_session(session, tokens_used=12000)
1136
+
1137
+ summary = tracker.get_summary()
1138
+ print(f"Utilization: {summary['average_utilization']:.1%}")
1139
+ ```
1140
+
1141
+ **CLI Commands:**
1142
+ ```bash
1143
+ praisonai thinking status # Show current budget
1144
+ praisonai thinking set high # Set budget level
1145
+ praisonai thinking stats # Show usage statistics
1146
+ ```
1147
+
1148
+ **Links:**
1149
+ - [📖 Coding Docs](https://docs.praison.ai/features/thinking-budgets)
1150
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/thinking)
1151
+ - [💻 Example](examples/thinking/basic_thinking.py)
1152
+
1153
+ ---
1154
+
1155
+ ### 14. Output Styles
1156
+
1157
+ Configure how agents format their responses:
1158
+
1159
+ ```python
1160
+ from praisonaiagents.output import OutputStyle, OutputFormatter
1161
+
1162
+ # Use preset styles
1163
+ style = OutputStyle.concise()
1164
+ formatter = OutputFormatter(style)
1165
+
1166
+ # Format output
1167
+ text = "# Hello\n\nThis is **bold** text."
1168
+ plain = formatter.format(text)
1169
+ print(plain)
1170
+ ```
1171
+
1172
+ **CLI Commands:**
1173
+ ```bash
1174
+ praisonai output status # Show current style
1175
+ praisonai output set concise # Set output style
1176
+ ```
1177
+
1178
+ **Links:**
1179
+ - [📖 Coding Docs](https://docs.praison.ai/features/output-styles)
1180
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/output-style)
1181
+ - [💻 Example](examples/output/basic_output.py)
1182
+
1183
+ ---
1184
+
1185
+ ### 15. Context Compaction
1186
+
1187
+ Automatically manage context window size:
1188
+
1189
+ ```python
1190
+ from praisonaiagents.compaction import (
1191
+ ContextCompactor, CompactionStrategy
1192
+ )
1193
+
1194
+ compactor = ContextCompactor(
1195
+ max_tokens=4000,
1196
+ strategy=CompactionStrategy.SLIDING,
1197
+ preserve_recent=3
1198
+ )
1199
+
1200
+ messages = [...] # Your conversation history
1201
+ compacted, result = compactor.compact(messages)
1202
+
1203
+ print(f"Compression: {result.compression_ratio:.1%}")
1204
+ ```
1205
+
1206
+ **CLI Commands:**
1207
+ ```bash
1208
+ praisonai compaction status # Show settings
1209
+ praisonai compaction set sliding # Set strategy
1210
+ praisonai compaction stats # Show statistics
1211
+ ```
1212
+
1213
+ **Links:**
1214
+ - [📖 Coding Docs](https://docs.praison.ai/features/context-compaction)
1215
+ - [📖 CLI Docs](https://docs.praison.ai/docs/cli/compaction)
1216
+ - [💻 Example](examples/compaction/basic_compaction.py)
1217
+
1218
+ ---
1219
+
1220
+ ### 16. Field Names Reference (A-I-G-S)
1032
1221
 
1033
1222
  PraisonAI accepts both old (agents.yaml) and new (workflow.yaml) field names. Use the **canonical names** for new projects:
1034
1223
 
@@ -2632,6 +2821,103 @@ PraisonAI provides zero-dependency persistent memory for agents. For detailed ex
2632
2821
 
2633
2822
  ---
2634
2823
 
2824
+ ## 💾 Persistence (Databases)
2825
+
2826
+ Enable automatic conversation persistence with 2 lines of code:
2827
+
2828
+ ```python
2829
+ from praisonaiagents import Agent, db
2830
+
2831
+ agent = Agent(
2832
+ name="Assistant",
2833
+ db=db(database_url="postgresql://localhost/mydb"), # db(...) shortcut
2834
+ session_id="my-session" # Optional: defaults to per-hour ID (YYYYMMDDHH)
2835
+ )
2836
+ agent.chat("Hello!") # Auto-persists messages, runs, traces
2837
+ ```
2838
+
2839
+ ### Persistence CLI Commands
2840
+
2841
+ | Command | Description |
2842
+ |---------|-------------|
2843
+ | `praisonai persistence doctor` | Validate DB connectivity |
2844
+ | `praisonai persistence run` | Run agent with persistence |
2845
+ | `praisonai persistence resume` | Resume existing session |
2846
+ | `praisonai persistence export` | Export session to JSONL |
2847
+ | `praisonai persistence import` | Import session from JSONL |
2848
+ | `praisonai persistence migrate` | Apply schema migrations |
2849
+ | `praisonai persistence status` | Show schema status |
2850
+
2851
+ ### Databases Table
2852
+
2853
+ | Database | Store Type | Install | Example | Docs |
2854
+ |----------|------------|---------|---------|------|
2855
+ | PostgreSQL | Conversation | `pip install "praisonai[tools]"` | [simple_db_agent.py](examples/persistence/simple_db_agent.py) | [docs](https://docs.praison.ai/docs/databases/postgres) |
2856
+ | MySQL | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2857
+ | SQLite | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2858
+ | SingleStore | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2859
+ | Supabase | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2860
+ | SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2861
+ | Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
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) |
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) |
2868
+ | Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2869
+ | Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2870
+ | ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2871
+ | Redis | State | `pip install "praisonai[tools]"` | [state_redis.py](examples/persistence/state_redis.py) | [docs](https://docs.praison.ai/docs/databases/redis) |
2872
+ | MongoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2873
+ | DynamoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2874
+ | Firestore | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2875
+ | Upstash | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2876
+ | Memory | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
2877
+
2878
+ ---
2879
+
2880
+ ## 🔧 Tools Table
2881
+
2882
+ Install all tools with: `pip install "praisonai[tools]"`
2883
+
2884
+ | Tool | Category | Import | Docs |
2885
+ |------|----------|--------|------|
2886
+ | Tavily | Web Search | `from praisonai_tools import TavilyTool` | [docs](https://docs.praison.ai/docs/tools/external/tavily) |
2887
+ | DuckDuckGo | Web Search | `from praisonai_tools import DuckDuckGoTool` | [docs](https://docs.praison.ai/docs/tools/external/duckduckgo) |
2888
+ | Exa | Web Search | `from praisonai_tools import ExaTool` | [docs](https://docs.praison.ai/docs/tools/external/exa) |
2889
+ | Serper | Web Search | `from praisonai_tools import SerperTool` | [docs](https://docs.praison.ai/docs/tools/external/serper) |
2890
+ | Jina | Web Reader | `from praisonai_tools import JinaTool` | [docs](https://docs.praison.ai/docs/tools/external/jina) |
2891
+ | Firecrawl | Web Scraping | `from praisonai_tools import FirecrawlTool` | [docs](https://docs.praison.ai/docs/tools/external/firecrawl) |
2892
+ | Crawl4AI | Web Scraping | `from praisonai_tools import Crawl4AITool` | [docs](https://docs.praison.ai/docs/tools/external/crawl4ai) |
2893
+ | Wikipedia | Knowledge | `from praisonai_tools import WikipediaTool` | [docs](https://docs.praison.ai/docs/tools/external/wikipedia) |
2894
+ | ArXiv | Research | `from praisonai_tools import ArxivTool` | [docs](https://docs.praison.ai/docs/tools/external/arxiv) |
2895
+ | HackerNews | News | `from praisonai_tools import HackerNewsTool` | [docs](https://docs.praison.ai/docs/tools/external/hackernews) |
2896
+ | YouTube | Media | `from praisonai_tools import YouTubeTool` | [docs](https://docs.praison.ai/docs/tools/external/youtube) |
2897
+ | Weather | Data | `from praisonai_tools import WeatherTool` | [docs](https://docs.praison.ai/docs/tools/external/weather) |
2898
+ | PostgreSQL | Database | `from praisonai_tools import PostgresTool` | [docs](https://docs.praison.ai/docs/tools/external/postgres) |
2899
+ | MySQL | Database | `from praisonai_tools import MySQLTool` | [docs](https://docs.praison.ai/docs/tools/external/mysql) |
2900
+ | SQLite | Database | `from praisonai_tools import SQLiteTool` | [docs](https://docs.praison.ai/docs/tools/external/sqlite) |
2901
+ | MongoDB | Database | `from praisonai_tools import MongoDBTool` | [docs](https://docs.praison.ai/docs/tools/external/mongodb) |
2902
+ | Redis | Database | `from praisonai_tools import RedisTool` | [docs](https://docs.praison.ai/docs/tools/external/redis) |
2903
+ | Qdrant | Vector DB | `from praisonai_tools import QdrantTool` | [docs](https://docs.praison.ai/docs/tools/external/qdrant) |
2904
+ | GitHub | DevOps | `from praisonai_tools import GitHubTool` | [docs](https://docs.praison.ai/docs/tools/external/github) |
2905
+ | Slack | Communication | `from praisonai_tools import SlackTool` | [docs](https://docs.praison.ai/docs/tools/external/slack) |
2906
+ | Discord | Communication | `from praisonai_tools import DiscordTool` | [docs](https://docs.praison.ai/docs/tools/external/discord) |
2907
+ | Telegram | Communication | `from praisonai_tools import TelegramTool` | [docs](https://docs.praison.ai/docs/tools/external/telegram) |
2908
+ | Email | Communication | `from praisonai_tools import EmailTool` | [docs](https://docs.praison.ai/docs/tools/external/email) |
2909
+ | Notion | Productivity | `from praisonai_tools import NotionTool` | [docs](https://docs.praison.ai/docs/tools/external/notion) |
2910
+ | File | File System | `from praisonai_tools import FileTool` | [docs](https://docs.praison.ai/docs/tools/external/file) |
2911
+ | Shell | System | `from praisonai_tools import ShellTool` | [docs](https://docs.praison.ai/docs/tools/external/shell) |
2912
+ | Python | Code | `from praisonai_tools import PythonTool` | [docs](https://docs.praison.ai/docs/tools/external/python) |
2913
+ | JSON | Data | `from praisonai_tools import JSONTool` | [docs](https://docs.praison.ai/docs/tools/external/json) |
2914
+ | CSV | Data | `from praisonai_tools import CSVTool` | [docs](https://docs.praison.ai/docs/tools/external/csv) |
2915
+ | Calculator | Math | `from praisonai_tools import CalculatorTool` | [docs](https://docs.praison.ai/docs/tools/external/calculator) |
2916
+
2917
+ > See [full tools documentation](https://docs.praison.ai/docs/tools/tools) for all 100+ available tools.
2918
+
2919
+ ---
2920
+
2635
2921
  ## 🎓 Video Tutorials
2636
2922
 
2637
2923
  Learn PraisonAI through our comprehensive video series: