PraisonAI 4.6.34__tar.gz → 4.6.35__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.34 → praisonai-4.6.35}/PKG-INFO +2 -2
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/PKG-INFO +2 -2
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/SOURCES.txt +1 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/requires.txt +1 -1
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy.py +1 -1
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/llm/registry.py +115 -81
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_mysql.py +30 -18
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_postgres.py +17 -6
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_sqlite.py +19 -7
- praisonai-4.6.35/praisonai/persistence/factory.py +126 -0
- praisonai-4.6.35/praisonai/persistence/registry.py +352 -0
- praisonai-4.6.35/praisonai/version.py +1 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/pyproject.toml +1 -1
- praisonai-4.6.34/praisonai/persistence/factory.py +0 -322
- praisonai-4.6.34/praisonai/version.py +0 -1
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/README.md +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/__main__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/docs_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/docs_generator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/generator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/python_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/rust_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/topic_normalizer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/typescript_extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_logging.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/session.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agents_generator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/api/call.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/app/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/app/agentos.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/auto.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_ack.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_approval_base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_auth.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_chunk.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_commands.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_config_schema.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_debounce.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_defaults.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_discord_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_email_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_http_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_pairing_ui.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_protocol_mixin.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_rate_limit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_resilience.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_session.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_slack_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_telegram_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_unknown_user.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_webhook_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/agentmail.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/bot.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/botos.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/discord.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/email.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/media.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/slack.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/telegram.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/whatsapp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/benchmark.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cdp_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cdp_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/diagnostics.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/launcher.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/playwright_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/profiling.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/protocol.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/report.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/sessions.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/video.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/claw/default_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/branding.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/loader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/paths.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/schema.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/core.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/profiler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/request.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/result.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/action_orchestrator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/at_mentions.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/audit_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/auto_mode.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/benchmark.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/capabilities.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/checkpoints.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/cli_profiler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/code_intelligence.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/compaction.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/compare.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/config_hierarchy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/context_manager.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/csv_test_runner.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/debug.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/diag.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/display_jsonl.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/engine.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/formatters.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/handler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/examples.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/file_history.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/git_attribution.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/hooks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/hybrid_workflow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/image.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_core_headless.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_runtime.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_test_harness.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/job_workflow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/jobs.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/knowledge_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lite.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/logs.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lsp_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lsp_diagnostics.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/message_queue.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migrate.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migration_flow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migration_spec.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/observability.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/output_modes.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/output_style.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/package.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/performance.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/plugin_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profile.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/core.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/optimizations.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/suite.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiling.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/manager.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/persistence.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/worker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_creator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_prompts.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipes.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/router.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/safe_shell.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sdk_knowledge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/session.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/handler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/templates.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/skills.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/thinking.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/todo.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/debug.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/events.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/mock_provider.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/orchestrator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/help.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/main.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/queue.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/session.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/settings.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/session_store.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/chat.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/composer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/status.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/wizard.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/yaml_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/praison_io.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/repl.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/split_tui.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/tui_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/legacy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/main.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/output/console.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/session/unified.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/identifiers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/sessions.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/events.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/mg_backend.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/plain.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/rich_backend.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/claude.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/history_store.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/queue.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/setup.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/launchd.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/systemd.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/windows.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/db/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/db/adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/api.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/docker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/doctor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/main.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/aws.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/azure.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/gcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/schema.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/classifier.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/executor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/extractor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/reporter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/runner.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/workspace.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/client.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/converter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/auth.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/cookie_auth.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/exec_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/gateway_approval.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/magic_link.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/origin_check.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/pairing.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/pairing_routes.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_channels.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_delivery.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_polling.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_presence.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/rate_limiter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/redis_pubsub.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/router.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/store.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/capabilities.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/knowledge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/memory.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/prompts.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/resources.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/api_key.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/oauth.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/oidc.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/scopes.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/elicitation.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/icons.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/recipe_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/recipe_cli.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/sampling.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/tasks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/tool_index.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/http_stream.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/stdio.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/client.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/tests/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/tests/test_all_backends.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/profiler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/client.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/transports.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/core.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/history.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/security.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/server.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/applier.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/judge.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/plan.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/player.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/reader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/storage.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/writer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/daytona.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/docker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/modal.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/sandlock.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/ssh.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/subprocess.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/audit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/injection.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/protected.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/build.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/enhanced_templates.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/cache.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/loader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/security.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/test.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tool_registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/audio.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/grader.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/hook.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/models.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/orchestrator.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/storage.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/llm/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/llm/trainer.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train_vision.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/callbacks.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/context.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/upload_vision.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/setup.cfg +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_approval_system.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_basic.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_cli_features.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_recipe.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_registry.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_runner.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.6.34 → praisonai-4.6.35}/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.35
|
|
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.35
|
|
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.35
|
|
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.35
|
|
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
|
|
@@ -584,6 +584,7 @@ praisonai/persistence/__init__.py
|
|
|
584
584
|
praisonai/persistence/config.py
|
|
585
585
|
praisonai/persistence/factory.py
|
|
586
586
|
praisonai/persistence/orchestrator.py
|
|
587
|
+
praisonai/persistence/registry.py
|
|
587
588
|
praisonai/persistence/conversation/__init__.py
|
|
588
589
|
praisonai/persistence/conversation/async_mysql.py
|
|
589
590
|
praisonai/persistence/conversation/async_postgres.py
|
|
@@ -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.35 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
|
|
|
@@ -21,6 +21,7 @@ Example:
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
from typing import Any, Callable, Dict, List, Optional, Type, Union
|
|
24
|
+
import threading
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
# Type aliases
|
|
@@ -35,12 +36,33 @@ class LLMProviderRegistry:
|
|
|
35
36
|
|
|
36
37
|
Manages registration and resolution of LLM providers by name.
|
|
37
38
|
Supports lazy loading, aliases, and isolated instances.
|
|
39
|
+
Thread-safe for concurrent operations.
|
|
38
40
|
"""
|
|
39
41
|
|
|
42
|
+
_instance: Optional["LLMProviderRegistry"] = None
|
|
43
|
+
_instance_lock = threading.Lock()
|
|
44
|
+
|
|
40
45
|
def __init__(self):
|
|
41
46
|
"""Initialize an empty registry."""
|
|
42
47
|
self._providers: Dict[str, ProviderType] = {}
|
|
43
48
|
self._aliases: Dict[str, str] = {} # alias -> canonical name
|
|
49
|
+
self._lock = threading.RLock() # RLock for re-entrant calls
|
|
50
|
+
# Register built-in providers during initialization
|
|
51
|
+
_register_builtin_providers(self)
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def get_instance(cls) -> "LLMProviderRegistry":
|
|
55
|
+
"""
|
|
56
|
+
Get the singleton registry instance.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
LLMProviderRegistry: The singleton registry instance
|
|
60
|
+
"""
|
|
61
|
+
if cls._instance is None:
|
|
62
|
+
with cls._instance_lock:
|
|
63
|
+
if cls._instance is None:
|
|
64
|
+
cls._instance = cls()
|
|
65
|
+
return cls._instance
|
|
44
66
|
|
|
45
67
|
def register(
|
|
46
68
|
self,
|
|
@@ -62,35 +84,48 @@ class LLMProviderRegistry:
|
|
|
62
84
|
Raises:
|
|
63
85
|
ValueError: If name is already registered (unless override=True)
|
|
64
86
|
"""
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
)
|
|
93
|
-
|
|
87
|
+
with self._lock:
|
|
88
|
+
normalized_name = name.lower()
|
|
89
|
+
|
|
90
|
+
# Check for existing registration
|
|
91
|
+
if normalized_name in self._providers and not override:
|
|
92
|
+
raise ValueError(
|
|
93
|
+
f"Provider '{name}' is already registered. "
|
|
94
|
+
f"Use override=True to replace it."
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
# Check if this canonical name conflicts with existing alias
|
|
98
|
+
if normalized_name in self._aliases and not override:
|
|
99
|
+
existing_target = self._aliases[normalized_name]
|
|
100
|
+
raise ValueError(
|
|
101
|
+
f"Cannot register provider '{name}' - it conflicts with existing alias "
|
|
102
|
+
f"(currently points to '{existing_target}'). Use override=True to replace it."
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# If override=True, clean up any existing alias before registering canonical name
|
|
106
|
+
if override and normalized_name in self._aliases:
|
|
107
|
+
del self._aliases[normalized_name]
|
|
108
|
+
|
|
109
|
+
self._providers[normalized_name] = provider
|
|
110
|
+
|
|
111
|
+
# Register aliases
|
|
112
|
+
if aliases:
|
|
113
|
+
for alias in aliases:
|
|
114
|
+
normalized_alias = alias.lower()
|
|
115
|
+
# Check collision with existing provider name
|
|
116
|
+
if normalized_alias in self._providers and not override:
|
|
117
|
+
raise ValueError(
|
|
118
|
+
f"Alias '{alias}' conflicts with existing provider name. "
|
|
119
|
+
f"Use override=True to replace it."
|
|
120
|
+
)
|
|
121
|
+
# Check collision with existing alias
|
|
122
|
+
if normalized_alias in self._aliases and not override:
|
|
123
|
+
existing_target = self._aliases[normalized_alias]
|
|
124
|
+
raise ValueError(
|
|
125
|
+
f"Alias '{alias}' is already registered (points to '{existing_target}'). "
|
|
126
|
+
f"Use override=True to replace it."
|
|
127
|
+
)
|
|
128
|
+
self._aliases[normalized_alias] = normalized_name
|
|
94
129
|
|
|
95
130
|
def unregister(self, name: str) -> bool:
|
|
96
131
|
"""
|
|
@@ -102,27 +137,28 @@ class LLMProviderRegistry:
|
|
|
102
137
|
Returns:
|
|
103
138
|
True if provider was unregistered, False if not found
|
|
104
139
|
"""
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
# Check if it's an alias
|
|
108
|
-
if normalized_name in self._aliases:
|
|
109
|
-
del self._aliases[normalized_name]
|
|
110
|
-
return True
|
|
111
|
-
|
|
112
|
-
# Check if it's a canonical name
|
|
113
|
-
if normalized_name in self._providers:
|
|
114
|
-
# Remove all aliases pointing to this provider
|
|
115
|
-
aliases_to_remove = [
|
|
116
|
-
alias for alias, canonical in self._aliases.items()
|
|
117
|
-
if canonical == normalized_name
|
|
118
|
-
]
|
|
119
|
-
for alias in aliases_to_remove:
|
|
120
|
-
del self._aliases[alias]
|
|
140
|
+
with self._lock:
|
|
141
|
+
normalized_name = name.lower()
|
|
121
142
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
143
|
+
# Check if it's an alias
|
|
144
|
+
if normalized_name in self._aliases:
|
|
145
|
+
del self._aliases[normalized_name]
|
|
146
|
+
return True
|
|
147
|
+
|
|
148
|
+
# Check if it's a canonical name
|
|
149
|
+
if normalized_name in self._providers:
|
|
150
|
+
# Remove all aliases pointing to this provider
|
|
151
|
+
aliases_to_remove = [
|
|
152
|
+
alias for alias, canonical in self._aliases.items()
|
|
153
|
+
if canonical == normalized_name
|
|
154
|
+
]
|
|
155
|
+
for alias in aliases_to_remove:
|
|
156
|
+
del self._aliases[alias]
|
|
157
|
+
|
|
158
|
+
del self._providers[normalized_name]
|
|
159
|
+
return True
|
|
160
|
+
|
|
161
|
+
return False
|
|
126
162
|
|
|
127
163
|
def has(self, name: str) -> bool:
|
|
128
164
|
"""
|
|
@@ -134,8 +170,9 @@ class LLMProviderRegistry:
|
|
|
134
170
|
Returns:
|
|
135
171
|
True if provider is registered
|
|
136
172
|
"""
|
|
137
|
-
|
|
138
|
-
|
|
173
|
+
with self._lock:
|
|
174
|
+
normalized_name = name.lower()
|
|
175
|
+
return normalized_name in self._providers or normalized_name in self._aliases
|
|
139
176
|
|
|
140
177
|
def list(self) -> List[str]:
|
|
141
178
|
"""
|
|
@@ -144,7 +181,8 @@ class LLMProviderRegistry:
|
|
|
144
181
|
Returns:
|
|
145
182
|
List of provider names
|
|
146
183
|
"""
|
|
147
|
-
|
|
184
|
+
with self._lock:
|
|
185
|
+
return list(self._providers.keys())
|
|
148
186
|
|
|
149
187
|
def list_all(self) -> List[str]:
|
|
150
188
|
"""
|
|
@@ -153,7 +191,8 @@ class LLMProviderRegistry:
|
|
|
153
191
|
Returns:
|
|
154
192
|
List of all registered names and aliases
|
|
155
193
|
"""
|
|
156
|
-
|
|
194
|
+
with self._lock:
|
|
195
|
+
return list(self._providers.keys()) + list(self._aliases.keys())
|
|
157
196
|
|
|
158
197
|
def resolve(
|
|
159
198
|
self,
|
|
@@ -175,21 +214,22 @@ class LLMProviderRegistry:
|
|
|
175
214
|
Raises:
|
|
176
215
|
ValueError: If provider not found
|
|
177
216
|
"""
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
217
|
+
with self._lock:
|
|
218
|
+
normalized_name = name.lower()
|
|
219
|
+
|
|
220
|
+
# Resolve alias to canonical name
|
|
221
|
+
canonical_name = self._aliases.get(normalized_name, normalized_name)
|
|
222
|
+
|
|
223
|
+
provider = self._providers.get(canonical_name)
|
|
224
|
+
if provider is None:
|
|
225
|
+
available = list(self._providers.keys()) # Don't call self.list() to avoid double-locking
|
|
226
|
+
raise ValueError(
|
|
227
|
+
f"Unknown provider: '{name}'. "
|
|
228
|
+
f"Available providers: {', '.join(available) if available else 'none'}. "
|
|
229
|
+
f"Register a custom provider with register_llm_provider('{name}', YourProviderClass)."
|
|
230
|
+
)
|
|
191
231
|
|
|
192
|
-
# Create instance
|
|
232
|
+
# Create instance outside the lock
|
|
193
233
|
return provider(model_id, config)
|
|
194
234
|
|
|
195
235
|
def get(self, name: str) -> Optional[ProviderType]:
|
|
@@ -202,30 +242,24 @@ class LLMProviderRegistry:
|
|
|
202
242
|
Returns:
|
|
203
243
|
Provider class/factory or None
|
|
204
244
|
"""
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
245
|
+
with self._lock:
|
|
246
|
+
normalized_name = name.lower()
|
|
247
|
+
canonical_name = self._aliases.get(normalized_name, normalized_name)
|
|
248
|
+
return self._providers.get(canonical_name)
|
|
208
249
|
|
|
209
250
|
|
|
210
251
|
# ============================================================================
|
|
211
252
|
# Default Registry Singleton
|
|
212
253
|
# ============================================================================
|
|
213
254
|
|
|
214
|
-
_default_registry: Optional[LLMProviderRegistry] = None
|
|
215
|
-
|
|
216
|
-
|
|
217
255
|
def get_default_llm_registry() -> LLMProviderRegistry:
|
|
218
256
|
"""
|
|
219
257
|
Get the default global LLM provider registry.
|
|
220
258
|
|
|
221
259
|
This is the registry used by create_llm_provider() when no custom registry
|
|
222
|
-
is specified.
|
|
260
|
+
is specified. Uses the thread-safe singleton pattern.
|
|
223
261
|
"""
|
|
224
|
-
|
|
225
|
-
if _default_registry is None:
|
|
226
|
-
_default_registry = LLMProviderRegistry()
|
|
227
|
-
_register_builtin_providers(_default_registry)
|
|
228
|
-
return _default_registry
|
|
262
|
+
return LLMProviderRegistry.get_instance()
|
|
229
263
|
|
|
230
264
|
|
|
231
265
|
def _register_builtin_providers(registry: LLMProviderRegistry) -> None:
|
|
@@ -378,5 +412,5 @@ def create_llm_provider(
|
|
|
378
412
|
|
|
379
413
|
def _reset_default_registry() -> None:
|
|
380
414
|
"""Reset the default registry (mainly for testing)."""
|
|
381
|
-
|
|
382
|
-
|
|
415
|
+
with LLMProviderRegistry._instance_lock:
|
|
416
|
+
LLMProviderRegistry._instance = None
|
|
@@ -41,7 +41,7 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
41
41
|
database: str = "praisonai",
|
|
42
42
|
user: str = "root",
|
|
43
43
|
password: str = "",
|
|
44
|
-
table_prefix: str = "
|
|
44
|
+
table_prefix: str = "praison_",
|
|
45
45
|
pool_size: int = 10,
|
|
46
46
|
):
|
|
47
47
|
"""
|
|
@@ -122,6 +122,7 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
122
122
|
user_id VARCHAR(255),
|
|
123
123
|
agent_id VARCHAR(255),
|
|
124
124
|
name VARCHAR(255),
|
|
125
|
+
state JSON,
|
|
125
126
|
metadata JSON,
|
|
126
127
|
created_at DOUBLE,
|
|
127
128
|
updated_at DOUBLE,
|
|
@@ -136,6 +137,8 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
136
137
|
session_id VARCHAR(255),
|
|
137
138
|
role VARCHAR(50),
|
|
138
139
|
content TEXT,
|
|
140
|
+
tool_calls JSON,
|
|
141
|
+
tool_call_id VARCHAR(255),
|
|
139
142
|
metadata JSON,
|
|
140
143
|
created_at DOUBLE,
|
|
141
144
|
INDEX idx_session_id (session_id),
|
|
@@ -152,9 +155,10 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
152
155
|
async with self._pool.acquire() as conn:
|
|
153
156
|
async with conn.cursor() as cur:
|
|
154
157
|
await cur.execute(f"""
|
|
155
|
-
INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
|
|
156
|
-
VALUES (%s, %s, %s, %s, %s, %s, %s)
|
|
158
|
+
INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
|
|
159
|
+
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
|
|
157
160
|
""", (session.session_id, session.user_id, session.agent_id, session.name,
|
|
161
|
+
json.dumps(session.state) if session.state else None,
|
|
158
162
|
json.dumps(session.metadata) if session.metadata else None,
|
|
159
163
|
session.created_at, session.updated_at))
|
|
160
164
|
|
|
@@ -173,7 +177,7 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
173
177
|
async with self._pool.acquire() as conn:
|
|
174
178
|
async with conn.cursor() as cur:
|
|
175
179
|
await cur.execute(f"""
|
|
176
|
-
SELECT session_id, user_id, agent_id, name, metadata, created_at, updated_at
|
|
180
|
+
SELECT session_id, user_id, agent_id, name, state, metadata, created_at, updated_at
|
|
177
181
|
FROM {table} WHERE session_id = %s
|
|
178
182
|
""", (session_id,))
|
|
179
183
|
row = await cur.fetchone()
|
|
@@ -184,9 +188,10 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
184
188
|
user_id=row[1],
|
|
185
189
|
agent_id=row[2],
|
|
186
190
|
name=row[3],
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
state=json.loads(row[4]) if row[4] else None,
|
|
192
|
+
metadata=json.loads(row[5]) if row[5] else None,
|
|
193
|
+
created_at=row[6],
|
|
194
|
+
updated_at=row[7]
|
|
190
195
|
)
|
|
191
196
|
return None
|
|
192
197
|
|
|
@@ -206,9 +211,11 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
206
211
|
async with conn.cursor() as cur:
|
|
207
212
|
await cur.execute(f"""
|
|
208
213
|
UPDATE {table}
|
|
209
|
-
SET name = %s, metadata = %s, updated_at = %s
|
|
214
|
+
SET name = %s, state = %s, metadata = %s, updated_at = %s
|
|
210
215
|
WHERE session_id = %s
|
|
211
|
-
""", (session.name,
|
|
216
|
+
""", (session.name,
|
|
217
|
+
json.dumps(session.state) if session.state else None,
|
|
218
|
+
json.dumps(session.metadata) if session.metadata else None,
|
|
212
219
|
session.updated_at, session.session_id))
|
|
213
220
|
|
|
214
221
|
return session
|
|
@@ -263,7 +270,7 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
263
270
|
async with self._pool.acquire() as conn:
|
|
264
271
|
async with conn.cursor() as cur:
|
|
265
272
|
await cur.execute(f"""
|
|
266
|
-
SELECT session_id, user_id, agent_id, name, metadata, created_at, updated_at
|
|
273
|
+
SELECT session_id, user_id, agent_id, name, state, metadata, created_at, updated_at
|
|
267
274
|
FROM {table} {where_clause}
|
|
268
275
|
ORDER BY updated_at DESC
|
|
269
276
|
LIMIT %s OFFSET %s
|
|
@@ -276,9 +283,10 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
276
283
|
user_id=row[1],
|
|
277
284
|
agent_id=row[2],
|
|
278
285
|
name=row[3],
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
286
|
+
state=json.loads(row[4]) if row[4] else None,
|
|
287
|
+
metadata=json.loads(row[5]) if row[5] else None,
|
|
288
|
+
created_at=row[6],
|
|
289
|
+
updated_at=row[7]
|
|
282
290
|
)
|
|
283
291
|
for row in rows
|
|
284
292
|
]
|
|
@@ -304,9 +312,11 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
304
312
|
async with self._pool.acquire() as conn:
|
|
305
313
|
async with conn.cursor() as cur:
|
|
306
314
|
await cur.execute(f"""
|
|
307
|
-
INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
|
|
308
|
-
VALUES (%s, %s, %s, %s, %s, %s)
|
|
315
|
+
INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
|
|
316
|
+
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
|
|
309
317
|
""", (message.id, session_id, message.role, message.content,
|
|
318
|
+
json.dumps(message.tool_calls) if message.tool_calls else None,
|
|
319
|
+
message.tool_call_id,
|
|
310
320
|
json.dumps(message.metadata) if message.metadata else None,
|
|
311
321
|
message.created_at))
|
|
312
322
|
|
|
@@ -347,7 +357,7 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
347
357
|
async with self._pool.acquire() as conn:
|
|
348
358
|
async with conn.cursor() as cur:
|
|
349
359
|
await cur.execute(f"""
|
|
350
|
-
SELECT id, session_id, role, content, metadata, created_at
|
|
360
|
+
SELECT id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at
|
|
351
361
|
FROM {table} {where_clause}
|
|
352
362
|
ORDER BY created_at ASC {limit_clause}
|
|
353
363
|
""", params)
|
|
@@ -359,8 +369,10 @@ class AsyncMySQLConversationStore(ConversationStore):
|
|
|
359
369
|
session_id=row[1],
|
|
360
370
|
role=row[2],
|
|
361
371
|
content=row[3],
|
|
362
|
-
|
|
363
|
-
|
|
372
|
+
tool_calls=json.loads(row[4]) if row[4] else None,
|
|
373
|
+
tool_call_id=row[5],
|
|
374
|
+
metadata=json.loads(row[6]) if row[6] else None,
|
|
375
|
+
created_at=row[7]
|
|
364
376
|
)
|
|
365
377
|
for row in rows
|
|
366
378
|
]
|
|
@@ -39,7 +39,7 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
39
39
|
database: str = "praisonai",
|
|
40
40
|
user: str = "postgres",
|
|
41
41
|
password: str = "",
|
|
42
|
-
table_prefix: str = "
|
|
42
|
+
table_prefix: str = "praison_",
|
|
43
43
|
pool_size: int = 10,
|
|
44
44
|
):
|
|
45
45
|
"""
|
|
@@ -116,6 +116,7 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
116
116
|
user_id VARCHAR(255),
|
|
117
117
|
agent_id VARCHAR(255),
|
|
118
118
|
name VARCHAR(255),
|
|
119
|
+
state JSONB,
|
|
119
120
|
metadata JSONB,
|
|
120
121
|
created_at DOUBLE PRECISION,
|
|
121
122
|
updated_at DOUBLE PRECISION
|
|
@@ -128,6 +129,8 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
128
129
|
session_id VARCHAR(255) REFERENCES {sessions_table}(session_id) ON DELETE CASCADE,
|
|
129
130
|
role VARCHAR(50),
|
|
130
131
|
content TEXT,
|
|
132
|
+
tool_calls JSONB,
|
|
133
|
+
tool_call_id VARCHAR(255),
|
|
131
134
|
metadata JSONB,
|
|
132
135
|
created_at DOUBLE PRECISION
|
|
133
136
|
)
|
|
@@ -146,9 +149,10 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
146
149
|
table = f"{self.table_prefix}sessions"
|
|
147
150
|
async with self._pool.acquire() as conn:
|
|
148
151
|
await conn.execute(f"""
|
|
149
|
-
INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
|
|
150
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
152
|
+
INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
|
|
153
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
151
154
|
""", session.session_id, session.user_id, session.agent_id, session.name,
|
|
155
|
+
json.dumps(session.state) if session.state else None,
|
|
152
156
|
json.dumps(session.metadata) if session.metadata else None,
|
|
153
157
|
session.created_at, session.updated_at)
|
|
154
158
|
|
|
@@ -175,6 +179,7 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
175
179
|
user_id=row['user_id'],
|
|
176
180
|
agent_id=row['agent_id'],
|
|
177
181
|
name=row['name'],
|
|
182
|
+
state=json.loads(row['state']) if row['state'] else None,
|
|
178
183
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
179
184
|
created_at=row['created_at'],
|
|
180
185
|
updated_at=row['updated_at']
|
|
@@ -196,9 +201,10 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
196
201
|
async with self._pool.acquire() as conn:
|
|
197
202
|
await conn.execute(f"""
|
|
198
203
|
UPDATE {table}
|
|
199
|
-
SET name = $2,
|
|
204
|
+
SET name = $2, state = $3, metadata = $4, updated_at = $5
|
|
200
205
|
WHERE session_id = $1
|
|
201
206
|
""", session.session_id, session.name,
|
|
207
|
+
json.dumps(session.state) if session.state else None,
|
|
202
208
|
json.dumps(session.metadata) if session.metadata else None,
|
|
203
209
|
session.updated_at)
|
|
204
210
|
|
|
@@ -267,6 +273,7 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
267
273
|
user_id=row['user_id'],
|
|
268
274
|
agent_id=row['agent_id'],
|
|
269
275
|
name=row['name'],
|
|
276
|
+
state=json.loads(row['state']) if row['state'] else None,
|
|
270
277
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
271
278
|
created_at=row['created_at'],
|
|
272
279
|
updated_at=row['updated_at']
|
|
@@ -294,9 +301,11 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
294
301
|
|
|
295
302
|
async with self._pool.acquire() as conn:
|
|
296
303
|
await conn.execute(f"""
|
|
297
|
-
INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
|
|
298
|
-
VALUES ($1, $2, $3, $4, $5, $6)
|
|
304
|
+
INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
|
|
305
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
299
306
|
""", message.id, session_id, message.role, message.content,
|
|
307
|
+
json.dumps(message.tool_calls) if message.tool_calls else None,
|
|
308
|
+
message.tool_call_id,
|
|
300
309
|
json.dumps(message.metadata) if message.metadata else None,
|
|
301
310
|
message.created_at)
|
|
302
311
|
|
|
@@ -349,6 +358,8 @@ class AsyncPostgresConversationStore(ConversationStore):
|
|
|
349
358
|
session_id=row['session_id'],
|
|
350
359
|
role=row['role'],
|
|
351
360
|
content=row['content'],
|
|
361
|
+
tool_calls=json.loads(row['tool_calls']) if row['tool_calls'] else None,
|
|
362
|
+
tool_call_id=row['tool_call_id'],
|
|
352
363
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
353
364
|
created_at=row['created_at']
|
|
354
365
|
)
|
|
@@ -31,7 +31,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
31
31
|
def __init__(
|
|
32
32
|
self,
|
|
33
33
|
path: str = "praisonai_conversations.db",
|
|
34
|
-
table_prefix: str = "
|
|
34
|
+
table_prefix: str = "praison_",
|
|
35
35
|
):
|
|
36
36
|
"""
|
|
37
37
|
Initialize async SQLite store.
|
|
@@ -76,6 +76,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
76
76
|
user_id TEXT,
|
|
77
77
|
agent_id TEXT,
|
|
78
78
|
name TEXT,
|
|
79
|
+
state TEXT,
|
|
79
80
|
metadata TEXT,
|
|
80
81
|
created_at REAL,
|
|
81
82
|
updated_at REAL
|
|
@@ -88,6 +89,8 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
88
89
|
session_id TEXT REFERENCES {sessions_table}(session_id) ON DELETE CASCADE,
|
|
89
90
|
role TEXT,
|
|
90
91
|
content TEXT,
|
|
92
|
+
tool_calls TEXT,
|
|
93
|
+
tool_call_id TEXT,
|
|
91
94
|
metadata TEXT,
|
|
92
95
|
created_at REAL
|
|
93
96
|
)
|
|
@@ -107,9 +110,10 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
107
110
|
|
|
108
111
|
table = f"{self.table_prefix}sessions"
|
|
109
112
|
await self._conn.execute(f"""
|
|
110
|
-
INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
|
|
111
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
113
|
+
INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
|
|
114
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
112
115
|
""", (session.session_id, session.user_id, session.agent_id, session.name,
|
|
116
|
+
json.dumps(session.state) if session.state else None,
|
|
113
117
|
json.dumps(session.metadata) if session.metadata else None,
|
|
114
118
|
session.created_at, session.updated_at))
|
|
115
119
|
await self._conn.commit()
|
|
@@ -139,6 +143,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
139
143
|
user_id=row['user_id'],
|
|
140
144
|
agent_id=row['agent_id'],
|
|
141
145
|
name=row['name'],
|
|
146
|
+
state=json.loads(row['state']) if row['state'] else None,
|
|
142
147
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
143
148
|
created_at=row['created_at'],
|
|
144
149
|
updated_at=row['updated_at']
|
|
@@ -161,9 +166,11 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
161
166
|
|
|
162
167
|
await self._conn.execute(f"""
|
|
163
168
|
UPDATE {table}
|
|
164
|
-
SET name = ?, metadata = ?, updated_at = ?
|
|
169
|
+
SET name = ?, state = ?, metadata = ?, updated_at = ?
|
|
165
170
|
WHERE session_id = ?
|
|
166
|
-
""", (session.name,
|
|
171
|
+
""", (session.name,
|
|
172
|
+
json.dumps(session.state) if session.state else None,
|
|
173
|
+
json.dumps(session.metadata) if session.metadata else None,
|
|
167
174
|
session.updated_at, session.session_id))
|
|
168
175
|
await self._conn.commit()
|
|
169
176
|
|
|
@@ -233,6 +240,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
233
240
|
user_id=row['user_id'],
|
|
234
241
|
agent_id=row['agent_id'],
|
|
235
242
|
name=row['name'],
|
|
243
|
+
state=json.loads(row['state']) if row['state'] else None,
|
|
236
244
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
237
245
|
created_at=row['created_at'],
|
|
238
246
|
updated_at=row['updated_at']
|
|
@@ -261,9 +269,11 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
261
269
|
table = f"{self.table_prefix}messages"
|
|
262
270
|
|
|
263
271
|
await self._conn.execute(f"""
|
|
264
|
-
INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
|
|
265
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
272
|
+
INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
|
|
273
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
266
274
|
""", (message.id, session_id, message.role, message.content,
|
|
275
|
+
json.dumps(message.tool_calls) if message.tool_calls else None,
|
|
276
|
+
message.tool_call_id,
|
|
267
277
|
json.dumps(message.metadata) if message.metadata else None,
|
|
268
278
|
message.created_at))
|
|
269
279
|
await self._conn.commit()
|
|
@@ -316,6 +326,8 @@ class AsyncSQLiteConversationStore(ConversationStore):
|
|
|
316
326
|
session_id=row['session_id'],
|
|
317
327
|
role=row['role'],
|
|
318
328
|
content=row['content'],
|
|
329
|
+
tool_calls=json.loads(row['tool_calls']) if row['tool_calls'] else None,
|
|
330
|
+
tool_call_id=row['tool_call_id'],
|
|
319
331
|
metadata=json.loads(row['metadata']) if row['metadata'] else None,
|
|
320
332
|
created_at=row['created_at']
|
|
321
333
|
)
|