praisonAI 2.2.91__tar.gz → 2.2.93__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 (79) hide show
  1. {praisonai-2.2.91 → praisonai-2.2.93}/PKG-INFO +2 -2
  2. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/cli.py +41 -2
  3. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/deploy.py +1 -1
  4. {praisonai-2.2.91 → praisonai-2.2.93}/pyproject.toml +4 -4
  5. {praisonai-2.2.91 → praisonai-2.2.93}/README.md +0 -0
  6. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/README.md +0 -0
  7. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/__init__.py +0 -0
  8. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/__main__.py +0 -0
  9. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/agents_generator.py +0 -0
  10. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/api/call.py +0 -0
  11. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/auto.py +0 -0
  12. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/chainlit_ui.py +0 -0
  13. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/inbuilt_tools/__init__.py +0 -0
  14. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  15. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/inc/__init__.py +0 -0
  16. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/inc/config.py +0 -0
  17. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/inc/models.py +0 -0
  18. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/android-chrome-192x192.png +0 -0
  19. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/android-chrome-512x512.png +0 -0
  20. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/apple-touch-icon.png +0 -0
  21. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/fantasy.svg +0 -0
  22. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/favicon-16x16.png +0 -0
  23. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/favicon-32x32.png +0 -0
  24. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/favicon.ico +0 -0
  25. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/game.svg +0 -0
  26. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/logo_dark.png +0 -0
  27. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/logo_light.png +0 -0
  28. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/movie.svg +0 -0
  29. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
  30. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/praison-ai-agents-architecture.png +0 -0
  31. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/public/thriller.svg +0 -0
  32. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/scheduler.py +0 -0
  33. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/__init__.py +0 -0
  34. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/build.py +0 -0
  35. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/config.yaml +0 -0
  36. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/post_install.py +0 -0
  37. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/setup_conda_env.py +0 -0
  38. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup/setup_conda_env.sh +0 -0
  39. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/setup.py +0 -0
  40. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/test.py +0 -0
  41. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/train.py +0 -0
  42. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/train_vision.py +0 -0
  43. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/README.md +0 -0
  44. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/agents.py +0 -0
  45. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/callbacks.py +0 -0
  46. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/chat.py +0 -0
  47. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/code.py +0 -0
  48. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/colab.py +0 -0
  49. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/colab_chainlit.py +0 -0
  50. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/components/aicoder.py +0 -0
  51. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/chainlit.md +0 -0
  52. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/bn.json +0 -0
  53. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/en-US.json +0 -0
  54. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/gu.json +0 -0
  55. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/he-IL.json +0 -0
  56. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/hi.json +0 -0
  57. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/kn.json +0 -0
  58. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/ml.json +0 -0
  59. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/mr.json +0 -0
  60. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/ta.json +0 -0
  61. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/te.json +0 -0
  62. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/config/translations/zh-CN.json +0 -0
  63. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/context.py +0 -0
  64. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/database_config.py +0 -0
  65. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/db.py +0 -0
  66. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/fantasy.svg +0 -0
  67. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/game.svg +0 -0
  68. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/logo_dark.png +0 -0
  69. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/logo_light.png +0 -0
  70. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/movie.svg +0 -0
  71. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/praison.css +0 -0
  72. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/public/thriller.svg +0 -0
  73. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/realtime.py +0 -0
  74. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/realtimeclient/__init__.py +0 -0
  75. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/realtimeclient/tools.py +0 -0
  76. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/sql_alchemy.py +0 -0
  77. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/ui/tools.md +0 -0
  78. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/upload_vision.py +0 -0
  79. {praisonai-2.2.91 → praisonai-2.2.93}/praisonai/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.2.91
3
+ Version: 2.2.93
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
  Requires-Python: >=3.10
@@ -70,7 +70,7 @@ Requires-Dist: plotly (>=5.24.0) ; extra == "realtime"
70
70
  Requires-Dist: praisonai-tools (>=0.0.22) ; extra == "autogen"
71
71
  Requires-Dist: praisonai-tools (>=0.0.22) ; extra == "autogen-v4"
72
72
  Requires-Dist: praisonai-tools (>=0.0.22) ; extra == "crewai"
73
- Requires-Dist: praisonaiagents (>=0.0.164)
73
+ Requires-Dist: praisonaiagents (>=0.0.165)
74
74
  Requires-Dist: pyautogen (==0.2.29) ; extra == "autogen"
75
75
  Requires-Dist: pydantic (<=2.10.1) ; extra == "chat"
76
76
  Requires-Dist: pydantic (<=2.10.1) ; extra == "code"
@@ -578,6 +578,7 @@ 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("--save", "-s", action="store_true", help="Save research output to file (output/research/)")
581
582
  parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output for research")
582
583
 
583
584
  # If we're in a test environment, parse with empty args to avoid pytest interference
@@ -719,7 +720,8 @@ class PraisonAI:
719
720
 
720
721
  research_model = getattr(args, 'model', None)
721
722
  verbose = getattr(args, 'verbose', False)
722
- self.handle_research_command(research_query, research_model, verbose)
723
+ save = getattr(args, 'save', False)
724
+ self.handle_research_command(research_query, research_model, verbose, save)
723
725
  sys.exit(0)
724
726
 
725
727
  # Only check framework availability for agent-related operations
@@ -959,7 +961,7 @@ class PraisonAI:
959
961
  print(f"[red]ERROR: Context engineering failed: {e}[/red]")
960
962
  sys.exit(1)
961
963
 
962
- def handle_research_command(self, query: str, model: str = None, verbose: bool = False) -> str:
964
+ def handle_research_command(self, query: str, model: str = None, verbose: bool = False, save: bool = False) -> str:
963
965
  """
964
966
  Handle the research command by creating a DeepResearchAgent and running it.
965
967
 
@@ -967,6 +969,7 @@ class PraisonAI:
967
969
  query: Research query/topic
968
970
  model: Model for deep research (optional, defaults to o4-mini-deep-research)
969
971
  verbose: Enable verbose output (default: False)
972
+ save: Save output to file (default: False)
970
973
 
971
974
  Returns:
972
975
  str: Research report
@@ -1011,6 +1014,42 @@ class PraisonAI:
1011
1014
  if url:
1012
1015
  print(f" {url}")
1013
1016
 
1017
+ # Save output to file if --save flag is set
1018
+ if save:
1019
+ import re
1020
+ # Get first 10 words from query for filename
1021
+ words = query.split()[:10]
1022
+ filename_base = ' '.join(words)
1023
+ # Sanitize filename: remove invalid characters
1024
+ filename_base = re.sub(r'[<>:"/\\|?*\x00-\x1f]', '', filename_base)
1025
+ filename_base = filename_base.strip()[:100] # Limit length
1026
+ if not filename_base:
1027
+ filename_base = "research_output"
1028
+
1029
+ # Create output directory
1030
+ output_dir = os.path.join(os.getcwd(), "output", "research")
1031
+ os.makedirs(output_dir, exist_ok=True)
1032
+
1033
+ # Build markdown content
1034
+ md_content = f"# {query}\n\n"
1035
+ md_content += result.report
1036
+ if result.citations:
1037
+ md_content += "\n\n## Citations\n\n"
1038
+ for i, citation in enumerate(result.citations, 1):
1039
+ title = getattr(citation, 'title', 'Untitled')
1040
+ url = getattr(citation, 'url', '')
1041
+ if url:
1042
+ md_content += f"{i}. [{title}]({url})\n"
1043
+ else:
1044
+ md_content += f"{i}. {title}\n"
1045
+
1046
+ # Save to file
1047
+ output_path = os.path.join(output_dir, f"{filename_base}.md")
1048
+ with open(output_path, 'w', encoding='utf-8') as f:
1049
+ f.write(md_content)
1050
+
1051
+ print(f"\n[bold green]Saved to:[/bold green] {output_path}")
1052
+
1014
1053
  return result.report
1015
1054
 
1016
1055
  except ImportError as e:
@@ -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.91 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==2.2.93 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
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "PraisonAI"
3
- version = "2.2.91"
3
+ version = "2.2.93"
4
4
  description = "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
  readme = "README.md"
6
6
  license = ""
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "rich>=13.7",
13
13
  "markdown>=3.5",
14
14
  "pyparsing>=3.0.0",
15
- "praisonaiagents>=0.0.164",
15
+ "praisonaiagents>=0.0.165",
16
16
  "python-dotenv>=0.19.0",
17
17
  "instructor>=1.3.3",
18
18
  "PyYAML>=6.0",
@@ -102,7 +102,7 @@ autogen-v4 = [
102
102
 
103
103
  [tool.poetry]
104
104
  name = "PraisonAI"
105
- version = "2.2.91"
105
+ version = "2.2.93"
106
106
  description = "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."
107
107
  authors = ["Mervin Praison"]
108
108
  license = ""
@@ -120,7 +120,7 @@ python = ">=3.10,<3.13"
120
120
  rich = ">=13.7"
121
121
  markdown = ">=3.5"
122
122
  pyparsing = ">=3.0.0"
123
- praisonaiagents = ">=0.0.164"
123
+ praisonaiagents = ">=0.0.165"
124
124
  python-dotenv = ">=0.19.0"
125
125
  instructor = ">=1.3.3"
126
126
  PyYAML = ">=6.0"
File without changes
File without changes
File without changes