PraisonAI 4.6.51__tar.gz → 4.6.53__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.51 → praisonai-4.6.53}/PKG-INFO +2 -2
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/PKG-INFO +2 -2
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/SOURCES.txt +1 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/requires.txt +1 -1
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_entrypoint.py +29 -6
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agent.py +8 -24
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agents_generator.py +149 -234
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_rate_limit.py +25 -16
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_unknown_user.py +1 -1
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/telegram.py +14 -4
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/chat.py +3 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/run.py +4 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/bots_cli.py +7 -19
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/job_workflow.py +8 -27
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/main.py +57 -20
- praisonai-4.6.53/praisonai/cli/session/unified.py +548 -0
- praisonai-4.6.53/praisonai/cli_backends/__init__.py +73 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy.py +1 -1
- praisonai-4.6.53/praisonai/endpoints/registry.py +128 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/base.py +28 -15
- praisonai-4.6.53/praisonai/framework_adapters/praisonai_adapter.py +421 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/server.py +11 -1
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/_compat.py +24 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/docker.py +10 -12
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/subprocess.py +10 -12
- praisonai-4.6.53/praisonai/scheduler/_base_scheduler.py +81 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/agent_scheduler.py +8 -49
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/async_agent_scheduler.py +9 -14
- praisonai-4.6.53/praisonai/scheduler/base.py +68 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/daemon_manager.py +36 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/deployment.py +32 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tool_resolver.py +148 -12
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/llm/trainer.py +32 -8
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/upload_vision.py +14 -2
- praisonai-4.6.53/praisonai/version.py +1 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/pyproject.toml +1 -1
- praisonai-4.6.51/praisonai/cli/session/unified.py +0 -306
- praisonai-4.6.51/praisonai/cli_backends/__init__.py +0 -31
- praisonai-4.6.51/praisonai/endpoints/registry.py +0 -131
- praisonai-4.6.51/praisonai/framework_adapters/praisonai_adapter.py +0 -214
- praisonai-4.6.51/praisonai/scheduler/base.py +0 -124
- praisonai-4.6.51/praisonai/version.py +0 -1
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/README.md +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/__main__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_logging.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/api/call.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/auto.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_ack.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_approval_base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_auth.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_chunk.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_commands.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_config_schema.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_debounce.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_defaults.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_discord_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_dlq.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_email_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_http_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_mirror.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_pairing_ui.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_protocol_mixin.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_resilience.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_session.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_slack_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_telegram_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_typing_indicator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_webhook_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/agentmail.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/bot.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/botos.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/discord.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/email.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/linear.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/media.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/slack.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/whatsapp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/benchmark.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cdp_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cdp_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/diagnostics.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/launcher.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/playwright_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/profiling.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/protocol.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/report.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/sessions.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/video.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/claw/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/loader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/paths.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/schema.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/core.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/profiler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/request.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/result.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/action_orchestrator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/at_mentions.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/audit_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/auto_mode.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/benchmark.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/capabilities.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/checkpoints.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/cli_profiler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/code_intelligence.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/compaction.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/compare.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/config_hierarchy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/context_manager.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/csv_test_runner.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/debug.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/diag.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/display_jsonl.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/engine.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/formatters.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/handler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/examples.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/file_history.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/git_attribution.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/hooks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/hybrid_workflow.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/image.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_core_headless.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_runtime.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_test_harness.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/jobs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/knowledge_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lite.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/logs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lsp_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lsp_diagnostics.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/message_queue.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migrate.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migration_flow.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migration_spec.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/observability.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/output_modes.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/output_style.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/package.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/performance.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/plugin_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profile.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/core.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/optimizations.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/suite.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiling.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/manager.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/persistence.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/scheduler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/worker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_creator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_prompts.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipes.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/router.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/safe_shell.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sdk_knowledge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/session.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/handler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/templates.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/skills.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/thinking.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/todo.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/debug.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/events.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/mock_provider.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/orchestrator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/help.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/main.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/queue.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/session.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/settings.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/session_store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/chat.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/composer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/status.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/wizard.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/yaml_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/praison_io.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/repl.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/split_tui.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/tui_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/legacy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/output/console.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/identifiers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/sessions.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/events.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/mg_backend.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/plain.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/rich_backend.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli_backends/claude.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli_backends/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/launchd.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/systemd.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/windows.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/classifier.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/executor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/extractor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/reporter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/runner.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/workspace.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/auth.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/cookie_auth.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/exec_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/gateway_approval.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/kanban_dispatcher.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/magic_link.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/origin_check.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/pairing.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/pairing_routes.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/port_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_channels.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_delivery.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_polling.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_presence.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/rate_limiter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/redis_pubsub.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/unicode_utils.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/_legacy_handlers.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_unified_registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/paths.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/sqlite_store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/capabilities.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/knowledge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/memory.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/prompts.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/resources.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/api_key.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/oauth.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/oidc.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/scopes.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/elicitation.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/icons.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/recipe_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/recipe_cli.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/sampling.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/tasks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/tool_index.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/http_stream.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/stdio.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/profiler.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/client.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/_shell.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/e2b.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/test.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/_ollama.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/grader.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/hook.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/models.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/orchestrator.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/storage.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/llm/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/callbacks.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/setup.cfg +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_basic.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_recipe.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_registry.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_runner.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_serve_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.53
|
|
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,7 +11,7 @@ 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.6.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.53
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: litellm<2,>=1.83.14
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.53
|
|
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,7 +11,7 @@ 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.6.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.53
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: litellm<2,>=1.83.14
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -710,6 +710,7 @@ praisonai/sandbox/sandlock.py
|
|
|
710
710
|
praisonai/sandbox/ssh.py
|
|
711
711
|
praisonai/sandbox/subprocess.py
|
|
712
712
|
praisonai/scheduler/__init__.py
|
|
713
|
+
praisonai/scheduler/_base_scheduler.py
|
|
713
714
|
praisonai/scheduler/agent_scheduler.py
|
|
714
715
|
praisonai/scheduler/async_agent_scheduler.py
|
|
715
716
|
praisonai/scheduler/base.py
|
|
@@ -65,9 +65,32 @@ async def arun(agent_file: str,
|
|
|
65
65
|
tools: list | None = None,
|
|
66
66
|
agent_yaml: str | None = None,
|
|
67
67
|
cli_config: dict | None = None) -> str:
|
|
68
|
-
"""Async equivalent of `run()`
|
|
69
|
-
import
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
"""Async equivalent of `run()` using native async framework adapters."""
|
|
69
|
+
from .agents_generator import AgentsGenerator
|
|
70
|
+
from ._framework_availability import is_available
|
|
71
|
+
|
|
72
|
+
if framework is None:
|
|
73
|
+
# Mirror the CLI default-resolution order
|
|
74
|
+
for candidate in ("crewai", "praisonaiagents", "autogen", "ag2"):
|
|
75
|
+
if is_available(candidate):
|
|
76
|
+
framework = "praisonai" if candidate == "praisonaiagents" else candidate
|
|
77
|
+
break
|
|
78
|
+
else:
|
|
79
|
+
raise RuntimeError(
|
|
80
|
+
"No supported framework installed. "
|
|
81
|
+
"Install one of: crewai, praisonaiagents, autogen, ag2."
|
|
82
|
+
)
|
|
83
|
+
else:
|
|
84
|
+
# Validate explicit framework like CLI does
|
|
85
|
+
from .framework_adapters.validators import assert_framework_available
|
|
86
|
+
assert_framework_available(framework)
|
|
87
|
+
|
|
88
|
+
gen = AgentsGenerator(
|
|
89
|
+
agent_file=agent_file,
|
|
90
|
+
framework=framework,
|
|
91
|
+
config_list=_build_config_list(),
|
|
92
|
+
tools=tools,
|
|
93
|
+
agent_yaml=agent_yaml,
|
|
94
|
+
cli_config=cli_config,
|
|
95
|
+
)
|
|
96
|
+
return await gen.agenerate_crew_and_kickoff()
|
|
@@ -24,39 +24,23 @@ class Agent(CoreAgent):
|
|
|
24
24
|
*args: Positional arguments for core Agent
|
|
25
25
|
cli_backend: CLI backend for delegating full turns. Accepts:
|
|
26
26
|
- str: Backend ID ("claude-code", "codex-cli") - resolved in wrapper
|
|
27
|
+
- dict: Backend config {"id": "claude-code", "overrides": {...}}
|
|
27
28
|
- CliBackendProtocol: Pre-resolved backend instance
|
|
28
29
|
- callable: Factory function returning CliBackendProtocol
|
|
29
30
|
- None: No CLI backend
|
|
30
31
|
**kwargs: Keyword arguments for core Agent
|
|
31
32
|
"""
|
|
32
|
-
# Resolve
|
|
33
|
-
if
|
|
34
|
-
|
|
33
|
+
# Resolve CLI backend configuration using unified resolver
|
|
34
|
+
if cli_backend is not None and not self._is_protocol_instance(cli_backend):
|
|
35
|
+
from .cli_backends import resolve_cli_backend_config
|
|
36
|
+
cli_backend = resolve_cli_backend_config(cli_backend)
|
|
35
37
|
|
|
36
38
|
# Pass resolved backend to core Agent
|
|
37
39
|
super().__init__(*args, cli_backend=cli_backend, **kwargs)
|
|
38
40
|
|
|
39
|
-
def
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
Args:
|
|
43
|
-
backend_id: Backend identifier (e.g., "claude-code")
|
|
44
|
-
|
|
45
|
-
Returns:
|
|
46
|
-
CliBackendProtocol instance
|
|
47
|
-
|
|
48
|
-
Raises:
|
|
49
|
-
ImportError: If CLI backends module not available
|
|
50
|
-
ValueError: If backend_id is not registered
|
|
51
|
-
"""
|
|
52
|
-
try:
|
|
53
|
-
from .cli_backends import resolve_cli_backend
|
|
54
|
-
return resolve_cli_backend(backend_id)
|
|
55
|
-
except ImportError:
|
|
56
|
-
raise ImportError(
|
|
57
|
-
f"CLI backend '{backend_id}' requested but CLI backends not available. "
|
|
58
|
-
"This may indicate a packaging or installation issue."
|
|
59
|
-
)
|
|
41
|
+
def _is_protocol_instance(self, obj) -> bool:
|
|
42
|
+
"""Check if object appears to be a protocol instance (duck typing)."""
|
|
43
|
+
return callable(obj) or hasattr(obj, 'process_turn')
|
|
60
44
|
|
|
61
45
|
|
|
62
46
|
# Export the wrapper Agent as the default for import from praisonai
|
|
@@ -62,45 +62,6 @@ def __dir__():
|
|
|
62
62
|
# Note: OTEL_SDK_DISABLED moved to CLI entry point per issue requirements
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
def safe_format(template: str, **kwargs) -> str:
|
|
66
|
-
"""
|
|
67
|
-
Safely format a string template, preserving JSON-like curly braces.
|
|
68
|
-
|
|
69
|
-
This handles cases where templates contain Gutenberg block syntax like
|
|
70
|
-
{"level":2} which would cause KeyError with standard .format().
|
|
71
|
-
|
|
72
|
-
Uses a two-pass approach:
|
|
73
|
-
1. Escape all {{ and }} (already escaped braces)
|
|
74
|
-
2. Only substitute known variable placeholders
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
template: String template with {variable} placeholders
|
|
78
|
-
**kwargs: Variable substitutions to apply
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
Formatted string with variables substituted and JSON preserved
|
|
82
|
-
|
|
83
|
-
Example:
|
|
84
|
-
>>> safe_format('Use <!-- wp:heading {"level":2} --> for {topic}', topic='AI')
|
|
85
|
-
'Use <!-- wp:heading {"level":2} --> for AI'
|
|
86
|
-
"""
|
|
87
|
-
import re
|
|
88
|
-
|
|
89
|
-
# Pattern to match {word} but not {"key": or {number} patterns
|
|
90
|
-
# This matches simple variable names like {topic}, {style}, etc.
|
|
91
|
-
def replace_var(match):
|
|
92
|
-
var_name = match.group(1)
|
|
93
|
-
if var_name in kwargs:
|
|
94
|
-
return str(kwargs[var_name])
|
|
95
|
-
# If not in kwargs, leave it as-is (don't raise KeyError)
|
|
96
|
-
return match.group(0)
|
|
97
|
-
|
|
98
|
-
# Match {variable_name} where variable_name is a valid Python identifier
|
|
99
|
-
# but NOT {" (JSON start) or {number (like {2})
|
|
100
|
-
pattern = r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}'
|
|
101
|
-
|
|
102
|
-
return re.sub(pattern, replace_var, template)
|
|
103
|
-
|
|
104
65
|
|
|
105
66
|
def _wrap_with_timeout(tool, timeout_seconds: float):
|
|
106
67
|
"""Enforce per-call timeout on a tool, sync or async, without
|
|
@@ -208,47 +169,10 @@ def sanitize_agent_name_for_autogen_v4(name):
|
|
|
208
169
|
|
|
209
170
|
def _resolve_yaml_cli_backend(cli_backend_config, logger):
|
|
210
171
|
"""Resolve a YAML ``cli_backend`` field to a CliBackendProtocol instance.
|
|
211
|
-
|
|
212
|
-
Accepts ``None`` (no backend), a string id (e.g. ``"claude-code"``), or a
|
|
213
|
-
dict of shape ``{"id": "claude-code", "overrides": {...}}``. Returns
|
|
214
|
-
``None`` on any error after logging a warning, so YAML parsing never raises.
|
|
215
|
-
|
|
216
|
-
Kept at module scope so it is unit-testable without constructing a full
|
|
217
|
-
``AgentsGenerator`` instance.
|
|
172
|
+
Deprecated wrapper. Use praisonai.cli_backends.resolve_cli_backend_config directly.
|
|
218
173
|
"""
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
# Pre-seed label from config before import so we can show it in error logs
|
|
223
|
-
if isinstance(cli_backend_config, str):
|
|
224
|
-
label = cli_backend_config
|
|
225
|
-
elif isinstance(cli_backend_config, dict):
|
|
226
|
-
label = cli_backend_config.get('id') or "<missing>"
|
|
227
|
-
else:
|
|
228
|
-
label = type(cli_backend_config).__name__
|
|
229
|
-
|
|
230
|
-
try:
|
|
231
|
-
from praisonai.cli_backends import resolve_cli_backend
|
|
232
|
-
if isinstance(cli_backend_config, str):
|
|
233
|
-
return resolve_cli_backend(cli_backend_config)
|
|
234
|
-
if isinstance(cli_backend_config, dict):
|
|
235
|
-
backend_id = cli_backend_config.get('id')
|
|
236
|
-
if not backend_id:
|
|
237
|
-
raise ValueError("cli_backend dict must contain an 'id' field")
|
|
238
|
-
overrides = cli_backend_config.get('overrides') or {}
|
|
239
|
-
return resolve_cli_backend(backend_id, overrides=overrides)
|
|
240
|
-
raise ValueError(
|
|
241
|
-
f"cli_backend must be string or dict, got: {type(cli_backend_config).__name__}"
|
|
242
|
-
)
|
|
243
|
-
except ImportError:
|
|
244
|
-
logger.warning(
|
|
245
|
-
"CLI backend '%s' requested but not available", label
|
|
246
|
-
)
|
|
247
|
-
except Exception as e:
|
|
248
|
-
logger.warning(
|
|
249
|
-
"Failed to resolve CLI backend '%s': %s", label, e
|
|
250
|
-
)
|
|
251
|
-
return None
|
|
174
|
+
from praisonai.cli_backends import resolve_cli_backend_config
|
|
175
|
+
return resolve_cli_backend_config(cli_backend_config)
|
|
252
176
|
|
|
253
177
|
|
|
254
178
|
class AgentsGenerator:
|
|
@@ -419,6 +343,27 @@ class AgentsGenerator:
|
|
|
419
343
|
agent_config[field] = value
|
|
420
344
|
self.logger.debug(f"CLI override for agent {agent_name}: {field} = {value}")
|
|
421
345
|
|
|
346
|
+
def _validate_cli_backend_compatibility(self, config, framework):
|
|
347
|
+
"""Validate that cli_backend is only used with compatible frameworks."""
|
|
348
|
+
# Check if any agent/role defines cli_backend (support both key names)
|
|
349
|
+
all_entities = {
|
|
350
|
+
**config.get('roles', {}),
|
|
351
|
+
**config.get('agents', {}),
|
|
352
|
+
}
|
|
353
|
+
has_cli_backend = any(
|
|
354
|
+
isinstance(details, dict) and details.get('cli_backend')
|
|
355
|
+
for details in all_entities.values()
|
|
356
|
+
)
|
|
357
|
+
|
|
358
|
+
if has_cli_backend and framework != 'praisonai':
|
|
359
|
+
self.logger.error(
|
|
360
|
+
f"cli_backend is not supported for framework='{framework}'. "
|
|
361
|
+
f"Remove cli_backend from your YAML or switch to framework='praisonai'."
|
|
362
|
+
)
|
|
363
|
+
raise ValueError(
|
|
364
|
+
f"cli_backend requires framework='praisonai', but framework='{framework}' was specified"
|
|
365
|
+
)
|
|
366
|
+
|
|
422
367
|
def _validate_agents_config(self, config):
|
|
423
368
|
"""
|
|
424
369
|
Validate agent configuration for typos in field names and provide suggestions.
|
|
@@ -427,7 +372,7 @@ class AgentsGenerator:
|
|
|
427
372
|
config (dict): The parsed YAML configuration
|
|
428
373
|
"""
|
|
429
374
|
known_fields = {
|
|
430
|
-
'role', 'goal', 'instructions', 'backstory', 'tools', 'tasks', 'llm',
|
|
375
|
+
'role', 'goal', 'instructions', 'backstory', 'tools', 'toolsets', 'tasks', 'llm',
|
|
431
376
|
'function_calling_llm', 'allow_delegation', 'max_iter', 'max_rpm',
|
|
432
377
|
'max_execution_time', 'verbose', 'cache', 'system_template',
|
|
433
378
|
'prompt_template', 'response_template', 'tool_timeout', 'planning_tools',
|
|
@@ -567,17 +512,26 @@ class AgentsGenerator:
|
|
|
567
512
|
# Route to YAMLWorkflowParser for advanced workflow patterns
|
|
568
513
|
return self._run_yaml_workflow(config)
|
|
569
514
|
|
|
515
|
+
config, adapter, tools_dict, topic = self._prepare(config)
|
|
516
|
+
return adapter.run(
|
|
517
|
+
config,
|
|
518
|
+
self.config_list,
|
|
519
|
+
topic,
|
|
520
|
+
tools_dict=tools_dict,
|
|
521
|
+
agent_callback=getattr(self, 'agent_callback', None),
|
|
522
|
+
task_callback=getattr(self, 'task_callback', None),
|
|
523
|
+
cli_config=getattr(self, 'cli_config', None),
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
def _prepare(self, config):
|
|
527
|
+
"""Shared preparation logic for both sync and async entry points."""
|
|
570
528
|
# Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
|
|
571
|
-
# This ensures backward compatibility while supporting the new canonical format
|
|
572
529
|
if 'agents' in config and 'roles' not in config:
|
|
573
530
|
config['roles'] = {}
|
|
574
531
|
for agent_name, agent_config in config['agents'].items():
|
|
575
532
|
role_config = dict(agent_config) if agent_config else {}
|
|
576
|
-
# Convert 'instructions' to 'backstory' if present
|
|
577
|
-
# Note: preserve 'instructions' key for adapters that pass it to PraisonAgent
|
|
578
533
|
if 'instructions' in role_config and 'backstory' not in role_config:
|
|
579
534
|
role_config['backstory'] = role_config['instructions']
|
|
580
|
-
# Ensure required fields have defaults
|
|
581
535
|
if 'role' not in role_config:
|
|
582
536
|
role_config['role'] = agent_name.replace('_', ' ').title()
|
|
583
537
|
if 'goal' not in role_config:
|
|
@@ -613,25 +567,20 @@ class AgentsGenerator:
|
|
|
613
567
|
# Resolve only the tools actually referenced in YAML
|
|
614
568
|
for tool_name in needed_tools:
|
|
615
569
|
try:
|
|
616
|
-
resolved_tool = self.tool_resolver.resolve(tool_name)
|
|
617
|
-
if resolved_tool is None:
|
|
618
|
-
|
|
619
|
-
continue
|
|
620
|
-
tools_dict[tool_name] = (
|
|
621
|
-
resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
|
|
622
|
-
)
|
|
570
|
+
resolved_tool = self.tool_resolver.resolve(tool_name, instantiate=True)
|
|
571
|
+
if resolved_tool is not None:
|
|
572
|
+
tools_dict[tool_name] = resolved_tool
|
|
623
573
|
except Exception as e:
|
|
624
574
|
self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
|
|
625
575
|
continue
|
|
626
|
-
|
|
576
|
+
|
|
627
577
|
except Exception as e:
|
|
628
578
|
self.logger.warning(f"Error collecting YAML tool references: {e}")
|
|
629
|
-
|
|
579
|
+
|
|
630
580
|
# Add tools from class names - use tool_resolver to check tool validity
|
|
631
581
|
for tool_class in self.tools:
|
|
632
582
|
if isinstance(tool_class, type):
|
|
633
583
|
try:
|
|
634
|
-
# Try to instantiate the tool to validate it
|
|
635
584
|
tool_instance = tool_class()
|
|
636
585
|
tool_name = tool_class.__name__
|
|
637
586
|
tools_dict[tool_name] = tool_instance
|
|
@@ -642,7 +591,7 @@ class AgentsGenerator:
|
|
|
642
591
|
root_directory = os.getcwd()
|
|
643
592
|
tools_py_path = os.path.join(root_directory, 'tools.py')
|
|
644
593
|
tools_dir_path = Path(root_directory) / 'tools'
|
|
645
|
-
|
|
594
|
+
|
|
646
595
|
# Use consolidated ToolResolver for tools.py loading
|
|
647
596
|
tools_dict.update(self.tool_resolver.get_local_tool_classes())
|
|
648
597
|
if os.path.isfile(tools_py_path):
|
|
@@ -654,9 +603,32 @@ class AgentsGenerator:
|
|
|
654
603
|
|
|
655
604
|
framework = self.framework or config.get('framework', 'crewai')
|
|
656
605
|
|
|
657
|
-
#
|
|
658
|
-
|
|
659
|
-
|
|
606
|
+
# AutoGen version selection logic
|
|
607
|
+
if framework == "autogen":
|
|
608
|
+
autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
|
|
609
|
+
autogen_v2_adapter = self._get_framework_adapter("autogen")
|
|
610
|
+
|
|
611
|
+
autogen_version = str(
|
|
612
|
+
config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
|
|
613
|
+
).lower()
|
|
614
|
+
use_v4 = False
|
|
615
|
+
|
|
616
|
+
if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
|
|
617
|
+
use_v4 = True
|
|
618
|
+
elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
|
|
619
|
+
use_v4 = False
|
|
620
|
+
elif autogen_version == "auto":
|
|
621
|
+
use_v4 = autogen_v4_adapter.is_available()
|
|
622
|
+
else:
|
|
623
|
+
use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
|
|
624
|
+
|
|
625
|
+
framework = "autogen_v4" if use_v4 else "autogen"
|
|
626
|
+
|
|
627
|
+
# Validate cli_backend compatibility
|
|
628
|
+
self._validate_cli_backend_compatibility(config, framework)
|
|
629
|
+
|
|
630
|
+
# Get framework adapter and resolve to concrete variant
|
|
631
|
+
adapter = self._get_framework_adapter(framework).resolve()
|
|
660
632
|
|
|
661
633
|
# Validate framework availability early
|
|
662
634
|
from .framework_adapters.validators import assert_framework_available
|
|
@@ -674,15 +646,7 @@ class AgentsGenerator:
|
|
|
674
646
|
self.framework_adapter = adapter
|
|
675
647
|
|
|
676
648
|
self.logger.info(f"Using framework: {adapter.name}")
|
|
677
|
-
return adapter
|
|
678
|
-
config,
|
|
679
|
-
self.config_list,
|
|
680
|
-
topic,
|
|
681
|
-
tools_dict=tools_dict,
|
|
682
|
-
agent_callback=getattr(self, 'agent_callback', None),
|
|
683
|
-
task_callback=getattr(self, 'task_callback', None),
|
|
684
|
-
cli_config=getattr(self, 'cli_config', None),
|
|
685
|
-
)
|
|
649
|
+
return config, adapter, tools_dict, topic
|
|
686
650
|
|
|
687
651
|
async def agenerate_crew_and_kickoff(self):
|
|
688
652
|
"""
|
|
@@ -718,129 +682,8 @@ class AgentsGenerator:
|
|
|
718
682
|
|
|
719
683
|
async def _arun_framework(self, config):
|
|
720
684
|
"""Async version of _run_framework with shared preparation logic."""
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
config['roles'] = {}
|
|
724
|
-
for agent_name, agent_config in config['agents'].items():
|
|
725
|
-
role_config = dict(agent_config) if agent_config else {}
|
|
726
|
-
if 'instructions' in role_config and 'backstory' not in role_config:
|
|
727
|
-
role_config['backstory'] = role_config['instructions']
|
|
728
|
-
if 'role' not in role_config:
|
|
729
|
-
role_config['role'] = agent_name.replace('_', ' ').title()
|
|
730
|
-
if 'goal' not in role_config:
|
|
731
|
-
role_config['goal'] = role_config.get('backstory', 'Complete the assigned task')
|
|
732
|
-
if 'backstory' not in role_config:
|
|
733
|
-
role_config['backstory'] = f'You are a {role_config["role"]}'
|
|
734
|
-
config['roles'][agent_name] = role_config
|
|
735
|
-
|
|
736
|
-
# Get workflow input: 'input' is canonical, 'topic' is alias for backward compatibility
|
|
737
|
-
topic = config.get('input', config.get('topic', ''))
|
|
738
|
-
|
|
739
|
-
# Validate agents configuration for typos in field names
|
|
740
|
-
self._validate_agents_config(config)
|
|
741
|
-
|
|
742
|
-
tools_dict = {}
|
|
743
|
-
|
|
744
|
-
# Demand-driven tool resolution - only resolve tools actually used in YAML
|
|
745
|
-
if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
|
|
746
|
-
try:
|
|
747
|
-
# Collect all tool names mentioned in the YAML config
|
|
748
|
-
needed_tools: set[str] = set()
|
|
749
|
-
for role_cfg in config.get('roles', {}).values():
|
|
750
|
-
for t in role_cfg.get('tools') or []:
|
|
751
|
-
if isinstance(t, str) and t.strip():
|
|
752
|
-
needed_tools.add(t.strip())
|
|
753
|
-
for task_cfg in (role_cfg.get('tasks') or {}).values():
|
|
754
|
-
if not isinstance(task_cfg, dict):
|
|
755
|
-
continue
|
|
756
|
-
for t in task_cfg.get('tools') or []:
|
|
757
|
-
if isinstance(t, str) and t.strip():
|
|
758
|
-
needed_tools.add(t.strip())
|
|
759
|
-
|
|
760
|
-
# Resolve only the tools actually referenced in YAML
|
|
761
|
-
for tool_name in needed_tools:
|
|
762
|
-
try:
|
|
763
|
-
resolved_tool = self.tool_resolver.resolve(tool_name)
|
|
764
|
-
if resolved_tool is None:
|
|
765
|
-
self.logger.warning(f"Tool '{tool_name}' not found")
|
|
766
|
-
continue
|
|
767
|
-
tools_dict[tool_name] = (
|
|
768
|
-
resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
|
|
769
|
-
)
|
|
770
|
-
except Exception as e:
|
|
771
|
-
self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
|
|
772
|
-
continue
|
|
773
|
-
|
|
774
|
-
except Exception as e:
|
|
775
|
-
self.logger.warning(f"Error collecting YAML tool references: {e}")
|
|
776
|
-
|
|
777
|
-
# Add tools from class names - use tool_resolver to check tool validity
|
|
778
|
-
for tool_class in self.tools:
|
|
779
|
-
if isinstance(tool_class, type):
|
|
780
|
-
try:
|
|
781
|
-
tool_instance = tool_class()
|
|
782
|
-
tool_name = tool_class.__name__
|
|
783
|
-
tools_dict[tool_name] = tool_instance
|
|
784
|
-
self.logger.debug(f"Added tool: {tool_name}")
|
|
785
|
-
except Exception as e:
|
|
786
|
-
self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
|
|
787
|
-
|
|
788
|
-
root_directory = os.getcwd()
|
|
789
|
-
tools_py_path = os.path.join(root_directory, 'tools.py')
|
|
790
|
-
tools_dir_path = Path(root_directory) / 'tools'
|
|
791
|
-
|
|
792
|
-
# Use consolidated ToolResolver for tools.py loading
|
|
793
|
-
tools_dict.update(self.tool_resolver.get_local_tool_classes())
|
|
794
|
-
if os.path.isfile(tools_py_path):
|
|
795
|
-
self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
|
|
796
|
-
elif tools_dir_path.is_dir():
|
|
797
|
-
tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
|
|
798
|
-
if tools_dict:
|
|
799
|
-
self.logger.debug("tools folder exists in the root directory")
|
|
800
|
-
|
|
801
|
-
framework = self.framework or config.get('framework', 'crewai')
|
|
802
|
-
|
|
803
|
-
# AutoGen version selection logic
|
|
804
|
-
if framework == "autogen":
|
|
805
|
-
autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
|
|
806
|
-
autogen_v2_adapter = self._get_framework_adapter("autogen")
|
|
807
|
-
|
|
808
|
-
autogen_version = str(
|
|
809
|
-
config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
|
|
810
|
-
).lower()
|
|
811
|
-
use_v4 = False
|
|
812
|
-
|
|
813
|
-
if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
|
|
814
|
-
use_v4 = True
|
|
815
|
-
elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
|
|
816
|
-
use_v4 = False
|
|
817
|
-
elif autogen_version == "auto":
|
|
818
|
-
use_v4 = autogen_v4_adapter.is_available()
|
|
819
|
-
else:
|
|
820
|
-
use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
|
|
821
|
-
|
|
822
|
-
framework = "autogen_v4" if use_v4 else "autogen"
|
|
823
|
-
|
|
824
|
-
# Initialize AgentOps if configured
|
|
825
|
-
agentops_api_key = os.getenv("AGENTOPS_API_KEY")
|
|
826
|
-
if agentops_api_key:
|
|
827
|
-
try:
|
|
828
|
-
import agentops
|
|
829
|
-
agentops.init(agentops_api_key, default_tags=[framework])
|
|
830
|
-
except ImportError:
|
|
831
|
-
pass
|
|
832
|
-
|
|
833
|
-
# Update framework adapter if framework changed
|
|
834
|
-
if framework != self.framework:
|
|
835
|
-
self.framework = framework
|
|
836
|
-
self.framework_adapter = self._get_framework_adapter(framework)
|
|
837
|
-
|
|
838
|
-
# Validate framework availability
|
|
839
|
-
from .framework_adapters.validators import assert_framework_available
|
|
840
|
-
assert_framework_available(framework)
|
|
841
|
-
|
|
842
|
-
self.logger.info(f"Using framework: {framework}")
|
|
843
|
-
return await self.framework_adapter.arun(
|
|
685
|
+
config, adapter, tools_dict, topic = self._prepare(config)
|
|
686
|
+
return await adapter.arun(
|
|
844
687
|
config,
|
|
845
688
|
self.config_list,
|
|
846
689
|
topic,
|
|
@@ -851,10 +694,58 @@ class AgentsGenerator:
|
|
|
851
694
|
)
|
|
852
695
|
|
|
853
696
|
async def _arun_yaml_workflow(self, config):
|
|
854
|
-
"""
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
697
|
+
"""
|
|
698
|
+
Async version of _run_yaml_workflow using YAMLWorkflowParser.
|
|
699
|
+
|
|
700
|
+
This method handles agents.yaml files that have:
|
|
701
|
+
- process: workflow
|
|
702
|
+
|
|
703
|
+
Args:
|
|
704
|
+
config: YAML configuration dictionary
|
|
705
|
+
|
|
706
|
+
Returns:
|
|
707
|
+
str: Workflow execution result
|
|
708
|
+
"""
|
|
709
|
+
if not is_available("praisonaiagents"):
|
|
710
|
+
raise ImportError("PraisonAI is not installed. Please install it with 'pip install praisonaiagents'")
|
|
711
|
+
|
|
712
|
+
try:
|
|
713
|
+
from praisonaiagents.workflows import YAMLWorkflowParser
|
|
714
|
+
except ImportError as err:
|
|
715
|
+
raise ImportError("YAMLWorkflowParser not available. Please update praisonaiagents.") from err
|
|
716
|
+
|
|
717
|
+
# Ensure name is present
|
|
718
|
+
if 'name' not in config:
|
|
719
|
+
config['name'] = config.get('topic', 'Workflow')
|
|
720
|
+
|
|
721
|
+
# Pass model from config_list to workflow as default_llm
|
|
722
|
+
if self.config_list and self.config_list[0].get('model'):
|
|
723
|
+
model_from_cli = self.config_list[0]['model']
|
|
724
|
+
if 'workflow' not in config:
|
|
725
|
+
config['workflow'] = {}
|
|
726
|
+
if 'default_llm' not in config['workflow']:
|
|
727
|
+
config['workflow']['default_llm'] = model_from_cli
|
|
728
|
+
|
|
729
|
+
import yaml as yaml_module
|
|
730
|
+
yaml_content = yaml_module.dump(config, default_flow_style=False)
|
|
731
|
+
|
|
732
|
+
parser = YAMLWorkflowParser()
|
|
733
|
+
workflow = parser.parse_string(yaml_content)
|
|
734
|
+
|
|
735
|
+
input_data = config.get('input', config.get('topic', ''))
|
|
736
|
+
|
|
737
|
+
self.logger.info(f"Starting async YAML workflow with topic: {input_data}")
|
|
738
|
+
|
|
739
|
+
if hasattr(workflow, 'astart'):
|
|
740
|
+
result = await workflow.astart(input_data)
|
|
741
|
+
else:
|
|
742
|
+
import asyncio
|
|
743
|
+
result = await asyncio.to_thread(workflow.start, input_data)
|
|
744
|
+
|
|
745
|
+
if result.get("status") == "completed":
|
|
746
|
+
return result.get("output", "Workflow completed successfully")
|
|
747
|
+
else:
|
|
748
|
+
return f"Workflow failed: {result.get('error', 'Unknown error')}"
|
|
858
749
|
|
|
859
750
|
def _run_yaml_workflow(self, config):
|
|
860
751
|
"""
|
|
@@ -911,3 +802,27 @@ class AgentsGenerator:
|
|
|
911
802
|
return result.get("output", "Workflow completed successfully")
|
|
912
803
|
else:
|
|
913
804
|
return f"Workflow failed: {result.get('error', 'Unknown error')}"
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
# Standalone function for backward compatibility with tests
|
|
808
|
+
def safe_format(template, **kwargs):
|
|
809
|
+
"""
|
|
810
|
+
Safe string formatting that preserves JSON/dict literals while substituting variables.
|
|
811
|
+
|
|
812
|
+
This function only substitutes placeholders that look like identifiers (e.g., {topic})
|
|
813
|
+
while preserving JSON structures like {"level": 2}.
|
|
814
|
+
|
|
815
|
+
Args:
|
|
816
|
+
template (str): Template string with placeholders
|
|
817
|
+
**kwargs: Values to substitute
|
|
818
|
+
|
|
819
|
+
Returns:
|
|
820
|
+
str: Formatted string with safe substitutions
|
|
821
|
+
"""
|
|
822
|
+
# Use the same regex-based substitution logic as BaseFrameworkAdapter._format_template
|
|
823
|
+
def replace_placeholder(match):
|
|
824
|
+
placeholder = match.group(1)
|
|
825
|
+
return str(kwargs.get(placeholder, match.group(0)))
|
|
826
|
+
|
|
827
|
+
# Only replace placeholders that look like identifiers
|
|
828
|
+
return re.sub(r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}', replace_placeholder, template)
|