PraisonAI 4.6.146__tar.gz → 4.6.148__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.146 → praisonai-4.6.148}/PKG-INFO +6 -4
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/PKG-INFO +6 -4
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/SOURCES.txt +0 -9
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/requires.txt +5 -3
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_bootstrap.py +16 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/auto.py +127 -69
- praisonai-4.6.148/praisonai/cli/commands/train.py +11 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/configuration/config.schema.json +1 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/inc/models.py +79 -1
- praisonai-4.6.148/praisonai/setup/setup_conda_env.py +14 -0
- praisonai-4.6.148/praisonai/train/__init__.py +14 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/train.py +5 -4
- praisonai-4.6.148/praisonai/train_vision.py +14 -0
- praisonai-4.6.148/praisonai/upload_vision.py +14 -0
- praisonai-4.6.148/praisonai/version.py +1 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/pyproject.toml +9 -4
- praisonai-4.6.146/praisonai/cli/commands/train.py +0 -613
- praisonai-4.6.146/praisonai/setup/setup_conda_env.py +0 -25
- praisonai-4.6.146/praisonai/train/__init__.py +0 -77
- praisonai-4.6.146/praisonai/train/_ollama.py +0 -97
- praisonai-4.6.146/praisonai/train/agents/__init__.py +0 -94
- praisonai-4.6.146/praisonai/train/agents/grader.py +0 -63
- praisonai-4.6.146/praisonai/train/agents/hook.py +0 -320
- praisonai-4.6.146/praisonai/train/agents/models.py +0 -328
- praisonai-4.6.146/praisonai/train/agents/orchestrator.py +0 -394
- praisonai-4.6.146/praisonai/train/agents/storage.py +0 -282
- praisonai-4.6.146/praisonai/train/llm/__init__.py +0 -23
- praisonai-4.6.146/praisonai/train/llm/trainer.py +0 -587
- praisonai-4.6.146/praisonai/train_vision.py +0 -333
- praisonai-4.6.146/praisonai/upload_vision.py +0 -141
- praisonai-4.6.146/praisonai/version.py +0 -1
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/README.md +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/__main__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_logging.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/agents_generator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/api/call.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/benchmark.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/cdp_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/cdp_utils.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/diagnostics.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/launcher.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/playwright_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/profiling.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/protocol.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/report.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/sessions.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/browser/video.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/config/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/config/schema.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/config/validator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/_unified_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/agents.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/capabilities.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/knowledge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/memory.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/prompts.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/resources.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/auth/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/auth/api_key.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/auth/oauth.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/auth/oidc.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/auth/scopes.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/elicitation.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/icons.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/recipe_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/recipe_cli.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/sampling.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/tasks.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/tool_index.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/transports/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/transports/http_stream.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/mcp_server/transports/stdio.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/profiler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/push/client.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/_compat.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/_shell.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/docker.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/e2b.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/sandbox/subprocess.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/setup.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/callbacks.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/setup.cfg +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_basic.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_recipe.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_registry.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_runner.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.146 → praisonai-4.6.148}/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.148
|
|
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,10 @@ 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.151
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.47
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.32
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.3
|
|
17
18
|
Requires-Dist: python-dotenv>=0.19.0
|
|
18
19
|
Requires-Dist: litellm<2,>=1.83.14
|
|
19
20
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -81,6 +82,7 @@ Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
|
|
|
81
82
|
Requires-Dist: pyngrok>=1.4.0; extra == "call"
|
|
82
83
|
Requires-Dist: rich; extra == "call"
|
|
83
84
|
Provides-Extra: train
|
|
85
|
+
Requires-Dist: praisonai-train[llm]; extra == "train"
|
|
84
86
|
Provides-Extra: crewai
|
|
85
87
|
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
86
88
|
Requires-Dist: praisonai-tools>=0.1.0; extra == "crewai"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.148
|
|
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,10 @@ 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.151
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.47
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.32
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.3
|
|
17
18
|
Requires-Dist: python-dotenv>=0.19.0
|
|
18
19
|
Requires-Dist: litellm<2,>=1.83.14
|
|
19
20
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -81,6 +82,7 @@ Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
|
|
|
81
82
|
Requires-Dist: pyngrok>=1.4.0; extra == "call"
|
|
82
83
|
Requires-Dist: rich; extra == "call"
|
|
83
84
|
Provides-Extra: train
|
|
85
|
+
Requires-Dist: praisonai-train[llm]; extra == "train"
|
|
84
86
|
Provides-Extra: crewai
|
|
85
87
|
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
86
88
|
Requires-Dist: praisonai-tools>=0.1.0; extra == "crewai"
|
|
@@ -598,15 +598,6 @@ praisonai/tools/kanban_tools.py
|
|
|
598
598
|
praisonai/tools/multiedit.py
|
|
599
599
|
praisonai/tools/skill_manage.py
|
|
600
600
|
praisonai/train/__init__.py
|
|
601
|
-
praisonai/train/_ollama.py
|
|
602
|
-
praisonai/train/agents/__init__.py
|
|
603
|
-
praisonai/train/agents/grader.py
|
|
604
|
-
praisonai/train/agents/hook.py
|
|
605
|
-
praisonai/train/agents/models.py
|
|
606
|
-
praisonai/train/agents/orchestrator.py
|
|
607
|
-
praisonai/train/agents/storage.py
|
|
608
|
-
praisonai/train/llm/__init__.py
|
|
609
|
-
praisonai/train/llm/trainer.py
|
|
610
601
|
praisonai/ui/_aiui_datastore.py
|
|
611
602
|
praisonai/ui/_external_agents.py
|
|
612
603
|
praisonai/ui/callbacks.py
|
|
@@ -1,9 +1,10 @@
|
|
|
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.
|
|
4
|
+
praisonaiagents>=1.6.151
|
|
5
|
+
praisonai-code>=0.0.47
|
|
6
|
+
praisonai-bot>=0.0.32
|
|
7
|
+
praisonai-train>=0.0.3
|
|
7
8
|
python-dotenv>=0.19.0
|
|
8
9
|
litellm<2,>=1.83.14
|
|
9
10
|
PyYAML>=6.0
|
|
@@ -213,6 +214,7 @@ sandlock>=0.1.0
|
|
|
213
214
|
asyncssh>=2.14.0
|
|
214
215
|
|
|
215
216
|
[train]
|
|
217
|
+
praisonai-train[llm]
|
|
216
218
|
|
|
217
219
|
[turso]
|
|
218
220
|
libsql-experimental>=0.0.50
|
|
@@ -43,3 +43,19 @@ def ensure_praisonai_bot() -> None:
|
|
|
43
43
|
root = str(bot_src)
|
|
44
44
|
if root not in sys.path:
|
|
45
45
|
sys.path.insert(0, root)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def ensure_praisonai_train() -> None:
|
|
49
|
+
"""Ensure ``praisonai_train`` can be imported in monorepo dev layouts."""
|
|
50
|
+
try:
|
|
51
|
+
import praisonai_train # noqa: F401
|
|
52
|
+
return
|
|
53
|
+
except ImportError:
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
wrapper_src = Path(__file__).resolve().parents[1] # .../src/praisonai
|
|
57
|
+
train_src = wrapper_src.parent / "praisonai-train"
|
|
58
|
+
if (train_src / "praisonai_train").is_dir():
|
|
59
|
+
root = str(train_src)
|
|
60
|
+
if root not in sys.path:
|
|
61
|
+
sys.path.insert(0, root)
|
|
@@ -367,65 +367,64 @@ class BaseAutoGenerator:
|
|
|
367
367
|
# Resolve LLM endpoint configuration from environment variables
|
|
368
368
|
from praisonai.llm.config import build_config_list
|
|
369
369
|
self.config_list = config_list or build_config_list(include_api_type=False)
|
|
370
|
-
self.
|
|
371
|
-
self._async_openai_client = None # lazy, per-instance async client
|
|
370
|
+
self._core_client = None # lazy, per-instance core OpenAIClient
|
|
372
371
|
self._client_lock = threading.Lock()
|
|
373
|
-
|
|
374
|
-
def
|
|
375
|
-
"""Get or create the
|
|
372
|
+
|
|
373
|
+
def _get_core_client(self):
|
|
374
|
+
"""Get or create the core-owned ``OpenAIClient`` for this instance.
|
|
375
|
+
|
|
376
|
+
The OpenAI leg of the structured-completion ladder is owned by the core
|
|
377
|
+
SDK (``praisonaiagents.llm.openai_client.OpenAIClient``), which manages
|
|
378
|
+
sync/async client construction, lifecycle, and the
|
|
379
|
+
``beta.chat.completions.parse`` structured-output path. The wrapper
|
|
380
|
+
delegates to it rather than maintaining a parallel copy.
|
|
376
381
|
|
|
377
382
|
Lazy-init AND snapshot the client under the same lock so the returned
|
|
378
|
-
local reference survives a concurrent close() that nulls the
|
|
379
|
-
closing the shutdown-during-request race
|
|
383
|
+
local reference survives a concurrent close()/aclose() that nulls the
|
|
384
|
+
attribute, closing the shutdown-during-request race.
|
|
380
385
|
"""
|
|
381
386
|
with self._client_lock:
|
|
382
|
-
client = self.
|
|
387
|
+
client = self._core_client
|
|
383
388
|
if client is None:
|
|
384
389
|
try:
|
|
385
|
-
from
|
|
390
|
+
from praisonaiagents.llm.openai_client import OpenAIClient
|
|
386
391
|
except ImportError as e:
|
|
387
392
|
raise ImportError("Install with: pip install openai") from e
|
|
388
393
|
cfg = self.config_list[0]
|
|
389
|
-
client = self.
|
|
394
|
+
client = self._core_client = OpenAIClient(
|
|
390
395
|
api_key=cfg.get("api_key") or os.environ.get("OPENAI_API_KEY"),
|
|
391
396
|
base_url=cfg.get("base_url"),
|
|
392
397
|
)
|
|
393
398
|
return client
|
|
394
399
|
|
|
395
400
|
def close(self):
|
|
396
|
-
"""Close the
|
|
401
|
+
"""Close the core OpenAI client if it exists."""
|
|
397
402
|
if not hasattr(self, '_client_lock'):
|
|
398
403
|
return # Object was never fully initialized
|
|
399
404
|
# Snapshot under the lock, close OUTSIDE it, and only null the attribute
|
|
400
405
|
# after a successful close so a failed close can be retried.
|
|
401
406
|
with self._client_lock:
|
|
402
|
-
client = getattr(self, '
|
|
407
|
+
client = getattr(self, '_core_client', None)
|
|
403
408
|
if client is not None:
|
|
404
409
|
client.close()
|
|
405
410
|
with self._client_lock:
|
|
406
|
-
if getattr(self, '
|
|
407
|
-
self.
|
|
408
|
-
|
|
411
|
+
if getattr(self, '_core_client', None) is client:
|
|
412
|
+
self._core_client = None
|
|
413
|
+
|
|
409
414
|
async def aclose(self):
|
|
410
|
-
"""Close
|
|
415
|
+
"""Close the core OpenAI client if it exists."""
|
|
411
416
|
if not hasattr(self, '_client_lock'):
|
|
412
417
|
return # Object was never fully initialized
|
|
413
|
-
# Snapshot under the lock, close OUTSIDE it, and only null
|
|
414
|
-
# after
|
|
418
|
+
# Snapshot under the lock, close OUTSIDE it, and only null the attribute
|
|
419
|
+
# after a successful close so a failed close can be retried.
|
|
415
420
|
with self._client_lock:
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
await asyncio.to_thread(sync_client.close)
|
|
420
|
-
with self._client_lock:
|
|
421
|
-
if getattr(self, '_openai_client', None) is sync_client:
|
|
422
|
-
self._openai_client = None
|
|
423
|
-
if async_client is not None:
|
|
424
|
-
await async_client.close()
|
|
421
|
+
client = getattr(self, '_core_client', None)
|
|
422
|
+
if client is not None:
|
|
423
|
+
await client.aclose()
|
|
425
424
|
with self._client_lock:
|
|
426
|
-
if getattr(self, '
|
|
427
|
-
self.
|
|
428
|
-
|
|
425
|
+
if getattr(self, '_core_client', None) is client:
|
|
426
|
+
self._core_client = None
|
|
427
|
+
|
|
429
428
|
def __enter__(self):
|
|
430
429
|
return self
|
|
431
430
|
|
|
@@ -440,27 +439,73 @@ class BaseAutoGenerator:
|
|
|
440
439
|
await self.aclose()
|
|
441
440
|
return False
|
|
442
441
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
442
|
+
async def _structured_via_registered_provider(
|
|
443
|
+
self,
|
|
444
|
+
response_model: Type[T],
|
|
445
|
+
messages: List[Dict],
|
|
446
|
+
model_name: str,
|
|
447
|
+
**kwargs,
|
|
448
|
+
):
|
|
449
|
+
"""Delegate structured completion to a user-registered LLM provider.
|
|
450
|
+
|
|
451
|
+
Consults ``praisonai.llm.registry`` so a provider registered via
|
|
452
|
+
``register_llm_provider(...)`` becomes reachable from AutoGenerator (and
|
|
453
|
+
every generator inheriting from it). Only providers that are (a) NOT a
|
|
454
|
+
built-in litellm/gateway prefix and (b) opt in by exposing an async
|
|
455
|
+
``generate_structured(response_model, messages, **kwargs)`` are used;
|
|
456
|
+
everything else returns ``None`` so the existing LiteLLM/OpenAI ladder
|
|
457
|
+
runs unchanged. Never raises for registry issues — returns ``None``.
|
|
450
458
|
"""
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
459
|
+
if "/" not in model_name:
|
|
460
|
+
return None
|
|
461
|
+
provider_id = model_name.split("/", 1)[0].lower()
|
|
462
|
+
# Built-in prefixes keep the fast, direct LiteLLM/OpenAI ladder below and
|
|
463
|
+
# are never resolved through the registry — reuse the SAME set as
|
|
464
|
+
# PraisonAIModel._is_registered_provider() so both hot paths agree on
|
|
465
|
+
# which providers are "registered" (a custom "openai"/"anthropic"
|
|
466
|
+
# registration must not hijack the built-in path here).
|
|
467
|
+
try:
|
|
468
|
+
from praisonai.inc.models import _BUILTIN_MODEL_PREFIXES
|
|
469
|
+
except ImportError:
|
|
470
|
+
_BUILTIN_MODEL_PREFIXES = frozenset(
|
|
471
|
+
{"openai", "groq", "cohere", "ollama",
|
|
472
|
+
"anthropic", "google", "openrouter"}
|
|
473
|
+
)
|
|
474
|
+
if provider_id in _BUILTIN_MODEL_PREFIXES:
|
|
475
|
+
return None
|
|
476
|
+
try:
|
|
477
|
+
from praisonai.llm import create_llm_provider, has_llm_provider
|
|
478
|
+
except ImportError:
|
|
479
|
+
return None
|
|
480
|
+
# Forward the selected generator's config so a provider that needs it for
|
|
481
|
+
# generate_structured() authenticates correctly — mirrors what
|
|
482
|
+
# PraisonAIModel passes. Preserve provider-specific fields (e.g.
|
|
483
|
+
# aws_region, timeout, model_kwargs) but drop empty credential entries so
|
|
484
|
+
# a provider's own credential chain is not shadowed by empty values.
|
|
485
|
+
cfg = self.config_list[0]
|
|
486
|
+
provider_config = {
|
|
487
|
+
k: v
|
|
488
|
+
for k, v in cfg.items()
|
|
489
|
+
if k != "model" and not (k in ("api_key", "base_url") and not v)
|
|
490
|
+
}
|
|
491
|
+
try:
|
|
492
|
+
if not has_llm_provider(provider_id):
|
|
493
|
+
return None
|
|
494
|
+
provider = create_llm_provider(
|
|
495
|
+
model_name, config=provider_config or None
|
|
496
|
+
)
|
|
497
|
+
except Exception as exc:
|
|
498
|
+
logger.debug(
|
|
499
|
+
"Registered provider lookup for %r failed (%s); "
|
|
500
|
+
"using built-in completion ladder.", model_name, exc
|
|
501
|
+
)
|
|
502
|
+
return None
|
|
503
|
+
generate_structured = getattr(provider, "generate_structured", None)
|
|
504
|
+
if not callable(generate_structured):
|
|
505
|
+
return None
|
|
506
|
+
return await _maybe_await(
|
|
507
|
+
generate_structured(response_model, messages, **kwargs)
|
|
508
|
+
)
|
|
464
509
|
|
|
465
510
|
async def _completion_impl(
|
|
466
511
|
self,
|
|
@@ -480,6 +525,16 @@ class BaseAutoGenerator:
|
|
|
480
525
|
"""
|
|
481
526
|
model_name = self.config_list[0]['model']
|
|
482
527
|
|
|
528
|
+
# Extension point: if the model resolves to a user-registered provider
|
|
529
|
+
# (praisonai.llm.registry) that opts in by exposing generate_structured,
|
|
530
|
+
# delegate to it so custom providers (e.g. "bedrock/...") take effect
|
|
531
|
+
# here. Built-in providers are untouched and keep the ladder below.
|
|
532
|
+
registered = await self._structured_via_registered_provider(
|
|
533
|
+
response_model, messages, model_name, **kwargs
|
|
534
|
+
)
|
|
535
|
+
if registered is not None:
|
|
536
|
+
return registered
|
|
537
|
+
|
|
483
538
|
# Try LiteLLM first (preferred - supports 100+ providers)
|
|
484
539
|
if is_available("litellm"):
|
|
485
540
|
try:
|
|
@@ -513,27 +568,30 @@ class BaseAutoGenerator:
|
|
|
513
568
|
"falling back to OpenAI SDK.", e
|
|
514
569
|
)
|
|
515
570
|
|
|
516
|
-
# Fallback to OpenAI
|
|
571
|
+
# Fallback to the core-owned OpenAI client (uses beta.chat.completions.parse).
|
|
572
|
+
# Delegating to praisonaiagents.llm.openai_client.OpenAIClient keeps the
|
|
573
|
+
# OpenAI structured-output path in a single, core-owned place instead of a
|
|
574
|
+
# parallel wrapper copy that can silently drift from core.
|
|
517
575
|
if is_available("openai"):
|
|
518
|
-
client = (
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
576
|
+
client = self._get_core_client()
|
|
577
|
+
# The async path awaits the core coroutine directly. The sync path
|
|
578
|
+
# offloads the blocking core call via asyncio.to_thread so it never
|
|
579
|
+
# blocks the bridge event loop this coroutine runs on.
|
|
580
|
+
if is_async:
|
|
581
|
+
return await client.aparse_structured_output(
|
|
582
|
+
messages=messages,
|
|
583
|
+
response_format=response_model,
|
|
584
|
+
model=model_name,
|
|
585
|
+
**kwargs,
|
|
586
|
+
)
|
|
587
|
+
return await asyncio.to_thread(
|
|
588
|
+
lambda: client.parse_structured_output(
|
|
589
|
+
messages=messages,
|
|
590
|
+
response_format=response_model,
|
|
591
|
+
model=model_name,
|
|
592
|
+
**kwargs,
|
|
593
|
+
)
|
|
535
594
|
)
|
|
536
|
-
return response.choices[0].message.parsed
|
|
537
595
|
|
|
538
596
|
# Neither available - raise helpful error
|
|
539
597
|
raise ImportError(
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""C10 shim: implementation moved to ``praisonai_train.cli.commands.train``."""
|
|
2
|
+
|
|
3
|
+
import sys as _sys
|
|
4
|
+
|
|
5
|
+
from praisonai._bootstrap import ensure_praisonai_train
|
|
6
|
+
|
|
7
|
+
ensure_praisonai_train()
|
|
8
|
+
|
|
9
|
+
import praisonai_train.cli.commands.train as _impl
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _impl
|
|
@@ -11,6 +11,13 @@ logger = logging.getLogger(__name__)
|
|
|
11
11
|
# Constants
|
|
12
12
|
LOCAL_SERVER_API_KEY_PLACEHOLDER = "not-needed"
|
|
13
13
|
|
|
14
|
+
# Provider prefixes handled directly by the built-in ladder in this module.
|
|
15
|
+
# Any prefix NOT in this set is delegated to praisonai.llm.registry so that
|
|
16
|
+
# user-registered providers (register_llm_provider(...)) take effect here.
|
|
17
|
+
_BUILTIN_MODEL_PREFIXES = frozenset(
|
|
18
|
+
{"openai", "groq", "cohere", "ollama", "anthropic", "google", "openrouter"}
|
|
19
|
+
)
|
|
20
|
+
|
|
14
21
|
def _is_module_available(module_name: str) -> bool:
|
|
15
22
|
"""Safely check if a module spec is importable.
|
|
16
23
|
|
|
@@ -107,7 +114,13 @@ class PraisonAIModel:
|
|
|
107
114
|
"api.openai.com" not in self.base_url)
|
|
108
115
|
if is_local:
|
|
109
116
|
self.api_key = LOCAL_SERVER_API_KEY_PLACEHOLDER
|
|
110
|
-
|
|
117
|
+
|
|
118
|
+
# A user-registered provider (llm.registry) owns its own credential
|
|
119
|
+
# resolution, so defer the OpenAI-key requirement to it rather than
|
|
120
|
+
# failing here for e.g. "bedrock/..." that isn't a built-in prefix.
|
|
121
|
+
if not self.api_key and self._is_registered_provider():
|
|
122
|
+
return
|
|
123
|
+
|
|
111
124
|
if not self.api_key:
|
|
112
125
|
raise ValueError(
|
|
113
126
|
f"{self.api_key_var} environment variable is required for the default OpenAI service. "
|
|
@@ -115,6 +128,62 @@ class PraisonAIModel:
|
|
|
115
128
|
)
|
|
116
129
|
|
|
117
130
|
|
|
131
|
+
def _is_registered_provider(self):
|
|
132
|
+
"""Return True if the model's provider prefix is a user-registered one.
|
|
133
|
+
|
|
134
|
+
A non-built-in prefix (e.g. "bedrock/") that has been registered via
|
|
135
|
+
``register_llm_provider`` should be resolved through the registry rather
|
|
136
|
+
than the built-in ladder. Never raises.
|
|
137
|
+
"""
|
|
138
|
+
if "/" not in self.model:
|
|
139
|
+
return False
|
|
140
|
+
provider_id = self.model.split("/", 1)[0].lower()
|
|
141
|
+
if provider_id in _BUILTIN_MODEL_PREFIXES:
|
|
142
|
+
return False
|
|
143
|
+
try:
|
|
144
|
+
from praisonai.llm import has_llm_provider
|
|
145
|
+
return bool(has_llm_provider(provider_id))
|
|
146
|
+
except Exception: # pragma: no cover - defensive
|
|
147
|
+
return False
|
|
148
|
+
|
|
149
|
+
def _resolve_registered_provider(self):
|
|
150
|
+
"""Resolve a user-registered LLM provider from ``praisonai.llm.registry``.
|
|
151
|
+
|
|
152
|
+
Consults the extension point advertised in ``llm/registry.py`` so that
|
|
153
|
+
``register_llm_provider("bedrock", BedrockProvider)`` becomes visible to
|
|
154
|
+
every framework adapter that goes through ``PraisonAIModel``. Only
|
|
155
|
+
providers NOT covered by the built-in ladder below are resolved here;
|
|
156
|
+
built-ins keep their existing fast, direct-SDK behaviour. Returns the
|
|
157
|
+
resolved provider instance, or ``None`` when the prefix is not a
|
|
158
|
+
registered provider (so the built-in ladder runs). If the prefix IS a
|
|
159
|
+
registered provider but its construction fails, the error is propagated
|
|
160
|
+
rather than masked behind the uncredentialed built-in OpenAI path.
|
|
161
|
+
"""
|
|
162
|
+
if not self._is_registered_provider():
|
|
163
|
+
return None
|
|
164
|
+
try:
|
|
165
|
+
from praisonai.llm import create_llm_provider
|
|
166
|
+
except Exception as exc: # pragma: no cover - defensive
|
|
167
|
+
logger.debug(
|
|
168
|
+
"Registry import for %r failed (%s); "
|
|
169
|
+
"falling back to built-in resolution.", self.model, exc
|
|
170
|
+
)
|
|
171
|
+
return None
|
|
172
|
+
# Only pass credentials that were actually resolved. Injecting
|
|
173
|
+
# ``api_key: None``/``base_url: ""`` would let a provider treat a
|
|
174
|
+
# present-but-empty key as an explicit credential and skip its own
|
|
175
|
+
# environment/credential chain (Greptile P2).
|
|
176
|
+
config = {}
|
|
177
|
+
if self.api_key:
|
|
178
|
+
config["api_key"] = self.api_key
|
|
179
|
+
if self.base_url:
|
|
180
|
+
config["base_url"] = self.base_url
|
|
181
|
+
# The provider is registered, so a construction failure is a real error
|
|
182
|
+
# for the user's chosen provider — surface it rather than silently
|
|
183
|
+
# continuing into the uncredentialed built-in OpenAI ladder, which would
|
|
184
|
+
# otherwise mask the cause behind a misleading auth error (Greptile P1).
|
|
185
|
+
return create_llm_provider(self.model, config=config or None)
|
|
186
|
+
|
|
118
187
|
def get_model(self):
|
|
119
188
|
"""
|
|
120
189
|
Returns an instance of the native SDK client with the configured parameters.
|
|
@@ -125,6 +194,15 @@ class PraisonAIModel:
|
|
|
125
194
|
Returns:
|
|
126
195
|
Client: An instance of the native SDK client (OpenAI, Anthropic, etc.)
|
|
127
196
|
"""
|
|
197
|
+
# Extension point: honour user-registered providers (llm.registry) before
|
|
198
|
+
# the built-in ladder so custom providers (e.g. "bedrock/...") take effect.
|
|
199
|
+
registered = self._resolve_registered_provider()
|
|
200
|
+
if registered is not None:
|
|
201
|
+
get_client = getattr(registered, "get_client", None)
|
|
202
|
+
if callable(get_client):
|
|
203
|
+
return get_client()
|
|
204
|
+
return registered
|
|
205
|
+
|
|
128
206
|
if self.model.startswith("google/"):
|
|
129
207
|
if GOOGLE_GENAI_AVAILABLE:
|
|
130
208
|
genai = _get_google_genai()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""C10 shim: conda training-env setup moved to ``praisonai_train.setup.setup_conda_env``.
|
|
2
|
+
|
|
3
|
+
Kept so the ``setup-conda-env`` console script and
|
|
4
|
+
``praisonai.setup.setup_conda_env.main`` imports keep working.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from praisonai._bootstrap import ensure_praisonai_train
|
|
8
|
+
|
|
9
|
+
ensure_praisonai_train()
|
|
10
|
+
|
|
11
|
+
from praisonai_train.setup.setup_conda_env import main # noqa: F401
|
|
12
|
+
|
|
13
|
+
if __name__ == "__main__":
|
|
14
|
+
main()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""C10 shim: training implementation moved to ``praisonai_train.train``.
|
|
2
|
+
|
|
3
|
+
Old import paths (``praisonai.train.agents``, ``praisonai.train.llm.trainer``,
|
|
4
|
+
``python -m praisonai.train.llm.trainer``) keep working and resolve to the
|
|
5
|
+
same module objects as ``praisonai_train.train.*``.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from praisonai._bootstrap import ensure_praisonai_train
|
|
9
|
+
|
|
10
|
+
ensure_praisonai_train()
|
|
11
|
+
|
|
12
|
+
from praisonai.cli._shim import alias_package
|
|
13
|
+
|
|
14
|
+
alias_package("praisonai.train", "praisonai_train.train")
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
"""Backward-compatible shim for the LLM fine-tuning entry point.
|
|
4
4
|
|
|
5
5
|
The canonical fine-tuning implementation lives in
|
|
6
|
-
:mod:`
|
|
7
|
-
This top-level module is retained only as a
|
|
8
|
-
reference to ``praisonai/train.py``
|
|
9
|
-
keeps working. There is a single
|
|
6
|
+
:mod:`praisonai_train.train.llm.trainer` (C10; ``praisonai.train`` is an
|
|
7
|
+
``alias_package`` shim to it). This top-level module is retained only as a
|
|
8
|
+
thin re-export so that any legacy reference to ``praisonai/train.py``
|
|
9
|
+
(e.g. ``python path/to/train.py train``) keeps working. There is a single
|
|
10
|
+
owner: ``praisonai_train.train.llm.trainer``.
|
|
10
11
|
|
|
11
12
|
Note: because ``praisonai.train`` resolves to the package, this file is only
|
|
12
13
|
reachable when executed directly as a script, not via ``import``.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""C10 shim: implementation moved to ``praisonai_train.train_vision``."""
|
|
2
|
+
|
|
3
|
+
import sys as _sys
|
|
4
|
+
|
|
5
|
+
from praisonai._bootstrap import ensure_praisonai_train
|
|
6
|
+
|
|
7
|
+
ensure_praisonai_train()
|
|
8
|
+
|
|
9
|
+
import praisonai_train.train_vision as _impl
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _impl
|
|
12
|
+
|
|
13
|
+
if __name__ == "__main__":
|
|
14
|
+
_impl.main()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""C10 shim: implementation moved to ``praisonai_train.upload_vision``."""
|
|
2
|
+
|
|
3
|
+
import sys as _sys
|
|
4
|
+
|
|
5
|
+
from praisonai._bootstrap import ensure_praisonai_train
|
|
6
|
+
|
|
7
|
+
ensure_praisonai_train()
|
|
8
|
+
|
|
9
|
+
import praisonai_train.upload_vision as _impl
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _impl
|
|
12
|
+
|
|
13
|
+
if __name__ == "__main__":
|
|
14
|
+
_impl.main()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.6.148"
|
|
@@ -12,9 +12,10 @@ 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.151",
|
|
16
|
+
"praisonai-code>=0.0.47",
|
|
17
|
+
"praisonai-bot>=0.0.32",
|
|
18
|
+
"praisonai-train>=0.0.3",
|
|
18
19
|
"python-dotenv>=0.19.0",
|
|
19
20
|
"litellm>=1.83.14,<2",
|
|
20
21
|
"PyYAML>=6.0",
|
|
@@ -99,7 +100,8 @@ call = [
|
|
|
99
100
|
"pyngrok>=1.4.0",
|
|
100
101
|
"rich"
|
|
101
102
|
]
|
|
102
|
-
train
|
|
103
|
+
# C10: training lives in praisonai-train; this extra pulls the heavy ML stack.
|
|
104
|
+
train = ["praisonai-train[llm]"]
|
|
103
105
|
crewai = ["crewai>=0.157.0", "praisonai-tools>=0.1.0"] # Task 2: alias to praisonai-frameworks[crewai]
|
|
104
106
|
autogen = ["pyautogen==0.2.29", "praisonai-tools>=0.1.0", "crewai"] # Task 2: alias to praisonai-frameworks[autogen]
|
|
105
107
|
ag2 = ["ag2>=0.11.0", "praisonai-tools>=0.1.0"]
|
|
@@ -269,6 +271,9 @@ praisonaiagents = { path = "../praisonai-agents" }
|
|
|
269
271
|
# moved here (C2), old praisonai.* paths kept via shims.
|
|
270
272
|
praisonai-code = { path = "../praisonai-code", editable = true }
|
|
271
273
|
praisonai-bot = { path = "../praisonai-bot", editable = true }
|
|
274
|
+
# praisonai-train hosts LLM fine-tuning + agent training (C10); old
|
|
275
|
+
# praisonai.train paths kept via shims.
|
|
276
|
+
praisonai-train = { path = "../praisonai-train", editable = true }
|
|
272
277
|
|
|
273
278
|
[tool.uv]
|
|
274
279
|
# Exclude from lock resolution — these cause cross-extra conflicts that
|