PraisonAI 4.6.149__tar.gz → 4.6.151__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.149 → praisonai-4.6.151}/PKG-INFO +9 -6
- {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/PKG-INFO +9 -6
- {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/SOURCES.txt +0 -58
- praisonai-4.6.151/PraisonAI.egg-info/entry_points.txt +9 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/requires.txt +9 -5
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_bootstrap.py +16 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agents_generator.py +10 -4
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/api/agent_invoke.py +122 -6
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/auto.py +44 -36
- praisonai-4.6.151/praisonai/cli/commands/mcp.py +11 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/apply_diff.py +12 -12
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/search_replace.py +13 -13
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/write_file.py +11 -11
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/registry.py +3 -6
- praisonai-4.6.151/praisonai/mcp_server/__init__.py +9 -0
- praisonai-4.6.151/praisonai/version.py +1 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/pyproject.toml +15 -5
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_agent_invoke.py +135 -0
- praisonai-4.6.149/PraisonAI.egg-info/entry_points.txt +0 -4
- praisonai-4.6.149/praisonai/README.md +0 -5
- praisonai-4.6.149/praisonai/cli/commands/mcp.py +0 -763
- praisonai-4.6.149/praisonai/mcp_server/__init__.py +0 -152
- praisonai-4.6.149/praisonai/mcp_server/adapters/__init__.py +0 -74
- praisonai-4.6.149/praisonai/mcp_server/adapters/agents.py +0 -128
- praisonai-4.6.149/praisonai/mcp_server/adapters/capabilities.py +0 -168
- praisonai-4.6.149/praisonai/mcp_server/adapters/cli_tools.py +0 -624
- praisonai-4.6.149/praisonai/mcp_server/adapters/extended_capabilities.py +0 -462
- praisonai-4.6.149/praisonai/mcp_server/adapters/knowledge.py +0 -93
- praisonai-4.6.149/praisonai/mcp_server/adapters/memory.py +0 -104
- praisonai-4.6.149/praisonai/mcp_server/adapters/prompts.py +0 -306
- praisonai-4.6.149/praisonai/mcp_server/adapters/resources.py +0 -124
- praisonai-4.6.149/praisonai/mcp_server/adapters/tools_bridge.py +0 -280
- praisonai-4.6.149/praisonai/mcp_server/auth/__init__.py +0 -48
- praisonai-4.6.149/praisonai/mcp_server/auth/api_key.py +0 -291
- praisonai-4.6.149/praisonai/mcp_server/auth/oauth.py +0 -461
- praisonai-4.6.149/praisonai/mcp_server/auth/oidc.py +0 -289
- praisonai-4.6.149/praisonai/mcp_server/auth/scopes.py +0 -261
- praisonai-4.6.149/praisonai/mcp_server/cli.py +0 -898
- praisonai-4.6.149/praisonai/mcp_server/elicitation.py +0 -445
- praisonai-4.6.149/praisonai/mcp_server/icons.py +0 -302
- praisonai-4.6.149/praisonai/mcp_server/recipe_adapter.py +0 -573
- praisonai-4.6.149/praisonai/mcp_server/recipe_cli.py +0 -824
- praisonai-4.6.149/praisonai/mcp_server/registry.py +0 -718
- praisonai-4.6.149/praisonai/mcp_server/sampling.py +0 -422
- praisonai-4.6.149/praisonai/mcp_server/server.py +0 -607
- praisonai-4.6.149/praisonai/mcp_server/tasks.py +0 -443
- praisonai-4.6.149/praisonai/mcp_server/tool_index.py +0 -481
- praisonai-4.6.149/praisonai/mcp_server/transports/__init__.py +0 -18
- praisonai-4.6.149/praisonai/mcp_server/transports/http_stream.py +0 -525
- praisonai-4.6.149/praisonai/mcp_server/transports/stdio.py +0 -132
- praisonai-4.6.149/praisonai/public/fantasy.svg +0 -3
- praisonai-4.6.149/praisonai/public/game.svg +0 -3
- praisonai-4.6.149/praisonai/public/movie.svg +0 -3
- praisonai-4.6.149/praisonai/public/thriller.svg +0 -3
- praisonai-4.6.149/praisonai/scheduler/README.md +0 -274
- praisonai-4.6.149/praisonai/setup/config.yaml +0 -60
- praisonai-4.6.149/praisonai/ui/README.md +0 -21
- praisonai-4.6.149/praisonai/ui/callbacks.py +0 -57
- praisonai-4.6.149/praisonai/ui/components/aicoder.py +0 -343
- praisonai-4.6.149/praisonai/ui/config/chainlit.md +0 -1
- praisonai-4.6.149/praisonai/ui/config/translations/bn.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/en-US.json +0 -229
- praisonai-4.6.149/praisonai/ui/config/translations/gu.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/he-IL.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/hi.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/kn.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/ml.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/mr.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/ta.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/te.json +0 -231
- praisonai-4.6.149/praisonai/ui/config/translations/zh-CN.json +0 -229
- praisonai-4.6.149/praisonai/ui/public/fantasy.svg +0 -3
- praisonai-4.6.149/praisonai/ui/public/game.svg +0 -3
- praisonai-4.6.149/praisonai/ui/public/logo_dark.png +0 -0
- praisonai-4.6.149/praisonai/ui/public/logo_light.png +0 -0
- praisonai-4.6.149/praisonai/ui/public/movie.svg +0 -3
- praisonai-4.6.149/praisonai/ui/public/praison.css +0 -3
- praisonai-4.6.149/praisonai/ui/public/thriller.svg +0 -3
- praisonai-4.6.149/praisonai/ui/tools.md +0 -133
- praisonai-4.6.149/praisonai/version.py +0 -1
- {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/README.md +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/__main__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_logging.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/api/call.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/schema.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/validator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_unified_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/env.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/profiler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/client.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_compat.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_shell.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/docker.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/e2b.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/subprocess.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/setup.cfg +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_basic.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_recipe.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_registry.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_runner.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.149 → praisonai-4.6.151}/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.151
|
|
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,11 +11,12 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.6.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.154
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.50
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.35
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.6
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.0.3
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.0.3
|
|
19
20
|
Requires-Dist: python-dotenv>=0.19.0
|
|
20
21
|
Requires-Dist: litellm<2,>=1.83.14
|
|
21
22
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -86,6 +87,8 @@ Provides-Extra: train
|
|
|
86
87
|
Requires-Dist: praisonai-train[llm]; extra == "train"
|
|
87
88
|
Provides-Extra: browser
|
|
88
89
|
Requires-Dist: praisonai-browser[all]; extra == "browser"
|
|
90
|
+
Provides-Extra: mcp
|
|
91
|
+
Requires-Dist: praisonai-mcp[all]; extra == "mcp"
|
|
89
92
|
Provides-Extra: crewai
|
|
90
93
|
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
91
94
|
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.151
|
|
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,11 +11,12 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=1.6.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.0.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.0.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.0.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.0.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.154
|
|
15
|
+
Requires-Dist: praisonai-code>=0.0.50
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.0.35
|
|
17
|
+
Requires-Dist: praisonai-train>=0.0.6
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.0.3
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.0.3
|
|
19
20
|
Requires-Dist: python-dotenv>=0.19.0
|
|
20
21
|
Requires-Dist: litellm<2,>=1.83.14
|
|
21
22
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -86,6 +87,8 @@ Provides-Extra: train
|
|
|
86
87
|
Requires-Dist: praisonai-train[llm]; extra == "train"
|
|
87
88
|
Provides-Extra: browser
|
|
88
89
|
Requires-Dist: praisonai-browser[all]; extra == "browser"
|
|
90
|
+
Provides-Extra: mcp
|
|
91
|
+
Requires-Dist: praisonai-mcp[all]; extra == "mcp"
|
|
89
92
|
Provides-Extra: crewai
|
|
90
93
|
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
91
94
|
Requires-Dist: praisonai-tools>=0.1.0; extra == "crewai"
|
|
@@ -6,7 +6,6 @@ PraisonAI.egg-info/dependency_links.txt
|
|
|
6
6
|
PraisonAI.egg-info/entry_points.txt
|
|
7
7
|
PraisonAI.egg-info/requires.txt
|
|
8
8
|
PraisonAI.egg-info/top_level.txt
|
|
9
|
-
praisonai/README.md
|
|
10
9
|
praisonai/__init__.py
|
|
11
10
|
praisonai/__main__.py
|
|
12
11
|
praisonai/_approval_spec.py
|
|
@@ -372,34 +371,6 @@ praisonai/llm/env.py
|
|
|
372
371
|
praisonai/llm/gateways.py
|
|
373
372
|
praisonai/llm/registry.py
|
|
374
373
|
praisonai/mcp_server/__init__.py
|
|
375
|
-
praisonai/mcp_server/cli.py
|
|
376
|
-
praisonai/mcp_server/elicitation.py
|
|
377
|
-
praisonai/mcp_server/icons.py
|
|
378
|
-
praisonai/mcp_server/recipe_adapter.py
|
|
379
|
-
praisonai/mcp_server/recipe_cli.py
|
|
380
|
-
praisonai/mcp_server/registry.py
|
|
381
|
-
praisonai/mcp_server/sampling.py
|
|
382
|
-
praisonai/mcp_server/server.py
|
|
383
|
-
praisonai/mcp_server/tasks.py
|
|
384
|
-
praisonai/mcp_server/tool_index.py
|
|
385
|
-
praisonai/mcp_server/adapters/__init__.py
|
|
386
|
-
praisonai/mcp_server/adapters/agents.py
|
|
387
|
-
praisonai/mcp_server/adapters/capabilities.py
|
|
388
|
-
praisonai/mcp_server/adapters/cli_tools.py
|
|
389
|
-
praisonai/mcp_server/adapters/extended_capabilities.py
|
|
390
|
-
praisonai/mcp_server/adapters/knowledge.py
|
|
391
|
-
praisonai/mcp_server/adapters/memory.py
|
|
392
|
-
praisonai/mcp_server/adapters/prompts.py
|
|
393
|
-
praisonai/mcp_server/adapters/resources.py
|
|
394
|
-
praisonai/mcp_server/adapters/tools_bridge.py
|
|
395
|
-
praisonai/mcp_server/auth/__init__.py
|
|
396
|
-
praisonai/mcp_server/auth/api_key.py
|
|
397
|
-
praisonai/mcp_server/auth/oauth.py
|
|
398
|
-
praisonai/mcp_server/auth/oidc.py
|
|
399
|
-
praisonai/mcp_server/auth/scopes.py
|
|
400
|
-
praisonai/mcp_server/transports/__init__.py
|
|
401
|
-
praisonai/mcp_server/transports/http_stream.py
|
|
402
|
-
praisonai/mcp_server/transports/stdio.py
|
|
403
374
|
praisonai/n8n/__init__.py
|
|
404
375
|
praisonai/n8n/client.py
|
|
405
376
|
praisonai/n8n/converter.py
|
|
@@ -472,10 +443,6 @@ praisonai/persistence/tests/__init__.py
|
|
|
472
443
|
praisonai/persistence/tests/test_all_backends.py
|
|
473
444
|
praisonai/persistence/tests/test_registry_lazy.py
|
|
474
445
|
praisonai/persistence/tests/test_valkey_backends.py
|
|
475
|
-
praisonai/public/fantasy.svg
|
|
476
|
-
praisonai/public/game.svg
|
|
477
|
-
praisonai/public/movie.svg
|
|
478
|
-
praisonai/public/thriller.svg
|
|
479
446
|
praisonai/push/__init__.py
|
|
480
447
|
praisonai/push/client.py
|
|
481
448
|
praisonai/push/transports.py
|
|
@@ -514,7 +481,6 @@ praisonai/sandbox/modal.py
|
|
|
514
481
|
praisonai/sandbox/sandlock.py
|
|
515
482
|
praisonai/sandbox/ssh.py
|
|
516
483
|
praisonai/sandbox/subprocess.py
|
|
517
|
-
praisonai/scheduler/README.md
|
|
518
484
|
praisonai/scheduler/__init__.py
|
|
519
485
|
praisonai/scheduler/_base_scheduler.py
|
|
520
486
|
praisonai/scheduler/_delivery.py
|
|
@@ -538,7 +504,6 @@ praisonai/security/injection.py
|
|
|
538
504
|
praisonai/security/protected.py
|
|
539
505
|
praisonai/setup/__init__.py
|
|
540
506
|
praisonai/setup/build.py
|
|
541
|
-
praisonai/setup/config.yaml
|
|
542
507
|
praisonai/setup/post_install.py
|
|
543
508
|
praisonai/setup/setup_conda_env.py
|
|
544
509
|
praisonai/standardise/__init__.py
|
|
@@ -591,33 +556,10 @@ praisonai/tools/kanban_tools.py
|
|
|
591
556
|
praisonai/tools/multiedit.py
|
|
592
557
|
praisonai/tools/skill_manage.py
|
|
593
558
|
praisonai/train/__init__.py
|
|
594
|
-
praisonai/ui/README.md
|
|
595
559
|
praisonai/ui/_aiui_datastore.py
|
|
596
560
|
praisonai/ui/_external_agents.py
|
|
597
|
-
praisonai/ui/callbacks.py
|
|
598
561
|
praisonai/ui/context.py
|
|
599
562
|
praisonai/ui/database_config.py
|
|
600
|
-
praisonai/ui/tools.md
|
|
601
|
-
praisonai/ui/components/aicoder.py
|
|
602
|
-
praisonai/ui/config/chainlit.md
|
|
603
|
-
praisonai/ui/config/translations/bn.json
|
|
604
|
-
praisonai/ui/config/translations/en-US.json
|
|
605
|
-
praisonai/ui/config/translations/gu.json
|
|
606
|
-
praisonai/ui/config/translations/he-IL.json
|
|
607
|
-
praisonai/ui/config/translations/hi.json
|
|
608
|
-
praisonai/ui/config/translations/kn.json
|
|
609
|
-
praisonai/ui/config/translations/ml.json
|
|
610
|
-
praisonai/ui/config/translations/mr.json
|
|
611
|
-
praisonai/ui/config/translations/ta.json
|
|
612
|
-
praisonai/ui/config/translations/te.json
|
|
613
|
-
praisonai/ui/config/translations/zh-CN.json
|
|
614
|
-
praisonai/ui/public/fantasy.svg
|
|
615
|
-
praisonai/ui/public/game.svg
|
|
616
|
-
praisonai/ui/public/logo_dark.png
|
|
617
|
-
praisonai/ui/public/logo_light.png
|
|
618
|
-
praisonai/ui/public/movie.svg
|
|
619
|
-
praisonai/ui/public/praison.css
|
|
620
|
-
praisonai/ui/public/thriller.svg
|
|
621
563
|
praisonai/ui_agents/__init__.py
|
|
622
564
|
praisonai/ui_agents/default_app.py
|
|
623
565
|
praisonai/ui_bot/__init__.py
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
praisonai = praisonai.__main__:main
|
|
3
|
+
praisonai-call = praisonai.api.call:main
|
|
4
|
+
setup-conda-env = praisonai.setup.setup_conda_env:main
|
|
5
|
+
|
|
6
|
+
[praisonai.framework_adapters]
|
|
7
|
+
autogen = praisonai.framework_adapters.autogen_adapter:AutoGenFamilyAdapter
|
|
8
|
+
autogen_v2 = praisonai.framework_adapters.autogen_adapter:AutoGenAdapter
|
|
9
|
+
crewai = praisonai.framework_adapters.crewai_adapter:CrewAIAdapter
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
rich>=13.7
|
|
2
2
|
markdown>=3.5
|
|
3
3
|
pyparsing>=3.0.0
|
|
4
|
-
praisonaiagents>=1.6.
|
|
5
|
-
praisonai-code>=0.0.
|
|
6
|
-
praisonai-bot>=0.0.
|
|
7
|
-
praisonai-train>=0.0.
|
|
8
|
-
praisonai-browser>=0.0.
|
|
4
|
+
praisonaiagents>=1.6.154
|
|
5
|
+
praisonai-code>=0.0.50
|
|
6
|
+
praisonai-bot>=0.0.35
|
|
7
|
+
praisonai-train>=0.0.6
|
|
8
|
+
praisonai-browser>=0.0.3
|
|
9
|
+
praisonai-mcp>=0.0.3
|
|
9
10
|
python-dotenv>=0.19.0
|
|
10
11
|
litellm<2,>=1.83.14
|
|
11
12
|
PyYAML>=6.0
|
|
@@ -166,6 +167,9 @@ praisonai-tools>=0.1.0
|
|
|
166
167
|
|
|
167
168
|
[lite]
|
|
168
169
|
|
|
170
|
+
[mcp]
|
|
171
|
+
praisonai-mcp[all]
|
|
172
|
+
|
|
169
173
|
[modal]
|
|
170
174
|
modal>=0.64.0
|
|
171
175
|
|
|
@@ -75,3 +75,19 @@ def ensure_praisonai_browser() -> None:
|
|
|
75
75
|
root = str(browser_src)
|
|
76
76
|
if root not in sys.path:
|
|
77
77
|
sys.path.insert(0, root)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def ensure_praisonai_mcp() -> None:
|
|
81
|
+
"""Ensure ``praisonai_mcp`` can be imported in monorepo dev layouts."""
|
|
82
|
+
try:
|
|
83
|
+
import praisonai_mcp # noqa: F401
|
|
84
|
+
return
|
|
85
|
+
except ImportError:
|
|
86
|
+
pass
|
|
87
|
+
|
|
88
|
+
wrapper_src = Path(__file__).resolve().parents[1] # .../src/praisonai
|
|
89
|
+
mcp_src = wrapper_src.parent / "praisonai-mcp"
|
|
90
|
+
if (mcp_src / "praisonai_mcp").is_dir():
|
|
91
|
+
root = str(mcp_src)
|
|
92
|
+
if root not in sys.path:
|
|
93
|
+
sys.path.insert(0, root)
|
|
@@ -401,7 +401,7 @@ def _resolve_yaml_cli_backend(cli_backend_config, logger):
|
|
|
401
401
|
|
|
402
402
|
|
|
403
403
|
class AgentsGenerator:
|
|
404
|
-
def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None):
|
|
404
|
+
def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None, tool_resolver=None):
|
|
405
405
|
"""
|
|
406
406
|
Initialize the AgentsGenerator object.
|
|
407
407
|
|
|
@@ -416,6 +416,7 @@ class AgentsGenerator:
|
|
|
416
416
|
tools (dict, optional): A dictionary containing the tools to be used for the agents. Defaults to None.
|
|
417
417
|
cli_config (dict, optional): CLI configuration to override YAML settings. Defaults to None.
|
|
418
418
|
adapter_registry (FrameworkAdapterRegistry, optional): Registry for framework adapters. Defaults to process default.
|
|
419
|
+
tool_resolver (ToolResolver, optional): Canonical tool resolver. Defaults to the shared context-local resolver so discovery runs once per run.
|
|
419
420
|
|
|
420
421
|
Attributes:
|
|
421
422
|
agent_file (str): The path to the agent file.
|
|
@@ -448,9 +449,14 @@ class AgentsGenerator:
|
|
|
448
449
|
elif os.environ.get('LOGLEVEL'):
|
|
449
450
|
self.logger.setLevel(getattr(logging, os.environ.get('LOGLEVEL', 'INFO').upper(), logging.INFO))
|
|
450
451
|
|
|
451
|
-
# Initialize tool resolver (single source of truth for tool resolution)
|
|
452
|
-
|
|
453
|
-
|
|
452
|
+
# Initialize tool resolver (single source of truth for tool resolution).
|
|
453
|
+
# DI-friendly: callers (e.g. AutoGenerator hand-off, tests) may pass a
|
|
454
|
+
# resolver; otherwise share the context-local default so tool discovery
|
|
455
|
+
# runs once per run instead of once per generator construction.
|
|
456
|
+
if tool_resolver is None:
|
|
457
|
+
from .tool_resolver import _get_default_resolver
|
|
458
|
+
tool_resolver = _get_default_resolver()
|
|
459
|
+
self.tool_resolver = tool_resolver
|
|
454
460
|
|
|
455
461
|
# DI-friendly: tests/multi-tenant runtimes pass their own registry;
|
|
456
462
|
# CLI users get the process default.
|
|
@@ -168,6 +168,109 @@ def list_registered_agents() -> list:
|
|
|
168
168
|
return list(_agent_registry.keys())
|
|
169
169
|
|
|
170
170
|
|
|
171
|
+
def _is_real_agent(agent: Any) -> bool:
|
|
172
|
+
"""Return True when ``agent`` is a genuine ``praisonaiagents`` ``Agent``.
|
|
173
|
+
|
|
174
|
+
Uses ``isinstance`` against the real ``Agent`` class so **subclasses defined
|
|
175
|
+
in application code** are recognised too (they inherit the per-session
|
|
176
|
+
machinery and ``clone_for_channel``). Plain mocks / lightweight callables are
|
|
177
|
+
not ``Agent`` instances, so they fall back to the shared instance for
|
|
178
|
+
backward compatibility. If ``praisonaiagents`` cannot be imported we treat
|
|
179
|
+
the object as non-isolatable.
|
|
180
|
+
"""
|
|
181
|
+
try:
|
|
182
|
+
from praisonaiagents import Agent
|
|
183
|
+
except Exception:
|
|
184
|
+
return False
|
|
185
|
+
return isinstance(agent, Agent)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def _supports_session_isolation(agent: Any) -> bool:
|
|
189
|
+
"""Return True when ``agent`` can be safely cloned per session.
|
|
190
|
+
|
|
191
|
+
A real ``Agent`` (or any subclass) exposes the per-session machinery
|
|
192
|
+
(``_session_id`` binding, ``chat_history`` and a safe clone path). Plain
|
|
193
|
+
mocks / lightweight callables do not, so they stay on the shared instance to
|
|
194
|
+
preserve backward compatibility.
|
|
195
|
+
"""
|
|
196
|
+
if not _is_real_agent(agent):
|
|
197
|
+
return False
|
|
198
|
+
if not hasattr(agent, "_session_id"):
|
|
199
|
+
return False
|
|
200
|
+
if not hasattr(agent, "chat_history"):
|
|
201
|
+
return False
|
|
202
|
+
return callable(getattr(agent, "clone_for_channel", None))
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def _clone_agent(agent: Any) -> Any:
|
|
206
|
+
"""Create an independent copy of a real ``Agent``.
|
|
207
|
+
|
|
208
|
+
Prefers ``clone_for_channel`` (purpose-built for multi-channel isolation
|
|
209
|
+
with fresh locks), falling back to ``deepcopy``.
|
|
210
|
+
"""
|
|
211
|
+
clone_for_channel = getattr(agent, "clone_for_channel", None)
|
|
212
|
+
if callable(clone_for_channel):
|
|
213
|
+
return clone_for_channel()
|
|
214
|
+
import copy as _copy
|
|
215
|
+
|
|
216
|
+
return _copy.deepcopy(agent)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def resolve_session_agent(agent_id: str, session_id: Optional[str]) -> Any:
|
|
220
|
+
"""Resolve an isolated, session-scoped agent for a single request.
|
|
221
|
+
|
|
222
|
+
The registry holds a *template* agent, not a live conversation. Every
|
|
223
|
+
request gets its own clone so concurrent callers never share mutable
|
|
224
|
+
``chat_history``:
|
|
225
|
+
|
|
226
|
+
- With a ``session_id``: the clone is bound to that session so its history
|
|
227
|
+
is loaded from (and persisted to) the shared, file-locked session store —
|
|
228
|
+
giving continuity across requests and isolation between sessions.
|
|
229
|
+
- Without a ``session_id``: the clone is ephemeral (no session binding), so
|
|
230
|
+
no global state is mutated.
|
|
231
|
+
|
|
232
|
+
Agents that don't support cloning/session binding (e.g. plain mocks) fall
|
|
233
|
+
back to the shared registry instance for backward compatibility.
|
|
234
|
+
"""
|
|
235
|
+
template = get_agent(agent_id)
|
|
236
|
+
if template is None:
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
if not _supports_session_isolation(template):
|
|
240
|
+
return template
|
|
241
|
+
|
|
242
|
+
try:
|
|
243
|
+
agent = _clone_agent(template)
|
|
244
|
+
except Exception as e:
|
|
245
|
+
# A clone failure must never silently fall back to the shared template:
|
|
246
|
+
# doing so would leak one session's chat_history into another. Fail the
|
|
247
|
+
# request instead so isolation is guaranteed.
|
|
248
|
+
logger.error(
|
|
249
|
+
f"Failed to clone agent '{agent_id}' for session isolation: {e}"
|
|
250
|
+
)
|
|
251
|
+
raise RuntimeError(
|
|
252
|
+
f"Failed to isolate agent '{agent_id}' for session: {e}"
|
|
253
|
+
) from e
|
|
254
|
+
|
|
255
|
+
# Reset per-request conversation state so the clone starts clean and
|
|
256
|
+
# (re)loads the requested session's history lazily on first chat.
|
|
257
|
+
try:
|
|
258
|
+
agent.chat_history = []
|
|
259
|
+
except Exception:
|
|
260
|
+
pass
|
|
261
|
+
if hasattr(agent, "_session_store_initialized"):
|
|
262
|
+
agent._session_store_initialized = False
|
|
263
|
+
if session_id:
|
|
264
|
+
agent._session_id = session_id
|
|
265
|
+
if hasattr(agent, "_history_session_id"):
|
|
266
|
+
agent._history_session_id = session_id
|
|
267
|
+
else:
|
|
268
|
+
agent._session_id = None
|
|
269
|
+
if hasattr(agent, "_history_session_id"):
|
|
270
|
+
agent._history_session_id = None
|
|
271
|
+
return agent
|
|
272
|
+
|
|
273
|
+
|
|
171
274
|
def _supports_async_start(agent: Any) -> bool:
|
|
172
275
|
"""Return True if agent.astart is a coroutine function."""
|
|
173
276
|
astart = getattr(agent, "astart", None)
|
|
@@ -218,8 +321,17 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
218
321
|
}
|
|
219
322
|
```
|
|
220
323
|
"""
|
|
221
|
-
#
|
|
222
|
-
|
|
324
|
+
# Resolve a per-session isolated agent view so concurrent callers never
|
|
325
|
+
# share mutable chat_history. A provided session_id gives continuity via
|
|
326
|
+
# the shared session store; its absence yields an ephemeral conversation.
|
|
327
|
+
try:
|
|
328
|
+
agent = resolve_session_agent(agent_id, request.session_id)
|
|
329
|
+
except Exception as e:
|
|
330
|
+
logger.error(f"Failed to isolate agent {agent_id}: {e}")
|
|
331
|
+
raise HTTPException(
|
|
332
|
+
status_code=500,
|
|
333
|
+
detail=f"Agent execution failed: {str(e)}"
|
|
334
|
+
)
|
|
223
335
|
if not agent:
|
|
224
336
|
logger.error(f"Agent not found: {agent_id}")
|
|
225
337
|
raise HTTPException(
|
|
@@ -228,7 +340,7 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
228
340
|
)
|
|
229
341
|
|
|
230
342
|
try:
|
|
231
|
-
#
|
|
343
|
+
# Session ID echoed back to the caller
|
|
232
344
|
session_id = request.session_id or "default"
|
|
233
345
|
|
|
234
346
|
# Apply agent config overrides if provided
|
|
@@ -362,15 +474,19 @@ async def invoke_agent_standalone(
|
|
|
362
474
|
This can be used in environments where FastAPI is not available
|
|
363
475
|
or when integrating with other web frameworks.
|
|
364
476
|
"""
|
|
365
|
-
|
|
366
|
-
if not agent:
|
|
477
|
+
if get_agent(agent_id) is None:
|
|
367
478
|
return {
|
|
368
479
|
"error": f"Agent '{agent_id}' not found",
|
|
369
480
|
"status": "error",
|
|
370
481
|
"available_agents": list_registered_agents()
|
|
371
482
|
}
|
|
372
|
-
|
|
483
|
+
|
|
373
484
|
try:
|
|
485
|
+
# Per-session isolated agent view (see resolve_session_agent). Done
|
|
486
|
+
# inside the try so a clone/isolation failure returns a clean error
|
|
487
|
+
# rather than leaking one session's history into another.
|
|
488
|
+
agent = resolve_session_agent(agent_id, session_id)
|
|
489
|
+
|
|
374
490
|
# Apply config if provided
|
|
375
491
|
if agent_config:
|
|
376
492
|
logger.debug(f"Agent config provided: {agent_config}")
|
|
@@ -733,10 +733,50 @@ class BaseAutoGenerator:
|
|
|
733
733
|
raise error[0]
|
|
734
734
|
return result[0]
|
|
735
735
|
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
736
|
+
def _get_tool_resolver(self):
|
|
737
|
+
"""Lazily construct the canonical ToolResolver (single source of truth).
|
|
738
|
+
|
|
739
|
+
Uses the shared context-local resolver so every generator in a run
|
|
740
|
+
(auto phase + AgentsGenerator + workflow/job generators) reuses one
|
|
741
|
+
warm cache instead of repeating full tool discovery. Kept lazy so
|
|
742
|
+
importing auto.py stays cheap and so a resolver-construction failure
|
|
743
|
+
never blocks generation — callers fall back to keyword/legacy hints.
|
|
744
|
+
"""
|
|
745
|
+
resolver = getattr(self, "_tool_resolver", None)
|
|
746
|
+
if resolver is None:
|
|
747
|
+
try:
|
|
748
|
+
from .tool_resolver import _get_default_resolver
|
|
749
|
+
resolver = _get_default_resolver()
|
|
750
|
+
except Exception as e: # pragma: no cover - defensive
|
|
751
|
+
logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
|
|
752
|
+
resolver = False # sentinel: attempted, not available
|
|
753
|
+
self._tool_resolver = resolver
|
|
754
|
+
return resolver or None
|
|
755
|
+
|
|
756
|
+
def _available_tools(self) -> List[str]:
|
|
757
|
+
"""Return the real, installed tool names from the canonical ToolResolver.
|
|
758
|
+
|
|
759
|
+
This is the single source of truth shared with AgentsGenerator. Returns
|
|
760
|
+
an empty list if the resolver is unavailable so callers can fall back.
|
|
761
|
+
"""
|
|
762
|
+
resolver = self._get_tool_resolver()
|
|
763
|
+
if resolver is None:
|
|
764
|
+
return []
|
|
765
|
+
try:
|
|
766
|
+
return sorted(resolver.list_available().keys())
|
|
767
|
+
except Exception as e: # pragma: no cover - defensive
|
|
768
|
+
logger.debug("ToolResolver.list_available() failed (%s).", e)
|
|
769
|
+
return []
|
|
770
|
+
|
|
771
|
+
def get_available_tools(self) -> List[str]:
|
|
772
|
+
"""Return list of available tools for agent assignment.
|
|
773
|
+
|
|
774
|
+
Routes through the canonical ToolResolver (single source of truth) so
|
|
775
|
+
the LLM is shown only tools that are actually installed. Falls back to
|
|
776
|
+
the frozen ``AVAILABLE_TOOLS`` list solely when the resolver is
|
|
777
|
+
unavailable or returns nothing.
|
|
778
|
+
"""
|
|
779
|
+
return self._available_tools() or AVAILABLE_TOOLS.copy()
|
|
740
780
|
|
|
741
781
|
@staticmethod
|
|
742
782
|
def analyze_complexity(topic: str) -> str:
|
|
@@ -1103,38 +1143,6 @@ class AutoGenerator(BaseAutoGenerator):
|
|
|
1103
1143
|
|
|
1104
1144
|
return merged_data
|
|
1105
1145
|
|
|
1106
|
-
def _get_tool_resolver(self):
|
|
1107
|
-
"""Lazily construct the canonical ToolResolver (single source of truth).
|
|
1108
|
-
|
|
1109
|
-
Kept lazy so importing auto.py stays cheap and so a resolver-construction
|
|
1110
|
-
failure never blocks generation — callers fall back to keyword hints.
|
|
1111
|
-
"""
|
|
1112
|
-
resolver = getattr(self, "_tool_resolver", None)
|
|
1113
|
-
if resolver is None:
|
|
1114
|
-
try:
|
|
1115
|
-
from .tool_resolver import ToolResolver
|
|
1116
|
-
resolver = ToolResolver()
|
|
1117
|
-
except Exception as e: # pragma: no cover - defensive
|
|
1118
|
-
logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
|
|
1119
|
-
resolver = False # sentinel: attempted, not available
|
|
1120
|
-
self._tool_resolver = resolver
|
|
1121
|
-
return resolver or None
|
|
1122
|
-
|
|
1123
|
-
def _available_tools(self) -> List[str]:
|
|
1124
|
-
"""Return the real, installed tool names from the canonical ToolResolver.
|
|
1125
|
-
|
|
1126
|
-
This is the single source of truth shared with AgentsGenerator. Returns
|
|
1127
|
-
an empty list if the resolver is unavailable so callers can fall back.
|
|
1128
|
-
"""
|
|
1129
|
-
resolver = self._get_tool_resolver()
|
|
1130
|
-
if resolver is None:
|
|
1131
|
-
return []
|
|
1132
|
-
try:
|
|
1133
|
-
return sorted(resolver.list_available().keys())
|
|
1134
|
-
except Exception as e: # pragma: no cover - defensive
|
|
1135
|
-
logger.debug("ToolResolver.list_available() failed (%s).", e)
|
|
1136
|
-
return []
|
|
1137
|
-
|
|
1138
1146
|
def discover_tools_for_topic(self) -> List[str]:
|
|
1139
1147
|
"""
|
|
1140
1148
|
Discover appropriate tools for the topic.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""C12 shim: implementation moved to ``praisonai_mcp.cli.commands.mcp``."""
|
|
2
|
+
|
|
3
|
+
import sys as _sys
|
|
4
|
+
|
|
5
|
+
from praisonai._bootstrap import ensure_praisonai_mcp
|
|
6
|
+
|
|
7
|
+
ensure_praisonai_mcp()
|
|
8
|
+
|
|
9
|
+
import praisonai_mcp.cli.commands.mcp as _impl
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _impl
|
|
@@ -71,9 +71,10 @@ def apply_diff(
|
|
|
71
71
|
... '''
|
|
72
72
|
>>> result = apply_diff("src/main.py", diff)
|
|
73
73
|
"""
|
|
74
|
-
# Resolve path
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
# Resolve path — default workspace is cwd so relative paths cannot escape
|
|
75
|
+
effective_workspace = workspace or os.getcwd()
|
|
76
|
+
if not os.path.isabs(path):
|
|
77
|
+
abs_path = os.path.abspath(os.path.join(effective_workspace, path))
|
|
77
78
|
else:
|
|
78
79
|
abs_path = os.path.abspath(path)
|
|
79
80
|
|
|
@@ -87,15 +88,14 @@ def apply_diff(
|
|
|
87
88
|
'applied_count': 0,
|
|
88
89
|
}
|
|
89
90
|
|
|
90
|
-
# Security check
|
|
91
|
-
if
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
91
|
+
# Security check — confinement always enforced against the workspace
|
|
92
|
+
if not is_path_within_directory(abs_path, effective_workspace):
|
|
93
|
+
return {
|
|
94
|
+
'success': False,
|
|
95
|
+
'error': f"Path '{path}' is outside the workspace",
|
|
96
|
+
'path': path,
|
|
97
|
+
'applied_count': 0,
|
|
98
|
+
}
|
|
99
99
|
|
|
100
100
|
# Check if file exists
|
|
101
101
|
if not file_exists(abs_path):
|
|
@@ -56,9 +56,10 @@ def search_replace(
|
|
|
56
56
|
... ]
|
|
57
57
|
>>> result = search_replace("src/main.py", operations)
|
|
58
58
|
"""
|
|
59
|
-
# Resolve path
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
# Resolve path — default workspace is cwd so relative paths cannot escape
|
|
60
|
+
effective_workspace = workspace or os.getcwd()
|
|
61
|
+
if not os.path.isabs(path):
|
|
62
|
+
abs_path = os.path.abspath(os.path.join(effective_workspace, path))
|
|
62
63
|
else:
|
|
63
64
|
abs_path = os.path.abspath(path)
|
|
64
65
|
|
|
@@ -73,16 +74,15 @@ def search_replace(
|
|
|
73
74
|
'total_replacements': 0,
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
# Security check
|
|
77
|
-
if
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
77
|
+
# Security check — confinement always enforced against the workspace
|
|
78
|
+
if not is_path_within_directory(abs_path, effective_workspace):
|
|
79
|
+
return {
|
|
80
|
+
'success': False,
|
|
81
|
+
'error': f"Path '{path}' is outside the workspace",
|
|
82
|
+
'path': path,
|
|
83
|
+
'operations_applied': 0,
|
|
84
|
+
'total_replacements': 0,
|
|
85
|
+
}
|
|
86
86
|
|
|
87
87
|
# Check if file exists
|
|
88
88
|
if not file_exists(abs_path):
|
|
@@ -177,9 +177,10 @@ def append_to_file(
|
|
|
177
177
|
Returns:
|
|
178
178
|
Dictionary with success status and details
|
|
179
179
|
"""
|
|
180
|
-
# Resolve path
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
# Resolve path — default workspace is cwd so relative paths cannot escape
|
|
181
|
+
effective_workspace = workspace or os.getcwd()
|
|
182
|
+
if not os.path.isabs(path):
|
|
183
|
+
abs_path = os.path.abspath(os.path.join(effective_workspace, path))
|
|
183
184
|
else:
|
|
184
185
|
abs_path = os.path.abspath(path)
|
|
185
186
|
|
|
@@ -192,14 +193,13 @@ def append_to_file(
|
|
|
192
193
|
'path': path,
|
|
193
194
|
}
|
|
194
195
|
|
|
195
|
-
# Security check
|
|
196
|
-
if
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
}
|
|
196
|
+
# Security check — confinement always enforced against the workspace
|
|
197
|
+
if not is_path_within_directory(abs_path, effective_workspace):
|
|
198
|
+
return {
|
|
199
|
+
'success': False,
|
|
200
|
+
'error': f"Path '{path}' is outside the workspace",
|
|
201
|
+
'path': path,
|
|
202
|
+
}
|
|
203
203
|
|
|
204
204
|
file_existed = file_exists(abs_path)
|
|
205
205
|
|