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,462 @@
1
+ """
2
+ Extended Capabilities Adapter
3
+
4
+ Maps additional PraisonAI capabilities to MCP tools:
5
+ - Videos
6
+ - Files
7
+ - Batches
8
+ - Vector Stores
9
+ - OCR
10
+ - Assistants
11
+ - Fine-tuning
12
+ - A2A
13
+ - Containers
14
+ - Skills
15
+ - Realtime
16
+ """
17
+
18
+ import logging
19
+ from typing import List, Optional
20
+
21
+ from ..registry import register_tool
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+
26
+ def register_extended_capability_tools() -> None:
27
+ """Register extended capability-based MCP tools."""
28
+
29
+ # Video tools
30
+ @register_tool("praisonai.videos.generate")
31
+ def videos_generate(
32
+ prompt: str,
33
+ model: str = "runway-gen3",
34
+ duration: int = 4,
35
+ ) -> str:
36
+ """Generate video from text prompt."""
37
+ try:
38
+ from praisonai.capabilities import video_generate
39
+ result = video_generate(prompt=prompt, model=model, duration=duration)
40
+ return str(result)
41
+ except ImportError:
42
+ return "Error: Video generation not available"
43
+ except Exception as e:
44
+ return f"Error: {e}"
45
+
46
+ # File tools
47
+ @register_tool("praisonai.files.create")
48
+ def files_create(
49
+ file_path: str,
50
+ purpose: str = "assistants",
51
+ ) -> str:
52
+ """Upload a file."""
53
+ try:
54
+ from praisonai.capabilities import file_create
55
+ result = file_create(file=file_path, purpose=purpose)
56
+ if hasattr(result, "id"):
57
+ return f"File created: {result.id}"
58
+ return str(result)
59
+ except ImportError:
60
+ return "Error: File operations not available"
61
+ except Exception as e:
62
+ return f"Error: {e}"
63
+
64
+ @register_tool("praisonai.files.list")
65
+ def files_list(purpose: Optional[str] = None) -> str:
66
+ """List uploaded files."""
67
+ try:
68
+ from praisonai.capabilities import file_list
69
+ result = file_list(purpose=purpose)
70
+ if hasattr(result, "data"):
71
+ files = [{"id": f.id, "filename": f.filename} for f in result.data]
72
+ return str(files)
73
+ return str(result)
74
+ except ImportError:
75
+ return "Error: File operations not available"
76
+ except Exception as e:
77
+ return f"Error: {e}"
78
+
79
+ @register_tool("praisonai.files.retrieve")
80
+ def files_retrieve(file_id: str) -> str:
81
+ """Retrieve file metadata."""
82
+ try:
83
+ from praisonai.capabilities import file_retrieve
84
+ result = file_retrieve(file_id=file_id)
85
+ return str(result)
86
+ except ImportError:
87
+ return "Error: File operations not available"
88
+ except Exception as e:
89
+ return f"Error: {e}"
90
+
91
+ @register_tool("praisonai.files.delete")
92
+ def files_delete(file_id: str) -> str:
93
+ """Delete a file."""
94
+ try:
95
+ from praisonai.capabilities import file_delete
96
+ file_delete(file_id=file_id)
97
+ return f"File deleted: {file_id}"
98
+ except ImportError:
99
+ return "Error: File operations not available"
100
+ except Exception as e:
101
+ return f"Error: {e}"
102
+
103
+ @register_tool("praisonai.files.content")
104
+ def files_content(file_id: str) -> str:
105
+ """Get file content."""
106
+ try:
107
+ from praisonai.capabilities import file_content
108
+ result = file_content(file_id=file_id)
109
+ return str(result)
110
+ except ImportError:
111
+ return "Error: File operations not available"
112
+ except Exception as e:
113
+ return f"Error: {e}"
114
+
115
+ # Batch tools
116
+ @register_tool("praisonai.batches.create")
117
+ def batches_create(
118
+ input_file_id: str,
119
+ endpoint: str = "/v1/chat/completions",
120
+ completion_window: str = "24h",
121
+ ) -> str:
122
+ """Create a batch processing job."""
123
+ try:
124
+ from praisonai.capabilities import batch_create
125
+ result = batch_create(
126
+ input_file_id=input_file_id,
127
+ endpoint=endpoint,
128
+ completion_window=completion_window,
129
+ )
130
+ if hasattr(result, "id"):
131
+ return f"Batch created: {result.id}"
132
+ return str(result)
133
+ except ImportError:
134
+ return "Error: Batch operations not available"
135
+ except Exception as e:
136
+ return f"Error: {e}"
137
+
138
+ @register_tool("praisonai.batches.list")
139
+ def batches_list() -> str:
140
+ """List batch jobs."""
141
+ try:
142
+ from praisonai.capabilities import batch_list
143
+ result = batch_list()
144
+ return str(result)
145
+ except ImportError:
146
+ return "Error: Batch operations not available"
147
+ except Exception as e:
148
+ return f"Error: {e}"
149
+
150
+ @register_tool("praisonai.batches.retrieve")
151
+ def batches_retrieve(batch_id: str) -> str:
152
+ """Retrieve batch job status."""
153
+ try:
154
+ from praisonai.capabilities import batch_retrieve
155
+ result = batch_retrieve(batch_id=batch_id)
156
+ return str(result)
157
+ except ImportError:
158
+ return "Error: Batch operations not available"
159
+ except Exception as e:
160
+ return f"Error: {e}"
161
+
162
+ @register_tool("praisonai.batches.cancel")
163
+ def batches_cancel(batch_id: str) -> str:
164
+ """Cancel a batch job."""
165
+ try:
166
+ from praisonai.capabilities import batch_cancel
167
+ batch_cancel(batch_id=batch_id)
168
+ return f"Batch cancelled: {batch_id}"
169
+ except ImportError:
170
+ return "Error: Batch operations not available"
171
+ except Exception as e:
172
+ return f"Error: {e}"
173
+
174
+ # Vector Store tools
175
+ @register_tool("praisonai.vector_stores.create")
176
+ def vector_stores_create(
177
+ name: str,
178
+ file_ids: Optional[List[str]] = None,
179
+ ) -> str:
180
+ """Create a vector store."""
181
+ try:
182
+ from praisonai.capabilities import vector_store_create
183
+ result = vector_store_create(name=name, file_ids=file_ids or [])
184
+ if hasattr(result, "id"):
185
+ return f"Vector store created: {result.id}"
186
+ return str(result)
187
+ except ImportError:
188
+ return "Error: Vector store operations not available"
189
+ except Exception as e:
190
+ return f"Error: {e}"
191
+
192
+ @register_tool("praisonai.vector_stores.search")
193
+ def vector_stores_search(
194
+ vector_store_id: str,
195
+ query: str,
196
+ max_results: int = 10,
197
+ ) -> str:
198
+ """Search a vector store."""
199
+ try:
200
+ from praisonai.capabilities import vector_store_search
201
+ result = vector_store_search(
202
+ vector_store_id=vector_store_id,
203
+ query=query,
204
+ max_num_results=max_results,
205
+ )
206
+ return str(result)
207
+ except ImportError:
208
+ return "Error: Vector store operations not available"
209
+ except Exception as e:
210
+ return f"Error: {e}"
211
+
212
+ @register_tool("praisonai.vector_stores.file_create")
213
+ def vector_stores_file_create(
214
+ vector_store_id: str,
215
+ file_id: str,
216
+ ) -> str:
217
+ """Add a file to a vector store."""
218
+ try:
219
+ from praisonai.capabilities import vector_store_file_create
220
+ vector_store_file_create(
221
+ vector_store_id=vector_store_id,
222
+ file_id=file_id,
223
+ )
224
+ return f"File {file_id} added to vector store {vector_store_id}"
225
+ except ImportError:
226
+ return "Error: Vector store operations not available"
227
+ except Exception as e:
228
+ return f"Error: {e}"
229
+
230
+ @register_tool("praisonai.vector_stores.file_list")
231
+ def vector_stores_file_list(vector_store_id: str) -> str:
232
+ """List files in a vector store."""
233
+ try:
234
+ from praisonai.capabilities import vector_store_file_list
235
+ result = vector_store_file_list(vector_store_id=vector_store_id)
236
+ return str(result)
237
+ except ImportError:
238
+ return "Error: Vector store operations not available"
239
+ except Exception as e:
240
+ return f"Error: {e}"
241
+
242
+ # OCR tools
243
+ @register_tool("praisonai.ocr")
244
+ def ocr_extract(
245
+ image_path: str,
246
+ model: str = "gpt-4o",
247
+ ) -> str:
248
+ """Extract text from image using OCR."""
249
+ try:
250
+ from praisonai.capabilities import ocr
251
+ result = ocr(file=image_path, model=model)
252
+ return str(result)
253
+ except ImportError:
254
+ return "Error: OCR not available"
255
+ except Exception as e:
256
+ return f"Error: {e}"
257
+
258
+ # Assistant tools
259
+ @register_tool("praisonai.assistants.create")
260
+ def assistants_create(
261
+ name: str,
262
+ instructions: str,
263
+ model: str = "gpt-4o",
264
+ tools: Optional[List[str]] = None,
265
+ ) -> str:
266
+ """Create an OpenAI-style assistant."""
267
+ try:
268
+ from praisonai.capabilities import assistant_create
269
+ result = assistant_create(
270
+ name=name,
271
+ instructions=instructions,
272
+ model=model,
273
+ tools=tools or [],
274
+ )
275
+ if hasattr(result, "id"):
276
+ return f"Assistant created: {result.id}"
277
+ return str(result)
278
+ except ImportError:
279
+ return "Error: Assistants not available"
280
+ except Exception as e:
281
+ return f"Error: {e}"
282
+
283
+ @register_tool("praisonai.assistants.list")
284
+ def assistants_list() -> str:
285
+ """List assistants."""
286
+ try:
287
+ from praisonai.capabilities import assistant_list
288
+ result = assistant_list()
289
+ return str(result)
290
+ except ImportError:
291
+ return "Error: Assistants not available"
292
+ except Exception as e:
293
+ return f"Error: {e}"
294
+
295
+ # Fine-tuning tools
296
+ @register_tool("praisonai.fine_tuning.create")
297
+ def fine_tuning_create(
298
+ training_file: str,
299
+ model: str = "gpt-4o-mini",
300
+ suffix: Optional[str] = None,
301
+ ) -> str:
302
+ """Create a fine-tuning job."""
303
+ try:
304
+ from praisonai.capabilities import fine_tuning_create
305
+ result = fine_tuning_create(
306
+ training_file=training_file,
307
+ model=model,
308
+ suffix=suffix,
309
+ )
310
+ if hasattr(result, "id"):
311
+ return f"Fine-tuning job created: {result.id}"
312
+ return str(result)
313
+ except ImportError:
314
+ return "Error: Fine-tuning not available"
315
+ except Exception as e:
316
+ return f"Error: {e}"
317
+
318
+ @register_tool("praisonai.fine_tuning.list")
319
+ def fine_tuning_list() -> str:
320
+ """List fine-tuning jobs."""
321
+ try:
322
+ from praisonai.capabilities import fine_tuning_list
323
+ result = fine_tuning_list()
324
+ return str(result)
325
+ except ImportError:
326
+ return "Error: Fine-tuning not available"
327
+ except Exception as e:
328
+ return f"Error: {e}"
329
+
330
+ # A2A tools
331
+ @register_tool("praisonai.a2a.send")
332
+ def a2a_send(
333
+ agent_url: str,
334
+ message: str,
335
+ task_id: Optional[str] = None,
336
+ ) -> str:
337
+ """Send message to another agent via A2A protocol."""
338
+ try:
339
+ from praisonai.capabilities import a2a_send
340
+ result = a2a_send(
341
+ agent_url=agent_url,
342
+ message=message,
343
+ task_id=task_id,
344
+ )
345
+ return str(result)
346
+ except ImportError:
347
+ return "Error: A2A not available"
348
+ except Exception as e:
349
+ return f"Error: {e}"
350
+
351
+ # Container tools
352
+ @register_tool("praisonai.containers.create")
353
+ def containers_create(
354
+ name: str,
355
+ image: str = "python:3.11",
356
+ ) -> str:
357
+ """Create a container for code execution."""
358
+ try:
359
+ from praisonai.capabilities import container_create
360
+ result = container_create(name=name, image=image)
361
+ if hasattr(result, "id"):
362
+ return f"Container created: {result.id}"
363
+ return str(result)
364
+ except ImportError:
365
+ return "Error: Containers not available"
366
+ except Exception as e:
367
+ return f"Error: {e}"
368
+
369
+ @register_tool("praisonai.containers.file_read")
370
+ def containers_file_read(
371
+ container_id: str,
372
+ file_path: str,
373
+ ) -> str:
374
+ """Read a file from a container."""
375
+ try:
376
+ from praisonai.capabilities import container_file_read
377
+ result = container_file_read(
378
+ container_id=container_id,
379
+ file_path=file_path,
380
+ )
381
+ return str(result)
382
+ except ImportError:
383
+ return "Error: Containers not available"
384
+ except Exception as e:
385
+ return f"Error: {e}"
386
+
387
+ @register_tool("praisonai.containers.file_write")
388
+ def containers_file_write(
389
+ container_id: str,
390
+ file_path: str,
391
+ content: str,
392
+ ) -> str:
393
+ """Write a file to a container."""
394
+ try:
395
+ from praisonai.capabilities import container_file_write
396
+ container_file_write(
397
+ container_id=container_id,
398
+ file_path=file_path,
399
+ content=content,
400
+ )
401
+ return f"File {file_path} written to container {container_id}"
402
+ except ImportError:
403
+ return "Error: Containers not available"
404
+ except Exception as e:
405
+ return f"Error: {e}"
406
+
407
+ # Skills tools
408
+ @register_tool("praisonai.skills.list")
409
+ def skills_list() -> str:
410
+ """List available skills."""
411
+ try:
412
+ from praisonai.capabilities import skill_list
413
+ result = skill_list()
414
+ return str(result)
415
+ except ImportError:
416
+ return "Error: Skills not available"
417
+ except Exception as e:
418
+ return f"Error: {e}"
419
+
420
+ @register_tool("praisonai.skills.load")
421
+ def skills_load(skill_path: str) -> str:
422
+ """Load a skill from path."""
423
+ try:
424
+ from praisonai.capabilities import skill_load
425
+ result = skill_load(skill_path=skill_path)
426
+ return str(result)
427
+ except ImportError:
428
+ return "Error: Skills not available"
429
+ except Exception as e:
430
+ return f"Error: {e}"
431
+
432
+ # Realtime tools
433
+ @register_tool("praisonai.realtime.connect")
434
+ def realtime_connect(
435
+ model: str = "gpt-4o-realtime-preview",
436
+ ) -> str:
437
+ """Connect to realtime API."""
438
+ try:
439
+ from praisonai.capabilities import realtime_connect
440
+ result = realtime_connect(model=model)
441
+ return str(result)
442
+ except ImportError:
443
+ return "Error: Realtime not available"
444
+ except Exception as e:
445
+ return f"Error: {e}"
446
+
447
+ @register_tool("praisonai.realtime.send")
448
+ def realtime_send(
449
+ session_id: str,
450
+ message: str,
451
+ ) -> str:
452
+ """Send message to realtime session."""
453
+ try:
454
+ from praisonai.capabilities import realtime_send
455
+ result = realtime_send(session_id=session_id, message=message)
456
+ return str(result)
457
+ except ImportError:
458
+ return "Error: Realtime not available"
459
+ except Exception as e:
460
+ return f"Error: {e}"
461
+
462
+ logger.info("Registered extended capability MCP tools")
@@ -0,0 +1,93 @@
1
+ """
2
+ Knowledge Adapter
3
+
4
+ Maps PraisonAI knowledge operations to MCP tools.
5
+ """
6
+
7
+ import logging
8
+
9
+ from ..registry import register_tool
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ def register_knowledge_tools() -> None:
15
+ """Register knowledge-related MCP tools."""
16
+
17
+ @register_tool("praisonai.knowledge.add")
18
+ def knowledge_add(
19
+ source: str,
20
+ source_type: str = "text",
21
+ ) -> str:
22
+ """Add a knowledge source (text, file, or URL)."""
23
+ try:
24
+ from praisonaiagents.knowledge import Knowledge
25
+
26
+ knowledge = Knowledge()
27
+ knowledge.add(source, source_type=source_type)
28
+ return f"Knowledge added from {source_type}"
29
+ except ImportError:
30
+ return "Error: Knowledge module not available"
31
+ except Exception as e:
32
+ return f"Error: {e}"
33
+
34
+ @register_tool("praisonai.knowledge.query")
35
+ def knowledge_query(
36
+ query: str,
37
+ limit: int = 5,
38
+ ) -> str:
39
+ """Query the knowledge base."""
40
+ try:
41
+ from praisonaiagents.knowledge import Knowledge
42
+
43
+ knowledge = Knowledge()
44
+ results = knowledge.query(query, limit=limit)
45
+ return str(results)
46
+ except ImportError:
47
+ return "Error: Knowledge module not available"
48
+ except Exception as e:
49
+ return f"Error: {e}"
50
+
51
+ @register_tool("praisonai.knowledge.list")
52
+ def knowledge_list() -> str:
53
+ """List all knowledge sources."""
54
+ try:
55
+ from praisonaiagents.knowledge import Knowledge
56
+
57
+ knowledge = Knowledge()
58
+ sources = knowledge.list_sources()
59
+ return str(sources)
60
+ except ImportError:
61
+ return "Error: Knowledge module not available"
62
+ except Exception as e:
63
+ return f"Error: {e}"
64
+
65
+ @register_tool("praisonai.knowledge.clear")
66
+ def knowledge_clear() -> str:
67
+ """Clear all knowledge."""
68
+ try:
69
+ from praisonaiagents.knowledge import Knowledge
70
+
71
+ knowledge = Knowledge()
72
+ knowledge.clear()
73
+ return "Knowledge cleared"
74
+ except ImportError:
75
+ return "Error: Knowledge module not available"
76
+ except Exception as e:
77
+ return f"Error: {e}"
78
+
79
+ @register_tool("praisonai.knowledge.stats")
80
+ def knowledge_stats() -> str:
81
+ """Get knowledge base statistics."""
82
+ try:
83
+ from praisonaiagents.knowledge import Knowledge
84
+
85
+ knowledge = Knowledge()
86
+ stats = knowledge.stats()
87
+ return str(stats)
88
+ except ImportError:
89
+ return "Error: Knowledge module not available"
90
+ except Exception as e:
91
+ return f"Error: {e}"
92
+
93
+ logger.info("Registered knowledge MCP tools")
@@ -0,0 +1,104 @@
1
+ """
2
+ Memory Adapter
3
+
4
+ Maps PraisonAI memory operations to MCP tools.
5
+ """
6
+
7
+ import logging
8
+ from typing import Optional
9
+
10
+ from ..registry import register_tool
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ def register_memory_tools() -> None:
16
+ """Register memory-related MCP tools."""
17
+
18
+ @register_tool("praisonai.memory.show")
19
+ def memory_show(session_id: Optional[str] = None) -> str:
20
+ """Show memory contents for a session."""
21
+ try:
22
+ from praisonaiagents.memory import Memory
23
+
24
+ memory = Memory()
25
+ if session_id:
26
+ data = memory.get_session(session_id)
27
+ else:
28
+ data = memory.get_all()
29
+ return str(data)
30
+ except ImportError:
31
+ return "Error: Memory module not available"
32
+ except Exception as e:
33
+ return f"Error: {e}"
34
+
35
+ @register_tool("praisonai.memory.add")
36
+ def memory_add(
37
+ content: str,
38
+ session_id: Optional[str] = None,
39
+ metadata: Optional[str] = None,
40
+ ) -> str:
41
+ """Add content to memory."""
42
+ try:
43
+ from praisonaiagents.memory import Memory
44
+ import json
45
+
46
+ memory = Memory()
47
+ meta = json.loads(metadata) if metadata else {}
48
+ memory.add(content, session_id=session_id, metadata=meta)
49
+ return "Memory added successfully"
50
+ except ImportError:
51
+ return "Error: Memory module not available"
52
+ except Exception as e:
53
+ return f"Error: {e}"
54
+
55
+ @register_tool("praisonai.memory.search")
56
+ def memory_search(
57
+ query: str,
58
+ limit: int = 10,
59
+ ) -> str:
60
+ """Search memory for relevant content."""
61
+ try:
62
+ from praisonaiagents.memory import Memory
63
+
64
+ memory = Memory()
65
+ results = memory.search(query, limit=limit)
66
+ return str(results)
67
+ except ImportError:
68
+ return "Error: Memory module not available"
69
+ except Exception as e:
70
+ return f"Error: {e}"
71
+
72
+ @register_tool("praisonai.memory.clear")
73
+ def memory_clear(session_id: Optional[str] = None) -> str:
74
+ """Clear memory contents."""
75
+ try:
76
+ from praisonaiagents.memory import Memory
77
+
78
+ memory = Memory()
79
+ if session_id:
80
+ memory.clear_session(session_id)
81
+ return f"Session {session_id} cleared"
82
+ else:
83
+ memory.clear_all()
84
+ return "All memory cleared"
85
+ except ImportError:
86
+ return "Error: Memory module not available"
87
+ except Exception as e:
88
+ return f"Error: {e}"
89
+
90
+ @register_tool("praisonai.memory.sessions")
91
+ def memory_sessions() -> str:
92
+ """List all memory sessions."""
93
+ try:
94
+ from praisonaiagents.memory import Memory
95
+
96
+ memory = Memory()
97
+ sessions = memory.list_sessions()
98
+ return str(sessions)
99
+ except ImportError:
100
+ return "Error: Memory module not available"
101
+ except Exception as e:
102
+ return f"Error: {e}"
103
+
104
+ logger.info("Registered memory MCP tools")