PraisonAI 4.6.30__tar.gz → 4.6.31__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.30 → praisonai-4.6.31}/PKG-INFO +2 -2
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/PKG-INFO +2 -2
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/requires.txt +1 -1
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/__main__.py +15 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/output/console.py +101 -15
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy.py +1 -1
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/models.py +16 -4
- praisonai-4.6.31/praisonai/ui/_aiui_datastore.py +141 -0
- praisonai-4.6.31/praisonai/version.py +1 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/pyproject.toml +1 -1
- praisonai-4.6.30/praisonai/ui/_aiui_datastore.py +0 -108
- praisonai-4.6.30/praisonai/version.py +0 -1
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/SOURCES.txt +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/README.md +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_logging.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agents_generator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/api/call.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/auto.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_ack.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_approval_base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_auth.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_chunk.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_commands.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_config_schema.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_debounce.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_defaults.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_discord_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_email_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_http_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_pairing_ui.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_protocol_mixin.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_rate_limit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_resilience.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_session.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_slack_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_telegram_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_unknown_user.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_webhook_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/agentmail.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/bot.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/botos.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/discord.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/email.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/media.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/slack.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/telegram.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/whatsapp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/benchmark.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cdp_agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cdp_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/diagnostics.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/launcher.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/playwright_agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/profiling.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/protocol.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/report.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/sessions.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/video.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/claw/default_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/loader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/paths.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/schema.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/core.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/profiler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/request.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/result.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/action_orchestrator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/at_mentions.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/audit_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/auto_mode.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/benchmark.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/capabilities.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/checkpoints.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/cli_profiler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/code_intelligence.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/compaction.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/compare.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/config_hierarchy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/context_manager.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/csv_test_runner.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/debug.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/diag.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/display_jsonl.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/engine.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/formatters.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/handler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/examples.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/file_history.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/git_attribution.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/hooks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/hybrid_workflow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/image.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_core_headless.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_runtime.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_test_harness.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/job_workflow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/jobs.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/knowledge_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lite.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/logs.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lsp_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lsp_diagnostics.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/message_queue.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migrate.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migration_flow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migration_spec.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/observability.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/output_modes.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/output_style.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/package.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/performance.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/plugin_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profile.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/core.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/optimizations.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/suite.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiling.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/manager.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/persistence.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/worker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_creator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_prompts.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipes.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/router.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/safe_shell.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sdk_knowledge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/session.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/handler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/templates.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/skills.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/thinking.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/todo.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/debug.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/events.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/mock_provider.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/orchestrator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/help.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/main.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/queue.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/session.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/settings.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/session_store.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/chat.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/composer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/status.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/wizard.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/yaml_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/praison_io.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/repl.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/split_tui.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/tui_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/legacy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/session/unified.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/identifiers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/sessions.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/events.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/mg_backend.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/plain.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/rich_backend.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/claude.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/launchd.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/systemd.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/windows.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/classifier.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/executor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/extractor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/reporter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/runner.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/workspace.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/auth.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/cookie_auth.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/exec_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/gateway_approval.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/magic_link.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/origin_check.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/pairing.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/pairing_routes.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_channels.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_delivery.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_polling.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_presence.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/rate_limiter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/redis_pubsub.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/llm/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/capabilities.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/knowledge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/memory.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/prompts.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/resources.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/api_key.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/oauth.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/oidc.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/scopes.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/elicitation.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/icons.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/recipe_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/recipe_cli.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/sampling.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/tasks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/tool_index.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/http_stream.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/stdio.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/profiler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/client.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/docker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/subprocess.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/test.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/grader.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/hook.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/models.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/orchestrator.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/storage.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/llm/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/llm/trainer.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/callbacks.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/setup.cfg +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_basic.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_recipe.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_registry.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_runner.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.30 → praisonai-4.6.31}/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.31
|
|
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,7 +11,7 @@ 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.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.31
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: litellm<=1.82.6,>=1.81.0
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.31
|
|
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,7 +11,7 @@ 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.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.6.31
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: litellm<=1.82.6,>=1.81.0
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -72,6 +72,16 @@ def _find_first_command(argv):
|
|
|
72
72
|
|
|
73
73
|
def _run_typer(argv):
|
|
74
74
|
"""Dispatch to the Typer CLI app."""
|
|
75
|
+
import os
|
|
76
|
+
|
|
77
|
+
# Set up safer encoding for Windows legacy terminals
|
|
78
|
+
if sys.platform == "win32" and hasattr(sys.stdout, 'encoding'):
|
|
79
|
+
encoding = getattr(sys.stdout, 'encoding', '').lower()
|
|
80
|
+
if encoding in ('cp1252', 'cp1251', 'cp850', 'ascii') or ('cp' in encoding and encoding != 'cp65001'):
|
|
81
|
+
# Force UTF-8 mode for subprocess safety
|
|
82
|
+
if 'PYTHONIOENCODING' not in os.environ:
|
|
83
|
+
os.environ['PYTHONIOENCODING'] = 'utf-8'
|
|
84
|
+
|
|
75
85
|
from praisonai.cli.app import app, register_commands
|
|
76
86
|
register_commands() # idempotent
|
|
77
87
|
|
|
@@ -79,6 +89,11 @@ def _run_typer(argv):
|
|
|
79
89
|
sys.argv = ["praisonai"] + list(argv)
|
|
80
90
|
try:
|
|
81
91
|
app()
|
|
92
|
+
except UnicodeEncodeError as e:
|
|
93
|
+
# Handle Unicode encoding errors gracefully
|
|
94
|
+
print("Error: Unable to display help due to terminal encoding limitations.", file=sys.stderr)
|
|
95
|
+
print("Try setting: $env:PYTHONIOENCODING='utf-8' (PowerShell) or set PYTHONIOENCODING=utf-8 (cmd)", file=sys.stderr)
|
|
96
|
+
sys.exit(0)
|
|
82
97
|
except SystemExit as e:
|
|
83
98
|
sys.exit(e.code if isinstance(e.code, int) else 0)
|
|
84
99
|
finally:
|
|
@@ -40,7 +40,36 @@ def _get_console():
|
|
|
40
40
|
global _console
|
|
41
41
|
if _console is None and _get_rich_available():
|
|
42
42
|
from rich.console import Console
|
|
43
|
-
|
|
43
|
+
import sys
|
|
44
|
+
import os
|
|
45
|
+
|
|
46
|
+
# Detect Windows legacy encoding (CP1252) and use safe fallback
|
|
47
|
+
if sys.platform == "win32" and hasattr(sys.stdout, 'encoding'):
|
|
48
|
+
encoding = getattr(sys.stdout, 'encoding', '').lower()
|
|
49
|
+
# Check for Windows legacy code pages that can't handle Unicode
|
|
50
|
+
if encoding in ('cp1252', 'cp1251', 'cp850', 'ascii') or ('cp' in encoding and encoding != 'cp65001'):
|
|
51
|
+
# Force UTF-8 mode or create console with safe encoding handling
|
|
52
|
+
try:
|
|
53
|
+
# Set PYTHONIOENCODING to utf-8 for subprocess safety (won't affect current process)
|
|
54
|
+
if 'PYTHONIOENCODING' not in os.environ:
|
|
55
|
+
os.environ['PYTHONIOENCODING'] = 'utf-8'
|
|
56
|
+
|
|
57
|
+
# Create console with safe encoding options
|
|
58
|
+
_console = Console(
|
|
59
|
+
force_terminal=True,
|
|
60
|
+
legacy_windows=True, # Use legacy Windows mode
|
|
61
|
+
safe_box=True, # Use safe box characters
|
|
62
|
+
emoji=False, # Disable emojis on Windows legacy
|
|
63
|
+
color_system='standard', # Use basic colors
|
|
64
|
+
_environ=os.environ # Pass updated environment
|
|
65
|
+
)
|
|
66
|
+
except Exception:
|
|
67
|
+
# Fallback to basic console if Rich options fail
|
|
68
|
+
_console = Console(force_terminal=False, no_color=True)
|
|
69
|
+
else:
|
|
70
|
+
_console = Console()
|
|
71
|
+
else:
|
|
72
|
+
_console = Console()
|
|
44
73
|
return _console
|
|
45
74
|
|
|
46
75
|
|
|
@@ -137,6 +166,19 @@ class OutputController:
|
|
|
137
166
|
"""Check if in screen reader mode."""
|
|
138
167
|
return self.mode == OutputMode.SCREEN_READER
|
|
139
168
|
|
|
169
|
+
def _safe_console_print(self, *args, **kwargs) -> None:
|
|
170
|
+
"""Safely print to console with UnicodeEncodeError protection."""
|
|
171
|
+
if self.console:
|
|
172
|
+
try:
|
|
173
|
+
self.console.print(*args, **kwargs)
|
|
174
|
+
except UnicodeEncodeError:
|
|
175
|
+
# Fallback to plain text if Rich can't handle the encoding
|
|
176
|
+
message = str(args[0]) if args else ""
|
|
177
|
+
print(message.encode('ascii', 'replace').decode('ascii'))
|
|
178
|
+
else:
|
|
179
|
+
message = str(args[0]) if args else ""
|
|
180
|
+
print(message)
|
|
181
|
+
|
|
140
182
|
def print(self, message: str, style: Optional[str] = None, **kwargs) -> None:
|
|
141
183
|
"""Print a message respecting the current mode."""
|
|
142
184
|
if self.is_quiet:
|
|
@@ -150,11 +192,8 @@ class OutputController:
|
|
|
150
192
|
# Plain text output
|
|
151
193
|
print(message)
|
|
152
194
|
else:
|
|
153
|
-
# Rich formatted output
|
|
154
|
-
|
|
155
|
-
self.console.print(message, style=style, **kwargs)
|
|
156
|
-
else:
|
|
157
|
-
print(message)
|
|
195
|
+
# Rich formatted output with encoding safety
|
|
196
|
+
self._safe_console_print(message, style=style, **kwargs)
|
|
158
197
|
|
|
159
198
|
def print_error(self, message: str, code: Optional[str] = None, remediation: Optional[str] = None) -> None:
|
|
160
199
|
"""Print an error message with optional remediation."""
|
|
@@ -187,10 +226,16 @@ class OutputController:
|
|
|
187
226
|
if remediation:
|
|
188
227
|
content.append(f"\n💡 Fix: {remediation}", style="yellow")
|
|
189
228
|
|
|
190
|
-
|
|
191
|
-
self.console
|
|
192
|
-
|
|
229
|
+
try:
|
|
230
|
+
if self.console:
|
|
231
|
+
self.console.print(Panel(content, title="Error", border_style="red"))
|
|
232
|
+
else:
|
|
233
|
+
print(f"ERROR: {message}", file=sys.stderr)
|
|
234
|
+
except UnicodeEncodeError:
|
|
235
|
+
# Fallback to plain text if emoji rendering fails
|
|
193
236
|
print(f"ERROR: {message}", file=sys.stderr)
|
|
237
|
+
if remediation:
|
|
238
|
+
print(f"FIX: {remediation}", file=sys.stderr)
|
|
194
239
|
|
|
195
240
|
def print_success(self, message: str, data: Optional[Dict[str, Any]] = None) -> None:
|
|
196
241
|
"""Print a success message."""
|
|
@@ -214,7 +259,10 @@ class OutputController:
|
|
|
214
259
|
if self.is_screen_reader or self.no_color or not _get_rich_available():
|
|
215
260
|
print(f"SUCCESS: {message}")
|
|
216
261
|
else:
|
|
217
|
-
|
|
262
|
+
try:
|
|
263
|
+
self.print(f"✅ {message}", style="bold green")
|
|
264
|
+
except UnicodeEncodeError:
|
|
265
|
+
print(f"SUCCESS: {message}")
|
|
218
266
|
|
|
219
267
|
def print_warning(self, message: str) -> None:
|
|
220
268
|
"""Print a warning message."""
|
|
@@ -224,7 +272,10 @@ class OutputController:
|
|
|
224
272
|
if self.is_screen_reader or self.no_color or not _get_rich_available():
|
|
225
273
|
print(f"WARNING: {message}")
|
|
226
274
|
else:
|
|
227
|
-
|
|
275
|
+
try:
|
|
276
|
+
self.print(f"⚠️ {message}", style="bold yellow")
|
|
277
|
+
except UnicodeEncodeError:
|
|
278
|
+
print(f"WARNING: {message}")
|
|
228
279
|
|
|
229
280
|
def print_info(self, message: str) -> None:
|
|
230
281
|
"""Print an info message."""
|
|
@@ -234,7 +285,10 @@ class OutputController:
|
|
|
234
285
|
if self.is_screen_reader or self.no_color or not _get_rich_available():
|
|
235
286
|
print(f"INFO: {message}")
|
|
236
287
|
else:
|
|
237
|
-
|
|
288
|
+
try:
|
|
289
|
+
self.print(f"ℹ️ {message}", style="bold blue")
|
|
290
|
+
except UnicodeEncodeError:
|
|
291
|
+
print(f"INFO: {message}")
|
|
238
292
|
|
|
239
293
|
def print_debug(self, message: str) -> None:
|
|
240
294
|
"""Print a debug message (only in verbose mode)."""
|
|
@@ -244,7 +298,10 @@ class OutputController:
|
|
|
244
298
|
if self.is_screen_reader or self.no_color or not _get_rich_available():
|
|
245
299
|
print(f"DEBUG: {message}")
|
|
246
300
|
else:
|
|
247
|
-
|
|
301
|
+
try:
|
|
302
|
+
self.print(f"🔍 {message}", style="dim")
|
|
303
|
+
except UnicodeEncodeError:
|
|
304
|
+
print(f"DEBUG: {message}")
|
|
248
305
|
|
|
249
306
|
def emit_event(self, event_type: str, message: Optional[str] = None, data: Optional[Dict[str, Any]] = None, agent_id: Optional[str] = None) -> None:
|
|
250
307
|
"""Emit a stream event (for stream-json mode)."""
|
|
@@ -321,7 +378,28 @@ class OutputController:
|
|
|
321
378
|
table.add_row(*[str(cell) for cell in row])
|
|
322
379
|
|
|
323
380
|
if self.console:
|
|
324
|
-
|
|
381
|
+
try:
|
|
382
|
+
self.console.print(table)
|
|
383
|
+
except UnicodeEncodeError:
|
|
384
|
+
# Fallback to plain text table if Rich fails
|
|
385
|
+
if title:
|
|
386
|
+
print(f"\n{title}")
|
|
387
|
+
print("-" * len(title))
|
|
388
|
+
|
|
389
|
+
# Calculate column widths
|
|
390
|
+
widths = [len(h) for h in headers]
|
|
391
|
+
for row in rows:
|
|
392
|
+
for i, cell in enumerate(row):
|
|
393
|
+
widths[i] = max(widths[i], len(str(cell)))
|
|
394
|
+
|
|
395
|
+
# Print header
|
|
396
|
+
header_line = " | ".join(h.ljust(widths[i]) for i, h in enumerate(headers))
|
|
397
|
+
print(header_line)
|
|
398
|
+
print("-" * len(header_line))
|
|
399
|
+
|
|
400
|
+
# Print rows
|
|
401
|
+
for row in rows:
|
|
402
|
+
print(" | ".join(str(cell).ljust(widths[i]) for i, cell in enumerate(row)))
|
|
325
403
|
|
|
326
404
|
def print_panel(self, content: str, title: Optional[str] = None, style: str = "cyan") -> None:
|
|
327
405
|
"""Print a panel."""
|
|
@@ -338,7 +416,15 @@ class OutputController:
|
|
|
338
416
|
from rich.panel import Panel
|
|
339
417
|
|
|
340
418
|
if self.console:
|
|
341
|
-
|
|
419
|
+
try:
|
|
420
|
+
self.console.print(Panel(content, title=title, border_style=style))
|
|
421
|
+
except UnicodeEncodeError:
|
|
422
|
+
# Fallback to plain text if panel rendering fails
|
|
423
|
+
if title:
|
|
424
|
+
print(f"\n=== {title} ===")
|
|
425
|
+
print(content)
|
|
426
|
+
if title:
|
|
427
|
+
print("=" * (len(title) + 8))
|
|
342
428
|
|
|
343
429
|
def get_events(self) -> List[Dict[str, Any]]:
|
|
344
430
|
"""Get all collected events."""
|
|
@@ -57,7 +57,7 @@ class CloudDeployer:
|
|
|
57
57
|
file.write("FROM python:3.11-slim\n")
|
|
58
58
|
file.write("WORKDIR /app\n")
|
|
59
59
|
file.write("COPY . .\n")
|
|
60
|
-
file.write("RUN pip install flask praisonai==4.6.
|
|
60
|
+
file.write("RUN pip install flask praisonai==4.6.31 gunicorn markdown\n")
|
|
61
61
|
file.write("EXPOSE 8080\n")
|
|
62
62
|
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
|
|
63
63
|
|
|
@@ -13,12 +13,24 @@ logging.basicConfig(level=_loglevel, format='%(asctime)s - %(levelname)s - %(mes
|
|
|
13
13
|
# Constants
|
|
14
14
|
LOCAL_SERVER_API_KEY_PLACEHOLDER = "not-needed"
|
|
15
15
|
|
|
16
|
+
def _is_module_available(module_name: str) -> bool:
|
|
17
|
+
"""Safely check if a module spec is importable.
|
|
18
|
+
|
|
19
|
+
Guards against missing parent packages (e.g. `google.generativeai`
|
|
20
|
+
when the `google` namespace is absent) so test collection in a
|
|
21
|
+
base install does not fail.
|
|
22
|
+
"""
|
|
23
|
+
try:
|
|
24
|
+
return importlib.util.find_spec(module_name) is not None
|
|
25
|
+
except (ImportError, AttributeError, ValueError):
|
|
26
|
+
return False
|
|
27
|
+
|
|
16
28
|
# Use find_spec for fast availability checks (no actual import)
|
|
17
29
|
# This avoids the ~3200ms langchain_openai import at module load
|
|
18
|
-
OPENAI_AVAILABLE =
|
|
19
|
-
GOOGLE_GENAI_AVAILABLE =
|
|
20
|
-
ANTHROPIC_AVAILABLE =
|
|
21
|
-
COHERE_AVAILABLE =
|
|
30
|
+
OPENAI_AVAILABLE = _is_module_available("openai")
|
|
31
|
+
GOOGLE_GENAI_AVAILABLE = _is_module_available("google.generativeai")
|
|
32
|
+
ANTHROPIC_AVAILABLE = _is_module_available("anthropic")
|
|
33
|
+
COHERE_AVAILABLE = _is_module_available("cohere")
|
|
22
34
|
|
|
23
35
|
# Lazy import helpers for provider SDKs
|
|
24
36
|
def _get_openai_client():
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"""Bridge praisonaiagents SessionStore → aiui BaseDataStore.
|
|
2
|
+
|
|
3
|
+
Allows any SessionStoreProtocol implementation (file/Redis/Mongo) to back
|
|
4
|
+
the aiui dashboard's Sessions page. No Chainlit required.
|
|
5
|
+
"""
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import uuid
|
|
10
|
+
from typing import Any, Optional
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
# Module-level cached implementation class
|
|
15
|
+
_impl_cls = None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _build_impl_cls():
|
|
19
|
+
"""Build the implementation class with BaseDataStore inheritance.
|
|
20
|
+
|
|
21
|
+
Thread-safe lazy class factory that imports BaseDataStore and creates
|
|
22
|
+
a proper subclass. This avoids runtime __bases__ mutation and ensures
|
|
23
|
+
BaseDataStore.__init__ is properly called.
|
|
24
|
+
"""
|
|
25
|
+
global _impl_cls
|
|
26
|
+
if _impl_cls is not None:
|
|
27
|
+
return _impl_cls
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
from praisonaiui.datastore import BaseDataStore
|
|
31
|
+
except ImportError as e:
|
|
32
|
+
raise ImportError(
|
|
33
|
+
"praisonaiui is required for PraisonAISessionDataStore. "
|
|
34
|
+
"Install with: pip install 'praisonai[ui]'"
|
|
35
|
+
) from e
|
|
36
|
+
|
|
37
|
+
try:
|
|
38
|
+
from praisonaiagents.session import get_hierarchical_session_store
|
|
39
|
+
except ImportError as e:
|
|
40
|
+
raise ImportError(
|
|
41
|
+
"praisonaiagents is required for PraisonAISessionDataStore. "
|
|
42
|
+
"Install with: pip install praisonaiagents"
|
|
43
|
+
) from e
|
|
44
|
+
|
|
45
|
+
class _PraisonAISessionDataStoreImpl(BaseDataStore):
|
|
46
|
+
"""Implementation class that properly inherits from BaseDataStore."""
|
|
47
|
+
|
|
48
|
+
def __init__(self, store: Optional[Any] = None):
|
|
49
|
+
"""Initialize with an optional session store, defaults to hierarchical store.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
store: Optional SessionStoreProtocol implementation
|
|
53
|
+
"""
|
|
54
|
+
super().__init__() # Properly call BaseDataStore.__init__()
|
|
55
|
+
self._store = store or get_hierarchical_session_store()
|
|
56
|
+
|
|
57
|
+
def _new_id(self) -> str:
|
|
58
|
+
"""Generate a new session ID."""
|
|
59
|
+
return str(uuid.uuid4())
|
|
60
|
+
|
|
61
|
+
async def list_sessions(self) -> list[dict[str, Any]]:
|
|
62
|
+
"""List all available sessions."""
|
|
63
|
+
# Check if store supports listing (DefaultSessionStore/HierarchicalSessionStore do)
|
|
64
|
+
list_fn = getattr(self._store, "list_sessions", None)
|
|
65
|
+
if list_fn is None:
|
|
66
|
+
return [] # Protocol implementation doesn't support listing
|
|
67
|
+
|
|
68
|
+
try:
|
|
69
|
+
# DefaultSessionStore/HierarchicalSessionStore return list[dict]
|
|
70
|
+
return list_fn(limit=50) or []
|
|
71
|
+
except Exception:
|
|
72
|
+
logger.exception("Failed to list sessions")
|
|
73
|
+
return []
|
|
74
|
+
|
|
75
|
+
async def get_session(self, session_id: str) -> Optional[dict[str, Any]]:
|
|
76
|
+
"""Get a specific session by ID."""
|
|
77
|
+
if not self._store.session_exists(session_id):
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
chat_history = self._store.get_chat_history(session_id)
|
|
82
|
+
return {
|
|
83
|
+
"id": session_id,
|
|
84
|
+
"messages": chat_history or [],
|
|
85
|
+
}
|
|
86
|
+
except Exception:
|
|
87
|
+
logger.exception("Failed to load session %s", session_id)
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
async def create_session(self, session_id: Optional[str] = None) -> dict[str, Any]:
|
|
91
|
+
"""Create a new session."""
|
|
92
|
+
sid = session_id or self._new_id()
|
|
93
|
+
# Sessions are created lazily on first add_message
|
|
94
|
+
return {
|
|
95
|
+
"id": sid,
|
|
96
|
+
"messages": []
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
async def delete_session(self, session_id: str) -> bool:
|
|
100
|
+
"""Delete a session and return success status."""
|
|
101
|
+
try:
|
|
102
|
+
return self._store.delete_session(session_id)
|
|
103
|
+
except Exception:
|
|
104
|
+
logger.exception("Failed to delete session %s", session_id)
|
|
105
|
+
return False
|
|
106
|
+
|
|
107
|
+
async def add_message(self, session_id: str, message: dict[str, Any]):
|
|
108
|
+
"""Add a message to a session."""
|
|
109
|
+
self._store.add_message(
|
|
110
|
+
session_id=session_id,
|
|
111
|
+
role=message.get("role", "user"),
|
|
112
|
+
content=message.get("content", ""),
|
|
113
|
+
metadata=message.get("metadata")
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
async def get_messages(self, session_id: str) -> list[dict[str, Any]]:
|
|
117
|
+
"""Get all messages for a session."""
|
|
118
|
+
if not self._store.session_exists(session_id):
|
|
119
|
+
return []
|
|
120
|
+
|
|
121
|
+
try:
|
|
122
|
+
return self._store.get_chat_history(session_id) or []
|
|
123
|
+
except Exception:
|
|
124
|
+
logger.exception("Failed to load messages for session %s", session_id)
|
|
125
|
+
return []
|
|
126
|
+
|
|
127
|
+
_impl_cls = _PraisonAISessionDataStoreImpl
|
|
128
|
+
return _impl_cls
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class PraisonAISessionDataStore:
|
|
132
|
+
"""Adapter that bridges PraisonAI SessionStoreProtocol to aiui BaseDataStore.
|
|
133
|
+
|
|
134
|
+
Dependency imports are deferred until instantiation to allow test
|
|
135
|
+
collection without optional modules installed.
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
def __new__(cls, store: Optional[Any] = None):
|
|
139
|
+
"""Factory method that returns a properly configured implementation instance."""
|
|
140
|
+
impl_cls = _build_impl_cls()
|
|
141
|
+
return impl_cls(store)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.6.31"
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"""Bridge praisonaiagents SessionStore → aiui BaseDataStore.
|
|
2
|
-
|
|
3
|
-
Allows any SessionStoreProtocol implementation (file/Redis/Mongo) to back
|
|
4
|
-
the aiui dashboard's Sessions page. No Chainlit required.
|
|
5
|
-
"""
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
import logging
|
|
9
|
-
import uuid
|
|
10
|
-
from typing import Any, Optional
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
# Fail loudly on missing optional dependencies per AGENTS.md §4.2
|
|
15
|
-
try:
|
|
16
|
-
from praisonaiui.datastore import BaseDataStore
|
|
17
|
-
except ImportError as e:
|
|
18
|
-
raise ImportError(
|
|
19
|
-
"praisonaiui is required for PraisonAISessionDataStore. "
|
|
20
|
-
"Install with: pip install 'praisonai[ui]'"
|
|
21
|
-
) from e
|
|
22
|
-
|
|
23
|
-
try:
|
|
24
|
-
from praisonaiagents.session import SessionStoreProtocol
|
|
25
|
-
from praisonaiagents.session import get_hierarchical_session_store
|
|
26
|
-
except ImportError as e:
|
|
27
|
-
raise ImportError(
|
|
28
|
-
"praisonaiagents is required for PraisonAISessionDataStore. "
|
|
29
|
-
"Install with: pip install praisonaiagents"
|
|
30
|
-
) from e
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class PraisonAISessionDataStore(BaseDataStore):
|
|
34
|
-
"""Adapter that bridges PraisonAI SessionStoreProtocol to aiui BaseDataStore."""
|
|
35
|
-
|
|
36
|
-
def __init__(self, store: Optional[SessionStoreProtocol] = None):
|
|
37
|
-
"""Initialize with an optional session store, defaults to hierarchical store."""
|
|
38
|
-
self._store = store or get_hierarchical_session_store()
|
|
39
|
-
|
|
40
|
-
def _new_id(self) -> str:
|
|
41
|
-
"""Generate a new session ID."""
|
|
42
|
-
return str(uuid.uuid4())
|
|
43
|
-
|
|
44
|
-
async def list_sessions(self) -> list[dict[str, Any]]:
|
|
45
|
-
"""List all available sessions."""
|
|
46
|
-
# Check if store supports listing (DefaultSessionStore/HierarchicalSessionStore do)
|
|
47
|
-
list_fn = getattr(self._store, "list_sessions", None)
|
|
48
|
-
if list_fn is None:
|
|
49
|
-
return [] # Protocol implementation doesn't support listing
|
|
50
|
-
|
|
51
|
-
try:
|
|
52
|
-
# DefaultSessionStore/HierarchicalSessionStore return list[dict]
|
|
53
|
-
return list_fn(limit=50) or []
|
|
54
|
-
except Exception:
|
|
55
|
-
logger.exception("Failed to list sessions")
|
|
56
|
-
return []
|
|
57
|
-
|
|
58
|
-
async def get_session(self, session_id: str) -> Optional[dict[str, Any]]:
|
|
59
|
-
"""Get a specific session by ID."""
|
|
60
|
-
if not self._store.session_exists(session_id):
|
|
61
|
-
return None
|
|
62
|
-
|
|
63
|
-
try:
|
|
64
|
-
chat_history = self._store.get_chat_history(session_id)
|
|
65
|
-
return {
|
|
66
|
-
"id": session_id,
|
|
67
|
-
"messages": chat_history or [],
|
|
68
|
-
}
|
|
69
|
-
except Exception:
|
|
70
|
-
logger.exception("Failed to load session %s", session_id)
|
|
71
|
-
return None
|
|
72
|
-
|
|
73
|
-
async def create_session(self, session_id: Optional[str] = None) -> dict[str, Any]:
|
|
74
|
-
"""Create a new session."""
|
|
75
|
-
sid = session_id or self._new_id()
|
|
76
|
-
# Sessions are created lazily on first add_message
|
|
77
|
-
return {
|
|
78
|
-
"id": sid,
|
|
79
|
-
"messages": []
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
async def delete_session(self, session_id: str) -> bool:
|
|
83
|
-
"""Delete a session and return success status."""
|
|
84
|
-
try:
|
|
85
|
-
return self._store.delete_session(session_id)
|
|
86
|
-
except Exception:
|
|
87
|
-
logger.exception("Failed to delete session %s", session_id)
|
|
88
|
-
return False
|
|
89
|
-
|
|
90
|
-
async def add_message(self, session_id: str, message: dict[str, Any]):
|
|
91
|
-
"""Add a message to a session."""
|
|
92
|
-
self._store.add_message(
|
|
93
|
-
session_id=session_id,
|
|
94
|
-
role=message.get("role", "user"),
|
|
95
|
-
content=message.get("content", ""),
|
|
96
|
-
metadata=message.get("metadata")
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
async def get_messages(self, session_id: str) -> list[dict[str, Any]]:
|
|
100
|
-
"""Get all messages for a session."""
|
|
101
|
-
if not self._store.session_exists(session_id):
|
|
102
|
-
return []
|
|
103
|
-
|
|
104
|
-
try:
|
|
105
|
-
return self._store.get_chat_history(session_id) or []
|
|
106
|
-
except Exception:
|
|
107
|
-
logger.exception("Failed to load messages for session %s", session_id)
|
|
108
|
-
return []
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "4.6.30"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|