PraisonAI 4.6.47__tar.gz → 4.6.50__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 (819) hide show
  1. {praisonai-4.6.47 → praisonai-4.6.50}/PKG-INFO +3 -3
  2. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/PKG-INFO +3 -3
  3. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/SOURCES.txt +12 -0
  4. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.47 → praisonai-4.6.50}/README.md +1 -1
  6. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_async_bridge.py +22 -15
  7. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_registry.py +53 -44
  8. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/agents_generator.py +31 -12
  9. praisonai-4.6.50/praisonai/async_agent_scheduler.py +23 -0
  10. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/auto.py +6 -36
  11. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_config_schema.py +10 -4
  12. praisonai-4.6.50/praisonai/bots/_typing_indicator.py +116 -0
  13. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/telegram.py +26 -10
  14. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/claw/default_app.py +2 -0
  15. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/app.py +2 -0
  16. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/gateway.py +48 -2
  17. praisonai-4.6.50/praisonai/cli/commands/kanban.py +452 -0
  18. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/bot_checks.py +138 -0
  19. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/gateway.py +105 -0
  20. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/interactive_tools.py +46 -33
  21. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/onboard.py +347 -170
  22. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy.py +75 -45
  23. praisonai-4.6.50/praisonai/gateway/kanban_dispatcher.py +417 -0
  24. praisonai-4.6.50/praisonai/gateway/port_utils.py +216 -0
  25. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/server.py +67 -12
  26. praisonai-4.6.50/praisonai/gateway/unicode_utils.py +167 -0
  27. praisonai-4.6.50/praisonai/integration/bridges/kanban_bridge.py +113 -0
  28. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/host_app.py +6 -1
  29. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/managed_local.py +11 -5
  30. praisonai-4.6.50/praisonai/kanban/__init__.py +12 -0
  31. praisonai-4.6.50/praisonai/kanban/models.py +198 -0
  32. praisonai-4.6.50/praisonai/kanban/paths.py +71 -0
  33. praisonai-4.6.50/praisonai/kanban/sqlite_store.py +565 -0
  34. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/_valkey_client.py +4 -0
  35. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/hooks/agent_hooks.py +103 -7
  36. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/orchestrator.py +159 -0
  37. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/docker.py +15 -1
  38. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/ssh.py +17 -7
  39. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/__init__.py +6 -0
  40. {praisonai-4.6.47/praisonai → praisonai-4.6.50/praisonai/scheduler}/async_agent_scheduler.py +272 -54
  41. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tool_registry.py +57 -22
  42. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tool_resolver.py +26 -27
  43. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/__init__.py +12 -0
  44. praisonai-4.6.50/praisonai/tools/kanban_tools.py +399 -0
  45. praisonai-4.6.50/praisonai/version.py +1 -0
  46. {praisonai-4.6.47 → praisonai-4.6.50}/pyproject.toml +1 -1
  47. praisonai-4.6.47/praisonai/version.py +0 -1
  48. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/dependency_links.txt +0 -0
  49. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/entry_points.txt +0 -0
  50. {praisonai-4.6.47 → praisonai-4.6.50}/PraisonAI.egg-info/top_level.txt +0 -0
  51. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/__init__.py +0 -0
  52. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/__main__.py +0 -0
  53. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_approval_spec.py +0 -0
  54. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/__init__.py +0 -0
  55. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/api_md.py +0 -0
  56. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/__init__.py +0 -0
  57. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/docs_extractor.py +0 -0
  58. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/docs_generator.py +0 -0
  59. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/generator.py +0 -0
  60. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  61. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/python_extractor.py +0 -0
  62. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  63. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/rust_extractor.py +0 -0
  64. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  65. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  66. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  67. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_entrypoint.py +0 -0
  68. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_framework_availability.py +0 -0
  69. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_logging.py +0 -0
  70. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/_safe_loader.py +0 -0
  71. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/acp/__init__.py +0 -0
  72. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/acp/config.py +0 -0
  73. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/acp/safe_edit.py +0 -0
  74. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/acp/server.py +0 -0
  75. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/acp/session.py +0 -0
  76. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/adapters/__init__.py +0 -0
  77. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/adapters/readers.py +0 -0
  78. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/adapters/rerankers.py +0 -0
  79. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/adapters/retrievers.py +0 -0
  80. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/adapters/vector_stores.py +0 -0
  81. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/agent.py +0 -0
  82. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/agent_scheduler.py +0 -0
  83. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/api/agent_invoke.py +0 -0
  84. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/api/call.py +0 -0
  85. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/app/__init__.py +0 -0
  86. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/app/agentos.py +0 -0
  87. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/audit/__init__.py +0 -0
  88. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/audit/agent_centric.py +0 -0
  89. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/__init__.py +0 -0
  90. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_ack.py +0 -0
  91. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_approval.py +0 -0
  92. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_approval_base.py +0 -0
  93. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_auth.py +0 -0
  94. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_chunk.py +0 -0
  95. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_commands.py +0 -0
  96. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_debounce.py +0 -0
  97. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_defaults.py +0 -0
  98. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_discord_approval.py +0 -0
  99. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_dlq.py +0 -0
  100. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_email_utils.py +0 -0
  101. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_http_approval.py +0 -0
  102. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_mirror.py +0 -0
  103. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_pairing_ui.py +0 -0
  104. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_protocol_mixin.py +0 -0
  105. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_rate_limit.py +0 -0
  106. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_registry.py +0 -0
  107. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_resilience.py +0 -0
  108. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_session.py +0 -0
  109. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_slack_approval.py +0 -0
  110. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_telegram_approval.py +0 -0
  111. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_unknown_user.py +0 -0
  112. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_webhook_approval.py +0 -0
  113. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  114. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/agentmail.py +0 -0
  115. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/bot.py +0 -0
  116. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/botos.py +0 -0
  117. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/discord.py +0 -0
  118. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/email.py +0 -0
  119. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/linear.py +0 -0
  120. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/media.py +0 -0
  121. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/slack.py +0 -0
  122. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/bots/whatsapp.py +0 -0
  123. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/__init__.py +0 -0
  124. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/agent.py +0 -0
  125. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/benchmark.py +0 -0
  126. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/cdp_agent.py +0 -0
  127. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/cdp_utils.py +0 -0
  128. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/cli.py +0 -0
  129. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/diagnostics.py +0 -0
  130. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/launcher.py +0 -0
  131. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/playwright_agent.py +0 -0
  132. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/profiling.py +0 -0
  133. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/protocol.py +0 -0
  134. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/report.py +0 -0
  135. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/server.py +0 -0
  136. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/sessions.py +0 -0
  137. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/browser/video.py +0 -0
  138. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/__init__.py +0 -0
  139. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/a2a.py +0 -0
  140. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/assistants.py +0 -0
  141. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/audio.py +0 -0
  142. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/batches.py +0 -0
  143. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/completions.py +0 -0
  144. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/container_files.py +0 -0
  145. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/containers.py +0 -0
  146. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/embeddings.py +0 -0
  147. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/files.py +0 -0
  148. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/fine_tuning.py +0 -0
  149. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/guardrails.py +0 -0
  150. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/images.py +0 -0
  151. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/mcp.py +0 -0
  152. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/messages.py +0 -0
  153. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/moderations.py +0 -0
  154. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/ocr.py +0 -0
  155. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/passthrough.py +0 -0
  156. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/rag.py +0 -0
  157. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/realtime.py +0 -0
  158. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/rerank.py +0 -0
  159. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/responses.py +0 -0
  160. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/search.py +0 -0
  161. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/skills.py +0 -0
  162. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/vector_store_files.py +0 -0
  163. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/vector_stores.py +0 -0
  164. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/capabilities/videos.py +0 -0
  165. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/claw/__init__.py +0 -0
  166. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/__init__.py +0 -0
  167. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/_paths.py +0 -0
  168. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/branding.py +0 -0
  169. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/__init__.py +0 -0
  170. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/acp.py +0 -0
  171. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/agents.py +0 -0
  172. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/app.py +0 -0
  173. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/audit.py +0 -0
  174. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/batch.py +0 -0
  175. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/benchmark.py +0 -0
  176. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/bot.py +0 -0
  177. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/browser.py +0 -0
  178. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/call.py +0 -0
  179. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/chat.py +0 -0
  180. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/claw.py +0 -0
  181. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/code.py +0 -0
  182. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/commit.py +0 -0
  183. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/completion.py +0 -0
  184. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/config.py +0 -0
  185. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/context.py +0 -0
  186. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/dashboard.py +0 -0
  187. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/debug.py +0 -0
  188. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/deploy.py +0 -0
  189. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/diag.py +0 -0
  190. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/docs.py +0 -0
  191. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/doctor.py +0 -0
  192. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/endpoints.py +0 -0
  193. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/environment.py +0 -0
  194. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/eval.py +0 -0
  195. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/examples.py +0 -0
  196. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/flow.py +0 -0
  197. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/github.py +0 -0
  198. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/hooks.py +0 -0
  199. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/knowledge.py +0 -0
  200. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/langextract.py +0 -0
  201. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/langfuse.py +0 -0
  202. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/loop.py +0 -0
  203. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/lsp.py +0 -0
  204. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/managed.py +0 -0
  205. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/mcp.py +0 -0
  206. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/memory.py +0 -0
  207. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/mint_link.py +0 -0
  208. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/n8n.py +0 -0
  209. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/obs.py +0 -0
  210. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/onboard.py +0 -0
  211. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/package.py +0 -0
  212. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/pairing.py +0 -0
  213. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/paths.py +0 -0
  214. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/plugins.py +0 -0
  215. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/port.py +0 -0
  216. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/profile.py +0 -0
  217. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/publish.py +0 -0
  218. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/rag.py +0 -0
  219. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/realtime.py +0 -0
  220. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/recipe.py +0 -0
  221. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/registry.py +0 -0
  222. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/replay.py +0 -0
  223. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/research.py +0 -0
  224. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/retrieval.py +0 -0
  225. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/rules.py +0 -0
  226. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/run.py +0 -0
  227. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/sandbox.py +0 -0
  228. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/schedule.py +0 -0
  229. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/serve.py +0 -0
  230. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/session.py +0 -0
  231. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/setup.py +0 -0
  232. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/skills.py +0 -0
  233. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/standardise.py +0 -0
  234. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/templates.py +0 -0
  235. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/test.py +0 -0
  236. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/todo.py +0 -0
  237. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/tools.py +0 -0
  238. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/traces.py +0 -0
  239. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/tracker.py +0 -0
  240. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/train.py +0 -0
  241. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/ui.py +0 -0
  242. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/up.py +0 -0
  243. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/version.py +0 -0
  244. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/commands/workflow.py +0 -0
  245. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/config_loader.py +0 -0
  246. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/configuration/__init__.py +0 -0
  247. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/configuration/loader.py +0 -0
  248. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/configuration/paths.py +0 -0
  249. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/configuration/schema.py +0 -0
  250. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/execution/__init__.py +0 -0
  251. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/execution/core.py +0 -0
  252. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/execution/profiler.py +0 -0
  253. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/execution/request.py +0 -0
  254. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/execution/result.py +0 -0
  255. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/fallback_schema.py +0 -0
  256. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/__init__.py +0 -0
  257. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/acp.py +0 -0
  258. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/action_orchestrator.py +0 -0
  259. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/agent_scheduler.py +0 -0
  260. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/agent_tools.py +0 -0
  261. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/agents.py +0 -0
  262. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/approval.py +0 -0
  263. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/at_mentions.py +0 -0
  264. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/audit_cli.py +0 -0
  265. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/auto_memory.py +0 -0
  266. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/auto_mode.py +0 -0
  267. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/autonomy_mode.py +0 -0
  268. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/background.py +0 -0
  269. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/base.py +0 -0
  270. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/benchmark.py +0 -0
  271. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/bots_cli.py +0 -0
  272. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/capabilities.py +0 -0
  273. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/checkpoints.py +0 -0
  274. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/cli_profiler.py +0 -0
  275. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/code_intelligence.py +0 -0
  276. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/compaction.py +0 -0
  277. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/compare.py +0 -0
  278. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/config_hierarchy.py +0 -0
  279. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/context_manager.py +0 -0
  280. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/cost_tracker.py +0 -0
  281. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/csv_test_runner.py +0 -0
  282. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/debug.py +0 -0
  283. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/deploy.py +0 -0
  284. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/diag.py +0 -0
  285. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/display_jsonl.py +0 -0
  286. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/__init__.py +0 -0
  287. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  288. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  289. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  290. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  291. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  292. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  293. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  294. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  295. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  296. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  297. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  298. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  299. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  300. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  301. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  302. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  303. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  304. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/engine.py +0 -0
  305. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/formatters.py +0 -0
  306. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/handler.py +0 -0
  307. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/models.py +0 -0
  308. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/doctor/registry.py +0 -0
  309. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/endpoints.py +0 -0
  310. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/eval.py +0 -0
  311. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/examples.py +0 -0
  312. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/external_agents.py +0 -0
  313. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/fast_context.py +0 -0
  314. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/file_history.py +0 -0
  315. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/flow_display.py +0 -0
  316. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/git_attribution.py +0 -0
  317. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/git_integration.py +0 -0
  318. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/guardrail.py +0 -0
  319. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/handoff.py +0 -0
  320. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/hooks.py +0 -0
  321. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/hybrid_workflow.py +0 -0
  322. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/image.py +0 -0
  323. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/interactive_core_headless.py +0 -0
  324. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/interactive_runtime.py +0 -0
  325. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/interactive_test_harness.py +0 -0
  326. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/interactive_tui.py +0 -0
  327. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/job_workflow.py +0 -0
  328. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/jobs.py +0 -0
  329. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/knowledge.py +0 -0
  330. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/knowledge_cli.py +0 -0
  331. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/lite.py +0 -0
  332. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/logs.py +0 -0
  333. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/lsp_cli.py +0 -0
  334. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  335. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/mcp.py +0 -0
  336. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/message_queue.py +0 -0
  337. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/metrics.py +0 -0
  338. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/migrate.py +0 -0
  339. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/migration_flow.py +0 -0
  340. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/migration_spec.py +0 -0
  341. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/n8n.py +0 -0
  342. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/observability.py +0 -0
  343. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/ollama.py +0 -0
  344. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/output_modes.py +0 -0
  345. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/output_style.py +0 -0
  346. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/package.py +0 -0
  347. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/performance.py +0 -0
  348. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/persistence.py +0 -0
  349. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/plugin_cli.py +0 -0
  350. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profile.py +0 -0
  351. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profiler/__init__.py +0 -0
  352. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profiler/core.py +0 -0
  353. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profiler/optimizations.py +0 -0
  354. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profiler/suite.py +0 -0
  355. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/profiling.py +0 -0
  356. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/__init__.py +0 -0
  357. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/manager.py +0 -0
  358. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/models.py +0 -0
  359. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/persistence.py +0 -0
  360. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/scheduler.py +0 -0
  361. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/queue/worker.py +0 -0
  362. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/recipe.py +0 -0
  363. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/recipe_creator.py +0 -0
  364. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/recipe_optimizer.py +0 -0
  365. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/recipe_prompts.py +0 -0
  366. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/recipes.py +0 -0
  367. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/registry.py +0 -0
  368. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/repo_map.py +0 -0
  369. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/router.py +0 -0
  370. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/safe_shell.py +0 -0
  371. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/sandbox_cli.py +0 -0
  372. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/sandbox_executor.py +0 -0
  373. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/sdk_knowledge.py +0 -0
  374. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/serve.py +0 -0
  375. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/session.py +0 -0
  376. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/setup/__init__.py +0 -0
  377. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/setup/handler.py +0 -0
  378. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/setup/templates.py +0 -0
  379. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/skills.py +0 -0
  380. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/slash_commands.py +0 -0
  381. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/telemetry.py +0 -0
  382. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/templates.py +0 -0
  383. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/thinking.py +0 -0
  384. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/todo.py +0 -0
  385. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tools.py +0 -0
  386. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/__init__.py +0 -0
  387. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/app.py +0 -0
  388. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/cli.py +0 -0
  389. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/config.py +0 -0
  390. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/debug.py +0 -0
  391. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/events.py +0 -0
  392. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/mock_provider.py +0 -0
  393. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/orchestrator.py +0 -0
  394. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  395. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/help.py +0 -0
  396. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/main.py +0 -0
  397. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/queue.py +0 -0
  398. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/session.py +0 -0
  399. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/screens/settings.py +0 -0
  400. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/session_store.py +0 -0
  401. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  402. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  403. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  404. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  405. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  406. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  407. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/status.py +0 -0
  408. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  409. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/wizard.py +0 -0
  410. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/workflow.py +0 -0
  411. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/features/yaml_utils.py +0 -0
  412. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/__init__.py +0 -0
  413. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/async_tui.py +0 -0
  414. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/config.py +0 -0
  415. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/core.py +0 -0
  416. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/events.py +0 -0
  417. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  418. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  419. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  420. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/praison_io.py +0 -0
  421. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/repl.py +0 -0
  422. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/split_tui.py +0 -0
  423. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/interactive/tui_app.py +0 -0
  424. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/langfuse_client.py +0 -0
  425. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/legacy.py +0 -0
  426. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/main.py +0 -0
  427. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/output/__init__.py +0 -0
  428. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/output/console.py +0 -0
  429. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/schedule_cli.py +0 -0
  430. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/schema_provider.py +0 -0
  431. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/session/__init__.py +0 -0
  432. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/session/unified.py +0 -0
  433. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/state/__init__.py +0 -0
  434. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/state/identifiers.py +0 -0
  435. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/state/sessions.py +0 -0
  436. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/__init__.py +0 -0
  437. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/config.py +0 -0
  438. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/events.py +0 -0
  439. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/mg_backend.py +0 -0
  440. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/plain.py +0 -0
  441. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/ui/rich_backend.py +0 -0
  442. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli/unified_schema.py +0 -0
  443. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli_backends/__init__.py +0 -0
  444. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli_backends/claude.py +0 -0
  445. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/cli_backends/registry.py +0 -0
  446. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/__init__.py +0 -0
  447. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/agent_tools.py +0 -0
  448. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/diff/__init__.py +0 -0
  449. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/diff/diff_strategy.py +0 -0
  450. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/__init__.py +0 -0
  451. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/apply_diff.py +0 -0
  452. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/execute_command.py +0 -0
  453. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/list_files.py +0 -0
  454. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/read_file.py +0 -0
  455. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/search_replace.py +0 -0
  456. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/tools/write_file.py +0 -0
  457. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/utils/__init__.py +0 -0
  458. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/utils/file_utils.py +0 -0
  459. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/utils/ignore_utils.py +0 -0
  460. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/code/utils/text_utils.py +0 -0
  461. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/__init__.py +0 -0
  462. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/artifact_store.py +0 -0
  463. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/config.py +0 -0
  464. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/history_store.py +0 -0
  465. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/queue.py +0 -0
  466. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/setup.py +0 -0
  467. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/context/terminal_logger.py +0 -0
  468. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/daemon/__init__.py +0 -0
  469. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/daemon/launchd.py +0 -0
  470. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/daemon/systemd.py +0 -0
  471. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/daemon/windows.py +0 -0
  472. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/db/__init__.py +0 -0
  473. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/db/adapter.py +0 -0
  474. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/__init__.py +0 -0
  475. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/api.py +0 -0
  476. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/docker.py +0 -0
  477. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/doctor.py +0 -0
  478. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/main.py +0 -0
  479. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/models.py +0 -0
  480. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/providers/__init__.py +0 -0
  481. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/providers/aws.py +0 -0
  482. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/providers/azure.py +0 -0
  483. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/providers/base.py +0 -0
  484. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/providers/gcp.py +0 -0
  485. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/deploy/schema.py +0 -0
  486. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/__init__.py +0 -0
  487. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/classifier.py +0 -0
  488. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/executor.py +0 -0
  489. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/extractor.py +0 -0
  490. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/reporter.py +0 -0
  491. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/runner.py +0 -0
  492. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/docs_runner/workspace.py +0 -0
  493. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/__init__.py +0 -0
  494. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/a2u_server.py +0 -0
  495. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/discovery.py +0 -0
  496. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/__init__.py +0 -0
  497. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/a2a.py +0 -0
  498. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/a2u.py +0 -0
  499. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/agents_api.py +0 -0
  500. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/base.py +0 -0
  501. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/mcp.py +0 -0
  502. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/recipe.py +0 -0
  503. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  504. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/registry.py +0 -0
  505. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/endpoints/server.py +0 -0
  506. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/__init__.py +0 -0
  507. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/client.py +0 -0
  508. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  509. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  510. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/components/__init__.py +0 -0
  511. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/converter.py +0 -0
  512. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/flow/helpers.py +0 -0
  513. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/__init__.py +0 -0
  514. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  515. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/base.py +0 -0
  516. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  517. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  518. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/registry.py +0 -0
  519. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/framework_adapters/validators.py +0 -0
  520. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/__init__.py +0 -0
  521. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/auth.py +0 -0
  522. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/cookie_auth.py +0 -0
  523. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/exec_approval.py +0 -0
  524. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/gateway_approval.py +0 -0
  525. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/magic_link.py +0 -0
  526. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/origin_check.py +0 -0
  527. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/pairing.py +0 -0
  528. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/pairing_routes.py +0 -0
  529. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/push_channels.py +0 -0
  530. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/push_delivery.py +0 -0
  531. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/push_polling.py +0 -0
  532. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/push_presence.py +0 -0
  533. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/rate_limiter.py +0 -0
  534. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/gateway/redis_pubsub.py +0 -0
  535. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/inbuilt_tools/__init__.py +0 -0
  536. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  537. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/inc/__init__.py +0 -0
  538. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/inc/config.py +0 -0
  539. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/inc/models.py +0 -0
  540. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/__init__.py +0 -0
  541. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/_legacy_handlers.py +0 -0
  542. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/__init__.py +0 -0
  543. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  544. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/hooks_query.py +0 -0
  545. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/schedules_runner.py +0 -0
  546. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/usage_bridge.py +0 -0
  547. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/bridges/workflows_service.py +0 -0
  548. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/context_files.py +0 -0
  549. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/gateway_host.py +0 -0
  550. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/pages/__init__.py +0 -0
  551. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/pages/bot_health.py +0 -0
  552. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integration/pages/workflow_runs.py +0 -0
  553. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/__init__.py +0 -0
  554. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/_session_info.py +0 -0
  555. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/_tool_aliases.py +0 -0
  556. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/base.py +0 -0
  557. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/claude_code.py +0 -0
  558. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/codex_cli.py +0 -0
  559. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/__init__.py +0 -0
  560. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/daytona.py +0 -0
  561. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/docker.py +0 -0
  562. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/e2b.py +0 -0
  563. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/flyio.py +0 -0
  564. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/local.py +0 -0
  565. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/compute/modal_compute.py +0 -0
  566. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/cursor_cli.py +0 -0
  567. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/db_session_adapter.py +0 -0
  568. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/gemini_cli.py +0 -0
  569. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/hosted_agent.py +0 -0
  570. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/local_agent.py +0 -0
  571. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/managed_agents.py +0 -0
  572. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/registry.py +0 -0
  573. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/integrations/sandboxed_agent.py +0 -0
  574. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/__init__.py +0 -0
  575. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/executor.py +0 -0
  576. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/models.py +0 -0
  577. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/router.py +0 -0
  578. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/server.py +0 -0
  579. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/jobs/store.py +0 -0
  580. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/llm/__init__.py +0 -0
  581. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/llm/env.py +0 -0
  582. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/llm/registry.py +0 -0
  583. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/__init__.py +0 -0
  584. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/__init__.py +0 -0
  585. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/agents.py +0 -0
  586. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  587. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  588. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  589. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  590. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/memory.py +0 -0
  591. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/prompts.py +0 -0
  592. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/resources.py +0 -0
  593. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  594. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/auth/__init__.py +0 -0
  595. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/auth/api_key.py +0 -0
  596. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/auth/oauth.py +0 -0
  597. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/auth/oidc.py +0 -0
  598. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/auth/scopes.py +0 -0
  599. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/cli.py +0 -0
  600. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/elicitation.py +0 -0
  601. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/icons.py +0 -0
  602. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/recipe_adapter.py +0 -0
  603. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/recipe_cli.py +0 -0
  604. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/registry.py +0 -0
  605. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/sampling.py +0 -0
  606. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/server.py +0 -0
  607. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/tasks.py +0 -0
  608. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/tool_index.py +0 -0
  609. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/transports/__init__.py +0 -0
  610. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/transports/http_stream.py +0 -0
  611. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/mcp_server/transports/stdio.py +0 -0
  612. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/n8n/__init__.py +0 -0
  613. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/n8n/client.py +0 -0
  614. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/n8n/converter.py +0 -0
  615. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/n8n/preview.py +0 -0
  616. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/n8n/reverse_converter.py +0 -0
  617. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/observability/__init__.py +0 -0
  618. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/observability/langextract.py +0 -0
  619. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/observability/langfuse.py +0 -0
  620. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/__init__.py +0 -0
  621. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/config.py +0 -0
  622. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/__init__.py +0 -0
  623. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/async_mysql.py +0 -0
  624. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/async_postgres.py +0 -0
  625. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  626. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/base.py +0 -0
  627. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/json_store.py +0 -0
  628. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/mysql.py +0 -0
  629. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/postgres.py +0 -0
  630. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/singlestore.py +0 -0
  631. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/sqlite.py +0 -0
  632. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/supabase.py +0 -0
  633. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/surrealdb.py +0 -0
  634. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/conversation/turso.py +0 -0
  635. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/factory.py +0 -0
  636. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/hooks/__init__.py +0 -0
  637. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/__init__.py +0 -0
  638. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/base.py +0 -0
  639. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/cassandra.py +0 -0
  640. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/chroma.py +0 -0
  641. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  642. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  643. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/couchbase.py +0 -0
  644. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/lancedb.py +0 -0
  645. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  646. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  647. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  648. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/milvus.py +0 -0
  649. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  650. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/pgvector.py +0 -0
  651. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/pinecone.py +0 -0
  652. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/qdrant.py +0 -0
  653. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  654. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  655. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  656. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  657. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  658. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/knowledge/weaviate.py +0 -0
  659. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/migrations/__init__.py +0 -0
  660. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/migrations/manager.py +0 -0
  661. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/registry.py +0 -0
  662. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/__init__.py +0 -0
  663. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/async_mongodb.py +0 -0
  664. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/base.py +0 -0
  665. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/dynamodb.py +0 -0
  666. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/firestore.py +0 -0
  667. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/gcs.py +0 -0
  668. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/memory.py +0 -0
  669. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/mongodb.py +0 -0
  670. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/redis.py +0 -0
  671. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/upstash.py +0 -0
  672. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/state/valkey.py +0 -0
  673. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/tests/__init__.py +0 -0
  674. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/tests/test_all_backends.py +0 -0
  675. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  676. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/profiler.py +0 -0
  677. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/push/__init__.py +0 -0
  678. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/push/client.py +0 -0
  679. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/push/transports.py +0 -0
  680. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/__init__.py +0 -0
  681. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/bridge.py +0 -0
  682. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/core.py +0 -0
  683. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/exceptions.py +0 -0
  684. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/history.py +0 -0
  685. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/models.py +0 -0
  686. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/operations.py +0 -0
  687. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/policy.py +0 -0
  688. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/registry.py +0 -0
  689. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/runtime.py +0 -0
  690. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/security.py +0 -0
  691. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/serve.py +0 -0
  692. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/recipe/server.py +0 -0
  693. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/__init__.py +0 -0
  694. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/analyzer.py +0 -0
  695. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/applier.py +0 -0
  696. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/judge.py +0 -0
  697. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/plan.py +0 -0
  698. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/player.py +0 -0
  699. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/reader.py +0 -0
  700. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/storage.py +0 -0
  701. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/replay/writer.py +0 -0
  702. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/__init__.py +0 -0
  703. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/_compat.py +0 -0
  704. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/_shell.py +0 -0
  705. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/daytona.py +0 -0
  706. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/e2b.py +0 -0
  707. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/modal.py +0 -0
  708. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/sandlock.py +0 -0
  709. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/sandbox/subprocess.py +0 -0
  710. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/agent_scheduler.py +0 -0
  711. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/base.py +0 -0
  712. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/daemon_manager.py +0 -0
  713. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/deployment.py +0 -0
  714. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/executor.py +0 -0
  715. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/shared.py +0 -0
  716. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/state_manager.py +0 -0
  717. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/scheduler/yaml_loader.py +0 -0
  718. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/security/__init__.py +0 -0
  719. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/security/audit.py +0 -0
  720. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/security/injection.py +0 -0
  721. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/security/protected.py +0 -0
  722. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/setup/__init__.py +0 -0
  723. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/setup/build.py +0 -0
  724. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/setup/post_install.py +0 -0
  725. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/setup/setup_conda_env.py +0 -0
  726. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/setup.py +0 -0
  727. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/__init__.py +0 -0
  728. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/ai_generator.py +0 -0
  729. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/config.py +0 -0
  730. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/dedupe.py +0 -0
  731. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/discovery.py +0 -0
  732. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/drift.py +0 -0
  733. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/engine.py +0 -0
  734. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/enhanced_templates.py +0 -0
  735. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/example_verifier.py +0 -0
  736. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/manifest.py +0 -0
  737. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/models.py +0 -0
  738. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/reports.py +0 -0
  739. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/templates.py +0 -0
  740. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/undo_redo.py +0 -0
  741. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/standardise/validator.py +0 -0
  742. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/__init__.py +0 -0
  743. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/dynamodb_adapter.py +0 -0
  744. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/mongodb_adapter.py +0 -0
  745. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/postgresql_adapter.py +0 -0
  746. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/redis_adapter.py +0 -0
  747. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/storage/valkey_adapter.py +0 -0
  748. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/__init__.py +0 -0
  749. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/batch_source.py +0 -0
  750. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/cli_docs_source.py +0 -0
  751. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/discovery.py +0 -0
  752. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/docs_source.py +0 -0
  753. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/examples_source.py +0 -0
  754. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/executor.py +0 -0
  755. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/models.py +0 -0
  756. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/report_viewer.py +0 -0
  757. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/reporter.py +0 -0
  758. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/suite_runner/runner.py +0 -0
  759. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/__init__.py +0 -0
  760. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/cache.py +0 -0
  761. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/dependency_checker.py +0 -0
  762. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/discovery.py +0 -0
  763. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/loader.py +0 -0
  764. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/registry.py +0 -0
  765. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/resolver.py +0 -0
  766. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/security.py +0 -0
  767. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/tool_override.py +0 -0
  768. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/templates/tools_doctor.py +0 -0
  769. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/test.py +0 -0
  770. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/audio.py +0 -0
  771. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/glob_tool.py +0 -0
  772. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/grep_tool.py +0 -0
  773. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/multiedit.py +0 -0
  774. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/tools/skill_manage.py +0 -0
  775. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/__init__.py +0 -0
  776. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/_ollama.py +0 -0
  777. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/__init__.py +0 -0
  778. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/grader.py +0 -0
  779. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/hook.py +0 -0
  780. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/models.py +0 -0
  781. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/orchestrator.py +0 -0
  782. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/agents/storage.py +0 -0
  783. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/llm/__init__.py +0 -0
  784. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train/llm/trainer.py +0 -0
  785. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train.py +0 -0
  786. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/train_vision.py +0 -0
  787. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/_aiui_datastore.py +0 -0
  788. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/_external_agents.py +0 -0
  789. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/callbacks.py +0 -0
  790. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/components/aicoder.py +0 -0
  791. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/context.py +0 -0
  792. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui/database_config.py +0 -0
  793. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_agents/__init__.py +0 -0
  794. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_agents/default_app.py +0 -0
  795. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_bot/__init__.py +0 -0
  796. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_bot/default_app.py +0 -0
  797. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_chat/__init__.py +0 -0
  798. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_chat/default_app.py +0 -0
  799. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_dashboard/default_app.py +0 -0
  800. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_realtime/__init__.py +0 -0
  801. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/ui_realtime/default_app.py +0 -0
  802. {praisonai-4.6.47 → praisonai-4.6.50}/praisonai/upload_vision.py +0 -0
  803. {praisonai-4.6.47 → praisonai-4.6.50}/setup.cfg +0 -0
  804. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test.py +0 -0
  805. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_agents_playbook.py +0 -0
  806. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_approval_system.py +0 -0
  807. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_basic.py +0 -0
  808. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_cli_features.py +0 -0
  809. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_custom_tools_fix.py +0 -0
  810. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_double_api_fix.py +0 -0
  811. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_n8n_agent_invoke.py +0 -0
  812. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_n8n_cli_feature.py +0 -0
  813. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_n8n_integration.py +0 -0
  814. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_phase2_refactor.py +0 -0
  815. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_recipe.py +0 -0
  816. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_registry.py +0 -0
  817. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_runner.py +0 -0
  818. {praisonai-4.6.47 → praisonai-4.6.50}/tests/test_sandboxed_agent_compatibility.py +0 -0
  819. {praisonai-4.6.47 → praisonai-4.6.50}/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.47
3
+ Version: 4.6.50
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.47
14
+ Requires-Dist: praisonaiagents>=1.6.50
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
@@ -564,7 +564,7 @@ praisonai flow
564
564
 
565
565
  Open **http://localhost:7861** — use the **Agent** and **Agent Team** components to create sequential or parallel workflows. Connect Chat Input → Agent Team → Chat Output for instant multi-agent pipelines.
566
566
 
567
- > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/flow) — visual agent building, component reference, and deployment
567
+ > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/agentflow) — visual agent building, component reference, and deployment
568
568
 
569
569
  ### 8. PraisonAI UI 🤖 (Clean Chat)
570
570
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.47
3
+ Version: 4.6.50
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.47
14
+ Requires-Dist: praisonaiagents>=1.6.50
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
@@ -564,7 +564,7 @@ praisonai flow
564
564
 
565
565
  Open **http://localhost:7861** — use the **Agent** and **Agent Team** components to create sequential or parallel workflows. Connect Chat Input → Agent Team → Chat Output for instant multi-agent pipelines.
566
566
 
567
- > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/flow) — visual agent building, component reference, and deployment
567
+ > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/agentflow) — visual agent building, component reference, and deployment
568
568
 
569
569
  ### 8. PraisonAI UI 🤖 (Clean Chat)
570
570
 
@@ -82,6 +82,7 @@ praisonai/bots/_resilience.py
82
82
  praisonai/bots/_session.py
83
83
  praisonai/bots/_slack_approval.py
84
84
  praisonai/bots/_telegram_approval.py
85
+ praisonai/bots/_typing_indicator.py
85
86
  praisonai/bots/_unknown_user.py
86
87
  praisonai/bots/_webhook_approval.py
87
88
  praisonai/bots/_whatsapp_web_adapter.py
@@ -182,6 +183,7 @@ praisonai/cli/commands/flow.py
182
183
  praisonai/cli/commands/gateway.py
183
184
  praisonai/cli/commands/github.py
184
185
  praisonai/cli/commands/hooks.py
186
+ praisonai/cli/commands/kanban.py
185
187
  praisonai/cli/commands/knowledge.py
186
188
  praisonai/cli/commands/langextract.py
187
189
  praisonai/cli/commands/langfuse.py
@@ -504,10 +506,12 @@ praisonai/gateway/auth.py
504
506
  praisonai/gateway/cookie_auth.py
505
507
  praisonai/gateway/exec_approval.py
506
508
  praisonai/gateway/gateway_approval.py
509
+ praisonai/gateway/kanban_dispatcher.py
507
510
  praisonai/gateway/magic_link.py
508
511
  praisonai/gateway/origin_check.py
509
512
  praisonai/gateway/pairing.py
510
513
  praisonai/gateway/pairing_routes.py
514
+ praisonai/gateway/port_utils.py
511
515
  praisonai/gateway/push_channels.py
512
516
  praisonai/gateway/push_delivery.py
513
517
  praisonai/gateway/push_polling.py
@@ -515,6 +519,7 @@ praisonai/gateway/push_presence.py
515
519
  praisonai/gateway/rate_limiter.py
516
520
  praisonai/gateway/redis_pubsub.py
517
521
  praisonai/gateway/server.py
522
+ praisonai/gateway/unicode_utils.py
518
523
  praisonai/inbuilt_tools/__init__.py
519
524
  praisonai/inbuilt_tools/autogen_tools.py
520
525
  praisonai/inc/__init__.py
@@ -528,6 +533,7 @@ praisonai/integration/host_app.py
528
533
  praisonai/integration/bridges/__init__.py
529
534
  praisonai/integration/bridges/approvals_bridge.py
530
535
  praisonai/integration/bridges/hooks_query.py
536
+ praisonai/integration/bridges/kanban_bridge.py
531
537
  praisonai/integration/bridges/schedules_runner.py
532
538
  praisonai/integration/bridges/usage_bridge.py
533
539
  praisonai/integration/bridges/workflows_service.py
@@ -562,6 +568,10 @@ praisonai/jobs/models.py
562
568
  praisonai/jobs/router.py
563
569
  praisonai/jobs/server.py
564
570
  praisonai/jobs/store.py
571
+ praisonai/kanban/__init__.py
572
+ praisonai/kanban/models.py
573
+ praisonai/kanban/paths.py
574
+ praisonai/kanban/sqlite_store.py
565
575
  praisonai/llm/__init__.py
566
576
  praisonai/llm/env.py
567
577
  praisonai/llm/registry.py
@@ -698,6 +708,7 @@ praisonai/sandbox/ssh.py
698
708
  praisonai/sandbox/subprocess.py
699
709
  praisonai/scheduler/__init__.py
700
710
  praisonai/scheduler/agent_scheduler.py
711
+ praisonai/scheduler/async_agent_scheduler.py
701
712
  praisonai/scheduler/base.py
702
713
  praisonai/scheduler/daemon_manager.py
703
714
  praisonai/scheduler/deployment.py
@@ -759,6 +770,7 @@ praisonai/tools/__init__.py
759
770
  praisonai/tools/audio.py
760
771
  praisonai/tools/glob_tool.py
761
772
  praisonai/tools/grep_tool.py
773
+ praisonai/tools/kanban_tools.py
762
774
  praisonai/tools/multiedit.py
763
775
  praisonai/tools/skill_manage.py
764
776
  praisonai/train/__init__.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.47
4
+ praisonaiagents>=1.6.50
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -382,7 +382,7 @@ praisonai flow
382
382
 
383
383
  Open **http://localhost:7861** — use the **Agent** and **Agent Team** components to create sequential or parallel workflows. Connect Chat Input → Agent Team → Chat Output for instant multi-agent pipelines.
384
384
 
385
- > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/flow) — visual agent building, component reference, and deployment
385
+ > 📖 [Full Flow docs](https://docs.praison.ai/docs/concepts/agentflow) — visual agent building, component reference, and deployment
386
386
 
387
387
  ### 8. PraisonAI UI 🤖 (Clean Chat)
388
388
 
@@ -31,12 +31,8 @@ class _BackgroundLoop:
31
31
  server processes should call :func:`shutdown` explicitly to cancel
32
32
  in-flight tasks before process exit.
33
33
  """
34
- # Enforce the documented invariant. ``threading.Lock.locked()``
35
- # is process-wide, not thread-local, but combined with the fact
36
- # that the only callers are :py:meth:`get` and :py:meth:`get_unlocked`
37
- # (the latter only invoked from inside ``run_sync`` while holding
38
- # the lock), this catches the "forgot to hold the lock" mistake.
39
- assert self._lock.locked(), "_spawn_locked() requires self._lock to be held"
34
+ # Create the loop+thread; caller must hold self._lock.
35
+ # The lock contract is now enforced structurally by submit() method.
40
36
  if self._loop is None or self._loop.is_closed():
41
37
  self._loop = asyncio.new_event_loop()
42
38
  self._thread = threading.Thread(
@@ -51,9 +47,11 @@ class _BackgroundLoop:
51
47
  with self._lock:
52
48
  return self._spawn_locked()
53
49
 
54
- def get_unlocked(self) -> asyncio.AbstractEventLoop:
55
- """Get loop assuming caller holds _lock. For run_sync() use only."""
56
- return self._spawn_locked()
50
+ def submit(self, coro):
51
+ """Atomically (re)spawn loop if needed and submit coro. Returns concurrent.futures.Future."""
52
+ with self._lock:
53
+ loop = self._spawn_locked()
54
+ return asyncio.run_coroutine_threadsafe(coro, loop)
57
55
 
58
56
  def shutdown(self, timeout: float = 5.0) -> None:
59
57
  with self._lock:
@@ -77,7 +75,16 @@ class _BackgroundLoop:
77
75
  self._loop = None
78
76
  self._thread = None
79
77
 
80
- _BG = _BackgroundLoop()
78
+ _BG: "_BackgroundLoop | None" = None
79
+ _BG_LOCK = threading.Lock()
80
+
81
+ def _get_bg() -> "_BackgroundLoop":
82
+ global _BG
83
+ if _BG is None:
84
+ with _BG_LOCK:
85
+ if _BG is None:
86
+ _BG = _BackgroundLoop()
87
+ return _BG
81
88
 
82
89
 
83
90
  def run_sync(coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) -> T:
@@ -109,10 +116,8 @@ def run_sync(coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) ->
109
116
  "await the coroutine directly instead."
110
117
  )
111
118
 
112
- # Submit the coroutine inside the lock to prevent shutdown races
113
- with _BG._lock:
114
- loop = _BG.get_unlocked()
115
- fut: Future = asyncio.run_coroutine_threadsafe(coro, loop)
119
+ # Submit the coroutine atomically
120
+ fut = _get_bg().submit(coro)
116
121
 
117
122
  try:
118
123
  return fut.result(timeout=timeout)
@@ -139,4 +144,6 @@ def run_sync(coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) ->
139
144
 
140
145
  def shutdown() -> None:
141
146
  """Public hook for long-running server processes to stop the bridge cleanly."""
142
- _BG.shutdown()
147
+ bg = _BG
148
+ if bg is not None:
149
+ bg.shutdown()
@@ -41,39 +41,28 @@ class PluginRegistry(Generic[T]):
41
41
  builtins: Dict of name -> loader function for built-in plugins
42
42
  """
43
43
  self._entry_point_group = entry_point_group
44
- self._items: Dict[str, Type[T]] = {}
44
+ self._loaders: Dict[str, Callable[[], Type[T]]] = {} # lazy loaders
45
+ self._items: Dict[str, Type[T]] = {} # resolved cache
45
46
  self._aliases: Dict[str, str] = {} # alias -> canonical name
46
- self._lock = threading.Lock()
47
+ self._lock = threading.RLock() # Use RLock for re-entrant access
47
48
 
48
- # Load built-in plugins with error handling
49
+ # Store built-in loaders (normalized) without calling them
49
50
  if builtins:
50
51
  for name, loader in builtins.items():
51
- try:
52
- self._items[name] = loader()
53
- except ImportError:
54
- # Built-in plugin dependencies not available, skip
55
- pass
56
- except Exception:
57
- # Log other errors but don't crash initialization
58
- logger.warning("Failed to load built-in plugin %r", name, exc_info=True)
52
+ self._add_loader(name, loader)
59
53
 
60
- self._load_entry_points()
54
+ self._discover_entry_points()
61
55
 
62
- def _load_entry_points(self) -> None:
63
- """Load plugins from entry points."""
56
+ def _add_loader(self, name: str, loader: Callable[[], Type[T]]) -> None:
57
+ """Add a loader with normalized name."""
58
+ normalized_name = name.lower()
59
+ self._loaders[normalized_name] = loader
60
+
61
+ def _discover_entry_points(self) -> None:
62
+ """Discover entry point loaders without loading them."""
64
63
  try:
65
64
  for ep in entry_points(group=self._entry_point_group):
66
- try:
67
- plugin_class = ep.load()
68
- with self._lock:
69
- self._items[ep.name] = plugin_class
70
- except Exception:
71
- # Do not break plugin dispatch because one plugin is broken
72
- logger.warning(
73
- "Failed to load plugin %r from entry point",
74
- ep.name,
75
- exc_info=True,
76
- )
65
+ self._add_loader(ep.name, ep.load)
77
66
  except Exception:
78
67
  # entry_points() might not be available in older Python versions
79
68
  logger.debug("Entry points not available for group %s", self._entry_point_group)
@@ -94,6 +83,8 @@ class PluginRegistry(Generic[T]):
94
83
  """
95
84
  with self._lock:
96
85
  canonical_name = name.lower()
86
+ # Store both in loaders (for consistency with discovery) and items (for immediate access)
87
+ self._loaders[canonical_name] = lambda: cls
97
88
  self._items[canonical_name] = cls
98
89
 
99
90
  # Register aliases
@@ -120,7 +111,7 @@ class PluginRegistry(Generic[T]):
120
111
  return True
121
112
 
122
113
  # Check if it's a canonical name
123
- if normalized_name in self._items:
114
+ if normalized_name in self._loaders:
124
115
  # Remove all aliases pointing to this plugin
125
116
  aliases_to_remove = [
126
117
  alias for alias, canonical in self._aliases.items()
@@ -129,7 +120,9 @@ class PluginRegistry(Generic[T]):
129
120
  for alias in aliases_to_remove:
130
121
  del self._aliases[alias]
131
122
 
132
- del self._items[normalized_name]
123
+ # Remove from both loaders and items cache
124
+ del self._loaders[normalized_name]
125
+ self._items.pop(normalized_name, None)
133
126
  return True
134
127
 
135
128
  return False
@@ -146,28 +139,44 @@ class PluginRegistry(Generic[T]):
146
139
  Raises:
147
140
  ValueError: If plugin is not found
148
141
  """
142
+ normalized_name = name.lower()
143
+
149
144
  with self._lock:
150
- normalized_name = name.lower()
151
-
152
- # Resolve alias to canonical name
145
+ # Check cache first
153
146
  canonical_name = self._aliases.get(normalized_name, normalized_name)
154
147
  cls = self._items.get(canonical_name)
155
148
 
156
- # Capture available plugins snapshot while holding lock
157
- # to avoid race condition between check and error message
158
- if cls is None:
159
- available_plugins = sorted(self._items.keys())
149
+ if cls is not None:
150
+ return cls
151
+
152
+ # Try to load from loaders
153
+ loader = self._loaders.get(canonical_name)
154
+ if loader is None:
155
+ # Capture available plugins snapshot while holding lock
156
+ available_loaders = sorted(self._loaders.keys())
160
157
  available_aliases = sorted(self._aliases.keys())
161
- available_snapshot = available_plugins + available_aliases
162
- else:
163
- available_snapshot = None
158
+ available_snapshot = available_loaders + available_aliases
159
+ raise ValueError(
160
+ f"Unknown {self._entry_point_group} plugin: {name!r}. "
161
+ f"Available: {available_snapshot}"
162
+ )
163
+
164
+ # Load and cache the plugin (release lock during loading to prevent deadlock)
165
+ pass
164
166
 
165
- if cls is None:
167
+ # Load outside the lock to prevent deadlock if loader calls back into registry
168
+ try:
169
+ cls = loader()
170
+ except ImportError as e:
166
171
  raise ValueError(
167
- f"Unknown {self._entry_point_group} plugin: {name!r}. "
168
- f"Available: {available_snapshot}"
169
- )
170
- return cls
172
+ f"Plugin {name!r} is registered but its dependencies "
173
+ f"are not installed: {e}"
174
+ ) from e
175
+
176
+ # Re-acquire lock to cache the result
177
+ with self._lock:
178
+ self._items[canonical_name] = cls
179
+ return cls
171
180
 
172
181
  def create(self, name: str, *args, **kwargs) -> T:
173
182
  """Create an instance of the specified plugin.
@@ -192,7 +201,7 @@ class PluginRegistry(Generic[T]):
192
201
  Sorted list of plugin names
193
202
  """
194
203
  with self._lock:
195
- return sorted(self._items.keys())
204
+ return sorted(self._loaders.keys())
196
205
 
197
206
  def is_available(self, name: str) -> bool:
198
207
  """Check if a plugin is available.
@@ -225,4 +234,4 @@ class PluginRegistry(Generic[T]):
225
234
  Sorted list of all registered names and aliases
226
235
  """
227
236
  with self._lock:
228
- return sorted(list(self._items.keys()) + list(self._aliases.keys()))
237
+ return sorted(list(self._loaders.keys()) + list(self._aliases.keys()))
@@ -28,14 +28,33 @@ from .tool_registry import ToolRegistry
28
28
 
29
29
  # BaseTool import is now handled centrally by ToolResolver
30
30
 
31
- # Check for additional framework availability using centralized detection
31
+ # Framework availability detection (lazy via __getattr__)
32
32
  from ._framework_availability import is_available
33
- PRAISONAI_TOOLS_AVAILABLE = is_available("praisonai_tools")
34
- CREWAI_AVAILABLE = is_available("crewai")
35
- AUTOGEN_AVAILABLE = is_available("autogen")
36
- AG2_AVAILABLE = is_available("ag2")
37
- PRAISONAI_AVAILABLE = is_available("praisonaiagents")
38
- AGENTOPS_AVAILABLE = is_available("agentops")
33
+
34
+ # Lazy constants mapping for backward compatibility
35
+ _AVAIL = {
36
+ "PRAISONAI_TOOLS_AVAILABLE": "praisonai_tools",
37
+ "CREWAI_AVAILABLE": "crewai",
38
+ "AUTOGEN_AVAILABLE": "autogen",
39
+ "AG2_AVAILABLE": "ag2",
40
+ "PRAISONAI_AVAILABLE": "praisonaiagents",
41
+ "AGENTOPS_AVAILABLE": "agentops",
42
+ }
43
+
44
+ __all__ = list(_AVAIL.keys())
45
+
46
+ def __getattr__(name):
47
+ """Lazy attribute access for framework availability constants.
48
+
49
+ This allows backward compatibility while avoiding import-time probing.
50
+ Only probes the framework when the constant is actually accessed.
51
+ """
52
+ if name in _AVAIL:
53
+ return is_available(_AVAIL[name])
54
+ raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
55
+
56
+ def __dir__():
57
+ return sorted(set(globals()) | set(_AVAIL))
39
58
 
40
59
  # Framework adapter registry - now uses proper registry pattern
41
60
  # This replaces the hardcoded FRAMEWORK_ADAPTERS dict
@@ -282,7 +301,7 @@ class AgentsGenerator:
282
301
 
283
302
  # Keep tool registry for backward compatibility with autogen adapters
284
303
  self.tool_registry = ToolRegistry()
285
- self.tool_registry.register_builtin_autogen_adapters()
304
+ self.tool_registry.register_builtin_autogen_adapters(_suppress_deprecation_warning=True)
286
305
 
287
306
  # Initialize tool resolver with the registry wired in (single source of truth for tool resolution)
288
307
  from .tool_resolver import ToolResolver
@@ -555,7 +574,7 @@ class AgentsGenerator:
555
574
  for agent_name, agent_config in config['agents'].items():
556
575
  role_config = dict(agent_config) if agent_config else {}
557
576
  # Convert 'instructions' to 'backstory' if present
558
- # Note: preserve 'instructions' key for framework adapters
577
+ # Note: preserve 'instructions' key for adapters that pass it to PraisonAgent
559
578
  if 'instructions' in role_config and 'backstory' not in role_config:
560
579
  role_config['backstory'] = role_config['instructions']
561
580
  # Ensure required fields have defaults
@@ -576,7 +595,7 @@ class AgentsGenerator:
576
595
  tools_dict = {}
577
596
 
578
597
  # Demand-driven tool resolution - only resolve tools actually used in YAML
579
- if CREWAI_AVAILABLE or AUTOGEN_AVAILABLE or PRAISONAI_AVAILABLE or AG2_AVAILABLE:
598
+ if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
580
599
  try:
581
600
  # Collect all tool names mentioned in the YAML config
582
601
  needed_tools: set[str] = set()
@@ -696,7 +715,7 @@ class AgentsGenerator:
696
715
  Returns:
697
716
  str: Result of the workflow execution
698
717
  """
699
- if not PRAISONAI_AVAILABLE:
718
+ if not is_available("praisonaiagents"):
700
719
  raise ImportError("PraisonAI is not installed. Please install it with 'pip install praisonaiagents'")
701
720
 
702
721
  try:
@@ -736,4 +755,4 @@ class AgentsGenerator:
736
755
  if result.get("status") == "completed":
737
756
  return result.get("output", "Workflow completed successfully")
738
757
  else:
739
- return f"Workflow failed: {result.get('error', 'Unknown error')}"
758
+ return f"Workflow failed: {result.get('error', 'Unknown error')}"
@@ -0,0 +1,23 @@
1
+ """Backward-compatible re-export. Prefer `praisonai.scheduler`.
2
+
3
+ This module is deprecated. Use the canonical implementation in the
4
+ scheduler package for full functionality including async support.
5
+ """
6
+
7
+ import warnings
8
+
9
+ warnings.warn(
10
+ "praisonai.async_agent_scheduler is deprecated; "
11
+ "use 'from praisonai.scheduler import AsyncAgentScheduler' instead.",
12
+ DeprecationWarning,
13
+ stacklevel=2,
14
+ )
15
+
16
+ # Re-export from the canonical location
17
+ from .scheduler.async_agent_scheduler import ( # noqa: F401
18
+ AsyncAgentScheduler,
19
+ AsyncPraisonAgentExecutor,
20
+ AsyncAgentExecutorInterface,
21
+ create_async_agent_scheduler,
22
+ logger,
23
+ )
@@ -65,37 +65,7 @@ def _load_optional(key: str, loader):
65
65
  # Availability checks now delegated to centralized module
66
66
  from ._framework_availability import is_available
67
67
 
68
- def _check_crewai_available() -> bool:
69
- """Check if crewai is available (cached, thread-safe)."""
70
- return is_available("crewai")
71
-
72
- def _check_autogen_available() -> bool:
73
- """Check if autogen v0.2 is available (cached, thread-safe)."""
74
- return is_available("autogen")
75
-
76
- def _check_autogen_v4_available() -> bool:
77
- """Check if autogen v0.4 is available (cached, thread-safe)."""
78
- return is_available("autogen_v4")
79
-
80
- def _check_ag2_available() -> bool:
81
- """Check if AG2 (community fork of AutoGen) is available (cached, thread-safe)."""
82
- return is_available("ag2")
83
-
84
- def _check_praisonai_available() -> bool:
85
- """Check if praisonaiagents is available (cached, thread-safe)."""
86
- return is_available("praisonaiagents")
87
-
88
- def _check_praisonai_tools_available() -> bool:
89
- """Check if praisonai_tools is available (cached, thread-safe)."""
90
- return is_available("praisonai_tools")
91
-
92
- def _check_litellm_available() -> bool:
93
- """Check if litellm is available (cached, thread-safe)."""
94
- return is_available("litellm")
95
-
96
- def _check_openai_available() -> bool:
97
- """Check if openai is available (cached, thread-safe)."""
98
- return is_available("openai")
68
+ # Redundant wrapper functions removed - use is_available() directly
99
69
 
100
70
 
101
71
  def _get_crewai():
@@ -504,7 +474,7 @@ class BaseAutoGenerator:
504
474
  model_name = self.config_list[0]['model']
505
475
 
506
476
  # Try LiteLLM first (preferred - supports 100+ providers)
507
- if _check_litellm_available():
477
+ if is_available("litellm"):
508
478
  litellm = _get_litellm()
509
479
  response = litellm.completion(
510
480
  model=model_name,
@@ -516,7 +486,7 @@ class BaseAutoGenerator:
516
486
  return response_model.model_validate_json(content)
517
487
 
518
488
  # Fallback to OpenAI SDK (uses beta.chat.completions.parse)
519
- if _check_openai_available():
489
+ if is_available("openai"):
520
490
  client = self._get_openai_client()
521
491
  response = client.beta.chat.completions.parse(
522
492
  model=model_name,
@@ -554,7 +524,7 @@ class BaseAutoGenerator:
554
524
  model_name = self.config_list[0]['model']
555
525
 
556
526
  # Try LiteLLM async first (preferred - supports 100+ providers)
557
- if _check_litellm_available():
527
+ if is_available("litellm"):
558
528
  litellm = _get_litellm()
559
529
  response = await litellm.acompletion(
560
530
  model=model_name,
@@ -566,7 +536,7 @@ class BaseAutoGenerator:
566
536
  return response_model.model_validate_json(content)
567
537
 
568
538
  # Fallback to OpenAI AsyncSDK (uses beta.chat.completions.parse)
569
- if _check_openai_available():
539
+ if is_available("openai"):
570
540
  if self._async_openai_client is None:
571
541
  with self._client_lock:
572
542
  if self._async_openai_client is None:
@@ -728,7 +698,7 @@ class AutoGenerator(BaseAutoGenerator):
728
698
  raise ImportError(f"{adapter.name} is not installed. Please install with:\n {install_hint}")
729
699
 
730
700
  # Check tools availability if required by this framework
731
- if requires_tools_extra and not _check_praisonai_tools_available():
701
+ if requires_tools_extra and not is_available("praisonai_tools"):
732
702
  logger.warning(f"Tools are not available for {framework}. To use tools, install:\n {install_hint}")
733
703
 
734
704
  self.topic = topic
@@ -23,11 +23,14 @@ class AgentConfigSchema(BaseModel):
23
23
 
24
24
  class ChannelConfigSchema(BaseModel):
25
25
  """Schema for a single channel configuration."""
26
+ platform: Optional[str] = None
26
27
  token: str = ""
27
28
  mode: str = "poll" # poll | ws | webhook | hybrid
28
29
  group_policy: str = "respond_all" # respond_all, mention_only, command_only
29
30
  allowlist: List[str] = Field(default_factory=list)
30
31
  blocklist: List[str] = Field(default_factory=list)
32
+ allowed_users: Optional[str] = None
33
+ routes: Dict[str, str] = Field(default_factory=dict)
31
34
  webhook_url: Optional[str] = None
32
35
  webhook_port: int = 8080
33
36
 
@@ -102,12 +105,15 @@ class BotYamlSchema(BaseModel):
102
105
  "No channels configured. Add at least one channel "
103
106
  "(telegram, discord, slack, whatsapp) to your bot.yaml"
104
107
  )
105
- # Validate channel names
108
+ # Channel keys may be platform names (telegram) or custom ids (telegram_cfo)
109
+ # when ``platform`` is set on the channel block (gateway / multi-bot YAML).
106
110
  valid_platforms = {"telegram", "discord", "slack", "whatsapp", "email", "agentmail"}
107
- for name in self.channels:
108
- if name not in valid_platforms:
111
+ for name, channel in self.channels.items():
112
+ platform = (channel.platform or name).lower()
113
+ if platform not in valid_platforms:
109
114
  raise ValueError(
110
- f"Unknown channel '{name}'. Supported: {', '.join(sorted(valid_platforms))}"
115
+ f"Unknown channel '{name}' (platform '{platform}'). "
116
+ f"Supported platforms: {', '.join(sorted(valid_platforms))}"
111
117
  )
112
118
  return self
113
119