PraisonAI 2.2.89__tar.gz → 2.2.90__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.89 → praisonai-2.2.90}/PKG-INFO +1 -1
  2. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/cli.py +87 -1
  3. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/deploy.py +1 -1
  4. {praisonai-2.2.89 → praisonai-2.2.90}/pyproject.toml +2 -2
  5. {praisonai-2.2.89 → praisonai-2.2.90}/README.md +0 -0
  6. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/README.md +0 -0
  7. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/__init__.py +0 -0
  8. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/__main__.py +0 -0
  9. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/agents_generator.py +0 -0
  10. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/api/call.py +0 -0
  11. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/auto.py +0 -0
  12. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/chainlit_ui.py +0 -0
  13. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/inbuilt_tools/__init__.py +0 -0
  14. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  15. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/inc/__init__.py +0 -0
  16. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/inc/config.py +0 -0
  17. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/inc/models.py +0 -0
  18. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/android-chrome-192x192.png +0 -0
  19. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/android-chrome-512x512.png +0 -0
  20. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/apple-touch-icon.png +0 -0
  21. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/fantasy.svg +0 -0
  22. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/favicon-16x16.png +0 -0
  23. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/favicon-32x32.png +0 -0
  24. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/favicon.ico +0 -0
  25. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/game.svg +0 -0
  26. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/logo_dark.png +0 -0
  27. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/logo_light.png +0 -0
  28. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/movie.svg +0 -0
  29. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
  30. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/praison-ai-agents-architecture.png +0 -0
  31. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/public/thriller.svg +0 -0
  32. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/scheduler.py +0 -0
  33. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/__init__.py +0 -0
  34. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/build.py +0 -0
  35. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/config.yaml +0 -0
  36. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/post_install.py +0 -0
  37. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/setup_conda_env.py +0 -0
  38. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup/setup_conda_env.sh +0 -0
  39. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/setup.py +0 -0
  40. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/test.py +0 -0
  41. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/train.py +0 -0
  42. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/train_vision.py +0 -0
  43. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/README.md +0 -0
  44. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/agents.py +0 -0
  45. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/callbacks.py +0 -0
  46. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/chat.py +0 -0
  47. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/code.py +0 -0
  48. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/colab.py +0 -0
  49. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/colab_chainlit.py +0 -0
  50. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/components/aicoder.py +0 -0
  51. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/chainlit.md +0 -0
  52. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/bn.json +0 -0
  53. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/en-US.json +0 -0
  54. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/gu.json +0 -0
  55. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/he-IL.json +0 -0
  56. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/hi.json +0 -0
  57. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/kn.json +0 -0
  58. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/ml.json +0 -0
  59. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/mr.json +0 -0
  60. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/ta.json +0 -0
  61. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/te.json +0 -0
  62. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/config/translations/zh-CN.json +0 -0
  63. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/context.py +0 -0
  64. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/database_config.py +0 -0
  65. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/db.py +0 -0
  66. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/fantasy.svg +0 -0
  67. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/game.svg +0 -0
  68. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/logo_dark.png +0 -0
  69. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/logo_light.png +0 -0
  70. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/movie.svg +0 -0
  71. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/praison.css +0 -0
  72. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/public/thriller.svg +0 -0
  73. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/realtime.py +0 -0
  74. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/realtimeclient/__init__.py +0 -0
  75. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/realtimeclient/tools.py +0 -0
  76. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/sql_alchemy.py +0 -0
  77. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/ui/tools.md +0 -0
  78. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/upload_vision.py +0 -0
  79. {praisonai-2.2.89 → praisonai-2.2.90}/praisonai/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 2.2.89
3
+ Version: 2.2.90
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
@@ -545,7 +545,7 @@ class PraisonAI:
545
545
  return default_args
546
546
 
547
547
  # Define special commands
548
- special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context']
548
+ special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context', 'research']
549
549
 
550
550
  parser = argparse.ArgumentParser(prog="praisonai", description="praisonAI command-line interface")
551
551
  parser.add_argument("--framework", choices=["crewai", "autogen", "praisonai"], help="Specify the framework")
@@ -572,6 +572,8 @@ class PraisonAI:
572
572
  parser.add_argument("--url", type=str, help="Repository URL for context analysis")
573
573
  parser.add_argument("--goal", type=str, help="Goal for context engineering")
574
574
  parser.add_argument("--auto-analyze", action="store_true", help="Enable automatic analysis in context engineering")
575
+ parser.add_argument("--research", action="store_true", help="Run deep research on a topic")
576
+ parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output for research")
575
577
 
576
578
  # If we're in a test environment, parse with empty args to avoid pytest interference
577
579
  if in_test_env:
@@ -696,6 +698,25 @@ class PraisonAI:
696
698
  self.handle_context_command(args.url, args.goal, getattr(args, 'auto_analyze', False))
697
699
  sys.exit(0)
698
700
 
701
+ elif args.command == 'research':
702
+ if not PRAISONAI_AVAILABLE:
703
+ print("[red]ERROR: PraisonAI Agents is not installed. Install with:[/red]")
704
+ print("\npip install praisonaiagents\n")
705
+ sys.exit(1)
706
+
707
+ # Get the research query from remaining args
708
+ research_query = ' '.join(unknown_args) if unknown_args else None
709
+ if not research_query:
710
+ print("[red]ERROR: Research query is required[/red]")
711
+ print("Usage: praisonai research \"Your research query\"")
712
+ print(" praisonai research --model deep-research-pro \"Your query\"")
713
+ sys.exit(1)
714
+
715
+ research_model = getattr(args, 'model', None)
716
+ verbose = getattr(args, 'verbose', False)
717
+ self.handle_research_command(research_query, research_model, verbose)
718
+ sys.exit(0)
719
+
699
720
  # Only check framework availability for agent-related operations
700
721
  if not args.command and (args.init or args.auto or args.framework):
701
722
  if not CREWAI_AVAILABLE and not AUTOGEN_AVAILABLE and not PRAISONAI_AVAILABLE:
@@ -933,6 +954,71 @@ class PraisonAI:
933
954
  print(f"[red]ERROR: Context engineering failed: {e}[/red]")
934
955
  sys.exit(1)
935
956
 
957
+ def handle_research_command(self, query: str, model: str = None, verbose: bool = False) -> str:
958
+ """
959
+ Handle the research command by creating a DeepResearchAgent and running it.
960
+
961
+ Args:
962
+ query: Research query/topic
963
+ model: Model for deep research (optional, defaults to o4-mini-deep-research)
964
+ verbose: Enable verbose output (default: False)
965
+
966
+ Returns:
967
+ str: Research report
968
+ """
969
+ try:
970
+ from praisonaiagents import DeepResearchAgent
971
+
972
+ # Suppress logging unless verbose
973
+ if not verbose:
974
+ logging.getLogger('google').setLevel(logging.WARNING)
975
+ logging.getLogger('google.genai').setLevel(logging.WARNING)
976
+ logging.getLogger('httpx').setLevel(logging.WARNING)
977
+ logging.getLogger('httpcore').setLevel(logging.WARNING)
978
+
979
+ print("[bold green]Starting Deep Research...[/bold green]")
980
+ print(f"Query: {query}")
981
+
982
+ # Default model if not specified
983
+ if not model:
984
+ model = "o4-mini-deep-research"
985
+
986
+ print(f"Model: {model}")
987
+
988
+ # Create DeepResearchAgent
989
+ agent = DeepResearchAgent(
990
+ model=model,
991
+ verbose=verbose
992
+ )
993
+
994
+ # Execute the research (streaming is enabled by default)
995
+ result = agent.research(query)
996
+
997
+ print("\n[bold green]Research Complete![/bold green]")
998
+ print("\n" + "="*60)
999
+ print(result.report)
1000
+ print("="*60)
1001
+
1002
+ # Show citations if available
1003
+ if result.citations:
1004
+ print(f"\n[bold]Citations ({len(result.citations)}):[/bold]")
1005
+ for i, citation in enumerate(result.citations, 1):
1006
+ title = getattr(citation, 'title', 'Untitled')
1007
+ url = getattr(citation, 'url', '')
1008
+ print(f" {i}. {title}")
1009
+ if url:
1010
+ print(f" {url}")
1011
+
1012
+ return result.report
1013
+
1014
+ except ImportError as e:
1015
+ print(f"[red]ERROR: Failed to import DeepResearchAgent: {e}[/red]")
1016
+ print("Make sure praisonaiagents is installed: pip install praisonaiagents")
1017
+ sys.exit(1)
1018
+ except Exception as e:
1019
+ print(f"[red]ERROR: Research failed: {e}[/red]")
1020
+ sys.exit(1)
1021
+
936
1022
  if __name__ == "__main__":
937
1023
  praison_ai = PraisonAI()
938
1024
  praison_ai.main()
@@ -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.89 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==2.2.90 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.89"
3
+ version = "2.2.90"
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 = ""
@@ -102,7 +102,7 @@ autogen-v4 = [
102
102
 
103
103
  [tool.poetry]
104
104
  name = "PraisonAI"
105
- version = "2.2.89"
105
+ version = "2.2.90"
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 = ""
File without changes
File without changes
File without changes