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.
Files changed (393) hide show
  1. praisonai/__init__.py +54 -0
  2. praisonai/__main__.py +15 -0
  3. praisonai/acp/__init__.py +54 -0
  4. praisonai/acp/config.py +159 -0
  5. praisonai/acp/server.py +587 -0
  6. praisonai/acp/session.py +219 -0
  7. praisonai/adapters/__init__.py +50 -0
  8. praisonai/adapters/readers.py +395 -0
  9. praisonai/adapters/rerankers.py +315 -0
  10. praisonai/adapters/retrievers.py +394 -0
  11. praisonai/adapters/vector_stores.py +409 -0
  12. praisonai/agent_scheduler.py +337 -0
  13. praisonai/agents_generator.py +903 -0
  14. praisonai/api/call.py +292 -0
  15. praisonai/auto.py +1197 -0
  16. praisonai/capabilities/__init__.py +275 -0
  17. praisonai/capabilities/a2a.py +140 -0
  18. praisonai/capabilities/assistants.py +283 -0
  19. praisonai/capabilities/audio.py +320 -0
  20. praisonai/capabilities/batches.py +469 -0
  21. praisonai/capabilities/completions.py +336 -0
  22. praisonai/capabilities/container_files.py +155 -0
  23. praisonai/capabilities/containers.py +93 -0
  24. praisonai/capabilities/embeddings.py +158 -0
  25. praisonai/capabilities/files.py +467 -0
  26. praisonai/capabilities/fine_tuning.py +293 -0
  27. praisonai/capabilities/guardrails.py +182 -0
  28. praisonai/capabilities/images.py +330 -0
  29. praisonai/capabilities/mcp.py +190 -0
  30. praisonai/capabilities/messages.py +270 -0
  31. praisonai/capabilities/moderations.py +154 -0
  32. praisonai/capabilities/ocr.py +217 -0
  33. praisonai/capabilities/passthrough.py +204 -0
  34. praisonai/capabilities/rag.py +207 -0
  35. praisonai/capabilities/realtime.py +160 -0
  36. praisonai/capabilities/rerank.py +165 -0
  37. praisonai/capabilities/responses.py +266 -0
  38. praisonai/capabilities/search.py +109 -0
  39. praisonai/capabilities/skills.py +133 -0
  40. praisonai/capabilities/vector_store_files.py +334 -0
  41. praisonai/capabilities/vector_stores.py +304 -0
  42. praisonai/capabilities/videos.py +141 -0
  43. praisonai/chainlit_ui.py +304 -0
  44. praisonai/chat/__init__.py +106 -0
  45. praisonai/chat/app.py +125 -0
  46. praisonai/cli/__init__.py +26 -0
  47. praisonai/cli/app.py +213 -0
  48. praisonai/cli/commands/__init__.py +75 -0
  49. praisonai/cli/commands/acp.py +70 -0
  50. praisonai/cli/commands/completion.py +333 -0
  51. praisonai/cli/commands/config.py +166 -0
  52. praisonai/cli/commands/debug.py +142 -0
  53. praisonai/cli/commands/diag.py +55 -0
  54. praisonai/cli/commands/doctor.py +166 -0
  55. praisonai/cli/commands/environment.py +179 -0
  56. praisonai/cli/commands/lsp.py +112 -0
  57. praisonai/cli/commands/mcp.py +210 -0
  58. praisonai/cli/commands/profile.py +457 -0
  59. praisonai/cli/commands/run.py +228 -0
  60. praisonai/cli/commands/schedule.py +150 -0
  61. praisonai/cli/commands/serve.py +97 -0
  62. praisonai/cli/commands/session.py +212 -0
  63. praisonai/cli/commands/traces.py +145 -0
  64. praisonai/cli/commands/version.py +101 -0
  65. praisonai/cli/configuration/__init__.py +18 -0
  66. praisonai/cli/configuration/loader.py +353 -0
  67. praisonai/cli/configuration/paths.py +114 -0
  68. praisonai/cli/configuration/schema.py +164 -0
  69. praisonai/cli/features/__init__.py +268 -0
  70. praisonai/cli/features/acp.py +236 -0
  71. praisonai/cli/features/action_orchestrator.py +546 -0
  72. praisonai/cli/features/agent_scheduler.py +773 -0
  73. praisonai/cli/features/agent_tools.py +474 -0
  74. praisonai/cli/features/agents.py +375 -0
  75. praisonai/cli/features/at_mentions.py +471 -0
  76. praisonai/cli/features/auto_memory.py +182 -0
  77. praisonai/cli/features/autonomy_mode.py +490 -0
  78. praisonai/cli/features/background.py +356 -0
  79. praisonai/cli/features/base.py +168 -0
  80. praisonai/cli/features/capabilities.py +1326 -0
  81. praisonai/cli/features/checkpoints.py +338 -0
  82. praisonai/cli/features/code_intelligence.py +652 -0
  83. praisonai/cli/features/compaction.py +294 -0
  84. praisonai/cli/features/compare.py +534 -0
  85. praisonai/cli/features/cost_tracker.py +514 -0
  86. praisonai/cli/features/debug.py +810 -0
  87. praisonai/cli/features/deploy.py +517 -0
  88. praisonai/cli/features/diag.py +289 -0
  89. praisonai/cli/features/doctor/__init__.py +63 -0
  90. praisonai/cli/features/doctor/checks/__init__.py +24 -0
  91. praisonai/cli/features/doctor/checks/acp_checks.py +240 -0
  92. praisonai/cli/features/doctor/checks/config_checks.py +366 -0
  93. praisonai/cli/features/doctor/checks/db_checks.py +366 -0
  94. praisonai/cli/features/doctor/checks/env_checks.py +543 -0
  95. praisonai/cli/features/doctor/checks/lsp_checks.py +199 -0
  96. praisonai/cli/features/doctor/checks/mcp_checks.py +349 -0
  97. praisonai/cli/features/doctor/checks/memory_checks.py +268 -0
  98. praisonai/cli/features/doctor/checks/network_checks.py +251 -0
  99. praisonai/cli/features/doctor/checks/obs_checks.py +328 -0
  100. praisonai/cli/features/doctor/checks/performance_checks.py +235 -0
  101. praisonai/cli/features/doctor/checks/permissions_checks.py +259 -0
  102. praisonai/cli/features/doctor/checks/selftest_checks.py +322 -0
  103. praisonai/cli/features/doctor/checks/serve_checks.py +426 -0
  104. praisonai/cli/features/doctor/checks/skills_checks.py +231 -0
  105. praisonai/cli/features/doctor/checks/tools_checks.py +371 -0
  106. praisonai/cli/features/doctor/engine.py +266 -0
  107. praisonai/cli/features/doctor/formatters.py +310 -0
  108. praisonai/cli/features/doctor/handler.py +397 -0
  109. praisonai/cli/features/doctor/models.py +264 -0
  110. praisonai/cli/features/doctor/registry.py +239 -0
  111. praisonai/cli/features/endpoints.py +1019 -0
  112. praisonai/cli/features/eval.py +560 -0
  113. praisonai/cli/features/external_agents.py +231 -0
  114. praisonai/cli/features/fast_context.py +410 -0
  115. praisonai/cli/features/flow_display.py +566 -0
  116. praisonai/cli/features/git_integration.py +651 -0
  117. praisonai/cli/features/guardrail.py +171 -0
  118. praisonai/cli/features/handoff.py +185 -0
  119. praisonai/cli/features/hooks.py +583 -0
  120. praisonai/cli/features/image.py +384 -0
  121. praisonai/cli/features/interactive_runtime.py +585 -0
  122. praisonai/cli/features/interactive_tools.py +380 -0
  123. praisonai/cli/features/interactive_tui.py +603 -0
  124. praisonai/cli/features/jobs.py +632 -0
  125. praisonai/cli/features/knowledge.py +531 -0
  126. praisonai/cli/features/lite.py +244 -0
  127. praisonai/cli/features/lsp_cli.py +225 -0
  128. praisonai/cli/features/mcp.py +169 -0
  129. praisonai/cli/features/message_queue.py +587 -0
  130. praisonai/cli/features/metrics.py +211 -0
  131. praisonai/cli/features/n8n.py +673 -0
  132. praisonai/cli/features/observability.py +293 -0
  133. praisonai/cli/features/ollama.py +361 -0
  134. praisonai/cli/features/output_style.py +273 -0
  135. praisonai/cli/features/package.py +631 -0
  136. praisonai/cli/features/performance.py +308 -0
  137. praisonai/cli/features/persistence.py +636 -0
  138. praisonai/cli/features/profile.py +226 -0
  139. praisonai/cli/features/profiler/__init__.py +81 -0
  140. praisonai/cli/features/profiler/core.py +558 -0
  141. praisonai/cli/features/profiler/optimizations.py +652 -0
  142. praisonai/cli/features/profiler/suite.py +386 -0
  143. praisonai/cli/features/profiling.py +350 -0
  144. praisonai/cli/features/queue/__init__.py +73 -0
  145. praisonai/cli/features/queue/manager.py +395 -0
  146. praisonai/cli/features/queue/models.py +286 -0
  147. praisonai/cli/features/queue/persistence.py +564 -0
  148. praisonai/cli/features/queue/scheduler.py +484 -0
  149. praisonai/cli/features/queue/worker.py +372 -0
  150. praisonai/cli/features/recipe.py +1723 -0
  151. praisonai/cli/features/recipes.py +449 -0
  152. praisonai/cli/features/registry.py +229 -0
  153. praisonai/cli/features/repo_map.py +860 -0
  154. praisonai/cli/features/router.py +466 -0
  155. praisonai/cli/features/sandbox_executor.py +515 -0
  156. praisonai/cli/features/serve.py +829 -0
  157. praisonai/cli/features/session.py +222 -0
  158. praisonai/cli/features/skills.py +856 -0
  159. praisonai/cli/features/slash_commands.py +650 -0
  160. praisonai/cli/features/telemetry.py +179 -0
  161. praisonai/cli/features/templates.py +1384 -0
  162. praisonai/cli/features/thinking.py +305 -0
  163. praisonai/cli/features/todo.py +334 -0
  164. praisonai/cli/features/tools.py +680 -0
  165. praisonai/cli/features/tui/__init__.py +83 -0
  166. praisonai/cli/features/tui/app.py +580 -0
  167. praisonai/cli/features/tui/cli.py +566 -0
  168. praisonai/cli/features/tui/debug.py +511 -0
  169. praisonai/cli/features/tui/events.py +99 -0
  170. praisonai/cli/features/tui/mock_provider.py +328 -0
  171. praisonai/cli/features/tui/orchestrator.py +652 -0
  172. praisonai/cli/features/tui/screens/__init__.py +50 -0
  173. praisonai/cli/features/tui/screens/main.py +245 -0
  174. praisonai/cli/features/tui/screens/queue.py +174 -0
  175. praisonai/cli/features/tui/screens/session.py +124 -0
  176. praisonai/cli/features/tui/screens/settings.py +148 -0
  177. praisonai/cli/features/tui/widgets/__init__.py +56 -0
  178. praisonai/cli/features/tui/widgets/chat.py +261 -0
  179. praisonai/cli/features/tui/widgets/composer.py +224 -0
  180. praisonai/cli/features/tui/widgets/queue_panel.py +200 -0
  181. praisonai/cli/features/tui/widgets/status.py +167 -0
  182. praisonai/cli/features/tui/widgets/tool_panel.py +248 -0
  183. praisonai/cli/features/workflow.py +720 -0
  184. praisonai/cli/legacy.py +236 -0
  185. praisonai/cli/main.py +5559 -0
  186. praisonai/cli/schedule_cli.py +54 -0
  187. praisonai/cli/state/__init__.py +31 -0
  188. praisonai/cli/state/identifiers.py +161 -0
  189. praisonai/cli/state/sessions.py +313 -0
  190. praisonai/code/__init__.py +93 -0
  191. praisonai/code/agent_tools.py +344 -0
  192. praisonai/code/diff/__init__.py +21 -0
  193. praisonai/code/diff/diff_strategy.py +432 -0
  194. praisonai/code/tools/__init__.py +27 -0
  195. praisonai/code/tools/apply_diff.py +221 -0
  196. praisonai/code/tools/execute_command.py +275 -0
  197. praisonai/code/tools/list_files.py +274 -0
  198. praisonai/code/tools/read_file.py +206 -0
  199. praisonai/code/tools/search_replace.py +248 -0
  200. praisonai/code/tools/write_file.py +217 -0
  201. praisonai/code/utils/__init__.py +46 -0
  202. praisonai/code/utils/file_utils.py +307 -0
  203. praisonai/code/utils/ignore_utils.py +308 -0
  204. praisonai/code/utils/text_utils.py +276 -0
  205. praisonai/db/__init__.py +64 -0
  206. praisonai/db/adapter.py +531 -0
  207. praisonai/deploy/__init__.py +62 -0
  208. praisonai/deploy/api.py +231 -0
  209. praisonai/deploy/docker.py +454 -0
  210. praisonai/deploy/doctor.py +367 -0
  211. praisonai/deploy/main.py +327 -0
  212. praisonai/deploy/models.py +179 -0
  213. praisonai/deploy/providers/__init__.py +33 -0
  214. praisonai/deploy/providers/aws.py +331 -0
  215. praisonai/deploy/providers/azure.py +358 -0
  216. praisonai/deploy/providers/base.py +101 -0
  217. praisonai/deploy/providers/gcp.py +314 -0
  218. praisonai/deploy/schema.py +208 -0
  219. praisonai/deploy.py +185 -0
  220. praisonai/endpoints/__init__.py +53 -0
  221. praisonai/endpoints/a2u_server.py +410 -0
  222. praisonai/endpoints/discovery.py +165 -0
  223. praisonai/endpoints/providers/__init__.py +28 -0
  224. praisonai/endpoints/providers/a2a.py +253 -0
  225. praisonai/endpoints/providers/a2u.py +208 -0
  226. praisonai/endpoints/providers/agents_api.py +171 -0
  227. praisonai/endpoints/providers/base.py +231 -0
  228. praisonai/endpoints/providers/mcp.py +263 -0
  229. praisonai/endpoints/providers/recipe.py +206 -0
  230. praisonai/endpoints/providers/tools_mcp.py +150 -0
  231. praisonai/endpoints/registry.py +131 -0
  232. praisonai/endpoints/server.py +161 -0
  233. praisonai/inbuilt_tools/__init__.py +24 -0
  234. praisonai/inbuilt_tools/autogen_tools.py +117 -0
  235. praisonai/inc/__init__.py +2 -0
  236. praisonai/inc/config.py +96 -0
  237. praisonai/inc/models.py +155 -0
  238. praisonai/integrations/__init__.py +56 -0
  239. praisonai/integrations/base.py +303 -0
  240. praisonai/integrations/claude_code.py +270 -0
  241. praisonai/integrations/codex_cli.py +255 -0
  242. praisonai/integrations/cursor_cli.py +195 -0
  243. praisonai/integrations/gemini_cli.py +222 -0
  244. praisonai/jobs/__init__.py +67 -0
  245. praisonai/jobs/executor.py +425 -0
  246. praisonai/jobs/models.py +230 -0
  247. praisonai/jobs/router.py +314 -0
  248. praisonai/jobs/server.py +186 -0
  249. praisonai/jobs/store.py +203 -0
  250. praisonai/llm/__init__.py +66 -0
  251. praisonai/llm/registry.py +382 -0
  252. praisonai/mcp_server/__init__.py +152 -0
  253. praisonai/mcp_server/adapters/__init__.py +74 -0
  254. praisonai/mcp_server/adapters/agents.py +128 -0
  255. praisonai/mcp_server/adapters/capabilities.py +168 -0
  256. praisonai/mcp_server/adapters/cli_tools.py +568 -0
  257. praisonai/mcp_server/adapters/extended_capabilities.py +462 -0
  258. praisonai/mcp_server/adapters/knowledge.py +93 -0
  259. praisonai/mcp_server/adapters/memory.py +104 -0
  260. praisonai/mcp_server/adapters/prompts.py +306 -0
  261. praisonai/mcp_server/adapters/resources.py +124 -0
  262. praisonai/mcp_server/adapters/tools_bridge.py +280 -0
  263. praisonai/mcp_server/auth/__init__.py +48 -0
  264. praisonai/mcp_server/auth/api_key.py +291 -0
  265. praisonai/mcp_server/auth/oauth.py +460 -0
  266. praisonai/mcp_server/auth/oidc.py +289 -0
  267. praisonai/mcp_server/auth/scopes.py +260 -0
  268. praisonai/mcp_server/cli.py +852 -0
  269. praisonai/mcp_server/elicitation.py +445 -0
  270. praisonai/mcp_server/icons.py +302 -0
  271. praisonai/mcp_server/recipe_adapter.py +573 -0
  272. praisonai/mcp_server/recipe_cli.py +824 -0
  273. praisonai/mcp_server/registry.py +703 -0
  274. praisonai/mcp_server/sampling.py +422 -0
  275. praisonai/mcp_server/server.py +490 -0
  276. praisonai/mcp_server/tasks.py +443 -0
  277. praisonai/mcp_server/transports/__init__.py +18 -0
  278. praisonai/mcp_server/transports/http_stream.py +376 -0
  279. praisonai/mcp_server/transports/stdio.py +132 -0
  280. praisonai/persistence/__init__.py +84 -0
  281. praisonai/persistence/config.py +238 -0
  282. praisonai/persistence/conversation/__init__.py +25 -0
  283. praisonai/persistence/conversation/async_mysql.py +427 -0
  284. praisonai/persistence/conversation/async_postgres.py +410 -0
  285. praisonai/persistence/conversation/async_sqlite.py +371 -0
  286. praisonai/persistence/conversation/base.py +151 -0
  287. praisonai/persistence/conversation/json_store.py +250 -0
  288. praisonai/persistence/conversation/mysql.py +387 -0
  289. praisonai/persistence/conversation/postgres.py +401 -0
  290. praisonai/persistence/conversation/singlestore.py +240 -0
  291. praisonai/persistence/conversation/sqlite.py +341 -0
  292. praisonai/persistence/conversation/supabase.py +203 -0
  293. praisonai/persistence/conversation/surrealdb.py +287 -0
  294. praisonai/persistence/factory.py +301 -0
  295. praisonai/persistence/hooks/__init__.py +18 -0
  296. praisonai/persistence/hooks/agent_hooks.py +297 -0
  297. praisonai/persistence/knowledge/__init__.py +26 -0
  298. praisonai/persistence/knowledge/base.py +144 -0
  299. praisonai/persistence/knowledge/cassandra.py +232 -0
  300. praisonai/persistence/knowledge/chroma.py +295 -0
  301. praisonai/persistence/knowledge/clickhouse.py +242 -0
  302. praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
  303. praisonai/persistence/knowledge/couchbase.py +286 -0
  304. praisonai/persistence/knowledge/lancedb.py +216 -0
  305. praisonai/persistence/knowledge/langchain_adapter.py +291 -0
  306. praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
  307. praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
  308. praisonai/persistence/knowledge/milvus.py +277 -0
  309. praisonai/persistence/knowledge/mongodb_vector.py +306 -0
  310. praisonai/persistence/knowledge/pgvector.py +335 -0
  311. praisonai/persistence/knowledge/pinecone.py +253 -0
  312. praisonai/persistence/knowledge/qdrant.py +301 -0
  313. praisonai/persistence/knowledge/redis_vector.py +291 -0
  314. praisonai/persistence/knowledge/singlestore_vector.py +299 -0
  315. praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
  316. praisonai/persistence/knowledge/upstash_vector.py +266 -0
  317. praisonai/persistence/knowledge/weaviate.py +223 -0
  318. praisonai/persistence/migrations/__init__.py +10 -0
  319. praisonai/persistence/migrations/manager.py +251 -0
  320. praisonai/persistence/orchestrator.py +406 -0
  321. praisonai/persistence/state/__init__.py +21 -0
  322. praisonai/persistence/state/async_mongodb.py +200 -0
  323. praisonai/persistence/state/base.py +107 -0
  324. praisonai/persistence/state/dynamodb.py +226 -0
  325. praisonai/persistence/state/firestore.py +175 -0
  326. praisonai/persistence/state/gcs.py +155 -0
  327. praisonai/persistence/state/memory.py +245 -0
  328. praisonai/persistence/state/mongodb.py +158 -0
  329. praisonai/persistence/state/redis.py +190 -0
  330. praisonai/persistence/state/upstash.py +144 -0
  331. praisonai/persistence/tests/__init__.py +3 -0
  332. praisonai/persistence/tests/test_all_backends.py +633 -0
  333. praisonai/profiler.py +1214 -0
  334. praisonai/recipe/__init__.py +134 -0
  335. praisonai/recipe/bridge.py +278 -0
  336. praisonai/recipe/core.py +893 -0
  337. praisonai/recipe/exceptions.py +54 -0
  338. praisonai/recipe/history.py +402 -0
  339. praisonai/recipe/models.py +266 -0
  340. praisonai/recipe/operations.py +440 -0
  341. praisonai/recipe/policy.py +422 -0
  342. praisonai/recipe/registry.py +849 -0
  343. praisonai/recipe/runtime.py +214 -0
  344. praisonai/recipe/security.py +711 -0
  345. praisonai/recipe/serve.py +859 -0
  346. praisonai/recipe/server.py +613 -0
  347. praisonai/scheduler/__init__.py +45 -0
  348. praisonai/scheduler/agent_scheduler.py +552 -0
  349. praisonai/scheduler/base.py +124 -0
  350. praisonai/scheduler/daemon_manager.py +225 -0
  351. praisonai/scheduler/state_manager.py +155 -0
  352. praisonai/scheduler/yaml_loader.py +193 -0
  353. praisonai/scheduler.py +194 -0
  354. praisonai/setup/__init__.py +1 -0
  355. praisonai/setup/build.py +21 -0
  356. praisonai/setup/post_install.py +23 -0
  357. praisonai/setup/setup_conda_env.py +25 -0
  358. praisonai/setup.py +16 -0
  359. praisonai/templates/__init__.py +116 -0
  360. praisonai/templates/cache.py +364 -0
  361. praisonai/templates/dependency_checker.py +358 -0
  362. praisonai/templates/discovery.py +391 -0
  363. praisonai/templates/loader.py +564 -0
  364. praisonai/templates/registry.py +511 -0
  365. praisonai/templates/resolver.py +206 -0
  366. praisonai/templates/security.py +327 -0
  367. praisonai/templates/tool_override.py +498 -0
  368. praisonai/templates/tools_doctor.py +256 -0
  369. praisonai/test.py +105 -0
  370. praisonai/train.py +562 -0
  371. praisonai/train_vision.py +306 -0
  372. praisonai/ui/agents.py +824 -0
  373. praisonai/ui/callbacks.py +57 -0
  374. praisonai/ui/chainlit_compat.py +246 -0
  375. praisonai/ui/chat.py +532 -0
  376. praisonai/ui/code.py +717 -0
  377. praisonai/ui/colab.py +474 -0
  378. praisonai/ui/colab_chainlit.py +81 -0
  379. praisonai/ui/components/aicoder.py +284 -0
  380. praisonai/ui/context.py +283 -0
  381. praisonai/ui/database_config.py +56 -0
  382. praisonai/ui/db.py +294 -0
  383. praisonai/ui/realtime.py +488 -0
  384. praisonai/ui/realtimeclient/__init__.py +756 -0
  385. praisonai/ui/realtimeclient/tools.py +242 -0
  386. praisonai/ui/sql_alchemy.py +710 -0
  387. praisonai/upload_vision.py +140 -0
  388. praisonai/version.py +1 -0
  389. praisonai-3.0.0.dist-info/METADATA +3493 -0
  390. praisonai-3.0.0.dist-info/RECORD +393 -0
  391. praisonai-3.0.0.dist-info/WHEEL +5 -0
  392. praisonai-3.0.0.dist-info/entry_points.txt +4 -0
  393. 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)