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,306 @@
1
+ """
2
+ MCP Prompts Adapter
3
+
4
+ Registers MCP prompts for PraisonAI:
5
+ - deep-research
6
+ - code-review
7
+ - workflow-auto
8
+ - guardrail-check
9
+ - context-engineering
10
+ - eval-criteria
11
+ """
12
+
13
+ import logging
14
+
15
+ from ..registry import register_prompt
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ def register_mcp_prompts() -> None:
21
+ """Register MCP prompts."""
22
+
23
+ @register_prompt(
24
+ "deep-research",
25
+ description="Generate a deep research prompt for comprehensive topic analysis",
26
+ arguments=[
27
+ {"name": "topic", "description": "Research topic", "required": True},
28
+ {"name": "depth", "description": "Research depth (shallow/medium/deep)", "required": False},
29
+ {"name": "focus_areas", "description": "Specific areas to focus on", "required": False},
30
+ ],
31
+ )
32
+ def deep_research_prompt(
33
+ topic: str,
34
+ depth: str = "medium",
35
+ focus_areas: str = "",
36
+ ) -> list:
37
+ """Generate deep research prompt."""
38
+ depth_instructions = {
39
+ "shallow": "Provide a brief overview with key points.",
40
+ "medium": "Conduct thorough research with multiple perspectives and sources.",
41
+ "deep": "Perform exhaustive research covering all aspects, historical context, current state, and future implications.",
42
+ }
43
+
44
+ focus_text = f"\n\nFocus particularly on: {focus_areas}" if focus_areas else ""
45
+
46
+ return [
47
+ {
48
+ "role": "user",
49
+ "content": {
50
+ "type": "text",
51
+ "text": f"""Research the following topic comprehensively:
52
+
53
+ Topic: {topic}
54
+
55
+ Research Depth: {depth}
56
+ {depth_instructions.get(depth, depth_instructions["medium"])}
57
+ {focus_text}
58
+
59
+ Please provide:
60
+ 1. Executive Summary
61
+ 2. Key Findings
62
+ 3. Detailed Analysis
63
+ 4. Sources and References
64
+ 5. Conclusions and Recommendations"""
65
+ }
66
+ }
67
+ ]
68
+
69
+ @register_prompt(
70
+ "code-review",
71
+ description="Generate a code review prompt for analyzing code quality",
72
+ arguments=[
73
+ {"name": "code", "description": "Code to review", "required": True},
74
+ {"name": "language", "description": "Programming language", "required": False},
75
+ {"name": "focus", "description": "Review focus (security/performance/style/all)", "required": False},
76
+ ],
77
+ )
78
+ def code_review_prompt(
79
+ code: str,
80
+ language: str = "auto",
81
+ focus: str = "all",
82
+ ) -> list:
83
+ """Generate code review prompt."""
84
+ focus_areas = {
85
+ "security": "Focus on security vulnerabilities, input validation, and potential exploits.",
86
+ "performance": "Focus on performance optimizations, algorithmic efficiency, and resource usage.",
87
+ "style": "Focus on code style, readability, naming conventions, and best practices.",
88
+ "all": "Review all aspects: security, performance, style, and correctness.",
89
+ }
90
+
91
+ return [
92
+ {
93
+ "role": "user",
94
+ "content": {
95
+ "type": "text",
96
+ "text": f"""Please review the following {language} code:
97
+
98
+ ```{language}
99
+ {code}
100
+ ```
101
+
102
+ Review Focus: {focus}
103
+ {focus_areas.get(focus, focus_areas["all"])}
104
+
105
+ Please provide:
106
+ 1. Overall Assessment
107
+ 2. Issues Found (with severity: critical/major/minor)
108
+ 3. Suggestions for Improvement
109
+ 4. Positive Aspects
110
+ 5. Refactored Code (if applicable)"""
111
+ }
112
+ }
113
+ ]
114
+
115
+ @register_prompt(
116
+ "workflow-auto",
117
+ description="Generate a workflow auto-generation prompt",
118
+ arguments=[
119
+ {"name": "task", "description": "Task description", "required": True},
120
+ {"name": "pattern", "description": "Workflow pattern (sequential/parallel/routing)", "required": False},
121
+ {"name": "agents_count", "description": "Number of agents to use", "required": False},
122
+ ],
123
+ )
124
+ def workflow_auto_prompt(
125
+ task: str,
126
+ pattern: str = "sequential",
127
+ agents_count: str = "auto",
128
+ ) -> list:
129
+ """Generate workflow auto-generation prompt."""
130
+ return [
131
+ {
132
+ "role": "user",
133
+ "content": {
134
+ "type": "text",
135
+ "text": f"""Generate a PraisonAI workflow configuration for the following task:
136
+
137
+ Task: {task}
138
+
139
+ Workflow Pattern: {pattern}
140
+ Number of Agents: {agents_count}
141
+
142
+ Please generate a YAML configuration that includes:
143
+ 1. Framework specification
144
+ 2. Topic/goal definition
145
+ 3. Agent roles with:
146
+ - Role name
147
+ - Goal
148
+ - Backstory
149
+ - Tasks with descriptions and expected outputs
150
+ 4. Appropriate tools for each agent
151
+
152
+ Output the complete agents.yaml configuration."""
153
+ }
154
+ }
155
+ ]
156
+
157
+ @register_prompt(
158
+ "guardrail-check",
159
+ description="Generate a guardrail check prompt for content safety",
160
+ arguments=[
161
+ {"name": "content", "description": "Content to check", "required": True},
162
+ {"name": "rules", "description": "Specific rules to enforce", "required": False},
163
+ ],
164
+ )
165
+ def guardrail_check_prompt(
166
+ content: str,
167
+ rules: str = "",
168
+ ) -> list:
169
+ """Generate guardrail check prompt."""
170
+ rules_text = f"\n\nAdditional Rules:\n{rules}" if rules else ""
171
+
172
+ return [
173
+ {
174
+ "role": "user",
175
+ "content": {
176
+ "type": "text",
177
+ "text": f"""Analyze the following content for safety and policy compliance:
178
+
179
+ Content:
180
+ {content}
181
+ {rules_text}
182
+
183
+ Please check for:
184
+ 1. Harmful or dangerous content
185
+ 2. Personal information exposure
186
+ 3. Inappropriate language
187
+ 4. Policy violations
188
+ 5. Factual accuracy concerns
189
+
190
+ Provide:
191
+ - Safety Score (1-10)
192
+ - Issues Found
193
+ - Recommendations
194
+ - Modified Safe Version (if needed)"""
195
+ }
196
+ }
197
+ ]
198
+
199
+ @register_prompt(
200
+ "context-engineering",
201
+ description="Generate a context engineering prompt for optimal LLM interaction",
202
+ arguments=[
203
+ {"name": "goal", "description": "What you want to achieve", "required": True},
204
+ {"name": "constraints", "description": "Any constraints or requirements", "required": False},
205
+ ],
206
+ )
207
+ def context_engineering_prompt(
208
+ goal: str,
209
+ constraints: str = "",
210
+ ) -> list:
211
+ """Generate context engineering prompt."""
212
+ constraints_text = f"\n\nConstraints:\n{constraints}" if constraints else ""
213
+
214
+ return [
215
+ {
216
+ "role": "user",
217
+ "content": {
218
+ "type": "text",
219
+ "text": f"""Help me engineer an optimal prompt/context for the following goal:
220
+
221
+ Goal: {goal}
222
+ {constraints_text}
223
+
224
+ Please provide:
225
+ 1. Optimal System Prompt
226
+ 2. User Prompt Template
227
+ 3. Few-shot Examples (if helpful)
228
+ 4. Recommended Model Settings (temperature, etc.)
229
+ 5. Expected Output Format
230
+ 6. Potential Edge Cases to Handle"""
231
+ }
232
+ }
233
+ ]
234
+
235
+ @register_prompt(
236
+ "eval-criteria",
237
+ description="Generate evaluation criteria for agent output assessment",
238
+ arguments=[
239
+ {"name": "task_type", "description": "Type of task being evaluated", "required": True},
240
+ {"name": "output_format", "description": "Expected output format", "required": False},
241
+ ],
242
+ )
243
+ def eval_criteria_prompt(
244
+ task_type: str,
245
+ output_format: str = "text",
246
+ ) -> list:
247
+ """Generate evaluation criteria prompt."""
248
+ return [
249
+ {
250
+ "role": "user",
251
+ "content": {
252
+ "type": "text",
253
+ "text": f"""Generate comprehensive evaluation criteria for the following:
254
+
255
+ Task Type: {task_type}
256
+ Expected Output Format: {output_format}
257
+
258
+ Please provide:
259
+ 1. Accuracy Criteria (what makes output correct)
260
+ 2. Quality Metrics (completeness, clarity, relevance)
261
+ 3. Format Compliance Checks
262
+ 4. Edge Case Handling Assessment
263
+ 5. Scoring Rubric (1-10 scale with descriptions)
264
+ 6. Example Good/Bad Outputs"""
265
+ }
266
+ }
267
+ ]
268
+
269
+ @register_prompt(
270
+ "agent-instructions",
271
+ description="Generate optimal agent instructions for a specific role",
272
+ arguments=[
273
+ {"name": "role", "description": "Agent role/persona", "required": True},
274
+ {"name": "capabilities", "description": "Available capabilities/tools", "required": False},
275
+ ],
276
+ )
277
+ def agent_instructions_prompt(
278
+ role: str,
279
+ capabilities: str = "",
280
+ ) -> list:
281
+ """Generate agent instructions prompt."""
282
+ caps_text = f"\n\nAvailable Capabilities:\n{capabilities}" if capabilities else ""
283
+
284
+ return [
285
+ {
286
+ "role": "user",
287
+ "content": {
288
+ "type": "text",
289
+ "text": f"""Generate optimal instructions for an AI agent with the following role:
290
+
291
+ Role: {role}
292
+ {caps_text}
293
+
294
+ Please provide:
295
+ 1. Core Identity Statement
296
+ 2. Primary Objectives
297
+ 3. Behavioral Guidelines
298
+ 4. Communication Style
299
+ 5. Decision-Making Framework
300
+ 6. Error Handling Approach
301
+ 7. Collaboration Guidelines (if working with other agents)"""
302
+ }
303
+ }
304
+ ]
305
+
306
+ logger.info("Registered MCP prompts")
@@ -0,0 +1,124 @@
1
+ """
2
+ MCP Resources Adapter
3
+
4
+ Registers MCP resources for PraisonAI:
5
+ - praisonai://memory/sessions
6
+ - praisonai://memory/{session_id}
7
+ - praisonai://workflows
8
+ - praisonai://tools
9
+ - praisonai://agents
10
+ - praisonai://knowledge/sources
11
+ """
12
+
13
+ import logging
14
+
15
+ from ..registry import register_resource
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ def register_mcp_resources() -> None:
21
+ """Register MCP resources."""
22
+
23
+ @register_resource("praisonai://memory/sessions")
24
+ def memory_sessions_resource() -> dict:
25
+ """List all memory sessions."""
26
+ try:
27
+ from praisonaiagents.memory import Memory
28
+ memory = Memory()
29
+ sessions = memory.list_sessions()
30
+ return {"sessions": sessions}
31
+ except ImportError:
32
+ return {"error": "Memory module not available", "sessions": []}
33
+ except Exception as e:
34
+ return {"error": str(e), "sessions": []}
35
+
36
+ @register_resource("praisonai://workflows")
37
+ def workflows_resource() -> dict:
38
+ """List available workflows in current directory."""
39
+ try:
40
+ import os
41
+ import glob
42
+ workflows = []
43
+ for pattern in ["*.yaml", "*.yml"]:
44
+ for f in glob.glob(pattern):
45
+ if "agent" in f.lower() or "workflow" in f.lower():
46
+ workflows.append(f)
47
+ return {"workflows": workflows, "cwd": os.getcwd()}
48
+ except Exception as e:
49
+ return {"error": str(e), "workflows": []}
50
+
51
+ @register_resource("praisonai://tools")
52
+ def tools_resource() -> dict:
53
+ """List available tools."""
54
+ try:
55
+ from ..registry import get_tool_registry
56
+ registry = get_tool_registry()
57
+ tools = registry.list_schemas()
58
+ return {"tools": [t["name"] for t in tools], "count": len(tools)}
59
+ except Exception as e:
60
+ return {"error": str(e), "tools": []}
61
+
62
+ @register_resource("praisonai://agents")
63
+ def agents_resource() -> dict:
64
+ """List agent configurations."""
65
+ try:
66
+ import os
67
+ import yaml
68
+ agents = []
69
+ for f in ["agents.yaml", "agents.yml"]:
70
+ if os.path.exists(f):
71
+ with open(f, 'r') as file:
72
+ config = yaml.safe_load(file)
73
+ if config and "roles" in config:
74
+ agents.extend(list(config["roles"].keys()))
75
+ return {"agents": agents}
76
+ except Exception as e:
77
+ return {"error": str(e), "agents": []}
78
+
79
+ @register_resource("praisonai://knowledge/sources")
80
+ def knowledge_sources_resource() -> dict:
81
+ """List knowledge sources."""
82
+ try:
83
+ from praisonaiagents.knowledge import Knowledge
84
+ knowledge = Knowledge()
85
+ sources = knowledge.list_sources()
86
+ return {"sources": sources}
87
+ except ImportError:
88
+ return {"error": "Knowledge module not available", "sources": []}
89
+ except Exception as e:
90
+ return {"error": str(e), "sources": []}
91
+
92
+ @register_resource("praisonai://config")
93
+ def config_resource() -> dict:
94
+ """Get current configuration."""
95
+ try:
96
+ import os
97
+ config = {
98
+ "openai_api_key_set": bool(os.environ.get("OPENAI_API_KEY")),
99
+ "anthropic_api_key_set": bool(os.environ.get("ANTHROPIC_API_KEY")),
100
+ "google_api_key_set": bool(os.environ.get("GOOGLE_API_KEY")),
101
+ "cwd": os.getcwd(),
102
+ }
103
+ return config
104
+ except Exception as e:
105
+ return {"error": str(e)}
106
+
107
+ @register_resource("praisonai://mcp/status")
108
+ def mcp_status_resource() -> dict:
109
+ """Get MCP server status."""
110
+ try:
111
+ from ..registry import get_tool_registry, get_resource_registry, get_prompt_registry
112
+ from ..server import PROTOCOL_VERSION
113
+
114
+ return {
115
+ "protocol_version": PROTOCOL_VERSION,
116
+ "tools_count": len(get_tool_registry().list_all()),
117
+ "resources_count": len(get_resource_registry().list_all()),
118
+ "prompts_count": len(get_prompt_registry().list_all()),
119
+ "status": "healthy",
120
+ }
121
+ except Exception as e:
122
+ return {"error": str(e), "status": "error"}
123
+
124
+ logger.info("Registered MCP resources")