praisonAI 2.3.45__tar.gz → 2.3.46__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.3.45 → praisonai-2.3.46}/PKG-INFO +1 -1
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/PKG-INFO +1 -1
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/main.py +83 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/deploy.py +1 -1
- praisonai-2.3.46/praisonai/version.py +1 -0
- praisonai-2.3.45/praisonai/version.py +0 -1
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/SOURCES.txt +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/requires.txt +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/README.md +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/__main__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/agents_generator.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/api/call.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/auto.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/chainlit_ui.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/base.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/image.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/router.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/session.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/todo.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/tools.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/agent_tools.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/inc/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/inc/config.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/inc/models.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/base.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/scheduler.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/setup/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/setup/build.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/setup/post_install.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/setup.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/test.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/train.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/train_vision.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/agents.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/callbacks.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/chat.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/code.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/colab.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/colab_chainlit.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/context.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/database_config.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/db.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/realtime.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/realtimeclient/__init__.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/realtimeclient/tools.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/ui/sql_alchemy.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/praisonai/upload_vision.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/pyproject.toml +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/setup.cfg +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_agents_playbook.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_basic.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_cli_features.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_double_api_fix.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_n8n_integration.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_phase2_refactor.py +0 -0
- {praisonai-2.3.45 → praisonai-2.3.46}/tests/test_runner.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.46
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.46
|
|
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
|
|
@@ -209,6 +209,11 @@ class PraisonAI:
|
|
|
209
209
|
invocation_cmd = "praisonai"
|
|
210
210
|
version_string = f"PraisonAI version {__version__}"
|
|
211
211
|
|
|
212
|
+
# Handle --interactive flag - start interactive TUI mode
|
|
213
|
+
if getattr(args, 'interactive', False):
|
|
214
|
+
self._start_interactive_mode(args)
|
|
215
|
+
return None
|
|
216
|
+
|
|
212
217
|
self.framework = args.framework or self.framework
|
|
213
218
|
|
|
214
219
|
# Update config_list model if --model flag is provided
|
|
@@ -690,6 +695,15 @@ class PraisonAI:
|
|
|
690
695
|
parser.add_argument("--port", type=int, default=8005, help="Server port (default: 8005)")
|
|
691
696
|
parser.add_argument("--host", type=str, default="127.0.0.1", help="Server host (default: 127.0.0.1)")
|
|
692
697
|
|
|
698
|
+
# Interactive TUI - terminal interface with slash commands
|
|
699
|
+
parser.add_argument("--interactive", "-i", action="store_true", help="Start interactive terminal mode with slash commands")
|
|
700
|
+
|
|
701
|
+
# Autonomy Mode - control AI action approval
|
|
702
|
+
parser.add_argument("--autonomy", type=str, choices=["suggest", "auto_edit", "full_auto"], help="Set autonomy mode for AI actions")
|
|
703
|
+
|
|
704
|
+
# Sandbox Execution - secure command execution
|
|
705
|
+
parser.add_argument("--sandbox", type=str, choices=["off", "basic", "strict"], help="Enable sandboxed command execution")
|
|
706
|
+
|
|
693
707
|
# If we're in a test environment, parse with empty args to avoid pytest interference
|
|
694
708
|
if in_test_env:
|
|
695
709
|
args, unknown_args = parser.parse_known_args([])
|
|
@@ -3605,6 +3619,75 @@ Now, {final_instruction.lower()}:"""
|
|
|
3605
3619
|
print(f"[red]ERROR: Research failed: {e}[/red]")
|
|
3606
3620
|
sys.exit(1)
|
|
3607
3621
|
|
|
3622
|
+
def _start_interactive_mode(self, args):
|
|
3623
|
+
"""Start interactive TUI mode with slash commands."""
|
|
3624
|
+
try:
|
|
3625
|
+
from praisonai.cli.features import InteractiveTUIHandler, SlashCommandHandler, CostTrackerHandler
|
|
3626
|
+
from praisonai.cli.features.interactive_tui import InteractiveConfig
|
|
3627
|
+
|
|
3628
|
+
# Initialize handlers
|
|
3629
|
+
slash_handler = SlashCommandHandler()
|
|
3630
|
+
cost_handler = CostTrackerHandler()
|
|
3631
|
+
cost_handler.initialize()
|
|
3632
|
+
|
|
3633
|
+
# Configure interactive session
|
|
3634
|
+
config = InteractiveConfig(
|
|
3635
|
+
prompt="praisonai> ",
|
|
3636
|
+
multiline=False,
|
|
3637
|
+
enable_completions=True,
|
|
3638
|
+
show_status_bar=True
|
|
3639
|
+
)
|
|
3640
|
+
|
|
3641
|
+
# Define input handler
|
|
3642
|
+
def on_input(text):
|
|
3643
|
+
"""Handle regular input - send to agent."""
|
|
3644
|
+
if not text.strip():
|
|
3645
|
+
return ""
|
|
3646
|
+
|
|
3647
|
+
# Track cost if enabled
|
|
3648
|
+
result = self.handle_direct_prompt(text)
|
|
3649
|
+
return result
|
|
3650
|
+
|
|
3651
|
+
# Define command handler
|
|
3652
|
+
def on_command(cmd):
|
|
3653
|
+
"""Handle slash commands."""
|
|
3654
|
+
result = slash_handler.execute(cmd)
|
|
3655
|
+
if result.get("type") == "exit":
|
|
3656
|
+
return result
|
|
3657
|
+
|
|
3658
|
+
# Handle special commands
|
|
3659
|
+
if result.get("type") == "cost":
|
|
3660
|
+
return {"type": "info", "message": cost_handler.get_summary()}
|
|
3661
|
+
|
|
3662
|
+
return result
|
|
3663
|
+
|
|
3664
|
+
# Initialize TUI handler
|
|
3665
|
+
tui_handler = InteractiveTUIHandler()
|
|
3666
|
+
session = tui_handler.initialize(
|
|
3667
|
+
config=config,
|
|
3668
|
+
on_input=on_input,
|
|
3669
|
+
on_command=on_command
|
|
3670
|
+
)
|
|
3671
|
+
|
|
3672
|
+
# Add slash commands for completion
|
|
3673
|
+
session.add_commands(["help", "exit", "quit", "cost", "tokens", "model", "diff", "commit", "undo", "plan", "map", "clear", "settings"])
|
|
3674
|
+
|
|
3675
|
+
print("[bold green]PraisonAI Interactive Mode[/bold green]")
|
|
3676
|
+
print("Type your prompt or use /help for commands. /exit to quit.\n")
|
|
3677
|
+
|
|
3678
|
+
# Run the interactive session
|
|
3679
|
+
tui_handler.run()
|
|
3680
|
+
|
|
3681
|
+
except ImportError as e:
|
|
3682
|
+
print(f"[red]ERROR: Interactive mode requires additional dependencies: {e}[/red]")
|
|
3683
|
+
print("Install with: pip install prompt_toolkit")
|
|
3684
|
+
sys.exit(1)
|
|
3685
|
+
except KeyboardInterrupt:
|
|
3686
|
+
print("\n[yellow]Exiting interactive mode.[/yellow]")
|
|
3687
|
+
except Exception as e:
|
|
3688
|
+
print(f"[red]ERROR: Interactive mode failed: {e}[/red]")
|
|
3689
|
+
sys.exit(1)
|
|
3690
|
+
|
|
3608
3691
|
if __name__ == "__main__":
|
|
3609
3692
|
praison_ai = PraisonAI()
|
|
3610
3693
|
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.3.
|
|
60
|
+
file.write("RUN pip install flask praisonai==2.3.46 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.3.46"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.45"
|
|
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
|
|
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
|