PraisonAI 4.7.4__tar.gz → 4.7.6__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.4 → praisonai-4.7.6}/PKG-INFO +51 -12
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/PKG-INFO +51 -12
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/SOURCES.txt +0 -12
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/requires.txt +8 -8
- {praisonai-4.7.4 → praisonai-4.7.6}/README.md +42 -3
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/__init__.py +7 -2
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/__main__.py +28 -30
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/agents_generator.py +10 -11
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/api/agent_invoke.py +50 -13
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/api/call.py +3 -7
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/auto.py +23 -28
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/rag.py +45 -3
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/serve.py +47 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/config/agents.schema.json +38 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/config/schema.py +5 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/config/validator.py +29 -63
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/db/adapter.py +102 -6
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/a2u_server.py +137 -31
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/autogen_adapter.py +42 -14
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/base.py +22 -28
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/crewai_adapter.py +8 -1
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/praisonai_adapter.py +12 -12
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/registry.py +11 -1
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/inc/models.py +73 -0
- praisonai-4.7.6/praisonai/integrations/__init__.py +168 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/_cli_loaders.py +3 -13
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/__init__.py +2 -2
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/registry.py +17 -4
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/security/__init__.py +21 -0
- praisonai-4.7.6/praisonai/setup/build.py +13 -0
- praisonai-4.7.6/praisonai/setup/post_install.py +21 -0
- praisonai-4.7.6/praisonai/setup.py +9 -0
- praisonai-4.7.6/praisonai/version.py +1 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/pyproject.toml +9 -9
- praisonai-4.7.4/praisonai/_dev/parity/__init__.py +0 -42
- praisonai-4.7.4/praisonai/_dev/parity/docs_extractor.py +0 -183
- praisonai-4.7.4/praisonai/_dev/parity/docs_generator.py +0 -1029
- praisonai-4.7.4/praisonai/_dev/parity/generator.py +0 -803
- praisonai-4.7.4/praisonai/_dev/parity/python_docs_extractor.py +0 -167
- praisonai-4.7.4/praisonai/_dev/parity/python_extractor.py +0 -252
- praisonai-4.7.4/praisonai/_dev/parity/rust_docs_extractor.py +0 -55
- praisonai-4.7.4/praisonai/_dev/parity/rust_extractor.py +0 -332
- praisonai-4.7.4/praisonai/_dev/parity/topic_normalizer.py +0 -170
- praisonai-4.7.4/praisonai/_dev/parity/ts_docs_extractor.py +0 -55
- praisonai-4.7.4/praisonai/_dev/parity/typescript_extractor.py +0 -225
- praisonai-4.7.4/praisonai/integrations/__init__.py +0 -85
- praisonai-4.7.4/praisonai/integrations/_unified_registry.py +0 -211
- praisonai-4.7.4/praisonai/setup/build.py +0 -21
- praisonai-4.7.4/praisonai/setup/post_install.py +0 -23
- praisonai-4.7.4/praisonai/setup.py +0 -16
- praisonai-4.7.4/praisonai/version.py +0 -1
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_api_auth.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_approval_spec.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_async_bridge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_bootstrap.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_dev/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_dev/api_md.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_entrypoint.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_framework_availability.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_lazy_cache.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_logging.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/_safe_loader.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/acp/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/acp/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/acp/safe_edit.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/acp/server.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/acp/session.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/adapters/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/adapters/readers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/adapters/rerankers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/adapters/retrievers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/adapters/vector_stores.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/agent_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/app/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/app/agentos.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/async_agent_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/audit/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/audit/agent_centric.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/bots/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/browser/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/a2a.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/assistants.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/audio.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/batches.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/completions.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/container_files.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/containers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/embeddings.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/files.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/fine_tuning.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/guardrails.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/images.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/mcp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/messages.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/moderations.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/ocr.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/passthrough.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/rag.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/realtime.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/rerank.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/responses.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/search.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/skills.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/vector_store_files.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/vector_stores.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/capabilities/videos.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/claw/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/_paths.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/_shim.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/_warnings.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/approval_backend.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/branding.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/_profiling.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/acp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/agents.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/attach.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/audit.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/auth.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/batch.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/benchmark.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/bot.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/browser.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/call.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/chat.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/checkpoint.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/claw.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/code.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/command.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/commit.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/completion.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/context.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/daemon.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/dashboard.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/debug.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/deploy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/diag.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/docs.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/doctor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/endpoints.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/environment.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/eval.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/examples.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/flow.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/gateway.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/github.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/hooks.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/identity.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/init.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/kanban.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/knowledge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/langextract.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/langfuse.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/loop.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/lsp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/managed.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/mcp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/memory.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/mint_link.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/models.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/n8n.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/obs.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/onboard.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/package.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/pairing.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/paths.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/permissions.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/plugins.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/port.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/profile.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/publish.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/realtime.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/recipe.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/replay.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/research.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/retrieval.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/rules.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/run.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/sandbox.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/schedule.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/serve.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/session.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/setup.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/skills.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/standardise.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/templates.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/test.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/todo.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/traces.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/tracker.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/train.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/ui.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/up.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/validate.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/version.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/commands/workflow.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/config_loader.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/configuration/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/configuration/config.schema.json +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/execution/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/fallback_schema.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/acp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/agent_tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/approval.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/background.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/bots_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/deploy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/endpoints.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/eval.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/gateway.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/ollama.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/onboard.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/persistence.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/recipe.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/recipe_optimizer.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/sandbox_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/templates.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/tui/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/tui/app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/interactive/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/interactive/async_tui.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/interactive/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/interactive/core.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/interactive/events.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/langfuse_client.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/direct_prompt.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/framework_run.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/interactive_legacy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/legacy/workflow_commands.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/main.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/output/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/schema_provider.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/session/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/state/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/ui/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/unified_schema.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli/utils/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/cli_backends/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/agent_tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/config/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/_storage_path.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/artifact_store.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/history_store.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/queue.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/setup.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/context/terminal_logger.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/daemon/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/db/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/deploy/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/discovery.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/a2a.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/a2u.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/agents_api.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/mcp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/openai_compat.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/recipe.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/providers/tools_mcp.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/endpoints/server.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/client.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/components/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/converter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/flow/helpers.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/_config_builder.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/validators.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/framework_adapters/workflow_framework.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/gateway/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/inc/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/inc/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/approvals_bridge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/hooks_query.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/kanban_bridge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/schedules_runner.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/usage_bridge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/bridges/workflows_service.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/context_files.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/gateway_host.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/host_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/pages/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/pages/bot_health.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integration/pages/workflow_runs.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/_session_info.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/_tool_aliases.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/backend_registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/_sync_base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/daytona.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/docker.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/e2b.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/flyio.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/local.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/modal_compute.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute/tenki.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/compute_managed_agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/db_session_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/hosted_agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/local_agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/managed_agents.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/managed_local.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/integrations/sandboxed_agent.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/executor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/models.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/path_validation.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/router.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/server.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/jobs/store.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/kanban/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/catalogue.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/credentials.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/env.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/llm/gateways.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/mcp_server/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/n8n/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/n8n/client.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/n8n/converter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/n8n/preview.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/n8n/reverse_converter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/observability/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/observability/hooks.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/observability/langextract.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/observability/langfuse.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/_valkey_client.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/_ops.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/_sql_base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/async_mysql.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/async_postgres.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/async_sqlite.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/json_store.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/mysql.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/postgres.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/singlestore.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/sqlite.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/supabase.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/surrealdb.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/conversation/turso.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/factory.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/hooks/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/hooks/agent_hooks.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/cassandra.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/chroma.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/clickhouse.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/couchbase.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/lancedb.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/milvus.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/pgvector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/pinecone.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/qdrant.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/redis_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/knowledge/weaviate.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/migrations/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/migrations/manager.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/orchestrator.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/async_mongodb.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/dynamodb.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/firestore.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/gcs.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/memory.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/mongodb.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/redis.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/upstash.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/persistence/state/valkey.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/profiler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/push/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/push/client.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/push/transports.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/bridge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/core.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/exceptions.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/history.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/models.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/operations.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/policy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/runtime.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/security.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/serve.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/recipe/server.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/analyzer.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/applier.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/judge.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/plan.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/player.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/reader.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/storage.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/replay/writer.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/runtime/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/runtime/__main__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/sandbox/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/sandbox/_registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/_base_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/_delivery.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/_dispatch.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/async_agent_scheduler.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/base.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/blueprint_catalogue.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/condition_gate.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/deployment.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/executor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/run_policy.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/shared.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/suggestion_engine.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/security/audit.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/security/injection.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/security/protected.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/setup/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/ai_generator.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/dedupe.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/discovery.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/drift.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/engine.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/example_verifier.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/manifest.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/models.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/reports.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/templates.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/undo_redo.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/standardise/validator.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/dynamodb_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/mongodb_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/postgresql_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/redis_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/storage/valkey_adapter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/batch_source.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/cli_docs_source.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/discovery.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/docs_source.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/examples_source.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/executor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/models.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/report_viewer.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/reporter.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/suite_runner/runner.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/_tool_sources.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/cache.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/dependency_checker.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/discovery.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/loader.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/resolver.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/security.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/tool_override.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/templates/tools_doctor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tool_registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tool_resolver.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/audio.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/glob_tool.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/grep_tool.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/kanban_tools.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/multiedit.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/tools/skill_manage.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/train/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/train.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/train_vision.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui/_aiui_datastore.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui/_external_agents.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui/context.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui/database_config.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_agents/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_agents/default_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_bot/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_bot/default_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_chat/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_chat/default_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_dashboard/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_dashboard/default_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_realtime/__init__.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/ui_realtime/default_app.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/praisonai/upload_vision.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/setup.cfg +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_agents_playbook.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_approval_system.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_basic.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_cli_features.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_double_api_fix.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_n8n_agent_invoke.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_n8n_cli_feature.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_n8n_integration.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_phase2_refactor.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_recipe.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_registry.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_runner.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/tests/test_sandboxed_agent_compatibility.py +0 -0
- {praisonai-4.7.4 → praisonai-4.7.6}/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.6
|
|
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.4
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.3
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.3
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.3
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.3
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.5
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.3
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.3
|
|
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
|
|
@@ -247,6 +247,19 @@ curl -fsSL https://praison.ai/install.sh | bash
|
|
|
247
247
|
<img src="https://img.shields.io/badge/Highlighted_by_Elon_Musk-000000?style=for-the-badge&logo=x&logoColor=white" alt="Highlighted by Elon Musk" />
|
|
248
248
|
</a>
|
|
249
249
|
<br>
|
|
250
|
+
<br>
|
|
251
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
252
|
+
<img src="https://img.shields.io/badge/Download_for_macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Download for macOS" />
|
|
253
|
+
</a>
|
|
254
|
+
|
|
255
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
256
|
+
<img src="https://img.shields.io/badge/Download_for_Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Download for Windows" />
|
|
257
|
+
</a>
|
|
258
|
+
|
|
259
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
260
|
+
<img src="https://img.shields.io/badge/Download_for_Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Download for Linux" />
|
|
261
|
+
</a>
|
|
262
|
+
<br>
|
|
250
263
|
</div>
|
|
251
264
|
|
|
252
265
|
<p align="center">
|
|
@@ -1311,13 +1324,39 @@ For other providers, see [Models docs](https://docs.praison.ai/docs/models).
|
|
|
1311
1324
|
<summary><strong>How do I use a local model (Ollama)?</strong></summary>
|
|
1312
1325
|
|
|
1313
1326
|
```bash
|
|
1314
|
-
# Start Ollama
|
|
1327
|
+
# Start Ollama and pull a model
|
|
1315
1328
|
ollama serve
|
|
1329
|
+
ollama pull llama3.2
|
|
1330
|
+
```
|
|
1316
1331
|
|
|
1317
|
-
|
|
1318
|
-
|
|
1332
|
+
```python
|
|
1333
|
+
from praisonaiagents import Agent
|
|
1334
|
+
|
|
1335
|
+
agent = Agent(instructions="You are a helpful assistant", llm="ollama/llama3.2")
|
|
1336
|
+
agent.start("Why is the sky blue?")
|
|
1319
1337
|
```
|
|
1320
1338
|
|
|
1339
|
+
The `ollama/` prefix is what selects Ollama's handling — tool-call repair,
|
|
1340
|
+
tool-result formatting and the streaming rules small local models need. Or set
|
|
1341
|
+
it by environment instead:
|
|
1342
|
+
|
|
1343
|
+
```bash
|
|
1344
|
+
export OPENAI_MODEL_NAME=ollama/llama3.2
|
|
1345
|
+
```
|
|
1346
|
+
|
|
1347
|
+
Setting only `OPENAI_BASE_URL` is not enough: with no model named, the OpenAI
|
|
1348
|
+
default (`gpt-4o-mini`) is sent to Ollama, which answers
|
|
1349
|
+
`404 model 'gpt-4o-mini' not found`. Always name the model.
|
|
1350
|
+
|
|
1351
|
+
Point at a non-default host with `base_url=` or `OLLAMA_HOST`:
|
|
1352
|
+
|
|
1353
|
+
```python
|
|
1354
|
+
agent = Agent(instructions="...", llm="ollama/llama3.2", base_url="http://192.168.1.10:11434")
|
|
1355
|
+
```
|
|
1356
|
+
|
|
1357
|
+
The same shape works for other local runtimes — `lm_studio/`, `vllm/` and
|
|
1358
|
+
`hosted_vllm/` with their server's `base_url`.
|
|
1359
|
+
|
|
1321
1360
|
See [Models docs](https://docs.praison.ai/docs/models) for more details.
|
|
1322
1361
|
|
|
1323
1362
|
</details>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.6
|
|
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.4
|
|
15
|
+
Requires-Dist: praisonai-code>=0.1.3
|
|
16
|
+
Requires-Dist: praisonai-bot>=0.1.3
|
|
17
|
+
Requires-Dist: praisonai-train>=0.1.3
|
|
18
|
+
Requires-Dist: praisonai-browser>=0.1.3
|
|
19
|
+
Requires-Dist: praisonai-mcp>=0.1.5
|
|
20
|
+
Requires-Dist: praisonai-sandbox>=0.1.3
|
|
21
|
+
Requires-Dist: praisonai-deploy>=0.1.3
|
|
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
|
|
@@ -247,6 +247,19 @@ curl -fsSL https://praison.ai/install.sh | bash
|
|
|
247
247
|
<img src="https://img.shields.io/badge/Highlighted_by_Elon_Musk-000000?style=for-the-badge&logo=x&logoColor=white" alt="Highlighted by Elon Musk" />
|
|
248
248
|
</a>
|
|
249
249
|
<br>
|
|
250
|
+
<br>
|
|
251
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
252
|
+
<img src="https://img.shields.io/badge/Download_for_macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Download for macOS" />
|
|
253
|
+
</a>
|
|
254
|
+
|
|
255
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
256
|
+
<img src="https://img.shields.io/badge/Download_for_Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Download for Windows" />
|
|
257
|
+
</a>
|
|
258
|
+
|
|
259
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
260
|
+
<img src="https://img.shields.io/badge/Download_for_Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Download for Linux" />
|
|
261
|
+
</a>
|
|
262
|
+
<br>
|
|
250
263
|
</div>
|
|
251
264
|
|
|
252
265
|
<p align="center">
|
|
@@ -1311,13 +1324,39 @@ For other providers, see [Models docs](https://docs.praison.ai/docs/models).
|
|
|
1311
1324
|
<summary><strong>How do I use a local model (Ollama)?</strong></summary>
|
|
1312
1325
|
|
|
1313
1326
|
```bash
|
|
1314
|
-
# Start Ollama
|
|
1327
|
+
# Start Ollama and pull a model
|
|
1315
1328
|
ollama serve
|
|
1329
|
+
ollama pull llama3.2
|
|
1330
|
+
```
|
|
1316
1331
|
|
|
1317
|
-
|
|
1318
|
-
|
|
1332
|
+
```python
|
|
1333
|
+
from praisonaiagents import Agent
|
|
1334
|
+
|
|
1335
|
+
agent = Agent(instructions="You are a helpful assistant", llm="ollama/llama3.2")
|
|
1336
|
+
agent.start("Why is the sky blue?")
|
|
1319
1337
|
```
|
|
1320
1338
|
|
|
1339
|
+
The `ollama/` prefix is what selects Ollama's handling — tool-call repair,
|
|
1340
|
+
tool-result formatting and the streaming rules small local models need. Or set
|
|
1341
|
+
it by environment instead:
|
|
1342
|
+
|
|
1343
|
+
```bash
|
|
1344
|
+
export OPENAI_MODEL_NAME=ollama/llama3.2
|
|
1345
|
+
```
|
|
1346
|
+
|
|
1347
|
+
Setting only `OPENAI_BASE_URL` is not enough: with no model named, the OpenAI
|
|
1348
|
+
default (`gpt-4o-mini`) is sent to Ollama, which answers
|
|
1349
|
+
`404 model 'gpt-4o-mini' not found`. Always name the model.
|
|
1350
|
+
|
|
1351
|
+
Point at a non-default host with `base_url=` or `OLLAMA_HOST`:
|
|
1352
|
+
|
|
1353
|
+
```python
|
|
1354
|
+
agent = Agent(instructions="...", llm="ollama/llama3.2", base_url="http://192.168.1.10:11434")
|
|
1355
|
+
```
|
|
1356
|
+
|
|
1357
|
+
The same shape works for other local runtimes — `lm_studio/`, `vllm/` and
|
|
1358
|
+
`hosted_vllm/` with their server's `base_url`.
|
|
1359
|
+
|
|
1321
1360
|
See [Models docs](https://docs.praison.ai/docs/models) for more details.
|
|
1322
1361
|
|
|
1323
1362
|
</details>
|
|
@@ -33,17 +33,6 @@ praisonai/upload_vision.py
|
|
|
33
33
|
praisonai/version.py
|
|
34
34
|
praisonai/_dev/__init__.py
|
|
35
35
|
praisonai/_dev/api_md.py
|
|
36
|
-
praisonai/_dev/parity/__init__.py
|
|
37
|
-
praisonai/_dev/parity/docs_extractor.py
|
|
38
|
-
praisonai/_dev/parity/docs_generator.py
|
|
39
|
-
praisonai/_dev/parity/generator.py
|
|
40
|
-
praisonai/_dev/parity/python_docs_extractor.py
|
|
41
|
-
praisonai/_dev/parity/python_extractor.py
|
|
42
|
-
praisonai/_dev/parity/rust_docs_extractor.py
|
|
43
|
-
praisonai/_dev/parity/rust_extractor.py
|
|
44
|
-
praisonai/_dev/parity/topic_normalizer.py
|
|
45
|
-
praisonai/_dev/parity/ts_docs_extractor.py
|
|
46
|
-
praisonai/_dev/parity/typescript_extractor.py
|
|
47
36
|
praisonai/acp/__init__.py
|
|
48
37
|
praisonai/acp/config.py
|
|
49
38
|
praisonai/acp/safe_edit.py
|
|
@@ -327,7 +316,6 @@ praisonai/integrations/__init__.py
|
|
|
327
316
|
praisonai/integrations/_cli_loaders.py
|
|
328
317
|
praisonai/integrations/_session_info.py
|
|
329
318
|
praisonai/integrations/_tool_aliases.py
|
|
330
|
-
praisonai/integrations/_unified_registry.py
|
|
331
319
|
praisonai/integrations/backend_registry.py
|
|
332
320
|
praisonai/integrations/base.py
|
|
333
321
|
praisonai/integrations/claude_code.py
|
|
@@ -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.4
|
|
5
|
+
praisonai-code>=0.1.3
|
|
6
|
+
praisonai-bot>=0.1.3
|
|
7
|
+
praisonai-train>=0.1.3
|
|
8
|
+
praisonai-browser>=0.1.3
|
|
9
|
+
praisonai-mcp>=0.1.5
|
|
10
|
+
praisonai-sandbox>=0.1.3
|
|
11
|
+
praisonai-deploy>=0.1.3
|
|
12
12
|
python-dotenv>=0.19.0
|
|
13
13
|
litellm<2,>=1.83.14
|
|
14
14
|
PyYAML>=6.0
|
|
@@ -35,6 +35,19 @@ curl -fsSL https://praison.ai/install.sh | bash
|
|
|
35
35
|
<img src="https://img.shields.io/badge/Highlighted_by_Elon_Musk-000000?style=for-the-badge&logo=x&logoColor=white" alt="Highlighted by Elon Musk" />
|
|
36
36
|
</a>
|
|
37
37
|
<br>
|
|
38
|
+
<br>
|
|
39
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
40
|
+
<img src="https://img.shields.io/badge/Download_for_macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Download for macOS" />
|
|
41
|
+
</a>
|
|
42
|
+
|
|
43
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
44
|
+
<img src="https://img.shields.io/badge/Download_for_Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Download for Windows" />
|
|
45
|
+
</a>
|
|
46
|
+
|
|
47
|
+
<a href="https://github.com/MervinPraison/PraisonAI/releases/latest">
|
|
48
|
+
<img src="https://img.shields.io/badge/Download_for_Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Download for Linux" />
|
|
49
|
+
</a>
|
|
50
|
+
<br>
|
|
38
51
|
</div>
|
|
39
52
|
|
|
40
53
|
<p align="center">
|
|
@@ -1099,13 +1112,39 @@ For other providers, see [Models docs](https://docs.praison.ai/docs/models).
|
|
|
1099
1112
|
<summary><strong>How do I use a local model (Ollama)?</strong></summary>
|
|
1100
1113
|
|
|
1101
1114
|
```bash
|
|
1102
|
-
# Start Ollama
|
|
1115
|
+
# Start Ollama and pull a model
|
|
1103
1116
|
ollama serve
|
|
1117
|
+
ollama pull llama3.2
|
|
1118
|
+
```
|
|
1104
1119
|
|
|
1105
|
-
|
|
1106
|
-
|
|
1120
|
+
```python
|
|
1121
|
+
from praisonaiagents import Agent
|
|
1122
|
+
|
|
1123
|
+
agent = Agent(instructions="You are a helpful assistant", llm="ollama/llama3.2")
|
|
1124
|
+
agent.start("Why is the sky blue?")
|
|
1107
1125
|
```
|
|
1108
1126
|
|
|
1127
|
+
The `ollama/` prefix is what selects Ollama's handling — tool-call repair,
|
|
1128
|
+
tool-result formatting and the streaming rules small local models need. Or set
|
|
1129
|
+
it by environment instead:
|
|
1130
|
+
|
|
1131
|
+
```bash
|
|
1132
|
+
export OPENAI_MODEL_NAME=ollama/llama3.2
|
|
1133
|
+
```
|
|
1134
|
+
|
|
1135
|
+
Setting only `OPENAI_BASE_URL` is not enough: with no model named, the OpenAI
|
|
1136
|
+
default (`gpt-4o-mini`) is sent to Ollama, which answers
|
|
1137
|
+
`404 model 'gpt-4o-mini' not found`. Always name the model.
|
|
1138
|
+
|
|
1139
|
+
Point at a non-default host with `base_url=` or `OLLAMA_HOST`:
|
|
1140
|
+
|
|
1141
|
+
```python
|
|
1142
|
+
agent = Agent(instructions="...", llm="ollama/llama3.2", base_url="http://192.168.1.10:11434")
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
The same shape works for other local runtimes — `lm_studio/`, `vllm/` and
|
|
1146
|
+
`hosted_vllm/` with their server's `base_url`.
|
|
1147
|
+
|
|
1109
1148
|
See [Models docs](https://docs.praison.ai/docs/models) for more details.
|
|
1110
1149
|
|
|
1111
1150
|
</details>
|
|
@@ -197,8 +197,13 @@ def __getattr__(name):
|
|
|
197
197
|
from .integrations.local_agent import LocalAgentConfig
|
|
198
198
|
return LocalAgentConfig
|
|
199
199
|
elif name in ('DB', 'PraisonAIDB', 'PraisonDB'):
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
# Route through ``praisonai.db`` (not ``db.adapter`` directly) so the
|
|
201
|
+
# deprecation warning defined on the ``praisonai.db`` import path fires
|
|
202
|
+
# consistently. ``db`` classes are deprecated in favour of the ``db(...)``
|
|
203
|
+
# factory; ``from praisonai import DB`` must warn just like
|
|
204
|
+
# ``from praisonai.db import DB``.
|
|
205
|
+
from . import db as _db
|
|
206
|
+
return getattr(_db, name)
|
|
202
207
|
# Note: n8n is available via direct import: from praisonai.n8n import YAMLToN8nConverter
|
|
203
208
|
# Lazy loading from main package causes recursion, so use direct import for now
|
|
204
209
|
|
|
@@ -85,6 +85,32 @@ _global_option_names_lock = threading.Lock()
|
|
|
85
85
|
_LEGACY_COLLIDING_SHORT_OPTS = frozenset({"-s", "-f"})
|
|
86
86
|
|
|
87
87
|
|
|
88
|
+
def _introspect_option_names(command):
|
|
89
|
+
"""Derive ``(all_opts, value_opts)`` from a Click command's parameters.
|
|
90
|
+
|
|
91
|
+
Single owner for the parse loop shared by :func:`_get_run_option_names` and
|
|
92
|
+
:func:`_get_global_option_names`; ``all_opts`` is every long/short option
|
|
93
|
+
string and ``value_opts`` is the non-flag subset that consumes a value.
|
|
94
|
+
"""
|
|
95
|
+
all_opts = set()
|
|
96
|
+
value_opts = set()
|
|
97
|
+
for param in command.params:
|
|
98
|
+
is_flag = getattr(param, "is_flag", False) or getattr(
|
|
99
|
+
param, "is_bool_flag", False
|
|
100
|
+
)
|
|
101
|
+
for opt in getattr(param, "opts", []):
|
|
102
|
+
if opt.startswith("-"):
|
|
103
|
+
all_opts.add(opt)
|
|
104
|
+
if not is_flag:
|
|
105
|
+
value_opts.add(opt)
|
|
106
|
+
# Secondary opts are the negated forms of bool flags
|
|
107
|
+
# (e.g. ``--no-stream``); never value-consuming.
|
|
108
|
+
for opt in getattr(param, "secondary_opts", []):
|
|
109
|
+
if opt.startswith("-"):
|
|
110
|
+
all_opts.add(opt)
|
|
111
|
+
return all_opts, value_opts
|
|
112
|
+
|
|
113
|
+
|
|
88
114
|
def _get_run_option_names():
|
|
89
115
|
"""Return the option names accepted by the Typer ``run`` command.
|
|
90
116
|
|
|
@@ -110,22 +136,7 @@ def _get_run_option_names():
|
|
|
110
136
|
from typer.main import get_command as _get_command
|
|
111
137
|
|
|
112
138
|
command = _get_command(run_app)
|
|
113
|
-
all_opts =
|
|
114
|
-
value_opts = set()
|
|
115
|
-
for param in command.params:
|
|
116
|
-
is_flag = getattr(param, "is_flag", False) or getattr(
|
|
117
|
-
param, "is_bool_flag", False
|
|
118
|
-
)
|
|
119
|
-
for opt in getattr(param, "opts", []):
|
|
120
|
-
if opt.startswith("-"):
|
|
121
|
-
all_opts.add(opt)
|
|
122
|
-
if not is_flag:
|
|
123
|
-
value_opts.add(opt)
|
|
124
|
-
# Secondary opts are the negated forms of bool flags
|
|
125
|
-
# (e.g. ``--no-stream``); never value-consuming.
|
|
126
|
-
for opt in getattr(param, "secondary_opts", []):
|
|
127
|
-
if opt.startswith("-"):
|
|
128
|
-
all_opts.add(opt)
|
|
139
|
+
all_opts, value_opts = _introspect_option_names(command)
|
|
129
140
|
except Exception:
|
|
130
141
|
# Introspection depends only on the static command definition, so a
|
|
131
142
|
# failure here is structural — cache it (as ``False``) to avoid
|
|
@@ -157,20 +168,7 @@ def _get_global_option_names():
|
|
|
157
168
|
from typer.main import get_command as _get_command
|
|
158
169
|
|
|
159
170
|
command = _get_command(root_app)
|
|
160
|
-
all_opts =
|
|
161
|
-
value_opts = set()
|
|
162
|
-
for param in command.params:
|
|
163
|
-
is_flag = getattr(param, "is_flag", False) or getattr(
|
|
164
|
-
param, "is_bool_flag", False
|
|
165
|
-
)
|
|
166
|
-
for opt in getattr(param, "opts", []):
|
|
167
|
-
if opt.startswith("-"):
|
|
168
|
-
all_opts.add(opt)
|
|
169
|
-
if not is_flag:
|
|
170
|
-
value_opts.add(opt)
|
|
171
|
-
for opt in getattr(param, "secondary_opts", []):
|
|
172
|
-
if opt.startswith("-"):
|
|
173
|
-
all_opts.add(opt)
|
|
171
|
+
all_opts, value_opts = _introspect_option_names(command)
|
|
174
172
|
except Exception:
|
|
175
173
|
_global_option_names_cache = False
|
|
176
174
|
return None
|
|
@@ -12,23 +12,22 @@ import difflib
|
|
|
12
12
|
import importlib
|
|
13
13
|
import importlib.util
|
|
14
14
|
from pathlib import Path
|
|
15
|
-
from typing import Dict, Any, Optional, List
|
|
15
|
+
from typing import Dict, Any, Optional, List, TYPE_CHECKING
|
|
16
16
|
|
|
17
17
|
from .version import __version__
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
# New architecture components are imported lazily to preserve the wrapper's
|
|
20
|
+
# lazy-import contract: eagerly importing them here would pull the heavy
|
|
21
|
+
# ``praisonaiagents.frameworks.*`` tree on every CLI command and ``praisonai.run``
|
|
22
|
+
# call. Runtime access goes through ``_get_default_adapter_registry()`` below;
|
|
23
|
+
# these type-only imports carry no runtime cost.
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from .framework_adapters.base import FrameworkAdapter
|
|
26
|
+
from .framework_adapters.registry import FrameworkAdapterRegistry
|
|
22
27
|
|
|
23
28
|
logger = logging.getLogger("praisonai.agents_generator")
|
|
24
29
|
|
|
25
30
|
|
|
26
|
-
def _rich_print(*args, **kwargs):
|
|
27
|
-
"""Lazy alias for rich.print — pays the import cost only on first use."""
|
|
28
|
-
from rich import print as _rp
|
|
29
|
-
return _rp(*args, **kwargs)
|
|
30
|
-
|
|
31
|
-
|
|
32
31
|
def _yaml_safe_load(stream):
|
|
33
32
|
"""Lazy alias for yaml.safe_load."""
|
|
34
33
|
import yaml
|
|
@@ -668,7 +667,7 @@ class AgentsGenerator:
|
|
|
668
667
|
self.close()
|
|
669
668
|
return False
|
|
670
669
|
|
|
671
|
-
def _get_framework_adapter(self, framework: str) -> FrameworkAdapter:
|
|
670
|
+
def _get_framework_adapter(self, framework: str) -> "FrameworkAdapter":
|
|
672
671
|
"""
|
|
673
672
|
Get the appropriate framework adapter for the given framework.
|
|
674
673
|
|
|
@@ -30,10 +30,22 @@ logger = logging.getLogger(__name__)
|
|
|
30
30
|
import os
|
|
31
31
|
import warnings
|
|
32
32
|
|
|
33
|
-
CALL_SERVER_TOKEN = os.getenv('CALL_SERVER_TOKEN')
|
|
34
33
|
_LOCALHOST_HOSTS = frozenset({'127.0.0.1', 'localhost', '::1'})
|
|
35
34
|
|
|
36
35
|
|
|
36
|
+
def _call_server_token() -> Optional[str]:
|
|
37
|
+
"""Live-read the shared server token from the environment.
|
|
38
|
+
|
|
39
|
+
The environment is the single source of truth; capturing it at import time
|
|
40
|
+
broke any host that mounts this router without going through
|
|
41
|
+
``praisonai.api.call.main()`` (AgentOS, ``serve``, tests, embedders) and
|
|
42
|
+
made a late-loaded ``.env`` or runtime rotation impossible. Reading here —
|
|
43
|
+
like ``_call_auth_disabled`` / ``_configured_bind_host`` already do — makes
|
|
44
|
+
every request observe the current value.
|
|
45
|
+
"""
|
|
46
|
+
return os.getenv('CALL_SERVER_TOKEN')
|
|
47
|
+
|
|
48
|
+
|
|
37
49
|
def _call_auth_disabled() -> bool:
|
|
38
50
|
return os.getenv('PRAISONAI_CALL_AUTH', '').lower() == 'disabled'
|
|
39
51
|
|
|
@@ -67,7 +79,8 @@ async def verify_token(
|
|
|
67
79
|
stacklevel=2,
|
|
68
80
|
)
|
|
69
81
|
return
|
|
70
|
-
|
|
82
|
+
expected = _call_server_token()
|
|
83
|
+
if not expected:
|
|
71
84
|
raise HTTPException(
|
|
72
85
|
status_code=503,
|
|
73
86
|
detail="CALL_SERVER_TOKEN is not configured. Set CALL_SERVER_TOKEN to enable authentication.",
|
|
@@ -96,7 +109,7 @@ async def verify_token(
|
|
|
96
109
|
|
|
97
110
|
# Constant-time comparison to avoid a token-recovery timing side channel.
|
|
98
111
|
import hmac
|
|
99
|
-
if not token or not hmac.compare_digest(token,
|
|
112
|
+
if not token or not hmac.compare_digest(token, expected):
|
|
100
113
|
raise HTTPException(status_code=401, detail="Unauthorized")
|
|
101
114
|
|
|
102
115
|
# Request/Response Models
|
|
@@ -185,6 +198,17 @@ class AgentRegistry:
|
|
|
185
198
|
_default_registry = AgentRegistry()
|
|
186
199
|
|
|
187
200
|
|
|
201
|
+
def _registry_dependency() -> AgentRegistry:
|
|
202
|
+
"""Which ``AgentRegistry`` serves this request?
|
|
203
|
+
|
|
204
|
+
Returns the process-default registry by default, but is overridable via
|
|
205
|
+
``app.dependency_overrides[_registry_dependency] = ...`` so an ``AgentOS`` /
|
|
206
|
+
``serve`` host can bind its own registry per app instance and get real
|
|
207
|
+
per-tenant isolation through the router (not just the free functions).
|
|
208
|
+
"""
|
|
209
|
+
return _default_registry
|
|
210
|
+
|
|
211
|
+
|
|
188
212
|
def register_agent(agent_id: str, agent: Any,
|
|
189
213
|
*, registry: Optional[AgentRegistry] = None) -> None:
|
|
190
214
|
"""Register an agent for invocation via API."""
|
|
@@ -256,7 +280,8 @@ def _clone_agent(agent: Any) -> Any:
|
|
|
256
280
|
return _copy.deepcopy(agent)
|
|
257
281
|
|
|
258
282
|
|
|
259
|
-
def resolve_session_agent(agent_id: str, session_id: Optional[str]
|
|
283
|
+
def resolve_session_agent(agent_id: str, session_id: Optional[str],
|
|
284
|
+
*, registry: Optional[AgentRegistry] = None) -> Any:
|
|
260
285
|
"""Resolve an isolated, session-scoped agent for a single request.
|
|
261
286
|
|
|
262
287
|
The registry holds a *template* agent, not a live conversation. Every
|
|
@@ -272,7 +297,7 @@ def resolve_session_agent(agent_id: str, session_id: Optional[str]) -> Any:
|
|
|
272
297
|
Agents that don't support cloning/session binding (e.g. plain mocks) fall
|
|
273
298
|
back to the shared registry instance for backward compatibility.
|
|
274
299
|
"""
|
|
275
|
-
template = get_agent(agent_id)
|
|
300
|
+
template = get_agent(agent_id, registry=registry)
|
|
276
301
|
if template is None:
|
|
277
302
|
return None
|
|
278
303
|
|
|
@@ -438,7 +463,8 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
438
463
|
async def invoke_agent(
|
|
439
464
|
agent_id: str,
|
|
440
465
|
request: AgentInvokeRequest,
|
|
441
|
-
_: None = Depends(verify_token)
|
|
466
|
+
_: None = Depends(verify_token),
|
|
467
|
+
registry: AgentRegistry = Depends(_registry_dependency),
|
|
442
468
|
) -> Union[AgentInvokeResponse, ErrorResponse]:
|
|
443
469
|
"""
|
|
444
470
|
Invoke a PraisonAI agent with a message.
|
|
@@ -472,7 +498,7 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
472
498
|
# share mutable chat_history. A provided session_id gives continuity via
|
|
473
499
|
# the shared session store; its absence yields an ephemeral conversation.
|
|
474
500
|
try:
|
|
475
|
-
agent = resolve_session_agent(agent_id, request.session_id)
|
|
501
|
+
agent = resolve_session_agent(agent_id, request.session_id, registry=registry)
|
|
476
502
|
except Exception as e:
|
|
477
503
|
logger.error(f"Failed to isolate agent {agent_id}: {e}")
|
|
478
504
|
raise HTTPException(
|
|
@@ -533,14 +559,17 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
533
559
|
)
|
|
534
560
|
|
|
535
561
|
@router.get("/agents")
|
|
536
|
-
async def list_agents(
|
|
562
|
+
async def list_agents(
|
|
563
|
+
_: None = Depends(verify_token),
|
|
564
|
+
registry: AgentRegistry = Depends(_registry_dependency),
|
|
565
|
+
) -> Dict[str, Any]:
|
|
537
566
|
"""
|
|
538
567
|
List all registered agents.
|
|
539
568
|
|
|
540
569
|
Returns:
|
|
541
570
|
Dictionary containing list of available agents
|
|
542
571
|
"""
|
|
543
|
-
agents = list_registered_agents()
|
|
572
|
+
agents = list_registered_agents(registry=registry)
|
|
544
573
|
return {
|
|
545
574
|
"agents": agents,
|
|
546
575
|
"count": len(agents),
|
|
@@ -564,11 +593,15 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
564
593
|
}
|
|
565
594
|
|
|
566
595
|
@router.delete("/agents/{agent_id}")
|
|
567
|
-
async def unregister_agent_endpoint(
|
|
596
|
+
async def unregister_agent_endpoint(
|
|
597
|
+
agent_id: str,
|
|
598
|
+
_: None = Depends(verify_token),
|
|
599
|
+
registry: AgentRegistry = Depends(_registry_dependency),
|
|
600
|
+
) -> Dict[str, Any]:
|
|
568
601
|
"""
|
|
569
602
|
Unregister an agent from API access.
|
|
570
603
|
"""
|
|
571
|
-
success = unregister_agent(agent_id)
|
|
604
|
+
success = unregister_agent(agent_id, registry=registry)
|
|
572
605
|
if success:
|
|
573
606
|
return {
|
|
574
607
|
"message": f"Agent '{agent_id}' unregistered successfully",
|
|
@@ -581,11 +614,15 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
|
|
|
581
614
|
)
|
|
582
615
|
|
|
583
616
|
@router.get("/agents/{agent_id}")
|
|
584
|
-
async def get_agent_info(
|
|
617
|
+
async def get_agent_info(
|
|
618
|
+
agent_id: str,
|
|
619
|
+
_: None = Depends(verify_token),
|
|
620
|
+
registry: AgentRegistry = Depends(_registry_dependency),
|
|
621
|
+
) -> Dict[str, Any]:
|
|
585
622
|
"""
|
|
586
623
|
Get information about a registered agent.
|
|
587
624
|
"""
|
|
588
|
-
agent = get_agent(agent_id)
|
|
625
|
+
agent = get_agent(agent_id, registry=registry)
|
|
589
626
|
if not agent:
|
|
590
627
|
raise HTTPException(
|
|
591
628
|
status_code=404,
|
|
@@ -221,13 +221,9 @@ def _refresh_env_globals() -> None:
|
|
|
221
221
|
CALL_SERVER_TOKEN = os.getenv('CALL_SERVER_TOKEN')
|
|
222
222
|
MAX_CONCURRENT_CONNECTIONS = int(os.getenv('MAX_CONCURRENT_CONNECTIONS', '5'))
|
|
223
223
|
MAX_REQUESTS_PER_WINDOW = int(os.getenv('MAX_REQUESTS_PER_WINDOW', '100'))
|
|
224
|
-
# The included n8n invoke router
|
|
225
|
-
#
|
|
226
|
-
|
|
227
|
-
from . import agent_invoke as _agent_invoke
|
|
228
|
-
_agent_invoke.CALL_SERVER_TOKEN = CALL_SERVER_TOKEN
|
|
229
|
-
except Exception:
|
|
230
|
-
pass
|
|
224
|
+
# The included n8n invoke router now live-reads CALL_SERVER_TOKEN from the
|
|
225
|
+
# environment per request (agent_invoke._call_server_token), so no
|
|
226
|
+
# cross-module reach-in is needed to keep its auth consistent.
|
|
231
227
|
|
|
232
228
|
|
|
233
229
|
# Set up logging
|