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,117 @@
1
+ # praisonai/inbuilt_tools/autogen_tools.py
2
+
3
+ import logging
4
+ import inspect
5
+
6
+ # Try to import praisonai_tools, but don't fail if not available
7
+ try:
8
+ from praisonai_tools import (
9
+ CodeDocsSearchTool, CSVSearchTool, DirectorySearchTool, DOCXSearchTool,
10
+ DirectoryReadTool, FileReadTool, TXTSearchTool, JSONSearchTool,
11
+ MDXSearchTool, PDFSearchTool, RagTool, ScrapeElementFromWebsiteTool,
12
+ ScrapeWebsiteTool, WebsiteSearchTool, XMLSearchTool,
13
+ YoutubeChannelSearchTool, YoutubeVideoSearchTool
14
+ )
15
+ TOOLS_AVAILABLE = True
16
+ except ImportError:
17
+ TOOLS_AVAILABLE = False
18
+
19
+ def create_autogen_tool_function(tool_class):
20
+ """
21
+ Create a function that wraps a tool for autogen.
22
+
23
+ Args:
24
+ tool_class: The tool class to wrap
25
+
26
+ Returns:
27
+ function: A function that can be used with autogen agents
28
+ """
29
+ if not TOOLS_AVAILABLE:
30
+ return None
31
+
32
+ def tool_function(assistant, user_proxy):
33
+ """
34
+ Wrapper function for the tool that works with autogen.
35
+
36
+ Args:
37
+ assistant: The autogen assistant agent
38
+ user_proxy: The autogen user proxy agent
39
+ """
40
+ tool_instance = tool_class()
41
+
42
+ # Get the tool's run method signature
43
+ sig = inspect.signature(tool_instance.run)
44
+ param_names = list(sig.parameters.keys())
45
+
46
+ def wrapped_function(*args, **kwargs):
47
+ try:
48
+ # Map positional arguments to named parameters
49
+ named_args = dict(zip(param_names, args))
50
+ # Combine with keyword arguments
51
+ all_args = {**named_args, **kwargs}
52
+ # Run the tool
53
+ result = tool_instance.run(**all_args)
54
+ return str(result)
55
+ except Exception as e:
56
+ logging.error(f"Error running {tool_class.__name__}: {str(e)}")
57
+ return f"Error: {str(e)}"
58
+
59
+ # Add the function to the assistant's function map
60
+ assistant.register_function(
61
+ function_map={
62
+ tool_class.__name__: wrapped_function
63
+ },
64
+ name_to_args={
65
+ tool_class.__name__: {
66
+ param: "" for param in param_names
67
+ }
68
+ },
69
+ description=tool_instance.__doc__ or f"Use {tool_class.__name__} to perform operations"
70
+ )
71
+
72
+ return tool_function if TOOLS_AVAILABLE else None
73
+
74
+ # Only create tool functions if praisonai_tools is available
75
+ if TOOLS_AVAILABLE:
76
+ # Create autogen wrapper functions for each tool
77
+ autogen_CSVSearchTool = create_autogen_tool_function(CSVSearchTool)
78
+ autogen_CodeDocsSearchTool = create_autogen_tool_function(CodeDocsSearchTool)
79
+ autogen_DirectorySearchTool = create_autogen_tool_function(DirectorySearchTool)
80
+ autogen_DOCXSearchTool = create_autogen_tool_function(DOCXSearchTool)
81
+ autogen_DirectoryReadTool = create_autogen_tool_function(DirectoryReadTool)
82
+ autogen_FileReadTool = create_autogen_tool_function(FileReadTool)
83
+ autogen_TXTSearchTool = create_autogen_tool_function(TXTSearchTool)
84
+ autogen_JSONSearchTool = create_autogen_tool_function(JSONSearchTool)
85
+ autogen_MDXSearchTool = create_autogen_tool_function(MDXSearchTool)
86
+ autogen_PDFSearchTool = create_autogen_tool_function(PDFSearchTool)
87
+ autogen_RagTool = create_autogen_tool_function(RagTool)
88
+ autogen_ScrapeElementFromWebsiteTool = create_autogen_tool_function(ScrapeElementFromWebsiteTool)
89
+ autogen_ScrapeWebsiteTool = create_autogen_tool_function(ScrapeWebsiteTool)
90
+ autogen_WebsiteSearchTool = create_autogen_tool_function(WebsiteSearchTool)
91
+ autogen_XMLSearchTool = create_autogen_tool_function(XMLSearchTool)
92
+ autogen_YoutubeChannelSearchTool = create_autogen_tool_function(YoutubeChannelSearchTool)
93
+ autogen_YoutubeVideoSearchTool = create_autogen_tool_function(YoutubeVideoSearchTool)
94
+
95
+ # Export all tool functions
96
+ __all__ = [
97
+ 'autogen_CSVSearchTool',
98
+ 'autogen_CodeDocsSearchTool',
99
+ 'autogen_DirectorySearchTool',
100
+ 'autogen_DOCXSearchTool',
101
+ 'autogen_DirectoryReadTool',
102
+ 'autogen_FileReadTool',
103
+ 'autogen_TXTSearchTool',
104
+ 'autogen_JSONSearchTool',
105
+ 'autogen_MDXSearchTool',
106
+ 'autogen_PDFSearchTool',
107
+ 'autogen_RagTool',
108
+ 'autogen_ScrapeElementFromWebsiteTool',
109
+ 'autogen_ScrapeWebsiteTool',
110
+ 'autogen_WebsiteSearchTool',
111
+ 'autogen_XMLSearchTool',
112
+ 'autogen_YoutubeChannelSearchTool',
113
+ 'autogen_YoutubeVideoSearchTool',
114
+ ]
115
+ else:
116
+ # If tools are not available, export an empty list
117
+ __all__ = []
@@ -0,0 +1,2 @@
1
+ # praisonai/inc/__init__.py
2
+ from .models import PraisonAIModel
@@ -0,0 +1,96 @@
1
+ def generate_config(
2
+ ollama_save=None,
3
+ huggingface_save=None,
4
+ train=None,
5
+ model_name=None,
6
+ hf_model_name=None,
7
+ ollama_model_name=None,
8
+ model_parameters=None,
9
+ max_seq_length=None,
10
+ load_in_4bit=None,
11
+ lora_r=None,
12
+ lora_target_modules=None,
13
+ lora_alpha=None,
14
+ lora_dropout=None,
15
+ lora_bias=None,
16
+ use_gradient_checkpointing=None,
17
+ random_state=None,
18
+ use_rslora=None,
19
+ loftq_config=None,
20
+ dataset=None,
21
+ dataset_text_field=None,
22
+ dataset_num_proc=None,
23
+ packing=None,
24
+ per_device_train_batch_size=None,
25
+ gradient_accumulation_steps=None,
26
+ warmup_steps=None,
27
+ num_train_epochs=None,
28
+ max_steps=None,
29
+ learning_rate=None,
30
+ logging_steps=None,
31
+ optim=None,
32
+ weight_decay=None,
33
+ lr_scheduler_type=None,
34
+ seed=None,
35
+ output_dir=None,
36
+ quantization_method=None
37
+ ):
38
+ """Generates the configuration for PraisonAI with dynamic overrides."""
39
+
40
+ config = {
41
+ "ollama_save": ollama_save or "true",
42
+ "huggingface_save": huggingface_save or "true",
43
+ "train": train or "true",
44
+
45
+ "model_name": model_name or "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit",
46
+ "hf_model_name": hf_model_name or "mervinpraison/llama-3.1-tamilan-8B-test",
47
+ "ollama_model": ollama_model_name or "mervinpraison/llama3.1-tamilan-test",
48
+ "model_parameters": model_parameters or "8b",
49
+
50
+ "dataset": dataset or [
51
+ {
52
+ "name": "yahma/alpaca-cleaned",
53
+ "split_type": "train",
54
+ "processing_func": "format_prompts",
55
+ "rename": {"input": "input", "output": "output", "instruction": "instruction"},
56
+ "filter_data": False,
57
+ "filter_column_value": "id",
58
+ "filter_value": "alpaca",
59
+ "num_samples": 20000
60
+ }
61
+ ],
62
+
63
+ "dataset_text_field": dataset_text_field or "text",
64
+ "dataset_num_proc": dataset_num_proc or 2,
65
+ "packing": packing or False,
66
+
67
+ "max_seq_length": max_seq_length or 2048,
68
+ "load_in_4bit": load_in_4bit or True,
69
+ "lora_r": lora_r or 16,
70
+ "lora_target_modules": lora_target_modules or [
71
+ "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"
72
+ ],
73
+ "lora_alpha": lora_alpha or 16,
74
+ "lora_dropout": lora_dropout or 0,
75
+ "lora_bias": lora_bias or "none",
76
+ "use_gradient_checkpointing": use_gradient_checkpointing or "unsloth",
77
+ "random_state": random_state or 3407,
78
+ "use_rslora": use_rslora or False,
79
+ "loftq_config": loftq_config or None,
80
+
81
+ "per_device_train_batch_size": per_device_train_batch_size or 2,
82
+ "gradient_accumulation_steps": gradient_accumulation_steps or 2,
83
+ "warmup_steps": warmup_steps or 5,
84
+ "num_train_epochs": num_train_epochs or 1,
85
+ "max_steps": max_steps or 10,
86
+ "learning_rate": learning_rate or 2.0e-4,
87
+ "logging_steps": logging_steps or 1,
88
+ "optim": optim or "adamw_8bit",
89
+ "weight_decay": weight_decay or 0.01,
90
+ "lr_scheduler_type": lr_scheduler_type or "linear",
91
+ "seed": seed or 3407,
92
+ "output_dir": output_dir or "outputs",
93
+
94
+ "quantization_method": quantization_method or ["q4_k_m"]
95
+ }
96
+ return config
@@ -0,0 +1,155 @@
1
+ # praisonai/inc/models.py
2
+ import os
3
+ import logging
4
+ from urllib.parse import urlparse
5
+ logger = logging.getLogger(__name__)
6
+ _loglevel = os.environ.get('LOGLEVEL', 'INFO').strip().upper() or 'INFO'
7
+ logging.basicConfig(level=_loglevel, format='%(asctime)s - %(levelname)s - %(message)s')
8
+
9
+ # Constants
10
+ LOCAL_SERVER_API_KEY_PLACEHOLDER = "not-needed"
11
+
12
+ # Conditionally import modules based on availability
13
+ try:
14
+ from langchain_openai import ChatOpenAI # pip install langchain-openai
15
+ OPENAI_AVAILABLE = True
16
+ except ImportError:
17
+ OPENAI_AVAILABLE = False
18
+
19
+ try:
20
+ from langchain_google_genai import ChatGoogleGenerativeAI # pip install langchain-google-genai
21
+ GOOGLE_GENAI_AVAILABLE = True
22
+ except ImportError:
23
+ GOOGLE_GENAI_AVAILABLE = False
24
+
25
+ try:
26
+ from langchain_anthropic import ChatAnthropic # pip install langchain-anthropic
27
+ ANTHROPIC_AVAILABLE = True
28
+ except ImportError:
29
+ ANTHROPIC_AVAILABLE = False
30
+
31
+ try:
32
+ from langchain_cohere import ChatCohere # pip install langchain-cohere
33
+ COHERE_AVAILABLE = True
34
+ except ImportError:
35
+ COHERE_AVAILABLE = False
36
+
37
+ class PraisonAIModel:
38
+ def __init__(self, model=None, api_key_var=None, base_url=None, api_key=None):
39
+ """
40
+ Initializes the PraisonAIModel with the provided parameters or environment variables.
41
+
42
+ Args:
43
+ model (str, optional): The name of the OpenAI model. Defaults to None.
44
+ api_key_var (str, optional): The environment variable name for the API key. Defaults to None.
45
+ base_url (str, optional): The base URL for the OpenAI API. Defaults to None.
46
+ api_key (str, optional): The explicit API key to use. Takes precedence over environment variables. Defaults to None.
47
+ """
48
+ self.model = model or os.getenv("OPENAI_MODEL_NAME", "gpt-5-nano")
49
+ if self.model.startswith("openai/"):
50
+ self.api_key_var = "OPENAI_API_KEY"
51
+ self.base_url = base_url or "https://api.openai.com/v1"
52
+ self.model_name = self.model.replace("openai/", "")
53
+ elif self.model.startswith("groq/"):
54
+ self.api_key_var = "GROQ_API_KEY"
55
+ self.base_url = base_url or "https://api.groq.com/openai/v1"
56
+ self.model_name = self.model.replace("groq/", "")
57
+ elif self.model.startswith("cohere/"):
58
+ self.api_key_var = "COHERE_API_KEY"
59
+ self.base_url = ""
60
+ self.model_name = self.model.replace("cohere/", "")
61
+ elif self.model.startswith("ollama/"):
62
+ self.api_key_var = "OLLAMA_API_KEY"
63
+ self.base_url = base_url or "http://localhost:11434/v1"
64
+ self.model_name = self.model.replace("ollama/", "")
65
+ elif self.model.startswith("anthropic/"):
66
+ self.api_key_var = "ANTHROPIC_API_KEY"
67
+ self.base_url = ""
68
+ self.model_name = self.model.replace("anthropic/", "")
69
+ elif self.model.startswith("google/"):
70
+ self.api_key_var = "GOOGLE_API_KEY"
71
+ self.base_url = ""
72
+ self.model_name = self.model.replace("google/", "")
73
+ elif self.model.startswith("openrouter/"):
74
+ self.api_key_var = "OPENROUTER_API_KEY"
75
+ self.base_url = base_url or "https://openrouter.ai/api/v1"
76
+ self.model_name = self.model.replace("openrouter/", "")
77
+ else:
78
+ self.api_key_var = api_key_var or "OPENAI_API_KEY"
79
+ self.base_url = base_url or os.environ.get("OPENAI_API_BASE") or os.environ.get("OPENAI_BASE_URL") or "https://api.openai.com/v1"
80
+ self.model_name = self.model
81
+ logger.debug(f"Initialized PraisonAIModel with model {self.model_name}, api_key_var {self.api_key_var}, and base_url {self.base_url}")
82
+
83
+ # Get API key from environment
84
+ self.api_key = api_key or os.environ.get(self.api_key_var)
85
+
86
+ # For local servers, allow placeholder API key if base_url is set to non-OpenAI endpoint
87
+ if not self.api_key and self.base_url:
88
+ parsed_url = urlparse(self.base_url)
89
+ is_local = (parsed_url.hostname in ["localhost", "127.0.0.1"] or
90
+ "api.openai.com" not in self.base_url)
91
+ if is_local:
92
+ self.api_key = LOCAL_SERVER_API_KEY_PLACEHOLDER
93
+
94
+ if not self.api_key:
95
+ raise ValueError(
96
+ f"{self.api_key_var} environment variable is required for the default OpenAI service. "
97
+ f"For local servers, set {self.api_key_var}='{LOCAL_SERVER_API_KEY_PLACEHOLDER}' and OPENAI_API_BASE to your local endpoint."
98
+ )
99
+
100
+
101
+ def get_model(self):
102
+ """
103
+ Returns an instance of the langchain Chat client with the configured parameters.
104
+
105
+ Returns:
106
+ Chat: An instance of the langchain Chat client.
107
+ """
108
+ if self.model.startswith("google/"):
109
+ if GOOGLE_GENAI_AVAILABLE:
110
+ return ChatGoogleGenerativeAI(
111
+ model=self.model_name,
112
+ google_api_key=self.api_key
113
+ )
114
+ else:
115
+ raise ImportError(
116
+ "Required Langchain Integration 'langchain-google-genai' not found. "
117
+ "Please install with 'pip install langchain-google-genai'"
118
+ )
119
+ elif self.model.startswith("cohere/"):
120
+ if COHERE_AVAILABLE:
121
+ return ChatCohere(
122
+ model=self.model_name,
123
+ cohere_api_key=self.api_key,
124
+ )
125
+ else:
126
+ raise ImportError(
127
+ "Required Langchain Integration 'langchain-cohere' not found. "
128
+ "Please install with 'pip install langchain-cohere'"
129
+ )
130
+ elif self.model.startswith("anthropic/"):
131
+ if ANTHROPIC_AVAILABLE:
132
+ return ChatAnthropic(
133
+ model=self.model_name,
134
+ anthropic_api_key=self.api_key,
135
+ )
136
+ else:
137
+ raise ImportError(
138
+ "Required Langchain Integration 'langchain-anthropic' not found. "
139
+ "Please install with 'pip install langchain-anthropic'"
140
+ )
141
+ elif OPENAI_AVAILABLE:
142
+ chat_kwargs = {
143
+ "model": self.model_name,
144
+ "api_key": self.api_key,
145
+ "base_url": self.base_url,
146
+ }
147
+ # Certain OpenAI models (e.g., gpt-5-* family) only allow temperature=1
148
+ if isinstance(self.model_name, str) and self.model_name.startswith("gpt-5"):
149
+ chat_kwargs["temperature"] = 1
150
+ return ChatOpenAI(**chat_kwargs)
151
+ else:
152
+ raise ImportError(
153
+ "Required Langchain Integration 'langchain-openai' not found. "
154
+ "Please install with 'pip install langchain-openai'"
155
+ )
@@ -0,0 +1,56 @@
1
+ """
2
+ PraisonAI Integrations - External CLI tool integrations.
3
+
4
+ This module provides integrations with external AI coding CLI tools:
5
+ - Claude Code CLI
6
+ - Gemini CLI
7
+ - OpenAI Codex CLI
8
+ - Cursor CLI
9
+
10
+ All integrations use lazy loading to avoid performance impact.
11
+
12
+ Usage:
13
+ from praisonai.integrations import ClaudeCodeIntegration, GeminiCLIIntegration
14
+
15
+ # Create integration
16
+ claude = ClaudeCodeIntegration(workspace="/path/to/project")
17
+
18
+ # Use as agent tool
19
+ tool = claude.as_tool()
20
+
21
+ # Or execute directly
22
+ result = await claude.execute("Refactor this code")
23
+ """
24
+
25
+ # Lazy imports to avoid performance impact
26
+ __all__ = [
27
+ 'BaseCLIIntegration',
28
+ 'ClaudeCodeIntegration',
29
+ 'GeminiCLIIntegration',
30
+ 'CodexCLIIntegration',
31
+ 'CursorCLIIntegration',
32
+ 'get_available_integrations',
33
+ ]
34
+
35
+
36
+ def __getattr__(name):
37
+ """Lazy load integrations to minimize import overhead."""
38
+ if name == 'BaseCLIIntegration':
39
+ from .base import BaseCLIIntegration
40
+ return BaseCLIIntegration
41
+ elif name == 'ClaudeCodeIntegration':
42
+ from .claude_code import ClaudeCodeIntegration
43
+ return ClaudeCodeIntegration
44
+ elif name == 'GeminiCLIIntegration':
45
+ from .gemini_cli import GeminiCLIIntegration
46
+ return GeminiCLIIntegration
47
+ elif name == 'CodexCLIIntegration':
48
+ from .codex_cli import CodexCLIIntegration
49
+ return CodexCLIIntegration
50
+ elif name == 'CursorCLIIntegration':
51
+ from .cursor_cli import CursorCLIIntegration
52
+ return CursorCLIIntegration
53
+ elif name == 'get_available_integrations':
54
+ from .base import get_available_integrations
55
+ return get_available_integrations
56
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")