PraisonAI 4.7.8__tar.gz → 4.7.10__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.7.8 → praisonai-4.7.10}/PKG-INFO +11 -9
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/PKG-INFO +11 -9
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/SOURCES.txt +1 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/requires.txt +10 -8
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_entrypoint.py +16 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/adapters/readers.py +23 -13
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/adapters/rerankers.py +14 -7
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/adapters/retrievers.py +16 -7
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/agents_generator.py +33 -11
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/api/agent_invoke.py +93 -44
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/passthrough.py +101 -21
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/langfuse_client.py +18 -1
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/registry.py +23 -1
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/workflow_framework.py +10 -3
- praisonai-4.7.10/praisonai/integrations/_managed_base.py +87 -0
- praisonai-4.7.10/praisonai/integrations/backend_registry.py +129 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/managed_agents.py +27 -41
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/managed_local.py +34 -45
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/executor.py +55 -15
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/models.py +1 -1
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/router.py +7 -1
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/history.py +132 -37
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/operations.py +39 -15
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/run_policy.py +10 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/yaml_loader.py +5 -2
- praisonai-4.7.10/praisonai/version.py +1 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/pyproject.toml +19 -8
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_n8n_agent_invoke.py +278 -0
- praisonai-4.7.8/praisonai/integrations/backend_registry.py +0 -87
- praisonai-4.7.8/praisonai/version.py +0 -1
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/README.md +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/__main__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_api_auth.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_bootstrap.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_logging.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/acp/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/acp/server.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/acp/session.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/api/call.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/app/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/app/agentos.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/auto.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/branding.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/_profiling.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/main.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/config/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/config/agents.schema.json +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/config/schema.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/config/validator.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/history_store.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/queue.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/setup.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/db/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/db/adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/client.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/converter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/inc/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/inc/models.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/_sync_base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute/tenki.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/compute_managed_agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/server.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/jobs/store.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/env.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/llm/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/n8n/client.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/_ops.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/profiler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/push/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/push/client.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/push/transports.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/core.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/models.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/security.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/recipe/server.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/applier.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/judge.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/plan.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/player.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/reader.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/storage.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/replay/writer.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/security/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/security/audit.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/security/injection.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/security/protected.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/setup/build.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/setup.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/models.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/_tool_sources.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/cache.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/loader.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/security.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tool_registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/audio.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/train/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/train.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/train_vision.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui/context.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_dashboard/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/praisonai/upload_vision.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/setup.cfg +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_approval_system.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_basic.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_cli_features.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_recipe.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_registry.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_runner.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.7.8 → praisonai-4.7.10}/tests/test_serve_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.10
|
|
4
4
|
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.7.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.1.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.1.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.1.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.1.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.1.
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.1.
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.8
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.7
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.7
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.7
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.7
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.9
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.7
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.7
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -140,6 +140,8 @@ Requires-Dist: agent-client-protocol>=0.7.0; extra == "acp"
|
|
|
140
140
|
Provides-Extra: flow
|
|
141
141
|
Requires-Dist: langflow>=1.0.0; extra == "flow"
|
|
142
142
|
Requires-Dist: requests>=2.31.0; extra == "flow"
|
|
143
|
+
Requires-Dist: a2a-sdk[http-server]>=1.0.0; extra == "flow"
|
|
144
|
+
Requires-Dist: fastapi-pagination>=0.12.34; extra == "flow"
|
|
143
145
|
Provides-Extra: lite
|
|
144
146
|
Provides-Extra: all
|
|
145
147
|
Requires-Dist: fastapi>=0.115.0; extra == "all"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.10
|
|
4
4
|
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.7.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.1.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.1.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.1.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.1.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.1.
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.1.
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.8
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.7
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.7
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.7
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.7
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.9
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.7
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.7
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -140,6 +140,8 @@ Requires-Dist: agent-client-protocol>=0.7.0; extra == "acp"
|
|
|
140
140
|
Provides-Extra: flow
|
|
141
141
|
Requires-Dist: langflow>=1.0.0; extra == "flow"
|
|
142
142
|
Requires-Dist: requests>=2.31.0; extra == "flow"
|
|
143
|
+
Requires-Dist: a2a-sdk[http-server]>=1.0.0; extra == "flow"
|
|
144
|
+
Requires-Dist: fastapi-pagination>=0.12.34; extra == "flow"
|
|
143
145
|
Provides-Extra: lite
|
|
144
146
|
Provides-Extra: all
|
|
145
147
|
Requires-Dist: fastapi>=0.115.0; extra == "all"
|
|
@@ -314,6 +314,7 @@ praisonai/integration/pages/bot_health.py
|
|
|
314
314
|
praisonai/integration/pages/workflow_runs.py
|
|
315
315
|
praisonai/integrations/__init__.py
|
|
316
316
|
praisonai/integrations/_cli_loaders.py
|
|
317
|
+
praisonai/integrations/_managed_base.py
|
|
317
318
|
praisonai/integrations/_session_info.py
|
|
318
319
|
praisonai/integrations/_tool_aliases.py
|
|
319
320
|
praisonai/integrations/backend_registry.py
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
rich>=13.7
|
|
2
2
|
markdown>=3.5
|
|
3
3
|
pyparsing>=3.0.0
|
|
4
|
-
praisonaiagents>=1.7.
|
|
5
|
-
praisonai-code>=0.1.
|
|
6
|
-
praisonai-bot>=0.1.
|
|
7
|
-
praisonai-train>=0.1.
|
|
8
|
-
praisonai-browser>=0.1.
|
|
9
|
-
praisonai-mcp>=0.1.
|
|
10
|
-
praisonai-sandbox>=0.1.
|
|
11
|
-
praisonai-deploy>=0.1.
|
|
4
|
+
praisonaiagents>=1.7.8
|
|
5
|
+
praisonai-code>=0.1.7
|
|
6
|
+
praisonai-bot>=0.1.7
|
|
7
|
+
praisonai-train>=0.1.7
|
|
8
|
+
praisonai-browser>=0.1.7
|
|
9
|
+
praisonai-mcp>=0.1.9
|
|
10
|
+
praisonai-sandbox>=0.1.7
|
|
11
|
+
praisonai-deploy>=0.1.7
|
|
12
12
|
python-dotenv>=0.19.0
|
|
13
13
|
litellm<2,>=1.83.14
|
|
14
14
|
PyYAML>=6.0
|
|
@@ -153,6 +153,8 @@ praisonai-sandbox[e2b]
|
|
|
153
153
|
[flow]
|
|
154
154
|
langflow>=1.0.0
|
|
155
155
|
requests>=2.31.0
|
|
156
|
+
a2a-sdk[http-server]>=1.0.0
|
|
157
|
+
fastapi-pagination>=0.12.34
|
|
156
158
|
|
|
157
159
|
[gateway]
|
|
158
160
|
praisonai-bot[gateway]
|
|
@@ -100,6 +100,14 @@ def run(agent_file: str,
|
|
|
100
100
|
"""
|
|
101
101
|
from .agents_generator import AgentsGenerator
|
|
102
102
|
|
|
103
|
+
# Wire the built-in readers/retrievers/rerankers into the core-SDK
|
|
104
|
+
# registries so YAML/CLI declarations (e.g. `retriever: fusion`,
|
|
105
|
+
# `reranker: llm`) resolve. Idempotent + thread-safe, and register-only-if-
|
|
106
|
+
# absent: a custom adapter already registered under a built-in name (e.g. a
|
|
107
|
+
# multi-tenant host's own `fusion`) is preserved, never overwritten.
|
|
108
|
+
from .adapters import register_default_adapters
|
|
109
|
+
register_default_adapters()
|
|
110
|
+
|
|
103
111
|
adapter, config_list = _resolve_run_inputs(framework)
|
|
104
112
|
_apply_model_override(config_list, kwargs)
|
|
105
113
|
cli_config = _merge_cli_config(cli_config, kwargs)
|
|
@@ -134,6 +142,14 @@ async def arun(agent_file: str,
|
|
|
134
142
|
|
|
135
143
|
from .agents_generator import AgentsGenerator
|
|
136
144
|
|
|
145
|
+
# Wire the built-in readers/retrievers/rerankers into the core-SDK
|
|
146
|
+
# registries so YAML/CLI declarations resolve. Run off the event loop since
|
|
147
|
+
# registration performs lazy imports. Idempotent + thread-safe, and
|
|
148
|
+
# register-only-if-absent: a custom adapter already registered under a
|
|
149
|
+
# built-in name is preserved, never overwritten.
|
|
150
|
+
from .adapters import register_default_adapters
|
|
151
|
+
await asyncio.to_thread(register_default_adapters)
|
|
152
|
+
|
|
137
153
|
# Resolve framework + build config_list off the caller's event loop so the
|
|
138
154
|
# synchronous credential/config-file I/O does not block it. This is the
|
|
139
155
|
# reason arun exists: a FastAPI handler awaiting arun must not stall the loop.
|
|
@@ -389,25 +389,35 @@ def register_default_readers():
|
|
|
389
389
|
from praisonaiagents.knowledge.readers import get_reader_registry
|
|
390
390
|
|
|
391
391
|
registry = get_reader_registry()
|
|
392
|
-
|
|
392
|
+
|
|
393
|
+
# Preserve any existing entry: an application (or a multi-tenant host) may
|
|
394
|
+
# have already registered a custom reader under a built-in name. Wiring the
|
|
395
|
+
# wrapper defaults must never silently replace it, so register only names
|
|
396
|
+
# that are not already present.
|
|
397
|
+
existing = set(registry.list_readers())
|
|
398
|
+
|
|
399
|
+
def _register(name, factory, extensions=None):
|
|
400
|
+
if name not in existing:
|
|
401
|
+
registry.register(name, factory, extensions)
|
|
402
|
+
|
|
393
403
|
# Register text reader
|
|
394
|
-
|
|
395
|
-
|
|
404
|
+
_register("text", TextReader, ["txt", "text", "log"])
|
|
405
|
+
|
|
396
406
|
# Register markitdown reader
|
|
397
|
-
|
|
398
|
-
|
|
407
|
+
_register("markitdown", MarkItDownReader, MarkItDownReader.supported_extensions)
|
|
408
|
+
|
|
399
409
|
# Register directory reader
|
|
400
|
-
|
|
401
|
-
|
|
410
|
+
_register("directory", DirectoryReader)
|
|
411
|
+
|
|
402
412
|
# Register glob reader
|
|
403
|
-
|
|
404
|
-
|
|
413
|
+
_register("glob", GlobReader)
|
|
414
|
+
|
|
405
415
|
# Register URL reader
|
|
406
|
-
|
|
407
|
-
|
|
416
|
+
_register("url", URLReader)
|
|
417
|
+
|
|
408
418
|
# Register auto reader
|
|
409
|
-
|
|
410
|
-
|
|
419
|
+
_register("auto", AutoReader)
|
|
420
|
+
|
|
411
421
|
logger.debug("Registered default readers")
|
|
412
422
|
|
|
413
423
|
|
|
@@ -324,18 +324,25 @@ def register_default_rerankers():
|
|
|
324
324
|
from praisonaiagents.knowledge.rerankers import get_reranker_registry
|
|
325
325
|
|
|
326
326
|
registry = get_reranker_registry()
|
|
327
|
-
|
|
327
|
+
|
|
328
|
+
# Preserve any existing entry: an application (or a multi-tenant host) may
|
|
329
|
+
# have already registered a custom reranker under a built-in name. Wiring
|
|
330
|
+
# the wrapper defaults must never silently replace it, so register only
|
|
331
|
+
# names that are not already present.
|
|
332
|
+
existing = set(registry.list_rerankers())
|
|
333
|
+
|
|
328
334
|
# LLM reranker is always available
|
|
329
|
-
|
|
330
|
-
|
|
335
|
+
if "llm" not in existing:
|
|
336
|
+
registry.register("llm", LLMReranker)
|
|
337
|
+
|
|
331
338
|
# Cross-encoder if available
|
|
332
|
-
if _check_sentence_transformers():
|
|
339
|
+
if "cross_encoder" not in existing and _check_sentence_transformers():
|
|
333
340
|
registry.register("cross_encoder", CrossEncoderReranker)
|
|
334
|
-
|
|
341
|
+
|
|
335
342
|
# Cohere if available
|
|
336
|
-
if _check_cohere():
|
|
343
|
+
if "cohere" not in existing and _check_cohere():
|
|
337
344
|
registry.register("cohere", CohereReranker)
|
|
338
|
-
|
|
345
|
+
|
|
339
346
|
logger.debug("Registered default rerankers")
|
|
340
347
|
|
|
341
348
|
|
|
@@ -595,13 +595,22 @@ def register_default_retrievers():
|
|
|
595
595
|
from praisonaiagents.knowledge.retrieval import get_retriever_registry
|
|
596
596
|
|
|
597
597
|
registry = get_retriever_registry()
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
registry.
|
|
604
|
-
|
|
598
|
+
|
|
599
|
+
# Preserve any existing entry: an application (or a multi-tenant host) may
|
|
600
|
+
# have already registered a custom retriever under a built-in name. Wiring
|
|
601
|
+
# the wrapper defaults must never silently replace it, so register only
|
|
602
|
+
# names that are not already present.
|
|
603
|
+
existing = set(registry.list_retrievers())
|
|
604
|
+
for name, factory in (
|
|
605
|
+
("basic", BasicRetriever),
|
|
606
|
+
("fusion", FusionRetriever),
|
|
607
|
+
("recursive", RecursiveRetriever),
|
|
608
|
+
("auto_merge", AutoMergeRetriever),
|
|
609
|
+
("hybrid", HybridRetriever),
|
|
610
|
+
):
|
|
611
|
+
if name not in existing:
|
|
612
|
+
registry.register(name, factory)
|
|
613
|
+
|
|
605
614
|
logger.debug("Registered default retrievers")
|
|
606
615
|
|
|
607
616
|
|
|
@@ -844,8 +844,11 @@ class AgentsGenerator:
|
|
|
844
844
|
# Build tools dictionary using shared logic
|
|
845
845
|
tools_dict = self._build_tools_dict(config)
|
|
846
846
|
|
|
847
|
-
# Select framework and resolve adapter variant
|
|
848
|
-
|
|
847
|
+
# Select framework and resolve adapter variant. Registry is the single
|
|
848
|
+
# source of truth for the default, so no literal framework name here.
|
|
849
|
+
framework_name = self._adapter_registry.resolve_or_default(
|
|
850
|
+
self.framework or config.get('framework')
|
|
851
|
+
)
|
|
849
852
|
adapter = self._select_framework(framework_name, config)
|
|
850
853
|
|
|
851
854
|
# Validate framework availability through the injected registry so a
|
|
@@ -1376,10 +1379,13 @@ class AgentsGenerator:
|
|
|
1376
1379
|
if self._is_workflow_yaml(config):
|
|
1377
1380
|
# Bracket the workflow run in the same observability session the
|
|
1378
1381
|
# sequential/hierarchical path uses so AgentOps init/finalize fires
|
|
1379
|
-
# for workflow YAMLs too.
|
|
1380
|
-
#
|
|
1382
|
+
# for workflow YAMLs too. Tag with the config-resolved framework
|
|
1383
|
+
# (registry default when omitted) rather than a hardcoded name.
|
|
1381
1384
|
self._validate_workflow_cli_capabilities()
|
|
1382
|
-
|
|
1385
|
+
workflow_label = self._adapter_registry.resolve_or_default(
|
|
1386
|
+
self.framework or config.get('framework')
|
|
1387
|
+
).lower()
|
|
1388
|
+
with observability_session(workflow_label):
|
|
1383
1389
|
return self._run_yaml_workflow(config)
|
|
1384
1390
|
|
|
1385
1391
|
# Use shared preparation logic
|
|
@@ -1432,10 +1438,14 @@ class AgentsGenerator:
|
|
|
1432
1438
|
if self._is_workflow_yaml(config):
|
|
1433
1439
|
# Bracket the async workflow run in the same observability session
|
|
1434
1440
|
# the sequential/hierarchical path uses so AgentOps init/finalize
|
|
1435
|
-
# fires for workflow YAMLs too.
|
|
1436
|
-
#
|
|
1441
|
+
# fires for workflow YAMLs too. Tag with the config-resolved
|
|
1442
|
+
# framework (registry default when omitted) rather than a hardcoded
|
|
1443
|
+
# name.
|
|
1437
1444
|
self._validate_workflow_cli_capabilities()
|
|
1438
|
-
|
|
1445
|
+
workflow_label = self._adapter_registry.resolve_or_default(
|
|
1446
|
+
self.framework or config.get('framework')
|
|
1447
|
+
).lower()
|
|
1448
|
+
with observability_session(workflow_label):
|
|
1439
1449
|
return await self._arun_yaml_workflow(config)
|
|
1440
1450
|
|
|
1441
1451
|
# Use shared preparation logic (off the event loop to avoid blocking imports)
|
|
@@ -1493,23 +1503,35 @@ class AgentsGenerator:
|
|
|
1493
1503
|
)
|
|
1494
1504
|
# Validate the YAML-declared framework first so a non-native workflow
|
|
1495
1505
|
# YAML (e.g. framework: crewai) can't slip through just because the
|
|
1496
|
-
# generator instance still holds the default 'praisonai'.
|
|
1497
|
-
|
|
1506
|
+
# generator instance still holds the default 'praisonai'. Resolve
|
|
1507
|
+
# through the injected registry (not the process default) so the
|
|
1508
|
+
# build-time framework agrees with the observability label and a
|
|
1509
|
+
# tenant-scoped adapter is honoured. Fall back to the process default
|
|
1510
|
+
# when the instance was built without an injected registry.
|
|
1511
|
+
registry = getattr(self, "_adapter_registry", None) or _get_default_adapter_registry()
|
|
1512
|
+
workflow_framework = framework_from_config(
|
|
1513
|
+
config, registry=registry
|
|
1514
|
+
)
|
|
1498
1515
|
validate_workflow_framework(
|
|
1499
1516
|
workflow_framework,
|
|
1500
1517
|
source="agents.yaml workflow section",
|
|
1518
|
+
registry=registry,
|
|
1501
1519
|
)
|
|
1502
1520
|
if self.framework:
|
|
1503
1521
|
validate_workflow_framework(
|
|
1504
1522
|
self.framework,
|
|
1505
1523
|
source="AgentsGenerator framework",
|
|
1524
|
+
registry=registry,
|
|
1506
1525
|
)
|
|
1507
1526
|
|
|
1508
1527
|
# Parity with the sequential/hierarchical path: reject an incompatible
|
|
1509
1528
|
# cli_backend in a workflow YAML at build time instead of accepting it
|
|
1510
1529
|
# silently. Workflow YAMLs are native-only, so validate against
|
|
1511
1530
|
# 'praisonai'.
|
|
1512
|
-
self._validate_cli_backend_compatibility(
|
|
1531
|
+
self._validate_cli_backend_compatibility(
|
|
1532
|
+
config,
|
|
1533
|
+
registry.resolve_or_default(workflow_framework),
|
|
1534
|
+
)
|
|
1513
1535
|
|
|
1514
1536
|
# The framework-level check above passes for 'praisonai' because the
|
|
1515
1537
|
# sequential/hierarchical adapter does support cli_backend — but
|
|
@@ -443,6 +443,42 @@ def _apply_agent_config(agent: Any, agent_config: Optional[Dict[str, Any]]) -> N
|
|
|
443
443
|
)
|
|
444
444
|
|
|
445
445
|
|
|
446
|
+
async def _safe_close_agent(agent: Any) -> None:
|
|
447
|
+
"""Best-effort teardown of a per-request agent clone.
|
|
448
|
+
|
|
449
|
+
``resolve_session_agent`` returns a fresh clone for every invoke of a
|
|
450
|
+
session-isolatable ``Agent`` (so concurrent callers never share
|
|
451
|
+
``chat_history``). Those clones lazily spin up LLM client pools,
|
|
452
|
+
tool-executor threads and MCP subprocesses that
|
|
453
|
+
``Agent.close()``/``aclose()`` release — without this teardown each request
|
|
454
|
+
leaks them into the long-lived server process.
|
|
455
|
+
|
|
456
|
+
Only a *clone* is closed. Ownership is derived from the agent itself via
|
|
457
|
+
:func:`_supports_session_isolation`: an isolatable agent was cloned for this
|
|
458
|
+
request and is safe to close, whereas a non-isolatable one (plain mock /
|
|
459
|
+
lightweight callable) is the shared registry instance and must NOT be closed
|
|
460
|
+
or the next request would run against a torn-down agent. Deriving ownership
|
|
461
|
+
from the resolved object — rather than comparing it against a second,
|
|
462
|
+
independently-timed registry lookup — is race-free even when the registry
|
|
463
|
+
entry is concurrently replaced.
|
|
464
|
+
|
|
465
|
+
Errors are swallowed (logged) so cleanup never masks a successful response.
|
|
466
|
+
"""
|
|
467
|
+
if agent is None or not _supports_session_isolation(agent):
|
|
468
|
+
return
|
|
469
|
+
try:
|
|
470
|
+
aclose = getattr(agent, "aclose", None)
|
|
471
|
+
if inspect.iscoroutinefunction(aclose):
|
|
472
|
+
await aclose()
|
|
473
|
+
else:
|
|
474
|
+
close = getattr(agent, "close", None)
|
|
475
|
+
if callable(close):
|
|
476
|
+
import asyncio
|
|
477
|
+
await asyncio.to_thread(close)
|
|
478
|
+
except Exception:
|
|
479
|
+
logger.exception("Agent cleanup failed")
|
|
480
|
+
|
|
481
|
+
|
|
446
482
|
def _supports_async_start(agent: Any) -> bool:
|
|
447
483
|
"""Return True if agent.astart is a coroutine function."""
|
|
448
484
|
astart = getattr(agent, "astart", None)
|
|
@@ -511,52 +547,60 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
511
547
|
status_code=404,
|
|
512
548
|
detail=f"Agent '{agent_id}' not found"
|
|
513
549
|
)
|
|
514
|
-
|
|
515
|
-
# Apply per-request agent_config overrides to the isolated clone, or
|
|
516
|
-
# reject unsupported keys with a 400 so the caller isn't silently
|
|
517
|
-
# running a different config than they asked for.
|
|
518
|
-
try:
|
|
519
|
-
_apply_agent_config(agent, request.agent_config)
|
|
520
|
-
except AgentConfigError as e:
|
|
521
|
-
raise HTTPException(status_code=400, detail=str(e))
|
|
522
550
|
|
|
523
551
|
try:
|
|
524
|
-
#
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
#
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
"agent_id"
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
552
|
+
# Apply per-request agent_config overrides to the isolated clone, or
|
|
553
|
+
# reject unsupported keys with a 400 so the caller isn't silently
|
|
554
|
+
# running a different config than they asked for.
|
|
555
|
+
try:
|
|
556
|
+
_apply_agent_config(agent, request.agent_config)
|
|
557
|
+
except AgentConfigError as e:
|
|
558
|
+
raise HTTPException(status_code=400, detail=str(e))
|
|
559
|
+
|
|
560
|
+
try:
|
|
561
|
+
# Session ID echoed back to the caller
|
|
562
|
+
session_id = request.session_id or "default"
|
|
563
|
+
|
|
564
|
+
# Invoke agent (handle both sync and async agents)
|
|
565
|
+
if _supports_async_start(agent):
|
|
566
|
+
# Async agent
|
|
567
|
+
result = await agent.astart(request.message)
|
|
568
|
+
elif _supports_sync_start(agent):
|
|
569
|
+
# Sync agent - run in a worker thread to avoid blocking the event
|
|
570
|
+
# loop. ``asyncio.to_thread`` is the correct primitive inside a
|
|
571
|
+
# running request coroutine (``get_event_loop()`` is deprecated
|
|
572
|
+
# there since Python 3.10).
|
|
573
|
+
import asyncio
|
|
574
|
+
result = await asyncio.to_thread(agent.start, request.message)
|
|
575
|
+
else:
|
|
576
|
+
raise AttributeError(f"Agent {agent_id} must provide start() or async astart()")
|
|
577
|
+
|
|
578
|
+
logger.info(f"Agent {agent_id} invoked successfully")
|
|
579
|
+
|
|
580
|
+
return AgentInvokeResponse(
|
|
581
|
+
result=str(result),
|
|
582
|
+
session_id=session_id,
|
|
583
|
+
status="success",
|
|
584
|
+
metadata={
|
|
585
|
+
"agent_id": agent_id,
|
|
586
|
+
"message_length": len(request.message),
|
|
587
|
+
"response_length": len(str(result))
|
|
588
|
+
}
|
|
589
|
+
)
|
|
590
|
+
|
|
591
|
+
except HTTPException:
|
|
592
|
+
raise
|
|
593
|
+
except Exception as e:
|
|
594
|
+
logger.error(f"Agent {agent_id} invocation failed: {e}")
|
|
595
|
+
raise HTTPException(
|
|
596
|
+
status_code=500,
|
|
597
|
+
detail=f"Agent execution failed: {str(e)}"
|
|
598
|
+
)
|
|
599
|
+
finally:
|
|
600
|
+
# Release the per-request clone's resources (LLM pools, tool-executor
|
|
601
|
+
# threads, MCP subprocesses). No-op when the agent fell back to the
|
|
602
|
+
# shared template. Never masks the response.
|
|
603
|
+
await _safe_close_agent(agent)
|
|
560
604
|
|
|
561
605
|
@router.get("/agents")
|
|
562
606
|
async def list_agents(
|
|
@@ -669,6 +713,7 @@ async def invoke_agent_standalone(
|
|
|
669
713
|
"available_agents": list_registered_agents()
|
|
670
714
|
}
|
|
671
715
|
|
|
716
|
+
agent = None
|
|
672
717
|
try:
|
|
673
718
|
# Per-session isolated agent view (see resolve_session_agent). Done
|
|
674
719
|
# inside the try so a clone/isolation failure returns a clean error
|
|
@@ -715,6 +760,10 @@ async def invoke_agent_standalone(
|
|
|
715
760
|
"status": "error",
|
|
716
761
|
"agent_id": agent_id
|
|
717
762
|
}
|
|
763
|
+
finally:
|
|
764
|
+
# Release the per-request clone's resources; no-op for the shared
|
|
765
|
+
# template fallback. Never masks the response.
|
|
766
|
+
await _safe_close_agent(agent)
|
|
718
767
|
|
|
719
768
|
|
|
720
769
|
# Example usage and helper functions
|