PraisonAI 4.6.151__tar.gz → 4.6.152__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.151 → praisonai-4.6.152}/PKG-INFO +11 -10
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/PKG-INFO +11 -10
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/SOURCES.txt +0 -9
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/requires.txt +10 -9
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_bootstrap.py +16 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/agents_generator.py +57 -30
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/sandbox_cli.py +31 -19
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/crewai_adapter.py +17 -28
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/praisonai_adapter.py +4 -15
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/registry.py +7 -2
- praisonai-4.6.152/praisonai/framework_adapters/validators.py +45 -0
- praisonai-4.6.152/praisonai/sandbox/__init__.py +13 -0
- praisonai-4.6.152/praisonai/sandbox/_registry.py +13 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/_delivery.py +108 -16
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/agent_scheduler.py +7 -1
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/async_agent_scheduler.py +7 -1
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/tool_override.py +129 -69
- praisonai-4.6.152/praisonai/version.py +1 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/pyproject.toml +11 -9
- praisonai-4.6.151/praisonai/framework_adapters/validators.py +0 -28
- praisonai-4.6.151/praisonai/sandbox/__init__.py +0 -51
- praisonai-4.6.151/praisonai/sandbox/_compat.py +0 -29
- praisonai-4.6.151/praisonai/sandbox/_registry.py +0 -67
- praisonai-4.6.151/praisonai/sandbox/_shell.py +0 -38
- praisonai-4.6.151/praisonai/sandbox/daytona.py +0 -440
- praisonai-4.6.151/praisonai/sandbox/docker.py +0 -466
- praisonai-4.6.151/praisonai/sandbox/e2b.py +0 -376
- praisonai-4.6.151/praisonai/sandbox/modal.py +0 -380
- praisonai-4.6.151/praisonai/sandbox/sandlock.py +0 -542
- praisonai-4.6.151/praisonai/sandbox/ssh.py +0 -554
- praisonai-4.6.151/praisonai/sandbox/subprocess.py +0 -496
- praisonai-4.6.151/praisonai/version.py +0 -1
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/README.md +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/__main__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_logging.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/api/call.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/auto.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/config/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/config/schema.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/config/validator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/_unified_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/profiler.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/push/client.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/setup.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/train.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/setup.cfg +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_basic.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_recipe.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_registry.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_runner.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.151 → praisonai-4.6.152}/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.152
|
|
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,12 +11,13 @@ 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.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.0.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.155
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.51
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.36
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.7
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.0.4
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.0.4
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.0.2
|
|
20
21
|
Requires-Dist: python-dotenv>=0.19.0
|
|
21
22
|
Requires-Dist: litellm<2,>=1.83.14
|
|
22
23
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -60,11 +61,11 @@ Requires-Dist: tavily-python==0.5.0; extra == "code"
|
|
|
60
61
|
Requires-Dist: crawl4ai>=0.7.0; extra == "code"
|
|
61
62
|
Requires-Dist: playwright>=1.47.0; extra == "code"
|
|
62
63
|
Provides-Extra: sandbox
|
|
63
|
-
Requires-Dist:
|
|
64
|
+
Requires-Dist: praisonai-sandbox[all]; extra == "sandbox"
|
|
64
65
|
Provides-Extra: ssh
|
|
65
|
-
Requires-Dist:
|
|
66
|
+
Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
|
|
66
67
|
Provides-Extra: modal
|
|
67
|
-
Requires-Dist: modal
|
|
68
|
+
Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
|
|
68
69
|
Provides-Extra: daytona
|
|
69
70
|
Provides-Extra: realtime
|
|
70
71
|
Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.152
|
|
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,12 +11,13 @@ 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.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.0.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.155
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.51
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.36
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.7
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.0.4
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.0.4
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.0.2
|
|
20
21
|
Requires-Dist: python-dotenv>=0.19.0
|
|
21
22
|
Requires-Dist: litellm<2,>=1.83.14
|
|
22
23
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -60,11 +61,11 @@ Requires-Dist: tavily-python==0.5.0; extra == "code"
|
|
|
60
61
|
Requires-Dist: crawl4ai>=0.7.0; extra == "code"
|
|
61
62
|
Requires-Dist: playwright>=1.47.0; extra == "code"
|
|
62
63
|
Provides-Extra: sandbox
|
|
63
|
-
Requires-Dist:
|
|
64
|
+
Requires-Dist: praisonai-sandbox[all]; extra == "sandbox"
|
|
64
65
|
Provides-Extra: ssh
|
|
65
|
-
Requires-Dist:
|
|
66
|
+
Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
|
|
66
67
|
Provides-Extra: modal
|
|
67
|
-
Requires-Dist: modal
|
|
68
|
+
Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
|
|
68
69
|
Provides-Extra: daytona
|
|
69
70
|
Provides-Extra: realtime
|
|
70
71
|
Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
|
|
@@ -471,16 +471,7 @@ praisonai/replay/writer.py
|
|
|
471
471
|
praisonai/runtime/__init__.py
|
|
472
472
|
praisonai/runtime/__main__.py
|
|
473
473
|
praisonai/sandbox/__init__.py
|
|
474
|
-
praisonai/sandbox/_compat.py
|
|
475
474
|
praisonai/sandbox/_registry.py
|
|
476
|
-
praisonai/sandbox/_shell.py
|
|
477
|
-
praisonai/sandbox/daytona.py
|
|
478
|
-
praisonai/sandbox/docker.py
|
|
479
|
-
praisonai/sandbox/e2b.py
|
|
480
|
-
praisonai/sandbox/modal.py
|
|
481
|
-
praisonai/sandbox/sandlock.py
|
|
482
|
-
praisonai/sandbox/ssh.py
|
|
483
|
-
praisonai/sandbox/subprocess.py
|
|
484
475
|
praisonai/scheduler/__init__.py
|
|
485
476
|
praisonai/scheduler/_base_scheduler.py
|
|
486
477
|
praisonai/scheduler/_delivery.py
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
rich>=13.7
|
|
2
2
|
markdown>=3.5
|
|
3
3
|
pyparsing>=3.0.0
|
|
4
|
-
praisonaiagents>=1.6.
|
|
5
|
-
praisonai-code>=0.0.
|
|
6
|
-
praisonai-bot>=0.0.
|
|
7
|
-
praisonai-train>=0.0.
|
|
8
|
-
praisonai-browser>=0.0.
|
|
9
|
-
praisonai-mcp>=0.0.
|
|
4
|
+
praisonaiagents>=1.6.155
|
|
5
|
+
praisonai-code>=0.0.51
|
|
6
|
+
praisonai-bot>=0.0.36
|
|
7
|
+
praisonai-train>=0.0.7
|
|
8
|
+
praisonai-browser>=0.0.4
|
|
9
|
+
praisonai-mcp>=0.0.4
|
|
10
|
+
praisonai-sandbox>=0.0.2
|
|
10
11
|
python-dotenv>=0.19.0
|
|
11
12
|
litellm<2,>=1.83.14
|
|
12
13
|
PyYAML>=6.0
|
|
@@ -171,7 +172,7 @@ praisonai-tools>=0.1.0
|
|
|
171
172
|
praisonai-mcp[all]
|
|
172
173
|
|
|
173
174
|
[modal]
|
|
174
|
-
modal
|
|
175
|
+
praisonai-sandbox[modal]
|
|
175
176
|
|
|
176
177
|
[mongodb]
|
|
177
178
|
pymongo>=4.6.0
|
|
@@ -216,10 +217,10 @@ ddgs>=9.0.0
|
|
|
216
217
|
redis>=5.0.0
|
|
217
218
|
|
|
218
219
|
[sandbox]
|
|
219
|
-
|
|
220
|
+
praisonai-sandbox[all]
|
|
220
221
|
|
|
221
222
|
[ssh]
|
|
222
|
-
|
|
223
|
+
praisonai-sandbox[ssh]
|
|
223
224
|
|
|
224
225
|
[train]
|
|
225
226
|
praisonai-train[llm]
|
|
@@ -91,3 +91,19 @@ def ensure_praisonai_mcp() -> None:
|
|
|
91
91
|
root = str(mcp_src)
|
|
92
92
|
if root not in sys.path:
|
|
93
93
|
sys.path.insert(0, root)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def ensure_praisonai_sandbox() -> None:
|
|
97
|
+
"""Ensure ``praisonai_sandbox`` can be imported in monorepo dev layouts."""
|
|
98
|
+
try:
|
|
99
|
+
import praisonai_sandbox # noqa: F401
|
|
100
|
+
return
|
|
101
|
+
except ImportError:
|
|
102
|
+
pass
|
|
103
|
+
|
|
104
|
+
wrapper_src = Path(__file__).resolve().parents[1] # .../src/praisonai
|
|
105
|
+
sandbox_src = wrapper_src.parent / "praisonai-sandbox"
|
|
106
|
+
if (sandbox_src / "praisonai_sandbox").is_dir():
|
|
107
|
+
root = str(sandbox_src)
|
|
108
|
+
if root not in sys.path:
|
|
109
|
+
sys.path.insert(0, root)
|
|
@@ -705,30 +705,40 @@ class AgentsGenerator:
|
|
|
705
705
|
framework_name = self.framework or config.get('framework', 'praisonai')
|
|
706
706
|
adapter = self._select_framework(framework_name, config)
|
|
707
707
|
|
|
708
|
-
# Validate framework availability
|
|
708
|
+
# Validate framework availability through the injected registry so a
|
|
709
|
+
# scoped/per-tenant adapter registered on this generator's registry is
|
|
710
|
+
# not rejected just because it is absent from the process default.
|
|
709
711
|
from .framework_adapters.validators import assert_framework_available
|
|
710
|
-
assert_framework_available(adapter.name)
|
|
712
|
+
assert_framework_available(adapter.name, registry=self._adapter_registry)
|
|
711
713
|
|
|
712
714
|
# Validate cli_backend compatibility
|
|
713
715
|
self._validate_cli_backend_compatibility(config, adapter.name, adapter=adapter)
|
|
714
|
-
|
|
715
|
-
# Initialize observability hooks
|
|
716
|
-
from .observability.hooks import init_observability
|
|
717
|
-
init_observability(adapter.name)
|
|
718
|
-
|
|
719
|
-
# Run adapter setup hooks
|
|
720
|
-
adapter.setup(framework_tag=adapter.name)
|
|
721
|
-
|
|
716
|
+
|
|
722
717
|
# Update framework reference if resolution changed it
|
|
723
718
|
self.framework = adapter.name
|
|
724
719
|
self.framework_adapter = adapter
|
|
725
|
-
|
|
720
|
+
|
|
721
|
+
# NB: adapter setup is intentionally NOT run here. The caller opens the
|
|
722
|
+
# observability_session (which owns init/finalize for every adapter) and
|
|
723
|
+
# then invokes _run_adapter_setup INSIDE that session, so setup events —
|
|
724
|
+
# and any setup/import failure — are recorded and finalized instead of
|
|
725
|
+
# slipping outside observability. See generate_crew_and_kickoff /
|
|
726
|
+
# agenerate_crew_and_kickoff.
|
|
726
727
|
return {
|
|
727
728
|
'adapter': adapter,
|
|
728
729
|
'config': config,
|
|
729
730
|
'topic': topic,
|
|
730
731
|
'tools_dict': tools_dict,
|
|
731
732
|
}
|
|
733
|
+
|
|
734
|
+
def _run_adapter_setup(self, adapter):
|
|
735
|
+
"""Run an adapter's setup hooks.
|
|
736
|
+
|
|
737
|
+
Kept as a tiny seam so both the sync and async run paths execute setup
|
|
738
|
+
*inside* the observability_session, keeping init/setup/run/finalize
|
|
739
|
+
bracketed together for every adapter.
|
|
740
|
+
"""
|
|
741
|
+
adapter.setup(framework_tag=adapter.name)
|
|
732
742
|
|
|
733
743
|
def _build_tools_dict(self, config):
|
|
734
744
|
"""Shared tool resolution logic for sync and async paths."""
|
|
@@ -997,15 +1007,22 @@ class AgentsGenerator:
|
|
|
997
1007
|
prep = self._prepare_for_run(config)
|
|
998
1008
|
|
|
999
1009
|
self.logger.info(f"Using framework: {prep['adapter'].name}")
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1010
|
+
# Own the observability lifecycle here so init and finalize are always
|
|
1011
|
+
# paired for every adapter (the CM finalizes on success and error alike).
|
|
1012
|
+
from .observability.hooks import observability_session
|
|
1013
|
+
with observability_session(prep['adapter'].name):
|
|
1014
|
+
# Run setup INSIDE the session so setup events and any setup/import
|
|
1015
|
+
# failure are recorded and finalized, not dropped outside observability.
|
|
1016
|
+
self._run_adapter_setup(prep['adapter'])
|
|
1017
|
+
return prep['adapter'].run(
|
|
1018
|
+
prep['config'],
|
|
1019
|
+
self.config_list,
|
|
1020
|
+
prep['topic'],
|
|
1021
|
+
tools_dict=prep['tools_dict'],
|
|
1022
|
+
agent_callback=getattr(self, 'agent_callback', None),
|
|
1023
|
+
task_callback=getattr(self, 'task_callback', None),
|
|
1024
|
+
cli_config=getattr(self, 'cli_config', None),
|
|
1025
|
+
)
|
|
1009
1026
|
|
|
1010
1027
|
async def _aload_config(self):
|
|
1011
1028
|
"""Async-safe config loading (blocking file I/O off the event loop)."""
|
|
@@ -1013,7 +1030,8 @@ class AgentsGenerator:
|
|
|
1013
1030
|
return await asyncio.to_thread(self._load_config)
|
|
1014
1031
|
|
|
1015
1032
|
async def _aprepare_for_run(self, config):
|
|
1016
|
-
"""Async-safe run preparation (heavy imports
|
|
1033
|
+
"""Async-safe run preparation (heavy imports off the loop). Adapter setup
|
|
1034
|
+
runs later, inside the observability_session (see agenerate_crew_and_kickoff)."""
|
|
1017
1035
|
import asyncio
|
|
1018
1036
|
return await asyncio.to_thread(self._prepare_for_run, config)
|
|
1019
1037
|
|
|
@@ -1032,15 +1050,24 @@ class AgentsGenerator:
|
|
|
1032
1050
|
prep = await self._aprepare_for_run(config)
|
|
1033
1051
|
|
|
1034
1052
|
self.logger.info(f"Using framework: {prep['adapter'].name}")
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1053
|
+
# Own the observability lifecycle here so init and finalize are always
|
|
1054
|
+
# paired for every adapter (the CM finalizes on success and error alike).
|
|
1055
|
+
import asyncio
|
|
1056
|
+
from .observability.hooks import observability_session
|
|
1057
|
+
with observability_session(prep['adapter'].name):
|
|
1058
|
+
# Run setup INSIDE the session (off the event loop, as it may block)
|
|
1059
|
+
# so setup events and any setup/import failure are recorded and
|
|
1060
|
+
# finalized, not dropped outside observability.
|
|
1061
|
+
await asyncio.to_thread(self._run_adapter_setup, prep['adapter'])
|
|
1062
|
+
return await prep['adapter'].arun(
|
|
1063
|
+
prep['config'],
|
|
1064
|
+
self.config_list,
|
|
1065
|
+
prep['topic'],
|
|
1066
|
+
tools_dict=prep['tools_dict'],
|
|
1067
|
+
agent_callback=getattr(self, 'agent_callback', None),
|
|
1068
|
+
task_callback=getattr(self, 'task_callback', None),
|
|
1069
|
+
cli_config=getattr(self, 'cli_config', None),
|
|
1070
|
+
)
|
|
1044
1071
|
|
|
1045
1072
|
|
|
1046
1073
|
def _build_yaml_workflow(self, config):
|
|
@@ -15,6 +15,16 @@ from typing import Optional
|
|
|
15
15
|
logger = logging.getLogger(__name__)
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
def _ensure_backends():
|
|
19
|
+
"""Bootstrap praisonai-sandbox before registry imports (fail loud if missing)."""
|
|
20
|
+
try:
|
|
21
|
+
from praisonai._bootstrap import ensure_praisonai_sandbox
|
|
22
|
+
|
|
23
|
+
ensure_praisonai_sandbox()
|
|
24
|
+
except ImportError:
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
18
28
|
class SandboxHandler:
|
|
19
29
|
"""Handler for sandbox CLI commands."""
|
|
20
30
|
|
|
@@ -39,6 +49,8 @@ class SandboxHandler:
|
|
|
39
49
|
print("Error: Provide code via --code or --file")
|
|
40
50
|
return
|
|
41
51
|
|
|
52
|
+
_ensure_backends()
|
|
53
|
+
|
|
42
54
|
if file:
|
|
43
55
|
if not os.path.exists(file):
|
|
44
56
|
print(f"Error: File not found: {file}")
|
|
@@ -49,7 +61,7 @@ class SandboxHandler:
|
|
|
49
61
|
try:
|
|
50
62
|
from praisonaiagents.sandbox import ResourceLimits
|
|
51
63
|
|
|
52
|
-
from
|
|
64
|
+
from praisonai_sandbox._registry import SandboxRegistry
|
|
53
65
|
|
|
54
66
|
registry = SandboxRegistry.default()
|
|
55
67
|
try:
|
|
@@ -59,7 +71,8 @@ class SandboxHandler:
|
|
|
59
71
|
print(
|
|
60
72
|
f"Error: sandbox '{sandbox_type}' is unavailable: {e}\n"
|
|
61
73
|
f"Available: {registry.list_names()}\n"
|
|
62
|
-
f"To install the optional backend: pip install
|
|
74
|
+
f"To install the optional backend: pip install praisonai-sandbox[{sandbox_type}] "
|
|
75
|
+
f"or pip install \"praisonai[sandbox]\"\n"
|
|
63
76
|
f"Or explicitly choose another sandbox: --sandbox-type subprocess"
|
|
64
77
|
)
|
|
65
78
|
sys.exit(2)
|
|
@@ -110,10 +123,11 @@ class SandboxHandler:
|
|
|
110
123
|
sandbox_type: Type of sandbox (subprocess, docker)
|
|
111
124
|
image: Docker image to use
|
|
112
125
|
"""
|
|
126
|
+
_ensure_backends()
|
|
113
127
|
try:
|
|
114
128
|
from praisonaiagents.sandbox import ResourceLimits
|
|
115
129
|
|
|
116
|
-
from
|
|
130
|
+
from praisonai_sandbox._registry import SandboxRegistry
|
|
117
131
|
|
|
118
132
|
registry = SandboxRegistry.default()
|
|
119
133
|
try:
|
|
@@ -123,7 +137,8 @@ class SandboxHandler:
|
|
|
123
137
|
print(
|
|
124
138
|
f"Error: sandbox '{sandbox_type}' is unavailable: {e}\n"
|
|
125
139
|
f"Available: {registry.list_names()}\n"
|
|
126
|
-
f"To install the optional backend: pip install
|
|
140
|
+
f"To install the optional backend: pip install praisonai-sandbox[{sandbox_type}] "
|
|
141
|
+
f"or pip install \"praisonai[sandbox]\"\n"
|
|
127
142
|
f"Or explicitly choose another sandbox: --sandbox-type subprocess"
|
|
128
143
|
)
|
|
129
144
|
sys.exit(2)
|
|
@@ -174,21 +189,18 @@ class SandboxHandler:
|
|
|
174
189
|
asyncio.run(run_shell())
|
|
175
190
|
|
|
176
191
|
def status(self) -> None:
|
|
177
|
-
"""Check sandbox availability."""
|
|
178
|
-
print("Sandbox
|
|
192
|
+
"""Check sandbox backend availability."""
|
|
193
|
+
print("Sandbox backends:")
|
|
179
194
|
print()
|
|
180
|
-
|
|
181
|
-
print("Subprocess sandbox: Available")
|
|
182
|
-
|
|
183
195
|
try:
|
|
184
|
-
from
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
print("
|
|
190
|
-
except ImportError:
|
|
191
|
-
print("
|
|
196
|
+
from praisonaiagents.sandbox import SandboxManager, SandboxConfig
|
|
197
|
+
|
|
198
|
+
manager = SandboxManager(SandboxConfig.subprocess())
|
|
199
|
+
for name, info in sorted(manager.get_available_types().items()):
|
|
200
|
+
flag = "Available" if info.get("available") else "Unavailable"
|
|
201
|
+
print(f" {name}: {flag}")
|
|
202
|
+
except ImportError as exc:
|
|
203
|
+
print(f" Error: {exc}")
|
|
192
204
|
|
|
193
205
|
|
|
194
206
|
def handle_sandbox_command(args) -> None:
|
|
@@ -243,7 +255,7 @@ def add_sandbox_parser(subparsers) -> None:
|
|
|
243
255
|
)
|
|
244
256
|
run_parser.add_argument(
|
|
245
257
|
"--type", "-t",
|
|
246
|
-
choices=["subprocess", "docker"],
|
|
258
|
+
choices=["subprocess", "docker", "daytona"],
|
|
247
259
|
default="subprocess",
|
|
248
260
|
help="Sandbox type (default: subprocess)",
|
|
249
261
|
)
|
|
@@ -265,7 +277,7 @@ def add_sandbox_parser(subparsers) -> None:
|
|
|
265
277
|
)
|
|
266
278
|
shell_parser.add_argument(
|
|
267
279
|
"--type", "-t",
|
|
268
|
-
choices=["subprocess", "docker"],
|
|
280
|
+
choices=["subprocess", "docker", "daytona"],
|
|
269
281
|
default="subprocess",
|
|
270
282
|
help="Sandbox type (default: subprocess)",
|
|
271
283
|
)
|
|
@@ -51,27 +51,23 @@ class CrewAIAdapter(BaseFrameworkAdapter):
|
|
|
51
51
|
Returns:
|
|
52
52
|
Execution result as string
|
|
53
53
|
"""
|
|
54
|
-
# Observability is
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
# Disable CrewAI telemetry while constructing agents/tasks/crew. The
|
|
72
|
-
# class-level fallback is locked + reference counted, so concurrent
|
|
73
|
-
# runs cannot corrupt the Telemetry class during this window.
|
|
74
|
-
with scoped_telemetry_disable(Telemetry):
|
|
54
|
+
# Observability init/finalize is owned by the generator via the
|
|
55
|
+
# observability_session context manager, so the adapter no longer
|
|
56
|
+
# finalizes here — this keeps the lifecycle symmetric across every
|
|
57
|
+
# adapter and prevents double-finalize.
|
|
58
|
+
# Import CrewAI only when needed (availability already validated at CLI entry)
|
|
59
|
+
import os
|
|
60
|
+
from crewai import Agent, Task, Crew
|
|
61
|
+
from crewai.telemetry import Telemetry
|
|
62
|
+
from .._framework_availability import is_available
|
|
63
|
+
|
|
64
|
+
# Suppress crewai.cli.config logger (scoped to when CrewAI is actually used)
|
|
65
|
+
logging.getLogger('crewai.cli.config').setLevel(logging.ERROR)
|
|
66
|
+
|
|
67
|
+
# Disable CrewAI telemetry while constructing agents/tasks/crew. The
|
|
68
|
+
# class-level fallback is locked + reference counted, so concurrent
|
|
69
|
+
# runs cannot corrupt the Telemetry class during this window.
|
|
70
|
+
with scoped_telemetry_disable(Telemetry):
|
|
75
71
|
from ._config_builder import build_agent_specs
|
|
76
72
|
|
|
77
73
|
agents = {}
|
|
@@ -179,11 +175,4 @@ class CrewAIAdapter(BaseFrameworkAdapter):
|
|
|
179
175
|
result = f"### Task Output ###\n{response}"
|
|
180
176
|
|
|
181
177
|
return result
|
|
182
|
-
finally:
|
|
183
|
-
# Close observability session with status derived from exc state
|
|
184
|
-
status = "Failure" if _sys.exc_info()[0] is not None else "Success"
|
|
185
|
-
try:
|
|
186
|
-
finalize_observability(self.name, status=status)
|
|
187
|
-
except Exception as e: # noqa: BLE001 -- telemetry must not crash the run
|
|
188
|
-
logger.error(f"Error finalizing observability: {e}")
|
|
189
178
|
|
|
@@ -430,14 +430,10 @@ class PraisonAIAdapter(BaseFrameworkAdapter):
|
|
|
430
430
|
|
|
431
431
|
This uses AgentTeam.astart() instead of thread offloading for true async execution.
|
|
432
432
|
"""
|
|
433
|
-
# Observability is
|
|
434
|
-
#
|
|
435
|
-
#
|
|
436
|
-
#
|
|
437
|
-
# cancellation there still finalizes the session.
|
|
438
|
-
import sys as _sys
|
|
439
|
-
from ..observability.hooks import finalize_observability
|
|
440
|
-
|
|
433
|
+
# Observability init/finalize is owned by the generator via the
|
|
434
|
+
# observability_session context manager, so the adapter no longer
|
|
435
|
+
# finalizes here — this keeps the lifecycle symmetric across every
|
|
436
|
+
# adapter and prevents double-finalize.
|
|
441
437
|
interactive_runtime = None
|
|
442
438
|
try:
|
|
443
439
|
# Import PraisonAI components only when needed
|
|
@@ -470,13 +466,6 @@ class PraisonAIAdapter(BaseFrameworkAdapter):
|
|
|
470
466
|
logger.info("PraisonAI async execution completed")
|
|
471
467
|
return result
|
|
472
468
|
finally:
|
|
473
|
-
# Close observability session with status derived from exc state
|
|
474
|
-
status = "Failure" if _sys.exc_info()[0] is not None else "Success"
|
|
475
|
-
try:
|
|
476
|
-
finalize_observability(self.name, status=status)
|
|
477
|
-
except Exception as e: # noqa: BLE001 -- telemetry must not crash the run
|
|
478
|
-
logger.error(f"Error finalizing observability: {e}")
|
|
479
|
-
|
|
480
469
|
# Cleanup InteractiveRuntime if it was started
|
|
481
470
|
if interactive_runtime is not None:
|
|
482
471
|
try:
|
|
@@ -213,13 +213,18 @@ def list_available_frameworks() -> list[str]:
|
|
|
213
213
|
return get_default_registry().list_available_frameworks()
|
|
214
214
|
|
|
215
215
|
|
|
216
|
-
def get_install_hint(name: str) -> str:
|
|
216
|
+
def get_install_hint(name: str, *, registry: Optional[FrameworkAdapterRegistry] = None) -> str:
|
|
217
217
|
"""Return install hint for a framework, consulting the adapter when registered.
|
|
218
218
|
|
|
219
219
|
Falls back to ``pip install 'praisonai[<extra>]'`` when the adapter cannot
|
|
220
220
|
be resolved (e.g. its dependencies are missing) or does not declare a hint.
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
name: Framework name to build the install hint for.
|
|
224
|
+
registry: Optional adapter registry to consult; defaults to the
|
|
225
|
+
process-default registry when omitted (DI-friendly).
|
|
221
226
|
"""
|
|
222
|
-
registry = get_default_registry()
|
|
227
|
+
registry = registry or get_default_registry()
|
|
223
228
|
try:
|
|
224
229
|
adapter = registry.create(name)
|
|
225
230
|
hint = getattr(adapter, "install_hint", None)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Framework availability validators.
|
|
3
|
+
|
|
4
|
+
Provides early validation of framework availability to fail fast at CLI entry
|
|
5
|
+
rather than inside run() methods after expensive setup work.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .registry import get_default_registry, get_install_hint
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def assert_framework_available(name: str, *, registry=None) -> None:
|
|
12
|
+
"""
|
|
13
|
+
Raise ImportError immediately if the chosen framework is missing.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
name: Framework name to validate
|
|
17
|
+
registry: Optional adapter registry to consult. When omitted, the
|
|
18
|
+
process-default registry is used. Passing the caller's injected
|
|
19
|
+
registry keeps DI intact so a scoped/per-tenant adapter is not
|
|
20
|
+
rejected just because it is absent from the process default.
|
|
21
|
+
|
|
22
|
+
Raises:
|
|
23
|
+
ImportError: If framework is not available with actionable install hint
|
|
24
|
+
"""
|
|
25
|
+
registry = registry or get_default_registry()
|
|
26
|
+
|
|
27
|
+
if registry.is_available(name):
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
# A router/alias may resolve to a concrete adapter (e.g. ``autogen`` ->
|
|
31
|
+
# ``autogen_v2``) whose name is a built-in key that lives on the process
|
|
32
|
+
# default rather than a scoped/injected registry. Falling back to the
|
|
33
|
+
# default here keeps the DI seam (scoped adapters pass on the injected
|
|
34
|
+
# registry) without rejecting a resolved built-in that selection already
|
|
35
|
+
# accepted. The fallback is skipped when no registry was injected, since
|
|
36
|
+
# ``registry`` is then already the default.
|
|
37
|
+
default_registry = get_default_registry()
|
|
38
|
+
if registry is not default_registry and default_registry.is_available(name):
|
|
39
|
+
return
|
|
40
|
+
|
|
41
|
+
hint = get_install_hint(name, registry=registry)
|
|
42
|
+
raise ImportError(
|
|
43
|
+
f"Framework '{name}' was requested but is not installed.\n"
|
|
44
|
+
f"Install it with:\n {hint}"
|
|
45
|
+
)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""C13 shim: sandbox backends moved to ``praisonai_sandbox``.
|
|
2
|
+
|
|
3
|
+
Old import paths (``praisonai.sandbox``, ``praisonai.sandbox.docker``) keep working
|
|
4
|
+
and resolve to the same module objects as ``praisonai_sandbox.*``.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from praisonai._bootstrap import ensure_praisonai_sandbox
|
|
8
|
+
|
|
9
|
+
ensure_praisonai_sandbox()
|
|
10
|
+
|
|
11
|
+
from praisonai.cli._shim import alias_package
|
|
12
|
+
|
|
13
|
+
alias_package("praisonai.sandbox", "praisonai_sandbox")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""C13 shim: ``praisonai.sandbox._registry`` → ``praisonai_sandbox._registry``."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
from praisonai._bootstrap import ensure_praisonai_sandbox
|
|
8
|
+
|
|
9
|
+
ensure_praisonai_sandbox()
|
|
10
|
+
|
|
11
|
+
import praisonai_sandbox._registry as _reg
|
|
12
|
+
|
|
13
|
+
sys.modules[__name__] = _reg
|