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
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PraisonAI CLI Package
|
|
3
|
+
|
|
4
|
+
This package provides the command-line interface for PraisonAI.
|
|
5
|
+
|
|
6
|
+
Structure:
|
|
7
|
+
- main.py: Main CLI entry point (PraisonAI class)
|
|
8
|
+
- features/: Feature handlers for CLI flags and commands
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
__all__ = ["PraisonAI"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def __getattr__(name):
|
|
15
|
+
"""Lazy load PraisonAI to avoid slow imports."""
|
|
16
|
+
if name == "PraisonAI":
|
|
17
|
+
from .main import PraisonAI
|
|
18
|
+
return PraisonAI
|
|
19
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def main():
|
|
23
|
+
"""CLI entry point function."""
|
|
24
|
+
from .main import PraisonAI
|
|
25
|
+
praison_ai = PraisonAI()
|
|
26
|
+
praison_ai.main()
|
praisonai/cli/app.py
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PraisonAI CLI Typer Application.
|
|
3
|
+
|
|
4
|
+
Main Typer app that registers all command groups and handles global options.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
from enum import Enum
|
|
10
|
+
from typing import Optional
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
|
|
14
|
+
from .output.console import OutputController, OutputMode, set_output_controller
|
|
15
|
+
from .state.identifiers import create_context
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OutputFormat(str, Enum):
|
|
19
|
+
"""Output format options."""
|
|
20
|
+
text = "text"
|
|
21
|
+
json = "json"
|
|
22
|
+
stream_json = "stream-json"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Create main Typer app
|
|
26
|
+
app = typer.Typer(
|
|
27
|
+
name="praisonai",
|
|
28
|
+
help="PraisonAI - AI Agents Framework CLI",
|
|
29
|
+
add_completion=False, # We handle completion manually
|
|
30
|
+
no_args_is_help=False, # Allow running without args for legacy compatibility
|
|
31
|
+
rich_markup_mode="rich",
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# Global state for options
|
|
36
|
+
class GlobalState:
|
|
37
|
+
"""Global state for CLI options."""
|
|
38
|
+
output_format: OutputFormat = OutputFormat.text
|
|
39
|
+
no_color: bool = False
|
|
40
|
+
quiet: bool = False
|
|
41
|
+
verbose: bool = False
|
|
42
|
+
screen_reader: bool = False
|
|
43
|
+
output_controller: Optional[OutputController] = None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
state = GlobalState()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def version_callback(value: bool):
|
|
50
|
+
"""Show version and exit."""
|
|
51
|
+
if value:
|
|
52
|
+
from praisonai.version import __version__
|
|
53
|
+
typer.echo(f"PraisonAI version {__version__}")
|
|
54
|
+
raise typer.Exit()
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@app.callback(invoke_without_command=True)
|
|
58
|
+
def main_callback(
|
|
59
|
+
ctx: typer.Context,
|
|
60
|
+
version: bool = typer.Option(
|
|
61
|
+
False,
|
|
62
|
+
"--version",
|
|
63
|
+
"-V",
|
|
64
|
+
callback=version_callback,
|
|
65
|
+
is_eager=True,
|
|
66
|
+
help="Show version and exit",
|
|
67
|
+
),
|
|
68
|
+
output_format: OutputFormat = typer.Option(
|
|
69
|
+
OutputFormat.text,
|
|
70
|
+
"--output-format",
|
|
71
|
+
"-o",
|
|
72
|
+
help="Output format",
|
|
73
|
+
envvar="PRAISONAI_OUTPUT_FORMAT",
|
|
74
|
+
),
|
|
75
|
+
json_output: bool = typer.Option(
|
|
76
|
+
False,
|
|
77
|
+
"--json",
|
|
78
|
+
help="Output in JSON format (alias for --output-format json)",
|
|
79
|
+
),
|
|
80
|
+
no_color: bool = typer.Option(
|
|
81
|
+
False,
|
|
82
|
+
"--no-color",
|
|
83
|
+
help="Disable colored output",
|
|
84
|
+
envvar="NO_COLOR",
|
|
85
|
+
),
|
|
86
|
+
quiet: bool = typer.Option(
|
|
87
|
+
False,
|
|
88
|
+
"--quiet",
|
|
89
|
+
"-q",
|
|
90
|
+
help="Minimal output",
|
|
91
|
+
),
|
|
92
|
+
verbose: bool = typer.Option(
|
|
93
|
+
False,
|
|
94
|
+
"--verbose",
|
|
95
|
+
"-v",
|
|
96
|
+
help="Verbose output with debug details",
|
|
97
|
+
),
|
|
98
|
+
screen_reader: bool = typer.Option(
|
|
99
|
+
False,
|
|
100
|
+
"--screen-reader",
|
|
101
|
+
help="Screen reader friendly output (no spinners/panels)",
|
|
102
|
+
),
|
|
103
|
+
):
|
|
104
|
+
"""
|
|
105
|
+
PraisonAI - AI Agents Framework CLI.
|
|
106
|
+
|
|
107
|
+
Run agents, manage configuration, and more.
|
|
108
|
+
"""
|
|
109
|
+
# Store global options
|
|
110
|
+
state.output_format = output_format
|
|
111
|
+
state.no_color = no_color
|
|
112
|
+
state.quiet = quiet
|
|
113
|
+
state.verbose = verbose
|
|
114
|
+
state.screen_reader = screen_reader
|
|
115
|
+
|
|
116
|
+
# Handle --json alias
|
|
117
|
+
if json_output:
|
|
118
|
+
state.output_format = OutputFormat.json
|
|
119
|
+
|
|
120
|
+
# Determine output mode
|
|
121
|
+
if state.quiet:
|
|
122
|
+
mode = OutputMode.QUIET
|
|
123
|
+
elif state.verbose:
|
|
124
|
+
mode = OutputMode.VERBOSE
|
|
125
|
+
elif state.screen_reader:
|
|
126
|
+
mode = OutputMode.SCREEN_READER
|
|
127
|
+
elif state.output_format == OutputFormat.json:
|
|
128
|
+
mode = OutputMode.JSON
|
|
129
|
+
elif state.output_format == OutputFormat.stream_json:
|
|
130
|
+
mode = OutputMode.STREAM_JSON
|
|
131
|
+
else:
|
|
132
|
+
mode = OutputMode.TEXT
|
|
133
|
+
|
|
134
|
+
# Create run context
|
|
135
|
+
context = create_context()
|
|
136
|
+
|
|
137
|
+
# Create and set output controller
|
|
138
|
+
state.output_controller = OutputController(
|
|
139
|
+
mode=mode,
|
|
140
|
+
no_color=state.no_color,
|
|
141
|
+
run_id=context.run_id,
|
|
142
|
+
trace_id=context.trace_id,
|
|
143
|
+
)
|
|
144
|
+
set_output_controller(state.output_controller)
|
|
145
|
+
|
|
146
|
+
# If no command provided, show help or handle legacy behavior
|
|
147
|
+
if ctx.invoked_subcommand is None:
|
|
148
|
+
# Check if there are remaining args (legacy behavior)
|
|
149
|
+
# This is handled by the legacy adapter in main.py
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def get_output_controller() -> OutputController:
|
|
154
|
+
"""Get the current output controller."""
|
|
155
|
+
if state.output_controller is None:
|
|
156
|
+
state.output_controller = OutputController()
|
|
157
|
+
return state.output_controller
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# Import and register command groups
|
|
161
|
+
def register_commands():
|
|
162
|
+
"""Register all command groups."""
|
|
163
|
+
# Import command modules
|
|
164
|
+
from .commands.config import app as config_app
|
|
165
|
+
from .commands.traces import app as traces_app
|
|
166
|
+
from .commands.environment import app as env_app
|
|
167
|
+
from .commands.session import app as session_app
|
|
168
|
+
from .commands.completion import app as completion_app
|
|
169
|
+
from .commands.version import app as version_app
|
|
170
|
+
from .commands.debug import app as debug_app
|
|
171
|
+
from .commands.lsp import app as lsp_app
|
|
172
|
+
from .commands.diag import app as diag_app
|
|
173
|
+
from .commands.doctor import app as doctor_app
|
|
174
|
+
from .commands.acp import app as acp_app
|
|
175
|
+
from .commands.mcp import app as mcp_app
|
|
176
|
+
from .commands.serve import app as serve_app
|
|
177
|
+
from .commands.schedule import app as schedule_app
|
|
178
|
+
from .commands.run import app as run_app
|
|
179
|
+
from .commands.profile import app as profile_app
|
|
180
|
+
|
|
181
|
+
# Import TUI and queue commands
|
|
182
|
+
from .features.tui.debug import create_debug_app as create_tui_debug_app
|
|
183
|
+
from .features.tui.cli import create_queue_app
|
|
184
|
+
|
|
185
|
+
# Register sub-apps
|
|
186
|
+
app.add_typer(config_app, name="config", help="Configuration management")
|
|
187
|
+
app.add_typer(traces_app, name="traces", help="Trace collection management")
|
|
188
|
+
app.add_typer(env_app, name="env", help="Environment and diagnostics")
|
|
189
|
+
app.add_typer(session_app, name="session", help="Session management")
|
|
190
|
+
app.add_typer(completion_app, name="completion", help="Shell completion scripts")
|
|
191
|
+
app.add_typer(version_app, name="version", help="Version information")
|
|
192
|
+
app.add_typer(debug_app, name="debug", help="Debug and test interactive flows")
|
|
193
|
+
app.add_typer(lsp_app, name="lsp", help="LSP service lifecycle")
|
|
194
|
+
app.add_typer(diag_app, name="diag", help="Diagnostics export")
|
|
195
|
+
app.add_typer(doctor_app, name="doctor", help="Health checks and diagnostics")
|
|
196
|
+
app.add_typer(acp_app, name="acp", help="Agent Client Protocol server")
|
|
197
|
+
app.add_typer(mcp_app, name="mcp", help="MCP server management")
|
|
198
|
+
app.add_typer(serve_app, name="serve", help="API server management")
|
|
199
|
+
app.add_typer(schedule_app, name="schedule", help="Scheduler management")
|
|
200
|
+
app.add_typer(run_app, name="run", help="Run agents")
|
|
201
|
+
app.add_typer(profile_app, name="profile", help="Performance profiling and diagnostics")
|
|
202
|
+
|
|
203
|
+
# Register TUI and queue commands
|
|
204
|
+
tui_app = create_tui_debug_app()
|
|
205
|
+
queue_app = create_queue_app()
|
|
206
|
+
if tui_app:
|
|
207
|
+
app.add_typer(tui_app, name="tui", help="Interactive TUI and simulation")
|
|
208
|
+
if queue_app:
|
|
209
|
+
app.add_typer(queue_app, name="queue", help="Queue management")
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
# Register commands on import
|
|
213
|
+
register_commands()
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PraisonAI CLI Commands Module.
|
|
3
|
+
|
|
4
|
+
This module contains all Typer command groups and subcommands.
|
|
5
|
+
Each file represents a command group (e.g., config, traces, session).
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
# Lazy imports to avoid loading all commands at startup
|
|
9
|
+
__all__ = [
|
|
10
|
+
'run_app',
|
|
11
|
+
'config_app',
|
|
12
|
+
'traces_app',
|
|
13
|
+
'env_app',
|
|
14
|
+
'session_app',
|
|
15
|
+
'schedule_app',
|
|
16
|
+
'serve_app',
|
|
17
|
+
'completion_app',
|
|
18
|
+
'version_app',
|
|
19
|
+
'debug_app',
|
|
20
|
+
'lsp_app',
|
|
21
|
+
'diag_app',
|
|
22
|
+
'doctor_app',
|
|
23
|
+
'acp_app',
|
|
24
|
+
'mcp_app',
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def __getattr__(name: str):
|
|
29
|
+
"""Lazy load command apps."""
|
|
30
|
+
if name == 'run_app':
|
|
31
|
+
from .run import app as run_app
|
|
32
|
+
return run_app
|
|
33
|
+
elif name == 'config_app':
|
|
34
|
+
from .config import app as config_app
|
|
35
|
+
return config_app
|
|
36
|
+
elif name == 'traces_app':
|
|
37
|
+
from .traces import app as traces_app
|
|
38
|
+
return traces_app
|
|
39
|
+
elif name == 'env_app':
|
|
40
|
+
from .environment import app as env_app
|
|
41
|
+
return env_app
|
|
42
|
+
elif name == 'session_app':
|
|
43
|
+
from .session import app as session_app
|
|
44
|
+
return session_app
|
|
45
|
+
elif name == 'schedule_app':
|
|
46
|
+
from .schedule import app as schedule_app
|
|
47
|
+
return schedule_app
|
|
48
|
+
elif name == 'serve_app':
|
|
49
|
+
from .serve import app as serve_app
|
|
50
|
+
return serve_app
|
|
51
|
+
elif name == 'completion_app':
|
|
52
|
+
from .completion import app as completion_app
|
|
53
|
+
return completion_app
|
|
54
|
+
elif name == 'version_app':
|
|
55
|
+
from .version import app as version_app
|
|
56
|
+
return version_app
|
|
57
|
+
elif name == 'debug_app':
|
|
58
|
+
from .debug import app as debug_app
|
|
59
|
+
return debug_app
|
|
60
|
+
elif name == 'lsp_app':
|
|
61
|
+
from .lsp import app as lsp_app
|
|
62
|
+
return lsp_app
|
|
63
|
+
elif name == 'diag_app':
|
|
64
|
+
from .diag import app as diag_app
|
|
65
|
+
return diag_app
|
|
66
|
+
elif name == 'doctor_app':
|
|
67
|
+
from .doctor import app as doctor_app
|
|
68
|
+
return doctor_app
|
|
69
|
+
elif name == 'acp_app':
|
|
70
|
+
from .acp import app as acp_app
|
|
71
|
+
return acp_app
|
|
72
|
+
elif name == 'mcp_app':
|
|
73
|
+
from .mcp import app as mcp_app
|
|
74
|
+
return mcp_app
|
|
75
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ACP command group for PraisonAI CLI.
|
|
3
|
+
|
|
4
|
+
Wraps existing ACP functionality from features/acp.py.
|
|
5
|
+
Provides Agent Client Protocol server for IDE integration.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
import typer
|
|
11
|
+
|
|
12
|
+
from ..output.console import get_output_controller
|
|
13
|
+
|
|
14
|
+
app = typer.Typer(help="Agent Client Protocol server")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@app.callback(invoke_without_command=True)
|
|
18
|
+
def acp_main(
|
|
19
|
+
ctx: typer.Context,
|
|
20
|
+
workspace: str = typer.Option(".", "--workspace", "-w", help="Workspace root directory"),
|
|
21
|
+
agent: str = typer.Option("default", "--agent", "-a", help="Agent name or configuration file"),
|
|
22
|
+
agents_file: Optional[str] = typer.Option(None, "--agents", help="Multi-agent configuration YAML file"),
|
|
23
|
+
router: bool = typer.Option(False, "--router", help="Enable router agent for task delegation"),
|
|
24
|
+
model: Optional[str] = typer.Option(None, "--model", "-m", help="LLM model to use"),
|
|
25
|
+
resume: Optional[str] = typer.Option(None, "--resume", "-r", help="Resume session by ID"),
|
|
26
|
+
last: bool = typer.Option(False, "--last", help="Resume the last session"),
|
|
27
|
+
approve: str = typer.Option("manual", "--approve", help="Approval mode: manual, auto, scoped"),
|
|
28
|
+
read_only: bool = typer.Option(True, "--read-only/--allow-write", help="Read-only mode"),
|
|
29
|
+
allow_shell: bool = typer.Option(False, "--allow-shell", help="Allow shell command execution"),
|
|
30
|
+
allow_network: bool = typer.Option(False, "--allow-network", help="Allow network requests"),
|
|
31
|
+
debug: bool = typer.Option(False, "--debug", help="Enable debug logging"),
|
|
32
|
+
profile: Optional[str] = typer.Option(None, "--profile", help="Use named profile from config"),
|
|
33
|
+
):
|
|
34
|
+
"""Start ACP server for IDE integration."""
|
|
35
|
+
# Build args for existing handler
|
|
36
|
+
args = [
|
|
37
|
+
"--workspace", workspace,
|
|
38
|
+
"--agent", agent,
|
|
39
|
+
"--approve", approve,
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
if agents_file:
|
|
43
|
+
args.extend(["--agents", agents_file])
|
|
44
|
+
if router:
|
|
45
|
+
args.append("--router")
|
|
46
|
+
if model:
|
|
47
|
+
args.extend(["--model", model])
|
|
48
|
+
if resume:
|
|
49
|
+
args.extend(["--resume", resume])
|
|
50
|
+
if last:
|
|
51
|
+
args.append("--last")
|
|
52
|
+
if not read_only:
|
|
53
|
+
args.append("--allow-write")
|
|
54
|
+
if allow_shell:
|
|
55
|
+
args.append("--allow-shell")
|
|
56
|
+
if allow_network:
|
|
57
|
+
args.append("--allow-network")
|
|
58
|
+
if debug:
|
|
59
|
+
args.append("--debug")
|
|
60
|
+
if profile:
|
|
61
|
+
args.extend(["--profile", profile])
|
|
62
|
+
|
|
63
|
+
try:
|
|
64
|
+
from ..features.acp import run_acp_command
|
|
65
|
+
exit_code = run_acp_command(args)
|
|
66
|
+
raise typer.Exit(exit_code)
|
|
67
|
+
except ImportError as e:
|
|
68
|
+
output = get_output_controller()
|
|
69
|
+
output.print_error(f"ACP module not available: {e}")
|
|
70
|
+
raise typer.Exit(4)
|