PraisonAI 4.7.7__tar.gz → 4.7.8__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.7.7 → praisonai-4.7.8}/PKG-INFO +9 -9
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/PKG-INFO +9 -9
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/requires.txt +8 -8
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/app/agentos.py +128 -1
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/_shim.py +21 -1
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/sandbox_cli.py +0 -26
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/db/adapter.py +81 -2
- praisonai-4.7.8/praisonai/version.py +1 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/pyproject.toml +8 -8
- praisonai-4.7.7/praisonai/version.py +0 -1
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/SOURCES.txt +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/README.md +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/__main__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_api_auth.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_bootstrap.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_logging.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/acp/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/acp/server.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/acp/session.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/agents_generator.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/api/agent_invoke.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/api/call.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/app/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/auto.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/branding.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/_profiling.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/rag.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/serve.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/main.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/config/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/config/agents.schema.json +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/config/schema.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/config/validator.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/history_store.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/queue.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/setup.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/db/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/a2u_server.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/client.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/converter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/autogen_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/crewai_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/inc/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/inc/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/_cli_loaders.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/_sync_base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute/tenki.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/compute_managed_agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/router.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/server.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/jobs/store.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/env.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/llm/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/n8n/client.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/_ops.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/profiler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/push/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/push/client.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/push/transports.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/core.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/history.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/security.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/recipe/server.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/applier.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/judge.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/plan.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/player.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/reader.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/storage.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/replay/writer.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/security/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/security/audit.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/security/injection.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/security/protected.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/setup/build.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/setup/post_install.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/setup.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/_tool_sources.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/cache.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/loader.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/security.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tool_registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/audio.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/train/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/train.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/train_vision.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui/context.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_dashboard/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/praisonai/upload_vision.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/setup.cfg +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_approval_system.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_basic.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_cli_features.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_recipe.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_registry.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_runner.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.7.7 → praisonai-4.7.8}/tests/test_serve_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.8
|
|
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,14 +11,14 @@ 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.7.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.1.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.1.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.1.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.1.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.1.
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.1.
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.6
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.5
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.5
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.5
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.5
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.7
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.5
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.5
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.8
|
|
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,14 +11,14 @@ 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.7.
|
|
15
|
-
Requires-Dist: praisonai-code>=0.1.
|
|
16
|
-
Requires-Dist: praisonai-bot>=0.1.
|
|
17
|
-
Requires-Dist: praisonai-train>=0.1.
|
|
18
|
-
Requires-Dist: praisonai-browser>=0.1.
|
|
19
|
-
Requires-Dist: praisonai-mcp>=0.1.
|
|
20
|
-
Requires-Dist: praisonai-sandbox>=0.1.
|
|
21
|
-
Requires-Dist: praisonai-deploy>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=1.7.6
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.5
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.5
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.5
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.5
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.7
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.5
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.5
|
|
22
22
|
Requires-Dist: python-dotenv>=0.19.0
|
|
23
23
|
Requires-Dist: litellm<2,>=1.83.14
|
|
24
24
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
rich>=13.7
|
|
2
2
|
markdown>=3.5
|
|
3
3
|
pyparsing>=3.0.0
|
|
4
|
-
praisonaiagents>=1.7.
|
|
5
|
-
praisonai-code>=0.1.
|
|
6
|
-
praisonai-bot>=0.1.
|
|
7
|
-
praisonai-train>=0.1.
|
|
8
|
-
praisonai-browser>=0.1.
|
|
9
|
-
praisonai-mcp>=0.1.
|
|
10
|
-
praisonai-sandbox>=0.1.
|
|
11
|
-
praisonai-deploy>=0.1.
|
|
4
|
+
praisonaiagents>=1.7.6
|
|
5
|
+
praisonai-code>=0.1.5
|
|
6
|
+
praisonai-bot>=0.1.5
|
|
7
|
+
praisonai-train>=0.1.5
|
|
8
|
+
praisonai-browser>=0.1.5
|
|
9
|
+
praisonai-mcp>=0.1.7
|
|
10
|
+
praisonai-sandbox>=0.1.5
|
|
11
|
+
praisonai-deploy>=0.1.5
|
|
12
12
|
python-dotenv>=0.19.0
|
|
13
13
|
litellm<2,>=1.83.14
|
|
14
14
|
PyYAML>=6.0
|
|
@@ -13,6 +13,16 @@ import os
|
|
|
13
13
|
from praisonaiagents import AgentOSConfig, AgentOSProtocol
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
def _run_to_dict(record: Any) -> Dict[str, Any]:
|
|
17
|
+
"""A RunRecord as JSON. Uses whatever the record exposes rather than
|
|
18
|
+
assuming a shape, so a ledger with extra fields is not silently truncated."""
|
|
19
|
+
if hasattr(record, "as_dict"):
|
|
20
|
+
return record.as_dict()
|
|
21
|
+
if hasattr(record, "__dict__"):
|
|
22
|
+
return {k: v for k, v in vars(record).items() if not k.startswith("_")}
|
|
23
|
+
return {"run": str(record)}
|
|
24
|
+
|
|
25
|
+
|
|
16
26
|
class AgentOS:
|
|
17
27
|
"""
|
|
18
28
|
Production platform for deploying AI agents as web services.
|
|
@@ -139,7 +149,7 @@ class AgentOS:
|
|
|
139
149
|
|
|
140
150
|
def _register_routes(self, app: Any) -> None:
|
|
141
151
|
"""Register API routes."""
|
|
142
|
-
from fastapi import HTTPException
|
|
152
|
+
from fastapi import HTTPException, Query
|
|
143
153
|
from pydantic import BaseModel
|
|
144
154
|
|
|
145
155
|
class ChatRequest(BaseModel):
|
|
@@ -166,6 +176,123 @@ class AgentOS:
|
|
|
166
176
|
async def health():
|
|
167
177
|
return {"status": "healthy"}
|
|
168
178
|
|
|
179
|
+
# ── Read endpoints ────────────────────────────────────────────────
|
|
180
|
+
# AgentOS could list agents and take a chat turn, and nothing else. A
|
|
181
|
+
# session could not be replayed, a run inspected, or a pending approval
|
|
182
|
+
# seen over HTTP, even though the protocols to expose all three already
|
|
183
|
+
# existed. These are READ-only on purpose: mutating a run over HTTP is a
|
|
184
|
+
# much larger design question than surfacing one.
|
|
185
|
+
#
|
|
186
|
+
# Each returns 503 with what to configure when its store is absent.
|
|
187
|
+
# Returning an empty list would be indistinguishable from "no runs yet",
|
|
188
|
+
# which is the failure this codebase keeps finding.
|
|
189
|
+
|
|
190
|
+
def _unavailable(what: str, how: str):
|
|
191
|
+
raise HTTPException(
|
|
192
|
+
status_code=503,
|
|
193
|
+
detail=f"{what} is not available: {how}",
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
@app.get(f"{self.config.api_prefix}/runs")
|
|
197
|
+
async def list_runs(limit: int = Query(50, ge=1, le=500)):
|
|
198
|
+
ledger = getattr(self, "run_ledger", None)
|
|
199
|
+
if ledger is None:
|
|
200
|
+
_unavailable(
|
|
201
|
+
"Run history",
|
|
202
|
+
"no run ledger is configured on this AgentOS instance. "
|
|
203
|
+
"Attach a praisonaiagents.runs.SQLiteRunLedger as `run_ledger`.",
|
|
204
|
+
)
|
|
205
|
+
records = ledger.list_all(limit=limit)
|
|
206
|
+
return {"runs": [_run_to_dict(r) for r in records], "count": len(records)}
|
|
207
|
+
|
|
208
|
+
@app.get(f"{self.config.api_prefix}/runs/{{run_id}}")
|
|
209
|
+
async def get_run(run_id: str):
|
|
210
|
+
ledger = getattr(self, "run_ledger", None)
|
|
211
|
+
if ledger is None:
|
|
212
|
+
_unavailable(
|
|
213
|
+
"Run history",
|
|
214
|
+
"no run ledger is configured on this AgentOS instance.",
|
|
215
|
+
)
|
|
216
|
+
record = ledger.get(run_id)
|
|
217
|
+
if record is None:
|
|
218
|
+
raise HTTPException(status_code=404, detail=f"No run {run_id!r}")
|
|
219
|
+
return _run_to_dict(record)
|
|
220
|
+
|
|
221
|
+
@app.get(f"{self.config.api_prefix}/sessions")
|
|
222
|
+
async def list_sessions(limit: int = Query(20, ge=1, le=200)):
|
|
223
|
+
store = getattr(self, "session_store", None)
|
|
224
|
+
if store is None or not hasattr(store, "recent"):
|
|
225
|
+
_unavailable(
|
|
226
|
+
"Session history",
|
|
227
|
+
"no session store is configured on this AgentOS instance. "
|
|
228
|
+
"Attach a praisonaiagents.session store as `session_store`.",
|
|
229
|
+
)
|
|
230
|
+
summaries = store.recent(limit=limit)
|
|
231
|
+
return {
|
|
232
|
+
"sessions": [
|
|
233
|
+
s.as_dict() if hasattr(s, "as_dict") else dict(s) for s in summaries
|
|
234
|
+
],
|
|
235
|
+
"count": len(summaries),
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@app.get(f"{self.config.api_prefix}/sessions/{{session_id}}")
|
|
239
|
+
async def get_session(session_id: str, limit: int = Query(100, ge=1, le=500)):
|
|
240
|
+
store = getattr(self, "session_store", None)
|
|
241
|
+
if store is None:
|
|
242
|
+
_unavailable(
|
|
243
|
+
"Session history",
|
|
244
|
+
"no session store is configured on this AgentOS instance.",
|
|
245
|
+
)
|
|
246
|
+
if hasattr(store, "session_exists"):
|
|
247
|
+
if not store.session_exists(session_id):
|
|
248
|
+
raise HTTPException(status_code=404, detail=f"No session {session_id!r}")
|
|
249
|
+
elif not store.get_chat_history(session_id, limit):
|
|
250
|
+
# Stores without session_exists cannot distinguish an unknown
|
|
251
|
+
# session from an empty one; treat an empty transcript as absent
|
|
252
|
+
# rather than returning a healthy-looking 200 for a bad id.
|
|
253
|
+
raise HTTPException(status_code=404, detail=f"No session {session_id!r}")
|
|
254
|
+
return {
|
|
255
|
+
"session_id": session_id,
|
|
256
|
+
"messages": store.get_chat_history(session_id, limit),
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@app.get(f"{self.config.api_prefix}/approvals")
|
|
260
|
+
async def list_approvals():
|
|
261
|
+
try:
|
|
262
|
+
from praisonaiagents.approval import get_approval_registry
|
|
263
|
+
except ImportError:
|
|
264
|
+
_unavailable("Approvals", "praisonaiagents.approval is not installed.")
|
|
265
|
+
registry = get_approval_registry()
|
|
266
|
+
|
|
267
|
+
# The registry stores approval requirements across four fields --
|
|
268
|
+
# global tools plus per-agent overrides -- rather than a single
|
|
269
|
+
# dict. Reading the public accessors (is_required/get_risk_level)
|
|
270
|
+
# keeps this decoupled from that private shape. Fall back to the
|
|
271
|
+
# attributes only to enumerate which (agent, tool) pairs exist.
|
|
272
|
+
global_tools = getattr(registry, "_required_tools", None)
|
|
273
|
+
agent_tools = getattr(registry, "_agent_required_tools", None)
|
|
274
|
+
if global_tools is None and agent_tools is None:
|
|
275
|
+
_unavailable(
|
|
276
|
+
"Approvals",
|
|
277
|
+
"this build's approval registry exposes no requirement listing.",
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
requirements = []
|
|
281
|
+
for tool in sorted(global_tools or ()):
|
|
282
|
+
requirements.append({
|
|
283
|
+
"tool": tool,
|
|
284
|
+
"agent": None,
|
|
285
|
+
"risk_level": registry.get_risk_level(tool),
|
|
286
|
+
})
|
|
287
|
+
for agent, tools in (agent_tools or {}).items():
|
|
288
|
+
for tool in sorted(tools):
|
|
289
|
+
requirements.append({
|
|
290
|
+
"tool": tool,
|
|
291
|
+
"agent": agent,
|
|
292
|
+
"risk_level": registry.get_risk_level(tool, agent),
|
|
293
|
+
})
|
|
294
|
+
return {"requirements": requirements}
|
|
295
|
+
|
|
169
296
|
@app.get(f"{self.config.api_prefix}/agents")
|
|
170
297
|
async def list_agents():
|
|
171
298
|
return {
|
|
@@ -112,7 +112,27 @@ def _register_submodules(old_name: str, new_name: str, module) -> None:
|
|
|
112
112
|
new_prefix = new_name + "."
|
|
113
113
|
|
|
114
114
|
# Alias whatever is already imported first (e.g. the package __init__).
|
|
115
|
-
|
|
115
|
+
#
|
|
116
|
+
# Snapshot ``sys.modules`` defensively: a concurrent import in another
|
|
117
|
+
# thread (e.g. an async client loading a module during a parallel test) can
|
|
118
|
+
# mutate ``sys.modules`` while ``items()`` is being materialised, and
|
|
119
|
+
# CPython raises ``RuntimeError: dictionary changed size during iteration``
|
|
120
|
+
# even for ``list(sys.modules.items())``. Retry the snapshot a few times,
|
|
121
|
+
# then fall back to reading each value by key — indexing individual keys
|
|
122
|
+
# never trips the size-change guard.
|
|
123
|
+
snapshot = None
|
|
124
|
+
for _attempt in range(3):
|
|
125
|
+
try:
|
|
126
|
+
snapshot = list(sys.modules.items())
|
|
127
|
+
break
|
|
128
|
+
except RuntimeError:
|
|
129
|
+
continue
|
|
130
|
+
if snapshot is None:
|
|
131
|
+
snapshot = [
|
|
132
|
+
(name, sys.modules.get(name)) for name in list(sys.modules.keys())
|
|
133
|
+
]
|
|
134
|
+
|
|
135
|
+
for mod_name, mod in snapshot:
|
|
116
136
|
# ``sys.modules`` can legitimately hold ``None`` placeholders (failed
|
|
117
137
|
# optional imports). Aliasing one would poison the old dotted name so
|
|
118
138
|
# that ``import old_name.sub`` raises "None in sys.modules" even though
|
|
@@ -201,29 +201,3 @@ class SandboxHandler:
|
|
|
201
201
|
print(f" {name}: {flag}")
|
|
202
202
|
except ImportError as exc:
|
|
203
203
|
print(f" Error: {exc}")
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
def handle_sandbox_command(args) -> None:
|
|
207
|
-
"""Handle sandbox CLI command."""
|
|
208
|
-
handler = SandboxHandler()
|
|
209
|
-
|
|
210
|
-
subcommand = getattr(args, "sandbox_command", None) or "status"
|
|
211
|
-
|
|
212
|
-
if subcommand == "run":
|
|
213
|
-
handler.run(
|
|
214
|
-
code=getattr(args, "code", None),
|
|
215
|
-
file=getattr(args, "file", None),
|
|
216
|
-
sandbox_type=getattr(args, "type", "subprocess"),
|
|
217
|
-
image=getattr(args, "image", "python:3.11-slim"),
|
|
218
|
-
timeout=getattr(args, "timeout", 60),
|
|
219
|
-
)
|
|
220
|
-
elif subcommand == "shell":
|
|
221
|
-
handler.shell(
|
|
222
|
-
sandbox_type=getattr(args, "type", "subprocess"),
|
|
223
|
-
image=getattr(args, "image", "python:3.11-slim"),
|
|
224
|
-
)
|
|
225
|
-
elif subcommand == "status":
|
|
226
|
-
handler.status()
|
|
227
|
-
else:
|
|
228
|
-
print(f"Unknown sandbox command: {subcommand}")
|
|
229
|
-
print("Available commands: run, shell, status")
|
|
@@ -376,7 +376,9 @@ class PraisonAIDB:
|
|
|
376
376
|
if messages is None:
|
|
377
377
|
return []
|
|
378
378
|
|
|
379
|
-
# Convert to DbMessage format
|
|
379
|
+
# Convert to DbMessage format. Carry the structured tool fields so a
|
|
380
|
+
# resumed tool-using session rebuilds the same transcript the model saw
|
|
381
|
+
# before (Issue #5075 — parity with the JSON store fix in #3089).
|
|
380
382
|
from praisonaiagents.db.protocol import DbMessage
|
|
381
383
|
return [
|
|
382
384
|
DbMessage(
|
|
@@ -384,7 +386,9 @@ class PraisonAIDB:
|
|
|
384
386
|
content=msg.content,
|
|
385
387
|
metadata=msg.metadata or {},
|
|
386
388
|
timestamp=msg.created_at or time.time(),
|
|
387
|
-
id=msg.id
|
|
389
|
+
id=msg.id,
|
|
390
|
+
tool_calls=getattr(msg, "tool_calls", None),
|
|
391
|
+
tool_call_id=getattr(msg, "tool_call_id", None),
|
|
388
392
|
)
|
|
389
393
|
for msg in messages
|
|
390
394
|
]
|
|
@@ -449,6 +453,81 @@ class PraisonAIDB:
|
|
|
449
453
|
msg,
|
|
450
454
|
)
|
|
451
455
|
|
|
456
|
+
def on_assistant_message(
|
|
457
|
+
self,
|
|
458
|
+
session_id: str,
|
|
459
|
+
content: str,
|
|
460
|
+
tool_calls: Optional[List[Any]] = None,
|
|
461
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
462
|
+
) -> None:
|
|
463
|
+
"""Persist an assistant turn that requested tools (Issue #5075).
|
|
464
|
+
|
|
465
|
+
Stores the structured ``tool_calls`` verbatim on the
|
|
466
|
+
``ConversationMessage`` so a resumed session replays the same
|
|
467
|
+
assistant turn the model produced. Falls back to a plain assistant
|
|
468
|
+
message when no tool calls are present.
|
|
469
|
+
"""
|
|
470
|
+
self._init_stores()
|
|
471
|
+
if not self._conversation_store:
|
|
472
|
+
return
|
|
473
|
+
|
|
474
|
+
from ..persistence.conversation.base import ConversationMessage
|
|
475
|
+
import uuid
|
|
476
|
+
|
|
477
|
+
msg = ConversationMessage(
|
|
478
|
+
id=f"msg-{uuid.uuid4().hex[:12]}",
|
|
479
|
+
session_id=session_id,
|
|
480
|
+
role="assistant",
|
|
481
|
+
content=content,
|
|
482
|
+
tool_calls=tool_calls,
|
|
483
|
+
metadata=metadata or {},
|
|
484
|
+
created_at=time.time(),
|
|
485
|
+
)
|
|
486
|
+
self._call_store(
|
|
487
|
+
self._conversation_store,
|
|
488
|
+
"add_message",
|
|
489
|
+
"async_add_message",
|
|
490
|
+
session_id,
|
|
491
|
+
msg,
|
|
492
|
+
)
|
|
493
|
+
|
|
494
|
+
def on_tool_message(
|
|
495
|
+
self,
|
|
496
|
+
session_id: str,
|
|
497
|
+
content: str,
|
|
498
|
+
tool_call_id: str,
|
|
499
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
500
|
+
) -> None:
|
|
501
|
+
"""Persist a tool result turn linked to its call id (Issue #5075).
|
|
502
|
+
|
|
503
|
+
Keeps the ``role="tool"`` result and its ``tool_call_id`` so the
|
|
504
|
+
resumed message list interleaves results in order, matching the JSON
|
|
505
|
+
store behaviour from #3089.
|
|
506
|
+
"""
|
|
507
|
+
self._init_stores()
|
|
508
|
+
if not self._conversation_store:
|
|
509
|
+
return
|
|
510
|
+
|
|
511
|
+
from ..persistence.conversation.base import ConversationMessage
|
|
512
|
+
import uuid
|
|
513
|
+
|
|
514
|
+
msg = ConversationMessage(
|
|
515
|
+
id=f"tool-{uuid.uuid4().hex[:12]}",
|
|
516
|
+
session_id=session_id,
|
|
517
|
+
role="tool",
|
|
518
|
+
content=content,
|
|
519
|
+
tool_call_id=tool_call_id,
|
|
520
|
+
metadata=metadata or {},
|
|
521
|
+
created_at=time.time(),
|
|
522
|
+
)
|
|
523
|
+
self._call_store(
|
|
524
|
+
self._conversation_store,
|
|
525
|
+
"add_message",
|
|
526
|
+
"async_add_message",
|
|
527
|
+
session_id,
|
|
528
|
+
msg,
|
|
529
|
+
)
|
|
530
|
+
|
|
452
531
|
@staticmethod
|
|
453
532
|
def _serialize_tool_call(tool_name: str, args: Any, result: Any) -> str:
|
|
454
533
|
"""Serialise a tool call for persistence without dropping data.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.7.8"
|
|
@@ -12,14 +12,14 @@ dependencies = [
|
|
|
12
12
|
"rich>=13.7",
|
|
13
13
|
"markdown>=3.5",
|
|
14
14
|
"pyparsing>=3.0.0",
|
|
15
|
-
"praisonaiagents>=1.7.
|
|
16
|
-
"praisonai-code>=0.1.
|
|
17
|
-
"praisonai-bot>=0.1.
|
|
18
|
-
"praisonai-train>=0.1.
|
|
19
|
-
"praisonai-browser>=0.1.
|
|
20
|
-
"praisonai-mcp>=0.1.
|
|
21
|
-
"praisonai-sandbox>=0.1.
|
|
22
|
-
"praisonai-deploy>=0.1.
|
|
15
|
+
"praisonaiagents>=1.7.6",
|
|
16
|
+
"praisonai-code>=0.1.5",
|
|
17
|
+
"praisonai-bot>=0.1.5",
|
|
18
|
+
"praisonai-train>=0.1.5",
|
|
19
|
+
"praisonai-browser>=0.1.5",
|
|
20
|
+
"praisonai-mcp>=0.1.7",
|
|
21
|
+
"praisonai-sandbox>=0.1.5",
|
|
22
|
+
"praisonai-deploy>=0.1.5",
|
|
23
23
|
"python-dotenv>=0.19.0",
|
|
24
24
|
"litellm>=1.83.14,<2",
|
|
25
25
|
"PyYAML>=6.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "4.7.7"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|