PraisonAI 3.0.0__py3-none-any.whl
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/__init__.py +54 -0
- praisonai/__main__.py +15 -0
- praisonai/acp/__init__.py +54 -0
- praisonai/acp/config.py +159 -0
- praisonai/acp/server.py +587 -0
- praisonai/acp/session.py +219 -0
- praisonai/adapters/__init__.py +50 -0
- praisonai/adapters/readers.py +395 -0
- praisonai/adapters/rerankers.py +315 -0
- praisonai/adapters/retrievers.py +394 -0
- praisonai/adapters/vector_stores.py +409 -0
- praisonai/agent_scheduler.py +337 -0
- praisonai/agents_generator.py +903 -0
- praisonai/api/call.py +292 -0
- praisonai/auto.py +1197 -0
- praisonai/capabilities/__init__.py +275 -0
- praisonai/capabilities/a2a.py +140 -0
- praisonai/capabilities/assistants.py +283 -0
- praisonai/capabilities/audio.py +320 -0
- praisonai/capabilities/batches.py +469 -0
- praisonai/capabilities/completions.py +336 -0
- praisonai/capabilities/container_files.py +155 -0
- praisonai/capabilities/containers.py +93 -0
- praisonai/capabilities/embeddings.py +158 -0
- praisonai/capabilities/files.py +467 -0
- praisonai/capabilities/fine_tuning.py +293 -0
- praisonai/capabilities/guardrails.py +182 -0
- praisonai/capabilities/images.py +330 -0
- praisonai/capabilities/mcp.py +190 -0
- praisonai/capabilities/messages.py +270 -0
- praisonai/capabilities/moderations.py +154 -0
- praisonai/capabilities/ocr.py +217 -0
- praisonai/capabilities/passthrough.py +204 -0
- praisonai/capabilities/rag.py +207 -0
- praisonai/capabilities/realtime.py +160 -0
- praisonai/capabilities/rerank.py +165 -0
- praisonai/capabilities/responses.py +266 -0
- praisonai/capabilities/search.py +109 -0
- praisonai/capabilities/skills.py +133 -0
- praisonai/capabilities/vector_store_files.py +334 -0
- praisonai/capabilities/vector_stores.py +304 -0
- praisonai/capabilities/videos.py +141 -0
- praisonai/chainlit_ui.py +304 -0
- praisonai/chat/__init__.py +106 -0
- praisonai/chat/app.py +125 -0
- praisonai/cli/__init__.py +26 -0
- praisonai/cli/app.py +213 -0
- praisonai/cli/commands/__init__.py +75 -0
- praisonai/cli/commands/acp.py +70 -0
- praisonai/cli/commands/completion.py +333 -0
- praisonai/cli/commands/config.py +166 -0
- praisonai/cli/commands/debug.py +142 -0
- praisonai/cli/commands/diag.py +55 -0
- praisonai/cli/commands/doctor.py +166 -0
- praisonai/cli/commands/environment.py +179 -0
- praisonai/cli/commands/lsp.py +112 -0
- praisonai/cli/commands/mcp.py +210 -0
- praisonai/cli/commands/profile.py +457 -0
- praisonai/cli/commands/run.py +228 -0
- praisonai/cli/commands/schedule.py +150 -0
- praisonai/cli/commands/serve.py +97 -0
- praisonai/cli/commands/session.py +212 -0
- praisonai/cli/commands/traces.py +145 -0
- praisonai/cli/commands/version.py +101 -0
- praisonai/cli/configuration/__init__.py +18 -0
- praisonai/cli/configuration/loader.py +353 -0
- praisonai/cli/configuration/paths.py +114 -0
- praisonai/cli/configuration/schema.py +164 -0
- praisonai/cli/features/__init__.py +268 -0
- praisonai/cli/features/acp.py +236 -0
- praisonai/cli/features/action_orchestrator.py +546 -0
- praisonai/cli/features/agent_scheduler.py +773 -0
- praisonai/cli/features/agent_tools.py +474 -0
- praisonai/cli/features/agents.py +375 -0
- praisonai/cli/features/at_mentions.py +471 -0
- praisonai/cli/features/auto_memory.py +182 -0
- praisonai/cli/features/autonomy_mode.py +490 -0
- praisonai/cli/features/background.py +356 -0
- praisonai/cli/features/base.py +168 -0
- praisonai/cli/features/capabilities.py +1326 -0
- praisonai/cli/features/checkpoints.py +338 -0
- praisonai/cli/features/code_intelligence.py +652 -0
- praisonai/cli/features/compaction.py +294 -0
- praisonai/cli/features/compare.py +534 -0
- praisonai/cli/features/cost_tracker.py +514 -0
- praisonai/cli/features/debug.py +810 -0
- praisonai/cli/features/deploy.py +517 -0
- praisonai/cli/features/diag.py +289 -0
- praisonai/cli/features/doctor/__init__.py +63 -0
- praisonai/cli/features/doctor/checks/__init__.py +24 -0
- praisonai/cli/features/doctor/checks/acp_checks.py +240 -0
- praisonai/cli/features/doctor/checks/config_checks.py +366 -0
- praisonai/cli/features/doctor/checks/db_checks.py +366 -0
- praisonai/cli/features/doctor/checks/env_checks.py +543 -0
- praisonai/cli/features/doctor/checks/lsp_checks.py +199 -0
- praisonai/cli/features/doctor/checks/mcp_checks.py +349 -0
- praisonai/cli/features/doctor/checks/memory_checks.py +268 -0
- praisonai/cli/features/doctor/checks/network_checks.py +251 -0
- praisonai/cli/features/doctor/checks/obs_checks.py +328 -0
- praisonai/cli/features/doctor/checks/performance_checks.py +235 -0
- praisonai/cli/features/doctor/checks/permissions_checks.py +259 -0
- praisonai/cli/features/doctor/checks/selftest_checks.py +322 -0
- praisonai/cli/features/doctor/checks/serve_checks.py +426 -0
- praisonai/cli/features/doctor/checks/skills_checks.py +231 -0
- praisonai/cli/features/doctor/checks/tools_checks.py +371 -0
- praisonai/cli/features/doctor/engine.py +266 -0
- praisonai/cli/features/doctor/formatters.py +310 -0
- praisonai/cli/features/doctor/handler.py +397 -0
- praisonai/cli/features/doctor/models.py +264 -0
- praisonai/cli/features/doctor/registry.py +239 -0
- praisonai/cli/features/endpoints.py +1019 -0
- praisonai/cli/features/eval.py +560 -0
- praisonai/cli/features/external_agents.py +231 -0
- praisonai/cli/features/fast_context.py +410 -0
- praisonai/cli/features/flow_display.py +566 -0
- praisonai/cli/features/git_integration.py +651 -0
- praisonai/cli/features/guardrail.py +171 -0
- praisonai/cli/features/handoff.py +185 -0
- praisonai/cli/features/hooks.py +583 -0
- praisonai/cli/features/image.py +384 -0
- praisonai/cli/features/interactive_runtime.py +585 -0
- praisonai/cli/features/interactive_tools.py +380 -0
- praisonai/cli/features/interactive_tui.py +603 -0
- praisonai/cli/features/jobs.py +632 -0
- praisonai/cli/features/knowledge.py +531 -0
- praisonai/cli/features/lite.py +244 -0
- praisonai/cli/features/lsp_cli.py +225 -0
- praisonai/cli/features/mcp.py +169 -0
- praisonai/cli/features/message_queue.py +587 -0
- praisonai/cli/features/metrics.py +211 -0
- praisonai/cli/features/n8n.py +673 -0
- praisonai/cli/features/observability.py +293 -0
- praisonai/cli/features/ollama.py +361 -0
- praisonai/cli/features/output_style.py +273 -0
- praisonai/cli/features/package.py +631 -0
- praisonai/cli/features/performance.py +308 -0
- praisonai/cli/features/persistence.py +636 -0
- praisonai/cli/features/profile.py +226 -0
- praisonai/cli/features/profiler/__init__.py +81 -0
- praisonai/cli/features/profiler/core.py +558 -0
- praisonai/cli/features/profiler/optimizations.py +652 -0
- praisonai/cli/features/profiler/suite.py +386 -0
- praisonai/cli/features/profiling.py +350 -0
- praisonai/cli/features/queue/__init__.py +73 -0
- praisonai/cli/features/queue/manager.py +395 -0
- praisonai/cli/features/queue/models.py +286 -0
- praisonai/cli/features/queue/persistence.py +564 -0
- praisonai/cli/features/queue/scheduler.py +484 -0
- praisonai/cli/features/queue/worker.py +372 -0
- praisonai/cli/features/recipe.py +1723 -0
- praisonai/cli/features/recipes.py +449 -0
- praisonai/cli/features/registry.py +229 -0
- praisonai/cli/features/repo_map.py +860 -0
- praisonai/cli/features/router.py +466 -0
- praisonai/cli/features/sandbox_executor.py +515 -0
- praisonai/cli/features/serve.py +829 -0
- praisonai/cli/features/session.py +222 -0
- praisonai/cli/features/skills.py +856 -0
- praisonai/cli/features/slash_commands.py +650 -0
- praisonai/cli/features/telemetry.py +179 -0
- praisonai/cli/features/templates.py +1384 -0
- praisonai/cli/features/thinking.py +305 -0
- praisonai/cli/features/todo.py +334 -0
- praisonai/cli/features/tools.py +680 -0
- praisonai/cli/features/tui/__init__.py +83 -0
- praisonai/cli/features/tui/app.py +580 -0
- praisonai/cli/features/tui/cli.py +566 -0
- praisonai/cli/features/tui/debug.py +511 -0
- praisonai/cli/features/tui/events.py +99 -0
- praisonai/cli/features/tui/mock_provider.py +328 -0
- praisonai/cli/features/tui/orchestrator.py +652 -0
- praisonai/cli/features/tui/screens/__init__.py +50 -0
- praisonai/cli/features/tui/screens/main.py +245 -0
- praisonai/cli/features/tui/screens/queue.py +174 -0
- praisonai/cli/features/tui/screens/session.py +124 -0
- praisonai/cli/features/tui/screens/settings.py +148 -0
- praisonai/cli/features/tui/widgets/__init__.py +56 -0
- praisonai/cli/features/tui/widgets/chat.py +261 -0
- praisonai/cli/features/tui/widgets/composer.py +224 -0
- praisonai/cli/features/tui/widgets/queue_panel.py +200 -0
- praisonai/cli/features/tui/widgets/status.py +167 -0
- praisonai/cli/features/tui/widgets/tool_panel.py +248 -0
- praisonai/cli/features/workflow.py +720 -0
- praisonai/cli/legacy.py +236 -0
- praisonai/cli/main.py +5559 -0
- praisonai/cli/schedule_cli.py +54 -0
- praisonai/cli/state/__init__.py +31 -0
- praisonai/cli/state/identifiers.py +161 -0
- praisonai/cli/state/sessions.py +313 -0
- praisonai/code/__init__.py +93 -0
- praisonai/code/agent_tools.py +344 -0
- praisonai/code/diff/__init__.py +21 -0
- praisonai/code/diff/diff_strategy.py +432 -0
- praisonai/code/tools/__init__.py +27 -0
- praisonai/code/tools/apply_diff.py +221 -0
- praisonai/code/tools/execute_command.py +275 -0
- praisonai/code/tools/list_files.py +274 -0
- praisonai/code/tools/read_file.py +206 -0
- praisonai/code/tools/search_replace.py +248 -0
- praisonai/code/tools/write_file.py +217 -0
- praisonai/code/utils/__init__.py +46 -0
- praisonai/code/utils/file_utils.py +307 -0
- praisonai/code/utils/ignore_utils.py +308 -0
- praisonai/code/utils/text_utils.py +276 -0
- praisonai/db/__init__.py +64 -0
- praisonai/db/adapter.py +531 -0
- praisonai/deploy/__init__.py +62 -0
- praisonai/deploy/api.py +231 -0
- praisonai/deploy/docker.py +454 -0
- praisonai/deploy/doctor.py +367 -0
- praisonai/deploy/main.py +327 -0
- praisonai/deploy/models.py +179 -0
- praisonai/deploy/providers/__init__.py +33 -0
- praisonai/deploy/providers/aws.py +331 -0
- praisonai/deploy/providers/azure.py +358 -0
- praisonai/deploy/providers/base.py +101 -0
- praisonai/deploy/providers/gcp.py +314 -0
- praisonai/deploy/schema.py +208 -0
- praisonai/deploy.py +185 -0
- praisonai/endpoints/__init__.py +53 -0
- praisonai/endpoints/a2u_server.py +410 -0
- praisonai/endpoints/discovery.py +165 -0
- praisonai/endpoints/providers/__init__.py +28 -0
- praisonai/endpoints/providers/a2a.py +253 -0
- praisonai/endpoints/providers/a2u.py +208 -0
- praisonai/endpoints/providers/agents_api.py +171 -0
- praisonai/endpoints/providers/base.py +231 -0
- praisonai/endpoints/providers/mcp.py +263 -0
- praisonai/endpoints/providers/recipe.py +206 -0
- praisonai/endpoints/providers/tools_mcp.py +150 -0
- praisonai/endpoints/registry.py +131 -0
- praisonai/endpoints/server.py +161 -0
- praisonai/inbuilt_tools/__init__.py +24 -0
- praisonai/inbuilt_tools/autogen_tools.py +117 -0
- praisonai/inc/__init__.py +2 -0
- praisonai/inc/config.py +96 -0
- praisonai/inc/models.py +155 -0
- praisonai/integrations/__init__.py +56 -0
- praisonai/integrations/base.py +303 -0
- praisonai/integrations/claude_code.py +270 -0
- praisonai/integrations/codex_cli.py +255 -0
- praisonai/integrations/cursor_cli.py +195 -0
- praisonai/integrations/gemini_cli.py +222 -0
- praisonai/jobs/__init__.py +67 -0
- praisonai/jobs/executor.py +425 -0
- praisonai/jobs/models.py +230 -0
- praisonai/jobs/router.py +314 -0
- praisonai/jobs/server.py +186 -0
- praisonai/jobs/store.py +203 -0
- praisonai/llm/__init__.py +66 -0
- praisonai/llm/registry.py +382 -0
- praisonai/mcp_server/__init__.py +152 -0
- praisonai/mcp_server/adapters/__init__.py +74 -0
- praisonai/mcp_server/adapters/agents.py +128 -0
- praisonai/mcp_server/adapters/capabilities.py +168 -0
- praisonai/mcp_server/adapters/cli_tools.py +568 -0
- praisonai/mcp_server/adapters/extended_capabilities.py +462 -0
- praisonai/mcp_server/adapters/knowledge.py +93 -0
- praisonai/mcp_server/adapters/memory.py +104 -0
- praisonai/mcp_server/adapters/prompts.py +306 -0
- praisonai/mcp_server/adapters/resources.py +124 -0
- praisonai/mcp_server/adapters/tools_bridge.py +280 -0
- praisonai/mcp_server/auth/__init__.py +48 -0
- praisonai/mcp_server/auth/api_key.py +291 -0
- praisonai/mcp_server/auth/oauth.py +460 -0
- praisonai/mcp_server/auth/oidc.py +289 -0
- praisonai/mcp_server/auth/scopes.py +260 -0
- praisonai/mcp_server/cli.py +852 -0
- praisonai/mcp_server/elicitation.py +445 -0
- praisonai/mcp_server/icons.py +302 -0
- praisonai/mcp_server/recipe_adapter.py +573 -0
- praisonai/mcp_server/recipe_cli.py +824 -0
- praisonai/mcp_server/registry.py +703 -0
- praisonai/mcp_server/sampling.py +422 -0
- praisonai/mcp_server/server.py +490 -0
- praisonai/mcp_server/tasks.py +443 -0
- praisonai/mcp_server/transports/__init__.py +18 -0
- praisonai/mcp_server/transports/http_stream.py +376 -0
- praisonai/mcp_server/transports/stdio.py +132 -0
- praisonai/persistence/__init__.py +84 -0
- praisonai/persistence/config.py +238 -0
- praisonai/persistence/conversation/__init__.py +25 -0
- praisonai/persistence/conversation/async_mysql.py +427 -0
- praisonai/persistence/conversation/async_postgres.py +410 -0
- praisonai/persistence/conversation/async_sqlite.py +371 -0
- praisonai/persistence/conversation/base.py +151 -0
- praisonai/persistence/conversation/json_store.py +250 -0
- praisonai/persistence/conversation/mysql.py +387 -0
- praisonai/persistence/conversation/postgres.py +401 -0
- praisonai/persistence/conversation/singlestore.py +240 -0
- praisonai/persistence/conversation/sqlite.py +341 -0
- praisonai/persistence/conversation/supabase.py +203 -0
- praisonai/persistence/conversation/surrealdb.py +287 -0
- praisonai/persistence/factory.py +301 -0
- praisonai/persistence/hooks/__init__.py +18 -0
- praisonai/persistence/hooks/agent_hooks.py +297 -0
- praisonai/persistence/knowledge/__init__.py +26 -0
- praisonai/persistence/knowledge/base.py +144 -0
- praisonai/persistence/knowledge/cassandra.py +232 -0
- praisonai/persistence/knowledge/chroma.py +295 -0
- praisonai/persistence/knowledge/clickhouse.py +242 -0
- praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
- praisonai/persistence/knowledge/couchbase.py +286 -0
- praisonai/persistence/knowledge/lancedb.py +216 -0
- praisonai/persistence/knowledge/langchain_adapter.py +291 -0
- praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
- praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
- praisonai/persistence/knowledge/milvus.py +277 -0
- praisonai/persistence/knowledge/mongodb_vector.py +306 -0
- praisonai/persistence/knowledge/pgvector.py +335 -0
- praisonai/persistence/knowledge/pinecone.py +253 -0
- praisonai/persistence/knowledge/qdrant.py +301 -0
- praisonai/persistence/knowledge/redis_vector.py +291 -0
- praisonai/persistence/knowledge/singlestore_vector.py +299 -0
- praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
- praisonai/persistence/knowledge/upstash_vector.py +266 -0
- praisonai/persistence/knowledge/weaviate.py +223 -0
- praisonai/persistence/migrations/__init__.py +10 -0
- praisonai/persistence/migrations/manager.py +251 -0
- praisonai/persistence/orchestrator.py +406 -0
- praisonai/persistence/state/__init__.py +21 -0
- praisonai/persistence/state/async_mongodb.py +200 -0
- praisonai/persistence/state/base.py +107 -0
- praisonai/persistence/state/dynamodb.py +226 -0
- praisonai/persistence/state/firestore.py +175 -0
- praisonai/persistence/state/gcs.py +155 -0
- praisonai/persistence/state/memory.py +245 -0
- praisonai/persistence/state/mongodb.py +158 -0
- praisonai/persistence/state/redis.py +190 -0
- praisonai/persistence/state/upstash.py +144 -0
- praisonai/persistence/tests/__init__.py +3 -0
- praisonai/persistence/tests/test_all_backends.py +633 -0
- praisonai/profiler.py +1214 -0
- praisonai/recipe/__init__.py +134 -0
- praisonai/recipe/bridge.py +278 -0
- praisonai/recipe/core.py +893 -0
- praisonai/recipe/exceptions.py +54 -0
- praisonai/recipe/history.py +402 -0
- praisonai/recipe/models.py +266 -0
- praisonai/recipe/operations.py +440 -0
- praisonai/recipe/policy.py +422 -0
- praisonai/recipe/registry.py +849 -0
- praisonai/recipe/runtime.py +214 -0
- praisonai/recipe/security.py +711 -0
- praisonai/recipe/serve.py +859 -0
- praisonai/recipe/server.py +613 -0
- praisonai/scheduler/__init__.py +45 -0
- praisonai/scheduler/agent_scheduler.py +552 -0
- praisonai/scheduler/base.py +124 -0
- praisonai/scheduler/daemon_manager.py +225 -0
- praisonai/scheduler/state_manager.py +155 -0
- praisonai/scheduler/yaml_loader.py +193 -0
- praisonai/scheduler.py +194 -0
- praisonai/setup/__init__.py +1 -0
- praisonai/setup/build.py +21 -0
- praisonai/setup/post_install.py +23 -0
- praisonai/setup/setup_conda_env.py +25 -0
- praisonai/setup.py +16 -0
- praisonai/templates/__init__.py +116 -0
- praisonai/templates/cache.py +364 -0
- praisonai/templates/dependency_checker.py +358 -0
- praisonai/templates/discovery.py +391 -0
- praisonai/templates/loader.py +564 -0
- praisonai/templates/registry.py +511 -0
- praisonai/templates/resolver.py +206 -0
- praisonai/templates/security.py +327 -0
- praisonai/templates/tool_override.py +498 -0
- praisonai/templates/tools_doctor.py +256 -0
- praisonai/test.py +105 -0
- praisonai/train.py +562 -0
- praisonai/train_vision.py +306 -0
- praisonai/ui/agents.py +824 -0
- praisonai/ui/callbacks.py +57 -0
- praisonai/ui/chainlit_compat.py +246 -0
- praisonai/ui/chat.py +532 -0
- praisonai/ui/code.py +717 -0
- praisonai/ui/colab.py +474 -0
- praisonai/ui/colab_chainlit.py +81 -0
- praisonai/ui/components/aicoder.py +284 -0
- praisonai/ui/context.py +283 -0
- praisonai/ui/database_config.py +56 -0
- praisonai/ui/db.py +294 -0
- praisonai/ui/realtime.py +488 -0
- praisonai/ui/realtimeclient/__init__.py +756 -0
- praisonai/ui/realtimeclient/tools.py +242 -0
- praisonai/ui/sql_alchemy.py +710 -0
- praisonai/upload_vision.py +140 -0
- praisonai/version.py +1 -0
- praisonai-3.0.0.dist-info/METADATA +3493 -0
- praisonai-3.0.0.dist-info/RECORD +393 -0
- praisonai-3.0.0.dist-info/WHEEL +5 -0
- praisonai-3.0.0.dist-info/entry_points.txt +4 -0
- praisonai-3.0.0.dist-info/top_level.txt +1 -0
praisonai/__init__.py
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Suppress crewai.cli.config logger BEFORE any imports to prevent INFO log
|
|
2
|
+
import logging
|
|
3
|
+
logging.getLogger('crewai.cli.config').setLevel(logging.ERROR)
|
|
4
|
+
|
|
5
|
+
# Disable OpenTelemetry SDK
|
|
6
|
+
import os
|
|
7
|
+
os.environ["OTEL_SDK_DISABLED"] = "true"
|
|
8
|
+
os.environ["EC_TELEMETRY"] = "false"
|
|
9
|
+
|
|
10
|
+
# Version is lightweight, import directly
|
|
11
|
+
from .version import __version__
|
|
12
|
+
|
|
13
|
+
# Define __all__ for lazy loading
|
|
14
|
+
__all__ = [
|
|
15
|
+
'PraisonAI',
|
|
16
|
+
'__version__',
|
|
17
|
+
'Deploy',
|
|
18
|
+
'DeployConfig',
|
|
19
|
+
'DeployType',
|
|
20
|
+
'CloudProvider',
|
|
21
|
+
'recipe',
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
# Lazy loading for heavy imports
|
|
25
|
+
def __getattr__(name):
|
|
26
|
+
"""Lazy load heavy modules to improve import time."""
|
|
27
|
+
if name == 'PraisonAI':
|
|
28
|
+
from .cli import PraisonAI
|
|
29
|
+
return PraisonAI
|
|
30
|
+
elif name == 'Deploy':
|
|
31
|
+
from .deploy import Deploy
|
|
32
|
+
return Deploy
|
|
33
|
+
elif name == 'DeployConfig':
|
|
34
|
+
from .deploy import DeployConfig
|
|
35
|
+
return DeployConfig
|
|
36
|
+
elif name == 'DeployType':
|
|
37
|
+
from .deploy import DeployType
|
|
38
|
+
return DeployType
|
|
39
|
+
elif name == 'CloudProvider':
|
|
40
|
+
from .deploy import CloudProvider
|
|
41
|
+
return CloudProvider
|
|
42
|
+
elif name == 'recipe':
|
|
43
|
+
from .recipe import core as recipe_module
|
|
44
|
+
return recipe_module
|
|
45
|
+
|
|
46
|
+
# Try praisonaiagents exports
|
|
47
|
+
try:
|
|
48
|
+
import praisonaiagents
|
|
49
|
+
if hasattr(praisonaiagents, name):
|
|
50
|
+
return getattr(praisonaiagents, name)
|
|
51
|
+
except ImportError:
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
praisonai/__main__.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# __main__.py
|
|
2
|
+
"""
|
|
3
|
+
PraisonAI CLI Entry Point.
|
|
4
|
+
|
|
5
|
+
Supports both new Typer-based CLI and legacy argparse CLI.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
def main():
|
|
9
|
+
"""Main entry point with legacy support."""
|
|
10
|
+
from .cli.legacy import main_with_legacy_support
|
|
11
|
+
main_with_legacy_support()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
if __name__ == "__main__":
|
|
15
|
+
main()
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Agent Client Protocol (ACP) support for PraisonAI.
|
|
3
|
+
|
|
4
|
+
This module provides ACP server functionality that allows IDEs/editors
|
|
5
|
+
(Zed, JetBrains, VSCode, Toad) to connect to PraisonAI agents.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
# CLI
|
|
9
|
+
praisonai acp [OPTIONS]
|
|
10
|
+
|
|
11
|
+
# Python API
|
|
12
|
+
from praisonai.acp import serve
|
|
13
|
+
serve(workspace=".", agent="default")
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import importlib.util
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"serve",
|
|
20
|
+
"ACPServer",
|
|
21
|
+
"ACPSession",
|
|
22
|
+
"ACPConfig",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
# Lazy imports for performance
|
|
26
|
+
def __getattr__(name: str):
|
|
27
|
+
"""Lazy import ACP components."""
|
|
28
|
+
if name == "serve":
|
|
29
|
+
from .server import serve
|
|
30
|
+
return serve
|
|
31
|
+
if name == "ACPServer":
|
|
32
|
+
from .server import ACPServer
|
|
33
|
+
return ACPServer
|
|
34
|
+
if name == "ACPSession":
|
|
35
|
+
from .session import ACPSession
|
|
36
|
+
return ACPSession
|
|
37
|
+
if name == "ACPConfig":
|
|
38
|
+
from .config import ACPConfig
|
|
39
|
+
return ACPConfig
|
|
40
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _check_acp_available() -> bool:
|
|
44
|
+
"""Check if agent-client-protocol package is installed."""
|
|
45
|
+
return importlib.util.find_spec("acp") is not None
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _get_install_instructions() -> str:
|
|
49
|
+
"""Get installation instructions for ACP support."""
|
|
50
|
+
return (
|
|
51
|
+
"ACP support requires the agent-client-protocol package.\n"
|
|
52
|
+
"Install with: pip install praisonai[acp]\n"
|
|
53
|
+
"Or: pip install agent-client-protocol"
|
|
54
|
+
)
|
praisonai/acp/config.py
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ACP configuration management.
|
|
3
|
+
|
|
4
|
+
Handles configuration precedence:
|
|
5
|
+
1. CLI flags (highest)
|
|
6
|
+
2. Environment variables
|
|
7
|
+
3. Config file (~/.praison/config.yaml)
|
|
8
|
+
4. Defaults (lowest)
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
from dataclasses import dataclass, field
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any, Dict, List, Optional
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class ACPConfig:
|
|
19
|
+
"""Configuration for ACP server."""
|
|
20
|
+
|
|
21
|
+
# Workspace settings
|
|
22
|
+
workspace: Path = field(default_factory=Path.cwd)
|
|
23
|
+
|
|
24
|
+
# Agent settings
|
|
25
|
+
agent: str = "default"
|
|
26
|
+
agents_config: Optional[Path] = None
|
|
27
|
+
router_enabled: bool = False
|
|
28
|
+
model: Optional[str] = None
|
|
29
|
+
|
|
30
|
+
# Session settings
|
|
31
|
+
resume_session: Optional[str] = None
|
|
32
|
+
resume_last: bool = False
|
|
33
|
+
|
|
34
|
+
# Permission settings
|
|
35
|
+
read_only: bool = True
|
|
36
|
+
allow_write: bool = False
|
|
37
|
+
allow_shell: bool = False
|
|
38
|
+
allow_network: bool = False
|
|
39
|
+
approval_mode: str = "manual" # manual, auto, scoped
|
|
40
|
+
|
|
41
|
+
# Workspace boundaries
|
|
42
|
+
allowed_paths: List[Path] = field(default_factory=list)
|
|
43
|
+
|
|
44
|
+
# Debug settings
|
|
45
|
+
debug: bool = False
|
|
46
|
+
|
|
47
|
+
# Profile
|
|
48
|
+
profile: Optional[str] = None
|
|
49
|
+
|
|
50
|
+
def __post_init__(self):
|
|
51
|
+
"""Validate and normalize configuration."""
|
|
52
|
+
if isinstance(self.workspace, str):
|
|
53
|
+
self.workspace = Path(self.workspace).resolve()
|
|
54
|
+
|
|
55
|
+
if self.agents_config and isinstance(self.agents_config, str):
|
|
56
|
+
self.agents_config = Path(self.agents_config)
|
|
57
|
+
|
|
58
|
+
# Set up default allowed paths
|
|
59
|
+
if not self.allowed_paths:
|
|
60
|
+
self.allowed_paths = [
|
|
61
|
+
self.workspace,
|
|
62
|
+
Path.home() / ".praison",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
# Normalize allowed paths
|
|
66
|
+
self.allowed_paths = [
|
|
67
|
+
Path(p).resolve() if isinstance(p, str) else p.resolve()
|
|
68
|
+
for p in self.allowed_paths
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def from_env(cls) -> "ACPConfig":
|
|
73
|
+
"""Create config from environment variables."""
|
|
74
|
+
return cls(
|
|
75
|
+
workspace=Path(os.environ.get("PRAISONAI_WORKSPACE", ".")).resolve(),
|
|
76
|
+
agent=os.environ.get("PRAISONAI_AGENT", "default"),
|
|
77
|
+
model=os.environ.get("PRAISONAI_MODEL") or os.environ.get("OPENAI_MODEL"),
|
|
78
|
+
debug=os.environ.get("PRAISONAI_DEBUG", "").lower() in ("1", "true", "yes"),
|
|
79
|
+
read_only=os.environ.get("PRAISONAI_READ_ONLY", "true").lower() in ("1", "true", "yes"),
|
|
80
|
+
approval_mode=os.environ.get("PRAISONAI_APPROVAL_MODE", "manual"),
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def from_file(cls, path: Optional[Path] = None) -> "ACPConfig":
|
|
85
|
+
"""Load config from YAML file."""
|
|
86
|
+
if path is None:
|
|
87
|
+
path = Path.home() / ".praison" / "config.yaml"
|
|
88
|
+
|
|
89
|
+
if not path.exists():
|
|
90
|
+
return cls()
|
|
91
|
+
|
|
92
|
+
try:
|
|
93
|
+
import yaml
|
|
94
|
+
with open(path) as f:
|
|
95
|
+
data = yaml.safe_load(f) or {}
|
|
96
|
+
|
|
97
|
+
acp_config = data.get("acp", {})
|
|
98
|
+
return cls(
|
|
99
|
+
workspace=Path(acp_config.get("workspace", ".")).resolve(),
|
|
100
|
+
agent=acp_config.get("agent", "default"),
|
|
101
|
+
model=acp_config.get("model"),
|
|
102
|
+
debug=acp_config.get("debug", False),
|
|
103
|
+
read_only=acp_config.get("read_only", True),
|
|
104
|
+
approval_mode=acp_config.get("approval_mode", "manual"),
|
|
105
|
+
)
|
|
106
|
+
except Exception:
|
|
107
|
+
return cls()
|
|
108
|
+
|
|
109
|
+
@classmethod
|
|
110
|
+
def merge(cls, *configs: "ACPConfig") -> "ACPConfig":
|
|
111
|
+
"""Merge multiple configs, later configs override earlier ones."""
|
|
112
|
+
result = cls()
|
|
113
|
+
for config in configs:
|
|
114
|
+
for field_name in [
|
|
115
|
+
"workspace", "agent", "agents_config", "router_enabled",
|
|
116
|
+
"model", "resume_session", "resume_last", "read_only",
|
|
117
|
+
"allow_write", "allow_shell", "allow_network", "approval_mode",
|
|
118
|
+
"debug", "profile"
|
|
119
|
+
]:
|
|
120
|
+
value = getattr(config, field_name)
|
|
121
|
+
# Only override if value is not default/None
|
|
122
|
+
if value is not None and value != getattr(cls(), field_name, None):
|
|
123
|
+
setattr(result, field_name, value)
|
|
124
|
+
return result
|
|
125
|
+
|
|
126
|
+
def is_path_allowed(self, path: Path) -> bool:
|
|
127
|
+
"""Check if a path is within allowed boundaries."""
|
|
128
|
+
path = Path(path).resolve()
|
|
129
|
+
return any(
|
|
130
|
+
path == allowed or allowed in path.parents
|
|
131
|
+
for allowed in self.allowed_paths
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
def can_write(self) -> bool:
|
|
135
|
+
"""Check if write operations are allowed."""
|
|
136
|
+
return not self.read_only or self.allow_write
|
|
137
|
+
|
|
138
|
+
def can_execute_shell(self) -> bool:
|
|
139
|
+
"""Check if shell commands are allowed."""
|
|
140
|
+
return self.allow_shell
|
|
141
|
+
|
|
142
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
143
|
+
"""Convert config to dictionary."""
|
|
144
|
+
return {
|
|
145
|
+
"workspace": str(self.workspace),
|
|
146
|
+
"agent": self.agent,
|
|
147
|
+
"agents_config": str(self.agents_config) if self.agents_config else None,
|
|
148
|
+
"router_enabled": self.router_enabled,
|
|
149
|
+
"model": self.model,
|
|
150
|
+
"resume_session": self.resume_session,
|
|
151
|
+
"resume_last": self.resume_last,
|
|
152
|
+
"read_only": self.read_only,
|
|
153
|
+
"allow_write": self.allow_write,
|
|
154
|
+
"allow_shell": self.allow_shell,
|
|
155
|
+
"allow_network": self.allow_network,
|
|
156
|
+
"approval_mode": self.approval_mode,
|
|
157
|
+
"debug": self.debug,
|
|
158
|
+
"profile": self.profile,
|
|
159
|
+
}
|