PraisonAI 4.6.53__tar.gz → 4.6.54__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 (826) hide show
  1. {praisonai-4.6.53 → praisonai-4.6.54}/PKG-INFO +2 -2
  2. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/SOURCES.txt +2 -0
  4. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_registry.py +38 -0
  6. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/agents_generator.py +178 -135
  7. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/email.py +23 -5
  8. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/main.py +6 -0
  9. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/db/adapter.py +10 -0
  10. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy.py +1 -1
  11. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/autogen_adapter.py +18 -0
  12. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/base.py +23 -17
  13. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/crewai_adapter.py +8 -35
  14. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/praisonai_adapter.py +6 -14
  15. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/registry.py +2 -12
  16. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/llm/registry.py +5 -14
  17. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/observability/hooks.py +32 -0
  18. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/__init__.py +3 -2
  19. praisonai-4.6.54/praisonai/persistence/conversation/_sql_base.py +498 -0
  20. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/async_postgres.py +11 -52
  21. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/async_sqlite.py +27 -59
  22. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/base.py +81 -0
  23. praisonai-4.6.54/praisonai/persistence/conversation/mysql_new.py +157 -0
  24. praisonai-4.6.54/praisonai/persistence/conversation/postgres.py +250 -0
  25. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/orchestrator.py +21 -25
  26. praisonai-4.6.54/praisonai/version.py +1 -0
  27. {praisonai-4.6.53 → praisonai-4.6.54}/pyproject.toml +1 -1
  28. praisonai-4.6.53/praisonai/persistence/conversation/postgres.py +0 -485
  29. praisonai-4.6.53/praisonai/version.py +0 -1
  30. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/dependency_links.txt +0 -0
  31. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/entry_points.txt +0 -0
  32. {praisonai-4.6.53 → praisonai-4.6.54}/PraisonAI.egg-info/top_level.txt +0 -0
  33. {praisonai-4.6.53 → praisonai-4.6.54}/README.md +0 -0
  34. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/__init__.py +0 -0
  35. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/__main__.py +0 -0
  36. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_approval_spec.py +0 -0
  37. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_async_bridge.py +0 -0
  38. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/__init__.py +0 -0
  39. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/api_md.py +0 -0
  40. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/__init__.py +0 -0
  41. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/docs_extractor.py +0 -0
  42. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/docs_generator.py +0 -0
  43. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/generator.py +0 -0
  44. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  45. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/python_extractor.py +0 -0
  46. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  47. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/rust_extractor.py +0 -0
  48. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  49. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  50. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  51. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_entrypoint.py +0 -0
  52. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_framework_availability.py +0 -0
  53. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_logging.py +0 -0
  54. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/_safe_loader.py +0 -0
  55. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/acp/__init__.py +0 -0
  56. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/acp/config.py +0 -0
  57. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/acp/safe_edit.py +0 -0
  58. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/acp/server.py +0 -0
  59. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/acp/session.py +0 -0
  60. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/adapters/__init__.py +0 -0
  61. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/adapters/readers.py +0 -0
  62. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/adapters/rerankers.py +0 -0
  63. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/adapters/retrievers.py +0 -0
  64. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/adapters/vector_stores.py +0 -0
  65. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/agent.py +0 -0
  66. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/agent_scheduler.py +0 -0
  67. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/api/agent_invoke.py +0 -0
  68. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/api/call.py +0 -0
  69. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/app/__init__.py +0 -0
  70. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/app/agentos.py +0 -0
  71. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/async_agent_scheduler.py +0 -0
  72. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/audit/__init__.py +0 -0
  73. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/audit/agent_centric.py +0 -0
  74. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/auto.py +0 -0
  75. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/__init__.py +0 -0
  76. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_ack.py +0 -0
  77. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_approval.py +0 -0
  78. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_approval_base.py +0 -0
  79. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_auth.py +0 -0
  80. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_chunk.py +0 -0
  81. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_commands.py +0 -0
  82. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_config_schema.py +0 -0
  83. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_debounce.py +0 -0
  84. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_defaults.py +0 -0
  85. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_discord_approval.py +0 -0
  86. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_dlq.py +0 -0
  87. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_email_utils.py +0 -0
  88. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_http_approval.py +0 -0
  89. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_mirror.py +0 -0
  90. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_pairing_ui.py +0 -0
  91. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_protocol_mixin.py +0 -0
  92. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_rate_limit.py +0 -0
  93. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_registry.py +0 -0
  94. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_resilience.py +0 -0
  95. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_session.py +0 -0
  96. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_slack_approval.py +0 -0
  97. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_telegram_approval.py +0 -0
  98. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_typing_indicator.py +0 -0
  99. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_unknown_user.py +0 -0
  100. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_webhook_approval.py +0 -0
  101. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  102. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/agentmail.py +0 -0
  103. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/bot.py +0 -0
  104. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/botos.py +0 -0
  105. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/discord.py +0 -0
  106. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/linear.py +0 -0
  107. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/media.py +0 -0
  108. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/slack.py +0 -0
  109. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/telegram.py +0 -0
  110. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/bots/whatsapp.py +0 -0
  111. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/__init__.py +0 -0
  112. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/agent.py +0 -0
  113. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/benchmark.py +0 -0
  114. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/cdp_agent.py +0 -0
  115. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/cdp_utils.py +0 -0
  116. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/cli.py +0 -0
  117. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/diagnostics.py +0 -0
  118. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/launcher.py +0 -0
  119. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/playwright_agent.py +0 -0
  120. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/profiling.py +0 -0
  121. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/protocol.py +0 -0
  122. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/report.py +0 -0
  123. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/server.py +0 -0
  124. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/sessions.py +0 -0
  125. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/browser/video.py +0 -0
  126. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/__init__.py +0 -0
  127. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/a2a.py +0 -0
  128. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/assistants.py +0 -0
  129. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/audio.py +0 -0
  130. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/batches.py +0 -0
  131. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/completions.py +0 -0
  132. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/container_files.py +0 -0
  133. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/containers.py +0 -0
  134. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/embeddings.py +0 -0
  135. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/files.py +0 -0
  136. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/fine_tuning.py +0 -0
  137. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/guardrails.py +0 -0
  138. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/images.py +0 -0
  139. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/mcp.py +0 -0
  140. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/messages.py +0 -0
  141. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/moderations.py +0 -0
  142. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/ocr.py +0 -0
  143. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/passthrough.py +0 -0
  144. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/rag.py +0 -0
  145. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/realtime.py +0 -0
  146. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/rerank.py +0 -0
  147. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/responses.py +0 -0
  148. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/search.py +0 -0
  149. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/skills.py +0 -0
  150. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/vector_store_files.py +0 -0
  151. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/vector_stores.py +0 -0
  152. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/capabilities/videos.py +0 -0
  153. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/claw/__init__.py +0 -0
  154. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/claw/default_app.py +0 -0
  155. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/__init__.py +0 -0
  156. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/_paths.py +0 -0
  157. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/app.py +0 -0
  158. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/branding.py +0 -0
  159. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/__init__.py +0 -0
  160. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/acp.py +0 -0
  161. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/agents.py +0 -0
  162. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/app.py +0 -0
  163. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/audit.py +0 -0
  164. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/batch.py +0 -0
  165. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/benchmark.py +0 -0
  166. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/bot.py +0 -0
  167. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/browser.py +0 -0
  168. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/call.py +0 -0
  169. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/chat.py +0 -0
  170. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/claw.py +0 -0
  171. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/code.py +0 -0
  172. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/commit.py +0 -0
  173. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/completion.py +0 -0
  174. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/config.py +0 -0
  175. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/context.py +0 -0
  176. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/dashboard.py +0 -0
  177. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/debug.py +0 -0
  178. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/deploy.py +0 -0
  179. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/diag.py +0 -0
  180. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/docs.py +0 -0
  181. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/doctor.py +0 -0
  182. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/endpoints.py +0 -0
  183. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/environment.py +0 -0
  184. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/eval.py +0 -0
  185. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/examples.py +0 -0
  186. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/flow.py +0 -0
  187. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/gateway.py +0 -0
  188. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/github.py +0 -0
  189. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/hooks.py +0 -0
  190. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/kanban.py +0 -0
  191. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/knowledge.py +0 -0
  192. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/langextract.py +0 -0
  193. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/langfuse.py +0 -0
  194. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/loop.py +0 -0
  195. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/lsp.py +0 -0
  196. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/managed.py +0 -0
  197. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/mcp.py +0 -0
  198. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/memory.py +0 -0
  199. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/mint_link.py +0 -0
  200. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/n8n.py +0 -0
  201. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/obs.py +0 -0
  202. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/onboard.py +0 -0
  203. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/package.py +0 -0
  204. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/pairing.py +0 -0
  205. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/paths.py +0 -0
  206. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/plugins.py +0 -0
  207. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/port.py +0 -0
  208. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/profile.py +0 -0
  209. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/publish.py +0 -0
  210. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/rag.py +0 -0
  211. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/realtime.py +0 -0
  212. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/recipe.py +0 -0
  213. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/registry.py +0 -0
  214. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/replay.py +0 -0
  215. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/research.py +0 -0
  216. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/retrieval.py +0 -0
  217. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/rules.py +0 -0
  218. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/run.py +0 -0
  219. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/sandbox.py +0 -0
  220. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/schedule.py +0 -0
  221. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/serve.py +0 -0
  222. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/session.py +0 -0
  223. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/setup.py +0 -0
  224. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/skills.py +0 -0
  225. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/standardise.py +0 -0
  226. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/templates.py +0 -0
  227. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/test.py +0 -0
  228. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/todo.py +0 -0
  229. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/tools.py +0 -0
  230. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/traces.py +0 -0
  231. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/tracker.py +0 -0
  232. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/train.py +0 -0
  233. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/ui.py +0 -0
  234. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/up.py +0 -0
  235. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/version.py +0 -0
  236. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/commands/workflow.py +0 -0
  237. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/config_loader.py +0 -0
  238. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/configuration/__init__.py +0 -0
  239. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/configuration/loader.py +0 -0
  240. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/configuration/paths.py +0 -0
  241. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/configuration/schema.py +0 -0
  242. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/execution/__init__.py +0 -0
  243. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/execution/core.py +0 -0
  244. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/execution/profiler.py +0 -0
  245. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/execution/request.py +0 -0
  246. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/execution/result.py +0 -0
  247. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/fallback_schema.py +0 -0
  248. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/__init__.py +0 -0
  249. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/acp.py +0 -0
  250. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/action_orchestrator.py +0 -0
  251. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/agent_scheduler.py +0 -0
  252. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/agent_tools.py +0 -0
  253. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/agents.py +0 -0
  254. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/approval.py +0 -0
  255. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/at_mentions.py +0 -0
  256. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/audit_cli.py +0 -0
  257. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/auto_memory.py +0 -0
  258. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/auto_mode.py +0 -0
  259. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/autonomy_mode.py +0 -0
  260. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/background.py +0 -0
  261. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/base.py +0 -0
  262. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/benchmark.py +0 -0
  263. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/bots_cli.py +0 -0
  264. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/capabilities.py +0 -0
  265. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/checkpoints.py +0 -0
  266. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/cli_profiler.py +0 -0
  267. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/code_intelligence.py +0 -0
  268. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/compaction.py +0 -0
  269. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/compare.py +0 -0
  270. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/config_hierarchy.py +0 -0
  271. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/context_manager.py +0 -0
  272. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/cost_tracker.py +0 -0
  273. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/csv_test_runner.py +0 -0
  274. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/debug.py +0 -0
  275. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/deploy.py +0 -0
  276. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/diag.py +0 -0
  277. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/display_jsonl.py +0 -0
  278. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/__init__.py +0 -0
  279. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  280. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  281. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  282. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  283. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  284. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  285. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  286. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  287. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  288. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  289. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  290. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  291. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  292. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  293. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  294. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  295. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  296. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  297. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/engine.py +0 -0
  298. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/formatters.py +0 -0
  299. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/handler.py +0 -0
  300. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/models.py +0 -0
  301. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/doctor/registry.py +0 -0
  302. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/endpoints.py +0 -0
  303. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/eval.py +0 -0
  304. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/examples.py +0 -0
  305. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/external_agents.py +0 -0
  306. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/fast_context.py +0 -0
  307. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/file_history.py +0 -0
  308. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/flow_display.py +0 -0
  309. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/gateway.py +0 -0
  310. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/git_attribution.py +0 -0
  311. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/git_integration.py +0 -0
  312. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/guardrail.py +0 -0
  313. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/handoff.py +0 -0
  314. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/hooks.py +0 -0
  315. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/hybrid_workflow.py +0 -0
  316. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/image.py +0 -0
  317. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/interactive_core_headless.py +0 -0
  318. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/interactive_runtime.py +0 -0
  319. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/interactive_test_harness.py +0 -0
  320. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/interactive_tools.py +0 -0
  321. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/interactive_tui.py +0 -0
  322. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/job_workflow.py +0 -0
  323. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/jobs.py +0 -0
  324. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/knowledge.py +0 -0
  325. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/knowledge_cli.py +0 -0
  326. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/lite.py +0 -0
  327. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/logs.py +0 -0
  328. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/lsp_cli.py +0 -0
  329. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  330. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/mcp.py +0 -0
  331. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/message_queue.py +0 -0
  332. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/metrics.py +0 -0
  333. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/migrate.py +0 -0
  334. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/migration_flow.py +0 -0
  335. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/migration_spec.py +0 -0
  336. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/n8n.py +0 -0
  337. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/observability.py +0 -0
  338. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/ollama.py +0 -0
  339. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/onboard.py +0 -0
  340. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/output_modes.py +0 -0
  341. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/output_style.py +0 -0
  342. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/package.py +0 -0
  343. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/performance.py +0 -0
  344. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/persistence.py +0 -0
  345. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/plugin_cli.py +0 -0
  346. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profile.py +0 -0
  347. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profiler/__init__.py +0 -0
  348. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profiler/core.py +0 -0
  349. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profiler/optimizations.py +0 -0
  350. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profiler/suite.py +0 -0
  351. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/profiling.py +0 -0
  352. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/__init__.py +0 -0
  353. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/manager.py +0 -0
  354. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/models.py +0 -0
  355. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/persistence.py +0 -0
  356. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/scheduler.py +0 -0
  357. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/queue/worker.py +0 -0
  358. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/recipe.py +0 -0
  359. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/recipe_creator.py +0 -0
  360. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/recipe_optimizer.py +0 -0
  361. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/recipe_prompts.py +0 -0
  362. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/recipes.py +0 -0
  363. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/registry.py +0 -0
  364. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/repo_map.py +0 -0
  365. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/router.py +0 -0
  366. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/safe_shell.py +0 -0
  367. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/sandbox_cli.py +0 -0
  368. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/sandbox_executor.py +0 -0
  369. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/sdk_knowledge.py +0 -0
  370. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/serve.py +0 -0
  371. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/session.py +0 -0
  372. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/setup/__init__.py +0 -0
  373. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/setup/handler.py +0 -0
  374. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/setup/templates.py +0 -0
  375. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/skills.py +0 -0
  376. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/slash_commands.py +0 -0
  377. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/telemetry.py +0 -0
  378. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/templates.py +0 -0
  379. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/thinking.py +0 -0
  380. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/todo.py +0 -0
  381. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tools.py +0 -0
  382. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/__init__.py +0 -0
  383. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/app.py +0 -0
  384. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/cli.py +0 -0
  385. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/config.py +0 -0
  386. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/debug.py +0 -0
  387. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/events.py +0 -0
  388. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/mock_provider.py +0 -0
  389. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/orchestrator.py +0 -0
  390. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  391. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/help.py +0 -0
  392. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/main.py +0 -0
  393. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/queue.py +0 -0
  394. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/session.py +0 -0
  395. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/screens/settings.py +0 -0
  396. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/session_store.py +0 -0
  397. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  398. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  399. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  400. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  401. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  402. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  403. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/status.py +0 -0
  404. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  405. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/wizard.py +0 -0
  406. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/workflow.py +0 -0
  407. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/features/yaml_utils.py +0 -0
  408. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/__init__.py +0 -0
  409. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/async_tui.py +0 -0
  410. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/config.py +0 -0
  411. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/core.py +0 -0
  412. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/events.py +0 -0
  413. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  414. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  415. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  416. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/praison_io.py +0 -0
  417. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/repl.py +0 -0
  418. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/split_tui.py +0 -0
  419. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/interactive/tui_app.py +0 -0
  420. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/langfuse_client.py +0 -0
  421. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/legacy.py +0 -0
  422. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/output/__init__.py +0 -0
  423. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/output/console.py +0 -0
  424. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/schedule_cli.py +0 -0
  425. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/schema_provider.py +0 -0
  426. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/session/__init__.py +0 -0
  427. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/session/unified.py +0 -0
  428. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/state/__init__.py +0 -0
  429. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/state/identifiers.py +0 -0
  430. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/state/sessions.py +0 -0
  431. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/__init__.py +0 -0
  432. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/config.py +0 -0
  433. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/events.py +0 -0
  434. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/mg_backend.py +0 -0
  435. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/plain.py +0 -0
  436. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/ui/rich_backend.py +0 -0
  437. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli/unified_schema.py +0 -0
  438. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli_backends/__init__.py +0 -0
  439. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli_backends/claude.py +0 -0
  440. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/cli_backends/registry.py +0 -0
  441. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/__init__.py +0 -0
  442. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/agent_tools.py +0 -0
  443. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/diff/__init__.py +0 -0
  444. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/diff/diff_strategy.py +0 -0
  445. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/__init__.py +0 -0
  446. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/apply_diff.py +0 -0
  447. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/execute_command.py +0 -0
  448. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/list_files.py +0 -0
  449. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/read_file.py +0 -0
  450. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/search_replace.py +0 -0
  451. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/tools/write_file.py +0 -0
  452. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/utils/__init__.py +0 -0
  453. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/utils/file_utils.py +0 -0
  454. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/utils/ignore_utils.py +0 -0
  455. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/code/utils/text_utils.py +0 -0
  456. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/__init__.py +0 -0
  457. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/artifact_store.py +0 -0
  458. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/config.py +0 -0
  459. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/history_store.py +0 -0
  460. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/queue.py +0 -0
  461. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/setup.py +0 -0
  462. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/context/terminal_logger.py +0 -0
  463. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/daemon/__init__.py +0 -0
  464. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/daemon/launchd.py +0 -0
  465. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/daemon/systemd.py +0 -0
  466. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/daemon/windows.py +0 -0
  467. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/db/__init__.py +0 -0
  468. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/__init__.py +0 -0
  469. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/api.py +0 -0
  470. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/docker.py +0 -0
  471. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/doctor.py +0 -0
  472. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/main.py +0 -0
  473. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/models.py +0 -0
  474. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/providers/__init__.py +0 -0
  475. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/providers/aws.py +0 -0
  476. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/providers/azure.py +0 -0
  477. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/providers/base.py +0 -0
  478. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/providers/gcp.py +0 -0
  479. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/deploy/schema.py +0 -0
  480. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/__init__.py +0 -0
  481. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/classifier.py +0 -0
  482. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/executor.py +0 -0
  483. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/extractor.py +0 -0
  484. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/reporter.py +0 -0
  485. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/runner.py +0 -0
  486. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/docs_runner/workspace.py +0 -0
  487. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/__init__.py +0 -0
  488. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/a2u_server.py +0 -0
  489. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/discovery.py +0 -0
  490. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/__init__.py +0 -0
  491. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/a2a.py +0 -0
  492. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/a2u.py +0 -0
  493. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/agents_api.py +0 -0
  494. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/base.py +0 -0
  495. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/mcp.py +0 -0
  496. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/recipe.py +0 -0
  497. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  498. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/registry.py +0 -0
  499. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/endpoints/server.py +0 -0
  500. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/__init__.py +0 -0
  501. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/client.py +0 -0
  502. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  503. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  504. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/components/__init__.py +0 -0
  505. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/converter.py +0 -0
  506. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/flow/helpers.py +0 -0
  507. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/__init__.py +0 -0
  508. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/framework_adapters/validators.py +0 -0
  509. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/__init__.py +0 -0
  510. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/auth.py +0 -0
  511. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/cookie_auth.py +0 -0
  512. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/exec_approval.py +0 -0
  513. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/gateway_approval.py +0 -0
  514. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/kanban_dispatcher.py +0 -0
  515. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/magic_link.py +0 -0
  516. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/origin_check.py +0 -0
  517. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/pairing.py +0 -0
  518. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/pairing_routes.py +0 -0
  519. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/port_utils.py +0 -0
  520. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/push_channels.py +0 -0
  521. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/push_delivery.py +0 -0
  522. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/push_polling.py +0 -0
  523. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/push_presence.py +0 -0
  524. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/rate_limiter.py +0 -0
  525. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/redis_pubsub.py +0 -0
  526. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/server.py +0 -0
  527. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/gateway/unicode_utils.py +0 -0
  528. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/inbuilt_tools/__init__.py +0 -0
  529. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  530. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/inc/__init__.py +0 -0
  531. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/inc/config.py +0 -0
  532. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/inc/models.py +0 -0
  533. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/__init__.py +0 -0
  534. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/_legacy_handlers.py +0 -0
  535. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/__init__.py +0 -0
  536. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  537. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/hooks_query.py +0 -0
  538. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  539. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/schedules_runner.py +0 -0
  540. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/usage_bridge.py +0 -0
  541. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/bridges/workflows_service.py +0 -0
  542. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/context_files.py +0 -0
  543. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/gateway_host.py +0 -0
  544. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/host_app.py +0 -0
  545. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/pages/__init__.py +0 -0
  546. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/pages/bot_health.py +0 -0
  547. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integration/pages/workflow_runs.py +0 -0
  548. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/__init__.py +0 -0
  549. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/_session_info.py +0 -0
  550. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/_tool_aliases.py +0 -0
  551. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/_unified_registry.py +0 -0
  552. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/base.py +0 -0
  553. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/claude_code.py +0 -0
  554. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/codex_cli.py +0 -0
  555. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/__init__.py +0 -0
  556. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/daytona.py +0 -0
  557. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/docker.py +0 -0
  558. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/e2b.py +0 -0
  559. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/flyio.py +0 -0
  560. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/local.py +0 -0
  561. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/compute/modal_compute.py +0 -0
  562. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/cursor_cli.py +0 -0
  563. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/db_session_adapter.py +0 -0
  564. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/gemini_cli.py +0 -0
  565. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/hosted_agent.py +0 -0
  566. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/local_agent.py +0 -0
  567. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/managed_agents.py +0 -0
  568. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/managed_local.py +0 -0
  569. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/registry.py +0 -0
  570. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/integrations/sandboxed_agent.py +0 -0
  571. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/__init__.py +0 -0
  572. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/executor.py +0 -0
  573. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/models.py +0 -0
  574. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/router.py +0 -0
  575. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/server.py +0 -0
  576. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/jobs/store.py +0 -0
  577. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/kanban/__init__.py +0 -0
  578. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/kanban/models.py +0 -0
  579. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/kanban/paths.py +0 -0
  580. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/kanban/sqlite_store.py +0 -0
  581. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/llm/__init__.py +0 -0
  582. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/llm/env.py +0 -0
  583. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/__init__.py +0 -0
  584. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/__init__.py +0 -0
  585. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/agents.py +0 -0
  586. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  587. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  588. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  589. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  590. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/memory.py +0 -0
  591. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/prompts.py +0 -0
  592. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/resources.py +0 -0
  593. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  594. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/auth/__init__.py +0 -0
  595. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/auth/api_key.py +0 -0
  596. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/auth/oauth.py +0 -0
  597. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/auth/oidc.py +0 -0
  598. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/auth/scopes.py +0 -0
  599. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/cli.py +0 -0
  600. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/elicitation.py +0 -0
  601. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/icons.py +0 -0
  602. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/recipe_adapter.py +0 -0
  603. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/recipe_cli.py +0 -0
  604. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/registry.py +0 -0
  605. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/sampling.py +0 -0
  606. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/server.py +0 -0
  607. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/tasks.py +0 -0
  608. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/tool_index.py +0 -0
  609. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/transports/__init__.py +0 -0
  610. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/transports/http_stream.py +0 -0
  611. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/mcp_server/transports/stdio.py +0 -0
  612. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/n8n/__init__.py +0 -0
  613. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/n8n/client.py +0 -0
  614. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/n8n/converter.py +0 -0
  615. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/n8n/preview.py +0 -0
  616. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/n8n/reverse_converter.py +0 -0
  617. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/observability/__init__.py +0 -0
  618. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/observability/langextract.py +0 -0
  619. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/observability/langfuse.py +0 -0
  620. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/__init__.py +0 -0
  621. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/_valkey_client.py +0 -0
  622. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/config.py +0 -0
  623. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/async_mysql.py +0 -0
  624. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/json_store.py +0 -0
  625. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/mysql.py +0 -0
  626. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/singlestore.py +0 -0
  627. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/sqlite.py +0 -0
  628. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/supabase.py +0 -0
  629. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/surrealdb.py +0 -0
  630. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  631. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/conversation/turso.py +0 -0
  632. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/factory.py +0 -0
  633. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/hooks/__init__.py +0 -0
  634. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  635. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/__init__.py +0 -0
  636. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/base.py +0 -0
  637. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/cassandra.py +0 -0
  638. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/chroma.py +0 -0
  639. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  640. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  641. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/couchbase.py +0 -0
  642. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/lancedb.py +0 -0
  643. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  644. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  645. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  646. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/milvus.py +0 -0
  647. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  648. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/pgvector.py +0 -0
  649. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/pinecone.py +0 -0
  650. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/qdrant.py +0 -0
  651. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  652. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  653. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  654. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  655. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  656. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/knowledge/weaviate.py +0 -0
  657. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/migrations/__init__.py +0 -0
  658. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/migrations/manager.py +0 -0
  659. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/registry.py +0 -0
  660. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/__init__.py +0 -0
  661. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/async_mongodb.py +0 -0
  662. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/base.py +0 -0
  663. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/dynamodb.py +0 -0
  664. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/firestore.py +0 -0
  665. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/gcs.py +0 -0
  666. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/memory.py +0 -0
  667. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/mongodb.py +0 -0
  668. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/redis.py +0 -0
  669. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/upstash.py +0 -0
  670. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/state/valkey.py +0 -0
  671. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/tests/__init__.py +0 -0
  672. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/tests/test_all_backends.py +0 -0
  673. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  674. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/profiler.py +0 -0
  675. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/push/__init__.py +0 -0
  676. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/push/client.py +0 -0
  677. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/push/transports.py +0 -0
  678. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/__init__.py +0 -0
  679. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/bridge.py +0 -0
  680. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/core.py +0 -0
  681. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/exceptions.py +0 -0
  682. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/history.py +0 -0
  683. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/models.py +0 -0
  684. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/operations.py +0 -0
  685. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/policy.py +0 -0
  686. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/registry.py +0 -0
  687. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/runtime.py +0 -0
  688. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/security.py +0 -0
  689. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/serve.py +0 -0
  690. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/recipe/server.py +0 -0
  691. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/__init__.py +0 -0
  692. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/analyzer.py +0 -0
  693. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/applier.py +0 -0
  694. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/judge.py +0 -0
  695. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/plan.py +0 -0
  696. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/player.py +0 -0
  697. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/reader.py +0 -0
  698. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/storage.py +0 -0
  699. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/replay/writer.py +0 -0
  700. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/__init__.py +0 -0
  701. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/_compat.py +0 -0
  702. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/_shell.py +0 -0
  703. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/daytona.py +0 -0
  704. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/docker.py +0 -0
  705. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/e2b.py +0 -0
  706. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/modal.py +0 -0
  707. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/sandlock.py +0 -0
  708. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/ssh.py +0 -0
  709. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/sandbox/subprocess.py +0 -0
  710. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/__init__.py +0 -0
  711. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/_base_scheduler.py +0 -0
  712. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/agent_scheduler.py +0 -0
  713. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  714. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/base.py +0 -0
  715. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/daemon_manager.py +0 -0
  716. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/deployment.py +0 -0
  717. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/executor.py +0 -0
  718. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/shared.py +0 -0
  719. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/state_manager.py +0 -0
  720. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/scheduler/yaml_loader.py +0 -0
  721. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/security/__init__.py +0 -0
  722. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/security/audit.py +0 -0
  723. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/security/injection.py +0 -0
  724. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/security/protected.py +0 -0
  725. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/setup/__init__.py +0 -0
  726. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/setup/build.py +0 -0
  727. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/setup/post_install.py +0 -0
  728. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/setup/setup_conda_env.py +0 -0
  729. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/setup.py +0 -0
  730. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/__init__.py +0 -0
  731. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/ai_generator.py +0 -0
  732. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/config.py +0 -0
  733. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/dedupe.py +0 -0
  734. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/discovery.py +0 -0
  735. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/drift.py +0 -0
  736. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/engine.py +0 -0
  737. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/enhanced_templates.py +0 -0
  738. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/example_verifier.py +0 -0
  739. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/manifest.py +0 -0
  740. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/models.py +0 -0
  741. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/reports.py +0 -0
  742. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/templates.py +0 -0
  743. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/undo_redo.py +0 -0
  744. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/standardise/validator.py +0 -0
  745. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/__init__.py +0 -0
  746. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/dynamodb_adapter.py +0 -0
  747. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/mongodb_adapter.py +0 -0
  748. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/postgresql_adapter.py +0 -0
  749. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/redis_adapter.py +0 -0
  750. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/storage/valkey_adapter.py +0 -0
  751. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/__init__.py +0 -0
  752. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/batch_source.py +0 -0
  753. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/cli_docs_source.py +0 -0
  754. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/discovery.py +0 -0
  755. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/docs_source.py +0 -0
  756. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/examples_source.py +0 -0
  757. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/executor.py +0 -0
  758. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/models.py +0 -0
  759. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/report_viewer.py +0 -0
  760. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/reporter.py +0 -0
  761. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/suite_runner/runner.py +0 -0
  762. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/__init__.py +0 -0
  763. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/cache.py +0 -0
  764. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/dependency_checker.py +0 -0
  765. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/discovery.py +0 -0
  766. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/loader.py +0 -0
  767. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/registry.py +0 -0
  768. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/resolver.py +0 -0
  769. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/security.py +0 -0
  770. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/tool_override.py +0 -0
  771. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/templates/tools_doctor.py +0 -0
  772. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/test.py +0 -0
  773. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tool_registry.py +0 -0
  774. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tool_resolver.py +0 -0
  775. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/__init__.py +0 -0
  776. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/audio.py +0 -0
  777. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/glob_tool.py +0 -0
  778. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/grep_tool.py +0 -0
  779. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/kanban_tools.py +0 -0
  780. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/multiedit.py +0 -0
  781. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/tools/skill_manage.py +0 -0
  782. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/__init__.py +0 -0
  783. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/_ollama.py +0 -0
  784. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/__init__.py +0 -0
  785. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/grader.py +0 -0
  786. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/hook.py +0 -0
  787. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/models.py +0 -0
  788. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/orchestrator.py +0 -0
  789. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/agents/storage.py +0 -0
  790. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/llm/__init__.py +0 -0
  791. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train/llm/trainer.py +0 -0
  792. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train.py +0 -0
  793. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/train_vision.py +0 -0
  794. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/_aiui_datastore.py +0 -0
  795. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/_external_agents.py +0 -0
  796. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/callbacks.py +0 -0
  797. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/components/aicoder.py +0 -0
  798. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/context.py +0 -0
  799. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui/database_config.py +0 -0
  800. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_agents/__init__.py +0 -0
  801. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_agents/default_app.py +0 -0
  802. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_bot/__init__.py +0 -0
  803. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_bot/default_app.py +0 -0
  804. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_chat/__init__.py +0 -0
  805. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_chat/default_app.py +0 -0
  806. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_dashboard/default_app.py +0 -0
  807. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_realtime/__init__.py +0 -0
  808. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/ui_realtime/default_app.py +0 -0
  809. {praisonai-4.6.53 → praisonai-4.6.54}/praisonai/upload_vision.py +0 -0
  810. {praisonai-4.6.53 → praisonai-4.6.54}/setup.cfg +0 -0
  811. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test.py +0 -0
  812. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_agents_playbook.py +0 -0
  813. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_approval_system.py +0 -0
  814. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_basic.py +0 -0
  815. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_cli_features.py +0 -0
  816. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_custom_tools_fix.py +0 -0
  817. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_double_api_fix.py +0 -0
  818. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_n8n_agent_invoke.py +0 -0
  819. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_n8n_cli_feature.py +0 -0
  820. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_n8n_integration.py +0 -0
  821. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_phase2_refactor.py +0 -0
  822. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_recipe.py +0 -0
  823. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_registry.py +0 -0
  824. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_runner.py +0 -0
  825. {praisonai-4.6.53 → praisonai-4.6.54}/tests/test_sandboxed_agent_compatibility.py +0 -0
  826. {praisonai-4.6.53 → praisonai-4.6.54}/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.53
3
+ Version: 4.6.54
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,7 +11,7 @@ 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.53
14
+ Requires-Dist: praisonaiagents>=1.6.54
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.53
3
+ Version: 4.6.54
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,7 +11,7 @@ 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.53
14
+ Requires-Dist: praisonaiagents>=1.6.54
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -621,12 +621,14 @@ praisonai/persistence/factory.py
621
621
  praisonai/persistence/orchestrator.py
622
622
  praisonai/persistence/registry.py
623
623
  praisonai/persistence/conversation/__init__.py
624
+ praisonai/persistence/conversation/_sql_base.py
624
625
  praisonai/persistence/conversation/async_mysql.py
625
626
  praisonai/persistence/conversation/async_postgres.py
626
627
  praisonai/persistence/conversation/async_sqlite.py
627
628
  praisonai/persistence/conversation/base.py
628
629
  praisonai/persistence/conversation/json_store.py
629
630
  praisonai/persistence/conversation/mysql.py
631
+ praisonai/persistence/conversation/mysql_new.py
630
632
  praisonai/persistence/conversation/postgres.py
631
633
  praisonai/persistence/conversation/singlestore.py
632
634
  praisonai/persistence/conversation/sqlite.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.53
4
+ praisonaiagents>=1.6.54
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -17,6 +17,8 @@ logger = logging.getLogger(__name__)
17
17
 
18
18
 
19
19
  class PluginRegistry(Generic[T]):
20
+ # Guards creation of per-subclass default-instance locks
21
+ _default_locks_guard = threading.Lock()
20
22
  """Generic plugin registry: builtins + entry points + runtime register().
21
23
 
22
24
  This replaces the singleton pattern with dependency injection while maintaining
@@ -254,6 +256,42 @@ class PluginRegistry(Generic[T]):
254
256
  except ValueError:
255
257
  raise AttributeError(f"module {module_name!r} has no attribute {attr_name!r}")
256
258
 
259
+ @classmethod
260
+ def default(cls) -> "PluginRegistry[T]":
261
+ """
262
+ Process-default registry. Prefer DI; use this only at the edge.
263
+
264
+ Provides thread-safe lazy initialization of default instances per-subclass.
265
+ Each subclass gets its own default instance cache.
266
+ """
267
+ # Use a class-level cache stored in the subclass's __dict__
268
+ cache_key = "_default_instance"
269
+ lock_key = "_default_instance_lock"
270
+
271
+ # Get or create lock in subclass __dict__ (not shared across inheritance hierarchy)
272
+ if lock_key not in cls.__dict__:
273
+ # Thread-safe initialization of the per-subclass lock itself
274
+ with PluginRegistry._default_locks_guard:
275
+ if lock_key not in cls.__dict__:
276
+ # Store directly in the class __dict__ to avoid inheritance sharing
277
+ setattr(cls, lock_key, threading.Lock())
278
+
279
+ lock = getattr(cls, lock_key)
280
+
281
+ # Check cache first (without lock for performance)
282
+ cache = cls.__dict__.get(cache_key)
283
+ if cache is not None:
284
+ return cache
285
+
286
+ # Double-checked locking pattern
287
+ with lock:
288
+ cache = cls.__dict__.get(cache_key)
289
+ if cache is None:
290
+ cache = cls()
291
+ # Store directly in the class __dict__ to ensure per-subclass isolation
292
+ setattr(cls, cache_key, cache)
293
+ return cache
294
+
257
295
 
258
296
  def create_lazy_getattr(registry: PluginRegistry[T]) -> Callable[[str], T]:
259
297
  """Create a __getattr__ function backed by a PluginRegistry.
@@ -343,6 +343,168 @@ class AgentsGenerator:
343
343
  agent_config[field] = value
344
344
  self.logger.debug(f"CLI override for agent {agent_name}: {field} = {value}")
345
345
 
346
+ def _prepare_for_run(self, config):
347
+ """
348
+ Single source of truth for YAML normalisation, validation,
349
+ CLI-backend compatibility, tool resolution, AutoGen version
350
+ selection, and adapter resolution. Used by BOTH sync and async.
351
+ """
352
+ # Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
353
+ if 'agents' in config and 'roles' not in config:
354
+ config['roles'] = {}
355
+ for agent_name, agent_config in config['agents'].items():
356
+ role_config = dict(agent_config) if agent_config else {}
357
+ # Convert 'instructions' to 'backstory' if present
358
+ if 'instructions' in role_config and 'backstory' not in role_config:
359
+ role_config['backstory'] = role_config['instructions']
360
+ # Ensure required fields have defaults
361
+ if 'role' not in role_config:
362
+ role_config['role'] = agent_name.replace('_', ' ').title()
363
+ if 'goal' not in role_config:
364
+ role_config['goal'] = role_config.get('backstory', 'Complete the assigned task')
365
+ if 'backstory' not in role_config:
366
+ role_config['backstory'] = f'You are a {role_config["role"]}'
367
+ config['roles'][agent_name] = role_config
368
+
369
+ # Get workflow input: 'input' is canonical, 'topic' is alias for backward compatibility
370
+ topic = config.get('input', config.get('topic', ''))
371
+
372
+ # Validate agents configuration for typos in field names
373
+ self._validate_agents_config(config)
374
+
375
+ # Build tools dictionary using shared logic
376
+ tools_dict = self._build_tools_dict(config)
377
+
378
+ # Select framework with AutoGen version logic
379
+ framework = self._select_autogen_version(
380
+ self.framework or config.get('framework', 'crewai'),
381
+ config,
382
+ )
383
+
384
+ # Get and resolve adapter
385
+ adapter = self._get_framework_adapter(framework).resolve()
386
+
387
+ # Validate framework availability
388
+ from .framework_adapters.validators import assert_framework_available
389
+ assert_framework_available(adapter.name)
390
+
391
+ # Validate cli_backend compatibility
392
+ self._validate_cli_backend_compatibility(config, framework)
393
+
394
+ # Initialize observability hooks
395
+ from .observability.hooks import init_observability
396
+ init_observability(adapter.name)
397
+
398
+ # Run adapter setup hooks
399
+ adapter.setup(framework_tag=adapter.name)
400
+
401
+ # Update framework reference if resolution changed it
402
+ self.framework = adapter.name
403
+ self.framework_adapter = adapter
404
+
405
+ return {
406
+ 'adapter': adapter,
407
+ 'config': config,
408
+ 'topic': topic,
409
+ 'tools_dict': tools_dict,
410
+ }
411
+
412
+ def _build_tools_dict(self, config):
413
+ """Shared tool resolution logic for sync and async paths."""
414
+ tools_dict = {}
415
+
416
+ # Demand-driven tool resolution - only resolve tools actually used in YAML
417
+ if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
418
+ try:
419
+ # Collect all tool names mentioned in the YAML config
420
+ needed_tools: set[str] = set()
421
+ for role_cfg in config.get('roles', {}).values():
422
+ for t in role_cfg.get('tools') or []:
423
+ if isinstance(t, str) and t.strip():
424
+ needed_tools.add(t.strip())
425
+ for task_cfg in (role_cfg.get('tasks') or {}).values():
426
+ if not isinstance(task_cfg, dict):
427
+ continue
428
+ for t in task_cfg.get('tools') or []:
429
+ if isinstance(t, str) and t.strip():
430
+ needed_tools.add(t.strip())
431
+
432
+ # Resolve only the tools actually referenced in YAML
433
+ for tool_name in needed_tools:
434
+ try:
435
+ resolved_tool = self.tool_resolver.resolve(tool_name)
436
+ if resolved_tool is None:
437
+ self.logger.warning(f"Tool '{tool_name}' not found")
438
+ continue
439
+ tools_dict[tool_name] = (
440
+ resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
441
+ )
442
+ except Exception as e:
443
+ self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
444
+ continue
445
+
446
+ except Exception as e:
447
+ self.logger.warning(f"Error collecting YAML tool references: {e}")
448
+
449
+ # Add tools from class names - use tool_resolver to check tool validity
450
+ for tool_class in self.tools:
451
+ if isinstance(tool_class, type):
452
+ try:
453
+ tool_instance = tool_class()
454
+ tool_name = tool_class.__name__
455
+ tools_dict[tool_name] = tool_instance
456
+ self.logger.debug(f"Added tool: {tool_name}")
457
+ except Exception as e:
458
+ self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
459
+
460
+ root_directory = os.getcwd()
461
+ tools_py_path = os.path.join(root_directory, 'tools.py')
462
+ tools_dir_path = Path(root_directory) / 'tools'
463
+
464
+ # Use consolidated ToolResolver for tools.py loading
465
+ tools_dict.update(self.tool_resolver.get_local_tool_classes())
466
+ if os.path.isfile(tools_py_path):
467
+ self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
468
+ elif tools_dir_path.is_dir():
469
+ tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
470
+ if tools_dict:
471
+ self.logger.debug("tools folder exists in the root directory")
472
+
473
+ return tools_dict
474
+
475
+ def _select_autogen_version(self, framework, config):
476
+ """Shared AutoGen version selection logic for sync and async paths."""
477
+ if framework == "autogen":
478
+ autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
479
+ autogen_v2_adapter = self._get_framework_adapter("autogen")
480
+
481
+ autogen_version = str(
482
+ config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
483
+ ).lower()
484
+ use_v4 = False
485
+
486
+ if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
487
+ use_v4 = True
488
+ elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
489
+ use_v4 = False
490
+ elif autogen_version == "auto":
491
+ use_v4 = autogen_v4_adapter.is_available()
492
+ else:
493
+ use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
494
+
495
+ framework = "autogen_v4" if use_v4 else "autogen"
496
+
497
+ # Initialize AgentOps if configured
498
+ agentops_api_key = os.getenv("AGENTOPS_API_KEY")
499
+ if agentops_api_key:
500
+ try:
501
+ import agentops
502
+ agentops.init(agentops_api_key, default_tags=[framework])
503
+ except ImportError:
504
+ pass
505
+
506
+ return framework
507
+
346
508
  def _validate_cli_backend_compatibility(self, config, framework):
347
509
  """Validate that cli_backend is only used with compatible frameworks."""
348
510
  # Check if any agent/role defines cli_backend (support both key names)
@@ -512,141 +674,19 @@ class AgentsGenerator:
512
674
  # Route to YAMLWorkflowParser for advanced workflow patterns
513
675
  return self._run_yaml_workflow(config)
514
676
 
515
- config, adapter, tools_dict, topic = self._prepare(config)
516
- return adapter.run(
517
- config,
677
+ # Use shared preparation logic
678
+ prep = self._prepare_for_run(config)
679
+
680
+ self.logger.info(f"Using framework: {prep['adapter'].name}")
681
+ return prep['adapter'].run(
682
+ prep['config'],
518
683
  self.config_list,
519
- topic,
520
- tools_dict=tools_dict,
684
+ prep['topic'],
685
+ tools_dict=prep['tools_dict'],
521
686
  agent_callback=getattr(self, 'agent_callback', None),
522
687
  task_callback=getattr(self, 'task_callback', None),
523
688
  cli_config=getattr(self, 'cli_config', None),
524
689
  )
525
-
526
- def _prepare(self, config):
527
- """Shared preparation logic for both sync and async entry points."""
528
- # Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
529
- if 'agents' in config and 'roles' not in config:
530
- config['roles'] = {}
531
- for agent_name, agent_config in config['agents'].items():
532
- role_config = dict(agent_config) if agent_config else {}
533
- if 'instructions' in role_config and 'backstory' not in role_config:
534
- role_config['backstory'] = role_config['instructions']
535
- if 'role' not in role_config:
536
- role_config['role'] = agent_name.replace('_', ' ').title()
537
- if 'goal' not in role_config:
538
- role_config['goal'] = role_config.get('backstory', 'Complete the assigned task')
539
- if 'backstory' not in role_config:
540
- role_config['backstory'] = f'You are a {role_config["role"]}'
541
- config['roles'][agent_name] = role_config
542
-
543
- # Get workflow input: 'input' is canonical, 'topic' is alias for backward compatibility
544
- topic = config.get('input', config.get('topic', ''))
545
-
546
- # Validate agents configuration for typos in field names
547
- self._validate_agents_config(config)
548
-
549
- tools_dict = {}
550
-
551
- # Demand-driven tool resolution - only resolve tools actually used in YAML
552
- if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
553
- try:
554
- # Collect all tool names mentioned in the YAML config
555
- needed_tools: set[str] = set()
556
- for role_cfg in config.get('roles', {}).values():
557
- for t in role_cfg.get('tools') or []:
558
- if isinstance(t, str) and t.strip():
559
- needed_tools.add(t.strip())
560
- for task_cfg in (role_cfg.get('tasks') or {}).values():
561
- if not isinstance(task_cfg, dict):
562
- continue
563
- for t in task_cfg.get('tools') or []:
564
- if isinstance(t, str) and t.strip():
565
- needed_tools.add(t.strip())
566
-
567
- # Resolve only the tools actually referenced in YAML
568
- for tool_name in needed_tools:
569
- try:
570
- resolved_tool = self.tool_resolver.resolve(tool_name, instantiate=True)
571
- if resolved_tool is not None:
572
- tools_dict[tool_name] = resolved_tool
573
- except Exception as e:
574
- self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
575
- continue
576
-
577
- except Exception as e:
578
- self.logger.warning(f"Error collecting YAML tool references: {e}")
579
-
580
- # Add tools from class names - use tool_resolver to check tool validity
581
- for tool_class in self.tools:
582
- if isinstance(tool_class, type):
583
- try:
584
- tool_instance = tool_class()
585
- tool_name = tool_class.__name__
586
- tools_dict[tool_name] = tool_instance
587
- self.logger.debug(f"Added tool: {tool_name}")
588
- except Exception as e:
589
- self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
590
-
591
- root_directory = os.getcwd()
592
- tools_py_path = os.path.join(root_directory, 'tools.py')
593
- tools_dir_path = Path(root_directory) / 'tools'
594
-
595
- # Use consolidated ToolResolver for tools.py loading
596
- tools_dict.update(self.tool_resolver.get_local_tool_classes())
597
- if os.path.isfile(tools_py_path):
598
- self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
599
- elif tools_dir_path.is_dir():
600
- tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
601
- if tools_dict:
602
- self.logger.debug("tools folder exists in the root directory")
603
-
604
- framework = self.framework or config.get('framework', 'crewai')
605
-
606
- # AutoGen version selection logic
607
- if framework == "autogen":
608
- autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
609
- autogen_v2_adapter = self._get_framework_adapter("autogen")
610
-
611
- autogen_version = str(
612
- config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
613
- ).lower()
614
- use_v4 = False
615
-
616
- if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
617
- use_v4 = True
618
- elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
619
- use_v4 = False
620
- elif autogen_version == "auto":
621
- use_v4 = autogen_v4_adapter.is_available()
622
- else:
623
- use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
624
-
625
- framework = "autogen_v4" if use_v4 else "autogen"
626
-
627
- # Validate cli_backend compatibility
628
- self._validate_cli_backend_compatibility(config, framework)
629
-
630
- # Get framework adapter and resolve to concrete variant
631
- adapter = self._get_framework_adapter(framework).resolve()
632
-
633
- # Validate framework availability early
634
- from .framework_adapters.validators import assert_framework_available
635
- assert_framework_available(adapter.name)
636
-
637
- # Initialize observability hooks
638
- from .observability.hooks import init_observability
639
- init_observability(adapter.name)
640
-
641
- # Run adapter setup hooks
642
- adapter.setup(framework_tag=adapter.name)
643
-
644
- # Update framework reference if resolution changed it
645
- self.framework = adapter.name
646
- self.framework_adapter = adapter
647
-
648
- self.logger.info(f"Using framework: {adapter.name}")
649
- return config, adapter, tools_dict, topic
650
690
 
651
691
  async def agenerate_crew_and_kickoff(self):
652
692
  """
@@ -682,12 +722,15 @@ class AgentsGenerator:
682
722
 
683
723
  async def _arun_framework(self, config):
684
724
  """Async version of _run_framework with shared preparation logic."""
685
- config, adapter, tools_dict, topic = self._prepare(config)
686
- return await adapter.arun(
687
- config,
725
+ # Use shared preparation logic
726
+ prep = self._prepare_for_run(config)
727
+
728
+ self.logger.info(f"Using framework: {prep['adapter'].name}")
729
+ return await prep['adapter'].arun(
730
+ prep['config'],
688
731
  self.config_list,
689
- topic,
690
- tools_dict=tools_dict,
732
+ prep['topic'],
733
+ tools_dict=prep['tools_dict'],
691
734
  agent_callback=getattr(self, 'agent_callback', None),
692
735
  task_callback=getattr(self, 'task_callback', None),
693
736
  cli_config=getattr(self, 'cli_config', None),
@@ -419,11 +419,13 @@ class EmailBot(ChatCommandMixin, MessageHookMixin):
419
419
  reply_to: Optional[str] = None,
420
420
  thread_id: Optional[str] = None,
421
421
  ) -> BotMessage:
422
- """Send an email message.
422
+ """Send an email message with optional CC and BCC recipients.
423
423
 
424
424
  Args:
425
425
  channel_id: Recipient email address
426
- content: Message content (str or {"subject": ..., "body": ...})
426
+ content: Message content. Can be:
427
+ - str: Plain text message body
428
+ - dict: {"subject": str, "body": str, "html": str, "cc": str/list, "bcc": str/list}
427
429
  reply_to: Message-ID to reply to (sets In-Reply-To header)
428
430
  thread_id: References chain (sets References header)
429
431
 
@@ -439,10 +441,14 @@ class EmailBot(ChatCommandMixin, MessageHookMixin):
439
441
  subject = content.get("subject", "Message from PraisonAI")
440
442
  body = content.get("body", "")
441
443
  html = content.get("html")
444
+ cc = content.get("cc")
445
+ bcc = content.get("bcc")
442
446
  else:
443
447
  subject = "Message from PraisonAI"
444
448
  body = str(content)
445
449
  html = None
450
+ cc = None
451
+ bcc = None
446
452
 
447
453
  # Build email
448
454
  if html:
@@ -456,6 +462,18 @@ class EmailBot(ChatCommandMixin, MessageHookMixin):
456
462
  msg["To"] = channel_id
457
463
  msg["Subject"] = subject
458
464
 
465
+ # Add CC and BCC headers if provided
466
+ from praisonaiagents.tools.email_tools import _parse_email_list
467
+ all_recipients = [channel_id]
468
+ if cc:
469
+ cc_list = _parse_email_list(cc)
470
+ msg["CC"] = ", ".join(cc_list)
471
+ all_recipients.extend(cc_list)
472
+ if bcc:
473
+ bcc_list = _parse_email_list(bcc)
474
+ all_recipients.extend(bcc_list)
475
+ # Note: BCC is not added to headers (by design)
476
+
459
477
  # Generate unique Message-ID
460
478
  domain = self._email_address.split("@")[-1]
461
479
  message_id = f"<{hashlib.sha256(f'{time.time()}{channel_id}'.encode()).hexdigest()}@{domain}>"
@@ -473,7 +491,7 @@ class EmailBot(ChatCommandMixin, MessageHookMixin):
473
491
 
474
492
  # Send via SMTP
475
493
  loop = asyncio.get_event_loop()
476
- await loop.run_in_executor(None, self._send_smtp, msg)
494
+ await loop.run_in_executor(None, self._send_smtp, msg, all_recipients)
477
495
 
478
496
  # Create BotMessage for return
479
497
  bot_message = BotMessage(
@@ -492,12 +510,12 @@ class EmailBot(ChatCommandMixin, MessageHookMixin):
492
510
 
493
511
  return bot_message
494
512
 
495
- def _send_smtp(self, msg: MIMEText) -> None:
513
+ def _send_smtp(self, msg: MIMEText, to_addrs: List[str]) -> None:
496
514
  """Send email via SMTP (sync, runs in executor)."""
497
515
  with smtplib.SMTP(self._smtp_server, self._smtp_port) as server:
498
516
  server.starttls()
499
517
  server.login(self._email_address, self._token)
500
- server.send_message(msg)
518
+ server.send_message(msg, to_addrs=to_addrs)
501
519
 
502
520
  async def edit_message(
503
521
  self,
@@ -989,6 +989,7 @@ class PraisonAI:
989
989
  # Memory arguments
990
990
  parser.add_argument("--memory", action="store_true", help="Enable file-based memory for agent")
991
991
  parser.add_argument("--user-id", type=str, help="User ID for memory isolation")
992
+ parser.add_argument("--message-steering", action="store_true", help="Enable real-time message steering for agents during execution")
992
993
 
993
994
  # Session management arguments
994
995
  parser.add_argument("--auto-save", type=str, metavar="NAME", help="Auto-save session with given name after each run")
@@ -4434,6 +4435,11 @@ Do NOT add any explanations or formatting."""
4434
4435
  else:
4435
4436
  print("[yellow]Warning: --claude-memory requires an Anthropic model (--llm anthropic/...)[/yellow]")
4436
4437
 
4438
+ # Message Steering
4439
+ if getattr(self.args, 'message_steering', False):
4440
+ agent_config["message_steering"] = True
4441
+ print("[bold cyan]Message steering enabled - agent can receive guidance during execution[/bold cyan]")
4442
+
4437
4443
  # ===== NEW CLI FEATURES INTEGRATION =====
4438
4444
 
4439
4445
  # Tool Approval - Auto-approve tools based on --trust or --approve-level
@@ -195,6 +195,7 @@ class PraisonAIDB:
195
195
  metadata: Optional[Dict[str, Any]] = None,
196
196
  ) -> None:
197
197
  """Called when user sends a message."""
198
+ self._init_stores()
198
199
  if not self._conversation_store:
199
200
  return
200
201
 
@@ -218,6 +219,7 @@ class PraisonAIDB:
218
219
  metadata: Optional[Dict[str, Any]] = None,
219
220
  ) -> None:
220
221
  """Called when agent produces a response."""
222
+ self._init_stores()
221
223
  if not self._conversation_store:
222
224
  return
223
225
 
@@ -243,6 +245,7 @@ class PraisonAIDB:
243
245
  metadata: Optional[Dict[str, Any]] = None,
244
246
  ) -> None:
245
247
  """Called when a tool is executed."""
248
+ self._init_stores()
246
249
  if not self._conversation_store:
247
250
  return
248
251
 
@@ -273,6 +276,7 @@ class PraisonAIDB:
273
276
  metadata: Optional[Dict[str, Any]] = None,
274
277
  ) -> None:
275
278
  """Called when agent session ends."""
279
+ self._init_stores()
276
280
  if not self._conversation_store:
277
281
  return
278
282
 
@@ -290,6 +294,7 @@ class PraisonAIDB:
290
294
  metadata: Optional[Dict[str, Any]] = None,
291
295
  ) -> None:
292
296
  """Called when a new run (turn) starts."""
297
+ self._init_stores()
293
298
  # Store run start in state if available (even without conversation store)
294
299
  if self._state_store:
295
300
  run_key = f"run:{session_id}:{run_id}"
@@ -316,6 +321,7 @@ class PraisonAIDB:
316
321
  metadata: Optional[Dict[str, Any]] = None,
317
322
  ) -> None:
318
323
  """Called when a run (turn) ends."""
324
+ self._init_stores()
319
325
  if self._state_store:
320
326
  run_key = f"run:{session_id}:{run_id}"
321
327
  run_data = self._state_store.get(run_key) or {}
@@ -447,6 +453,7 @@ class PraisonAIDB:
447
453
  metadata: Optional[Dict[str, Any]] = None,
448
454
  ) -> None:
449
455
  """Called when a new trace starts."""
456
+ self._init_stores()
450
457
  if self._state_store:
451
458
  trace_key = f"trace:{trace_id}"
452
459
  self._state_store.set(trace_key, {
@@ -468,6 +475,7 @@ class PraisonAIDB:
468
475
  metadata: Optional[Dict[str, Any]] = None,
469
476
  ) -> None:
470
477
  """Called when a trace ends."""
478
+ self._init_stores()
471
479
  if self._state_store:
472
480
  trace_key = f"trace:{trace_id}"
473
481
  trace_data = self._state_store.get(trace_key) or {}
@@ -487,6 +495,7 @@ class PraisonAIDB:
487
495
  attributes: Optional[Dict[str, Any]] = None,
488
496
  ) -> None:
489
497
  """Called when a new span starts."""
498
+ self._init_stores()
490
499
  if self._state_store:
491
500
  span_key = f"span:{span_id}"
492
501
  self._state_store.set(span_key, {
@@ -507,6 +516,7 @@ class PraisonAIDB:
507
516
  attributes: Optional[Dict[str, Any]] = None,
508
517
  ) -> None:
509
518
  """Called when a span ends."""
519
+ self._init_stores()
510
520
  if self._state_store:
511
521
  span_key = f"span:{span_id}"
512
522
  span_data = self._state_store.get(span_key) or {}
@@ -57,7 +57,7 @@ class CloudDeployer:
57
57
  file.write("FROM python:3.11-slim\n")
58
58
  file.write("WORKDIR /app\n")
59
59
  file.write("COPY . .\n")
60
- file.write("RUN pip install flask praisonai==4.6.53 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==4.6.54 gunicorn markdown\n")
61
61
  file.write("EXPOSE 8080\n")
62
62
  file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
63
63