PraisonAI 2.2.89__tar.gz → 2.2.91__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.
- {praisonai-2.2.89 → praisonai-2.2.91}/PKG-INFO +2 -2
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/cli.py +96 -8
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/deploy.py +1 -1
- {praisonai-2.2.89 → praisonai-2.2.91}/pyproject.toml +4 -4
- {praisonai-2.2.89 → praisonai-2.2.91}/README.md +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/README.md +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/__init__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/__main__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/agents_generator.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/api/call.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/auto.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/chainlit_ui.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/inc/__init__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/inc/config.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/inc/models.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/android-chrome-192x192.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/android-chrome-512x512.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/apple-touch-icon.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/fantasy.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/favicon-16x16.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/favicon-32x32.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/favicon.ico +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/game.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/logo_dark.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/logo_light.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/movie.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/praison-ai-agents-architecture.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/thriller.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/scheduler.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/__init__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/build.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/config.yaml +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/post_install.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup/setup_conda_env.sh +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/setup.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/test.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/train.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/train_vision.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/README.md +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/agents.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/callbacks.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/chat.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/code.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/colab.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/colab_chainlit.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/chainlit.md +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/bn.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/en-US.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/gu.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/he-IL.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/hi.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/kn.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/ml.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/mr.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/ta.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/te.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/config/translations/zh-CN.json +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/context.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/database_config.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/db.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/fantasy.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/game.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/logo_dark.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/logo_light.png +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/movie.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/praison.css +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/public/thriller.svg +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/realtime.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/realtimeclient/__init__.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/realtimeclient/tools.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/sql_alchemy.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/ui/tools.md +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/upload_vision.py +0 -0
- {praisonai-2.2.89 → praisonai-2.2.91}/praisonai/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.91
|
|
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.
|
|
73
|
+
Requires-Dist: praisonaiagents (>=0.0.164)
|
|
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"
|
|
@@ -28,6 +28,13 @@ AUTOGEN_AVAILABLE = False
|
|
|
28
28
|
PRAISONAI_AVAILABLE = False
|
|
29
29
|
TRAIN_AVAILABLE = False
|
|
30
30
|
try:
|
|
31
|
+
import importlib.util
|
|
32
|
+
CHAINLIT_AVAILABLE = importlib.util.find_spec("chainlit") is not None
|
|
33
|
+
except ImportError:
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
def _get_chainlit_run():
|
|
37
|
+
"""Lazy import chainlit to avoid loading .env at startup"""
|
|
31
38
|
# Create necessary directories and set CHAINLIT_APP_ROOT
|
|
32
39
|
if "CHAINLIT_APP_ROOT" not in os.environ:
|
|
33
40
|
chainlit_root = os.path.join(os.path.expanduser("~"), ".praison")
|
|
@@ -39,9 +46,7 @@ try:
|
|
|
39
46
|
os.makedirs(os.path.join(chainlit_root, ".files"), exist_ok=True)
|
|
40
47
|
|
|
41
48
|
from chainlit.cli import chainlit_run
|
|
42
|
-
|
|
43
|
-
except ImportError:
|
|
44
|
-
pass
|
|
49
|
+
return chainlit_run
|
|
45
50
|
|
|
46
51
|
try:
|
|
47
52
|
import gradio as gr
|
|
@@ -545,7 +550,7 @@ class PraisonAI:
|
|
|
545
550
|
return default_args
|
|
546
551
|
|
|
547
552
|
# Define special commands
|
|
548
|
-
special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context']
|
|
553
|
+
special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context', 'research']
|
|
549
554
|
|
|
550
555
|
parser = argparse.ArgumentParser(prog="praisonai", description="praisonAI command-line interface")
|
|
551
556
|
parser.add_argument("--framework", choices=["crewai", "autogen", "praisonai"], help="Specify the framework")
|
|
@@ -572,6 +577,8 @@ class PraisonAI:
|
|
|
572
577
|
parser.add_argument("--url", type=str, help="Repository URL for context analysis")
|
|
573
578
|
parser.add_argument("--goal", type=str, help="Goal for context engineering")
|
|
574
579
|
parser.add_argument("--auto-analyze", action="store_true", help="Enable automatic analysis in context engineering")
|
|
580
|
+
parser.add_argument("--research", action="store_true", help="Run deep research on a topic")
|
|
581
|
+
parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output for research")
|
|
575
582
|
|
|
576
583
|
# If we're in a test environment, parse with empty args to avoid pytest interference
|
|
577
584
|
if in_test_env:
|
|
@@ -696,6 +703,25 @@ class PraisonAI:
|
|
|
696
703
|
self.handle_context_command(args.url, args.goal, getattr(args, 'auto_analyze', False))
|
|
697
704
|
sys.exit(0)
|
|
698
705
|
|
|
706
|
+
elif args.command == 'research':
|
|
707
|
+
if not PRAISONAI_AVAILABLE:
|
|
708
|
+
print("[red]ERROR: PraisonAI Agents is not installed. Install with:[/red]")
|
|
709
|
+
print("\npip install praisonaiagents\n")
|
|
710
|
+
sys.exit(1)
|
|
711
|
+
|
|
712
|
+
# Get the research query from remaining args
|
|
713
|
+
research_query = ' '.join(unknown_args) if unknown_args else None
|
|
714
|
+
if not research_query:
|
|
715
|
+
print("[red]ERROR: Research query is required[/red]")
|
|
716
|
+
print("Usage: praisonai research \"Your research query\"")
|
|
717
|
+
print(" praisonai research --model deep-research-pro \"Your query\"")
|
|
718
|
+
sys.exit(1)
|
|
719
|
+
|
|
720
|
+
research_model = getattr(args, 'model', None)
|
|
721
|
+
verbose = getattr(args, 'verbose', False)
|
|
722
|
+
self.handle_research_command(research_query, research_model, verbose)
|
|
723
|
+
sys.exit(0)
|
|
724
|
+
|
|
699
725
|
# Only check framework availability for agent-related operations
|
|
700
726
|
if not args.command and (args.init or args.auto or args.framework):
|
|
701
727
|
if not CREWAI_AVAILABLE and not AUTOGEN_AVAILABLE and not PRAISONAI_AVAILABLE:
|
|
@@ -791,7 +817,7 @@ class PraisonAI:
|
|
|
791
817
|
if "CHAINLIT_APP_ROOT" not in os.environ:
|
|
792
818
|
os.environ["CHAINLIT_APP_ROOT"] = root_path
|
|
793
819
|
chat_ui_path = os.path.join(os.path.dirname(praisonai.__file__), 'ui', 'chat.py')
|
|
794
|
-
|
|
820
|
+
_get_chainlit_run()([chat_ui_path])
|
|
795
821
|
else:
|
|
796
822
|
print("ERROR: Chat UI is not installed. Please install it with 'pip install \"praisonai[chat]\"' to use the chat UI.")
|
|
797
823
|
|
|
@@ -815,7 +841,7 @@ class PraisonAI:
|
|
|
815
841
|
else:
|
|
816
842
|
logging.info("Public folder already exists.")
|
|
817
843
|
code_ui_path = os.path.join(os.path.dirname(praisonai.__file__), 'ui', 'code.py')
|
|
818
|
-
|
|
844
|
+
_get_chainlit_run()([code_ui_path])
|
|
819
845
|
else:
|
|
820
846
|
print("ERROR: Code UI is not installed. Please install it with 'pip install \"praisonai[code]\"' to use the code UI.")
|
|
821
847
|
|
|
@@ -861,7 +887,7 @@ class PraisonAI:
|
|
|
861
887
|
else:
|
|
862
888
|
logging.info("Public folder already exists.")
|
|
863
889
|
chainlit_ui_path = os.path.join(os.path.dirname(praisonai.__file__), 'ui', 'agents.py')
|
|
864
|
-
|
|
890
|
+
_get_chainlit_run()([chainlit_ui_path])
|
|
865
891
|
else:
|
|
866
892
|
print("ERROR: Chainlit is not installed. Please install it with 'pip install \"praisonai[ui]\"' to use the UI.")
|
|
867
893
|
|
|
@@ -885,7 +911,7 @@ class PraisonAI:
|
|
|
885
911
|
else:
|
|
886
912
|
logging.info("Public folder already exists.")
|
|
887
913
|
realtime_ui_path = os.path.join(os.path.dirname(praisonai.__file__), 'ui', 'realtime.py')
|
|
888
|
-
|
|
914
|
+
_get_chainlit_run()([realtime_ui_path])
|
|
889
915
|
else:
|
|
890
916
|
print("ERROR: Realtime UI is not installed. Please install it with 'pip install \"praisonai[realtime]\"' to use the realtime UI.")
|
|
891
917
|
|
|
@@ -933,6 +959,68 @@ class PraisonAI:
|
|
|
933
959
|
print(f"[red]ERROR: Context engineering failed: {e}[/red]")
|
|
934
960
|
sys.exit(1)
|
|
935
961
|
|
|
962
|
+
def handle_research_command(self, query: str, model: str = None, verbose: bool = False) -> str:
|
|
963
|
+
"""
|
|
964
|
+
Handle the research command by creating a DeepResearchAgent and running it.
|
|
965
|
+
|
|
966
|
+
Args:
|
|
967
|
+
query: Research query/topic
|
|
968
|
+
model: Model for deep research (optional, defaults to o4-mini-deep-research)
|
|
969
|
+
verbose: Enable verbose output (default: False)
|
|
970
|
+
|
|
971
|
+
Returns:
|
|
972
|
+
str: Research report
|
|
973
|
+
"""
|
|
974
|
+
try:
|
|
975
|
+
from praisonaiagents import DeepResearchAgent
|
|
976
|
+
|
|
977
|
+
# Suppress logging unless verbose
|
|
978
|
+
if not verbose:
|
|
979
|
+
logging.getLogger('google').setLevel(logging.WARNING)
|
|
980
|
+
logging.getLogger('google.genai').setLevel(logging.WARNING)
|
|
981
|
+
logging.getLogger('httpx').setLevel(logging.WARNING)
|
|
982
|
+
logging.getLogger('httpcore').setLevel(logging.WARNING)
|
|
983
|
+
|
|
984
|
+
print("[bold green]Starting Deep Research...[/bold green]")
|
|
985
|
+
print(f"Query: {query}")
|
|
986
|
+
|
|
987
|
+
# Default model if not specified
|
|
988
|
+
if not model:
|
|
989
|
+
model = "o4-mini-deep-research"
|
|
990
|
+
|
|
991
|
+
print(f"Model: {model}")
|
|
992
|
+
|
|
993
|
+
# Create DeepResearchAgent (verbose=True is default for streaming output)
|
|
994
|
+
agent = DeepResearchAgent(model=model)
|
|
995
|
+
|
|
996
|
+
# Execute the research
|
|
997
|
+
result = agent.research(query)
|
|
998
|
+
|
|
999
|
+
print("\n[bold green]Research Complete![/bold green]")
|
|
1000
|
+
print("\n" + "="*60)
|
|
1001
|
+
print(result.report)
|
|
1002
|
+
print("="*60)
|
|
1003
|
+
|
|
1004
|
+
# Show citations if available
|
|
1005
|
+
if result.citations:
|
|
1006
|
+
print(f"\n[bold]Citations ({len(result.citations)}):[/bold]")
|
|
1007
|
+
for i, citation in enumerate(result.citations, 1):
|
|
1008
|
+
title = getattr(citation, 'title', 'Untitled')
|
|
1009
|
+
url = getattr(citation, 'url', '')
|
|
1010
|
+
print(f" {i}. {title}")
|
|
1011
|
+
if url:
|
|
1012
|
+
print(f" {url}")
|
|
1013
|
+
|
|
1014
|
+
return result.report
|
|
1015
|
+
|
|
1016
|
+
except ImportError as e:
|
|
1017
|
+
print(f"[red]ERROR: Failed to import DeepResearchAgent: {e}[/red]")
|
|
1018
|
+
print("Make sure praisonaiagents is installed: pip install praisonaiagents")
|
|
1019
|
+
sys.exit(1)
|
|
1020
|
+
except Exception as e:
|
|
1021
|
+
print(f"[red]ERROR: Research failed: {e}[/red]")
|
|
1022
|
+
sys.exit(1)
|
|
1023
|
+
|
|
936
1024
|
if __name__ == "__main__":
|
|
937
1025
|
praison_ai = PraisonAI()
|
|
938
1026
|
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.
|
|
60
|
+
file.write("RUN pip install flask praisonai==2.2.91 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.
|
|
3
|
+
version = "2.2.91"
|
|
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.
|
|
15
|
+
"praisonaiagents>=0.0.164",
|
|
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.
|
|
105
|
+
version = "2.2.91"
|
|
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.
|
|
123
|
+
praisonaiagents = ">=0.0.164"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{praisonai-2.2.89 → praisonai-2.2.91}/praisonai/public/praison-ai-agents-architecture-dark.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|