PraisonAI 4.6.164__tar.gz → 4.7.0__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-4.6.164 → praisonai-4.7.0}/PKG-INFO +57 -23
- {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/PKG-INFO +57 -23
- {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/SOURCES.txt +2 -0
- praisonai-4.7.0/PraisonAI.egg-info/entry_points.txt +18 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/requires.txt +16 -9
- {praisonai-4.6.164 → praisonai-4.7.0}/README.md +42 -13
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/__init__.py +11 -2
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/__main__.py +197 -13
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agents_generator.py +23 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/managed.py +24 -3
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/recipe.py +66 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/schedule.py +428 -17
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/endpoints.py +21 -4
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/workflow.py +135 -7
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/argparse_builder.py +13 -2
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/workflow_commands.py +60 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/agents.schema.json +92 -10
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/schema.py +140 -27
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/db/__init__.py +7 -5
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/db/adapter.py +6 -3
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/__init__.py +15 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/registry.py +28 -7
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/praisonai_adapter.py +25 -11
- praisonai-4.7.0/praisonai/integration/bridges/schedules_runner.py +93 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/__init__.py +15 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_unified_registry.py +6 -3
- praisonai-4.7.0/praisonai/integrations/backend_registry.py +87 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/base.py +7 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/claude_code.py +4 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/codex_cli.py +4 -1
- praisonai-4.7.0/praisonai/integrations/compute/_sync_base.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/daytona.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/docker.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/e2b.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/flyio.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/local.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/modal_compute.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute/tenki.py +18 -0
- praisonai-4.7.0/praisonai/integrations/compute_managed_agent.py +336 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/cursor_cli.py +4 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/db_session_adapter.py +67 -34
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/gemini_cli.py +4 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/local_agent.py +27 -2
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/managed_agents.py +1 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/managed_local.py +27 -34
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/registry.py +68 -3
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/sandboxed_agent.py +3 -3
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/router.py +2 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_mysql.py +36 -21
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/mongodb.py +9 -3
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/redis.py +8 -15
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/upstash.py +17 -4
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/core.py +71 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/condition_gate.py +2 -2
- praisonai-4.7.0/praisonai/scheduler/suggestion_engine.py +263 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/audit.py +46 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/redis_adapter.py +20 -13
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/_external_agents.py +32 -20
- praisonai-4.7.0/praisonai/version.py +1 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/pyproject.toml +33 -11
- praisonai-4.6.164/PraisonAI.egg-info/entry_points.txt +0 -9
- praisonai-4.6.164/praisonai/integration/bridges/schedules_runner.py +0 -30
- praisonai-4.6.164/praisonai/integrations/backend_registry.py +0 -45
- praisonai-4.6.164/praisonai/integrations/compute/daytona.py +0 -263
- praisonai-4.6.164/praisonai/integrations/compute/docker.py +0 -669
- praisonai-4.6.164/praisonai/integrations/compute/e2b.py +0 -250
- praisonai-4.6.164/praisonai/integrations/compute/flyio.py +0 -278
- praisonai-4.6.164/praisonai/integrations/compute/local.py +0 -192
- praisonai-4.6.164/praisonai/integrations/compute/modal_compute.py +0 -279
- praisonai-4.6.164/praisonai/integrations/compute/tenki.py +0 -379
- praisonai-4.6.164/praisonai/scheduler/suggestion_engine.py +0 -150
- praisonai-4.6.164/praisonai/version.py +0 -1
- {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_api_auth.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_bootstrap.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_logging.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agent.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/api/call.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/auto.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/_profiling.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/validator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_ops.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/profiler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/client.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/_tool_sources.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_dashboard/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/setup.cfg +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_basic.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_recipe.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_registry.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_runner.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_serve_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.7.0
|
|
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
|
|
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.0
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.0
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.0
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.0
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.0
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.0
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.0
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.0
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.0
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.0
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.0
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -69,9 +69,14 @@ Provides-Extra: ssh
|
|
|
69
69
|
Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
|
|
70
70
|
Provides-Extra: modal
|
|
71
71
|
Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
|
|
72
|
+
Provides-Extra: e2b
|
|
73
|
+
Requires-Dist: praisonai-sandbox[e2b]; extra == "e2b"
|
|
74
|
+
Provides-Extra: docker
|
|
75
|
+
Requires-Dist: praisonai-sandbox[docker]; extra == "docker"
|
|
72
76
|
Provides-Extra: daytona
|
|
77
|
+
Requires-Dist: praisonai-sandbox[daytona]; extra == "daytona"
|
|
73
78
|
Provides-Extra: tenki
|
|
74
|
-
Requires-Dist: tenki
|
|
79
|
+
Requires-Dist: praisonai-sandbox[tenki]; extra == "tenki"
|
|
75
80
|
Provides-Extra: realtime
|
|
76
81
|
Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
|
|
77
82
|
Requires-Dist: tavily-python==0.5.0; extra == "realtime"
|
|
@@ -337,7 +342,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
|
|
|
337
342
|
| **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
|
|
338
343
|
| **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
|
|
339
344
|
| **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
|
|
340
|
-
| **⬡ Managed** | *Where does it actually run?* | `
|
|
345
|
+
| **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
|
|
341
346
|
|
|
342
347
|
### Layer 1 · Prompt — *Did I say it clearly?*
|
|
343
348
|
|
|
@@ -442,7 +447,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
|
|
|
442
447
|
pip install praisonai
|
|
443
448
|
```
|
|
444
449
|
|
|
445
|
-
The simplest way in is `
|
|
450
|
+
The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
|
|
446
451
|
|
|
447
452
|
```python
|
|
448
453
|
from praisonaiagents import Agent, AgentFlow
|
|
@@ -450,7 +455,7 @@ from praisonaiagents import Agent, AgentFlow
|
|
|
450
455
|
writer = Agent(name="Writer", instructions="You write files.")
|
|
451
456
|
reader = Agent(name="Reader", instructions="You read files.")
|
|
452
457
|
|
|
453
|
-
flow = AgentFlow(
|
|
458
|
+
flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
|
|
454
459
|
flow.run("Write 'hello' to /workspace/note.txt, then read it back")
|
|
455
460
|
```
|
|
456
461
|
|
|
@@ -458,7 +463,7 @@ Same thing with no Python at all:
|
|
|
458
463
|
|
|
459
464
|
```yaml
|
|
460
465
|
name: remote-demo
|
|
461
|
-
|
|
466
|
+
tools_run_on: docker # every step shares one sandbox
|
|
462
467
|
agents:
|
|
463
468
|
writer: {role: Writer, goal: Write files}
|
|
464
469
|
reader: {role: Reader, goal: Read files}
|
|
@@ -469,22 +474,51 @@ steps:
|
|
|
469
474
|
action: "Read /workspace/note.txt"
|
|
470
475
|
```
|
|
471
476
|
|
|
472
|
-
For a single agent,
|
|
477
|
+
For a single agent, two words cover it — and they answer different questions:
|
|
473
478
|
|
|
474
479
|
```python
|
|
475
|
-
from
|
|
480
|
+
from praisonaiagents import Agent
|
|
476
481
|
|
|
477
|
-
# A.
|
|
478
|
-
agent = Agent(name="builder",
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
))
|
|
482
|
+
# A. Only the TOOLS move. Thinking stays on your machine.
|
|
483
|
+
agent = Agent(name="builder", instructions="You build things.",
|
|
484
|
+
tools_run_on="docker") # docker | e2b | modal | daytona | flyio
|
|
485
|
+
# tenki | sandlock | ssh | novita | subprocess
|
|
482
486
|
|
|
483
|
-
# B. The
|
|
484
|
-
agent = Agent(name="teacher",
|
|
487
|
+
# B. The WHOLE agent moves — model calls, loop and tools
|
|
488
|
+
agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
|
|
489
|
+
agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
|
|
485
490
|
agent.start("Write a Python script that prints the first 10 primes, then run it")
|
|
486
491
|
```
|
|
487
492
|
|
|
493
|
+
Ask any object where it runs, and it will tell you:
|
|
494
|
+
|
|
495
|
+
```python
|
|
496
|
+
>>> Agent(name="builder", instructions="x", tools_run_on="docker")
|
|
497
|
+
Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
|
|
498
|
+
|
|
499
|
+
>>> agent.where_does_it_run()
|
|
500
|
+
Thinking (the AI model calls) happens on this machine.
|
|
501
|
+
Tools run on a Docker container.
|
|
502
|
+
Your own tools (check_db) still run on this machine -- only shell, file and
|
|
503
|
+
code tools move. They read and write this machine's files.
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
Naming a place that cannot do the job is a typo, not a preference, so it says so:
|
|
507
|
+
|
|
508
|
+
```python
|
|
509
|
+
>>> Agent(name="x", instructions="i", run_on="e2b")
|
|
510
|
+
TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
|
|
511
|
+
-- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
|
|
512
|
+
commands but cannot host an agent loop.
|
|
513
|
+
To run only the tools there: Agent(tools_run_on='e2b')
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
To run one block of code somewhere else, name the place on that call:
|
|
517
|
+
|
|
518
|
+
```python
|
|
519
|
+
agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
|
|
520
|
+
```
|
|
521
|
+
|
|
488
522
|
See what is running and reclaim strays:
|
|
489
523
|
|
|
490
524
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.7.0
|
|
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
|
|
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.0
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.0
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.0
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.0
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.0
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.0
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.0
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.0
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.0
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.0
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.0
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -69,9 +69,14 @@ Provides-Extra: ssh
|
|
|
69
69
|
Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
|
|
70
70
|
Provides-Extra: modal
|
|
71
71
|
Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
|
|
72
|
+
Provides-Extra: e2b
|
|
73
|
+
Requires-Dist: praisonai-sandbox[e2b]; extra == "e2b"
|
|
74
|
+
Provides-Extra: docker
|
|
75
|
+
Requires-Dist: praisonai-sandbox[docker]; extra == "docker"
|
|
72
76
|
Provides-Extra: daytona
|
|
77
|
+
Requires-Dist: praisonai-sandbox[daytona]; extra == "daytona"
|
|
73
78
|
Provides-Extra: tenki
|
|
74
|
-
Requires-Dist: tenki
|
|
79
|
+
Requires-Dist: praisonai-sandbox[tenki]; extra == "tenki"
|
|
75
80
|
Provides-Extra: realtime
|
|
76
81
|
Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
|
|
77
82
|
Requires-Dist: tavily-python==0.5.0; extra == "realtime"
|
|
@@ -337,7 +342,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
|
|
|
337
342
|
| **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
|
|
338
343
|
| **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
|
|
339
344
|
| **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
|
|
340
|
-
| **⬡ Managed** | *Where does it actually run?* | `
|
|
345
|
+
| **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
|
|
341
346
|
|
|
342
347
|
### Layer 1 · Prompt — *Did I say it clearly?*
|
|
343
348
|
|
|
@@ -442,7 +447,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
|
|
|
442
447
|
pip install praisonai
|
|
443
448
|
```
|
|
444
449
|
|
|
445
|
-
The simplest way in is `
|
|
450
|
+
The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
|
|
446
451
|
|
|
447
452
|
```python
|
|
448
453
|
from praisonaiagents import Agent, AgentFlow
|
|
@@ -450,7 +455,7 @@ from praisonaiagents import Agent, AgentFlow
|
|
|
450
455
|
writer = Agent(name="Writer", instructions="You write files.")
|
|
451
456
|
reader = Agent(name="Reader", instructions="You read files.")
|
|
452
457
|
|
|
453
|
-
flow = AgentFlow(
|
|
458
|
+
flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
|
|
454
459
|
flow.run("Write 'hello' to /workspace/note.txt, then read it back")
|
|
455
460
|
```
|
|
456
461
|
|
|
@@ -458,7 +463,7 @@ Same thing with no Python at all:
|
|
|
458
463
|
|
|
459
464
|
```yaml
|
|
460
465
|
name: remote-demo
|
|
461
|
-
|
|
466
|
+
tools_run_on: docker # every step shares one sandbox
|
|
462
467
|
agents:
|
|
463
468
|
writer: {role: Writer, goal: Write files}
|
|
464
469
|
reader: {role: Reader, goal: Read files}
|
|
@@ -469,22 +474,51 @@ steps:
|
|
|
469
474
|
action: "Read /workspace/note.txt"
|
|
470
475
|
```
|
|
471
476
|
|
|
472
|
-
For a single agent,
|
|
477
|
+
For a single agent, two words cover it — and they answer different questions:
|
|
473
478
|
|
|
474
479
|
```python
|
|
475
|
-
from
|
|
480
|
+
from praisonaiagents import Agent
|
|
476
481
|
|
|
477
|
-
# A.
|
|
478
|
-
agent = Agent(name="builder",
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
))
|
|
482
|
+
# A. Only the TOOLS move. Thinking stays on your machine.
|
|
483
|
+
agent = Agent(name="builder", instructions="You build things.",
|
|
484
|
+
tools_run_on="docker") # docker | e2b | modal | daytona | flyio
|
|
485
|
+
# tenki | sandlock | ssh | novita | subprocess
|
|
482
486
|
|
|
483
|
-
# B. The
|
|
484
|
-
agent = Agent(name="teacher",
|
|
487
|
+
# B. The WHOLE agent moves — model calls, loop and tools
|
|
488
|
+
agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
|
|
489
|
+
agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
|
|
485
490
|
agent.start("Write a Python script that prints the first 10 primes, then run it")
|
|
486
491
|
```
|
|
487
492
|
|
|
493
|
+
Ask any object where it runs, and it will tell you:
|
|
494
|
+
|
|
495
|
+
```python
|
|
496
|
+
>>> Agent(name="builder", instructions="x", tools_run_on="docker")
|
|
497
|
+
Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
|
|
498
|
+
|
|
499
|
+
>>> agent.where_does_it_run()
|
|
500
|
+
Thinking (the AI model calls) happens on this machine.
|
|
501
|
+
Tools run on a Docker container.
|
|
502
|
+
Your own tools (check_db) still run on this machine -- only shell, file and
|
|
503
|
+
code tools move. They read and write this machine's files.
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
Naming a place that cannot do the job is a typo, not a preference, so it says so:
|
|
507
|
+
|
|
508
|
+
```python
|
|
509
|
+
>>> Agent(name="x", instructions="i", run_on="e2b")
|
|
510
|
+
TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
|
|
511
|
+
-- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
|
|
512
|
+
commands but cannot host an agent loop.
|
|
513
|
+
To run only the tools there: Agent(tools_run_on='e2b')
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
To run one block of code somewhere else, name the place on that call:
|
|
517
|
+
|
|
518
|
+
```python
|
|
519
|
+
agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
|
|
520
|
+
```
|
|
521
|
+
|
|
488
522
|
See what is running and reclaim strays:
|
|
489
523
|
|
|
490
524
|
```bash
|
|
@@ -332,6 +332,7 @@ praisonai/integrations/backend_registry.py
|
|
|
332
332
|
praisonai/integrations/base.py
|
|
333
333
|
praisonai/integrations/claude_code.py
|
|
334
334
|
praisonai/integrations/codex_cli.py
|
|
335
|
+
praisonai/integrations/compute_managed_agent.py
|
|
335
336
|
praisonai/integrations/cursor_cli.py
|
|
336
337
|
praisonai/integrations/db_session_adapter.py
|
|
337
338
|
praisonai/integrations/gemini_cli.py
|
|
@@ -342,6 +343,7 @@ praisonai/integrations/managed_local.py
|
|
|
342
343
|
praisonai/integrations/registry.py
|
|
343
344
|
praisonai/integrations/sandboxed_agent.py
|
|
344
345
|
praisonai/integrations/compute/__init__.py
|
|
346
|
+
praisonai/integrations/compute/_sync_base.py
|
|
345
347
|
praisonai/integrations/compute/daytona.py
|
|
346
348
|
praisonai/integrations/compute/docker.py
|
|
347
349
|
praisonai/integrations/compute/e2b.py
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
|
5
|
+
|
|
6
|
+
[praisonai.endpoint_providers]
|
|
7
|
+
a2a = praisonai.endpoints.providers.a2a:A2AProvider
|
|
8
|
+
a2u = praisonai.endpoints.providers.a2u:A2UProvider
|
|
9
|
+
agents-api = praisonai.endpoints.providers.agents_api:AgentsAPIProvider
|
|
10
|
+
mcp = praisonai.endpoints.providers.mcp:MCPProvider
|
|
11
|
+
openai-compat = praisonai.endpoints.providers.openai_compat:OpenAICompatProvider
|
|
12
|
+
recipe = praisonai.endpoints.providers.recipe:RecipeProvider
|
|
13
|
+
tools-mcp = praisonai.endpoints.providers.tools_mcp:ToolsMCPProvider
|
|
14
|
+
|
|
15
|
+
[praisonai.framework_adapters]
|
|
16
|
+
autogen = praisonai.framework_adapters.autogen_adapter:AutoGenFamilyAdapter
|
|
17
|
+
autogen_v2 = praisonai.framework_adapters.autogen_adapter:AutoGenAdapter
|
|
18
|
+
crewai = praisonai.framework_adapters.crewai_adapter:CrewAIAdapter
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
rich>=13.7
|
|
2
2
|
markdown>=3.5
|
|
3
3
|
pyparsing>=3.0.0
|
|
4
|
-
praisonaiagents>=1.
|
|
5
|
-
praisonai-code>=0.0
|
|
6
|
-
praisonai-bot>=0.0
|
|
7
|
-
praisonai-train>=0.0
|
|
8
|
-
praisonai-browser>=0.0
|
|
9
|
-
praisonai-mcp>=0.0
|
|
10
|
-
praisonai-sandbox>=0.0
|
|
11
|
-
praisonai-deploy>=0.0
|
|
4
|
+
praisonaiagents>=1.7.0
|
|
5
|
+
praisonai-code>=0.1.0
|
|
6
|
+
praisonai-bot>=0.1.0
|
|
7
|
+
praisonai-train>=0.1.0
|
|
8
|
+
praisonai-browser>=0.1.0
|
|
9
|
+
praisonai-mcp>=0.1.0
|
|
10
|
+
praisonai-sandbox>=0.1.0
|
|
11
|
+
praisonai-deploy>=0.1.0
|
|
12
12
|
python-dotenv>=0.19.0
|
|
13
13
|
litellm<2,>=1.83.14
|
|
14
14
|
PyYAML>=6.0
|
|
@@ -131,6 +131,7 @@ crewai>=0.157.0
|
|
|
131
131
|
praisonai-tools>=0.1.0
|
|
132
132
|
|
|
133
133
|
[daytona]
|
|
134
|
+
praisonai-sandbox[daytona]
|
|
134
135
|
|
|
135
136
|
[deploy]
|
|
136
137
|
praisonai-deploy[all]
|
|
@@ -140,9 +141,15 @@ textual-dev>=1.0.0
|
|
|
140
141
|
pytest>=7.0.0
|
|
141
142
|
pytest-asyncio>=0.21.0
|
|
142
143
|
|
|
144
|
+
[docker]
|
|
145
|
+
praisonai-sandbox[docker]
|
|
146
|
+
|
|
143
147
|
[dynamodb]
|
|
144
148
|
boto3>=1.35.0
|
|
145
149
|
|
|
150
|
+
[e2b]
|
|
151
|
+
praisonai-sandbox[e2b]
|
|
152
|
+
|
|
146
153
|
[flow]
|
|
147
154
|
langflow>=1.0.0
|
|
148
155
|
requests>=2.31.0
|
|
@@ -227,7 +234,7 @@ praisonai-sandbox[all]
|
|
|
227
234
|
praisonai-sandbox[ssh]
|
|
228
235
|
|
|
229
236
|
[tenki]
|
|
230
|
-
tenki
|
|
237
|
+
praisonai-sandbox[tenki]
|
|
231
238
|
|
|
232
239
|
[train]
|
|
233
240
|
praisonai-train[llm]
|
|
@@ -130,7 +130,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
|
|
|
130
130
|
| **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
|
|
131
131
|
| **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
|
|
132
132
|
| **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
|
|
133
|
-
| **⬡ Managed** | *Where does it actually run?* | `
|
|
133
|
+
| **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
|
|
134
134
|
|
|
135
135
|
### Layer 1 · Prompt — *Did I say it clearly?*
|
|
136
136
|
|
|
@@ -235,7 +235,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
|
|
|
235
235
|
pip install praisonai
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
The simplest way in is `
|
|
238
|
+
The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
|
|
239
239
|
|
|
240
240
|
```python
|
|
241
241
|
from praisonaiagents import Agent, AgentFlow
|
|
@@ -243,7 +243,7 @@ from praisonaiagents import Agent, AgentFlow
|
|
|
243
243
|
writer = Agent(name="Writer", instructions="You write files.")
|
|
244
244
|
reader = Agent(name="Reader", instructions="You read files.")
|
|
245
245
|
|
|
246
|
-
flow = AgentFlow(
|
|
246
|
+
flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
|
|
247
247
|
flow.run("Write 'hello' to /workspace/note.txt, then read it back")
|
|
248
248
|
```
|
|
249
249
|
|
|
@@ -251,7 +251,7 @@ Same thing with no Python at all:
|
|
|
251
251
|
|
|
252
252
|
```yaml
|
|
253
253
|
name: remote-demo
|
|
254
|
-
|
|
254
|
+
tools_run_on: docker # every step shares one sandbox
|
|
255
255
|
agents:
|
|
256
256
|
writer: {role: Writer, goal: Write files}
|
|
257
257
|
reader: {role: Reader, goal: Read files}
|
|
@@ -262,22 +262,51 @@ steps:
|
|
|
262
262
|
action: "Read /workspace/note.txt"
|
|
263
263
|
```
|
|
264
264
|
|
|
265
|
-
For a single agent,
|
|
265
|
+
For a single agent, two words cover it — and they answer different questions:
|
|
266
266
|
|
|
267
267
|
```python
|
|
268
|
-
from
|
|
268
|
+
from praisonaiagents import Agent
|
|
269
269
|
|
|
270
|
-
# A.
|
|
271
|
-
agent = Agent(name="builder",
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
))
|
|
270
|
+
# A. Only the TOOLS move. Thinking stays on your machine.
|
|
271
|
+
agent = Agent(name="builder", instructions="You build things.",
|
|
272
|
+
tools_run_on="docker") # docker | e2b | modal | daytona | flyio
|
|
273
|
+
# tenki | sandlock | ssh | novita | subprocess
|
|
275
274
|
|
|
276
|
-
# B. The
|
|
277
|
-
agent = Agent(name="teacher",
|
|
275
|
+
# B. The WHOLE agent moves — model calls, loop and tools
|
|
276
|
+
agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
|
|
277
|
+
agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
|
|
278
278
|
agent.start("Write a Python script that prints the first 10 primes, then run it")
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
+
Ask any object where it runs, and it will tell you:
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
>>> Agent(name="builder", instructions="x", tools_run_on="docker")
|
|
285
|
+
Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
|
|
286
|
+
|
|
287
|
+
>>> agent.where_does_it_run()
|
|
288
|
+
Thinking (the AI model calls) happens on this machine.
|
|
289
|
+
Tools run on a Docker container.
|
|
290
|
+
Your own tools (check_db) still run on this machine -- only shell, file and
|
|
291
|
+
code tools move. They read and write this machine's files.
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Naming a place that cannot do the job is a typo, not a preference, so it says so:
|
|
295
|
+
|
|
296
|
+
```python
|
|
297
|
+
>>> Agent(name="x", instructions="i", run_on="e2b")
|
|
298
|
+
TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
|
|
299
|
+
-- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
|
|
300
|
+
commands but cannot host an agent loop.
|
|
301
|
+
To run only the tools there: Agent(tools_run_on='e2b')
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
To run one block of code somewhere else, name the place on that call:
|
|
305
|
+
|
|
306
|
+
```python
|
|
307
|
+
agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
|
|
308
|
+
```
|
|
309
|
+
|
|
281
310
|
See what is running and reclaim strays:
|
|
282
311
|
|
|
283
312
|
```bash
|
|
@@ -217,8 +217,17 @@ def __getattr__(name):
|
|
|
217
217
|
|
|
218
218
|
try:
|
|
219
219
|
import praisonaiagents
|
|
220
|
-
except ModuleNotFoundError:
|
|
221
|
-
|
|
220
|
+
except ModuleNotFoundError as e:
|
|
221
|
+
if e.name == "praisonaiagents":
|
|
222
|
+
# Genuinely not installed — this is a real attribute miss.
|
|
223
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
224
|
+
# praisonaiagents IS installed but a transitive dep is missing.
|
|
225
|
+
# Surface the real cause instead of a misleading attribute error.
|
|
226
|
+
_praisonaiagents_import_error = e
|
|
227
|
+
raise AttributeError(
|
|
228
|
+
f"module {__name__!r} has no attribute {name!r}: praisonaiagents is "
|
|
229
|
+
f"installed but failed to import ({e})"
|
|
230
|
+
) from e
|
|
222
231
|
except ImportError as e:
|
|
223
232
|
_praisonaiagents_import_error = e
|
|
224
233
|
raise AttributeError(
|