PraisonAI 4.6.64__tar.gz → 4.6.65__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 (868) hide show
  1. {praisonai-4.6.64 → praisonai-4.6.65}/PKG-INFO +2 -2
  2. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/SOURCES.txt +13 -0
  4. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/__init__.py +26 -14
  6. praisonai-4.6.65/praisonai/bots/_config_schema.py +469 -0
  7. praisonai-4.6.65/praisonai/bots/_delivery.py +564 -0
  8. praisonai-4.6.65/praisonai/bots/_durable_adapter.py +161 -0
  9. praisonai-4.6.65/praisonai/bots/_outbox.py +512 -0
  10. praisonai-4.6.65/praisonai/bots/_reset_policy.py +129 -0
  11. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_session.py +157 -92
  12. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/agentmail.py +6 -1
  13. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/discord.py +17 -0
  14. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/slack.py +17 -0
  15. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/telegram.py +17 -0
  16. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/whatsapp.py +17 -0
  17. praisonai-4.6.65/praisonai/cli/_warnings.py +58 -0
  18. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/app.py +3 -1
  19. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/__init__.py +8 -0
  20. praisonai-4.6.65/praisonai/cli/commands/agent.py +115 -0
  21. praisonai-4.6.65/praisonai/cli/commands/command.py +113 -0
  22. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/run.py +193 -7
  23. praisonai-4.6.65/praisonai/cli/features/_endpoint_registry.py +64 -0
  24. praisonai-4.6.65/praisonai/cli/features/_search_registry.py +43 -0
  25. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/bots_cli.py +71 -106
  26. praisonai-4.6.65/praisonai/cli/features/custom_definitions.py +366 -0
  27. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/__init__.py +1 -0
  28. praisonai-4.6.65/praisonai/cli/features/doctor/checks/gateway_checks.py +387 -0
  29. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/endpoints.py +10 -13
  30. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/gateway.py +3 -1
  31. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/sandbox_cli.py +26 -8
  32. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/slash_commands.py +43 -1
  33. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/main.py +25 -56
  34. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/state/project_sessions.py +4 -5
  35. praisonai-4.6.65/praisonai/cli/utils/env_utils.py +126 -0
  36. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/utils/project.py +36 -1
  37. praisonai-4.6.65/praisonai/deploy/providers/_registry.py +45 -0
  38. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/providers/base.py +5 -12
  39. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/server.py +348 -12
  40. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/host_app.py +168 -27
  41. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/redis.py +74 -49
  42. praisonai-4.6.65/praisonai/sandbox/_registry.py +67 -0
  43. praisonai-4.6.65/praisonai/ui_agents/default_app.py +47 -0
  44. praisonai-4.6.65/praisonai/ui_bot/default_app.py +29 -0
  45. praisonai-4.6.65/praisonai/ui_chat/default_app.py +56 -0
  46. praisonai-4.6.65/praisonai/ui_dashboard/default_app.py +36 -0
  47. praisonai-4.6.65/praisonai/ui_realtime/default_app.py +39 -0
  48. praisonai-4.6.65/praisonai/version.py +1 -0
  49. {praisonai-4.6.64 → praisonai-4.6.65}/pyproject.toml +1 -1
  50. praisonai-4.6.64/praisonai/bots/_config_schema.py +0 -234
  51. praisonai-4.6.64/praisonai/bots/_delivery.py +0 -252
  52. praisonai-4.6.64/praisonai/ui_agents/default_app.py +0 -149
  53. praisonai-4.6.64/praisonai/ui_bot/default_app.py +0 -94
  54. praisonai-4.6.64/praisonai/ui_chat/default_app.py +0 -142
  55. praisonai-4.6.64/praisonai/ui_dashboard/default_app.py +0 -47
  56. praisonai-4.6.64/praisonai/ui_realtime/default_app.py +0 -97
  57. praisonai-4.6.64/praisonai/version.py +0 -1
  58. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/dependency_links.txt +0 -0
  59. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/entry_points.txt +0 -0
  60. {praisonai-4.6.64 → praisonai-4.6.65}/PraisonAI.egg-info/top_level.txt +0 -0
  61. {praisonai-4.6.64 → praisonai-4.6.65}/README.md +0 -0
  62. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/__init__.py +0 -0
  63. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/__main__.py +0 -0
  64. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_approval_spec.py +0 -0
  65. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_async_bridge.py +0 -0
  66. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/__init__.py +0 -0
  67. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/api_md.py +0 -0
  68. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/__init__.py +0 -0
  69. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/docs_extractor.py +0 -0
  70. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/docs_generator.py +0 -0
  71. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/generator.py +0 -0
  72. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  73. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/python_extractor.py +0 -0
  74. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  75. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/rust_extractor.py +0 -0
  76. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  77. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  78. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  79. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_entrypoint.py +0 -0
  80. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_framework_availability.py +0 -0
  81. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_lazy_cache.py +0 -0
  82. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_lockmap.py +0 -0
  83. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_logging.py +0 -0
  84. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_registry.py +0 -0
  85. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/_safe_loader.py +0 -0
  86. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/acp/__init__.py +0 -0
  87. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/acp/config.py +0 -0
  88. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/acp/safe_edit.py +0 -0
  89. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/acp/server.py +0 -0
  90. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/acp/session.py +0 -0
  91. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/adapters/__init__.py +0 -0
  92. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/adapters/readers.py +0 -0
  93. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/adapters/rerankers.py +0 -0
  94. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/adapters/retrievers.py +0 -0
  95. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/adapters/vector_stores.py +0 -0
  96. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/agent.py +0 -0
  97. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/agent_scheduler.py +0 -0
  98. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/agents_generator.py +0 -0
  99. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/api/agent_invoke.py +0 -0
  100. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/api/call.py +0 -0
  101. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/app/__init__.py +0 -0
  102. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/app/agentos.py +0 -0
  103. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/async_agent_scheduler.py +0 -0
  104. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/audit/__init__.py +0 -0
  105. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/audit/agent_centric.py +0 -0
  106. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/auto.py +0 -0
  107. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_ack.py +0 -0
  108. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_approval.py +0 -0
  109. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_approval_base.py +0 -0
  110. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_auth.py +0 -0
  111. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_chunk.py +0 -0
  112. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_commands.py +0 -0
  113. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_debounce.py +0 -0
  114. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_defaults.py +0 -0
  115. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_discord_approval.py +0 -0
  116. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_dlq.py +0 -0
  117. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_email_utils.py +0 -0
  118. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_http_approval.py +0 -0
  119. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_ingress.py +0 -0
  120. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_mirror.py +0 -0
  121. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_pairing_ui.py +0 -0
  122. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_presentation_approval.py +0 -0
  123. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_presentation_renderer.py +0 -0
  124. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_protocol_mixin.py +0 -0
  125. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_rate_limit.py +0 -0
  126. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_registry.py +0 -0
  127. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_resilience.py +0 -0
  128. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_run_control.py +0 -0
  129. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_slack_approval.py +0 -0
  130. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_status.py +0 -0
  131. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_streaming.py +0 -0
  132. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_telegram_approval.py +0 -0
  133. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_typing.py +0 -0
  134. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_typing_indicator.py +0 -0
  135. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_unknown_user.py +0 -0
  136. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_webhook_approval.py +0 -0
  137. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  138. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/bot.py +0 -0
  139. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/botos.py +0 -0
  140. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/delivery.py +0 -0
  141. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/email.py +0 -0
  142. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/linear.py +0 -0
  143. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/media.py +0 -0
  144. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/bots/webhook_security.py +0 -0
  145. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/__init__.py +0 -0
  146. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/agent.py +0 -0
  147. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/benchmark.py +0 -0
  148. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/cdp_agent.py +0 -0
  149. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/cdp_utils.py +0 -0
  150. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/cli.py +0 -0
  151. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/diagnostics.py +0 -0
  152. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/launcher.py +0 -0
  153. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/playwright_agent.py +0 -0
  154. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/profiling.py +0 -0
  155. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/protocol.py +0 -0
  156. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/report.py +0 -0
  157. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/server.py +0 -0
  158. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/sessions.py +0 -0
  159. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/browser/video.py +0 -0
  160. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/__init__.py +0 -0
  161. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/a2a.py +0 -0
  162. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/assistants.py +0 -0
  163. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/audio.py +0 -0
  164. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/batches.py +0 -0
  165. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/completions.py +0 -0
  166. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/container_files.py +0 -0
  167. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/containers.py +0 -0
  168. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/embeddings.py +0 -0
  169. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/files.py +0 -0
  170. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/fine_tuning.py +0 -0
  171. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/guardrails.py +0 -0
  172. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/images.py +0 -0
  173. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/mcp.py +0 -0
  174. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/messages.py +0 -0
  175. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/moderations.py +0 -0
  176. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/ocr.py +0 -0
  177. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/passthrough.py +0 -0
  178. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/rag.py +0 -0
  179. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/realtime.py +0 -0
  180. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/rerank.py +0 -0
  181. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/responses.py +0 -0
  182. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/search.py +0 -0
  183. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/skills.py +0 -0
  184. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/vector_store_files.py +0 -0
  185. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/vector_stores.py +0 -0
  186. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/capabilities/videos.py +0 -0
  187. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/claw/__init__.py +0 -0
  188. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/claw/default_app.py +0 -0
  189. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/__init__.py +0 -0
  190. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/_paths.py +0 -0
  191. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/approval_backend.py +0 -0
  192. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/branding.py +0 -0
  193. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/acp.py +0 -0
  194. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/agents.py +0 -0
  195. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/app.py +0 -0
  196. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/audit.py +0 -0
  197. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/auth.py +0 -0
  198. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/batch.py +0 -0
  199. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/benchmark.py +0 -0
  200. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/bot.py +0 -0
  201. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/browser.py +0 -0
  202. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/call.py +0 -0
  203. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/chat.py +0 -0
  204. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/claw.py +0 -0
  205. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/code.py +0 -0
  206. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/commit.py +0 -0
  207. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/completion.py +0 -0
  208. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/config.py +0 -0
  209. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/context.py +0 -0
  210. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/dashboard.py +0 -0
  211. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/debug.py +0 -0
  212. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/deploy.py +0 -0
  213. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/diag.py +0 -0
  214. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/docs.py +0 -0
  215. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/doctor.py +0 -0
  216. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/endpoints.py +0 -0
  217. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/environment.py +0 -0
  218. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/eval.py +0 -0
  219. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/examples.py +0 -0
  220. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/flow.py +0 -0
  221. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/gateway.py +0 -0
  222. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/github.py +0 -0
  223. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/hooks.py +0 -0
  224. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/kanban.py +0 -0
  225. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/knowledge.py +0 -0
  226. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/langextract.py +0 -0
  227. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/langfuse.py +0 -0
  228. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/loop.py +0 -0
  229. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/lsp.py +0 -0
  230. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/managed.py +0 -0
  231. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/mcp.py +0 -0
  232. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/memory.py +0 -0
  233. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/mint_link.py +0 -0
  234. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/n8n.py +0 -0
  235. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/obs.py +0 -0
  236. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/onboard.py +0 -0
  237. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/package.py +0 -0
  238. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/pairing.py +0 -0
  239. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/paths.py +0 -0
  240. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/permissions.py +0 -0
  241. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/plugins.py +0 -0
  242. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/port.py +0 -0
  243. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/profile.py +0 -0
  244. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/publish.py +0 -0
  245. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/rag.py +0 -0
  246. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/realtime.py +0 -0
  247. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/recipe.py +0 -0
  248. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/registry.py +0 -0
  249. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/replay.py +0 -0
  250. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/research.py +0 -0
  251. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/retrieval.py +0 -0
  252. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/rules.py +0 -0
  253. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/sandbox.py +0 -0
  254. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/schedule.py +0 -0
  255. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/serve.py +0 -0
  256. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/session.py +0 -0
  257. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/setup.py +0 -0
  258. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/skills.py +0 -0
  259. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/standardise.py +0 -0
  260. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/templates.py +0 -0
  261. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/test.py +0 -0
  262. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/todo.py +0 -0
  263. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/tools.py +0 -0
  264. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/traces.py +0 -0
  265. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/tracker.py +0 -0
  266. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/train.py +0 -0
  267. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/ui.py +0 -0
  268. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/up.py +0 -0
  269. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/version.py +0 -0
  270. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/commands/workflow.py +0 -0
  271. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/config_loader.py +0 -0
  272. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/__init__.py +0 -0
  273. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/credentials.py +0 -0
  274. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/loader.py +0 -0
  275. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/paths.py +0 -0
  276. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/resolver.py +0 -0
  277. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/configuration/schema.py +0 -0
  278. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/execution/__init__.py +0 -0
  279. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/execution/core.py +0 -0
  280. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/execution/profiler.py +0 -0
  281. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/execution/request.py +0 -0
  282. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/execution/result.py +0 -0
  283. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/fallback_schema.py +0 -0
  284. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/__init__.py +0 -0
  285. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/acp.py +0 -0
  286. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/action_orchestrator.py +0 -0
  287. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/agent_scheduler.py +0 -0
  288. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/agent_tools.py +0 -0
  289. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/agents.py +0 -0
  290. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/approval.py +0 -0
  291. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/at_mentions.py +0 -0
  292. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/audit_cli.py +0 -0
  293. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/auto_memory.py +0 -0
  294. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/auto_mode.py +0 -0
  295. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/autonomy_mode.py +0 -0
  296. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/background.py +0 -0
  297. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/base.py +0 -0
  298. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/benchmark.py +0 -0
  299. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/capabilities.py +0 -0
  300. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/checkpoints.py +0 -0
  301. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/cli_profiler.py +0 -0
  302. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/code_intelligence.py +0 -0
  303. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/compaction.py +0 -0
  304. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/compare.py +0 -0
  305. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/config_hierarchy.py +0 -0
  306. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/context_manager.py +0 -0
  307. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/cost_tracker.py +0 -0
  308. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/csv_test_runner.py +0 -0
  309. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/debug.py +0 -0
  310. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/deploy.py +0 -0
  311. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/diag.py +0 -0
  312. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/display_jsonl.py +0 -0
  313. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/__init__.py +0 -0
  314. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  315. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  316. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  317. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  318. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  319. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  320. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  321. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  322. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  323. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  324. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  325. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  326. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  327. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/runtime_checks.py +0 -0
  328. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  329. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  330. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  331. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  332. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/engine.py +0 -0
  333. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/formatters.py +0 -0
  334. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/handler.py +0 -0
  335. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/models.py +0 -0
  336. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/doctor/registry.py +0 -0
  337. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/eval.py +0 -0
  338. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/examples.py +0 -0
  339. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/external_agents.py +0 -0
  340. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/fast_context.py +0 -0
  341. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/file_history.py +0 -0
  342. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/flow_display.py +0 -0
  343. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/git_attribution.py +0 -0
  344. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/git_integration.py +0 -0
  345. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/guardrail.py +0 -0
  346. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/handoff.py +0 -0
  347. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/hooks.py +0 -0
  348. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/hybrid_workflow.py +0 -0
  349. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/image.py +0 -0
  350. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/interactive_core_headless.py +0 -0
  351. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/interactive_runtime.py +0 -0
  352. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/interactive_test_harness.py +0 -0
  353. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/interactive_tools.py +0 -0
  354. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/interactive_tui.py +0 -0
  355. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/job_workflow.py +0 -0
  356. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/jobs.py +0 -0
  357. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/knowledge.py +0 -0
  358. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/knowledge_cli.py +0 -0
  359. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/lite.py +0 -0
  360. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/logs.py +0 -0
  361. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/lsp_cli.py +0 -0
  362. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  363. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/mcp.py +0 -0
  364. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/message_queue.py +0 -0
  365. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/metrics.py +0 -0
  366. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/migrate.py +0 -0
  367. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/migration_flow.py +0 -0
  368. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/migration_spec.py +0 -0
  369. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/n8n.py +0 -0
  370. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/observability.py +0 -0
  371. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/ollama.py +0 -0
  372. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/onboard.py +0 -0
  373. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/output_modes.py +0 -0
  374. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/output_style.py +0 -0
  375. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/package.py +0 -0
  376. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/performance.py +0 -0
  377. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/persistence.py +0 -0
  378. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/plugin_cli.py +0 -0
  379. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profile.py +0 -0
  380. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profiler/__init__.py +0 -0
  381. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profiler/core.py +0 -0
  382. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profiler/optimizations.py +0 -0
  383. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profiler/suite.py +0 -0
  384. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/profiling.py +0 -0
  385. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/__init__.py +0 -0
  386. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/manager.py +0 -0
  387. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/models.py +0 -0
  388. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/persistence.py +0 -0
  389. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/scheduler.py +0 -0
  390. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/queue/worker.py +0 -0
  391. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/recipe.py +0 -0
  392. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/recipe_creator.py +0 -0
  393. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/recipe_optimizer.py +0 -0
  394. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/recipe_prompts.py +0 -0
  395. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/recipes.py +0 -0
  396. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/registry.py +0 -0
  397. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/repo_map.py +0 -0
  398. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/router.py +0 -0
  399. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/safe_shell.py +0 -0
  400. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/sandbox_executor.py +0 -0
  401. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/sdk_knowledge.py +0 -0
  402. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/serve.py +0 -0
  403. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/session.py +0 -0
  404. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/setup/__init__.py +0 -0
  405. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/setup/handler.py +0 -0
  406. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/setup/templates.py +0 -0
  407. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/skills.py +0 -0
  408. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/telemetry.py +0 -0
  409. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/templates.py +0 -0
  410. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/thinking.py +0 -0
  411. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/todo.py +0 -0
  412. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tools.py +0 -0
  413. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/__init__.py +0 -0
  414. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/app.py +0 -0
  415. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/cli.py +0 -0
  416. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/config.py +0 -0
  417. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/debug.py +0 -0
  418. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/events.py +0 -0
  419. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/mock_provider.py +0 -0
  420. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/orchestrator.py +0 -0
  421. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  422. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/help.py +0 -0
  423. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/main.py +0 -0
  424. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/queue.py +0 -0
  425. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/session.py +0 -0
  426. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/screens/settings.py +0 -0
  427. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/session_store.py +0 -0
  428. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  429. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  430. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  431. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  432. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  433. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  434. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/status.py +0 -0
  435. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  436. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/wizard.py +0 -0
  437. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/workflow.py +0 -0
  438. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/features/yaml_utils.py +0 -0
  439. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/__init__.py +0 -0
  440. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/async_tui.py +0 -0
  441. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/config.py +0 -0
  442. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/core.py +0 -0
  443. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/events.py +0 -0
  444. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  445. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  446. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  447. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/praison_io.py +0 -0
  448. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/repl.py +0 -0
  449. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/split_tui.py +0 -0
  450. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/interactive/tui_app.py +0 -0
  451. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/langfuse_client.py +0 -0
  452. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/legacy.py +0 -0
  453. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/output/__init__.py +0 -0
  454. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/output/console.py +0 -0
  455. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/schedule_cli.py +0 -0
  456. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/schema_provider.py +0 -0
  457. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/session/__init__.py +0 -0
  458. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/session/unified.py +0 -0
  459. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/state/__init__.py +0 -0
  460. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/state/identifiers.py +0 -0
  461. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/state/sessions.py +0 -0
  462. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/__init__.py +0 -0
  463. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/config.py +0 -0
  464. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/events.py +0 -0
  465. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/mg_backend.py +0 -0
  466. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/plain.py +0 -0
  467. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/ui/rich_backend.py +0 -0
  468. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli/unified_schema.py +0 -0
  469. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli_backends/__init__.py +0 -0
  470. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli_backends/claude.py +0 -0
  471. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/cli_backends/registry.py +0 -0
  472. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/__init__.py +0 -0
  473. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/agent_tools.py +0 -0
  474. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/diff/__init__.py +0 -0
  475. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/diff/diff_strategy.py +0 -0
  476. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/__init__.py +0 -0
  477. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/apply_diff.py +0 -0
  478. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/execute_command.py +0 -0
  479. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/list_files.py +0 -0
  480. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/read_file.py +0 -0
  481. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/search_replace.py +0 -0
  482. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/tools/write_file.py +0 -0
  483. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/utils/__init__.py +0 -0
  484. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/utils/file_utils.py +0 -0
  485. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/utils/ignore_utils.py +0 -0
  486. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/code/utils/text_utils.py +0 -0
  487. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/__init__.py +0 -0
  488. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/_storage_path.py +0 -0
  489. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/artifact_store.py +0 -0
  490. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/config.py +0 -0
  491. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/history_store.py +0 -0
  492. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/queue.py +0 -0
  493. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/setup.py +0 -0
  494. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/context/terminal_logger.py +0 -0
  495. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/daemon/__init__.py +0 -0
  496. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/daemon/launchd.py +0 -0
  497. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/daemon/systemd.py +0 -0
  498. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/daemon/windows.py +0 -0
  499. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/db/__init__.py +0 -0
  500. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/db/adapter.py +0 -0
  501. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/__init__.py +0 -0
  502. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/api.py +0 -0
  503. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/docker.py +0 -0
  504. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/doctor.py +0 -0
  505. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/main.py +0 -0
  506. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/models.py +0 -0
  507. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/providers/__init__.py +0 -0
  508. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/providers/aws.py +0 -0
  509. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/providers/azure.py +0 -0
  510. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/providers/gcp.py +0 -0
  511. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/deploy/schema.py +0 -0
  512. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/__init__.py +0 -0
  513. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/classifier.py +0 -0
  514. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/executor.py +0 -0
  515. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/extractor.py +0 -0
  516. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/reporter.py +0 -0
  517. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/runner.py +0 -0
  518. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/docs_runner/workspace.py +0 -0
  519. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/__init__.py +0 -0
  520. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/a2u_server.py +0 -0
  521. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/discovery.py +0 -0
  522. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/__init__.py +0 -0
  523. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/a2a.py +0 -0
  524. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/a2u.py +0 -0
  525. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/agents_api.py +0 -0
  526. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/base.py +0 -0
  527. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/mcp.py +0 -0
  528. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/recipe.py +0 -0
  529. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  530. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/registry.py +0 -0
  531. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/endpoints/server.py +0 -0
  532. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/__init__.py +0 -0
  533. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/client.py +0 -0
  534. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  535. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  536. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/components/__init__.py +0 -0
  537. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/converter.py +0 -0
  538. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/flow/helpers.py +0 -0
  539. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/__init__.py +0 -0
  540. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  541. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/base.py +0 -0
  542. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  543. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  544. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/registry.py +0 -0
  545. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/framework_adapters/validators.py +0 -0
  546. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/__init__.py +0 -0
  547. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/auth.py +0 -0
  548. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/cookie_auth.py +0 -0
  549. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/exec_approval.py +0 -0
  550. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/gateway_approval.py +0 -0
  551. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/health_monitor.py +0 -0
  552. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/kanban_dispatcher.py +0 -0
  553. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/magic_link.py +0 -0
  554. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/origin_check.py +0 -0
  555. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/pairing.py +0 -0
  556. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/pairing_routes.py +0 -0
  557. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/port_utils.py +0 -0
  558. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/push_channels.py +0 -0
  559. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/push_delivery.py +0 -0
  560. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/push_polling.py +0 -0
  561. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/push_presence.py +0 -0
  562. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/rate_limiter.py +0 -0
  563. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/redis_pubsub.py +0 -0
  564. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/supervisor.py +0 -0
  565. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/gateway/unicode_utils.py +0 -0
  566. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/inbuilt_tools/__init__.py +0 -0
  567. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  568. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/inc/__init__.py +0 -0
  569. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/inc/config.py +0 -0
  570. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/inc/models.py +0 -0
  571. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/__init__.py +0 -0
  572. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/__init__.py +0 -0
  573. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  574. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/hooks_query.py +0 -0
  575. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  576. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/schedules_runner.py +0 -0
  577. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/usage_bridge.py +0 -0
  578. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/bridges/workflows_service.py +0 -0
  579. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/context_files.py +0 -0
  580. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/gateway_host.py +0 -0
  581. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/pages/__init__.py +0 -0
  582. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/pages/bot_health.py +0 -0
  583. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integration/pages/workflow_runs.py +0 -0
  584. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/__init__.py +0 -0
  585. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/_session_info.py +0 -0
  586. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/_tool_aliases.py +0 -0
  587. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/_unified_registry.py +0 -0
  588. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/base.py +0 -0
  589. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/claude_code.py +0 -0
  590. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/codex_cli.py +0 -0
  591. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/__init__.py +0 -0
  592. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/daytona.py +0 -0
  593. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/docker.py +0 -0
  594. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/e2b.py +0 -0
  595. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/flyio.py +0 -0
  596. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/local.py +0 -0
  597. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/compute/modal_compute.py +0 -0
  598. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/cursor_cli.py +0 -0
  599. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/db_session_adapter.py +0 -0
  600. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/gemini_cli.py +0 -0
  601. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/hosted_agent.py +0 -0
  602. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/local_agent.py +0 -0
  603. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/managed_agents.py +0 -0
  604. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/managed_local.py +0 -0
  605. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/registry.py +0 -0
  606. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/integrations/sandboxed_agent.py +0 -0
  607. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/__init__.py +0 -0
  608. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/executor.py +0 -0
  609. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/models.py +0 -0
  610. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/path_validation.py +0 -0
  611. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/router.py +0 -0
  612. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/server.py +0 -0
  613. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/jobs/store.py +0 -0
  614. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/kanban/__init__.py +0 -0
  615. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/kanban/models.py +0 -0
  616. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/kanban/paths.py +0 -0
  617. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/kanban/sqlite_store.py +0 -0
  618. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/llm/__init__.py +0 -0
  619. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/llm/credentials.py +0 -0
  620. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/llm/env.py +0 -0
  621. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/llm/registry.py +0 -0
  622. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/__init__.py +0 -0
  623. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/__init__.py +0 -0
  624. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/agents.py +0 -0
  625. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  626. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  627. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  628. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  629. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/memory.py +0 -0
  630. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/prompts.py +0 -0
  631. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/resources.py +0 -0
  632. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  633. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/auth/__init__.py +0 -0
  634. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/auth/api_key.py +0 -0
  635. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/auth/oauth.py +0 -0
  636. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/auth/oidc.py +0 -0
  637. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/auth/scopes.py +0 -0
  638. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/cli.py +0 -0
  639. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/elicitation.py +0 -0
  640. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/icons.py +0 -0
  641. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/recipe_adapter.py +0 -0
  642. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/recipe_cli.py +0 -0
  643. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/registry.py +0 -0
  644. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/sampling.py +0 -0
  645. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/server.py +0 -0
  646. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/tasks.py +0 -0
  647. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/tool_index.py +0 -0
  648. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/transports/__init__.py +0 -0
  649. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/transports/http_stream.py +0 -0
  650. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/mcp_server/transports/stdio.py +0 -0
  651. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/n8n/__init__.py +0 -0
  652. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/n8n/client.py +0 -0
  653. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/n8n/converter.py +0 -0
  654. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/n8n/preview.py +0 -0
  655. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/n8n/reverse_converter.py +0 -0
  656. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/observability/__init__.py +0 -0
  657. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/observability/hooks.py +0 -0
  658. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/observability/langextract.py +0 -0
  659. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/observability/langfuse.py +0 -0
  660. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/__init__.py +0 -0
  661. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/_valkey_client.py +0 -0
  662. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/config.py +0 -0
  663. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/__init__.py +0 -0
  664. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/_sql_base.py +0 -0
  665. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/async_mysql.py +0 -0
  666. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/async_postgres.py +0 -0
  667. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  668. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/base.py +0 -0
  669. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/json_store.py +0 -0
  670. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/mysql.py +0 -0
  671. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/mysql_new.py +0 -0
  672. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/postgres.py +0 -0
  673. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/singlestore.py +0 -0
  674. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/sqlite.py +0 -0
  675. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/supabase.py +0 -0
  676. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/surrealdb.py +0 -0
  677. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  678. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/conversation/turso.py +0 -0
  679. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/factory.py +0 -0
  680. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/hooks/__init__.py +0 -0
  681. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  682. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/__init__.py +0 -0
  683. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/base.py +0 -0
  684. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/cassandra.py +0 -0
  685. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/chroma.py +0 -0
  686. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  687. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  688. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/couchbase.py +0 -0
  689. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/lancedb.py +0 -0
  690. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  691. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  692. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  693. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/milvus.py +0 -0
  694. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  695. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/pgvector.py +0 -0
  696. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/pinecone.py +0 -0
  697. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/qdrant.py +0 -0
  698. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  699. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  700. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  701. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  702. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  703. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/knowledge/weaviate.py +0 -0
  704. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/migrations/__init__.py +0 -0
  705. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/migrations/manager.py +0 -0
  706. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/orchestrator.py +0 -0
  707. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/registry.py +0 -0
  708. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/__init__.py +0 -0
  709. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/async_mongodb.py +0 -0
  710. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/base.py +0 -0
  711. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/dynamodb.py +0 -0
  712. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/firestore.py +0 -0
  713. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/gcs.py +0 -0
  714. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/memory.py +0 -0
  715. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/mongodb.py +0 -0
  716. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/upstash.py +0 -0
  717. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/state/valkey.py +0 -0
  718. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/tests/__init__.py +0 -0
  719. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/tests/test_all_backends.py +0 -0
  720. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  721. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/profiler.py +0 -0
  722. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/push/__init__.py +0 -0
  723. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/push/client.py +0 -0
  724. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/push/transports.py +0 -0
  725. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/__init__.py +0 -0
  726. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/bridge.py +0 -0
  727. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/core.py +0 -0
  728. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/exceptions.py +0 -0
  729. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/history.py +0 -0
  730. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/models.py +0 -0
  731. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/operations.py +0 -0
  732. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/policy.py +0 -0
  733. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/registry.py +0 -0
  734. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/runtime.py +0 -0
  735. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/security.py +0 -0
  736. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/serve.py +0 -0
  737. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/recipe/server.py +0 -0
  738. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/__init__.py +0 -0
  739. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/analyzer.py +0 -0
  740. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/applier.py +0 -0
  741. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/judge.py +0 -0
  742. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/plan.py +0 -0
  743. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/player.py +0 -0
  744. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/reader.py +0 -0
  745. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/storage.py +0 -0
  746. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/replay/writer.py +0 -0
  747. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/__init__.py +0 -0
  748. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/_compat.py +0 -0
  749. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/_shell.py +0 -0
  750. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/daytona.py +0 -0
  751. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/docker.py +0 -0
  752. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/e2b.py +0 -0
  753. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/modal.py +0 -0
  754. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/sandlock.py +0 -0
  755. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/ssh.py +0 -0
  756. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/sandbox/subprocess.py +0 -0
  757. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/__init__.py +0 -0
  758. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/_base_scheduler.py +0 -0
  759. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/agent_scheduler.py +0 -0
  760. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  761. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/base.py +0 -0
  762. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/daemon_manager.py +0 -0
  763. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/deployment.py +0 -0
  764. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/executor.py +0 -0
  765. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/shared.py +0 -0
  766. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/state_manager.py +0 -0
  767. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/scheduler/yaml_loader.py +0 -0
  768. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/security/__init__.py +0 -0
  769. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/security/audit.py +0 -0
  770. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/security/injection.py +0 -0
  771. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/security/protected.py +0 -0
  772. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/setup/__init__.py +0 -0
  773. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/setup/build.py +0 -0
  774. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/setup/post_install.py +0 -0
  775. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/setup/setup_conda_env.py +0 -0
  776. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/setup.py +0 -0
  777. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/__init__.py +0 -0
  778. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/ai_generator.py +0 -0
  779. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/config.py +0 -0
  780. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/dedupe.py +0 -0
  781. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/discovery.py +0 -0
  782. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/drift.py +0 -0
  783. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/engine.py +0 -0
  784. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/enhanced_templates.py +0 -0
  785. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/example_verifier.py +0 -0
  786. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/manifest.py +0 -0
  787. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/models.py +0 -0
  788. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/reports.py +0 -0
  789. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/templates.py +0 -0
  790. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/undo_redo.py +0 -0
  791. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/standardise/validator.py +0 -0
  792. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/__init__.py +0 -0
  793. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/dynamodb_adapter.py +0 -0
  794. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/mongodb_adapter.py +0 -0
  795. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/postgresql_adapter.py +0 -0
  796. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/redis_adapter.py +0 -0
  797. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/storage/valkey_adapter.py +0 -0
  798. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/__init__.py +0 -0
  799. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/batch_source.py +0 -0
  800. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/cli_docs_source.py +0 -0
  801. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/discovery.py +0 -0
  802. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/docs_source.py +0 -0
  803. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/examples_source.py +0 -0
  804. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/executor.py +0 -0
  805. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/models.py +0 -0
  806. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/report_viewer.py +0 -0
  807. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/reporter.py +0 -0
  808. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/suite_runner/runner.py +0 -0
  809. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/__init__.py +0 -0
  810. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/cache.py +0 -0
  811. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/dependency_checker.py +0 -0
  812. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/discovery.py +0 -0
  813. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/loader.py +0 -0
  814. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/registry.py +0 -0
  815. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/resolver.py +0 -0
  816. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/security.py +0 -0
  817. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/tool_override.py +0 -0
  818. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/templates/tools_doctor.py +0 -0
  819. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/test.py +0 -0
  820. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tool_registry.py +0 -0
  821. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tool_resolver.py +0 -0
  822. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/__init__.py +0 -0
  823. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/audio.py +0 -0
  824. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/glob_tool.py +0 -0
  825. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/grep_tool.py +0 -0
  826. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/kanban_tools.py +0 -0
  827. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/multiedit.py +0 -0
  828. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/tools/skill_manage.py +0 -0
  829. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/__init__.py +0 -0
  830. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/_ollama.py +0 -0
  831. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/__init__.py +0 -0
  832. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/grader.py +0 -0
  833. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/hook.py +0 -0
  834. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/models.py +0 -0
  835. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/orchestrator.py +0 -0
  836. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/agents/storage.py +0 -0
  837. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/llm/__init__.py +0 -0
  838. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train/llm/trainer.py +0 -0
  839. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train.py +0 -0
  840. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/train_vision.py +0 -0
  841. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/_aiui_datastore.py +0 -0
  842. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/_external_agents.py +0 -0
  843. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/callbacks.py +0 -0
  844. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/components/aicoder.py +0 -0
  845. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/context.py +0 -0
  846. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui/database_config.py +0 -0
  847. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui_agents/__init__.py +0 -0
  848. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui_bot/__init__.py +0 -0
  849. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui_chat/__init__.py +0 -0
  850. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/ui_realtime/__init__.py +0 -0
  851. {praisonai-4.6.64 → praisonai-4.6.65}/praisonai/upload_vision.py +0 -0
  852. {praisonai-4.6.64 → praisonai-4.6.65}/setup.cfg +0 -0
  853. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test.py +0 -0
  854. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_agents_playbook.py +0 -0
  855. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_approval_system.py +0 -0
  856. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_basic.py +0 -0
  857. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_cli_features.py +0 -0
  858. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_custom_tools_fix.py +0 -0
  859. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_double_api_fix.py +0 -0
  860. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_n8n_agent_invoke.py +0 -0
  861. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_n8n_cli_feature.py +0 -0
  862. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_n8n_integration.py +0 -0
  863. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_phase2_refactor.py +0 -0
  864. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_recipe.py +0 -0
  865. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_registry.py +0 -0
  866. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_runner.py +0 -0
  867. {praisonai-4.6.64 → praisonai-4.6.65}/tests/test_sandboxed_agent_compatibility.py +0 -0
  868. {praisonai-4.6.64 → praisonai-4.6.65}/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.64
3
+ Version: 4.6.65
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.64
14
+ Requires-Dist: praisonaiagents>=1.6.65
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.64
3
+ Version: 4.6.65
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.64
14
+ Requires-Dist: praisonaiagents>=1.6.65
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
@@ -73,16 +73,19 @@ praisonai/bots/_defaults.py
73
73
  praisonai/bots/_delivery.py
74
74
  praisonai/bots/_discord_approval.py
75
75
  praisonai/bots/_dlq.py
76
+ praisonai/bots/_durable_adapter.py
76
77
  praisonai/bots/_email_utils.py
77
78
  praisonai/bots/_http_approval.py
78
79
  praisonai/bots/_ingress.py
79
80
  praisonai/bots/_mirror.py
81
+ praisonai/bots/_outbox.py
80
82
  praisonai/bots/_pairing_ui.py
81
83
  praisonai/bots/_presentation_approval.py
82
84
  praisonai/bots/_presentation_renderer.py
83
85
  praisonai/bots/_protocol_mixin.py
84
86
  praisonai/bots/_rate_limit.py
85
87
  praisonai/bots/_registry.py
88
+ praisonai/bots/_reset_policy.py
86
89
  praisonai/bots/_resilience.py
87
90
  praisonai/bots/_run_control.py
88
91
  praisonai/bots/_session.py
@@ -153,6 +156,7 @@ praisonai/claw/__init__.py
153
156
  praisonai/claw/default_app.py
154
157
  praisonai/cli/__init__.py
155
158
  praisonai/cli/_paths.py
159
+ praisonai/cli/_warnings.py
156
160
  praisonai/cli/app.py
157
161
  praisonai/cli/approval_backend.py
158
162
  praisonai/cli/branding.py
@@ -166,6 +170,7 @@ praisonai/cli/schema_provider.py
166
170
  praisonai/cli/unified_schema.py
167
171
  praisonai/cli/commands/__init__.py
168
172
  praisonai/cli/commands/acp.py
173
+ praisonai/cli/commands/agent.py
169
174
  praisonai/cli/commands/agents.py
170
175
  praisonai/cli/commands/app.py
171
176
  praisonai/cli/commands/audit.py
@@ -178,6 +183,7 @@ praisonai/cli/commands/call.py
178
183
  praisonai/cli/commands/chat.py
179
184
  praisonai/cli/commands/claw.py
180
185
  praisonai/cli/commands/code.py
186
+ praisonai/cli/commands/command.py
181
187
  praisonai/cli/commands/commit.py
182
188
  praisonai/cli/commands/completion.py
183
189
  praisonai/cli/commands/config.py
@@ -256,6 +262,8 @@ praisonai/cli/execution/profiler.py
256
262
  praisonai/cli/execution/request.py
257
263
  praisonai/cli/execution/result.py
258
264
  praisonai/cli/features/__init__.py
265
+ praisonai/cli/features/_endpoint_registry.py
266
+ praisonai/cli/features/_search_registry.py
259
267
  praisonai/cli/features/acp.py
260
268
  praisonai/cli/features/action_orchestrator.py
261
269
  praisonai/cli/features/agent_scheduler.py
@@ -281,6 +289,7 @@ praisonai/cli/features/config_hierarchy.py
281
289
  praisonai/cli/features/context_manager.py
282
290
  praisonai/cli/features/cost_tracker.py
283
291
  praisonai/cli/features/csv_test_runner.py
292
+ praisonai/cli/features/custom_definitions.py
284
293
  praisonai/cli/features/debug.py
285
294
  praisonai/cli/features/deploy.py
286
295
  praisonai/cli/features/diag.py
@@ -367,6 +376,7 @@ praisonai/cli/features/doctor/checks/bot_checks.py
367
376
  praisonai/cli/features/doctor/checks/config_checks.py
368
377
  praisonai/cli/features/doctor/checks/db_checks.py
369
378
  praisonai/cli/features/doctor/checks/env_checks.py
379
+ praisonai/cli/features/doctor/checks/gateway_checks.py
370
380
  praisonai/cli/features/doctor/checks/lsp_checks.py
371
381
  praisonai/cli/features/doctor/checks/mcp_checks.py
372
382
  praisonai/cli/features/doctor/checks/memory_checks.py
@@ -442,6 +452,7 @@ praisonai/cli/ui/events.py
442
452
  praisonai/cli/ui/mg_backend.py
443
453
  praisonai/cli/ui/plain.py
444
454
  praisonai/cli/ui/rich_backend.py
455
+ praisonai/cli/utils/env_utils.py
445
456
  praisonai/cli/utils/project.py
446
457
  praisonai/cli_backends/__init__.py
447
458
  praisonai/cli_backends/claude.py
@@ -483,6 +494,7 @@ praisonai/deploy/main.py
483
494
  praisonai/deploy/models.py
484
495
  praisonai/deploy/schema.py
485
496
  praisonai/deploy/providers/__init__.py
497
+ praisonai/deploy/providers/_registry.py
486
498
  praisonai/deploy/providers/aws.py
487
499
  praisonai/deploy/providers/azure.py
488
500
  praisonai/deploy/providers/base.py
@@ -726,6 +738,7 @@ praisonai/replay/storage.py
726
738
  praisonai/replay/writer.py
727
739
  praisonai/sandbox/__init__.py
728
740
  praisonai/sandbox/_compat.py
741
+ praisonai/sandbox/_registry.py
729
742
  praisonai/sandbox/_shell.py
730
743
  praisonai/sandbox/daytona.py
731
744
  praisonai/sandbox/docker.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.64
4
+ praisonaiagents>=1.6.65
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
17
17
  from .agentmail import AgentMailBot
18
18
  from .bot import Bot
19
19
  from .botos import BotOS
20
- from .delivery import DeliveryRouter, ChannelDirectory, SessionSource
21
20
  from ._session import BotSessionManager
22
21
  from ._dlq import InboundDLQ, DLQEntry
23
22
  from ._ingress import InboundJournal, JournalEntry
@@ -27,6 +26,9 @@ if TYPE_CHECKING:
27
26
  from ._webhook_approval import WebhookApproval
28
27
  from ._http_approval import HTTPApproval
29
28
  from ._streaming import StreamingConfig, StreamingMode, DraftStreamer
29
+ from ._outbox import OutboundQueue, OutboundEntry
30
+ from ._delivery import DurableDelivery, deliver_with_retry
31
+ from ._durable_adapter import DurableAdapterMixin
30
32
 
31
33
  def __getattr__(name: str):
32
34
  """Lazy loading of bot components."""
@@ -103,16 +105,25 @@ def __getattr__(name: str):
103
105
  if name == "DraftStreamer":
104
106
  from ._streaming import DraftStreamer
105
107
  return DraftStreamer
106
- # Delivery routing components
107
- if name == "DeliveryRouter":
108
- from .delivery import DeliveryRouter
109
- return DeliveryRouter
110
- if name == "ChannelDirectory":
111
- from .delivery import ChannelDirectory
112
- return ChannelDirectory
113
- if name == "SessionSource":
114
- from .delivery import SessionSource
115
- return SessionSource
108
+ # Outbound delivery components
109
+ if name == "OutboundQueue":
110
+ from ._outbox import OutboundQueue
111
+ return OutboundQueue
112
+ if name == "OutboundEntry":
113
+ from ._outbox import OutboundEntry
114
+ return OutboundEntry
115
+ if name == "DurableDelivery":
116
+ from ._delivery import DurableDelivery
117
+ return DurableDelivery
118
+ if name == "deliver_with_retry":
119
+ from ._delivery import deliver_with_retry
120
+ return deliver_with_retry
121
+ if name == "deliver_chunked":
122
+ from ._delivery import deliver_chunked
123
+ return deliver_chunked
124
+ if name == "DurableAdapterMixin":
125
+ from ._durable_adapter import DurableAdapterMixin
126
+ return DurableAdapterMixin
116
127
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
117
128
 
118
129
  __all__ = [
@@ -121,12 +132,13 @@ __all__ = [
121
132
  "BotSessionManager",
122
133
  "InboundDLQ", "DLQEntry",
123
134
  "InboundJournal", "JournalEntry",
135
+ "OutboundQueue", "OutboundEntry",
136
+ "DurableDelivery", "deliver_with_retry", "deliver_chunked",
137
+ "DurableAdapterMixin",
124
138
  "SlackApproval", "TelegramApproval", "DiscordApproval",
125
139
  "WebhookApproval", "HTTPApproval",
126
140
  # Streaming
127
141
  "StreamingConfig", "StreamingMode", "DraftStreamer",
128
- # Delivery routing
129
- "DeliveryRouter", "ChannelDirectory", "SessionSource",
130
142
  # W1
131
- "mirror_to_session", "BotSessionManager",
143
+ "mirror_to_session",
132
144
  ]
@@ -0,0 +1,469 @@
1
+ """
2
+ Pydantic-based config schema validation for bot.yaml / gateway.yaml.
3
+
4
+ Provides clear, human-friendly error messages when configuration is invalid.
5
+ This is the canonical configuration schema for all bot/gateway configurations.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+ import os
12
+ from typing import Any, Dict, List, Optional, Union
13
+
14
+ from pydantic import BaseModel, Field, field_validator, model_validator
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class AgentConfigSchema(BaseModel):
20
+ """Schema for agent configuration in bot.yaml."""
21
+ name: str = "assistant"
22
+ instructions: str = ""
23
+ model: Optional[str] = "gpt-4o-mini"
24
+ llm: Optional[str] = None # Alias for model
25
+ memory: bool = False
26
+ tools: List[str] = Field(default_factory=list)
27
+ knowledge: Union[bool, List[str]] = False
28
+ web_search: bool = False
29
+ web_search_provider: str = "duckduckgo"
30
+ auto_approve: bool = False
31
+
32
+ @model_validator(mode="after")
33
+ def handle_model_aliases(self):
34
+ """Handle model/llm aliases."""
35
+ # Use llm if provided and model wasn't explicitly set
36
+ if self.llm and "model" not in self.model_fields_set:
37
+ self.model = self.llm
38
+ return self
39
+
40
+
41
+ class SessionResetConfigSchema(BaseModel):
42
+ """Schema for session reset policy configuration."""
43
+ mode: str = "none" # none | idle | daily | both
44
+ idle_minutes: int = 60 # Reset after N minutes of inactivity
45
+ at_hour: Optional[int] = None # Daily reset hour (0-23)
46
+
47
+ @field_validator("mode")
48
+ @classmethod
49
+ def validate_mode(cls, v: str) -> str:
50
+ allowed = {"none", "idle", "daily", "both"}
51
+ if v not in allowed:
52
+ raise ValueError(
53
+ f"Invalid reset mode '{v}'. Must be one of: {', '.join(sorted(allowed))}"
54
+ )
55
+ return v
56
+
57
+ @field_validator("idle_minutes")
58
+ @classmethod
59
+ def validate_idle_minutes(cls, v: int) -> int:
60
+ if v < 1:
61
+ raise ValueError("idle_minutes must be at least 1")
62
+ return v
63
+
64
+ @field_validator("at_hour")
65
+ @classmethod
66
+ def validate_at_hour(cls, v: Optional[int]) -> Optional[int]:
67
+ if v is not None and not (0 <= v <= 23):
68
+ raise ValueError("at_hour must be between 0 and 23")
69
+ return v
70
+
71
+ @model_validator(mode="after")
72
+ def validate_config_consistency(self):
73
+ """Ensure at_hour is set when mode requires it."""
74
+ if self.mode in ("daily", "both") and self.at_hour is None:
75
+ raise ValueError(f"at_hour is required when mode is '{self.mode}'")
76
+ return self
77
+
78
+
79
+ class SessionConfigSchema(BaseModel):
80
+ """Schema for session configuration."""
81
+ max_history: int = 100
82
+ reset: Optional[SessionResetConfigSchema] = None
83
+
84
+
85
+ class StreamingConfigSchema(BaseModel):
86
+ """Schema for streaming reply configuration."""
87
+ mode: str = "off" # off | draft | progress
88
+ min_interval: float = 1.5 # Minimum seconds between edits
89
+ min_delta: int = 120 # Minimum character delta before edit
90
+ placeholder_text: str = "🤔 Thinking..."
91
+ progress_prefix: str = "🤔 "
92
+
93
+ @field_validator("mode")
94
+ @classmethod
95
+ def validate_streaming_mode(cls, v: str) -> str:
96
+ allowed = {"off", "draft", "progress"}
97
+ if v not in allowed:
98
+ raise ValueError(
99
+ f"Invalid streaming mode '{v}'. Must be one of: {', '.join(sorted(allowed))}"
100
+ )
101
+ return v
102
+
103
+ @field_validator("min_interval")
104
+ @classmethod
105
+ def validate_min_interval(cls, v: float) -> float:
106
+ if v < 0.1:
107
+ raise ValueError("min_interval must be at least 0.1 seconds")
108
+ return v
109
+
110
+ @field_validator("min_delta")
111
+ @classmethod
112
+ def validate_min_delta(cls, v: int) -> int:
113
+ if v < 1:
114
+ raise ValueError("min_delta must be at least 1 character")
115
+ return v
116
+
117
+
118
+ class OutboundResilienceSchema(BaseModel):
119
+ """Schema for outbound message retry configuration."""
120
+ enabled: bool = True
121
+ initial_ms: float = 1000.0 # Initial retry delay in ms
122
+ max_ms: float = 10000.0 # Maximum retry delay in ms
123
+ factor: float = 1.5 # Exponential backoff factor
124
+ max_attempts: int = 3 # Maximum retry attempts
125
+ jitter: float = 0.25 # Random jitter fraction
126
+ dlq_path: Optional[str] = None # Path to outbound DLQ database
127
+
128
+ @field_validator("initial_ms")
129
+ @classmethod
130
+ def validate_initial_ms(cls, v: float) -> float:
131
+ if v < 100:
132
+ raise ValueError("initial_ms must be at least 100ms")
133
+ return v
134
+
135
+ @field_validator("max_attempts")
136
+ @classmethod
137
+ def validate_max_attempts(cls, v: int) -> int:
138
+ if v < 1 or v > 10:
139
+ raise ValueError("max_attempts must be between 1 and 10")
140
+ return v
141
+
142
+
143
+ class ChannelConfigSchema(BaseModel):
144
+ """Schema for a single channel configuration."""
145
+ platform: Optional[str] = None
146
+ token: str = ""
147
+ app_token: Optional[str] = None # For Slack Socket Mode
148
+ mode: str = "poll" # poll | ws | webhook | hybrid
149
+ group_policy: str = "mention_only" # Default to secure: respond_all, mention_only, command_only
150
+ allowlist: List[str] = Field(default_factory=list)
151
+ blocklist: List[str] = Field(default_factory=list)
152
+ allowed_users: List[str] = Field(default_factory=list) # Changed to List for consistency
153
+ admin_users: Optional[str] = None # Comma-separated list of admin user IDs
154
+ user_allowed_commands: Optional[str] = None # Comma-separated list of allowed commands
155
+ routes: Dict[str, str] = Field(default_factory=dict) # Context -> agent_id mapping
156
+ routing: Optional[Dict[str, str]] = None # Alias for routes
157
+ webhook_url: Optional[str] = None
158
+ webhook_port: int = 8080
159
+ streaming: Optional[StreamingConfigSchema] = None
160
+ home_channel: Optional[str] = None # Default channel for this platform
161
+ aliases: Dict[str, str] = Field(default_factory=dict) # Friendly name -> channel_id mapping
162
+ outbound_resilience: Optional[OutboundResilienceSchema] = None
163
+ session: Optional[SessionConfigSchema] = None
164
+ max_history: Optional[int] = None # Backward compatibility
165
+
166
+ # Platform-specific fields
167
+ phone_number_id: Optional[str] = None # WhatsApp
168
+ verify_token: Optional[str] = None # WhatsApp
169
+ whatsapp_mode: Optional[str] = None # WhatsApp-specific mode: "cloud" or "web"
170
+ creds_dir: Optional[str] = None # WhatsApp web mode credentials directory
171
+ email_address: Optional[str] = None # Email
172
+ imap_server: Optional[str] = None # Email
173
+ smtp_server: Optional[str] = None # Email
174
+ inbox_id: Optional[str] = None # AgentMail
175
+ domain: Optional[str] = None # AgentMail
176
+
177
+ @field_validator("mode")
178
+ @classmethod
179
+ def validate_mode(cls, v: str) -> str:
180
+ allowed = {"poll", "ws", "webhook", "hybrid"}
181
+ if v not in allowed:
182
+ raise ValueError(
183
+ f"Invalid mode '{v}'. Must be one of: {', '.join(sorted(allowed))}"
184
+ )
185
+ return v
186
+
187
+ @field_validator("token")
188
+ @classmethod
189
+ def resolve_env_var(cls, v: str) -> str:
190
+ """Resolve ${ENV_VAR} references in token."""
191
+ if v.startswith("${") and v.endswith("}"):
192
+ env_key = v[2:-1]
193
+ resolved = os.environ.get(env_key, "")
194
+ if not resolved:
195
+ raise ValueError(
196
+ f"Environment variable '{env_key}' not set. "
197
+ f"Set it with: export {env_key}=your_token"
198
+ )
199
+ return resolved
200
+ return v
201
+
202
+ @field_validator("group_policy")
203
+ @classmethod
204
+ def validate_group_policy(cls, v: str) -> str:
205
+ allowed = {"respond_all", "mention_only", "command_only"}
206
+ if v not in allowed:
207
+ raise ValueError(
208
+ f"Invalid group_policy '{v}'. Must be one of: {', '.join(sorted(allowed))}"
209
+ )
210
+ return v
211
+
212
+ @model_validator(mode="after")
213
+ def validate_security(self):
214
+ """Validate security settings and warn about unsafe configurations."""
215
+ # Merge routing and routes
216
+ if self.routing and not self.routes:
217
+ self.routes = self.routing
218
+
219
+ # Warn about empty allowed_users (open to everyone)
220
+ if not self.allowed_users and not self.allowlist and not self.blocklist:
221
+ logger.warning(
222
+ "Channel has no user restrictions (allowed_users/allowlist/blocklist). "
223
+ "Bot will respond to EVERYONE. Consider adding allowed_users for security."
224
+ )
225
+
226
+ # Warn about respond_all in production
227
+ if self.group_policy == "respond_all":
228
+ logger.warning(
229
+ "Channel uses 'respond_all' group_policy. "
230
+ "Consider 'mention_only' for better security."
231
+ )
232
+ return self
233
+
234
+
235
+ class RoutingConfigSchema(BaseModel):
236
+ """Schema for agent routing configuration."""
237
+ default: str = "assistant"
238
+ rules: Dict[str, str] = Field(default_factory=dict)
239
+
240
+
241
+ class DaemonConfigSchema(BaseModel):
242
+ """Schema for daemon/service configuration."""
243
+ enabled: bool = False
244
+ restart: str = "always" # always, on_failure, never
245
+
246
+ @field_validator("restart")
247
+ @classmethod
248
+ def validate_restart(cls, v: str) -> str:
249
+ allowed = {"always", "on_failure", "never"}
250
+ if v not in allowed:
251
+ raise ValueError(f"Invalid restart policy '{v}'. Must be one of: {', '.join(sorted(allowed))}")
252
+ return v
253
+
254
+
255
+ class GatewayConfigSchema(BaseModel):
256
+ """Unified schema for gateway.yaml/bot.yaml configuration.
257
+
258
+ This is the canonical schema that supports all configuration patterns:
259
+ - Single-bot bot.yaml (platform + token + agent)
260
+ - Gateway gateway.yaml (agents dict + channels dict with routing)
261
+ - BotOS config (agent + platforms dict)
262
+ """
263
+ # Top-level fields for single-bot compatibility
264
+ platform: Optional[str] = None
265
+ token: Optional[str] = None
266
+
267
+ # Agent configuration (single or multiple)
268
+ agent: Optional[AgentConfigSchema] = None
269
+ agents: Optional[Dict[str, AgentConfigSchema]] = None
270
+
271
+ # Channel configuration
272
+ channels: Dict[str, ChannelConfigSchema] = Field(default_factory=dict)
273
+
274
+ # Platform dict for BotOS compatibility
275
+ platforms: Optional[Dict[str, Dict[str, Any]]] = None
276
+
277
+ # Routing and daemon config
278
+ routing: Optional[RoutingConfigSchema] = None
279
+ daemon: Optional[DaemonConfigSchema] = None
280
+
281
+ @model_validator(mode="after")
282
+ def normalize_and_validate(self):
283
+ """Normalize different config formats to canonical form and validate."""
284
+ # Migrate single-bot format (platform + token at top level)
285
+ if self.platform and self.token and not self.channels:
286
+ self.channels = {
287
+ self.platform: ChannelConfigSchema(
288
+ platform=self.platform,
289
+ token=self.token
290
+ )
291
+ }
292
+
293
+ # Migrate BotOS platforms format to channels
294
+ if self.platforms and not self.channels:
295
+ for platform_name, platform_config in self.platforms.items():
296
+ self.channels[platform_name] = ChannelConfigSchema(
297
+ platform=platform_name,
298
+ **platform_config
299
+ )
300
+
301
+ # Ensure at least one channel is configured
302
+ if not self.channels:
303
+ raise ValueError(
304
+ "No channels configured. Add at least one channel "
305
+ "(telegram, discord, slack, whatsapp) to your config"
306
+ )
307
+
308
+ # Validate platform names
309
+ valid_platforms = {"telegram", "discord", "slack", "whatsapp", "email", "agentmail", "linear"}
310
+ for name, channel in self.channels.items():
311
+ platform = (channel.platform or name).lower()
312
+ if platform not in valid_platforms:
313
+ raise ValueError(
314
+ f"Unknown channel '{name}' (platform '{platform}'). "
315
+ f"Supported platforms: {', '.join(sorted(valid_platforms))}"
316
+ )
317
+
318
+ # Set platform if not explicitly set
319
+ for name, channel in self.channels.items():
320
+ if not channel.platform:
321
+ channel.platform = name
322
+
323
+ return self
324
+
325
+
326
+ # Legacy alias for backward compatibility
327
+ BotYamlSchema = GatewayConfigSchema
328
+
329
+
330
+ def validate_gateway_config(raw: Dict[str, Any], apply_env_substitution: bool = True) -> GatewayConfigSchema:
331
+ """Validate a raw YAML dict against the unified gateway config schema.
332
+
333
+ Args:
334
+ raw: Parsed YAML dictionary
335
+ apply_env_substitution: Whether to apply ${VAR} substitution
336
+
337
+ Returns:
338
+ Validated GatewayConfigSchema
339
+
340
+ Raises:
341
+ ValueError: With human-friendly error messages
342
+ """
343
+ # Apply environment variable substitution if requested
344
+ if apply_env_substitution:
345
+ from ..cli.utils.env_utils import substitute_env_vars
346
+ raw = substitute_env_vars(raw)
347
+
348
+ try:
349
+ return GatewayConfigSchema(**raw)
350
+ except Exception as e:
351
+ # Re-raise with user-friendly message
352
+ msg = str(e)
353
+ # Strip pydantic internals for cleaner output
354
+ if "validation error" in msg.lower():
355
+ lines = msg.split("\n")
356
+ clean_lines = [line for line in lines if line.strip() and not line.strip().startswith("For further")]
357
+ msg = "\n".join(clean_lines)
358
+ raise ValueError(f"Invalid gateway/bot configuration:\n{msg}") from None
359
+
360
+
361
+ def validate_bot_config(raw: Dict[str, Any]) -> GatewayConfigSchema:
362
+ """Validate a raw YAML dict against the bot config schema.
363
+
364
+ Legacy function for backward compatibility.
365
+
366
+ Args:
367
+ raw: Parsed YAML dictionary
368
+
369
+ Returns:
370
+ Validated GatewayConfigSchema
371
+
372
+ Raises:
373
+ ValueError: With human-friendly error messages
374
+ """
375
+ return validate_gateway_config(raw)
376
+
377
+
378
+ def load_and_validate_gateway_yaml(path: str, apply_env_substitution: bool = True) -> GatewayConfigSchema:
379
+ """Load and validate a gateway.yaml or bot.yaml file.
380
+
381
+ This is the canonical loader for all bot/gateway configurations.
382
+
383
+ Args:
384
+ path: Path to the YAML file
385
+ apply_env_substitution: Whether to apply ${VAR} substitution
386
+
387
+ Returns:
388
+ Validated config schema
389
+
390
+ Raises:
391
+ FileNotFoundError: If file doesn't exist
392
+ ValueError: If config is invalid
393
+ """
394
+ import yaml
395
+
396
+ if not os.path.exists(path):
397
+ raise FileNotFoundError(
398
+ f"Config file not found: {path}\n"
399
+ f"Run 'praisonai onboard' to create one, or create it manually."
400
+ )
401
+
402
+ # Load env file if not already loaded
403
+ from ..cli.utils.env_utils import load_env_file
404
+ load_env_file()
405
+
406
+ with open(path) as f:
407
+ raw = yaml.safe_load(f) or {}
408
+
409
+ return validate_gateway_config(raw, apply_env_substitution)
410
+
411
+
412
+ def load_and_validate_bot_yaml(path: str) -> GatewayConfigSchema:
413
+ """Load and validate a bot.yaml file.
414
+
415
+ Legacy function for backward compatibility.
416
+
417
+ Args:
418
+ path: Path to the YAML file
419
+
420
+ Returns:
421
+ Validated config schema
422
+
423
+ Raises:
424
+ FileNotFoundError: If file doesn't exist
425
+ ValueError: If config is invalid
426
+ """
427
+ return load_and_validate_gateway_yaml(path)
428
+
429
+
430
+ def migrate_legacy_config(raw: Dict[str, Any]) -> Dict[str, Any]:
431
+ """Migrate legacy configuration formats to the canonical schema.
432
+
433
+ Handles migration from:
434
+ - Old single-bot format (top-level platform/token)
435
+ - Old BotOS format (platforms dict)
436
+ - Old gateway format (missing security defaults)
437
+
438
+ Args:
439
+ raw: Raw configuration dictionary
440
+
441
+ Returns:
442
+ Migrated configuration dictionary
443
+ """
444
+ migrated = dict(raw)
445
+
446
+ # Log migrations for transparency
447
+ migrations = []
448
+
449
+ # Migrate old allowed_users string to list
450
+ if "channels" in migrated:
451
+ for channel_name, channel in migrated["channels"].items():
452
+ if isinstance(channel.get("allowed_users"), str):
453
+ old_value = channel["allowed_users"]
454
+ if old_value:
455
+ channel["allowed_users"] = [u.strip() for u in old_value.split(",") if u.strip()]
456
+ else:
457
+ channel["allowed_users"] = []
458
+ migrations.append(f"Migrated {channel_name}.allowed_users from string to list")
459
+
460
+ # Set secure defaults if not specified
461
+ if "group_policy" not in channel:
462
+ channel["group_policy"] = "mention_only"
463
+ migrations.append(f"Set {channel_name}.group_policy to secure default 'mention_only'")
464
+
465
+ # Log any migrations performed
466
+ if migrations:
467
+ logger.info(f"Config migrations applied: {'; '.join(migrations)}")
468
+
469
+ return migrated