PraisonAI 4.7.9__tar.gz → 4.7.10__tar.gz

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 (564) hide show
  1. {praisonai-4.7.9 → praisonai-4.7.10}/PKG-INFO +9 -9
  2. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/PKG-INFO +9 -9
  3. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/SOURCES.txt +1 -0
  4. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/requires.txt +8 -8
  5. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_entrypoint.py +16 -0
  6. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/adapters/readers.py +23 -13
  7. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/adapters/rerankers.py +14 -7
  8. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/adapters/retrievers.py +16 -7
  9. praisonai-4.7.10/praisonai/integrations/_managed_base.py +87 -0
  10. praisonai-4.7.10/praisonai/integrations/backend_registry.py +129 -0
  11. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/managed_agents.py +27 -41
  12. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/managed_local.py +34 -45
  13. praisonai-4.7.10/praisonai/version.py +1 -0
  14. {praisonai-4.7.9 → praisonai-4.7.10}/pyproject.toml +8 -8
  15. praisonai-4.7.9/praisonai/integrations/backend_registry.py +0 -87
  16. praisonai-4.7.9/praisonai/version.py +0 -1
  17. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/dependency_links.txt +0 -0
  18. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/entry_points.txt +0 -0
  19. {praisonai-4.7.9 → praisonai-4.7.10}/PraisonAI.egg-info/top_level.txt +0 -0
  20. {praisonai-4.7.9 → praisonai-4.7.10}/README.md +0 -0
  21. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/__init__.py +0 -0
  22. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/__main__.py +0 -0
  23. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_api_auth.py +0 -0
  24. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_approval_spec.py +0 -0
  25. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_async_bridge.py +0 -0
  26. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_bootstrap.py +0 -0
  27. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_dev/__init__.py +0 -0
  28. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_dev/api_md.py +0 -0
  29. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_framework_availability.py +0 -0
  30. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_lazy_cache.py +0 -0
  31. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_logging.py +0 -0
  32. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_registry.py +0 -0
  33. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/_safe_loader.py +0 -0
  34. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/acp/__init__.py +0 -0
  35. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/acp/config.py +0 -0
  36. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/acp/safe_edit.py +0 -0
  37. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/acp/server.py +0 -0
  38. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/acp/session.py +0 -0
  39. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/adapters/__init__.py +0 -0
  40. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/adapters/vector_stores.py +0 -0
  41. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/agent.py +0 -0
  42. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/agent_scheduler.py +0 -0
  43. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/agents_generator.py +0 -0
  44. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/api/agent_invoke.py +0 -0
  45. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/api/call.py +0 -0
  46. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/app/__init__.py +0 -0
  47. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/app/agentos.py +0 -0
  48. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/async_agent_scheduler.py +0 -0
  49. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/audit/__init__.py +0 -0
  50. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/audit/agent_centric.py +0 -0
  51. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/auto.py +0 -0
  52. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/bots/__init__.py +0 -0
  53. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/browser/__init__.py +0 -0
  54. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/__init__.py +0 -0
  55. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/a2a.py +0 -0
  56. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/assistants.py +0 -0
  57. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/audio.py +0 -0
  58. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/batches.py +0 -0
  59. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/completions.py +0 -0
  60. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/container_files.py +0 -0
  61. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/containers.py +0 -0
  62. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/embeddings.py +0 -0
  63. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/files.py +0 -0
  64. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/fine_tuning.py +0 -0
  65. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/guardrails.py +0 -0
  66. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/images.py +0 -0
  67. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/mcp.py +0 -0
  68. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/messages.py +0 -0
  69. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/moderations.py +0 -0
  70. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/ocr.py +0 -0
  71. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/passthrough.py +0 -0
  72. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/rag.py +0 -0
  73. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/realtime.py +0 -0
  74. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/rerank.py +0 -0
  75. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/responses.py +0 -0
  76. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/search.py +0 -0
  77. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/skills.py +0 -0
  78. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/vector_store_files.py +0 -0
  79. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/vector_stores.py +0 -0
  80. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/capabilities/videos.py +0 -0
  81. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/claw/__init__.py +0 -0
  82. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/__init__.py +0 -0
  83. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/_paths.py +0 -0
  84. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/_shim.py +0 -0
  85. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/_warnings.py +0 -0
  86. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/app.py +0 -0
  87. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/approval_backend.py +0 -0
  88. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/branding.py +0 -0
  89. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/__init__.py +0 -0
  90. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/_profiling.py +0 -0
  91. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/acp.py +0 -0
  92. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/agent.py +0 -0
  93. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/agents.py +0 -0
  94. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/app.py +0 -0
  95. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/attach.py +0 -0
  96. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/audit.py +0 -0
  97. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/auth.py +0 -0
  98. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/batch.py +0 -0
  99. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/benchmark.py +0 -0
  100. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/bot.py +0 -0
  101. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/browser.py +0 -0
  102. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/call.py +0 -0
  103. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/chat.py +0 -0
  104. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/checkpoint.py +0 -0
  105. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/claw.py +0 -0
  106. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/code.py +0 -0
  107. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/command.py +0 -0
  108. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/commit.py +0 -0
  109. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/completion.py +0 -0
  110. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/config.py +0 -0
  111. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/context.py +0 -0
  112. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/daemon.py +0 -0
  113. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/dashboard.py +0 -0
  114. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/debug.py +0 -0
  115. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/deploy.py +0 -0
  116. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/diag.py +0 -0
  117. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/docs.py +0 -0
  118. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/doctor.py +0 -0
  119. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/endpoints.py +0 -0
  120. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/environment.py +0 -0
  121. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/eval.py +0 -0
  122. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/examples.py +0 -0
  123. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/flow.py +0 -0
  124. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/gateway.py +0 -0
  125. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/github.py +0 -0
  126. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/hooks.py +0 -0
  127. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/identity.py +0 -0
  128. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/init.py +0 -0
  129. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/kanban.py +0 -0
  130. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/knowledge.py +0 -0
  131. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/langextract.py +0 -0
  132. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/langfuse.py +0 -0
  133. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/loop.py +0 -0
  134. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/lsp.py +0 -0
  135. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/managed.py +0 -0
  136. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/mcp.py +0 -0
  137. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/memory.py +0 -0
  138. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/mint_link.py +0 -0
  139. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/models.py +0 -0
  140. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/n8n.py +0 -0
  141. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/obs.py +0 -0
  142. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/onboard.py +0 -0
  143. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/package.py +0 -0
  144. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/pairing.py +0 -0
  145. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/paths.py +0 -0
  146. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/permissions.py +0 -0
  147. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/plugins.py +0 -0
  148. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/port.py +0 -0
  149. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/profile.py +0 -0
  150. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/publish.py +0 -0
  151. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/rag.py +0 -0
  152. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/realtime.py +0 -0
  153. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/recipe.py +0 -0
  154. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/registry.py +0 -0
  155. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/replay.py +0 -0
  156. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/research.py +0 -0
  157. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/retrieval.py +0 -0
  158. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/rules.py +0 -0
  159. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/run.py +0 -0
  160. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/sandbox.py +0 -0
  161. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/schedule.py +0 -0
  162. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/serve.py +0 -0
  163. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/session.py +0 -0
  164. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/setup.py +0 -0
  165. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/skills.py +0 -0
  166. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/standardise.py +0 -0
  167. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/templates.py +0 -0
  168. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/test.py +0 -0
  169. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/todo.py +0 -0
  170. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/tools.py +0 -0
  171. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/traces.py +0 -0
  172. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/tracker.py +0 -0
  173. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/train.py +0 -0
  174. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/ui.py +0 -0
  175. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/up.py +0 -0
  176. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/validate.py +0 -0
  177. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/version.py +0 -0
  178. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/commands/workflow.py +0 -0
  179. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/config_loader.py +0 -0
  180. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/configuration/__init__.py +0 -0
  181. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/configuration/config.schema.json +0 -0
  182. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/execution/__init__.py +0 -0
  183. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/fallback_schema.py +0 -0
  184. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/__init__.py +0 -0
  185. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/acp.py +0 -0
  186. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/agent_scheduler.py +0 -0
  187. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/agent_tools.py +0 -0
  188. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/approval.py +0 -0
  189. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/background.py +0 -0
  190. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/bots_cli.py +0 -0
  191. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/deploy.py +0 -0
  192. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/endpoints.py +0 -0
  193. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/eval.py +0 -0
  194. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/gateway.py +0 -0
  195. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/ollama.py +0 -0
  196. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/onboard.py +0 -0
  197. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/persistence.py +0 -0
  198. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/recipe.py +0 -0
  199. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/recipe_optimizer.py +0 -0
  200. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/registry.py +0 -0
  201. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/sandbox_cli.py +0 -0
  202. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/serve.py +0 -0
  203. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/templates.py +0 -0
  204. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/tools.py +0 -0
  205. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/tui/__init__.py +0 -0
  206. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/tui/app.py +0 -0
  207. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/features/workflow.py +0 -0
  208. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/interactive/__init__.py +0 -0
  209. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/interactive/async_tui.py +0 -0
  210. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/interactive/config.py +0 -0
  211. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/interactive/core.py +0 -0
  212. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/interactive/events.py +0 -0
  213. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/langfuse_client.py +0 -0
  214. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/__init__.py +0 -0
  215. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/direct_prompt.py +0 -0
  216. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
  217. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
  218. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
  219. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/framework_run.py +0 -0
  220. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
  221. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/interactive_legacy.py +0 -0
  222. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
  223. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/legacy/workflow_commands.py +0 -0
  224. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/main.py +0 -0
  225. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/output/__init__.py +0 -0
  226. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/schedule_cli.py +0 -0
  227. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/schema_provider.py +0 -0
  228. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/session/__init__.py +0 -0
  229. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/state/__init__.py +0 -0
  230. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/ui/__init__.py +0 -0
  231. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/unified_schema.py +0 -0
  232. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli/utils/__init__.py +0 -0
  233. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/cli_backends/__init__.py +0 -0
  234. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/__init__.py +0 -0
  235. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/agent_tools.py +0 -0
  236. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/diff/__init__.py +0 -0
  237. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/diff/diff_strategy.py +0 -0
  238. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/__init__.py +0 -0
  239. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/apply_diff.py +0 -0
  240. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/execute_command.py +0 -0
  241. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/list_files.py +0 -0
  242. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/read_file.py +0 -0
  243. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/search_replace.py +0 -0
  244. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/tools/write_file.py +0 -0
  245. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/utils/__init__.py +0 -0
  246. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/utils/file_utils.py +0 -0
  247. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/utils/ignore_utils.py +0 -0
  248. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/code/utils/text_utils.py +0 -0
  249. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/config/__init__.py +0 -0
  250. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/config/agents.schema.json +0 -0
  251. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/config/schema.py +0 -0
  252. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/config/validator.py +0 -0
  253. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/__init__.py +0 -0
  254. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/_storage_path.py +0 -0
  255. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/artifact_store.py +0 -0
  256. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/config.py +0 -0
  257. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/history_store.py +0 -0
  258. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/queue.py +0 -0
  259. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/setup.py +0 -0
  260. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/context/terminal_logger.py +0 -0
  261. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/daemon/__init__.py +0 -0
  262. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/db/__init__.py +0 -0
  263. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/db/adapter.py +0 -0
  264. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/deploy/__init__.py +0 -0
  265. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/__init__.py +0 -0
  266. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/a2u_server.py +0 -0
  267. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/discovery.py +0 -0
  268. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/__init__.py +0 -0
  269. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/a2a.py +0 -0
  270. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/a2u.py +0 -0
  271. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/agents_api.py +0 -0
  272. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/base.py +0 -0
  273. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/mcp.py +0 -0
  274. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/openai_compat.py +0 -0
  275. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/recipe.py +0 -0
  276. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  277. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/registry.py +0 -0
  278. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/endpoints/server.py +0 -0
  279. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/__init__.py +0 -0
  280. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/client.py +0 -0
  281. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  282. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  283. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/components/__init__.py +0 -0
  284. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/converter.py +0 -0
  285. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/flow/helpers.py +0 -0
  286. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/__init__.py +0 -0
  287. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/_config_builder.py +0 -0
  288. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  289. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/base.py +0 -0
  290. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  291. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  292. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/registry.py +0 -0
  293. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/validators.py +0 -0
  294. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/framework_adapters/workflow_framework.py +0 -0
  295. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/gateway/__init__.py +0 -0
  296. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/inbuilt_tools/__init__.py +0 -0
  297. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  298. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/inc/__init__.py +0 -0
  299. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/inc/config.py +0 -0
  300. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/inc/models.py +0 -0
  301. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/__init__.py +0 -0
  302. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/__init__.py +0 -0
  303. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  304. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/hooks_query.py +0 -0
  305. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  306. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/schedules_runner.py +0 -0
  307. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/usage_bridge.py +0 -0
  308. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/bridges/workflows_service.py +0 -0
  309. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/context_files.py +0 -0
  310. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/gateway_host.py +0 -0
  311. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/host_app.py +0 -0
  312. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/pages/__init__.py +0 -0
  313. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/pages/bot_health.py +0 -0
  314. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integration/pages/workflow_runs.py +0 -0
  315. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/__init__.py +0 -0
  316. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/_cli_loaders.py +0 -0
  317. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/_session_info.py +0 -0
  318. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/_tool_aliases.py +0 -0
  319. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/base.py +0 -0
  320. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/claude_code.py +0 -0
  321. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/codex_cli.py +0 -0
  322. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/__init__.py +0 -0
  323. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/_sync_base.py +0 -0
  324. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/daytona.py +0 -0
  325. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/docker.py +0 -0
  326. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/e2b.py +0 -0
  327. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/flyio.py +0 -0
  328. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/local.py +0 -0
  329. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/modal_compute.py +0 -0
  330. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute/tenki.py +0 -0
  331. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/compute_managed_agent.py +0 -0
  332. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/cursor_cli.py +0 -0
  333. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/db_session_adapter.py +0 -0
  334. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/gemini_cli.py +0 -0
  335. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/hosted_agent.py +0 -0
  336. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/local_agent.py +0 -0
  337. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/registry.py +0 -0
  338. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/integrations/sandboxed_agent.py +0 -0
  339. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/__init__.py +0 -0
  340. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/executor.py +0 -0
  341. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/models.py +0 -0
  342. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/path_validation.py +0 -0
  343. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/router.py +0 -0
  344. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/server.py +0 -0
  345. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/jobs/store.py +0 -0
  346. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/kanban/__init__.py +0 -0
  347. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/__init__.py +0 -0
  348. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/catalogue.py +0 -0
  349. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/config.py +0 -0
  350. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/credentials.py +0 -0
  351. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/env.py +0 -0
  352. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/gateways.py +0 -0
  353. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/llm/registry.py +0 -0
  354. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/mcp_server/__init__.py +0 -0
  355. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/n8n/__init__.py +0 -0
  356. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/n8n/client.py +0 -0
  357. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/n8n/converter.py +0 -0
  358. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/n8n/preview.py +0 -0
  359. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/n8n/reverse_converter.py +0 -0
  360. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/observability/__init__.py +0 -0
  361. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/observability/hooks.py +0 -0
  362. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/observability/langextract.py +0 -0
  363. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/observability/langfuse.py +0 -0
  364. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/__init__.py +0 -0
  365. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/_valkey_client.py +0 -0
  366. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/config.py +0 -0
  367. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/__init__.py +0 -0
  368. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/_ops.py +0 -0
  369. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/_sql_base.py +0 -0
  370. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  371. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/async_mysql.py +0 -0
  372. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/async_postgres.py +0 -0
  373. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  374. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/base.py +0 -0
  375. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/json_store.py +0 -0
  376. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/mysql.py +0 -0
  377. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/postgres.py +0 -0
  378. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/singlestore.py +0 -0
  379. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/sqlite.py +0 -0
  380. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/supabase.py +0 -0
  381. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/surrealdb.py +0 -0
  382. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  383. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/conversation/turso.py +0 -0
  384. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/factory.py +0 -0
  385. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/hooks/__init__.py +0 -0
  386. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  387. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/__init__.py +0 -0
  388. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/base.py +0 -0
  389. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/cassandra.py +0 -0
  390. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/chroma.py +0 -0
  391. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  392. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  393. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/couchbase.py +0 -0
  394. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/lancedb.py +0 -0
  395. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  396. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  397. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  398. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/milvus.py +0 -0
  399. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  400. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/pgvector.py +0 -0
  401. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/pinecone.py +0 -0
  402. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/qdrant.py +0 -0
  403. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  404. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  405. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  406. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  407. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  408. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/knowledge/weaviate.py +0 -0
  409. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/migrations/__init__.py +0 -0
  410. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/migrations/manager.py +0 -0
  411. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/orchestrator.py +0 -0
  412. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/registry.py +0 -0
  413. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/__init__.py +0 -0
  414. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/async_mongodb.py +0 -0
  415. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/base.py +0 -0
  416. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/dynamodb.py +0 -0
  417. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/firestore.py +0 -0
  418. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/gcs.py +0 -0
  419. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/memory.py +0 -0
  420. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/mongodb.py +0 -0
  421. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/redis.py +0 -0
  422. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/upstash.py +0 -0
  423. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/persistence/state/valkey.py +0 -0
  424. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/profiler.py +0 -0
  425. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/push/__init__.py +0 -0
  426. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/push/client.py +0 -0
  427. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/push/transports.py +0 -0
  428. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/__init__.py +0 -0
  429. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/bridge.py +0 -0
  430. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/core.py +0 -0
  431. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/exceptions.py +0 -0
  432. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/history.py +0 -0
  433. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/models.py +0 -0
  434. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/operations.py +0 -0
  435. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/policy.py +0 -0
  436. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/registry.py +0 -0
  437. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/runtime.py +0 -0
  438. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/security.py +0 -0
  439. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/serve.py +0 -0
  440. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/recipe/server.py +0 -0
  441. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/__init__.py +0 -0
  442. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/analyzer.py +0 -0
  443. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/applier.py +0 -0
  444. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/judge.py +0 -0
  445. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/plan.py +0 -0
  446. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/player.py +0 -0
  447. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/reader.py +0 -0
  448. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/storage.py +0 -0
  449. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/replay/writer.py +0 -0
  450. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/runtime/__init__.py +0 -0
  451. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/runtime/__main__.py +0 -0
  452. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/sandbox/__init__.py +0 -0
  453. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/sandbox/_registry.py +0 -0
  454. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/__init__.py +0 -0
  455. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/_base_scheduler.py +0 -0
  456. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/_delivery.py +0 -0
  457. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/_dispatch.py +0 -0
  458. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/agent_scheduler.py +0 -0
  459. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  460. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/base.py +0 -0
  461. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  462. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/condition_gate.py +0 -0
  463. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/daemon_manager.py +0 -0
  464. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/deployment.py +0 -0
  465. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/executor.py +0 -0
  466. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/run_policy.py +0 -0
  467. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/shared.py +0 -0
  468. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/state_manager.py +0 -0
  469. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/suggestion_engine.py +0 -0
  470. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/scheduler/yaml_loader.py +0 -0
  471. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/security/__init__.py +0 -0
  472. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/security/audit.py +0 -0
  473. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/security/injection.py +0 -0
  474. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/security/protected.py +0 -0
  475. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/setup/__init__.py +0 -0
  476. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/setup/build.py +0 -0
  477. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/setup/post_install.py +0 -0
  478. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/setup/setup_conda_env.py +0 -0
  479. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/setup.py +0 -0
  480. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/__init__.py +0 -0
  481. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/ai_generator.py +0 -0
  482. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/config.py +0 -0
  483. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/dedupe.py +0 -0
  484. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/discovery.py +0 -0
  485. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/drift.py +0 -0
  486. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/engine.py +0 -0
  487. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/example_verifier.py +0 -0
  488. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/models.py +0 -0
  489. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/reports.py +0 -0
  490. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/templates.py +0 -0
  491. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/undo_redo.py +0 -0
  492. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/standardise/validator.py +0 -0
  493. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/__init__.py +0 -0
  494. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/dynamodb_adapter.py +0 -0
  495. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/mongodb_adapter.py +0 -0
  496. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/postgresql_adapter.py +0 -0
  497. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/redis_adapter.py +0 -0
  498. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/storage/valkey_adapter.py +0 -0
  499. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/__init__.py +0 -0
  500. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/batch_source.py +0 -0
  501. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/cli_docs_source.py +0 -0
  502. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/discovery.py +0 -0
  503. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/docs_source.py +0 -0
  504. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/examples_source.py +0 -0
  505. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/executor.py +0 -0
  506. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/models.py +0 -0
  507. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/report_viewer.py +0 -0
  508. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/reporter.py +0 -0
  509. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/suite_runner/runner.py +0 -0
  510. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/__init__.py +0 -0
  511. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/_tool_sources.py +0 -0
  512. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/cache.py +0 -0
  513. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/dependency_checker.py +0 -0
  514. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/discovery.py +0 -0
  515. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/loader.py +0 -0
  516. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/registry.py +0 -0
  517. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/resolver.py +0 -0
  518. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/security.py +0 -0
  519. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/tool_override.py +0 -0
  520. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/templates/tools_doctor.py +0 -0
  521. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tool_registry.py +0 -0
  522. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tool_resolver.py +0 -0
  523. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/__init__.py +0 -0
  524. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/audio.py +0 -0
  525. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/glob_tool.py +0 -0
  526. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/grep_tool.py +0 -0
  527. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/kanban_tools.py +0 -0
  528. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/multiedit.py +0 -0
  529. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/tools/skill_manage.py +0 -0
  530. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/train/__init__.py +0 -0
  531. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/train.py +0 -0
  532. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/train_vision.py +0 -0
  533. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui/_aiui_datastore.py +0 -0
  534. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui/_external_agents.py +0 -0
  535. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui/context.py +0 -0
  536. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui/database_config.py +0 -0
  537. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_agents/__init__.py +0 -0
  538. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_agents/default_app.py +0 -0
  539. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_bot/__init__.py +0 -0
  540. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_bot/default_app.py +0 -0
  541. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_chat/__init__.py +0 -0
  542. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_chat/default_app.py +0 -0
  543. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_dashboard/__init__.py +0 -0
  544. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_dashboard/default_app.py +0 -0
  545. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_realtime/__init__.py +0 -0
  546. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/ui_realtime/default_app.py +0 -0
  547. {praisonai-4.7.9 → praisonai-4.7.10}/praisonai/upload_vision.py +0 -0
  548. {praisonai-4.7.9 → praisonai-4.7.10}/setup.cfg +0 -0
  549. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test.py +0 -0
  550. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_agents_playbook.py +0 -0
  551. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_approval_system.py +0 -0
  552. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_basic.py +0 -0
  553. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_cli_features.py +0 -0
  554. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_custom_tools_fix.py +0 -0
  555. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_double_api_fix.py +0 -0
  556. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_n8n_agent_invoke.py +0 -0
  557. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_n8n_cli_feature.py +0 -0
  558. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_n8n_integration.py +0 -0
  559. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_phase2_refactor.py +0 -0
  560. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_recipe.py +0 -0
  561. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_registry.py +0 -0
  562. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_runner.py +0 -0
  563. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_sandboxed_agent_compatibility.py +0 -0
  564. {praisonai-4.7.9 → praisonai-4.7.10}/tests/test_serve_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.7.9
3
+ Version: 4.7.10
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.7.7
15
- Requires-Dist: praisonai-code>=0.1.6
16
- Requires-Dist: praisonai-bot>=0.1.6
17
- Requires-Dist: praisonai-train>=0.1.6
18
- Requires-Dist: praisonai-browser>=0.1.6
19
- Requires-Dist: praisonai-mcp>=0.1.8
20
- Requires-Dist: praisonai-sandbox>=0.1.6
21
- Requires-Dist: praisonai-deploy>=0.1.6
14
+ Requires-Dist: praisonaiagents>=1.7.8
15
+ Requires-Dist: praisonai-code>=0.1.7
16
+ Requires-Dist: praisonai-bot>=0.1.7
17
+ Requires-Dist: praisonai-train>=0.1.7
18
+ Requires-Dist: praisonai-browser>=0.1.7
19
+ Requires-Dist: praisonai-mcp>=0.1.9
20
+ Requires-Dist: praisonai-sandbox>=0.1.7
21
+ Requires-Dist: praisonai-deploy>=0.1.7
22
22
  Requires-Dist: python-dotenv>=0.19.0
23
23
  Requires-Dist: litellm<2,>=1.83.14
24
24
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.7.9
3
+ Version: 4.7.10
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,14 +11,14 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.7.7
15
- Requires-Dist: praisonai-code>=0.1.6
16
- Requires-Dist: praisonai-bot>=0.1.6
17
- Requires-Dist: praisonai-train>=0.1.6
18
- Requires-Dist: praisonai-browser>=0.1.6
19
- Requires-Dist: praisonai-mcp>=0.1.8
20
- Requires-Dist: praisonai-sandbox>=0.1.6
21
- Requires-Dist: praisonai-deploy>=0.1.6
14
+ Requires-Dist: praisonaiagents>=1.7.8
15
+ Requires-Dist: praisonai-code>=0.1.7
16
+ Requires-Dist: praisonai-bot>=0.1.7
17
+ Requires-Dist: praisonai-train>=0.1.7
18
+ Requires-Dist: praisonai-browser>=0.1.7
19
+ Requires-Dist: praisonai-mcp>=0.1.9
20
+ Requires-Dist: praisonai-sandbox>=0.1.7
21
+ Requires-Dist: praisonai-deploy>=0.1.7
22
22
  Requires-Dist: python-dotenv>=0.19.0
23
23
  Requires-Dist: litellm<2,>=1.83.14
24
24
  Requires-Dist: PyYAML>=6.0
@@ -314,6 +314,7 @@ praisonai/integration/pages/bot_health.py
314
314
  praisonai/integration/pages/workflow_runs.py
315
315
  praisonai/integrations/__init__.py
316
316
  praisonai/integrations/_cli_loaders.py
317
+ praisonai/integrations/_managed_base.py
317
318
  praisonai/integrations/_session_info.py
318
319
  praisonai/integrations/_tool_aliases.py
319
320
  praisonai/integrations/backend_registry.py
@@ -1,14 +1,14 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.7.7
5
- praisonai-code>=0.1.6
6
- praisonai-bot>=0.1.6
7
- praisonai-train>=0.1.6
8
- praisonai-browser>=0.1.6
9
- praisonai-mcp>=0.1.8
10
- praisonai-sandbox>=0.1.6
11
- praisonai-deploy>=0.1.6
4
+ praisonaiagents>=1.7.8
5
+ praisonai-code>=0.1.7
6
+ praisonai-bot>=0.1.7
7
+ praisonai-train>=0.1.7
8
+ praisonai-browser>=0.1.7
9
+ praisonai-mcp>=0.1.9
10
+ praisonai-sandbox>=0.1.7
11
+ praisonai-deploy>=0.1.7
12
12
  python-dotenv>=0.19.0
13
13
  litellm<2,>=1.83.14
14
14
  PyYAML>=6.0
@@ -100,6 +100,14 @@ def run(agent_file: str,
100
100
  """
101
101
  from .agents_generator import AgentsGenerator
102
102
 
103
+ # Wire the built-in readers/retrievers/rerankers into the core-SDK
104
+ # registries so YAML/CLI declarations (e.g. `retriever: fusion`,
105
+ # `reranker: llm`) resolve. Idempotent + thread-safe, and register-only-if-
106
+ # absent: a custom adapter already registered under a built-in name (e.g. a
107
+ # multi-tenant host's own `fusion`) is preserved, never overwritten.
108
+ from .adapters import register_default_adapters
109
+ register_default_adapters()
110
+
103
111
  adapter, config_list = _resolve_run_inputs(framework)
104
112
  _apply_model_override(config_list, kwargs)
105
113
  cli_config = _merge_cli_config(cli_config, kwargs)
@@ -134,6 +142,14 @@ async def arun(agent_file: str,
134
142
 
135
143
  from .agents_generator import AgentsGenerator
136
144
 
145
+ # Wire the built-in readers/retrievers/rerankers into the core-SDK
146
+ # registries so YAML/CLI declarations resolve. Run off the event loop since
147
+ # registration performs lazy imports. Idempotent + thread-safe, and
148
+ # register-only-if-absent: a custom adapter already registered under a
149
+ # built-in name is preserved, never overwritten.
150
+ from .adapters import register_default_adapters
151
+ await asyncio.to_thread(register_default_adapters)
152
+
137
153
  # Resolve framework + build config_list off the caller's event loop so the
138
154
  # synchronous credential/config-file I/O does not block it. This is the
139
155
  # reason arun exists: a FastAPI handler awaiting arun must not stall the loop.
@@ -389,25 +389,35 @@ def register_default_readers():
389
389
  from praisonaiagents.knowledge.readers import get_reader_registry
390
390
 
391
391
  registry = get_reader_registry()
392
-
392
+
393
+ # Preserve any existing entry: an application (or a multi-tenant host) may
394
+ # have already registered a custom reader under a built-in name. Wiring the
395
+ # wrapper defaults must never silently replace it, so register only names
396
+ # that are not already present.
397
+ existing = set(registry.list_readers())
398
+
399
+ def _register(name, factory, extensions=None):
400
+ if name not in existing:
401
+ registry.register(name, factory, extensions)
402
+
393
403
  # Register text reader
394
- registry.register("text", TextReader, ["txt", "text", "log"])
395
-
404
+ _register("text", TextReader, ["txt", "text", "log"])
405
+
396
406
  # Register markitdown reader
397
- registry.register("markitdown", MarkItDownReader, MarkItDownReader.supported_extensions)
398
-
407
+ _register("markitdown", MarkItDownReader, MarkItDownReader.supported_extensions)
408
+
399
409
  # Register directory reader
400
- registry.register("directory", DirectoryReader)
401
-
410
+ _register("directory", DirectoryReader)
411
+
402
412
  # Register glob reader
403
- registry.register("glob", GlobReader)
404
-
413
+ _register("glob", GlobReader)
414
+
405
415
  # Register URL reader
406
- registry.register("url", URLReader)
407
-
416
+ _register("url", URLReader)
417
+
408
418
  # Register auto reader
409
- registry.register("auto", AutoReader)
410
-
419
+ _register("auto", AutoReader)
420
+
411
421
  logger.debug("Registered default readers")
412
422
 
413
423
 
@@ -324,18 +324,25 @@ def register_default_rerankers():
324
324
  from praisonaiagents.knowledge.rerankers import get_reranker_registry
325
325
 
326
326
  registry = get_reranker_registry()
327
-
327
+
328
+ # Preserve any existing entry: an application (or a multi-tenant host) may
329
+ # have already registered a custom reranker under a built-in name. Wiring
330
+ # the wrapper defaults must never silently replace it, so register only
331
+ # names that are not already present.
332
+ existing = set(registry.list_rerankers())
333
+
328
334
  # LLM reranker is always available
329
- registry.register("llm", LLMReranker)
330
-
335
+ if "llm" not in existing:
336
+ registry.register("llm", LLMReranker)
337
+
331
338
  # Cross-encoder if available
332
- if _check_sentence_transformers():
339
+ if "cross_encoder" not in existing and _check_sentence_transformers():
333
340
  registry.register("cross_encoder", CrossEncoderReranker)
334
-
341
+
335
342
  # Cohere if available
336
- if _check_cohere():
343
+ if "cohere" not in existing and _check_cohere():
337
344
  registry.register("cohere", CohereReranker)
338
-
345
+
339
346
  logger.debug("Registered default rerankers")
340
347
 
341
348
 
@@ -595,13 +595,22 @@ def register_default_retrievers():
595
595
  from praisonaiagents.knowledge.retrieval import get_retriever_registry
596
596
 
597
597
  registry = get_retriever_registry()
598
-
599
- registry.register("basic", BasicRetriever)
600
- registry.register("fusion", FusionRetriever)
601
- registry.register("recursive", RecursiveRetriever)
602
- registry.register("auto_merge", AutoMergeRetriever)
603
- registry.register("hybrid", HybridRetriever)
604
-
598
+
599
+ # Preserve any existing entry: an application (or a multi-tenant host) may
600
+ # have already registered a custom retriever under a built-in name. Wiring
601
+ # the wrapper defaults must never silently replace it, so register only
602
+ # names that are not already present.
603
+ existing = set(registry.list_retrievers())
604
+ for name, factory in (
605
+ ("basic", BasicRetriever),
606
+ ("fusion", FusionRetriever),
607
+ ("recursive", RecursiveRetriever),
608
+ ("auto_merge", AutoMergeRetriever),
609
+ ("hybrid", HybridRetriever),
610
+ ):
611
+ if name not in existing:
612
+ registry.register(name, factory)
613
+
605
614
  logger.debug("Registered default retrievers")
606
615
 
607
616
 
@@ -0,0 +1,87 @@
1
+ """Shared scaffolding for ``ManagedBackendProtocol`` implementations.
2
+
3
+ ``AnthropicManagedAgent`` (managed_agents.py) and ``LocalManagedAgent``
4
+ (managed_local.py) implement the same protocol contract and historically
5
+ re-implemented the same ``stream()`` producer/queue/sentinel scaffolding twice.
6
+ That duplication meant the async-safety fix for ``loop.run_in_executor`` and any
7
+ future protocol change had to be edited — and kept in sync — in two places.
8
+
9
+ ``ManagedBackendBase`` owns that single copy of the queue pump. Concrete
10
+ backends implement only what actually differs:
11
+
12
+ - ``_ensure_session()`` -> return a session id (already present on
13
+ both concrete backends).
14
+ - ``_iter_events(session_id, prompt)`` -> a *synchronous* iterator of text
15
+ chunks. Runs on the producer thread, so blocking SDK calls are fine here.
16
+ - ``_after_stream(full)`` [optional] -> post-stream bookkeeping (e.g. the
17
+ local backend persists the assembled assistant turn + usage). Default is a
18
+ no-op.
19
+
20
+ A third managed backend then implements two methods rather than copying the
21
+ whole streaming loop.
22
+ """
23
+
24
+ from __future__ import annotations
25
+
26
+ import asyncio
27
+ import logging
28
+ import queue
29
+ import threading
30
+ from typing import AsyncIterator, Iterator, Optional
31
+
32
+ logger = logging.getLogger(__name__)
33
+
34
+
35
+ class ManagedBackendBase:
36
+ """Mixin providing the shared ``stream()`` queue pump.
37
+
38
+ Subclasses supply the session provider and the (synchronous) event source;
39
+ this class turns them into an async generator without each backend shipping
40
+ its own copy of the producer-thread + sentinel-queue plumbing.
41
+ """
42
+
43
+ def _ensure_session(self) -> str: # pragma: no cover - implemented by subclass
44
+ raise NotImplementedError
45
+
46
+ def _iter_events(self, session_id: str, prompt: str) -> Iterator[str]: # pragma: no cover
47
+ """Yield text chunks for ``prompt`` on ``session_id`` (runs on a thread)."""
48
+ raise NotImplementedError
49
+
50
+ def _after_stream(self, full: str) -> None:
51
+ """Hook for post-stream bookkeeping. Default: no-op."""
52
+
53
+ async def stream(self, prompt: str, **kwargs) -> AsyncIterator[str]:
54
+ """Yield text chunks as the managed agent produces them.
55
+
56
+ The synchronous ``_iter_events`` producer runs on a daemon thread and
57
+ feeds a sentinel-terminated queue; the event loop is never blocked.
58
+ """
59
+ loop = asyncio.get_running_loop()
60
+ q: "queue.Queue[Optional[str]]" = queue.Queue()
61
+
62
+ def _producer() -> None:
63
+ full = ""
64
+ try:
65
+ session_id = self._ensure_session()
66
+ for chunk in self._iter_events(session_id, prompt):
67
+ if chunk:
68
+ text = str(chunk)
69
+ q.put(text)
70
+ full += text
71
+ except Exception as e: # noqa: BLE001 - surface, don't crash the loop
72
+ logger.error("[managed] stream error: %s", e)
73
+ finally:
74
+ try:
75
+ self._after_stream(full)
76
+ except Exception as e: # noqa: BLE001
77
+ logger.error("[managed] post-stream hook error: %s", e)
78
+ q.put(None) # sentinel
79
+
80
+ thread = threading.Thread(target=_producer, daemon=True)
81
+ thread.start()
82
+
83
+ while True:
84
+ chunk = await loop.run_in_executor(None, q.get)
85
+ if chunk is None:
86
+ break
87
+ yield chunk
@@ -0,0 +1,129 @@
1
+ """Registry of managed agent-runtime backends.
2
+
3
+ This moves provider -> backend resolution off the hardcoded ``if provider !=
4
+ "anthropic"`` switch in :mod:`hosted_agent` and onto the same plugin-registry
5
+ primitive used for framework adapters. A third-party package can register a
6
+ ``praisonai.managed_backends`` entry point and have ``HostedAgent(provider=...)``
7
+ resolve it with no core change.
8
+
9
+ Builtins:
10
+ - ``anthropic`` -> :class:`AnthropicManagedAgent`
11
+
12
+ Future entry-point backends (e.g. ``e2b``, ``modal``, ``flyio``) register
13
+ themselves under the ``praisonai.managed_backends`` group.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import logging
19
+ import threading
20
+ from typing import Type
21
+
22
+ from .._registry import PluginRegistry
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+
27
+ def _anthropic_loader() -> Type:
28
+ from .managed_agents import AnthropicManagedAgent
29
+ return AnthropicManagedAgent
30
+
31
+
32
+ # Compute places that cannot host a whole agent loop, so they are never
33
+ # registered as managed backends: `ssh` needs an object rather than a name;
34
+ # `local`/`native`/`subprocess` would run the agent in your own shell (which is
35
+ # what you get by passing nothing); `sandlock` isolates tools rather than
36
+ # hosting a runtime.
37
+ _COMPUTE_SKIP = {"ssh", "local", "native", "subprocess", "sandlock"}
38
+
39
+
40
+ _BUILTIN_BACKENDS = {
41
+ "anthropic": _anthropic_loader,
42
+ # Compute-backed loaders (docker + every other compute place able to host a
43
+ # whole agent loop) are registered lazily inside the registry -- see
44
+ # ``_ensure_compute_registered`` -- so a bare import of this module pays
45
+ # nothing: no entry-point walk, no core-SDK import, no closure minting.
46
+ }
47
+
48
+
49
+ class ManagedBackendRegistry(PluginRegistry):
50
+ """Registry for managed agent-runtime backends with entry-point support."""
51
+
52
+ def __init__(self) -> None:
53
+ super().__init__(
54
+ entry_point_group="praisonai.managed_backends",
55
+ builtins=_BUILTIN_BACKENDS,
56
+ )
57
+ self._compute_registered = False
58
+ self._compute_lock = threading.Lock()
59
+
60
+ def _ensure_compute_registered(self) -> None:
61
+ """Discover compute-backed backends on first lookup, not at import.
62
+
63
+ ``run_on=`` accepted two names while ``tools_run_on=`` accepted twelve,
64
+ which was an implementation detail leaking into the vocabulary: a place
65
+ that can run a command can run the agent loop, which is just one more
66
+ command. One generic backend covers them all. `docker` used to be
67
+ excluded here in favour of a bespoke backend, but that named its
68
+ containers in a shape ``DockerCompute``'s lookup did not recognise, so
69
+ the generic path is used for reclaim.
70
+
71
+ The probe (an entry-point walk plus a core-SDK import) runs at most once
72
+ and only when a backend is actually requested by name.
73
+ """
74
+ if self._compute_registered:
75
+ return
76
+ with self._compute_lock:
77
+ if self._compute_registered:
78
+ return
79
+ try:
80
+ from .compute_managed_agent import make_loader
81
+ from praisonaiagents.managed._compute_bridge import (
82
+ available_providers,
83
+ )
84
+
85
+ for name in available_providers():
86
+ if name in _COMPUTE_SKIP or name in _BUILTIN_BACKENDS:
87
+ continue
88
+ # Never clobber a name an entry-point plugin already claimed.
89
+ # A third-party ``praisonai.managed_backends`` plugin using a
90
+ # compute-provider name (e.g. ``docker``, ``modal``, ``e2b``)
91
+ # is loaded when the registry is constructed; the generic
92
+ # compute loader must not replace it on first lookup. Use the
93
+ # base membership check (``PluginRegistry.has``) rather than
94
+ # our own overridden ``has``, which would re-enter
95
+ # ``_ensure_compute_registered`` and deadlock on the
96
+ # (non-reentrant) compute lock.
97
+ if super().has(name):
98
+ logger.debug(
99
+ "compute provider %r already registered (entry-point "
100
+ "plugin or builtin); keeping the existing backend",
101
+ name,
102
+ )
103
+ continue
104
+ self._add_loader(name, make_loader(name))
105
+ except Exception:
106
+ # A broken/absent compute plugin must not be silently invisible.
107
+ logger.debug(
108
+ "compute backend discovery failed; falling back to the "
109
+ "anthropic-only registry",
110
+ exc_info=True,
111
+ )
112
+ self._compute_registered = True
113
+
114
+ def resolve(self, name: str) -> Type:
115
+ self._ensure_compute_registered()
116
+ return super().resolve(name)
117
+
118
+ def list_names(self) -> list[str]:
119
+ self._ensure_compute_registered()
120
+ return super().list_names()
121
+
122
+ def has(self, name: str) -> bool:
123
+ self._ensure_compute_registered()
124
+ return super().has(name)
125
+
126
+
127
+ def get_backend_registry() -> "ManagedBackendRegistry":
128
+ """Return the process-default managed-backend registry."""
129
+ return ManagedBackendRegistry.default()
@@ -35,6 +35,8 @@ from dataclasses import dataclass, field
35
35
  from typing import AsyncIterator, Callable, Dict, Any, Optional, List, Union
36
36
  from enum import Enum
37
37
 
38
+ from ._managed_base import ManagedBackendBase
39
+
38
40
  logger = logging.getLogger(__name__)
39
41
 
40
42
 
@@ -235,7 +237,7 @@ class ManagedConfig:
235
237
  vault_ids: List[str] = field(default_factory=list)
236
238
 
237
239
 
238
- class AnthropicManagedAgent:
240
+ class AnthropicManagedAgent(ManagedBackendBase):
239
241
  """Anthropic Managed Agents backend for PraisonAI.
240
242
 
241
243
  Satisfies ``ManagedBackendProtocol`` (Core SDK). All heavy SDK usage
@@ -783,48 +785,32 @@ class AnthropicManagedAgent:
783
785
  emitter.agent_end(agent_name)
784
786
 
785
787
  # ------------------------------------------------------------------
786
- # stream() — ManagedBackendProtocol
788
+ # stream() — ManagedBackendProtocol (via ManagedBackendBase)
787
789
  # ------------------------------------------------------------------
788
- async def stream(self, prompt: str, **kwargs) -> AsyncIterator[str]:
789
- """Yield text chunks as the managed agent produces them."""
790
- loop = asyncio.get_running_loop()
791
- import queue
792
- import threading
790
+ def _iter_events(self, session_id: str, prompt: str):
791
+ """Yield agent-message text chunks off the Anthropic SSE stream.
793
792
 
794
- q: queue.Queue[Optional[str]] = queue.Queue()
795
-
796
- def _producer():
797
- try:
798
- client = self._get_client()
799
- session_id = self._ensure_session()
800
- with client.beta.sessions.events.stream(session_id) as s:
801
- client.beta.sessions.events.send(
802
- session_id,
803
- events=[{
804
- "type": "user.message",
805
- "content": [{"type": "text", "text": prompt}],
806
- }],
807
- )
808
- for event in s:
809
- etype = getattr(event, "type", None)
810
- if etype == "agent.message":
811
- for block in getattr(event, "content", []):
812
- text = getattr(block, "text", None)
813
- if text:
814
- q.put(text)
815
- elif etype == "session.status_idle":
816
- break
817
- finally:
818
- q.put(None) # sentinel
819
-
820
- thread = threading.Thread(target=_producer, daemon=True)
821
- thread.start()
822
-
823
- while True:
824
- chunk = await loop.run_in_executor(None, q.get)
825
- if chunk is None:
826
- break
827
- yield chunk
793
+ Runs on ``ManagedBackendBase.stream``'s producer thread, so the blocking
794
+ SDK stream context is fine here.
795
+ """
796
+ client = self._get_client()
797
+ with client.beta.sessions.events.stream(session_id) as s:
798
+ client.beta.sessions.events.send(
799
+ session_id,
800
+ events=[{
801
+ "type": "user.message",
802
+ "content": [{"type": "text", "text": prompt}],
803
+ }],
804
+ )
805
+ for event in s:
806
+ etype = getattr(event, "type", None)
807
+ if etype == "agent.message":
808
+ for block in getattr(event, "content", []):
809
+ text = getattr(block, "text", None)
810
+ if text:
811
+ yield text
812
+ elif etype == "session.status_idle":
813
+ return
828
814
 
829
815
  # ------------------------------------------------------------------
830
816
  # Session management — ManagedBackendProtocol
@@ -57,6 +57,7 @@ _DEFAULT_TOOLS = [
57
57
  "search_web",
58
58
  ]
59
59
 
60
+ from ._managed_base import ManagedBackendBase
60
61
  from ._tool_aliases import TOOL_ALIAS_MAP
61
62
 
62
63
 
@@ -198,7 +199,7 @@ def _build_custom_tool_fn(
198
199
  return _custom_fn
199
200
 
200
201
 
201
- class LocalManagedAgent:
202
+ class LocalManagedAgent(ManagedBackendBase):
202
203
  """Provider-agnostic local managed agent backend.
203
204
 
204
205
  Satisfies ``ManagedBackendProtocol`` (Core SDK). Uses PraisonAI's own
@@ -756,9 +757,18 @@ class LocalManagedAgent:
756
757
  return self._inner_agent
757
758
 
758
759
  def _ensure_session(self) -> str:
759
- """Create a session ID if not set."""
760
+ """Create a session ID if not set.
761
+
762
+ Creates the inner agent *before* persisting the session so ``agent_id``
763
+ and ``environment_id`` are populated in the first persisted snapshot.
764
+ The shared ``ManagedBackendBase.stream`` calls ``_ensure_session`` ahead
765
+ of ``_iter_events``; without this the local backend would persist an
766
+ orphaned session with null IDs, and a subsequent ``_ensure_agent``
767
+ failure would leave that incomplete state behind.
768
+ """
760
769
  if self._session_id:
761
770
  return self._session_id
771
+ self._ensure_agent()
762
772
  self._session_id = f"session_{uuid.uuid4().hex[:12]}"
763
773
  self._session_history.append({
764
774
  "id": self._session_id,
@@ -852,51 +862,30 @@ class LocalManagedAgent:
852
862
  emitter.agent_end(agent_name)
853
863
 
854
864
  # ------------------------------------------------------------------
855
- # stream() — ManagedBackendProtocol
865
+ # stream() — ManagedBackendProtocol (via ManagedBackendBase)
856
866
  # ------------------------------------------------------------------
857
- async def stream(self, prompt: str, **kwargs) -> AsyncIterator[str]:
858
- """Yield text chunks as the agent produces them."""
859
- import queue
860
- import threading
861
-
862
- loop = asyncio.get_running_loop()
863
- q: queue.Queue[Optional[str]] = queue.Queue()
867
+ def _iter_events(self, session_id: str, prompt: str):
868
+ """Yield text chunks from the local ``Agent.chat`` loop.
864
869
 
865
- def _producer():
866
- full = ""
867
- try:
868
- agent = self._ensure_agent()
869
- self._ensure_session()
870
- self._persist_message("user", prompt)
871
- gen = agent.chat(prompt, stream=True)
872
- if hasattr(gen, '__iter__'):
873
- for chunk in gen:
874
- if chunk:
875
- text = str(chunk)
876
- q.put(text)
877
- full += text
878
- else:
879
- if gen:
880
- text = str(gen)
881
- q.put(text)
882
- full = text
883
- except Exception as e:
884
- logger.error("[local_managed] stream error: %s", e)
885
- finally:
886
- if full:
887
- self._persist_message("assistant", full)
888
- self._sync_usage()
889
- self._persist_state()
890
- q.put(None)
891
-
892
- thread = threading.Thread(target=_producer, daemon=True)
893
- thread.start()
894
-
895
- while True:
896
- chunk = await loop.run_in_executor(None, q.get)
897
- if chunk is None:
898
- break
899
- yield chunk
870
+ Runs on ``ManagedBackendBase.stream``'s producer thread. Ensures the
871
+ inner agent exists and persists the user turn before streaming.
872
+ """
873
+ agent = self._ensure_agent()
874
+ self._persist_message("user", prompt)
875
+ gen = agent.chat(prompt, stream=True)
876
+ if hasattr(gen, '__iter__'):
877
+ for chunk in gen:
878
+ if chunk:
879
+ yield str(chunk)
880
+ elif gen:
881
+ yield str(gen)
882
+
883
+ def _after_stream(self, full: str) -> None:
884
+ """Persist the assembled assistant turn + usage after streaming."""
885
+ if full:
886
+ self._persist_message("assistant", full)
887
+ self._sync_usage()
888
+ self._persist_state()
900
889
 
901
890
  # ------------------------------------------------------------------
902
891
  # Session management — ManagedBackendProtocol
@@ -0,0 +1 @@
1
+ __version__ = "4.7.10"