PraisonAI 4.6.150__tar.gz → 4.6.151__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 (592) hide show
  1. {praisonai-4.6.150 → praisonai-4.6.151}/PKG-INFO +7 -7
  2. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/PKG-INFO +7 -7
  3. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/SOURCES.txt +0 -2
  4. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/requires.txt +6 -6
  5. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/agents_generator.py +10 -4
  6. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/api/agent_invoke.py +122 -6
  7. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/auto.py +44 -36
  8. praisonai-4.6.151/praisonai/version.py +1 -0
  9. {praisonai-4.6.150 → praisonai-4.6.151}/pyproject.toml +6 -6
  10. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_n8n_agent_invoke.py +135 -0
  11. praisonai-4.6.150/praisonai/ui/callbacks.py +0 -57
  12. praisonai-4.6.150/praisonai/ui/components/aicoder.py +0 -343
  13. praisonai-4.6.150/praisonai/version.py +0 -1
  14. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/dependency_links.txt +0 -0
  15. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/entry_points.txt +0 -0
  16. {praisonai-4.6.150 → praisonai-4.6.151}/PraisonAI.egg-info/top_level.txt +0 -0
  17. {praisonai-4.6.150 → praisonai-4.6.151}/README.md +0 -0
  18. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/__init__.py +0 -0
  19. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/__main__.py +0 -0
  20. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_approval_spec.py +0 -0
  21. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_async_bridge.py +0 -0
  22. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_bootstrap.py +0 -0
  23. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/__init__.py +0 -0
  24. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/api_md.py +0 -0
  25. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/__init__.py +0 -0
  26. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/docs_extractor.py +0 -0
  27. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/docs_generator.py +0 -0
  28. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/generator.py +0 -0
  29. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  30. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/python_extractor.py +0 -0
  31. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  32. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/rust_extractor.py +0 -0
  33. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  34. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  35. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  36. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_entrypoint.py +0 -0
  37. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_framework_availability.py +0 -0
  38. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_lazy_cache.py +0 -0
  39. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_logging.py +0 -0
  40. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_registry.py +0 -0
  41. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/_safe_loader.py +0 -0
  42. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/acp/__init__.py +0 -0
  43. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/acp/config.py +0 -0
  44. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/acp/safe_edit.py +0 -0
  45. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/acp/server.py +0 -0
  46. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/acp/session.py +0 -0
  47. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/adapters/__init__.py +0 -0
  48. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/adapters/readers.py +0 -0
  49. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/adapters/rerankers.py +0 -0
  50. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/adapters/retrievers.py +0 -0
  51. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/adapters/vector_stores.py +0 -0
  52. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/agent.py +0 -0
  53. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/agent_scheduler.py +0 -0
  54. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/api/call.py +0 -0
  55. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/app/__init__.py +0 -0
  56. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/app/agentos.py +0 -0
  57. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/async_agent_scheduler.py +0 -0
  58. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/audit/__init__.py +0 -0
  59. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/audit/agent_centric.py +0 -0
  60. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/bots/__init__.py +0 -0
  61. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/browser/__init__.py +0 -0
  62. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/__init__.py +0 -0
  63. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/a2a.py +0 -0
  64. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/assistants.py +0 -0
  65. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/audio.py +0 -0
  66. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/batches.py +0 -0
  67. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/completions.py +0 -0
  68. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/container_files.py +0 -0
  69. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/containers.py +0 -0
  70. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/embeddings.py +0 -0
  71. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/files.py +0 -0
  72. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/fine_tuning.py +0 -0
  73. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/guardrails.py +0 -0
  74. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/images.py +0 -0
  75. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/mcp.py +0 -0
  76. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/messages.py +0 -0
  77. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/moderations.py +0 -0
  78. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/ocr.py +0 -0
  79. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/passthrough.py +0 -0
  80. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/rag.py +0 -0
  81. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/realtime.py +0 -0
  82. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/rerank.py +0 -0
  83. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/responses.py +0 -0
  84. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/search.py +0 -0
  85. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/skills.py +0 -0
  86. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/vector_store_files.py +0 -0
  87. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/vector_stores.py +0 -0
  88. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/capabilities/videos.py +0 -0
  89. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/claw/__init__.py +0 -0
  90. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/__init__.py +0 -0
  91. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/_paths.py +0 -0
  92. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/_shim.py +0 -0
  93. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/_warnings.py +0 -0
  94. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/app.py +0 -0
  95. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/approval_backend.py +0 -0
  96. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/branding.py +0 -0
  97. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/__init__.py +0 -0
  98. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/acp.py +0 -0
  99. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/agent.py +0 -0
  100. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/agents.py +0 -0
  101. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/app.py +0 -0
  102. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/attach.py +0 -0
  103. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/audit.py +0 -0
  104. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/auth.py +0 -0
  105. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/batch.py +0 -0
  106. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/benchmark.py +0 -0
  107. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/bot.py +0 -0
  108. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/browser.py +0 -0
  109. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/call.py +0 -0
  110. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/chat.py +0 -0
  111. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/checkpoint.py +0 -0
  112. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/claw.py +0 -0
  113. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/code.py +0 -0
  114. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/command.py +0 -0
  115. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/commit.py +0 -0
  116. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/completion.py +0 -0
  117. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/config.py +0 -0
  118. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/context.py +0 -0
  119. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/daemon.py +0 -0
  120. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/dashboard.py +0 -0
  121. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/debug.py +0 -0
  122. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/deploy.py +0 -0
  123. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/diag.py +0 -0
  124. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/docs.py +0 -0
  125. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/doctor.py +0 -0
  126. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/endpoints.py +0 -0
  127. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/environment.py +0 -0
  128. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/eval.py +0 -0
  129. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/examples.py +0 -0
  130. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/flow.py +0 -0
  131. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/gateway.py +0 -0
  132. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/github.py +0 -0
  133. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/hooks.py +0 -0
  134. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/identity.py +0 -0
  135. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/init.py +0 -0
  136. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/kanban.py +0 -0
  137. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/knowledge.py +0 -0
  138. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/langextract.py +0 -0
  139. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/langfuse.py +0 -0
  140. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/loop.py +0 -0
  141. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/lsp.py +0 -0
  142. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/managed.py +0 -0
  143. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/mcp.py +0 -0
  144. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/memory.py +0 -0
  145. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/mint_link.py +0 -0
  146. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/models.py +0 -0
  147. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/n8n.py +0 -0
  148. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/obs.py +0 -0
  149. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/onboard.py +0 -0
  150. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/package.py +0 -0
  151. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/pairing.py +0 -0
  152. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/paths.py +0 -0
  153. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/permissions.py +0 -0
  154. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/plugins.py +0 -0
  155. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/port.py +0 -0
  156. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/profile.py +0 -0
  157. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/publish.py +0 -0
  158. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/rag.py +0 -0
  159. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/realtime.py +0 -0
  160. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/recipe.py +0 -0
  161. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/registry.py +0 -0
  162. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/replay.py +0 -0
  163. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/research.py +0 -0
  164. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/retrieval.py +0 -0
  165. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/rules.py +0 -0
  166. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/run.py +0 -0
  167. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/sandbox.py +0 -0
  168. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/schedule.py +0 -0
  169. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/serve.py +0 -0
  170. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/session.py +0 -0
  171. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/setup.py +0 -0
  172. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/skills.py +0 -0
  173. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/standardise.py +0 -0
  174. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/templates.py +0 -0
  175. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/test.py +0 -0
  176. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/todo.py +0 -0
  177. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/tools.py +0 -0
  178. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/traces.py +0 -0
  179. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/tracker.py +0 -0
  180. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/train.py +0 -0
  181. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/ui.py +0 -0
  182. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/up.py +0 -0
  183. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/validate.py +0 -0
  184. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/version.py +0 -0
  185. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/commands/workflow.py +0 -0
  186. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/config_loader.py +0 -0
  187. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/configuration/__init__.py +0 -0
  188. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/configuration/config.schema.json +0 -0
  189. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/execution/__init__.py +0 -0
  190. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/fallback_schema.py +0 -0
  191. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/__init__.py +0 -0
  192. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/acp.py +0 -0
  193. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/agent_scheduler.py +0 -0
  194. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/agent_tools.py +0 -0
  195. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/approval.py +0 -0
  196. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/background.py +0 -0
  197. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/bots_cli.py +0 -0
  198. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/deploy.py +0 -0
  199. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/endpoints.py +0 -0
  200. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/eval.py +0 -0
  201. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/gateway.py +0 -0
  202. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/ollama.py +0 -0
  203. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/onboard.py +0 -0
  204. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/persistence.py +0 -0
  205. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/recipe.py +0 -0
  206. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/recipe_optimizer.py +0 -0
  207. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/registry.py +0 -0
  208. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/sandbox_cli.py +0 -0
  209. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/serve.py +0 -0
  210. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/templates.py +0 -0
  211. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/tools.py +0 -0
  212. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/tui/__init__.py +0 -0
  213. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/tui/app.py +0 -0
  214. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/features/workflow.py +0 -0
  215. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/interactive/__init__.py +0 -0
  216. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/interactive/async_tui.py +0 -0
  217. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/interactive/core.py +0 -0
  218. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/langfuse_client.py +0 -0
  219. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/__init__.py +0 -0
  220. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/direct_prompt.py +0 -0
  221. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
  222. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
  223. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
  224. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/framework_run.py +0 -0
  225. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
  226. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/interactive_legacy.py +0 -0
  227. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
  228. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/legacy/workflow_commands.py +0 -0
  229. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/main.py +0 -0
  230. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/output/__init__.py +0 -0
  231. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/schedule_cli.py +0 -0
  232. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/schema_provider.py +0 -0
  233. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/session/__init__.py +0 -0
  234. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/state/__init__.py +0 -0
  235. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/ui/__init__.py +0 -0
  236. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/unified_schema.py +0 -0
  237. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli/utils/__init__.py +0 -0
  238. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/cli_backends/__init__.py +0 -0
  239. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/__init__.py +0 -0
  240. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/agent_tools.py +0 -0
  241. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/diff/__init__.py +0 -0
  242. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/diff/diff_strategy.py +0 -0
  243. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/__init__.py +0 -0
  244. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/apply_diff.py +0 -0
  245. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/execute_command.py +0 -0
  246. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/list_files.py +0 -0
  247. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/read_file.py +0 -0
  248. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/search_replace.py +0 -0
  249. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/tools/write_file.py +0 -0
  250. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/utils/__init__.py +0 -0
  251. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/utils/file_utils.py +0 -0
  252. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/utils/ignore_utils.py +0 -0
  253. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/code/utils/text_utils.py +0 -0
  254. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/config/__init__.py +0 -0
  255. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/config/schema.py +0 -0
  256. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/config/validator.py +0 -0
  257. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/__init__.py +0 -0
  258. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/_storage_path.py +0 -0
  259. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/artifact_store.py +0 -0
  260. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/config.py +0 -0
  261. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/history_store.py +0 -0
  262. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/queue.py +0 -0
  263. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/setup.py +0 -0
  264. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/context/terminal_logger.py +0 -0
  265. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/daemon/__init__.py +0 -0
  266. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/db/__init__.py +0 -0
  267. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/db/adapter.py +0 -0
  268. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/__init__.py +0 -0
  269. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/api.py +0 -0
  270. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/docker.py +0 -0
  271. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/doctor.py +0 -0
  272. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/main.py +0 -0
  273. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/models.py +0 -0
  274. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/__init__.py +0 -0
  275. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/_registry.py +0 -0
  276. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/aws.py +0 -0
  277. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/azure.py +0 -0
  278. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/base.py +0 -0
  279. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/providers/gcp.py +0 -0
  280. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/deploy/schema.py +0 -0
  281. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/__init__.py +0 -0
  282. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/a2u_server.py +0 -0
  283. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/discovery.py +0 -0
  284. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/__init__.py +0 -0
  285. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/a2a.py +0 -0
  286. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/a2u.py +0 -0
  287. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/agents_api.py +0 -0
  288. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/base.py +0 -0
  289. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/mcp.py +0 -0
  290. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/openai_compat.py +0 -0
  291. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/recipe.py +0 -0
  292. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  293. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/registry.py +0 -0
  294. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/endpoints/server.py +0 -0
  295. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/__init__.py +0 -0
  296. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/client.py +0 -0
  297. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  298. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  299. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/components/__init__.py +0 -0
  300. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/converter.py +0 -0
  301. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/flow/helpers.py +0 -0
  302. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/__init__.py +0 -0
  303. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/_config_builder.py +0 -0
  304. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  305. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/base.py +0 -0
  306. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  307. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  308. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/registry.py +0 -0
  309. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/validators.py +0 -0
  310. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/framework_adapters/workflow_framework.py +0 -0
  311. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/gateway/__init__.py +0 -0
  312. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/inbuilt_tools/__init__.py +0 -0
  313. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  314. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/inc/__init__.py +0 -0
  315. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/inc/config.py +0 -0
  316. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/inc/models.py +0 -0
  317. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/__init__.py +0 -0
  318. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/__init__.py +0 -0
  319. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  320. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/hooks_query.py +0 -0
  321. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  322. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/schedules_runner.py +0 -0
  323. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/usage_bridge.py +0 -0
  324. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/bridges/workflows_service.py +0 -0
  325. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/context_files.py +0 -0
  326. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/gateway_host.py +0 -0
  327. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/host_app.py +0 -0
  328. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/pages/__init__.py +0 -0
  329. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/pages/bot_health.py +0 -0
  330. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integration/pages/workflow_runs.py +0 -0
  331. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/__init__.py +0 -0
  332. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/_cli_loaders.py +0 -0
  333. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/_session_info.py +0 -0
  334. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/_tool_aliases.py +0 -0
  335. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/_unified_registry.py +0 -0
  336. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/backend_registry.py +0 -0
  337. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/base.py +0 -0
  338. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/claude_code.py +0 -0
  339. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/codex_cli.py +0 -0
  340. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/__init__.py +0 -0
  341. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/daytona.py +0 -0
  342. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/docker.py +0 -0
  343. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/e2b.py +0 -0
  344. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/flyio.py +0 -0
  345. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/local.py +0 -0
  346. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/compute/modal_compute.py +0 -0
  347. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/cursor_cli.py +0 -0
  348. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/db_session_adapter.py +0 -0
  349. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/gemini_cli.py +0 -0
  350. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/hosted_agent.py +0 -0
  351. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/local_agent.py +0 -0
  352. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/managed_agents.py +0 -0
  353. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/managed_local.py +0 -0
  354. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/registry.py +0 -0
  355. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/integrations/sandboxed_agent.py +0 -0
  356. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/__init__.py +0 -0
  357. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/executor.py +0 -0
  358. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/models.py +0 -0
  359. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/path_validation.py +0 -0
  360. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/router.py +0 -0
  361. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/server.py +0 -0
  362. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/jobs/store.py +0 -0
  363. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/kanban/__init__.py +0 -0
  364. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/__init__.py +0 -0
  365. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/catalogue.py +0 -0
  366. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/config.py +0 -0
  367. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/credentials.py +0 -0
  368. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/env.py +0 -0
  369. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/gateways.py +0 -0
  370. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/llm/registry.py +0 -0
  371. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/mcp_server/__init__.py +0 -0
  372. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/n8n/__init__.py +0 -0
  373. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/n8n/client.py +0 -0
  374. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/n8n/converter.py +0 -0
  375. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/n8n/preview.py +0 -0
  376. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/n8n/reverse_converter.py +0 -0
  377. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/observability/__init__.py +0 -0
  378. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/observability/hooks.py +0 -0
  379. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/observability/langextract.py +0 -0
  380. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/observability/langfuse.py +0 -0
  381. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/__init__.py +0 -0
  382. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/_valkey_client.py +0 -0
  383. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/config.py +0 -0
  384. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/__init__.py +0 -0
  385. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/_sql_base.py +0 -0
  386. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  387. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/async_mysql.py +0 -0
  388. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/async_postgres.py +0 -0
  389. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  390. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/base.py +0 -0
  391. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/json_store.py +0 -0
  392. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/mysql.py +0 -0
  393. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/postgres.py +0 -0
  394. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/singlestore.py +0 -0
  395. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/sqlite.py +0 -0
  396. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/supabase.py +0 -0
  397. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/surrealdb.py +0 -0
  398. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  399. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/conversation/turso.py +0 -0
  400. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/factory.py +0 -0
  401. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/hooks/__init__.py +0 -0
  402. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  403. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/__init__.py +0 -0
  404. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/base.py +0 -0
  405. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/cassandra.py +0 -0
  406. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/chroma.py +0 -0
  407. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  408. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  409. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/couchbase.py +0 -0
  410. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/lancedb.py +0 -0
  411. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  412. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  413. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  414. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/milvus.py +0 -0
  415. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  416. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/pgvector.py +0 -0
  417. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/pinecone.py +0 -0
  418. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/qdrant.py +0 -0
  419. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  420. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  421. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  422. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  423. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  424. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/knowledge/weaviate.py +0 -0
  425. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/migrations/__init__.py +0 -0
  426. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/migrations/manager.py +0 -0
  427. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/orchestrator.py +0 -0
  428. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/registry.py +0 -0
  429. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/__init__.py +0 -0
  430. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/async_mongodb.py +0 -0
  431. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/base.py +0 -0
  432. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/dynamodb.py +0 -0
  433. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/firestore.py +0 -0
  434. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/gcs.py +0 -0
  435. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/memory.py +0 -0
  436. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/mongodb.py +0 -0
  437. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/redis.py +0 -0
  438. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/upstash.py +0 -0
  439. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/state/valkey.py +0 -0
  440. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/tests/__init__.py +0 -0
  441. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/tests/test_all_backends.py +0 -0
  442. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
  443. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  444. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/profiler.py +0 -0
  445. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/push/__init__.py +0 -0
  446. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/push/client.py +0 -0
  447. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/push/transports.py +0 -0
  448. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/__init__.py +0 -0
  449. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/bridge.py +0 -0
  450. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/core.py +0 -0
  451. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/exceptions.py +0 -0
  452. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/history.py +0 -0
  453. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/models.py +0 -0
  454. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/operations.py +0 -0
  455. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/policy.py +0 -0
  456. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/registry.py +0 -0
  457. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/runtime.py +0 -0
  458. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/security.py +0 -0
  459. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/serve.py +0 -0
  460. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/recipe/server.py +0 -0
  461. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/__init__.py +0 -0
  462. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/analyzer.py +0 -0
  463. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/applier.py +0 -0
  464. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/judge.py +0 -0
  465. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/plan.py +0 -0
  466. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/player.py +0 -0
  467. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/reader.py +0 -0
  468. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/storage.py +0 -0
  469. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/replay/writer.py +0 -0
  470. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/runtime/__init__.py +0 -0
  471. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/runtime/__main__.py +0 -0
  472. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/__init__.py +0 -0
  473. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/_compat.py +0 -0
  474. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/_registry.py +0 -0
  475. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/_shell.py +0 -0
  476. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/daytona.py +0 -0
  477. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/docker.py +0 -0
  478. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/e2b.py +0 -0
  479. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/modal.py +0 -0
  480. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/sandlock.py +0 -0
  481. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/ssh.py +0 -0
  482. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/sandbox/subprocess.py +0 -0
  483. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/__init__.py +0 -0
  484. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/_base_scheduler.py +0 -0
  485. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/_delivery.py +0 -0
  486. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/_dispatch.py +0 -0
  487. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/agent_scheduler.py +0 -0
  488. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  489. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/base.py +0 -0
  490. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  491. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/condition_gate.py +0 -0
  492. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/daemon_manager.py +0 -0
  493. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/deployment.py +0 -0
  494. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/executor.py +0 -0
  495. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/run_policy.py +0 -0
  496. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/shared.py +0 -0
  497. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/state_manager.py +0 -0
  498. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/suggestion_engine.py +0 -0
  499. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/scheduler/yaml_loader.py +0 -0
  500. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/security/__init__.py +0 -0
  501. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/security/audit.py +0 -0
  502. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/security/injection.py +0 -0
  503. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/security/protected.py +0 -0
  504. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/setup/__init__.py +0 -0
  505. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/setup/build.py +0 -0
  506. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/setup/post_install.py +0 -0
  507. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/setup/setup_conda_env.py +0 -0
  508. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/setup.py +0 -0
  509. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/__init__.py +0 -0
  510. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/ai_generator.py +0 -0
  511. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/config.py +0 -0
  512. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/dedupe.py +0 -0
  513. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/discovery.py +0 -0
  514. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/drift.py +0 -0
  515. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/engine.py +0 -0
  516. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/enhanced_templates.py +0 -0
  517. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/example_verifier.py +0 -0
  518. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/manifest.py +0 -0
  519. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/models.py +0 -0
  520. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/reports.py +0 -0
  521. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/templates.py +0 -0
  522. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/undo_redo.py +0 -0
  523. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/standardise/validator.py +0 -0
  524. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/__init__.py +0 -0
  525. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/dynamodb_adapter.py +0 -0
  526. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/mongodb_adapter.py +0 -0
  527. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/postgresql_adapter.py +0 -0
  528. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/redis_adapter.py +0 -0
  529. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/storage/valkey_adapter.py +0 -0
  530. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/__init__.py +0 -0
  531. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/batch_source.py +0 -0
  532. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/cli_docs_source.py +0 -0
  533. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/discovery.py +0 -0
  534. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/docs_source.py +0 -0
  535. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/examples_source.py +0 -0
  536. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/executor.py +0 -0
  537. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/models.py +0 -0
  538. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/report_viewer.py +0 -0
  539. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/reporter.py +0 -0
  540. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/suite_runner/runner.py +0 -0
  541. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/__init__.py +0 -0
  542. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/cache.py +0 -0
  543. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/dependency_checker.py +0 -0
  544. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/discovery.py +0 -0
  545. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/loader.py +0 -0
  546. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/registry.py +0 -0
  547. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/resolver.py +0 -0
  548. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/security.py +0 -0
  549. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/tool_override.py +0 -0
  550. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/templates/tools_doctor.py +0 -0
  551. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tool_registry.py +0 -0
  552. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tool_resolver.py +0 -0
  553. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/__init__.py +0 -0
  554. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/audio.py +0 -0
  555. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/glob_tool.py +0 -0
  556. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/grep_tool.py +0 -0
  557. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/kanban_tools.py +0 -0
  558. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/multiedit.py +0 -0
  559. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/tools/skill_manage.py +0 -0
  560. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/train/__init__.py +0 -0
  561. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/train.py +0 -0
  562. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/train_vision.py +0 -0
  563. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui/_aiui_datastore.py +0 -0
  564. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui/_external_agents.py +0 -0
  565. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui/context.py +0 -0
  566. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui/database_config.py +0 -0
  567. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_agents/__init__.py +0 -0
  568. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_agents/default_app.py +0 -0
  569. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_bot/__init__.py +0 -0
  570. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_bot/default_app.py +0 -0
  571. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_chat/__init__.py +0 -0
  572. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_chat/default_app.py +0 -0
  573. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_dashboard/default_app.py +0 -0
  574. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_realtime/__init__.py +0 -0
  575. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/ui_realtime/default_app.py +0 -0
  576. {praisonai-4.6.150 → praisonai-4.6.151}/praisonai/upload_vision.py +0 -0
  577. {praisonai-4.6.150 → praisonai-4.6.151}/setup.cfg +0 -0
  578. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test.py +0 -0
  579. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_agents_playbook.py +0 -0
  580. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_approval_system.py +0 -0
  581. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_basic.py +0 -0
  582. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_cli_features.py +0 -0
  583. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_custom_tools_fix.py +0 -0
  584. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_double_api_fix.py +0 -0
  585. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_n8n_cli_feature.py +0 -0
  586. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_n8n_integration.py +0 -0
  587. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_phase2_refactor.py +0 -0
  588. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_recipe.py +0 -0
  589. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_registry.py +0 -0
  590. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_runner.py +0 -0
  591. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_sandboxed_agent_compatibility.py +0 -0
  592. {praisonai-4.6.150 → praisonai-4.6.151}/tests/test_serve_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.150
3
+ Version: 4.6.151
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,12 +11,12 @@ 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.6.153
15
- Requires-Dist: praisonai-code>=0.0.49
16
- Requires-Dist: praisonai-bot>=0.0.34
17
- Requires-Dist: praisonai-train>=0.0.5
18
- Requires-Dist: praisonai-browser>=0.0.2
19
- Requires-Dist: praisonai-mcp>=0.0.2
14
+ Requires-Dist: praisonaiagents>=1.6.154
15
+ Requires-Dist: praisonai-code>=0.0.50
16
+ Requires-Dist: praisonai-bot>=0.0.35
17
+ Requires-Dist: praisonai-train>=0.0.6
18
+ Requires-Dist: praisonai-browser>=0.0.3
19
+ Requires-Dist: praisonai-mcp>=0.0.3
20
20
  Requires-Dist: python-dotenv>=0.19.0
21
21
  Requires-Dist: litellm<2,>=1.83.14
22
22
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.150
3
+ Version: 4.6.151
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,12 +11,12 @@ 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.6.153
15
- Requires-Dist: praisonai-code>=0.0.49
16
- Requires-Dist: praisonai-bot>=0.0.34
17
- Requires-Dist: praisonai-train>=0.0.5
18
- Requires-Dist: praisonai-browser>=0.0.2
19
- Requires-Dist: praisonai-mcp>=0.0.2
14
+ Requires-Dist: praisonaiagents>=1.6.154
15
+ Requires-Dist: praisonai-code>=0.0.50
16
+ Requires-Dist: praisonai-bot>=0.0.35
17
+ Requires-Dist: praisonai-train>=0.0.6
18
+ Requires-Dist: praisonai-browser>=0.0.3
19
+ Requires-Dist: praisonai-mcp>=0.0.3
20
20
  Requires-Dist: python-dotenv>=0.19.0
21
21
  Requires-Dist: litellm<2,>=1.83.14
22
22
  Requires-Dist: PyYAML>=6.0
@@ -558,10 +558,8 @@ praisonai/tools/skill_manage.py
558
558
  praisonai/train/__init__.py
559
559
  praisonai/ui/_aiui_datastore.py
560
560
  praisonai/ui/_external_agents.py
561
- praisonai/ui/callbacks.py
562
561
  praisonai/ui/context.py
563
562
  praisonai/ui/database_config.py
564
- praisonai/ui/components/aicoder.py
565
563
  praisonai/ui_agents/__init__.py
566
564
  praisonai/ui_agents/default_app.py
567
565
  praisonai/ui_bot/__init__.py
@@ -1,12 +1,12 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.153
5
- praisonai-code>=0.0.49
6
- praisonai-bot>=0.0.34
7
- praisonai-train>=0.0.5
8
- praisonai-browser>=0.0.2
9
- praisonai-mcp>=0.0.2
4
+ praisonaiagents>=1.6.154
5
+ praisonai-code>=0.0.50
6
+ praisonai-bot>=0.0.35
7
+ praisonai-train>=0.0.6
8
+ praisonai-browser>=0.0.3
9
+ praisonai-mcp>=0.0.3
10
10
  python-dotenv>=0.19.0
11
11
  litellm<2,>=1.83.14
12
12
  PyYAML>=6.0
@@ -401,7 +401,7 @@ def _resolve_yaml_cli_backend(cli_backend_config, logger):
401
401
 
402
402
 
403
403
  class AgentsGenerator:
404
- def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None):
404
+ def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None, tool_resolver=None):
405
405
  """
406
406
  Initialize the AgentsGenerator object.
407
407
 
@@ -416,6 +416,7 @@ class AgentsGenerator:
416
416
  tools (dict, optional): A dictionary containing the tools to be used for the agents. Defaults to None.
417
417
  cli_config (dict, optional): CLI configuration to override YAML settings. Defaults to None.
418
418
  adapter_registry (FrameworkAdapterRegistry, optional): Registry for framework adapters. Defaults to process default.
419
+ tool_resolver (ToolResolver, optional): Canonical tool resolver. Defaults to the shared context-local resolver so discovery runs once per run.
419
420
 
420
421
  Attributes:
421
422
  agent_file (str): The path to the agent file.
@@ -448,9 +449,14 @@ class AgentsGenerator:
448
449
  elif os.environ.get('LOGLEVEL'):
449
450
  self.logger.setLevel(getattr(logging, os.environ.get('LOGLEVEL', 'INFO').upper(), logging.INFO))
450
451
 
451
- # Initialize tool resolver (single source of truth for tool resolution)
452
- from .tool_resolver import ToolResolver
453
- self.tool_resolver = ToolResolver()
452
+ # Initialize tool resolver (single source of truth for tool resolution).
453
+ # DI-friendly: callers (e.g. AutoGenerator hand-off, tests) may pass a
454
+ # resolver; otherwise share the context-local default so tool discovery
455
+ # runs once per run instead of once per generator construction.
456
+ if tool_resolver is None:
457
+ from .tool_resolver import _get_default_resolver
458
+ tool_resolver = _get_default_resolver()
459
+ self.tool_resolver = tool_resolver
454
460
 
455
461
  # DI-friendly: tests/multi-tenant runtimes pass their own registry;
456
462
  # CLI users get the process default.
@@ -168,6 +168,109 @@ def list_registered_agents() -> list:
168
168
  return list(_agent_registry.keys())
169
169
 
170
170
 
171
+ def _is_real_agent(agent: Any) -> bool:
172
+ """Return True when ``agent`` is a genuine ``praisonaiagents`` ``Agent``.
173
+
174
+ Uses ``isinstance`` against the real ``Agent`` class so **subclasses defined
175
+ in application code** are recognised too (they inherit the per-session
176
+ machinery and ``clone_for_channel``). Plain mocks / lightweight callables are
177
+ not ``Agent`` instances, so they fall back to the shared instance for
178
+ backward compatibility. If ``praisonaiagents`` cannot be imported we treat
179
+ the object as non-isolatable.
180
+ """
181
+ try:
182
+ from praisonaiagents import Agent
183
+ except Exception:
184
+ return False
185
+ return isinstance(agent, Agent)
186
+
187
+
188
+ def _supports_session_isolation(agent: Any) -> bool:
189
+ """Return True when ``agent`` can be safely cloned per session.
190
+
191
+ A real ``Agent`` (or any subclass) exposes the per-session machinery
192
+ (``_session_id`` binding, ``chat_history`` and a safe clone path). Plain
193
+ mocks / lightweight callables do not, so they stay on the shared instance to
194
+ preserve backward compatibility.
195
+ """
196
+ if not _is_real_agent(agent):
197
+ return False
198
+ if not hasattr(agent, "_session_id"):
199
+ return False
200
+ if not hasattr(agent, "chat_history"):
201
+ return False
202
+ return callable(getattr(agent, "clone_for_channel", None))
203
+
204
+
205
+ def _clone_agent(agent: Any) -> Any:
206
+ """Create an independent copy of a real ``Agent``.
207
+
208
+ Prefers ``clone_for_channel`` (purpose-built for multi-channel isolation
209
+ with fresh locks), falling back to ``deepcopy``.
210
+ """
211
+ clone_for_channel = getattr(agent, "clone_for_channel", None)
212
+ if callable(clone_for_channel):
213
+ return clone_for_channel()
214
+ import copy as _copy
215
+
216
+ return _copy.deepcopy(agent)
217
+
218
+
219
+ def resolve_session_agent(agent_id: str, session_id: Optional[str]) -> Any:
220
+ """Resolve an isolated, session-scoped agent for a single request.
221
+
222
+ The registry holds a *template* agent, not a live conversation. Every
223
+ request gets its own clone so concurrent callers never share mutable
224
+ ``chat_history``:
225
+
226
+ - With a ``session_id``: the clone is bound to that session so its history
227
+ is loaded from (and persisted to) the shared, file-locked session store —
228
+ giving continuity across requests and isolation between sessions.
229
+ - Without a ``session_id``: the clone is ephemeral (no session binding), so
230
+ no global state is mutated.
231
+
232
+ Agents that don't support cloning/session binding (e.g. plain mocks) fall
233
+ back to the shared registry instance for backward compatibility.
234
+ """
235
+ template = get_agent(agent_id)
236
+ if template is None:
237
+ return None
238
+
239
+ if not _supports_session_isolation(template):
240
+ return template
241
+
242
+ try:
243
+ agent = _clone_agent(template)
244
+ except Exception as e:
245
+ # A clone failure must never silently fall back to the shared template:
246
+ # doing so would leak one session's chat_history into another. Fail the
247
+ # request instead so isolation is guaranteed.
248
+ logger.error(
249
+ f"Failed to clone agent '{agent_id}' for session isolation: {e}"
250
+ )
251
+ raise RuntimeError(
252
+ f"Failed to isolate agent '{agent_id}' for session: {e}"
253
+ ) from e
254
+
255
+ # Reset per-request conversation state so the clone starts clean and
256
+ # (re)loads the requested session's history lazily on first chat.
257
+ try:
258
+ agent.chat_history = []
259
+ except Exception:
260
+ pass
261
+ if hasattr(agent, "_session_store_initialized"):
262
+ agent._session_store_initialized = False
263
+ if session_id:
264
+ agent._session_id = session_id
265
+ if hasattr(agent, "_history_session_id"):
266
+ agent._history_session_id = session_id
267
+ else:
268
+ agent._session_id = None
269
+ if hasattr(agent, "_history_session_id"):
270
+ agent._history_session_id = None
271
+ return agent
272
+
273
+
171
274
  def _supports_async_start(agent: Any) -> bool:
172
275
  """Return True if agent.astart is a coroutine function."""
173
276
  astart = getattr(agent, "astart", None)
@@ -218,8 +321,17 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
218
321
  }
219
322
  ```
220
323
  """
221
- # Get agent from registry
222
- agent = get_agent(agent_id)
324
+ # Resolve a per-session isolated agent view so concurrent callers never
325
+ # share mutable chat_history. A provided session_id gives continuity via
326
+ # the shared session store; its absence yields an ephemeral conversation.
327
+ try:
328
+ agent = resolve_session_agent(agent_id, request.session_id)
329
+ except Exception as e:
330
+ logger.error(f"Failed to isolate agent {agent_id}: {e}")
331
+ raise HTTPException(
332
+ status_code=500,
333
+ detail=f"Agent execution failed: {str(e)}"
334
+ )
223
335
  if not agent:
224
336
  logger.error(f"Agent not found: {agent_id}")
225
337
  raise HTTPException(
@@ -228,7 +340,7 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
228
340
  )
229
341
 
230
342
  try:
231
- # Set session ID if provided
343
+ # Session ID echoed back to the caller
232
344
  session_id = request.session_id or "default"
233
345
 
234
346
  # Apply agent config overrides if provided
@@ -362,15 +474,19 @@ async def invoke_agent_standalone(
362
474
  This can be used in environments where FastAPI is not available
363
475
  or when integrating with other web frameworks.
364
476
  """
365
- agent = get_agent(agent_id)
366
- if not agent:
477
+ if get_agent(agent_id) is None:
367
478
  return {
368
479
  "error": f"Agent '{agent_id}' not found",
369
480
  "status": "error",
370
481
  "available_agents": list_registered_agents()
371
482
  }
372
-
483
+
373
484
  try:
485
+ # Per-session isolated agent view (see resolve_session_agent). Done
486
+ # inside the try so a clone/isolation failure returns a clean error
487
+ # rather than leaking one session's history into another.
488
+ agent = resolve_session_agent(agent_id, session_id)
489
+
374
490
  # Apply config if provided
375
491
  if agent_config:
376
492
  logger.debug(f"Agent config provided: {agent_config}")
@@ -733,10 +733,50 @@ class BaseAutoGenerator:
733
733
  raise error[0]
734
734
  return result[0]
735
735
 
736
- @staticmethod
737
- def get_available_tools() -> List[str]:
738
- """Return list of available tools for agent assignment."""
739
- return AVAILABLE_TOOLS.copy()
736
+ def _get_tool_resolver(self):
737
+ """Lazily construct the canonical ToolResolver (single source of truth).
738
+
739
+ Uses the shared context-local resolver so every generator in a run
740
+ (auto phase + AgentsGenerator + workflow/job generators) reuses one
741
+ warm cache instead of repeating full tool discovery. Kept lazy so
742
+ importing auto.py stays cheap and so a resolver-construction failure
743
+ never blocks generation — callers fall back to keyword/legacy hints.
744
+ """
745
+ resolver = getattr(self, "_tool_resolver", None)
746
+ if resolver is None:
747
+ try:
748
+ from .tool_resolver import _get_default_resolver
749
+ resolver = _get_default_resolver()
750
+ except Exception as e: # pragma: no cover - defensive
751
+ logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
752
+ resolver = False # sentinel: attempted, not available
753
+ self._tool_resolver = resolver
754
+ return resolver or None
755
+
756
+ def _available_tools(self) -> List[str]:
757
+ """Return the real, installed tool names from the canonical ToolResolver.
758
+
759
+ This is the single source of truth shared with AgentsGenerator. Returns
760
+ an empty list if the resolver is unavailable so callers can fall back.
761
+ """
762
+ resolver = self._get_tool_resolver()
763
+ if resolver is None:
764
+ return []
765
+ try:
766
+ return sorted(resolver.list_available().keys())
767
+ except Exception as e: # pragma: no cover - defensive
768
+ logger.debug("ToolResolver.list_available() failed (%s).", e)
769
+ return []
770
+
771
+ def get_available_tools(self) -> List[str]:
772
+ """Return list of available tools for agent assignment.
773
+
774
+ Routes through the canonical ToolResolver (single source of truth) so
775
+ the LLM is shown only tools that are actually installed. Falls back to
776
+ the frozen ``AVAILABLE_TOOLS`` list solely when the resolver is
777
+ unavailable or returns nothing.
778
+ """
779
+ return self._available_tools() or AVAILABLE_TOOLS.copy()
740
780
 
741
781
  @staticmethod
742
782
  def analyze_complexity(topic: str) -> str:
@@ -1103,38 +1143,6 @@ class AutoGenerator(BaseAutoGenerator):
1103
1143
 
1104
1144
  return merged_data
1105
1145
 
1106
- def _get_tool_resolver(self):
1107
- """Lazily construct the canonical ToolResolver (single source of truth).
1108
-
1109
- Kept lazy so importing auto.py stays cheap and so a resolver-construction
1110
- failure never blocks generation — callers fall back to keyword hints.
1111
- """
1112
- resolver = getattr(self, "_tool_resolver", None)
1113
- if resolver is None:
1114
- try:
1115
- from .tool_resolver import ToolResolver
1116
- resolver = ToolResolver()
1117
- except Exception as e: # pragma: no cover - defensive
1118
- logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
1119
- resolver = False # sentinel: attempted, not available
1120
- self._tool_resolver = resolver
1121
- return resolver or None
1122
-
1123
- def _available_tools(self) -> List[str]:
1124
- """Return the real, installed tool names from the canonical ToolResolver.
1125
-
1126
- This is the single source of truth shared with AgentsGenerator. Returns
1127
- an empty list if the resolver is unavailable so callers can fall back.
1128
- """
1129
- resolver = self._get_tool_resolver()
1130
- if resolver is None:
1131
- return []
1132
- try:
1133
- return sorted(resolver.list_available().keys())
1134
- except Exception as e: # pragma: no cover - defensive
1135
- logger.debug("ToolResolver.list_available() failed (%s).", e)
1136
- return []
1137
-
1138
1146
  def discover_tools_for_topic(self) -> List[str]:
1139
1147
  """
1140
1148
  Discover appropriate tools for the topic.
@@ -0,0 +1 @@
1
+ __version__ = "4.6.151"
@@ -12,12 +12,12 @@ dependencies = [
12
12
  "rich>=13.7",
13
13
  "markdown>=3.5",
14
14
  "pyparsing>=3.0.0",
15
- "praisonaiagents>=1.6.153",
16
- "praisonai-code>=0.0.49",
17
- "praisonai-bot>=0.0.34",
18
- "praisonai-train>=0.0.5",
19
- "praisonai-browser>=0.0.2",
20
- "praisonai-mcp>=0.0.2",
15
+ "praisonaiagents>=1.6.154",
16
+ "praisonai-code>=0.0.50",
17
+ "praisonai-bot>=0.0.35",
18
+ "praisonai-train>=0.0.6",
19
+ "praisonai-browser>=0.0.3",
20
+ "praisonai-mcp>=0.0.3",
21
21
  "python-dotenv>=0.19.0",
22
22
  "litellm>=1.83.14,<2",
23
23
  "PyYAML>=6.0",
@@ -333,6 +333,141 @@ class TestAgentInvokeFastAPI:
333
333
  assert response.status_code == 404
334
334
 
335
335
 
336
+ class TestSessionIsolation:
337
+ """Verify session_id yields isolated + continuous conversations (Issue #3105)."""
338
+
339
+ def test_resolve_session_agent_falls_back_for_mocks(self):
340
+ """Non-Agent objects (mocks) stay on the shared instance for back-compat."""
341
+ from praisonai.api.agent_invoke import (
342
+ register_agent,
343
+ unregister_agent,
344
+ resolve_session_agent,
345
+ )
346
+
347
+ mock_agent = Mock(spec=["start", "name"])
348
+ register_agent("mock-fallback", mock_agent)
349
+ try:
350
+ resolved = resolve_session_agent("mock-fallback", "s1")
351
+ assert resolved is mock_agent
352
+ finally:
353
+ unregister_agent("mock-fallback")
354
+
355
+ def test_resolve_session_agent_missing_returns_none(self):
356
+ from praisonai.api.agent_invoke import resolve_session_agent
357
+
358
+ assert resolve_session_agent("does-not-exist", "s1") is None
359
+
360
+ def test_real_agent_clones_are_isolated(self, tmp_path, monkeypatch):
361
+ """Two session_ids produce distinct, isolated agent clones."""
362
+ praisonaiagents = pytest.importorskip("praisonaiagents")
363
+ from praisonai.api.agent_invoke import (
364
+ register_agent,
365
+ unregister_agent,
366
+ resolve_session_agent,
367
+ )
368
+
369
+ agent = praisonaiagents.Agent(
370
+ name="iso-agent",
371
+ instructions="test",
372
+ llm="gpt-4o-mini",
373
+ )
374
+ register_agent("iso-agent", agent)
375
+ try:
376
+ a = resolve_session_agent("iso-agent", "A")
377
+ b = resolve_session_agent("iso-agent", "B")
378
+
379
+ # Distinct clones, distinct histories, correct session binding.
380
+ assert a is not b
381
+ assert a is not agent
382
+ assert a._session_id == "A"
383
+ assert b._session_id == "B"
384
+ assert a.chat_history is not b.chat_history
385
+
386
+ # Mutating one clone's history does not affect the other or template.
387
+ a.chat_history.append({"role": "user", "content": "hi from A"})
388
+ assert b.chat_history == []
389
+ assert agent.chat_history == []
390
+ finally:
391
+ unregister_agent("iso-agent")
392
+
393
+ def test_no_session_id_is_ephemeral(self):
394
+ """Absent session_id yields an unbound (ephemeral) clone."""
395
+ praisonaiagents = pytest.importorskip("praisonaiagents")
396
+ from praisonai.api.agent_invoke import (
397
+ register_agent,
398
+ unregister_agent,
399
+ resolve_session_agent,
400
+ )
401
+
402
+ agent = praisonaiagents.Agent(
403
+ name="ephemeral-agent",
404
+ instructions="test",
405
+ llm="gpt-4o-mini",
406
+ )
407
+ register_agent("ephemeral-agent", agent)
408
+ try:
409
+ clone = resolve_session_agent("ephemeral-agent", None)
410
+ assert clone is not agent
411
+ assert clone._session_id is None
412
+ assert clone.chat_history == []
413
+ finally:
414
+ unregister_agent("ephemeral-agent")
415
+
416
+ def test_agent_subclass_is_isolated(self):
417
+ """Application-defined ``Agent`` subclasses are isolated, not shared."""
418
+ praisonaiagents = pytest.importorskip("praisonaiagents")
419
+ from praisonai.api.agent_invoke import (
420
+ register_agent,
421
+ unregister_agent,
422
+ resolve_session_agent,
423
+ )
424
+
425
+ class MyAgent(praisonaiagents.Agent):
426
+ pass
427
+
428
+ agent = MyAgent(name="sub-agent", instructions="test", llm="gpt-4o-mini")
429
+ register_agent("sub-agent", agent)
430
+ try:
431
+ a = resolve_session_agent("sub-agent", "A")
432
+ b = resolve_session_agent("sub-agent", "B")
433
+ # Subclass must be recognised and cloned per session, not shared.
434
+ assert a is not agent
435
+ assert isinstance(a, MyAgent)
436
+ assert a is not b
437
+ assert a._session_id == "A"
438
+ assert b._session_id == "B"
439
+ assert a.chat_history is not b.chat_history
440
+ finally:
441
+ unregister_agent("sub-agent")
442
+
443
+ def test_clone_failure_raises_instead_of_sharing(self, monkeypatch):
444
+ """A clone failure must raise, never fall back to the shared template."""
445
+ praisonaiagents = pytest.importorskip("praisonaiagents")
446
+ from praisonai.api import agent_invoke
447
+ from praisonai.api.agent_invoke import (
448
+ register_agent,
449
+ unregister_agent,
450
+ resolve_session_agent,
451
+ )
452
+
453
+ agent = praisonaiagents.Agent(
454
+ name="clonefail-agent",
455
+ instructions="test",
456
+ llm="gpt-4o-mini",
457
+ )
458
+ register_agent("clonefail-agent", agent)
459
+
460
+ def _boom(_agent):
461
+ raise RuntimeError("clone exploded")
462
+
463
+ monkeypatch.setattr(agent_invoke, "_clone_agent", _boom)
464
+ try:
465
+ with pytest.raises(RuntimeError):
466
+ resolve_session_agent("clonefail-agent", "A")
467
+ finally:
468
+ unregister_agent("clonefail-agent")
469
+
470
+
336
471
  def test_agent_invoke_smoke_test():
337
472
  """Smoke test to verify agent invoke module can be imported and used."""
338
473
  try:
@@ -1,57 +0,0 @@
1
- import logging
2
- from typing import Dict, Any, Callable, Optional, Union
3
- import asyncio
4
-
5
- logger = logging.getLogger(__name__)
6
-
7
- class CallbackManager:
8
- """Manages callbacks for the PraisonAI UI"""
9
-
10
- def __init__(self):
11
- self._callbacks: Dict[str, Dict[str, Union[Callable, bool]]] = {}
12
-
13
- def register(self, name: str, callback: Callable, is_async: bool = False) -> None:
14
- """Register a callback function"""
15
- self._callbacks[name] = {
16
- 'func': callback,
17
- 'is_async': is_async
18
- }
19
-
20
- async def call(self, name: str, **kwargs) -> None:
21
- """Call a registered callback"""
22
- if name not in self._callbacks:
23
- logger.warning(f"No callback registered for {name}")
24
- return
25
-
26
- callback_info = self._callbacks[name]
27
- func = callback_info['func']
28
- is_async = callback_info['is_async']
29
-
30
- try:
31
- if is_async:
32
- await func(**kwargs)
33
- else:
34
- if asyncio.iscoroutinefunction(func):
35
- await func(**kwargs)
36
- else:
37
- await asyncio.get_event_loop().run_in_executor(None, lambda: func(**kwargs))
38
- except Exception as e:
39
- logger.error(f"Error in callback {name}: {str(e)}")
40
-
41
- # Global callback manager instance
42
- callback_manager = CallbackManager()
43
-
44
- def register_callback(name: str, callback: Callable, is_async: bool = False) -> None:
45
- """Register a callback with the global callback manager"""
46
- callback_manager.register(name, callback, is_async)
47
-
48
- async def trigger_callback(name: str, **kwargs) -> None:
49
- """Trigger a callback from the global callback manager"""
50
- await callback_manager.call(name, **kwargs)
51
-
52
- # Decorator for registering callbacks
53
- def callback(name: str, is_async: bool = False):
54
- def decorator(func):
55
- register_callback(name, func, is_async)
56
- return func
57
- return decorator