PraisonAI 4.6.50__tar.gz → 4.6.52__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 (823) hide show
  1. {praisonai-4.6.50 → praisonai-4.6.52}/PKG-INFO +2 -2
  2. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/SOURCES.txt +3 -0
  4. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_registry.py +56 -1
  6. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/agents_generator.py +169 -14
  7. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_session.py +11 -9
  8. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/telegram.py +116 -32
  9. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/mcp.py +115 -52
  10. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/standardise.py +37 -20
  11. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/mcp_checks.py +25 -7
  12. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy.py +1 -1
  13. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/autogen_adapter.py +164 -102
  14. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/base.py +75 -0
  15. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/server.py +20 -27
  16. praisonai-4.6.52/praisonai/integrations/__init__.py +62 -0
  17. praisonai-4.6.52/praisonai/integrations/_unified_registry.py +193 -0
  18. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/db_session_adapter.py +9 -3
  19. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/managed_local.py +12 -2
  20. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/executor.py +3 -12
  21. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/server.py +13 -6
  22. praisonai-4.6.52/praisonai/observability/hooks.py +51 -0
  23. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/async_sqlite.py +44 -60
  24. praisonai-4.6.52/praisonai/persistence/conversation/sync_sqlite.py +374 -0
  25. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/factory.py +37 -5
  26. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/registry.py +9 -0
  27. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/e2b.py +11 -23
  28. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/async_agent_scheduler.py +32 -10
  29. praisonai-4.6.52/praisonai/version.py +1 -0
  30. {praisonai-4.6.50 → praisonai-4.6.52}/pyproject.toml +1 -1
  31. praisonai-4.6.50/praisonai/integrations/__init__.py +0 -128
  32. praisonai-4.6.50/praisonai/version.py +0 -1
  33. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/dependency_links.txt +0 -0
  34. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/entry_points.txt +0 -0
  35. {praisonai-4.6.50 → praisonai-4.6.52}/PraisonAI.egg-info/top_level.txt +0 -0
  36. {praisonai-4.6.50 → praisonai-4.6.52}/README.md +0 -0
  37. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/__init__.py +0 -0
  38. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/__main__.py +0 -0
  39. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_approval_spec.py +0 -0
  40. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_async_bridge.py +0 -0
  41. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/__init__.py +0 -0
  42. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/api_md.py +0 -0
  43. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/__init__.py +0 -0
  44. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/docs_extractor.py +0 -0
  45. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/docs_generator.py +0 -0
  46. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/generator.py +0 -0
  47. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  48. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/python_extractor.py +0 -0
  49. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  50. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/rust_extractor.py +0 -0
  51. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  52. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  53. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  54. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_entrypoint.py +0 -0
  55. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_framework_availability.py +0 -0
  56. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_logging.py +0 -0
  57. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/_safe_loader.py +0 -0
  58. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/acp/__init__.py +0 -0
  59. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/acp/config.py +0 -0
  60. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/acp/safe_edit.py +0 -0
  61. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/acp/server.py +0 -0
  62. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/acp/session.py +0 -0
  63. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/adapters/__init__.py +0 -0
  64. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/adapters/readers.py +0 -0
  65. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/adapters/rerankers.py +0 -0
  66. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/adapters/retrievers.py +0 -0
  67. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/adapters/vector_stores.py +0 -0
  68. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/agent.py +0 -0
  69. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/agent_scheduler.py +0 -0
  70. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/api/agent_invoke.py +0 -0
  71. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/api/call.py +0 -0
  72. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/app/__init__.py +0 -0
  73. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/app/agentos.py +0 -0
  74. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/async_agent_scheduler.py +0 -0
  75. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/audit/__init__.py +0 -0
  76. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/audit/agent_centric.py +0 -0
  77. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/auto.py +0 -0
  78. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/__init__.py +0 -0
  79. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_ack.py +0 -0
  80. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_approval.py +0 -0
  81. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_approval_base.py +0 -0
  82. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_auth.py +0 -0
  83. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_chunk.py +0 -0
  84. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_commands.py +0 -0
  85. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_config_schema.py +0 -0
  86. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_debounce.py +0 -0
  87. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_defaults.py +0 -0
  88. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_discord_approval.py +0 -0
  89. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_dlq.py +0 -0
  90. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_email_utils.py +0 -0
  91. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_http_approval.py +0 -0
  92. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_mirror.py +0 -0
  93. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_pairing_ui.py +0 -0
  94. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_protocol_mixin.py +0 -0
  95. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_rate_limit.py +0 -0
  96. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_registry.py +0 -0
  97. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_resilience.py +0 -0
  98. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_slack_approval.py +0 -0
  99. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_telegram_approval.py +0 -0
  100. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_typing_indicator.py +0 -0
  101. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_unknown_user.py +0 -0
  102. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_webhook_approval.py +0 -0
  103. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  104. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/agentmail.py +0 -0
  105. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/bot.py +0 -0
  106. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/botos.py +0 -0
  107. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/discord.py +0 -0
  108. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/email.py +0 -0
  109. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/linear.py +0 -0
  110. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/media.py +0 -0
  111. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/slack.py +0 -0
  112. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/bots/whatsapp.py +0 -0
  113. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/__init__.py +0 -0
  114. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/agent.py +0 -0
  115. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/benchmark.py +0 -0
  116. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/cdp_agent.py +0 -0
  117. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/cdp_utils.py +0 -0
  118. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/cli.py +0 -0
  119. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/diagnostics.py +0 -0
  120. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/launcher.py +0 -0
  121. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/playwright_agent.py +0 -0
  122. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/profiling.py +0 -0
  123. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/protocol.py +0 -0
  124. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/report.py +0 -0
  125. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/server.py +0 -0
  126. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/sessions.py +0 -0
  127. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/browser/video.py +0 -0
  128. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/__init__.py +0 -0
  129. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/a2a.py +0 -0
  130. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/assistants.py +0 -0
  131. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/audio.py +0 -0
  132. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/batches.py +0 -0
  133. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/completions.py +0 -0
  134. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/container_files.py +0 -0
  135. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/containers.py +0 -0
  136. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/embeddings.py +0 -0
  137. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/files.py +0 -0
  138. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/fine_tuning.py +0 -0
  139. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/guardrails.py +0 -0
  140. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/images.py +0 -0
  141. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/mcp.py +0 -0
  142. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/messages.py +0 -0
  143. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/moderations.py +0 -0
  144. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/ocr.py +0 -0
  145. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/passthrough.py +0 -0
  146. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/rag.py +0 -0
  147. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/realtime.py +0 -0
  148. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/rerank.py +0 -0
  149. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/responses.py +0 -0
  150. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/search.py +0 -0
  151. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/skills.py +0 -0
  152. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/vector_store_files.py +0 -0
  153. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/vector_stores.py +0 -0
  154. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/capabilities/videos.py +0 -0
  155. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/claw/__init__.py +0 -0
  156. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/claw/default_app.py +0 -0
  157. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/__init__.py +0 -0
  158. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/_paths.py +0 -0
  159. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/app.py +0 -0
  160. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/branding.py +0 -0
  161. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/__init__.py +0 -0
  162. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/acp.py +0 -0
  163. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/agents.py +0 -0
  164. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/app.py +0 -0
  165. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/audit.py +0 -0
  166. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/batch.py +0 -0
  167. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/benchmark.py +0 -0
  168. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/bot.py +0 -0
  169. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/browser.py +0 -0
  170. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/call.py +0 -0
  171. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/chat.py +0 -0
  172. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/claw.py +0 -0
  173. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/code.py +0 -0
  174. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/commit.py +0 -0
  175. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/completion.py +0 -0
  176. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/config.py +0 -0
  177. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/context.py +0 -0
  178. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/dashboard.py +0 -0
  179. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/debug.py +0 -0
  180. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/deploy.py +0 -0
  181. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/diag.py +0 -0
  182. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/docs.py +0 -0
  183. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/doctor.py +0 -0
  184. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/endpoints.py +0 -0
  185. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/environment.py +0 -0
  186. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/eval.py +0 -0
  187. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/examples.py +0 -0
  188. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/flow.py +0 -0
  189. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/gateway.py +0 -0
  190. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/github.py +0 -0
  191. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/hooks.py +0 -0
  192. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/kanban.py +0 -0
  193. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/knowledge.py +0 -0
  194. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/langextract.py +0 -0
  195. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/langfuse.py +0 -0
  196. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/loop.py +0 -0
  197. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/lsp.py +0 -0
  198. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/managed.py +0 -0
  199. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/memory.py +0 -0
  200. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/mint_link.py +0 -0
  201. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/n8n.py +0 -0
  202. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/obs.py +0 -0
  203. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/onboard.py +0 -0
  204. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/package.py +0 -0
  205. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/pairing.py +0 -0
  206. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/paths.py +0 -0
  207. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/plugins.py +0 -0
  208. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/port.py +0 -0
  209. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/profile.py +0 -0
  210. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/publish.py +0 -0
  211. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/rag.py +0 -0
  212. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/realtime.py +0 -0
  213. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/recipe.py +0 -0
  214. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/registry.py +0 -0
  215. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/replay.py +0 -0
  216. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/research.py +0 -0
  217. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/retrieval.py +0 -0
  218. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/rules.py +0 -0
  219. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/run.py +0 -0
  220. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/sandbox.py +0 -0
  221. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/schedule.py +0 -0
  222. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/serve.py +0 -0
  223. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/session.py +0 -0
  224. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/setup.py +0 -0
  225. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/skills.py +0 -0
  226. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/templates.py +0 -0
  227. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/test.py +0 -0
  228. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/todo.py +0 -0
  229. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/tools.py +0 -0
  230. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/traces.py +0 -0
  231. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/tracker.py +0 -0
  232. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/train.py +0 -0
  233. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/ui.py +0 -0
  234. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/up.py +0 -0
  235. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/version.py +0 -0
  236. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/commands/workflow.py +0 -0
  237. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/config_loader.py +0 -0
  238. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/configuration/__init__.py +0 -0
  239. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/configuration/loader.py +0 -0
  240. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/configuration/paths.py +0 -0
  241. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/configuration/schema.py +0 -0
  242. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/execution/__init__.py +0 -0
  243. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/execution/core.py +0 -0
  244. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/execution/profiler.py +0 -0
  245. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/execution/request.py +0 -0
  246. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/execution/result.py +0 -0
  247. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/fallback_schema.py +0 -0
  248. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/__init__.py +0 -0
  249. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/acp.py +0 -0
  250. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/action_orchestrator.py +0 -0
  251. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/agent_scheduler.py +0 -0
  252. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/agent_tools.py +0 -0
  253. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/agents.py +0 -0
  254. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/approval.py +0 -0
  255. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/at_mentions.py +0 -0
  256. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/audit_cli.py +0 -0
  257. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/auto_memory.py +0 -0
  258. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/auto_mode.py +0 -0
  259. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/autonomy_mode.py +0 -0
  260. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/background.py +0 -0
  261. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/base.py +0 -0
  262. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/benchmark.py +0 -0
  263. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/bots_cli.py +0 -0
  264. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/capabilities.py +0 -0
  265. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/checkpoints.py +0 -0
  266. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/cli_profiler.py +0 -0
  267. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/code_intelligence.py +0 -0
  268. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/compaction.py +0 -0
  269. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/compare.py +0 -0
  270. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/config_hierarchy.py +0 -0
  271. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/context_manager.py +0 -0
  272. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/cost_tracker.py +0 -0
  273. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/csv_test_runner.py +0 -0
  274. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/debug.py +0 -0
  275. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/deploy.py +0 -0
  276. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/diag.py +0 -0
  277. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/display_jsonl.py +0 -0
  278. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/__init__.py +0 -0
  279. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  280. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  281. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  282. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  283. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  284. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  285. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  286. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  287. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  288. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  289. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  290. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  291. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  292. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  293. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  294. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  295. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  296. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/engine.py +0 -0
  297. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/formatters.py +0 -0
  298. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/handler.py +0 -0
  299. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/models.py +0 -0
  300. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/doctor/registry.py +0 -0
  301. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/endpoints.py +0 -0
  302. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/eval.py +0 -0
  303. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/examples.py +0 -0
  304. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/external_agents.py +0 -0
  305. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/fast_context.py +0 -0
  306. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/file_history.py +0 -0
  307. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/flow_display.py +0 -0
  308. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/gateway.py +0 -0
  309. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/git_attribution.py +0 -0
  310. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/git_integration.py +0 -0
  311. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/guardrail.py +0 -0
  312. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/handoff.py +0 -0
  313. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/hooks.py +0 -0
  314. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/hybrid_workflow.py +0 -0
  315. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/image.py +0 -0
  316. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/interactive_core_headless.py +0 -0
  317. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/interactive_runtime.py +0 -0
  318. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/interactive_test_harness.py +0 -0
  319. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/interactive_tools.py +0 -0
  320. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/interactive_tui.py +0 -0
  321. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/job_workflow.py +0 -0
  322. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/jobs.py +0 -0
  323. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/knowledge.py +0 -0
  324. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/knowledge_cli.py +0 -0
  325. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/lite.py +0 -0
  326. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/logs.py +0 -0
  327. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/lsp_cli.py +0 -0
  328. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  329. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/mcp.py +0 -0
  330. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/message_queue.py +0 -0
  331. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/metrics.py +0 -0
  332. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/migrate.py +0 -0
  333. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/migration_flow.py +0 -0
  334. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/migration_spec.py +0 -0
  335. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/n8n.py +0 -0
  336. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/observability.py +0 -0
  337. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/ollama.py +0 -0
  338. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/onboard.py +0 -0
  339. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/output_modes.py +0 -0
  340. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/output_style.py +0 -0
  341. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/package.py +0 -0
  342. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/performance.py +0 -0
  343. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/persistence.py +0 -0
  344. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/plugin_cli.py +0 -0
  345. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profile.py +0 -0
  346. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profiler/__init__.py +0 -0
  347. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profiler/core.py +0 -0
  348. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profiler/optimizations.py +0 -0
  349. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profiler/suite.py +0 -0
  350. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/profiling.py +0 -0
  351. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/__init__.py +0 -0
  352. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/manager.py +0 -0
  353. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/models.py +0 -0
  354. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/persistence.py +0 -0
  355. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/scheduler.py +0 -0
  356. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/queue/worker.py +0 -0
  357. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/recipe.py +0 -0
  358. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/recipe_creator.py +0 -0
  359. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/recipe_optimizer.py +0 -0
  360. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/recipe_prompts.py +0 -0
  361. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/recipes.py +0 -0
  362. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/registry.py +0 -0
  363. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/repo_map.py +0 -0
  364. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/router.py +0 -0
  365. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/safe_shell.py +0 -0
  366. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/sandbox_cli.py +0 -0
  367. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/sandbox_executor.py +0 -0
  368. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/sdk_knowledge.py +0 -0
  369. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/serve.py +0 -0
  370. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/session.py +0 -0
  371. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/setup/__init__.py +0 -0
  372. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/setup/handler.py +0 -0
  373. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/setup/templates.py +0 -0
  374. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/skills.py +0 -0
  375. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/slash_commands.py +0 -0
  376. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/telemetry.py +0 -0
  377. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/templates.py +0 -0
  378. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/thinking.py +0 -0
  379. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/todo.py +0 -0
  380. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tools.py +0 -0
  381. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/__init__.py +0 -0
  382. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/app.py +0 -0
  383. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/cli.py +0 -0
  384. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/config.py +0 -0
  385. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/debug.py +0 -0
  386. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/events.py +0 -0
  387. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/mock_provider.py +0 -0
  388. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/orchestrator.py +0 -0
  389. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  390. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/help.py +0 -0
  391. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/main.py +0 -0
  392. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/queue.py +0 -0
  393. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/session.py +0 -0
  394. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/screens/settings.py +0 -0
  395. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/session_store.py +0 -0
  396. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  397. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  398. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  399. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  400. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  401. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  402. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/status.py +0 -0
  403. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  404. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/wizard.py +0 -0
  405. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/workflow.py +0 -0
  406. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/features/yaml_utils.py +0 -0
  407. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/__init__.py +0 -0
  408. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/async_tui.py +0 -0
  409. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/config.py +0 -0
  410. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/core.py +0 -0
  411. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/events.py +0 -0
  412. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  413. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  414. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  415. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/praison_io.py +0 -0
  416. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/repl.py +0 -0
  417. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/split_tui.py +0 -0
  418. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/interactive/tui_app.py +0 -0
  419. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/langfuse_client.py +0 -0
  420. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/legacy.py +0 -0
  421. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/main.py +0 -0
  422. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/output/__init__.py +0 -0
  423. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/output/console.py +0 -0
  424. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/schedule_cli.py +0 -0
  425. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/schema_provider.py +0 -0
  426. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/session/__init__.py +0 -0
  427. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/session/unified.py +0 -0
  428. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/state/__init__.py +0 -0
  429. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/state/identifiers.py +0 -0
  430. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/state/sessions.py +0 -0
  431. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/__init__.py +0 -0
  432. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/config.py +0 -0
  433. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/events.py +0 -0
  434. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/mg_backend.py +0 -0
  435. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/plain.py +0 -0
  436. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/ui/rich_backend.py +0 -0
  437. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli/unified_schema.py +0 -0
  438. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli_backends/__init__.py +0 -0
  439. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli_backends/claude.py +0 -0
  440. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/cli_backends/registry.py +0 -0
  441. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/__init__.py +0 -0
  442. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/agent_tools.py +0 -0
  443. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/diff/__init__.py +0 -0
  444. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/diff/diff_strategy.py +0 -0
  445. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/__init__.py +0 -0
  446. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/apply_diff.py +0 -0
  447. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/execute_command.py +0 -0
  448. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/list_files.py +0 -0
  449. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/read_file.py +0 -0
  450. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/search_replace.py +0 -0
  451. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/tools/write_file.py +0 -0
  452. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/utils/__init__.py +0 -0
  453. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/utils/file_utils.py +0 -0
  454. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/utils/ignore_utils.py +0 -0
  455. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/code/utils/text_utils.py +0 -0
  456. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/__init__.py +0 -0
  457. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/artifact_store.py +0 -0
  458. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/config.py +0 -0
  459. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/history_store.py +0 -0
  460. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/queue.py +0 -0
  461. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/setup.py +0 -0
  462. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/context/terminal_logger.py +0 -0
  463. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/daemon/__init__.py +0 -0
  464. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/daemon/launchd.py +0 -0
  465. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/daemon/systemd.py +0 -0
  466. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/daemon/windows.py +0 -0
  467. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/db/__init__.py +0 -0
  468. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/db/adapter.py +0 -0
  469. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/__init__.py +0 -0
  470. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/api.py +0 -0
  471. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/docker.py +0 -0
  472. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/doctor.py +0 -0
  473. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/main.py +0 -0
  474. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/models.py +0 -0
  475. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/providers/__init__.py +0 -0
  476. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/providers/aws.py +0 -0
  477. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/providers/azure.py +0 -0
  478. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/providers/base.py +0 -0
  479. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/providers/gcp.py +0 -0
  480. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/deploy/schema.py +0 -0
  481. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/__init__.py +0 -0
  482. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/classifier.py +0 -0
  483. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/executor.py +0 -0
  484. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/extractor.py +0 -0
  485. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/reporter.py +0 -0
  486. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/runner.py +0 -0
  487. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/docs_runner/workspace.py +0 -0
  488. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/__init__.py +0 -0
  489. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/a2u_server.py +0 -0
  490. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/discovery.py +0 -0
  491. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/__init__.py +0 -0
  492. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/a2a.py +0 -0
  493. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/a2u.py +0 -0
  494. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/agents_api.py +0 -0
  495. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/base.py +0 -0
  496. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/mcp.py +0 -0
  497. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/recipe.py +0 -0
  498. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  499. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/registry.py +0 -0
  500. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/endpoints/server.py +0 -0
  501. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/__init__.py +0 -0
  502. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/client.py +0 -0
  503. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  504. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  505. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/components/__init__.py +0 -0
  506. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/converter.py +0 -0
  507. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/flow/helpers.py +0 -0
  508. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/__init__.py +0 -0
  509. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  510. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  511. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/registry.py +0 -0
  512. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/framework_adapters/validators.py +0 -0
  513. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/__init__.py +0 -0
  514. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/auth.py +0 -0
  515. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/cookie_auth.py +0 -0
  516. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/exec_approval.py +0 -0
  517. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/gateway_approval.py +0 -0
  518. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/kanban_dispatcher.py +0 -0
  519. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/magic_link.py +0 -0
  520. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/origin_check.py +0 -0
  521. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/pairing.py +0 -0
  522. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/pairing_routes.py +0 -0
  523. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/port_utils.py +0 -0
  524. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/push_channels.py +0 -0
  525. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/push_delivery.py +0 -0
  526. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/push_polling.py +0 -0
  527. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/push_presence.py +0 -0
  528. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/rate_limiter.py +0 -0
  529. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/redis_pubsub.py +0 -0
  530. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/gateway/unicode_utils.py +0 -0
  531. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/inbuilt_tools/__init__.py +0 -0
  532. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  533. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/inc/__init__.py +0 -0
  534. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/inc/config.py +0 -0
  535. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/inc/models.py +0 -0
  536. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/__init__.py +0 -0
  537. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/_legacy_handlers.py +0 -0
  538. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/__init__.py +0 -0
  539. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  540. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/hooks_query.py +0 -0
  541. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  542. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/schedules_runner.py +0 -0
  543. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/usage_bridge.py +0 -0
  544. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/bridges/workflows_service.py +0 -0
  545. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/context_files.py +0 -0
  546. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/gateway_host.py +0 -0
  547. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/host_app.py +0 -0
  548. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/pages/__init__.py +0 -0
  549. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/pages/bot_health.py +0 -0
  550. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integration/pages/workflow_runs.py +0 -0
  551. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/_session_info.py +0 -0
  552. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/_tool_aliases.py +0 -0
  553. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/base.py +0 -0
  554. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/claude_code.py +0 -0
  555. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/codex_cli.py +0 -0
  556. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/__init__.py +0 -0
  557. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/daytona.py +0 -0
  558. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/docker.py +0 -0
  559. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/e2b.py +0 -0
  560. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/flyio.py +0 -0
  561. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/local.py +0 -0
  562. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/compute/modal_compute.py +0 -0
  563. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/cursor_cli.py +0 -0
  564. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/gemini_cli.py +0 -0
  565. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/hosted_agent.py +0 -0
  566. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/local_agent.py +0 -0
  567. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/managed_agents.py +0 -0
  568. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/registry.py +0 -0
  569. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/integrations/sandboxed_agent.py +0 -0
  570. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/__init__.py +0 -0
  571. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/models.py +0 -0
  572. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/router.py +0 -0
  573. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/jobs/store.py +0 -0
  574. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/kanban/__init__.py +0 -0
  575. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/kanban/models.py +0 -0
  576. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/kanban/paths.py +0 -0
  577. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/kanban/sqlite_store.py +0 -0
  578. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/llm/__init__.py +0 -0
  579. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/llm/env.py +0 -0
  580. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/llm/registry.py +0 -0
  581. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/__init__.py +0 -0
  582. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/__init__.py +0 -0
  583. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/agents.py +0 -0
  584. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  585. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  586. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  587. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  588. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/memory.py +0 -0
  589. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/prompts.py +0 -0
  590. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/resources.py +0 -0
  591. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  592. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/auth/__init__.py +0 -0
  593. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/auth/api_key.py +0 -0
  594. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/auth/oauth.py +0 -0
  595. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/auth/oidc.py +0 -0
  596. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/auth/scopes.py +0 -0
  597. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/cli.py +0 -0
  598. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/elicitation.py +0 -0
  599. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/icons.py +0 -0
  600. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/recipe_adapter.py +0 -0
  601. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/recipe_cli.py +0 -0
  602. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/registry.py +0 -0
  603. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/sampling.py +0 -0
  604. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/server.py +0 -0
  605. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/tasks.py +0 -0
  606. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/tool_index.py +0 -0
  607. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/transports/__init__.py +0 -0
  608. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/transports/http_stream.py +0 -0
  609. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/mcp_server/transports/stdio.py +0 -0
  610. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/n8n/__init__.py +0 -0
  611. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/n8n/client.py +0 -0
  612. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/n8n/converter.py +0 -0
  613. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/n8n/preview.py +0 -0
  614. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/n8n/reverse_converter.py +0 -0
  615. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/observability/__init__.py +0 -0
  616. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/observability/langextract.py +0 -0
  617. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/observability/langfuse.py +0 -0
  618. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/__init__.py +0 -0
  619. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/_valkey_client.py +0 -0
  620. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/config.py +0 -0
  621. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/__init__.py +0 -0
  622. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/async_mysql.py +0 -0
  623. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/async_postgres.py +0 -0
  624. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/base.py +0 -0
  625. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/json_store.py +0 -0
  626. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/mysql.py +0 -0
  627. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/postgres.py +0 -0
  628. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/singlestore.py +0 -0
  629. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/sqlite.py +0 -0
  630. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/supabase.py +0 -0
  631. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/surrealdb.py +0 -0
  632. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/conversation/turso.py +0 -0
  633. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/hooks/__init__.py +0 -0
  634. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  635. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/__init__.py +0 -0
  636. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/base.py +0 -0
  637. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/cassandra.py +0 -0
  638. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/chroma.py +0 -0
  639. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  640. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  641. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/couchbase.py +0 -0
  642. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/lancedb.py +0 -0
  643. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  644. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  645. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  646. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/milvus.py +0 -0
  647. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  648. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/pgvector.py +0 -0
  649. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/pinecone.py +0 -0
  650. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/qdrant.py +0 -0
  651. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  652. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  653. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  654. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  655. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  656. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/knowledge/weaviate.py +0 -0
  657. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/migrations/__init__.py +0 -0
  658. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/migrations/manager.py +0 -0
  659. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/orchestrator.py +0 -0
  660. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/__init__.py +0 -0
  661. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/async_mongodb.py +0 -0
  662. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/base.py +0 -0
  663. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/dynamodb.py +0 -0
  664. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/firestore.py +0 -0
  665. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/gcs.py +0 -0
  666. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/memory.py +0 -0
  667. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/mongodb.py +0 -0
  668. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/redis.py +0 -0
  669. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/upstash.py +0 -0
  670. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/state/valkey.py +0 -0
  671. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/tests/__init__.py +0 -0
  672. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/tests/test_all_backends.py +0 -0
  673. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  674. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/profiler.py +0 -0
  675. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/push/__init__.py +0 -0
  676. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/push/client.py +0 -0
  677. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/push/transports.py +0 -0
  678. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/__init__.py +0 -0
  679. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/bridge.py +0 -0
  680. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/core.py +0 -0
  681. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/exceptions.py +0 -0
  682. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/history.py +0 -0
  683. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/models.py +0 -0
  684. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/operations.py +0 -0
  685. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/policy.py +0 -0
  686. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/registry.py +0 -0
  687. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/runtime.py +0 -0
  688. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/security.py +0 -0
  689. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/serve.py +0 -0
  690. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/recipe/server.py +0 -0
  691. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/__init__.py +0 -0
  692. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/analyzer.py +0 -0
  693. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/applier.py +0 -0
  694. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/judge.py +0 -0
  695. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/plan.py +0 -0
  696. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/player.py +0 -0
  697. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/reader.py +0 -0
  698. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/storage.py +0 -0
  699. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/replay/writer.py +0 -0
  700. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/__init__.py +0 -0
  701. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/_compat.py +0 -0
  702. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/_shell.py +0 -0
  703. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/daytona.py +0 -0
  704. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/docker.py +0 -0
  705. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/modal.py +0 -0
  706. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/sandlock.py +0 -0
  707. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/ssh.py +0 -0
  708. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/sandbox/subprocess.py +0 -0
  709. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/__init__.py +0 -0
  710. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/agent_scheduler.py +0 -0
  711. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/base.py +0 -0
  712. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/daemon_manager.py +0 -0
  713. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/deployment.py +0 -0
  714. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/executor.py +0 -0
  715. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/shared.py +0 -0
  716. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/state_manager.py +0 -0
  717. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/scheduler/yaml_loader.py +0 -0
  718. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/security/__init__.py +0 -0
  719. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/security/audit.py +0 -0
  720. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/security/injection.py +0 -0
  721. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/security/protected.py +0 -0
  722. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/setup/__init__.py +0 -0
  723. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/setup/build.py +0 -0
  724. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/setup/post_install.py +0 -0
  725. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/setup/setup_conda_env.py +0 -0
  726. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/setup.py +0 -0
  727. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/__init__.py +0 -0
  728. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/ai_generator.py +0 -0
  729. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/config.py +0 -0
  730. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/dedupe.py +0 -0
  731. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/discovery.py +0 -0
  732. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/drift.py +0 -0
  733. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/engine.py +0 -0
  734. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/enhanced_templates.py +0 -0
  735. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/example_verifier.py +0 -0
  736. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/manifest.py +0 -0
  737. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/models.py +0 -0
  738. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/reports.py +0 -0
  739. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/templates.py +0 -0
  740. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/undo_redo.py +0 -0
  741. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/standardise/validator.py +0 -0
  742. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/__init__.py +0 -0
  743. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/dynamodb_adapter.py +0 -0
  744. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/mongodb_adapter.py +0 -0
  745. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/postgresql_adapter.py +0 -0
  746. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/redis_adapter.py +0 -0
  747. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/storage/valkey_adapter.py +0 -0
  748. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/__init__.py +0 -0
  749. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/batch_source.py +0 -0
  750. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/cli_docs_source.py +0 -0
  751. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/discovery.py +0 -0
  752. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/docs_source.py +0 -0
  753. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/examples_source.py +0 -0
  754. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/executor.py +0 -0
  755. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/models.py +0 -0
  756. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/report_viewer.py +0 -0
  757. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/reporter.py +0 -0
  758. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/suite_runner/runner.py +0 -0
  759. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/__init__.py +0 -0
  760. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/cache.py +0 -0
  761. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/dependency_checker.py +0 -0
  762. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/discovery.py +0 -0
  763. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/loader.py +0 -0
  764. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/registry.py +0 -0
  765. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/resolver.py +0 -0
  766. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/security.py +0 -0
  767. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/tool_override.py +0 -0
  768. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/templates/tools_doctor.py +0 -0
  769. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/test.py +0 -0
  770. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tool_registry.py +0 -0
  771. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tool_resolver.py +0 -0
  772. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/__init__.py +0 -0
  773. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/audio.py +0 -0
  774. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/glob_tool.py +0 -0
  775. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/grep_tool.py +0 -0
  776. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/kanban_tools.py +0 -0
  777. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/multiedit.py +0 -0
  778. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/tools/skill_manage.py +0 -0
  779. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/__init__.py +0 -0
  780. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/_ollama.py +0 -0
  781. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/__init__.py +0 -0
  782. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/grader.py +0 -0
  783. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/hook.py +0 -0
  784. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/models.py +0 -0
  785. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/orchestrator.py +0 -0
  786. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/agents/storage.py +0 -0
  787. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/llm/__init__.py +0 -0
  788. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train/llm/trainer.py +0 -0
  789. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train.py +0 -0
  790. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/train_vision.py +0 -0
  791. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/_aiui_datastore.py +0 -0
  792. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/_external_agents.py +0 -0
  793. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/callbacks.py +0 -0
  794. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/components/aicoder.py +0 -0
  795. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/context.py +0 -0
  796. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui/database_config.py +0 -0
  797. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_agents/__init__.py +0 -0
  798. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_agents/default_app.py +0 -0
  799. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_bot/__init__.py +0 -0
  800. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_bot/default_app.py +0 -0
  801. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_chat/__init__.py +0 -0
  802. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_chat/default_app.py +0 -0
  803. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_dashboard/default_app.py +0 -0
  804. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_realtime/__init__.py +0 -0
  805. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/ui_realtime/default_app.py +0 -0
  806. {praisonai-4.6.50 → praisonai-4.6.52}/praisonai/upload_vision.py +0 -0
  807. {praisonai-4.6.50 → praisonai-4.6.52}/setup.cfg +0 -0
  808. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test.py +0 -0
  809. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_agents_playbook.py +0 -0
  810. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_approval_system.py +0 -0
  811. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_basic.py +0 -0
  812. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_cli_features.py +0 -0
  813. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_custom_tools_fix.py +0 -0
  814. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_double_api_fix.py +0 -0
  815. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_n8n_agent_invoke.py +0 -0
  816. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_n8n_cli_feature.py +0 -0
  817. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_n8n_integration.py +0 -0
  818. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_phase2_refactor.py +0 -0
  819. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_recipe.py +0 -0
  820. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_registry.py +0 -0
  821. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_runner.py +0 -0
  822. {praisonai-4.6.50 → praisonai-4.6.52}/tests/test_sandboxed_agent_compatibility.py +0 -0
  823. {praisonai-4.6.50 → praisonai-4.6.52}/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.50
3
+ Version: 4.6.52
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.50
14
+ Requires-Dist: praisonaiagents>=1.6.52
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.50
3
+ Version: 4.6.52
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.50
14
+ Requires-Dist: praisonaiagents>=1.6.52
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
@@ -543,6 +543,7 @@ praisonai/integration/pages/workflow_runs.py
543
543
  praisonai/integrations/__init__.py
544
544
  praisonai/integrations/_session_info.py
545
545
  praisonai/integrations/_tool_aliases.py
546
+ praisonai/integrations/_unified_registry.py
546
547
  praisonai/integrations/base.py
547
548
  praisonai/integrations/claude_code.py
548
549
  praisonai/integrations/codex_cli.py
@@ -610,6 +611,7 @@ praisonai/n8n/converter.py
610
611
  praisonai/n8n/preview.py
611
612
  praisonai/n8n/reverse_converter.py
612
613
  praisonai/observability/__init__.py
614
+ praisonai/observability/hooks.py
613
615
  praisonai/observability/langextract.py
614
616
  praisonai/observability/langfuse.py
615
617
  praisonai/persistence/__init__.py
@@ -630,6 +632,7 @@ praisonai/persistence/conversation/singlestore.py
630
632
  praisonai/persistence/conversation/sqlite.py
631
633
  praisonai/persistence/conversation/supabase.py
632
634
  praisonai/persistence/conversation/surrealdb.py
635
+ praisonai/persistence/conversation/sync_sqlite.py
633
636
  praisonai/persistence/conversation/turso.py
634
637
  praisonai/persistence/hooks/__init__.py
635
638
  praisonai/persistence/hooks/agent_hooks.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.50
4
+ praisonaiagents>=1.6.52
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -234,4 +234,59 @@ class PluginRegistry(Generic[T]):
234
234
  Sorted list of all registered names and aliases
235
235
  """
236
236
  with self._lock:
237
- return sorted(list(self._loaders.keys()) + list(self._aliases.keys()))
237
+ return sorted(list(self._loaders.keys()) + list(self._aliases.keys()))
238
+
239
+ def get_by_attr(self, module_name: str, attr_name: str) -> Type[T]:
240
+ """Get a plugin by attribute name for __getattr__ dispatch.
241
+
242
+ Args:
243
+ module_name: Module name requesting the attribute (for error messages)
244
+ attr_name: Attribute name to resolve
245
+
246
+ Returns:
247
+ Plugin class
248
+
249
+ Raises:
250
+ AttributeError: If plugin is not found
251
+ """
252
+ try:
253
+ return self.resolve(attr_name)
254
+ except ValueError:
255
+ raise AttributeError(f"module {module_name!r} has no attribute {attr_name!r}")
256
+
257
+
258
+ def create_lazy_getattr(registry: PluginRegistry[T]) -> Callable[[str], T]:
259
+ """Create a __getattr__ function backed by a PluginRegistry.
260
+
261
+ This replaces manual if/elif ladders in __init__.py files with a data-driven
262
+ approach using the plugin registry.
263
+
264
+ Args:
265
+ registry: The plugin registry to use for resolution
266
+
267
+ Returns:
268
+ Function that can be used as __getattr__ in a module
269
+
270
+ Example:
271
+ # In __init__.py:
272
+ from ._registry import create_lazy_getattr
273
+
274
+ # Assuming you have a registry instance
275
+ __getattr__ = create_lazy_getattr(my_registry)
276
+ """
277
+ def __getattr__(name: str) -> T:
278
+ try:
279
+ plugin_class = registry.resolve(name)
280
+ return plugin_class
281
+ except ValueError:
282
+ # Get the calling module name for error context
283
+ import inspect
284
+ frame = inspect.currentframe()
285
+ if frame and frame.f_back:
286
+ module_name = frame.f_back.f_globals.get('__name__', 'unknown')
287
+ else:
288
+ module_name = 'unknown'
289
+
290
+ raise AttributeError(f"module {module_name!r} has no attribute {name!r}")
291
+
292
+ return __getattr__
@@ -653,14 +653,163 @@ class AgentsGenerator:
653
653
  self.logger.debug("tools folder exists in the root directory")
654
654
 
655
655
  framework = self.framework or config.get('framework', 'crewai')
656
+
657
+ # Get initial adapter and resolve to concrete variant
658
+ initial_adapter = self._get_framework_adapter(framework)
659
+ adapter = initial_adapter.resolve()
660
+
661
+ # Validate framework availability early
662
+ from .framework_adapters.validators import assert_framework_available
663
+ assert_framework_available(adapter.name)
664
+
665
+ # Initialize observability hooks
666
+ from .observability.hooks import init_observability
667
+ init_observability(adapter.name)
668
+
669
+ # Run adapter setup hooks
670
+ adapter.setup(framework_tag=adapter.name)
671
+
672
+ # Update framework reference if resolution changed it
673
+ self.framework = adapter.name
674
+ self.framework_adapter = adapter
675
+
676
+ self.logger.info(f"Using framework: {adapter.name}")
677
+ return adapter.run(
678
+ config,
679
+ self.config_list,
680
+ topic,
681
+ tools_dict=tools_dict,
682
+ agent_callback=getattr(self, 'agent_callback', None),
683
+ task_callback=getattr(self, 'task_callback', None),
684
+ cli_config=getattr(self, 'cli_config', None),
685
+ )
686
+
687
+ async def agenerate_crew_and_kickoff(self):
688
+ """
689
+ Async version of generate_crew_and_kickoff.
690
+ Generates a crew of agents and initiates tasks based on the provided configuration.
691
+ """
692
+ if self.agent_yaml:
693
+ config = yaml.safe_load(self.agent_yaml)
694
+ else:
695
+ if self.agent_file == '/app/api:app' or self.agent_file == 'api:app':
696
+ self.agent_file = 'agents.yaml'
697
+ try:
698
+ with open(self.agent_file, 'r') as f:
699
+ config = yaml.safe_load(f)
700
+ except FileNotFoundError:
701
+ print(f"File not found: {self.agent_file}")
702
+ return
656
703
 
657
- # Determine AutoGen version if needed (keeping compatibility logic)
704
+ # Apply CLI configuration overrides to YAML config
705
+ if self.cli_config:
706
+ # Merge CLI configuration with YAML config
707
+ self._merge_cli_config(config, self.cli_config)
708
+
709
+ # Check if this is a workflow-mode YAML (process: workflow or has steps section)
710
+ process_type = config.get('process', 'sequential')
711
+ has_steps = 'steps' in config
712
+ has_workflow_config = 'workflow' in config
713
+
714
+ if process_type == 'workflow' or (has_steps and has_workflow_config):
715
+ return await self._arun_yaml_workflow(config)
716
+ else:
717
+ return await self._arun_framework(config)
718
+
719
+ async def _arun_framework(self, config):
720
+ """Async version of _run_framework with shared preparation logic."""
721
+ # Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
722
+ if 'agents' in config and 'roles' not in config:
723
+ config['roles'] = {}
724
+ for agent_name, agent_config in config['agents'].items():
725
+ role_config = dict(agent_config) if agent_config else {}
726
+ if 'instructions' in role_config and 'backstory' not in role_config:
727
+ role_config['backstory'] = role_config['instructions']
728
+ if 'role' not in role_config:
729
+ role_config['role'] = agent_name.replace('_', ' ').title()
730
+ if 'goal' not in role_config:
731
+ role_config['goal'] = role_config.get('backstory', 'Complete the assigned task')
732
+ if 'backstory' not in role_config:
733
+ role_config['backstory'] = f'You are a {role_config["role"]}'
734
+ config['roles'][agent_name] = role_config
735
+
736
+ # Get workflow input: 'input' is canonical, 'topic' is alias for backward compatibility
737
+ topic = config.get('input', config.get('topic', ''))
738
+
739
+ # Validate agents configuration for typos in field names
740
+ self._validate_agents_config(config)
741
+
742
+ tools_dict = {}
743
+
744
+ # Demand-driven tool resolution - only resolve tools actually used in YAML
745
+ if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
746
+ try:
747
+ # Collect all tool names mentioned in the YAML config
748
+ needed_tools: set[str] = set()
749
+ for role_cfg in config.get('roles', {}).values():
750
+ for t in role_cfg.get('tools') or []:
751
+ if isinstance(t, str) and t.strip():
752
+ needed_tools.add(t.strip())
753
+ for task_cfg in (role_cfg.get('tasks') or {}).values():
754
+ if not isinstance(task_cfg, dict):
755
+ continue
756
+ for t in task_cfg.get('tools') or []:
757
+ if isinstance(t, str) and t.strip():
758
+ needed_tools.add(t.strip())
759
+
760
+ # Resolve only the tools actually referenced in YAML
761
+ for tool_name in needed_tools:
762
+ try:
763
+ resolved_tool = self.tool_resolver.resolve(tool_name)
764
+ if resolved_tool is None:
765
+ self.logger.warning(f"Tool '{tool_name}' not found")
766
+ continue
767
+ tools_dict[tool_name] = (
768
+ resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
769
+ )
770
+ except Exception as e:
771
+ self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
772
+ continue
773
+
774
+ except Exception as e:
775
+ self.logger.warning(f"Error collecting YAML tool references: {e}")
776
+
777
+ # Add tools from class names - use tool_resolver to check tool validity
778
+ for tool_class in self.tools:
779
+ if isinstance(tool_class, type):
780
+ try:
781
+ tool_instance = tool_class()
782
+ tool_name = tool_class.__name__
783
+ tools_dict[tool_name] = tool_instance
784
+ self.logger.debug(f"Added tool: {tool_name}")
785
+ except Exception as e:
786
+ self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
787
+
788
+ root_directory = os.getcwd()
789
+ tools_py_path = os.path.join(root_directory, 'tools.py')
790
+ tools_dir_path = Path(root_directory) / 'tools'
791
+
792
+ # Use consolidated ToolResolver for tools.py loading
793
+ tools_dict.update(self.tool_resolver.get_local_tool_classes())
794
+ if os.path.isfile(tools_py_path):
795
+ self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
796
+ elif tools_dir_path.is_dir():
797
+ tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
798
+ if tools_dict:
799
+ self.logger.debug("tools folder exists in the root directory")
800
+
801
+ framework = self.framework or config.get('framework', 'crewai')
802
+
803
+ # AutoGen version selection logic
658
804
  if framework == "autogen":
659
- autogen_version = os.environ.get("AUTOGEN_VERSION", "auto").lower()
660
805
  autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
661
806
  autogen_v2_adapter = self._get_framework_adapter("autogen")
662
807
 
808
+ autogen_version = str(
809
+ config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
810
+ ).lower()
663
811
  use_v4 = False
812
+
664
813
  if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
665
814
  use_v4 = True
666
815
  elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
@@ -671,27 +820,27 @@ class AgentsGenerator:
671
820
  use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
672
821
 
673
822
  framework = "autogen_v4" if use_v4 else "autogen"
674
-
675
- # Initialize AgentOps if available
676
- try:
677
- import agentops
678
- agentops_api_key = os.getenv("AGENTOPS_API_KEY")
679
- if agentops_api_key:
823
+
824
+ # Initialize AgentOps if configured
825
+ agentops_api_key = os.getenv("AGENTOPS_API_KEY")
826
+ if agentops_api_key:
827
+ try:
828
+ import agentops
680
829
  agentops.init(agentops_api_key, default_tags=[framework])
681
- except ImportError:
682
- pass
683
-
684
- # Update framework adapter if framework changed (e.g., AutoGen version selection)
830
+ except ImportError:
831
+ pass
832
+
833
+ # Update framework adapter if framework changed
685
834
  if framework != self.framework:
686
835
  self.framework = framework
687
836
  self.framework_adapter = self._get_framework_adapter(framework)
688
837
 
689
- # Validate framework availability for non-CLI callers
838
+ # Validate framework availability
690
839
  from .framework_adapters.validators import assert_framework_available
691
840
  assert_framework_available(framework)
692
841
 
693
842
  self.logger.info(f"Using framework: {framework}")
694
- return self.framework_adapter.run(
843
+ return await self.framework_adapter.arun(
695
844
  config,
696
845
  self.config_list,
697
846
  topic,
@@ -701,6 +850,12 @@ class AgentsGenerator:
701
850
  cli_config=getattr(self, 'cli_config', None),
702
851
  )
703
852
 
853
+ async def _arun_yaml_workflow(self, config):
854
+ """Async placeholder for workflow mode - currently delegates to sync version."""
855
+ # For now, delegate to sync version using asyncio.to_thread
856
+ import asyncio
857
+ return await asyncio.to_thread(self._run_yaml_workflow, config)
858
+
704
859
  def _run_yaml_workflow(self, config):
705
860
  """
706
861
  Run a YAML workflow using the YAMLWorkflowParser.
@@ -149,15 +149,17 @@ class BotSessionManager:
149
149
  if self._store is not None:
150
150
  key = self._session_key(user_id)
151
151
  try:
152
- # Clear existing and re-write (atomic update)
153
- self._store.clear_session(key)
154
- for msg in history:
155
- self._store.add_message(
156
- key,
157
- msg.get("role", "user"),
158
- msg.get("content", ""),
159
- msg.get("metadata"),
160
- )
152
+ if hasattr(self._store, "set_chat_history"):
153
+ self._store.set_chat_history(key, history)
154
+ else:
155
+ self._store.clear_session(key)
156
+ for msg in history:
157
+ self._store.add_message(
158
+ key,
159
+ msg.get("role", "user"),
160
+ msg.get("content", ""),
161
+ msg.get("metadata"),
162
+ )
161
163
  except Exception as e:
162
164
  logger.warning("Failed to persist session to store: %s", e)
163
165
 
@@ -181,37 +181,10 @@ class TelegramBot(ChatCommandMixin, MessageHookMixin):
181
181
  )
182
182
 
183
183
  async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
184
- # Handle text OR audio messages
185
- message_text = None
186
-
187
- if update.message:
188
- # Check for voice/audio first
189
- if update.message.voice or update.message.audio:
190
- message_text = await self._transcribe_audio(update)
191
- elif update.message.text:
192
- message_text = update.message.text
193
-
194
- if not update.message or not message_text:
195
- return
196
-
197
- message = self._convert_update_to_message(update, override_text=message_text)
198
-
199
- # Add channel type for pairing system
200
- message._channel_type = "telegram"
201
-
202
- self.fire_message_received(message)
203
-
204
- # Check if channel is allowed
205
- if not self.config.is_channel_allowed(message.channel.channel_id if message.channel else ""):
206
- return
207
-
208
- # Handle unknown users with pairing system
209
- user_id = message.sender.user_id if message.sender else ""
210
- is_explicitly_allowed = bool(self.config.allowed_users) and self.config.is_user_allowed(user_id)
211
- if not is_explicitly_allowed:
212
- user_allowed = await UnknownUserHandler.handle(message, self._bot_context)
213
- if not user_allowed:
214
- return
184
+ # Use shared security pipeline for consistent enforcement
185
+ message = await process_inbound_telegram_message(update, self)
186
+ if not message:
187
+ return # Message was dropped by security checks
215
188
 
216
189
  for handler in self._message_handlers:
217
190
  try:
@@ -252,7 +225,7 @@ class TelegramBot(ChatCommandMixin, MessageHookMixin):
252
225
  update.message.from_user.username or update.message.from_user.first_name or ""
253
226
  ) if update.message.from_user else ""
254
227
  try:
255
- message_text = await self._debouncer.debounce(user_id, message_text)
228
+ message_text = await self._debouncer.debounce(user_id, message.content)
256
229
 
257
230
  # Show typing indicator with renewal during long operation
258
231
  if self.config.typing_indicator:
@@ -848,3 +821,114 @@ class TelegramBot(ChatCommandMixin, MessageHookMixin):
848
821
  except Exception as e:
849
822
  logger.error(f"Failed to send reply: {e}")
850
823
 
824
+
825
+ async def process_inbound_telegram_message(
826
+ update, # Telegram Update
827
+ bot: TelegramBot,
828
+ gateway_context: Optional[Dict] = None
829
+ ) -> Optional[BotMessage]:
830
+ """
831
+ Shared security pipeline for processing inbound Telegram messages.
832
+
833
+ Used by both standalone bot (TelegramBot.handle_message) and
834
+ gateway polling (_start_telegram_bot_polling) to ensure consistent
835
+ access control enforcement.
836
+
837
+ Args:
838
+ update: Telegram Update object
839
+ bot: TelegramBot instance with config and security settings
840
+ gateway_context: Optional dict with gateway-specific context
841
+
842
+ Returns:
843
+ BotMessage if message passes all security checks, None if dropped
844
+ """
845
+ if not update.message:
846
+ return None
847
+
848
+ # Extract message text (including audio transcription)
849
+ message_text = None
850
+ if update.message.voice or update.message.audio:
851
+ message_text = await bot._transcribe_audio(update)
852
+ elif update.message.text:
853
+ message_text = update.message.text
854
+
855
+ if not message_text:
856
+ return None
857
+
858
+ # Convert to BotMessage for consistent processing
859
+ message = bot._convert_update_to_message(update, override_text=message_text)
860
+
861
+ # Set channel type for pairing system
862
+ message._channel_type = "telegram"
863
+
864
+ # Fire message received event
865
+ bot.fire_message_received(message)
866
+
867
+ # 1. Channel allowlist check
868
+ channel_id = message.channel.channel_id if message.channel else ""
869
+ if not bot.config.is_channel_allowed(channel_id):
870
+ logger.debug(f"Message dropped: channel {channel_id} not in allowed_channels")
871
+ return None
872
+
873
+ # 2. User allowlist and pairing check
874
+ user_id = message.sender.user_id if message.sender else ""
875
+ is_explicitly_allowed = bot.config.is_user_allowed(user_id)
876
+
877
+ if not is_explicitly_allowed:
878
+ # Check if bot context is available for pairing system
879
+ if not hasattr(bot, '_bot_context') or bot._bot_context is None:
880
+ # For gateway mode, we need to create bot context on demand
881
+ if not hasattr(bot, '_pairing_store'):
882
+ from ..gateway.pairing import PairingStore
883
+ bot._pairing_store = PairingStore()
884
+
885
+ bot._bot_context = BotContext(
886
+ config=bot.config,
887
+ pairing_store=bot._pairing_store,
888
+ adapter=bot
889
+ )
890
+
891
+ user_allowed = await UnknownUserHandler.handle(message, bot._bot_context)
892
+ if not user_allowed:
893
+ logger.debug(f"Message dropped: user {user_id} not allowed by pairing system")
894
+ return None
895
+
896
+ # 3. Group policy enforcement
897
+ if message.channel and message.channel.channel_type not in ("dm", "private"):
898
+ # This is a group/channel message, check group policies
899
+ group_policy = getattr(bot.config, 'group_policy', 'mention_only')
900
+ mention_required = getattr(bot.config, 'mention_required', True)
901
+
902
+ if group_policy == "command_only":
903
+ if message.message_type != MessageType.COMMAND:
904
+ logger.debug(f"Message dropped: non-command in command_only group {channel_id}")
905
+ return None
906
+ elif group_policy == "mention_only":
907
+ # Check if bot was mentioned in the message
908
+ bot_username = bot._bot_user.username.lower() if bot._bot_user and bot._bot_user.username else ""
909
+ mention_handle = f"@{bot_username}" if bot_username else ""
910
+ bot_mentioned = (
911
+ mention_handle and mention_handle in message.content.lower()
912
+ ) or message.message_type == MessageType.COMMAND # Commands are always allowed
913
+
914
+ if not bot_mentioned:
915
+ logger.debug(f"Message dropped: bot not mentioned in group {channel_id}")
916
+ return None
917
+ elif group_policy == "respond_all":
918
+ # Allow all group messages
919
+ pass
920
+ elif mention_required:
921
+ # Fallback for backward compatibility when group_policy is not set
922
+ bot_username = bot._bot_user.username.lower() if bot._bot_user and bot._bot_user.username else ""
923
+ mention_handle = f"@{bot_username}" if bot_username else ""
924
+ bot_mentioned = (
925
+ mention_handle and mention_handle in message.content.lower()
926
+ ) or message.message_type == MessageType.COMMAND # Commands are always allowed
927
+
928
+ if not bot_mentioned:
929
+ logger.debug(f"Message dropped: bot not mentioned in group {channel_id}")
930
+ return None
931
+
932
+ # All security checks passed
933
+ logger.debug(f"Message security checks passed for user {user_id} in channel {channel_id}")
934
+ return message