PraisonAI 4.6.142__tar.gz → 4.6.143__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.142 → praisonai-4.6.143}/PKG-INFO +4 -4
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/PKG-INFO +4 -4
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/SOURCES.txt +0 -1
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/requires.txt +3 -3
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/auto.py +111 -44
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/workflow_commands.py +19 -1
- praisonai-4.6.143/praisonai/version.py +1 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/pyproject.toml +3 -3
- praisonai-4.6.142/praisonai/_lockmap.py +0 -143
- praisonai-4.6.142/praisonai/version.py +0 -1
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/README.md +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/__main__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_bootstrap.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_logging.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/agents_generator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/api/call.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/benchmark.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/cdp_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/cdp_utils.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/diagnostics.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/launcher.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/playwright_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/profiling.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/protocol.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/report.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/sessions.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/browser/video.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/config/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/config/schema.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/config/validator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/_unified_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/agents.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/capabilities.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/knowledge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/memory.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/prompts.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/resources.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/auth/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/auth/api_key.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/auth/oauth.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/auth/oidc.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/auth/scopes.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/elicitation.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/icons.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/recipe_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/recipe_cli.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/sampling.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/tasks.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/tool_index.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/transports/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/transports/http_stream.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/mcp_server/transports/stdio.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/profiler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/push/client.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/_compat.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/_shell.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/docker.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/e2b.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/sandbox/subprocess.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/setup.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/_ollama.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/grader.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/hook.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/models.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/orchestrator.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/agents/storage.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/llm/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train/llm/trainer.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/callbacks.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/setup.cfg +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_basic.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_recipe.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_registry.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_runner.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.142 → praisonai-4.6.143}/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.143
|
|
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,9 +11,9 @@ 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.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.146
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.42
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.27
|
|
17
17
|
Requires-Dist: python-dotenv>=0.19.0
|
|
18
18
|
Requires-Dist: litellm<2,>=1.83.14
|
|
19
19
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.143
|
|
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,9 +11,9 @@ 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.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.146
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.42
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.27
|
|
17
17
|
Requires-Dist: python-dotenv>=0.19.0
|
|
18
18
|
Requires-Dist: litellm<2,>=1.83.14
|
|
19
19
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -10,7 +10,7 @@ This module uses FULL LAZY LOADING for all heavy dependencies:
|
|
|
10
10
|
|
|
11
11
|
This ensures minimal import-time overhead.
|
|
12
12
|
"""
|
|
13
|
-
from typing import Any, Dict, List, Optional, Type, TypeVar
|
|
13
|
+
from typing import Any, Awaitable, Dict, List, Optional, Type, TypeVar
|
|
14
14
|
import os
|
|
15
15
|
import json
|
|
16
16
|
import asyncio
|
|
@@ -620,7 +620,61 @@ class BaseAutoGenerator:
|
|
|
620
620
|
ImportError: If neither litellm nor openai is installed
|
|
621
621
|
"""
|
|
622
622
|
return await self._completion_impl(response_model, messages, is_async=True, **kwargs)
|
|
623
|
-
|
|
623
|
+
|
|
624
|
+
async def _structured_completion_async(
|
|
625
|
+
self, response_model: Type[T], messages: List[Dict], *, is_async: bool, **kwargs
|
|
626
|
+
) -> T:
|
|
627
|
+
"""Await the structured-completion ladder with an explicit provider path.
|
|
628
|
+
|
|
629
|
+
Lets a single generation coroutine be driven either through the async
|
|
630
|
+
provider clients (``is_async=True``, from ``agenerate()``) or the sync
|
|
631
|
+
provider clients (``is_async=False``, from the sync ``generate()``
|
|
632
|
+
bridge). This preserves the historical behavior where a sync
|
|
633
|
+
``generate()`` call used the blocking sync client/network stack, while
|
|
634
|
+
still routing both entry points through one shared body.
|
|
635
|
+
"""
|
|
636
|
+
return await self._completion_impl(
|
|
637
|
+
response_model, messages, is_async=is_async, **kwargs
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
def _run_coro_sync(self, coro: Awaitable[T]) -> T:
|
|
641
|
+
"""Drive an async coroutine to completion from a sync caller.
|
|
642
|
+
|
|
643
|
+
Single source of truth so the sync ``generate()`` twins can delegate to
|
|
644
|
+
their ``agenerate()`` implementation instead of duplicating the body.
|
|
645
|
+
|
|
646
|
+
Mirrors the running-loop handling in ``_structured_completion``: when no
|
|
647
|
+
event loop is running we use the shared async bridge; when a loop is
|
|
648
|
+
already running (FastAPI handler, Jupyter, async test) ``run_sync``
|
|
649
|
+
would raise, so we drive the coroutine on a dedicated worker thread with
|
|
650
|
+
its own loop instead.
|
|
651
|
+
"""
|
|
652
|
+
try:
|
|
653
|
+
asyncio.get_running_loop()
|
|
654
|
+
except RuntimeError:
|
|
655
|
+
running_loop = False
|
|
656
|
+
else:
|
|
657
|
+
running_loop = True
|
|
658
|
+
|
|
659
|
+
if not running_loop:
|
|
660
|
+
return run_sync(coro)
|
|
661
|
+
|
|
662
|
+
result: List[Any] = []
|
|
663
|
+
error: List[BaseException] = []
|
|
664
|
+
|
|
665
|
+
def _runner() -> None:
|
|
666
|
+
try:
|
|
667
|
+
result.append(asyncio.run(coro))
|
|
668
|
+
except BaseException as e: # noqa: BLE001 - re-raised on caller thread
|
|
669
|
+
error.append(e)
|
|
670
|
+
|
|
671
|
+
thread = threading.Thread(target=_runner, name="praisonai-sync-generate")
|
|
672
|
+
thread.start()
|
|
673
|
+
thread.join()
|
|
674
|
+
if error:
|
|
675
|
+
raise error[0]
|
|
676
|
+
return result[0]
|
|
677
|
+
|
|
624
678
|
@staticmethod
|
|
625
679
|
def get_available_tools() -> List[str]:
|
|
626
680
|
"""Return list of available tools for agent assignment."""
|
|
@@ -850,18 +904,8 @@ class AutoGenerator(BaseAutoGenerator):
|
|
|
850
904
|
path = generator.generate()
|
|
851
905
|
_rich_print(path)
|
|
852
906
|
"""
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
messages=[
|
|
856
|
-
{"role": "system", "content": "You are a helpful assistant designed to output complex team structures."},
|
|
857
|
-
{"role": "user", "content": self.get_user_content()}
|
|
858
|
-
]
|
|
859
|
-
)
|
|
860
|
-
json_data = json.loads(response.model_dump_json())
|
|
861
|
-
self.convert_and_save(json_data, merge=merge)
|
|
862
|
-
full_path = os.path.abspath(self.agent_file)
|
|
863
|
-
return full_path
|
|
864
|
-
|
|
907
|
+
return self._run_coro_sync(self._agenerate_impl(merge=merge, is_async=False))
|
|
908
|
+
|
|
865
909
|
async def agenerate(self, merge=False):
|
|
866
910
|
"""
|
|
867
911
|
Async version of generate() - generates a team structure for the specified topic.
|
|
@@ -880,12 +924,23 @@ class AutoGenerator(BaseAutoGenerator):
|
|
|
880
924
|
path = await gen.agenerate()
|
|
881
925
|
_rich_print(path)
|
|
882
926
|
"""
|
|
883
|
-
|
|
927
|
+
return await self._agenerate_impl(merge=merge, is_async=True)
|
|
928
|
+
|
|
929
|
+
async def _agenerate_impl(self, merge=False, *, is_async: bool):
|
|
930
|
+
"""Shared generation body for both sync and async entry points.
|
|
931
|
+
|
|
932
|
+
The only divergence is ``is_async``, which selects the async provider
|
|
933
|
+
clients (``agenerate()``) or the blocking sync clients driven on the
|
|
934
|
+
bridge (sync ``generate()``), preserving the historical sync provider
|
|
935
|
+
path while keeping merge/save/path-resolution logic in one place.
|
|
936
|
+
"""
|
|
937
|
+
response = await self._structured_completion_async(
|
|
884
938
|
response_model=_get_team_models()['TeamStructure'],
|
|
885
939
|
messages=[
|
|
886
940
|
{"role": "system", "content": "You are a helpful assistant designed to output complex team structures."},
|
|
887
941
|
{"role": "user", "content": self.get_user_content()}
|
|
888
|
-
]
|
|
942
|
+
],
|
|
943
|
+
is_async=is_async,
|
|
889
944
|
)
|
|
890
945
|
json_data = json.loads(response.model_dump_json())
|
|
891
946
|
self.convert_and_save(json_data, merge=merge)
|
|
@@ -1354,20 +1409,10 @@ Respond with:
|
|
|
1354
1409
|
Returns:
|
|
1355
1410
|
Path to the generated workflow file
|
|
1356
1411
|
"""
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
messages=[
|
|
1360
|
-
{"role": "system", "content": "You are a helpful assistant that designs workflow structures."},
|
|
1361
|
-
{"role": "user", "content": self._get_prompt(pattern)}
|
|
1362
|
-
]
|
|
1412
|
+
return self._run_coro_sync(
|
|
1413
|
+
self._agenerate_impl(pattern=pattern, merge=merge, is_async=False)
|
|
1363
1414
|
)
|
|
1364
|
-
|
|
1365
|
-
json_data = json.loads(response.model_dump_json())
|
|
1366
|
-
|
|
1367
|
-
if merge and os.path.exists(self.workflow_file):
|
|
1368
|
-
return self._save_workflow(self.merge_with_existing_workflow(json_data), pattern)
|
|
1369
|
-
return self._save_workflow(json_data, pattern)
|
|
1370
|
-
|
|
1415
|
+
|
|
1371
1416
|
async def agenerate(self, pattern: str = "sequential", merge: bool = False) -> str:
|
|
1372
1417
|
"""
|
|
1373
1418
|
Async version of generate() - Generate a workflow YAML file.
|
|
@@ -1380,12 +1425,25 @@ Respond with:
|
|
|
1380
1425
|
Returns:
|
|
1381
1426
|
Path to the generated workflow file
|
|
1382
1427
|
"""
|
|
1383
|
-
|
|
1428
|
+
return await self._agenerate_impl(pattern=pattern, merge=merge, is_async=True)
|
|
1429
|
+
|
|
1430
|
+
async def _agenerate_impl(
|
|
1431
|
+
self, pattern: str = "sequential", merge: bool = False, *, is_async: bool
|
|
1432
|
+
) -> str:
|
|
1433
|
+
"""Shared generation body for both sync and async entry points.
|
|
1434
|
+
|
|
1435
|
+
``is_async`` selects the async provider clients (``agenerate()``) or the
|
|
1436
|
+
blocking sync clients driven on the bridge (sync ``generate()``),
|
|
1437
|
+
preserving the historical sync provider path while keeping merge/save
|
|
1438
|
+
logic in one place.
|
|
1439
|
+
"""
|
|
1440
|
+
response = await self._structured_completion_async(
|
|
1384
1441
|
response_model=_get_workflow_models()['WorkflowStructure'],
|
|
1385
1442
|
messages=[
|
|
1386
1443
|
{"role": "system", "content": "You are a helpful assistant that designs workflow structures."},
|
|
1387
1444
|
{"role": "user", "content": self._get_prompt(pattern)}
|
|
1388
|
-
]
|
|
1445
|
+
],
|
|
1446
|
+
is_async=is_async,
|
|
1389
1447
|
)
|
|
1390
1448
|
|
|
1391
1449
|
json_data = json.loads(response.model_dump_json())
|
|
@@ -1708,18 +1766,12 @@ class JobWorkflowAutoGenerator(BaseAutoGenerator):
|
|
|
1708
1766
|
Returns:
|
|
1709
1767
|
Path to the generated workflow file
|
|
1710
1768
|
"""
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
messages=[
|
|
1716
|
-
{"role": "system", "content": "You are a helpful assistant that designs job workflow structures with AI agent steps."},
|
|
1717
|
-
{"role": "user", "content": prompt}
|
|
1718
|
-
]
|
|
1769
|
+
return self._run_coro_sync(
|
|
1770
|
+
self._agenerate_impl(
|
|
1771
|
+
include_judge=include_judge, include_approve=include_approve, is_async=False
|
|
1772
|
+
)
|
|
1719
1773
|
)
|
|
1720
|
-
|
|
1721
|
-
return self._save_workflow(response)
|
|
1722
|
-
|
|
1774
|
+
|
|
1723
1775
|
async def agenerate(self, include_judge: bool = True, include_approve: bool = False) -> str:
|
|
1724
1776
|
"""
|
|
1725
1777
|
Async version of generate() - Generate a job workflow YAML file.
|
|
@@ -1731,14 +1783,29 @@ class JobWorkflowAutoGenerator(BaseAutoGenerator):
|
|
|
1731
1783
|
Returns:
|
|
1732
1784
|
Path to the generated workflow file
|
|
1733
1785
|
"""
|
|
1786
|
+
return await self._agenerate_impl(
|
|
1787
|
+
include_judge=include_judge, include_approve=include_approve, is_async=True
|
|
1788
|
+
)
|
|
1789
|
+
|
|
1790
|
+
async def _agenerate_impl(
|
|
1791
|
+
self, include_judge: bool = True, include_approve: bool = False, *, is_async: bool
|
|
1792
|
+
) -> str:
|
|
1793
|
+
"""Shared generation body for both sync and async entry points.
|
|
1794
|
+
|
|
1795
|
+
``is_async`` selects the async provider clients (``agenerate()``) or the
|
|
1796
|
+
blocking sync clients driven on the bridge (sync ``generate()``),
|
|
1797
|
+
preserving the historical sync provider path while keeping prompt/save
|
|
1798
|
+
logic in one place.
|
|
1799
|
+
"""
|
|
1734
1800
|
prompt = self._get_prompt(include_judge, include_approve)
|
|
1735
1801
|
|
|
1736
|
-
response = await self.
|
|
1802
|
+
response = await self._structured_completion_async(
|
|
1737
1803
|
response_model=_get_job_workflow_models()['JobWorkflowStructure'],
|
|
1738
1804
|
messages=[
|
|
1739
1805
|
{"role": "system", "content": "You are a helpful assistant that designs job workflow structures with AI agent steps."},
|
|
1740
1806
|
{"role": "user", "content": prompt}
|
|
1741
|
-
]
|
|
1807
|
+
],
|
|
1808
|
+
is_async=is_async,
|
|
1742
1809
|
)
|
|
1743
1810
|
|
|
1744
1811
|
return self._save_workflow(response)
|
|
@@ -398,9 +398,27 @@ def _run_yaml_workflow(self, yaml_file: str, action_args: list, variables: dict
|
|
|
398
398
|
except ImportError:
|
|
399
399
|
print("[yellow]Warning: Context management not available[/yellow]")
|
|
400
400
|
|
|
401
|
+
# Determine workflow input: CLI --var input takes precedence, then the
|
|
402
|
+
# YAML top-level `input:` field (stored on workflow.default_input).
|
|
403
|
+
# An explicit `--var input=` (empty) is respected and NOT replaced by
|
|
404
|
+
# the default; only an absent input key falls back to default_input.
|
|
405
|
+
default_input = getattr(workflow, "default_input", "") or ""
|
|
406
|
+
input_overridden = bool(parsed_vars) and "input" in parsed_vars
|
|
407
|
+
start_input = parsed_vars["input"] if input_overridden else default_input
|
|
408
|
+
|
|
409
|
+
# Seed the runtime `{{input}}` variable when it is not overridden via --var
|
|
410
|
+
if start_input and not input_overridden:
|
|
411
|
+
workflow.variables.setdefault("input", start_input)
|
|
412
|
+
|
|
413
|
+
if start_input:
|
|
414
|
+
preview = start_input[:80] + ("..." if len(start_input) > 80 else "")
|
|
415
|
+
print(f"[cyan]Workflow input: {preview}[/cyan]")
|
|
416
|
+
else:
|
|
417
|
+
print("[yellow]Warning: no workflow input — {{input}} will be empty unless --var input=... is set[/yellow]")
|
|
418
|
+
|
|
401
419
|
# Execute
|
|
402
420
|
print("\n[bold]Executing workflow...[/bold]\n")
|
|
403
|
-
result = workflow.start(
|
|
421
|
+
result = workflow.start(start_input)
|
|
404
422
|
|
|
405
423
|
if result.get("status") == "completed":
|
|
406
424
|
print("\n[green]✅ Workflow completed successfully![/green]")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.6.143"
|
|
@@ -12,9 +12,9 @@ dependencies = [
|
|
|
12
12
|
"rich>=13.7",
|
|
13
13
|
"markdown>=3.5",
|
|
14
14
|
"pyparsing>=3.0.0",
|
|
15
|
-
"praisonaiagents>=1.6.
|
|
16
|
-
"praisonai-code>=0.0.
|
|
17
|
-
"praisonai-bot>=0.0.
|
|
15
|
+
"praisonaiagents>=1.6.146",
|
|
16
|
+
"praisonai-code>=0.0.42",
|
|
17
|
+
"praisonai-bot>=0.0.27",
|
|
18
18
|
"python-dotenv>=0.19.0",
|
|
19
19
|
"litellm>=1.83.14,<2",
|
|
20
20
|
"PyYAML>=6.0",
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
"""Per-key asyncio.Lock map with bounded LRU eviction and optional TTL.
|
|
2
|
-
|
|
3
|
-
Use this anywhere you need 'a lock per (user_id|chat_id|key)' instead of
|
|
4
|
-
re-implementing the dict-of-Lock pattern.
|
|
5
|
-
"""
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
import asyncio
|
|
8
|
-
import threading
|
|
9
|
-
import time
|
|
10
|
-
import weakref
|
|
11
|
-
from collections import OrderedDict
|
|
12
|
-
from typing import Hashable, Dict
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class LockMap:
|
|
16
|
-
"""Asyncio-safe per-key asyncio.Lock map with automatic cleanup.
|
|
17
|
-
|
|
18
|
-
Provides a lock per key with LRU eviction and TTL-based cleanup to prevent
|
|
19
|
-
unbounded memory growth in long-running applications.
|
|
20
|
-
|
|
21
|
-
Buckets are keyed by event loop (one loop per OS thread). Structural
|
|
22
|
-
mutations of the bucket/loop maps are guarded by a ``threading.Lock`` so
|
|
23
|
-
the same instance can be safely shared across multiple OS threads, each
|
|
24
|
-
running its own event loop. Per-loop buckets are only ever touched from
|
|
25
|
-
their owning loop, so intra-loop access remains lock-free.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
def __init__(self, *, max_entries: int = 10_000, ttl_seconds: float = 3600.0):
|
|
29
|
-
"""Initialize LockMap with bounds.
|
|
30
|
-
|
|
31
|
-
Args:
|
|
32
|
-
max_entries: Maximum number of locks to cache (LRU eviction)
|
|
33
|
-
ttl_seconds: Time-to-live for unused locks in seconds
|
|
34
|
-
"""
|
|
35
|
-
# Bucket locks by event loop to avoid cross-loop issues
|
|
36
|
-
self._buckets: Dict[int, "OrderedDict[Hashable, tuple[asyncio.Lock, float]]"] = {}
|
|
37
|
-
self._loop_refs: Dict[int, weakref.ref] = {}
|
|
38
|
-
# Guards structural mutations of _buckets / _loop_refs across OS threads.
|
|
39
|
-
self._struct_lock = threading.Lock()
|
|
40
|
-
self._max = max_entries
|
|
41
|
-
self._ttl = ttl_seconds
|
|
42
|
-
|
|
43
|
-
def get(self, key: Hashable) -> asyncio.Lock:
|
|
44
|
-
"""Get or create a lock for the given key.
|
|
45
|
-
|
|
46
|
-
Args:
|
|
47
|
-
key: The key to get a lock for
|
|
48
|
-
|
|
49
|
-
Returns:
|
|
50
|
-
asyncio.Lock for the key
|
|
51
|
-
"""
|
|
52
|
-
# Get the current running loop
|
|
53
|
-
loop = asyncio.get_running_loop()
|
|
54
|
-
loop_id = id(loop)
|
|
55
|
-
|
|
56
|
-
# Fast path: a bucket for this loop already exists. The bucket is only
|
|
57
|
-
# ever mutated by its owning loop's thread, so a single dict read is
|
|
58
|
-
# safe under CPython's GIL without taking the cross-thread struct lock.
|
|
59
|
-
bucket = self._buckets.get(loop_id)
|
|
60
|
-
if bucket is None:
|
|
61
|
-
# Slow path: structural mutation shared across threads needs the lock.
|
|
62
|
-
with self._struct_lock:
|
|
63
|
-
# Clean up dead loops (only on first-touch to avoid per-call cost)
|
|
64
|
-
self._cleanup_dead_loops_locked()
|
|
65
|
-
|
|
66
|
-
# Re-check after acquiring the lock (another thread may have raced).
|
|
67
|
-
bucket = self._buckets.get(loop_id)
|
|
68
|
-
if bucket is None:
|
|
69
|
-
bucket = OrderedDict()
|
|
70
|
-
self._buckets[loop_id] = bucket
|
|
71
|
-
self._loop_refs[loop_id] = weakref.ref(loop)
|
|
72
|
-
|
|
73
|
-
# From here on only this loop's owning thread touches the bucket.
|
|
74
|
-
now = time.monotonic()
|
|
75
|
-
|
|
76
|
-
entry = bucket.get(key)
|
|
77
|
-
if entry is not None:
|
|
78
|
-
lock, _ = entry
|
|
79
|
-
# Move to end (most recently used) and update timestamp
|
|
80
|
-
bucket.move_to_end(key)
|
|
81
|
-
bucket[key] = (lock, now)
|
|
82
|
-
return lock
|
|
83
|
-
|
|
84
|
-
# Create new lock + insert + LRU/TTL evict
|
|
85
|
-
lock = asyncio.Lock()
|
|
86
|
-
bucket[key] = (lock, now)
|
|
87
|
-
self._evict_stale_from_bucket(bucket, now)
|
|
88
|
-
return lock
|
|
89
|
-
|
|
90
|
-
def _evict_stale_from_bucket(self, bucket: "OrderedDict", now: float) -> None:
|
|
91
|
-
"""Evict expired and excess entries from a bucket."""
|
|
92
|
-
# Expire by TTL (only if not currently locked)
|
|
93
|
-
expired = [
|
|
94
|
-
k for k, (lock, ts) in bucket.items()
|
|
95
|
-
if (now - ts) > self._ttl and not lock.locked()
|
|
96
|
-
]
|
|
97
|
-
for k in expired:
|
|
98
|
-
bucket.pop(k, None)
|
|
99
|
-
|
|
100
|
-
# Cap by LRU (don't evict locks currently held)
|
|
101
|
-
seen = set()
|
|
102
|
-
while len(bucket) > self._max:
|
|
103
|
-
k, (lock, _) = next(iter(bucket.items()))
|
|
104
|
-
if k in seen:
|
|
105
|
-
# All remaining locks are held; give up to avoid infinite loop
|
|
106
|
-
break
|
|
107
|
-
if lock.locked():
|
|
108
|
-
# Don't evict locks currently held; bump them to the end
|
|
109
|
-
bucket.move_to_end(k)
|
|
110
|
-
seen.add(k)
|
|
111
|
-
# Continue trying to evict other unlocked entries
|
|
112
|
-
continue
|
|
113
|
-
bucket.popitem(last=False)
|
|
114
|
-
break
|
|
115
|
-
|
|
116
|
-
def _cleanup_dead_loops_locked(self) -> None:
|
|
117
|
-
"""Remove buckets for event loops that no longer exist.
|
|
118
|
-
|
|
119
|
-
Caller must hold ``self._struct_lock``.
|
|
120
|
-
"""
|
|
121
|
-
dead_loops = [
|
|
122
|
-
loop_id
|
|
123
|
-
for loop_id, ref in self._loop_refs.items()
|
|
124
|
-
if (loop := ref()) is None or loop.is_closed()
|
|
125
|
-
]
|
|
126
|
-
for loop_id in dead_loops:
|
|
127
|
-
self._loop_refs.pop(loop_id, None)
|
|
128
|
-
self._buckets.pop(loop_id, None)
|
|
129
|
-
|
|
130
|
-
def drop(self, key: Hashable) -> None:
|
|
131
|
-
"""Manually remove a lock for the given key."""
|
|
132
|
-
# Get the current running loop
|
|
133
|
-
loop = asyncio.get_running_loop()
|
|
134
|
-
loop_id = id(loop)
|
|
135
|
-
with self._struct_lock:
|
|
136
|
-
bucket = self._buckets.get(loop_id)
|
|
137
|
-
if bucket is not None:
|
|
138
|
-
bucket.pop(key, None)
|
|
139
|
-
|
|
140
|
-
def size(self) -> int:
|
|
141
|
-
"""Return current number of cached locks across all buckets."""
|
|
142
|
-
with self._struct_lock:
|
|
143
|
-
return sum(len(bucket) for bucket in self._buckets.values())
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "4.6.142"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|