praisonAI 2.2.93__tar.gz → 2.2.96__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 (97) hide show
  1. praisonai-2.2.96/PKG-INFO +131 -0
  2. praisonai-2.2.96/PraisonAI.egg-info/PKG-INFO +131 -0
  3. praisonai-2.2.96/PraisonAI.egg-info/SOURCES.txt +53 -0
  4. praisonai-2.2.96/PraisonAI.egg-info/dependency_links.txt +1 -0
  5. praisonai-2.2.96/PraisonAI.egg-info/entry_points.txt +4 -0
  6. praisonai-2.2.96/PraisonAI.egg-info/requires.txt +102 -0
  7. praisonai-2.2.96/PraisonAI.egg-info/top_level.txt +1 -0
  8. praisonai-2.2.96/README.md +34 -0
  9. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/cli.py +146 -6
  10. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/deploy.py +1 -1
  11. praisonai-2.2.96/praisonai/version.py +1 -0
  12. praisonai-2.2.96/pyproject.toml +116 -0
  13. praisonai-2.2.96/setup.cfg +4 -0
  14. praisonai-2.2.96/tests/test.py +105 -0
  15. praisonai-2.2.96/tests/test_agents_playbook.py +36 -0
  16. praisonai-2.2.96/tests/test_basic.py +32 -0
  17. praisonai-2.2.96/tests/test_custom_tools_fix.py +83 -0
  18. praisonai-2.2.96/tests/test_double_api_fix.py +187 -0
  19. praisonai-2.2.96/tests/test_phase2_refactor.py +152 -0
  20. praisonai-2.2.96/tests/test_runner.py +355 -0
  21. praisonai-2.2.93/PKG-INFO +0 -110
  22. praisonai-2.2.93/README.md +0 -9
  23. praisonai-2.2.93/praisonai/README.md +0 -5
  24. praisonai-2.2.93/praisonai/public/android-chrome-192x192.png +0 -0
  25. praisonai-2.2.93/praisonai/public/android-chrome-512x512.png +0 -0
  26. praisonai-2.2.93/praisonai/public/apple-touch-icon.png +0 -0
  27. praisonai-2.2.93/praisonai/public/fantasy.svg +0 -3
  28. praisonai-2.2.93/praisonai/public/favicon-16x16.png +0 -0
  29. praisonai-2.2.93/praisonai/public/favicon-32x32.png +0 -0
  30. praisonai-2.2.93/praisonai/public/favicon.ico +0 -0
  31. praisonai-2.2.93/praisonai/public/game.svg +0 -3
  32. praisonai-2.2.93/praisonai/public/logo_dark.png +0 -0
  33. praisonai-2.2.93/praisonai/public/logo_light.png +0 -0
  34. praisonai-2.2.93/praisonai/public/movie.svg +0 -3
  35. praisonai-2.2.93/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
  36. praisonai-2.2.93/praisonai/public/praison-ai-agents-architecture.png +0 -0
  37. praisonai-2.2.93/praisonai/public/thriller.svg +0 -3
  38. praisonai-2.2.93/praisonai/setup/config.yaml +0 -60
  39. praisonai-2.2.93/praisonai/setup/setup_conda_env.sh +0 -105
  40. praisonai-2.2.93/praisonai/ui/README.md +0 -21
  41. praisonai-2.2.93/praisonai/ui/config/chainlit.md +0 -1
  42. praisonai-2.2.93/praisonai/ui/config/translations/bn.json +0 -231
  43. praisonai-2.2.93/praisonai/ui/config/translations/en-US.json +0 -229
  44. praisonai-2.2.93/praisonai/ui/config/translations/gu.json +0 -231
  45. praisonai-2.2.93/praisonai/ui/config/translations/he-IL.json +0 -231
  46. praisonai-2.2.93/praisonai/ui/config/translations/hi.json +0 -231
  47. praisonai-2.2.93/praisonai/ui/config/translations/kn.json +0 -231
  48. praisonai-2.2.93/praisonai/ui/config/translations/ml.json +0 -231
  49. praisonai-2.2.93/praisonai/ui/config/translations/mr.json +0 -231
  50. praisonai-2.2.93/praisonai/ui/config/translations/ta.json +0 -231
  51. praisonai-2.2.93/praisonai/ui/config/translations/te.json +0 -231
  52. praisonai-2.2.93/praisonai/ui/config/translations/zh-CN.json +0 -229
  53. praisonai-2.2.93/praisonai/ui/public/fantasy.svg +0 -3
  54. praisonai-2.2.93/praisonai/ui/public/game.svg +0 -3
  55. praisonai-2.2.93/praisonai/ui/public/logo_dark.png +0 -0
  56. praisonai-2.2.93/praisonai/ui/public/logo_light.png +0 -0
  57. praisonai-2.2.93/praisonai/ui/public/movie.svg +0 -3
  58. praisonai-2.2.93/praisonai/ui/public/praison.css +0 -3
  59. praisonai-2.2.93/praisonai/ui/public/thriller.svg +0 -3
  60. praisonai-2.2.93/praisonai/ui/tools.md +0 -133
  61. praisonai-2.2.93/praisonai/version.py +0 -1
  62. praisonai-2.2.93/pyproject.toml +0 -299
  63. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/__init__.py +0 -0
  64. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/__main__.py +0 -0
  65. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/agents_generator.py +0 -0
  66. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/api/call.py +0 -0
  67. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/auto.py +0 -0
  68. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/chainlit_ui.py +0 -0
  69. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inbuilt_tools/__init__.py +0 -0
  70. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  71. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/__init__.py +0 -0
  72. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/config.py +0 -0
  73. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/models.py +0 -0
  74. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/scheduler.py +0 -0
  75. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/__init__.py +0 -0
  76. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/build.py +0 -0
  77. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/post_install.py +0 -0
  78. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/setup_conda_env.py +0 -0
  79. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup.py +0 -0
  80. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/test.py +0 -0
  81. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/train.py +0 -0
  82. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/train_vision.py +0 -0
  83. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/agents.py +0 -0
  84. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/callbacks.py +0 -0
  85. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/chat.py +0 -0
  86. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/code.py +0 -0
  87. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/colab.py +0 -0
  88. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/colab_chainlit.py +0 -0
  89. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/components/aicoder.py +0 -0
  90. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/context.py +0 -0
  91. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/database_config.py +0 -0
  92. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/db.py +0 -0
  93. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtime.py +0 -0
  94. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtimeclient/__init__.py +0 -0
  95. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtimeclient/tools.py +0 -0
  96. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/sql_alchemy.py +0 -0
  97. {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/upload_vision.py +0 -0
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: PraisonAI
3
+ Version: 2.2.96
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
+ Author: Mervin Praison
6
+ License: MIT
7
+ Project-URL: Homepage, https://docs.praison.ai
8
+ Project-URL: Repository, https://github.com/mervinpraison/PraisonAI
9
+ Requires-Python: >=3.10
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: rich>=13.7
12
+ Requires-Dist: markdown>=3.5
13
+ Requires-Dist: pyparsing>=3.0.0
14
+ Requires-Dist: praisonaiagents>=0.0.167
15
+ Requires-Dist: python-dotenv>=0.19.0
16
+ Requires-Dist: instructor>=1.3.3
17
+ Requires-Dist: PyYAML>=6.0
18
+ Requires-Dist: mcp>=1.6.0
19
+ Provides-Extra: ui
20
+ Requires-Dist: chainlit==2.5.5; extra == "ui"
21
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "ui"
22
+ Requires-Dist: aiosqlite>=0.20.0; extra == "ui"
23
+ Requires-Dist: greenlet>=3.0.3; extra == "ui"
24
+ Requires-Dist: pydantic<=2.10.1; extra == "ui"
25
+ Provides-Extra: gradio
26
+ Requires-Dist: gradio>=4.26.0; extra == "gradio"
27
+ Provides-Extra: api
28
+ Requires-Dist: flask>=3.0.0; extra == "api"
29
+ Requires-Dist: fastapi>=0.115.0; extra == "api"
30
+ Requires-Dist: uvicorn>=0.34.0; extra == "api"
31
+ Provides-Extra: agentops
32
+ Requires-Dist: agentops>=0.3.12; extra == "agentops"
33
+ Provides-Extra: google
34
+ Requires-Dist: langchain-google-genai>=2.1.0; extra == "google"
35
+ Provides-Extra: openai
36
+ Requires-Dist: langchain-openai<0.3.0,>=0.2.1; extra == "openai"
37
+ Provides-Extra: anthropic
38
+ Requires-Dist: langchain-anthropic>=0.3.0; extra == "anthropic"
39
+ Provides-Extra: cohere
40
+ Requires-Dist: langchain-cohere<0.4.0,>=0.3.0; extra == "cohere"
41
+ Provides-Extra: chat
42
+ Requires-Dist: chainlit==2.5.5; extra == "chat"
43
+ Requires-Dist: litellm>=1.72.6; extra == "chat"
44
+ Requires-Dist: aiosqlite>=0.20.0; extra == "chat"
45
+ Requires-Dist: greenlet>=3.0.3; extra == "chat"
46
+ Requires-Dist: tavily-python==0.5.0; extra == "chat"
47
+ Requires-Dist: crawl4ai>=0.7.0; extra == "chat"
48
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "chat"
49
+ Requires-Dist: playwright>=1.47.0; extra == "chat"
50
+ Requires-Dist: rich; extra == "chat"
51
+ Requires-Dist: pydantic<=2.10.1; extra == "chat"
52
+ Provides-Extra: code
53
+ Requires-Dist: chainlit==2.5.5; extra == "code"
54
+ Requires-Dist: litellm>=1.72.6; extra == "code"
55
+ Requires-Dist: aiosqlite>=0.20.0; extra == "code"
56
+ Requires-Dist: greenlet>=3.0.3; extra == "code"
57
+ Requires-Dist: tavily-python==0.5.0; extra == "code"
58
+ Requires-Dist: crawl4ai>=0.7.0; extra == "code"
59
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "code"
60
+ Requires-Dist: playwright>=1.47.0; extra == "code"
61
+ Requires-Dist: pydantic<=2.10.1; extra == "code"
62
+ Provides-Extra: realtime
63
+ Requires-Dist: chainlit==2.5.5; extra == "realtime"
64
+ Requires-Dist: litellm>=1.72.6; extra == "realtime"
65
+ Requires-Dist: aiosqlite>=0.20.0; extra == "realtime"
66
+ Requires-Dist: greenlet>=3.0.3; extra == "realtime"
67
+ Requires-Dist: tavily-python==0.5.0; extra == "realtime"
68
+ Requires-Dist: crawl4ai>=0.7.0; extra == "realtime"
69
+ Requires-Dist: websockets>=12.0; extra == "realtime"
70
+ Requires-Dist: plotly>=5.24.0; extra == "realtime"
71
+ Requires-Dist: yfinance>=0.2.44; extra == "realtime"
72
+ Requires-Dist: duckduckgo_search>=6.3.0; extra == "realtime"
73
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "realtime"
74
+ Provides-Extra: call
75
+ Requires-Dist: twilio>=7.0.0; extra == "call"
76
+ Requires-Dist: fastapi>=0.95.0; extra == "call"
77
+ Requires-Dist: uvicorn>=0.20.0; extra == "call"
78
+ Requires-Dist: websockets>=12.0; extra == "call"
79
+ Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
80
+ Requires-Dist: pyngrok>=1.4.0; extra == "call"
81
+ Requires-Dist: rich; extra == "call"
82
+ Requires-Dist: openai>=1.54.0; extra == "call"
83
+ Provides-Extra: train
84
+ Provides-Extra: crewai
85
+ Requires-Dist: crewai>=0.157.0; extra == "crewai"
86
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "crewai"
87
+ Provides-Extra: autogen
88
+ Requires-Dist: pyautogen==0.2.29; extra == "autogen"
89
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen"
90
+ Requires-Dist: crewai; extra == "autogen"
91
+ Provides-Extra: autogen-v4
92
+ Requires-Dist: autogen-agentchat>=0.4.0; extra == "autogen-v4"
93
+ Requires-Dist: autogen-ext[openai]>=0.4.0; extra == "autogen-v4"
94
+ Requires-Dist: autogen-core>=0.4.0; extra == "autogen-v4"
95
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen-v4"
96
+ Requires-Dist: crewai; extra == "autogen-v4"
97
+
98
+ # PraisonAI Package
99
+
100
+ ## Development
101
+
102
+ ```bash
103
+ # Install
104
+ uv sync
105
+
106
+ # Build
107
+ uv build
108
+
109
+ # Publish
110
+ uv publish
111
+ ```
112
+
113
+ ## Version Bump
114
+
115
+ ```bash
116
+ # From project root
117
+ python src/praisonai/scripts/bump_version.py 2.2.96
118
+
119
+ # With praisonaiagents dependency
120
+ python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
121
+ ```
122
+
123
+ ## Release
124
+
125
+ ```bash
126
+ # From project root (runs uv lock, build, git tag, gh release)
127
+ python src/praisonai/scripts/release.py
128
+
129
+ # Then publish
130
+ cd src/praisonai && uv publish
131
+ ```
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: PraisonAI
3
+ Version: 2.2.96
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
+ Author: Mervin Praison
6
+ License: MIT
7
+ Project-URL: Homepage, https://docs.praison.ai
8
+ Project-URL: Repository, https://github.com/mervinpraison/PraisonAI
9
+ Requires-Python: >=3.10
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: rich>=13.7
12
+ Requires-Dist: markdown>=3.5
13
+ Requires-Dist: pyparsing>=3.0.0
14
+ Requires-Dist: praisonaiagents>=0.0.167
15
+ Requires-Dist: python-dotenv>=0.19.0
16
+ Requires-Dist: instructor>=1.3.3
17
+ Requires-Dist: PyYAML>=6.0
18
+ Requires-Dist: mcp>=1.6.0
19
+ Provides-Extra: ui
20
+ Requires-Dist: chainlit==2.5.5; extra == "ui"
21
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "ui"
22
+ Requires-Dist: aiosqlite>=0.20.0; extra == "ui"
23
+ Requires-Dist: greenlet>=3.0.3; extra == "ui"
24
+ Requires-Dist: pydantic<=2.10.1; extra == "ui"
25
+ Provides-Extra: gradio
26
+ Requires-Dist: gradio>=4.26.0; extra == "gradio"
27
+ Provides-Extra: api
28
+ Requires-Dist: flask>=3.0.0; extra == "api"
29
+ Requires-Dist: fastapi>=0.115.0; extra == "api"
30
+ Requires-Dist: uvicorn>=0.34.0; extra == "api"
31
+ Provides-Extra: agentops
32
+ Requires-Dist: agentops>=0.3.12; extra == "agentops"
33
+ Provides-Extra: google
34
+ Requires-Dist: langchain-google-genai>=2.1.0; extra == "google"
35
+ Provides-Extra: openai
36
+ Requires-Dist: langchain-openai<0.3.0,>=0.2.1; extra == "openai"
37
+ Provides-Extra: anthropic
38
+ Requires-Dist: langchain-anthropic>=0.3.0; extra == "anthropic"
39
+ Provides-Extra: cohere
40
+ Requires-Dist: langchain-cohere<0.4.0,>=0.3.0; extra == "cohere"
41
+ Provides-Extra: chat
42
+ Requires-Dist: chainlit==2.5.5; extra == "chat"
43
+ Requires-Dist: litellm>=1.72.6; extra == "chat"
44
+ Requires-Dist: aiosqlite>=0.20.0; extra == "chat"
45
+ Requires-Dist: greenlet>=3.0.3; extra == "chat"
46
+ Requires-Dist: tavily-python==0.5.0; extra == "chat"
47
+ Requires-Dist: crawl4ai>=0.7.0; extra == "chat"
48
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "chat"
49
+ Requires-Dist: playwright>=1.47.0; extra == "chat"
50
+ Requires-Dist: rich; extra == "chat"
51
+ Requires-Dist: pydantic<=2.10.1; extra == "chat"
52
+ Provides-Extra: code
53
+ Requires-Dist: chainlit==2.5.5; extra == "code"
54
+ Requires-Dist: litellm>=1.72.6; extra == "code"
55
+ Requires-Dist: aiosqlite>=0.20.0; extra == "code"
56
+ Requires-Dist: greenlet>=3.0.3; extra == "code"
57
+ Requires-Dist: tavily-python==0.5.0; extra == "code"
58
+ Requires-Dist: crawl4ai>=0.7.0; extra == "code"
59
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "code"
60
+ Requires-Dist: playwright>=1.47.0; extra == "code"
61
+ Requires-Dist: pydantic<=2.10.1; extra == "code"
62
+ Provides-Extra: realtime
63
+ Requires-Dist: chainlit==2.5.5; extra == "realtime"
64
+ Requires-Dist: litellm>=1.72.6; extra == "realtime"
65
+ Requires-Dist: aiosqlite>=0.20.0; extra == "realtime"
66
+ Requires-Dist: greenlet>=3.0.3; extra == "realtime"
67
+ Requires-Dist: tavily-python==0.5.0; extra == "realtime"
68
+ Requires-Dist: crawl4ai>=0.7.0; extra == "realtime"
69
+ Requires-Dist: websockets>=12.0; extra == "realtime"
70
+ Requires-Dist: plotly>=5.24.0; extra == "realtime"
71
+ Requires-Dist: yfinance>=0.2.44; extra == "realtime"
72
+ Requires-Dist: duckduckgo_search>=6.3.0; extra == "realtime"
73
+ Requires-Dist: sqlalchemy>=2.0.36; extra == "realtime"
74
+ Provides-Extra: call
75
+ Requires-Dist: twilio>=7.0.0; extra == "call"
76
+ Requires-Dist: fastapi>=0.95.0; extra == "call"
77
+ Requires-Dist: uvicorn>=0.20.0; extra == "call"
78
+ Requires-Dist: websockets>=12.0; extra == "call"
79
+ Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
80
+ Requires-Dist: pyngrok>=1.4.0; extra == "call"
81
+ Requires-Dist: rich; extra == "call"
82
+ Requires-Dist: openai>=1.54.0; extra == "call"
83
+ Provides-Extra: train
84
+ Provides-Extra: crewai
85
+ Requires-Dist: crewai>=0.157.0; extra == "crewai"
86
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "crewai"
87
+ Provides-Extra: autogen
88
+ Requires-Dist: pyautogen==0.2.29; extra == "autogen"
89
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen"
90
+ Requires-Dist: crewai; extra == "autogen"
91
+ Provides-Extra: autogen-v4
92
+ Requires-Dist: autogen-agentchat>=0.4.0; extra == "autogen-v4"
93
+ Requires-Dist: autogen-ext[openai]>=0.4.0; extra == "autogen-v4"
94
+ Requires-Dist: autogen-core>=0.4.0; extra == "autogen-v4"
95
+ Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen-v4"
96
+ Requires-Dist: crewai; extra == "autogen-v4"
97
+
98
+ # PraisonAI Package
99
+
100
+ ## Development
101
+
102
+ ```bash
103
+ # Install
104
+ uv sync
105
+
106
+ # Build
107
+ uv build
108
+
109
+ # Publish
110
+ uv publish
111
+ ```
112
+
113
+ ## Version Bump
114
+
115
+ ```bash
116
+ # From project root
117
+ python src/praisonai/scripts/bump_version.py 2.2.96
118
+
119
+ # With praisonaiagents dependency
120
+ python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
121
+ ```
122
+
123
+ ## Release
124
+
125
+ ```bash
126
+ # From project root (runs uv lock, build, git tag, gh release)
127
+ python src/praisonai/scripts/release.py
128
+
129
+ # Then publish
130
+ cd src/praisonai && uv publish
131
+ ```
@@ -0,0 +1,53 @@
1
+ README.md
2
+ pyproject.toml
3
+ PraisonAI.egg-info/PKG-INFO
4
+ PraisonAI.egg-info/SOURCES.txt
5
+ PraisonAI.egg-info/dependency_links.txt
6
+ PraisonAI.egg-info/entry_points.txt
7
+ PraisonAI.egg-info/requires.txt
8
+ PraisonAI.egg-info/top_level.txt
9
+ praisonai/__init__.py
10
+ praisonai/__main__.py
11
+ praisonai/agents_generator.py
12
+ praisonai/auto.py
13
+ praisonai/chainlit_ui.py
14
+ praisonai/cli.py
15
+ praisonai/deploy.py
16
+ praisonai/scheduler.py
17
+ praisonai/setup.py
18
+ praisonai/test.py
19
+ praisonai/train.py
20
+ praisonai/train_vision.py
21
+ praisonai/upload_vision.py
22
+ praisonai/version.py
23
+ praisonai/api/call.py
24
+ praisonai/inbuilt_tools/__init__.py
25
+ praisonai/inbuilt_tools/autogen_tools.py
26
+ praisonai/inc/__init__.py
27
+ praisonai/inc/config.py
28
+ praisonai/inc/models.py
29
+ praisonai/setup/__init__.py
30
+ praisonai/setup/build.py
31
+ praisonai/setup/post_install.py
32
+ praisonai/setup/setup_conda_env.py
33
+ praisonai/ui/agents.py
34
+ praisonai/ui/callbacks.py
35
+ praisonai/ui/chat.py
36
+ praisonai/ui/code.py
37
+ praisonai/ui/colab.py
38
+ praisonai/ui/colab_chainlit.py
39
+ praisonai/ui/context.py
40
+ praisonai/ui/database_config.py
41
+ praisonai/ui/db.py
42
+ praisonai/ui/realtime.py
43
+ praisonai/ui/sql_alchemy.py
44
+ praisonai/ui/components/aicoder.py
45
+ praisonai/ui/realtimeclient/__init__.py
46
+ praisonai/ui/realtimeclient/tools.py
47
+ tests/test.py
48
+ tests/test_agents_playbook.py
49
+ tests/test_basic.py
50
+ tests/test_custom_tools_fix.py
51
+ tests/test_double_api_fix.py
52
+ tests/test_phase2_refactor.py
53
+ tests/test_runner.py
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ praisonai = praisonai.__main__:main
3
+ praisonai-call = praisonai.api.call:main
4
+ setup-conda-env = praisonai.setup.setup_conda_env:main
@@ -0,0 +1,102 @@
1
+ rich>=13.7
2
+ markdown>=3.5
3
+ pyparsing>=3.0.0
4
+ praisonaiagents>=0.0.167
5
+ python-dotenv>=0.19.0
6
+ instructor>=1.3.3
7
+ PyYAML>=6.0
8
+ mcp>=1.6.0
9
+
10
+ [agentops]
11
+ agentops>=0.3.12
12
+
13
+ [anthropic]
14
+ langchain-anthropic>=0.3.0
15
+
16
+ [api]
17
+ flask>=3.0.0
18
+ fastapi>=0.115.0
19
+ uvicorn>=0.34.0
20
+
21
+ [autogen]
22
+ pyautogen==0.2.29
23
+ praisonai-tools>=0.0.22
24
+ crewai
25
+
26
+ [autogen-v4]
27
+ autogen-agentchat>=0.4.0
28
+ autogen-ext[openai]>=0.4.0
29
+ autogen-core>=0.4.0
30
+ praisonai-tools>=0.0.22
31
+ crewai
32
+
33
+ [call]
34
+ twilio>=7.0.0
35
+ fastapi>=0.95.0
36
+ uvicorn>=0.20.0
37
+ websockets>=12.0
38
+ flaml[automl]>=2.3.1
39
+ pyngrok>=1.4.0
40
+ rich
41
+ openai>=1.54.0
42
+
43
+ [chat]
44
+ chainlit==2.5.5
45
+ litellm>=1.72.6
46
+ aiosqlite>=0.20.0
47
+ greenlet>=3.0.3
48
+ tavily-python==0.5.0
49
+ crawl4ai>=0.7.0
50
+ sqlalchemy>=2.0.36
51
+ playwright>=1.47.0
52
+ rich
53
+ pydantic<=2.10.1
54
+
55
+ [code]
56
+ chainlit==2.5.5
57
+ litellm>=1.72.6
58
+ aiosqlite>=0.20.0
59
+ greenlet>=3.0.3
60
+ tavily-python==0.5.0
61
+ crawl4ai>=0.7.0
62
+ sqlalchemy>=2.0.36
63
+ playwright>=1.47.0
64
+ pydantic<=2.10.1
65
+
66
+ [cohere]
67
+ langchain-cohere<0.4.0,>=0.3.0
68
+
69
+ [crewai]
70
+ crewai>=0.157.0
71
+ praisonai-tools>=0.0.22
72
+
73
+ [google]
74
+ langchain-google-genai>=2.1.0
75
+
76
+ [gradio]
77
+ gradio>=4.26.0
78
+
79
+ [openai]
80
+ langchain-openai<0.3.0,>=0.2.1
81
+
82
+ [realtime]
83
+ chainlit==2.5.5
84
+ litellm>=1.72.6
85
+ aiosqlite>=0.20.0
86
+ greenlet>=3.0.3
87
+ tavily-python==0.5.0
88
+ crawl4ai>=0.7.0
89
+ websockets>=12.0
90
+ plotly>=5.24.0
91
+ yfinance>=0.2.44
92
+ duckduckgo_search>=6.3.0
93
+ sqlalchemy>=2.0.36
94
+
95
+ [train]
96
+
97
+ [ui]
98
+ chainlit==2.5.5
99
+ sqlalchemy>=2.0.36
100
+ aiosqlite>=0.20.0
101
+ greenlet>=3.0.3
102
+ pydantic<=2.10.1
@@ -0,0 +1 @@
1
+ praisonai
@@ -0,0 +1,34 @@
1
+ # PraisonAI Package
2
+
3
+ ## Development
4
+
5
+ ```bash
6
+ # Install
7
+ uv sync
8
+
9
+ # Build
10
+ uv build
11
+
12
+ # Publish
13
+ uv publish
14
+ ```
15
+
16
+ ## Version Bump
17
+
18
+ ```bash
19
+ # From project root
20
+ python src/praisonai/scripts/bump_version.py 2.2.96
21
+
22
+ # With praisonaiagents dependency
23
+ python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
24
+ ```
25
+
26
+ ## Release
27
+
28
+ ```bash
29
+ # From project root (runs uv lock, build, git tag, gh release)
30
+ python src/praisonai/scripts/release.py
31
+
32
+ # Then publish
33
+ cd src/praisonai && uv publish
34
+ ```
@@ -578,6 +578,9 @@ class PraisonAI:
578
578
  parser.add_argument("--goal", type=str, help="Goal for context engineering")
579
579
  parser.add_argument("--auto-analyze", action="store_true", help="Enable automatic analysis in context engineering")
580
580
  parser.add_argument("--research", action="store_true", help="Run deep research on a topic")
581
+ parser.add_argument("--query-rewrite", action="store_true", help="Rewrite query before research for better results")
582
+ parser.add_argument("--rewrite-tools", type=str, help="Tools for query rewriter (e.g., 'internet_search' or path to tools.py)")
583
+ parser.add_argument("--tools", "-t", type=str, help="Path to tools.py file for research agent")
581
584
  parser.add_argument("--save", "-s", action="store_true", help="Save research output to file (output/research/)")
582
585
  parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output for research")
583
586
 
@@ -721,7 +724,10 @@ class PraisonAI:
721
724
  research_model = getattr(args, 'model', None)
722
725
  verbose = getattr(args, 'verbose', False)
723
726
  save = getattr(args, 'save', False)
724
- self.handle_research_command(research_query, research_model, verbose, save)
727
+ query_rewrite = getattr(args, 'query_rewrite', False)
728
+ rewrite_tools = getattr(args, 'rewrite_tools', None)
729
+ tools_path = getattr(args, 'tools', None)
730
+ self.handle_research_command(research_query, research_model, verbose, save, query_rewrite, tools_path, rewrite_tools)
725
731
  sys.exit(0)
726
732
 
727
733
  # Only check framework availability for agent-related operations
@@ -961,7 +967,7 @@ class PraisonAI:
961
967
  print(f"[red]ERROR: Context engineering failed: {e}[/red]")
962
968
  sys.exit(1)
963
969
 
964
- def handle_research_command(self, query: str, model: str = None, verbose: bool = False, save: bool = False) -> str:
970
+ def handle_research_command(self, query: str, model: str = None, verbose: bool = False, save: bool = False, query_rewrite: bool = False, tools_path: str = None, rewrite_tools: str = None) -> str:
965
971
  """
966
972
  Handle the research command by creating a DeepResearchAgent and running it.
967
973
 
@@ -970,6 +976,9 @@ class PraisonAI:
970
976
  model: Model for deep research (optional, defaults to o4-mini-deep-research)
971
977
  verbose: Enable verbose output (default: False)
972
978
  save: Save output to file (default: False)
979
+ query_rewrite: Rewrite query before research (default: False)
980
+ tools_path: Path to tools.py file with custom tools (default: None)
981
+ rewrite_tools: Tools for query rewriter (tool names or file path)
973
982
 
974
983
  Returns:
975
984
  str: Research report
@@ -984,6 +993,62 @@ class PraisonAI:
984
993
  logging.getLogger('httpx').setLevel(logging.WARNING)
985
994
  logging.getLogger('httpcore').setLevel(logging.WARNING)
986
995
 
996
+ # Rewrite query if requested
997
+ original_query = query
998
+ if query_rewrite:
999
+ try:
1000
+ from praisonaiagents import QueryRewriterAgent, RewriteStrategy
1001
+ print("[bold cyan]Rewriting query for better research results...[/bold cyan]")
1002
+
1003
+ # Load rewrite tools if specified
1004
+ rewrite_tools_list = []
1005
+ if rewrite_tools:
1006
+ if os.path.isfile(rewrite_tools):
1007
+ # Load from file
1008
+ try:
1009
+ import inspect
1010
+ spec = importlib.util.spec_from_file_location("rewrite_tools_module", rewrite_tools)
1011
+ if spec and spec.loader:
1012
+ module = importlib.util.module_from_spec(spec)
1013
+ spec.loader.exec_module(module)
1014
+ for name, obj in inspect.getmembers(module):
1015
+ if inspect.isfunction(obj) and not name.startswith('_'):
1016
+ rewrite_tools_list.append(obj)
1017
+ if rewrite_tools_list:
1018
+ print(f"[cyan]Loaded {len(rewrite_tools_list)} tools for query rewriter[/cyan]")
1019
+ except Exception as e:
1020
+ print(f"[yellow]Warning: Failed to load rewrite tools: {e}[/yellow]")
1021
+ else:
1022
+ # Treat as comma-separated tool names
1023
+ try:
1024
+ from praisonaiagents.tools import TOOL_MAPPINGS
1025
+ import praisonaiagents.tools as tools_module
1026
+
1027
+ tool_names = [t.strip() for t in rewrite_tools.split(',')]
1028
+ for tool_name in tool_names:
1029
+ if tool_name in TOOL_MAPPINGS:
1030
+ try:
1031
+ tool = getattr(tools_module, tool_name)
1032
+ rewrite_tools_list.append(tool)
1033
+ except Exception as e:
1034
+ print(f"[yellow]Warning: Failed to load rewrite tool '{tool_name}': {e}[/yellow]")
1035
+ else:
1036
+ print(f"[yellow]Warning: Unknown rewrite tool '{tool_name}'[/yellow]")
1037
+ if rewrite_tools_list:
1038
+ print(f"[cyan]Using rewrite tools: {', '.join(tool_names)}[/cyan]")
1039
+ except ImportError:
1040
+ print("[yellow]Warning: Could not import tools module[/yellow]")
1041
+
1042
+ rewriter = QueryRewriterAgent(model="gpt-4o-mini", verbose=verbose, tools=rewrite_tools_list if rewrite_tools_list else None)
1043
+ result = rewriter.rewrite(query, strategy=RewriteStrategy.AUTO)
1044
+ query = result.primary_query
1045
+ print(f"[cyan]Original:[/cyan] {original_query}")
1046
+ print(f"[cyan]Rewritten:[/cyan] {query}")
1047
+ except ImportError:
1048
+ print("[yellow]Warning: QueryRewriterAgent not available, using original query[/yellow]")
1049
+ except Exception as e:
1050
+ print(f"[yellow]Warning: Query rewrite failed ({e}), using original query[/yellow]")
1051
+
987
1052
  print("[bold green]Starting Deep Research...[/bold green]")
988
1053
  print(f"Query: {query}")
989
1054
 
@@ -993,11 +1058,86 @@ class PraisonAI:
993
1058
 
994
1059
  print(f"Model: {model}")
995
1060
 
996
- # Create DeepResearchAgent (verbose=True is default for streaming output)
997
- agent = DeepResearchAgent(model=model)
1061
+ # Load tools if specified
1062
+ tools_list = []
1063
+ if tools_path:
1064
+ # Check if it's a file path or comma-separated tool names
1065
+ if os.path.isfile(tools_path):
1066
+ # Load from file
1067
+ try:
1068
+ import inspect
1069
+ spec = importlib.util.spec_from_file_location("tools_module", tools_path)
1070
+ if spec and spec.loader:
1071
+ module = importlib.util.module_from_spec(spec)
1072
+ spec.loader.exec_module(module)
1073
+ # Get all callable functions from the module
1074
+ for name, obj in inspect.getmembers(module):
1075
+ if inspect.isfunction(obj) and not name.startswith('_'):
1076
+ tools_list.append(obj)
1077
+ if tools_list:
1078
+ print(f"[cyan]Loaded {len(tools_list)} tools from {tools_path}[/cyan]")
1079
+ except Exception as e:
1080
+ print(f"[yellow]Warning: Failed to load tools from {tools_path}: {e}[/yellow]")
1081
+ else:
1082
+ # Treat as comma-separated tool names (e.g., "internet_search,wiki_search")
1083
+ try:
1084
+ from praisonaiagents.tools import TOOL_MAPPINGS
1085
+ import praisonaiagents.tools as tools_module
1086
+
1087
+ tool_names = [t.strip() for t in tools_path.split(',')]
1088
+ for tool_name in tool_names:
1089
+ if tool_name in TOOL_MAPPINGS:
1090
+ try:
1091
+ tool = getattr(tools_module, tool_name)
1092
+ tools_list.append(tool)
1093
+ except Exception as e:
1094
+ print(f"[yellow]Warning: Failed to load tool '{tool_name}': {e}[/yellow]")
1095
+ else:
1096
+ print(f"[yellow]Warning: Unknown tool '{tool_name}'[/yellow]")
1097
+ if tools_list:
1098
+ print(f"[cyan]Loaded {len(tools_list)} built-in tools: {', '.join(tool_names)}[/cyan]")
1099
+ except ImportError:
1100
+ print("[yellow]Warning: Could not import tools module[/yellow]")
998
1101
 
999
- # Execute the research
1000
- result = agent.research(query)
1102
+ # If tools are provided, use Agent with tools first, then DeepResearchAgent
1103
+ if tools_list:
1104
+ from praisonaiagents import Agent, Task, PraisonAIAgents
1105
+
1106
+ # Create a research assistant agent with tools
1107
+ research_assistant = Agent(
1108
+ name="Research Assistant",
1109
+ role="Information Gatherer",
1110
+ goal="Gather relevant information using available tools",
1111
+ backstory="You are an expert at using tools to gather information for research.",
1112
+ tools=tools_list,
1113
+ llm="gpt-4o-mini",
1114
+ verbose=False
1115
+ )
1116
+
1117
+ # Create task to gather initial information
1118
+ gather_task = Task(
1119
+ description=f"Use your tools to gather relevant information about: {query}",
1120
+ expected_output="A summary of information gathered from the tools",
1121
+ agent=research_assistant
1122
+ )
1123
+
1124
+ print("[cyan]Gathering information with tools...[/cyan]")
1125
+ agents = PraisonAIAgents(agents=[research_assistant], tasks=[gather_task], verbose=0)
1126
+ tool_results = agents.start()
1127
+
1128
+ # Enhance query with tool results
1129
+ enhanced_query = f"{query}\n\nAdditional context from tools:\n{tool_results}"
1130
+ print("[cyan]Tools context gathered, starting deep research...[/cyan]")
1131
+
1132
+ # Create DeepResearchAgent
1133
+ agent = DeepResearchAgent(model=model)
1134
+ result = agent.research(enhanced_query)
1135
+ else:
1136
+ # Create DeepResearchAgent (verbose=True is default for streaming output)
1137
+ agent = DeepResearchAgent(model=model)
1138
+
1139
+ # Execute the research
1140
+ result = agent.research(query)
1001
1141
 
1002
1142
  print("\n[bold green]Research Complete![/bold green]")
1003
1143
  print("\n" + "="*60)
@@ -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.2.93 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==2.2.96 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
 
@@ -0,0 +1 @@
1
+ __version__ = "2.2.96"