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/cli/legacy.py
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Legacy compatibility adapter for PraisonAI CLI.
|
|
3
|
+
|
|
4
|
+
Provides backward compatibility with the original argparse-based CLI.
|
|
5
|
+
Maps legacy usage patterns to Typer commands or existing feature handlers.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import sys
|
|
9
|
+
from typing import List, Optional, Tuple
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Legacy commands that should be routed to existing handlers
|
|
13
|
+
LEGACY_COMMANDS = {
|
|
14
|
+
'chat', 'code', 'call', 'realtime', 'train', 'ui', 'context', 'research',
|
|
15
|
+
'memory', 'rules', 'workflow', 'hooks', 'knowledge', 'session', 'tools',
|
|
16
|
+
'todo', 'docs', 'mcp', 'commit', 'serve', 'schedule', 'skills', 'profile',
|
|
17
|
+
'eval', 'agents', 'run', 'thinking', 'compaction', 'output', 'deploy',
|
|
18
|
+
'templates', 'recipe', 'endpoints', 'audio', 'embed', 'images', 'moderate',
|
|
19
|
+
'files', 'batches', 'vector-stores', 'rerank', 'ocr', 'assistants',
|
|
20
|
+
'fine-tuning', 'completions', 'messages', 'guardrails', 'rag', 'videos',
|
|
21
|
+
'a2a', 'containers', 'passthrough', 'responses', 'search', 'realtime-api',
|
|
22
|
+
'doctor', 'registry', 'package', 'install', 'uninstall', 'acp', 'debug',
|
|
23
|
+
'lsp', 'diag', 'persistence',
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Typer commands that have been implemented
|
|
27
|
+
TYPER_COMMANDS = {
|
|
28
|
+
'config', 'traces', 'env', 'session', 'completion', 'version',
|
|
29
|
+
'debug', 'lsp', 'diag', 'doctor', 'acp', 'mcp', 'serve', 'schedule', 'run',
|
|
30
|
+
'tui', 'queue', 'profile', # TUI, queue management, and profiling commands
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def is_legacy_invocation(argv: List[str]) -> bool:
|
|
35
|
+
"""
|
|
36
|
+
Check if the command line represents a legacy invocation.
|
|
37
|
+
|
|
38
|
+
Legacy patterns:
|
|
39
|
+
- praisonai "prompt" (direct prompt)
|
|
40
|
+
- praisonai agents.yaml (file path)
|
|
41
|
+
- praisonai --legacy-flag value (legacy-only flags)
|
|
42
|
+
- praisonai <legacy_command> (commands not yet in Typer)
|
|
43
|
+
"""
|
|
44
|
+
if not argv:
|
|
45
|
+
return False
|
|
46
|
+
|
|
47
|
+
# Global Typer options that should NOT trigger legacy mode
|
|
48
|
+
typer_global_options = {
|
|
49
|
+
'--json', '--output-format', '-o', '--no-color', '--quiet', '-q',
|
|
50
|
+
'--verbose', '-v', '--screen-reader', '--help', '-h', '--version', '-V',
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# Filter out global options to find the actual command
|
|
54
|
+
filtered_argv = []
|
|
55
|
+
skip_next = False
|
|
56
|
+
for i, arg in enumerate(argv):
|
|
57
|
+
if skip_next:
|
|
58
|
+
skip_next = False
|
|
59
|
+
continue
|
|
60
|
+
if arg in typer_global_options:
|
|
61
|
+
# Skip options that take a value
|
|
62
|
+
if arg in ('--output-format', '-o'):
|
|
63
|
+
skip_next = True
|
|
64
|
+
continue
|
|
65
|
+
filtered_argv.append(arg)
|
|
66
|
+
|
|
67
|
+
first_arg = filtered_argv[0] if filtered_argv else ""
|
|
68
|
+
|
|
69
|
+
# Check for legacy-only flags (not in Typer)
|
|
70
|
+
legacy_flags = [
|
|
71
|
+
'--framework', '--ui', '--auto', '--init', '--deploy', '--schedule',
|
|
72
|
+
'--provider', '--model', '--llm', '--hf', '--ollama', '--dataset',
|
|
73
|
+
'--realtime', '--call', '--public', '--merge', '--claudecode',
|
|
74
|
+
'--file', '--url', '--goal', '--auto-analyze', '--research',
|
|
75
|
+
'--query-rewrite', '--expand-prompt', '--tools', '--no-tools',
|
|
76
|
+
'--save', '--web-search', '--web-fetch', '--prompt-caching',
|
|
77
|
+
'--planning', '--memory', '--user-id', '--auto-save', '--history',
|
|
78
|
+
'--workflow', '--guardrail', '--metrics', '--image', '--telemetry',
|
|
79
|
+
'--mcp', '--fast-context', '--handoff', '--auto-memory', '--todo',
|
|
80
|
+
'--router', '--flow-display', '--n8n', '--serve', '--port', '--host',
|
|
81
|
+
'--interactive', '--chat-mode', '-p', '--autonomy', '--trust',
|
|
82
|
+
'--sandbox', '--external-agent', '--compare', '--interval', '--timeout',
|
|
83
|
+
'--max-cost', '--rpm', '--tpm', '--temperature',
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
for arg in argv:
|
|
87
|
+
if arg in legacy_flags:
|
|
88
|
+
return True
|
|
89
|
+
|
|
90
|
+
# Check if first arg is a legacy command not in Typer
|
|
91
|
+
if first_arg in LEGACY_COMMANDS and first_arg not in TYPER_COMMANDS:
|
|
92
|
+
return True
|
|
93
|
+
|
|
94
|
+
# Check if first arg looks like a prompt (not a command, not a flag)
|
|
95
|
+
if first_arg and not first_arg.startswith('-'):
|
|
96
|
+
# If it's not a known Typer command, treat as legacy
|
|
97
|
+
if first_arg not in TYPER_COMMANDS:
|
|
98
|
+
# Could be a file path or prompt
|
|
99
|
+
return True
|
|
100
|
+
|
|
101
|
+
return False
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def route_to_legacy(argv: List[str]) -> int:
|
|
105
|
+
"""
|
|
106
|
+
Route to the legacy argparse CLI.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
Exit code from legacy CLI
|
|
110
|
+
"""
|
|
111
|
+
from praisonai.cli.main import PraisonAI
|
|
112
|
+
|
|
113
|
+
# Restore sys.argv for argparse
|
|
114
|
+
original_argv = sys.argv
|
|
115
|
+
sys.argv = ['praisonai'] + argv
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
praison = PraisonAI()
|
|
119
|
+
result = praison.main()
|
|
120
|
+
return 0 if result is None else (1 if result is False else 0)
|
|
121
|
+
except SystemExit as e:
|
|
122
|
+
return e.code if isinstance(e.code, int) else 0
|
|
123
|
+
finally:
|
|
124
|
+
sys.argv = original_argv
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def translate_to_typer(argv: List[str]) -> Tuple[List[str], bool]:
|
|
128
|
+
"""
|
|
129
|
+
Attempt to translate legacy argv to Typer format.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
Tuple of (translated_argv, was_translated)
|
|
133
|
+
"""
|
|
134
|
+
if not argv:
|
|
135
|
+
return argv, False
|
|
136
|
+
|
|
137
|
+
first_arg = argv[0]
|
|
138
|
+
|
|
139
|
+
# Direct mapping for commands that exist in both
|
|
140
|
+
if first_arg in TYPER_COMMANDS:
|
|
141
|
+
return argv, False # Already Typer-compatible
|
|
142
|
+
|
|
143
|
+
# Translate common patterns
|
|
144
|
+
translations = {
|
|
145
|
+
# Legacy flag patterns
|
|
146
|
+
'--version': ['version', 'show'],
|
|
147
|
+
'-V': ['version', 'show'],
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if first_arg in translations:
|
|
151
|
+
return translations[first_arg] + argv[1:], True
|
|
152
|
+
|
|
153
|
+
return argv, False
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def main_with_legacy_support():
|
|
157
|
+
"""
|
|
158
|
+
Main entry point with legacy support.
|
|
159
|
+
|
|
160
|
+
Routes to Typer CLI for new commands, legacy argparse CLI for old commands.
|
|
161
|
+
"""
|
|
162
|
+
argv = sys.argv[1:]
|
|
163
|
+
|
|
164
|
+
# Handle empty args - show help via Typer
|
|
165
|
+
if not argv:
|
|
166
|
+
try:
|
|
167
|
+
from praisonai.cli.app import app
|
|
168
|
+
app()
|
|
169
|
+
return
|
|
170
|
+
except SystemExit:
|
|
171
|
+
return
|
|
172
|
+
|
|
173
|
+
# Check for version flags first (handle specially)
|
|
174
|
+
if '--version' in argv or '-V' in argv:
|
|
175
|
+
from praisonai.version import __version__
|
|
176
|
+
print(f"PraisonAI version {__version__}")
|
|
177
|
+
return
|
|
178
|
+
|
|
179
|
+
# IMPORTANT: Check for legacy invocation FIRST before trying Typer
|
|
180
|
+
# This ensures legacy commands like 'chat' and flags like '--framework' work
|
|
181
|
+
if is_legacy_invocation(argv):
|
|
182
|
+
exit_code = route_to_legacy(argv)
|
|
183
|
+
sys.exit(exit_code)
|
|
184
|
+
|
|
185
|
+
# Global Typer options that should NOT trigger legacy mode
|
|
186
|
+
typer_global_options = {
|
|
187
|
+
'--json', '--output-format', '-o', '--no-color', '--quiet', '-q',
|
|
188
|
+
'--verbose', '-v', '--screen-reader', '--help', '-h',
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
# Find the actual command (skip global options)
|
|
192
|
+
actual_command = None
|
|
193
|
+
skip_next = False
|
|
194
|
+
for arg in argv:
|
|
195
|
+
if skip_next:
|
|
196
|
+
skip_next = False
|
|
197
|
+
continue
|
|
198
|
+
if arg in typer_global_options:
|
|
199
|
+
if arg in ('--output-format', '-o'):
|
|
200
|
+
skip_next = True
|
|
201
|
+
continue
|
|
202
|
+
if not arg.startswith('-'):
|
|
203
|
+
actual_command = arg
|
|
204
|
+
break
|
|
205
|
+
|
|
206
|
+
# Route to Typer for known Typer commands
|
|
207
|
+
if actual_command in TYPER_COMMANDS:
|
|
208
|
+
try:
|
|
209
|
+
from praisonai.cli.app import app
|
|
210
|
+
sys.argv = ['praisonai'] + argv
|
|
211
|
+
app()
|
|
212
|
+
return
|
|
213
|
+
except SystemExit as e:
|
|
214
|
+
sys.exit(e.code if isinstance(e.code, int) else 0)
|
|
215
|
+
|
|
216
|
+
# Check for help flags - route to Typer for help
|
|
217
|
+
if '--help' in argv or '-h' in argv:
|
|
218
|
+
try:
|
|
219
|
+
from praisonai.cli.app import app
|
|
220
|
+
sys.argv = ['praisonai'] + argv
|
|
221
|
+
app()
|
|
222
|
+
return
|
|
223
|
+
except SystemExit:
|
|
224
|
+
return
|
|
225
|
+
|
|
226
|
+
# Default: try Typer, fall back to legacy on error
|
|
227
|
+
try:
|
|
228
|
+
from praisonai.cli.app import app
|
|
229
|
+
sys.argv = ['praisonai'] + argv
|
|
230
|
+
app()
|
|
231
|
+
except SystemExit as e:
|
|
232
|
+
sys.exit(e.code if isinstance(e.code, int) else 0)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
if __name__ == "__main__":
|
|
236
|
+
main_with_legacy_support()
|