PraisonAI 4.6.51__tar.gz → 4.6.53__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 (828) hide show
  1. {praisonai-4.6.51 → praisonai-4.6.53}/PKG-INFO +2 -2
  2. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/SOURCES.txt +1 -0
  4. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_entrypoint.py +29 -6
  6. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agent.py +8 -24
  7. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agents_generator.py +149 -234
  8. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_rate_limit.py +25 -16
  9. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_unknown_user.py +1 -1
  10. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/telegram.py +14 -4
  11. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/chat.py +3 -0
  12. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/run.py +4 -0
  13. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/bots_cli.py +7 -19
  14. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/job_workflow.py +8 -27
  15. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/main.py +57 -20
  16. praisonai-4.6.53/praisonai/cli/session/unified.py +548 -0
  17. praisonai-4.6.53/praisonai/cli_backends/__init__.py +73 -0
  18. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy.py +1 -1
  19. praisonai-4.6.53/praisonai/endpoints/registry.py +128 -0
  20. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/base.py +28 -15
  21. praisonai-4.6.53/praisonai/framework_adapters/praisonai_adapter.py +421 -0
  22. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/server.py +11 -1
  23. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/_compat.py +24 -0
  24. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/docker.py +10 -12
  25. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/subprocess.py +10 -12
  26. praisonai-4.6.53/praisonai/scheduler/_base_scheduler.py +81 -0
  27. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/agent_scheduler.py +8 -49
  28. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/async_agent_scheduler.py +9 -14
  29. praisonai-4.6.53/praisonai/scheduler/base.py +68 -0
  30. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/daemon_manager.py +36 -0
  31. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/deployment.py +32 -0
  32. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tool_resolver.py +148 -12
  33. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/llm/trainer.py +32 -8
  34. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/upload_vision.py +14 -2
  35. praisonai-4.6.53/praisonai/version.py +1 -0
  36. {praisonai-4.6.51 → praisonai-4.6.53}/pyproject.toml +1 -1
  37. praisonai-4.6.51/praisonai/cli/session/unified.py +0 -306
  38. praisonai-4.6.51/praisonai/cli_backends/__init__.py +0 -31
  39. praisonai-4.6.51/praisonai/endpoints/registry.py +0 -131
  40. praisonai-4.6.51/praisonai/framework_adapters/praisonai_adapter.py +0 -214
  41. praisonai-4.6.51/praisonai/scheduler/base.py +0 -124
  42. praisonai-4.6.51/praisonai/version.py +0 -1
  43. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/dependency_links.txt +0 -0
  44. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/entry_points.txt +0 -0
  45. {praisonai-4.6.51 → praisonai-4.6.53}/PraisonAI.egg-info/top_level.txt +0 -0
  46. {praisonai-4.6.51 → praisonai-4.6.53}/README.md +0 -0
  47. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/__init__.py +0 -0
  48. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/__main__.py +0 -0
  49. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_approval_spec.py +0 -0
  50. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_async_bridge.py +0 -0
  51. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/__init__.py +0 -0
  52. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/api_md.py +0 -0
  53. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/__init__.py +0 -0
  54. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/docs_extractor.py +0 -0
  55. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/docs_generator.py +0 -0
  56. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/generator.py +0 -0
  57. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  58. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/python_extractor.py +0 -0
  59. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  60. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/rust_extractor.py +0 -0
  61. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  62. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  63. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  64. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_framework_availability.py +0 -0
  65. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_logging.py +0 -0
  66. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_registry.py +0 -0
  67. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/_safe_loader.py +0 -0
  68. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/__init__.py +0 -0
  69. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/config.py +0 -0
  70. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/safe_edit.py +0 -0
  71. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/server.py +0 -0
  72. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/acp/session.py +0 -0
  73. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/__init__.py +0 -0
  74. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/readers.py +0 -0
  75. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/rerankers.py +0 -0
  76. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/retrievers.py +0 -0
  77. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/adapters/vector_stores.py +0 -0
  78. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/agent_scheduler.py +0 -0
  79. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/api/agent_invoke.py +0 -0
  80. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/api/call.py +0 -0
  81. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/app/__init__.py +0 -0
  82. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/app/agentos.py +0 -0
  83. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/async_agent_scheduler.py +0 -0
  84. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/audit/__init__.py +0 -0
  85. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/audit/agent_centric.py +0 -0
  86. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/auto.py +0 -0
  87. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/__init__.py +0 -0
  88. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_ack.py +0 -0
  89. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_approval.py +0 -0
  90. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_approval_base.py +0 -0
  91. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_auth.py +0 -0
  92. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_chunk.py +0 -0
  93. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_commands.py +0 -0
  94. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_config_schema.py +0 -0
  95. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_debounce.py +0 -0
  96. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_defaults.py +0 -0
  97. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_discord_approval.py +0 -0
  98. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_dlq.py +0 -0
  99. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_email_utils.py +0 -0
  100. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_http_approval.py +0 -0
  101. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_mirror.py +0 -0
  102. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_pairing_ui.py +0 -0
  103. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_protocol_mixin.py +0 -0
  104. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_registry.py +0 -0
  105. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_resilience.py +0 -0
  106. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_session.py +0 -0
  107. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_slack_approval.py +0 -0
  108. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_telegram_approval.py +0 -0
  109. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_typing_indicator.py +0 -0
  110. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_webhook_approval.py +0 -0
  111. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  112. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/agentmail.py +0 -0
  113. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/bot.py +0 -0
  114. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/botos.py +0 -0
  115. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/discord.py +0 -0
  116. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/email.py +0 -0
  117. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/linear.py +0 -0
  118. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/media.py +0 -0
  119. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/slack.py +0 -0
  120. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/bots/whatsapp.py +0 -0
  121. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/__init__.py +0 -0
  122. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/agent.py +0 -0
  123. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/benchmark.py +0 -0
  124. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cdp_agent.py +0 -0
  125. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cdp_utils.py +0 -0
  126. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/cli.py +0 -0
  127. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/diagnostics.py +0 -0
  128. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/launcher.py +0 -0
  129. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/playwright_agent.py +0 -0
  130. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/profiling.py +0 -0
  131. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/protocol.py +0 -0
  132. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/report.py +0 -0
  133. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/server.py +0 -0
  134. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/sessions.py +0 -0
  135. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/browser/video.py +0 -0
  136. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/__init__.py +0 -0
  137. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/a2a.py +0 -0
  138. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/assistants.py +0 -0
  139. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/audio.py +0 -0
  140. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/batches.py +0 -0
  141. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/completions.py +0 -0
  142. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/container_files.py +0 -0
  143. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/containers.py +0 -0
  144. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/embeddings.py +0 -0
  145. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/files.py +0 -0
  146. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/fine_tuning.py +0 -0
  147. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/guardrails.py +0 -0
  148. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/images.py +0 -0
  149. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/mcp.py +0 -0
  150. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/messages.py +0 -0
  151. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/moderations.py +0 -0
  152. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/ocr.py +0 -0
  153. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/passthrough.py +0 -0
  154. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/rag.py +0 -0
  155. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/realtime.py +0 -0
  156. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/rerank.py +0 -0
  157. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/responses.py +0 -0
  158. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/search.py +0 -0
  159. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/skills.py +0 -0
  160. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/vector_store_files.py +0 -0
  161. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/vector_stores.py +0 -0
  162. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/capabilities/videos.py +0 -0
  163. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/claw/__init__.py +0 -0
  164. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/claw/default_app.py +0 -0
  165. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/__init__.py +0 -0
  166. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/_paths.py +0 -0
  167. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/app.py +0 -0
  168. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/branding.py +0 -0
  169. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/__init__.py +0 -0
  170. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/acp.py +0 -0
  171. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/agents.py +0 -0
  172. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/app.py +0 -0
  173. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/audit.py +0 -0
  174. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/batch.py +0 -0
  175. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/benchmark.py +0 -0
  176. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/bot.py +0 -0
  177. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/browser.py +0 -0
  178. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/call.py +0 -0
  179. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/claw.py +0 -0
  180. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/code.py +0 -0
  181. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/commit.py +0 -0
  182. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/completion.py +0 -0
  183. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/config.py +0 -0
  184. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/context.py +0 -0
  185. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/dashboard.py +0 -0
  186. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/debug.py +0 -0
  187. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/deploy.py +0 -0
  188. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/diag.py +0 -0
  189. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/docs.py +0 -0
  190. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/doctor.py +0 -0
  191. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/endpoints.py +0 -0
  192. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/environment.py +0 -0
  193. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/eval.py +0 -0
  194. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/examples.py +0 -0
  195. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/flow.py +0 -0
  196. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/gateway.py +0 -0
  197. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/github.py +0 -0
  198. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/hooks.py +0 -0
  199. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/kanban.py +0 -0
  200. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/knowledge.py +0 -0
  201. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/langextract.py +0 -0
  202. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/langfuse.py +0 -0
  203. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/loop.py +0 -0
  204. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/lsp.py +0 -0
  205. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/managed.py +0 -0
  206. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/mcp.py +0 -0
  207. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/memory.py +0 -0
  208. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/mint_link.py +0 -0
  209. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/n8n.py +0 -0
  210. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/obs.py +0 -0
  211. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/onboard.py +0 -0
  212. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/package.py +0 -0
  213. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/pairing.py +0 -0
  214. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/paths.py +0 -0
  215. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/plugins.py +0 -0
  216. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/port.py +0 -0
  217. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/profile.py +0 -0
  218. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/publish.py +0 -0
  219. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/rag.py +0 -0
  220. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/realtime.py +0 -0
  221. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/recipe.py +0 -0
  222. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/registry.py +0 -0
  223. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/replay.py +0 -0
  224. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/research.py +0 -0
  225. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/retrieval.py +0 -0
  226. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/rules.py +0 -0
  227. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/sandbox.py +0 -0
  228. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/schedule.py +0 -0
  229. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/serve.py +0 -0
  230. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/session.py +0 -0
  231. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/setup.py +0 -0
  232. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/skills.py +0 -0
  233. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/standardise.py +0 -0
  234. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/templates.py +0 -0
  235. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/test.py +0 -0
  236. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/todo.py +0 -0
  237. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/tools.py +0 -0
  238. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/traces.py +0 -0
  239. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/tracker.py +0 -0
  240. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/train.py +0 -0
  241. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/ui.py +0 -0
  242. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/up.py +0 -0
  243. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/version.py +0 -0
  244. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/commands/workflow.py +0 -0
  245. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/config_loader.py +0 -0
  246. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/__init__.py +0 -0
  247. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/loader.py +0 -0
  248. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/paths.py +0 -0
  249. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/configuration/schema.py +0 -0
  250. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/__init__.py +0 -0
  251. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/core.py +0 -0
  252. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/profiler.py +0 -0
  253. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/request.py +0 -0
  254. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/execution/result.py +0 -0
  255. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/fallback_schema.py +0 -0
  256. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/__init__.py +0 -0
  257. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/acp.py +0 -0
  258. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/action_orchestrator.py +0 -0
  259. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agent_scheduler.py +0 -0
  260. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agent_tools.py +0 -0
  261. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/agents.py +0 -0
  262. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/approval.py +0 -0
  263. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/at_mentions.py +0 -0
  264. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/audit_cli.py +0 -0
  265. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/auto_memory.py +0 -0
  266. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/auto_mode.py +0 -0
  267. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/autonomy_mode.py +0 -0
  268. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/background.py +0 -0
  269. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/base.py +0 -0
  270. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/benchmark.py +0 -0
  271. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/capabilities.py +0 -0
  272. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/checkpoints.py +0 -0
  273. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/cli_profiler.py +0 -0
  274. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/code_intelligence.py +0 -0
  275. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/compaction.py +0 -0
  276. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/compare.py +0 -0
  277. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/config_hierarchy.py +0 -0
  278. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/context_manager.py +0 -0
  279. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/cost_tracker.py +0 -0
  280. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/csv_test_runner.py +0 -0
  281. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/debug.py +0 -0
  282. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/deploy.py +0 -0
  283. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/diag.py +0 -0
  284. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/display_jsonl.py +0 -0
  285. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/__init__.py +0 -0
  286. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  287. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  288. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  289. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  290. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  291. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  292. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  293. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  294. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  295. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  296. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  297. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  298. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  299. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  300. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  301. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  302. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  303. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  304. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/engine.py +0 -0
  305. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/formatters.py +0 -0
  306. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/handler.py +0 -0
  307. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/models.py +0 -0
  308. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/doctor/registry.py +0 -0
  309. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/endpoints.py +0 -0
  310. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/eval.py +0 -0
  311. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/examples.py +0 -0
  312. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/external_agents.py +0 -0
  313. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/fast_context.py +0 -0
  314. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/file_history.py +0 -0
  315. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/flow_display.py +0 -0
  316. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/gateway.py +0 -0
  317. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/git_attribution.py +0 -0
  318. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/git_integration.py +0 -0
  319. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/guardrail.py +0 -0
  320. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/handoff.py +0 -0
  321. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/hooks.py +0 -0
  322. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/hybrid_workflow.py +0 -0
  323. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/image.py +0 -0
  324. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_core_headless.py +0 -0
  325. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_runtime.py +0 -0
  326. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_test_harness.py +0 -0
  327. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_tools.py +0 -0
  328. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/interactive_tui.py +0 -0
  329. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/jobs.py +0 -0
  330. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/knowledge.py +0 -0
  331. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/knowledge_cli.py +0 -0
  332. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lite.py +0 -0
  333. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/logs.py +0 -0
  334. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lsp_cli.py +0 -0
  335. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  336. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/mcp.py +0 -0
  337. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/message_queue.py +0 -0
  338. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/metrics.py +0 -0
  339. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migrate.py +0 -0
  340. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migration_flow.py +0 -0
  341. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/migration_spec.py +0 -0
  342. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/n8n.py +0 -0
  343. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/observability.py +0 -0
  344. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/ollama.py +0 -0
  345. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/onboard.py +0 -0
  346. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/output_modes.py +0 -0
  347. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/output_style.py +0 -0
  348. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/package.py +0 -0
  349. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/performance.py +0 -0
  350. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/persistence.py +0 -0
  351. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/plugin_cli.py +0 -0
  352. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profile.py +0 -0
  353. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/__init__.py +0 -0
  354. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/core.py +0 -0
  355. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/optimizations.py +0 -0
  356. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiler/suite.py +0 -0
  357. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/profiling.py +0 -0
  358. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/__init__.py +0 -0
  359. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/manager.py +0 -0
  360. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/models.py +0 -0
  361. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/persistence.py +0 -0
  362. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/scheduler.py +0 -0
  363. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/queue/worker.py +0 -0
  364. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe.py +0 -0
  365. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_creator.py +0 -0
  366. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_optimizer.py +0 -0
  367. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipe_prompts.py +0 -0
  368. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/recipes.py +0 -0
  369. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/registry.py +0 -0
  370. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/repo_map.py +0 -0
  371. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/router.py +0 -0
  372. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/safe_shell.py +0 -0
  373. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sandbox_cli.py +0 -0
  374. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sandbox_executor.py +0 -0
  375. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/sdk_knowledge.py +0 -0
  376. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/serve.py +0 -0
  377. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/session.py +0 -0
  378. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/__init__.py +0 -0
  379. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/handler.py +0 -0
  380. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/setup/templates.py +0 -0
  381. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/skills.py +0 -0
  382. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/slash_commands.py +0 -0
  383. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/telemetry.py +0 -0
  384. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/templates.py +0 -0
  385. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/thinking.py +0 -0
  386. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/todo.py +0 -0
  387. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tools.py +0 -0
  388. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/__init__.py +0 -0
  389. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/app.py +0 -0
  390. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/cli.py +0 -0
  391. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/config.py +0 -0
  392. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/debug.py +0 -0
  393. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/events.py +0 -0
  394. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/mock_provider.py +0 -0
  395. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/orchestrator.py +0 -0
  396. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  397. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/help.py +0 -0
  398. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/main.py +0 -0
  399. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/queue.py +0 -0
  400. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/session.py +0 -0
  401. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/screens/settings.py +0 -0
  402. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/session_store.py +0 -0
  403. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  404. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  405. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  406. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  407. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  408. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  409. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/status.py +0 -0
  410. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  411. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/wizard.py +0 -0
  412. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/workflow.py +0 -0
  413. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/features/yaml_utils.py +0 -0
  414. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/__init__.py +0 -0
  415. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/async_tui.py +0 -0
  416. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/config.py +0 -0
  417. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/core.py +0 -0
  418. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/events.py +0 -0
  419. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  420. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  421. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  422. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/praison_io.py +0 -0
  423. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/repl.py +0 -0
  424. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/split_tui.py +0 -0
  425. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/interactive/tui_app.py +0 -0
  426. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/langfuse_client.py +0 -0
  427. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/legacy.py +0 -0
  428. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/output/__init__.py +0 -0
  429. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/output/console.py +0 -0
  430. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/schedule_cli.py +0 -0
  431. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/schema_provider.py +0 -0
  432. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/session/__init__.py +0 -0
  433. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/__init__.py +0 -0
  434. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/identifiers.py +0 -0
  435. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/state/sessions.py +0 -0
  436. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/__init__.py +0 -0
  437. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/config.py +0 -0
  438. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/events.py +0 -0
  439. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/mg_backend.py +0 -0
  440. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/plain.py +0 -0
  441. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/ui/rich_backend.py +0 -0
  442. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli/unified_schema.py +0 -0
  443. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli_backends/claude.py +0 -0
  444. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/cli_backends/registry.py +0 -0
  445. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/__init__.py +0 -0
  446. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/agent_tools.py +0 -0
  447. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/diff/__init__.py +0 -0
  448. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/diff/diff_strategy.py +0 -0
  449. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/__init__.py +0 -0
  450. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/apply_diff.py +0 -0
  451. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/execute_command.py +0 -0
  452. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/list_files.py +0 -0
  453. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/read_file.py +0 -0
  454. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/search_replace.py +0 -0
  455. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/tools/write_file.py +0 -0
  456. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/__init__.py +0 -0
  457. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/file_utils.py +0 -0
  458. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/ignore_utils.py +0 -0
  459. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/code/utils/text_utils.py +0 -0
  460. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/__init__.py +0 -0
  461. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/artifact_store.py +0 -0
  462. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/config.py +0 -0
  463. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/history_store.py +0 -0
  464. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/queue.py +0 -0
  465. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/setup.py +0 -0
  466. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/context/terminal_logger.py +0 -0
  467. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/__init__.py +0 -0
  468. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/launchd.py +0 -0
  469. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/systemd.py +0 -0
  470. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/daemon/windows.py +0 -0
  471. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/db/__init__.py +0 -0
  472. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/db/adapter.py +0 -0
  473. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/__init__.py +0 -0
  474. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/api.py +0 -0
  475. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/docker.py +0 -0
  476. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/doctor.py +0 -0
  477. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/main.py +0 -0
  478. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/models.py +0 -0
  479. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/__init__.py +0 -0
  480. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/aws.py +0 -0
  481. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/azure.py +0 -0
  482. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/base.py +0 -0
  483. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/providers/gcp.py +0 -0
  484. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/deploy/schema.py +0 -0
  485. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/__init__.py +0 -0
  486. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/classifier.py +0 -0
  487. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/executor.py +0 -0
  488. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/extractor.py +0 -0
  489. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/reporter.py +0 -0
  490. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/runner.py +0 -0
  491. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/docs_runner/workspace.py +0 -0
  492. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/__init__.py +0 -0
  493. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/a2u_server.py +0 -0
  494. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/discovery.py +0 -0
  495. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/__init__.py +0 -0
  496. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/a2a.py +0 -0
  497. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/a2u.py +0 -0
  498. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/agents_api.py +0 -0
  499. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/base.py +0 -0
  500. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/mcp.py +0 -0
  501. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/recipe.py +0 -0
  502. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  503. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/endpoints/server.py +0 -0
  504. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/__init__.py +0 -0
  505. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/client.py +0 -0
  506. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  507. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  508. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/components/__init__.py +0 -0
  509. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/converter.py +0 -0
  510. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/flow/helpers.py +0 -0
  511. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/__init__.py +0 -0
  512. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  513. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  514. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/registry.py +0 -0
  515. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/framework_adapters/validators.py +0 -0
  516. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/__init__.py +0 -0
  517. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/auth.py +0 -0
  518. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/cookie_auth.py +0 -0
  519. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/exec_approval.py +0 -0
  520. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/gateway_approval.py +0 -0
  521. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/kanban_dispatcher.py +0 -0
  522. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/magic_link.py +0 -0
  523. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/origin_check.py +0 -0
  524. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/pairing.py +0 -0
  525. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/pairing_routes.py +0 -0
  526. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/port_utils.py +0 -0
  527. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_channels.py +0 -0
  528. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_delivery.py +0 -0
  529. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_polling.py +0 -0
  530. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/push_presence.py +0 -0
  531. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/rate_limiter.py +0 -0
  532. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/redis_pubsub.py +0 -0
  533. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/gateway/unicode_utils.py +0 -0
  534. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inbuilt_tools/__init__.py +0 -0
  535. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  536. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/__init__.py +0 -0
  537. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/config.py +0 -0
  538. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/inc/models.py +0 -0
  539. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/__init__.py +0 -0
  540. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/_legacy_handlers.py +0 -0
  541. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/__init__.py +0 -0
  542. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  543. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/hooks_query.py +0 -0
  544. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  545. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/schedules_runner.py +0 -0
  546. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/usage_bridge.py +0 -0
  547. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/bridges/workflows_service.py +0 -0
  548. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/context_files.py +0 -0
  549. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/gateway_host.py +0 -0
  550. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/host_app.py +0 -0
  551. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/__init__.py +0 -0
  552. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/bot_health.py +0 -0
  553. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integration/pages/workflow_runs.py +0 -0
  554. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/__init__.py +0 -0
  555. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_session_info.py +0 -0
  556. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_tool_aliases.py +0 -0
  557. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/_unified_registry.py +0 -0
  558. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/base.py +0 -0
  559. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/claude_code.py +0 -0
  560. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/codex_cli.py +0 -0
  561. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/__init__.py +0 -0
  562. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/daytona.py +0 -0
  563. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/docker.py +0 -0
  564. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/e2b.py +0 -0
  565. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/flyio.py +0 -0
  566. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/local.py +0 -0
  567. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/compute/modal_compute.py +0 -0
  568. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/cursor_cli.py +0 -0
  569. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/db_session_adapter.py +0 -0
  570. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/gemini_cli.py +0 -0
  571. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/hosted_agent.py +0 -0
  572. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/local_agent.py +0 -0
  573. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/managed_agents.py +0 -0
  574. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/managed_local.py +0 -0
  575. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/registry.py +0 -0
  576. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/integrations/sandboxed_agent.py +0 -0
  577. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/__init__.py +0 -0
  578. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/executor.py +0 -0
  579. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/models.py +0 -0
  580. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/router.py +0 -0
  581. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/server.py +0 -0
  582. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/jobs/store.py +0 -0
  583. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/__init__.py +0 -0
  584. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/models.py +0 -0
  585. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/paths.py +0 -0
  586. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/kanban/sqlite_store.py +0 -0
  587. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/__init__.py +0 -0
  588. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/env.py +0 -0
  589. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/llm/registry.py +0 -0
  590. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/__init__.py +0 -0
  591. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/__init__.py +0 -0
  592. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/agents.py +0 -0
  593. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  594. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  595. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  596. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  597. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/memory.py +0 -0
  598. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/prompts.py +0 -0
  599. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/resources.py +0 -0
  600. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  601. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/__init__.py +0 -0
  602. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/api_key.py +0 -0
  603. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/oauth.py +0 -0
  604. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/oidc.py +0 -0
  605. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/auth/scopes.py +0 -0
  606. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/cli.py +0 -0
  607. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/elicitation.py +0 -0
  608. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/icons.py +0 -0
  609. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/recipe_adapter.py +0 -0
  610. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/recipe_cli.py +0 -0
  611. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/registry.py +0 -0
  612. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/sampling.py +0 -0
  613. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/server.py +0 -0
  614. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/tasks.py +0 -0
  615. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/tool_index.py +0 -0
  616. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/__init__.py +0 -0
  617. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/http_stream.py +0 -0
  618. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/mcp_server/transports/stdio.py +0 -0
  619. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/__init__.py +0 -0
  620. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/client.py +0 -0
  621. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/converter.py +0 -0
  622. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/preview.py +0 -0
  623. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/n8n/reverse_converter.py +0 -0
  624. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/__init__.py +0 -0
  625. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/hooks.py +0 -0
  626. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/langextract.py +0 -0
  627. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/observability/langfuse.py +0 -0
  628. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/__init__.py +0 -0
  629. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/_valkey_client.py +0 -0
  630. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/config.py +0 -0
  631. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/__init__.py +0 -0
  632. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_mysql.py +0 -0
  633. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_postgres.py +0 -0
  634. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  635. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/base.py +0 -0
  636. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/json_store.py +0 -0
  637. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/mysql.py +0 -0
  638. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/postgres.py +0 -0
  639. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/singlestore.py +0 -0
  640. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/sqlite.py +0 -0
  641. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/supabase.py +0 -0
  642. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/surrealdb.py +0 -0
  643. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  644. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/conversation/turso.py +0 -0
  645. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/factory.py +0 -0
  646. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/hooks/__init__.py +0 -0
  647. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  648. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/__init__.py +0 -0
  649. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/base.py +0 -0
  650. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/cassandra.py +0 -0
  651. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/chroma.py +0 -0
  652. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  653. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  654. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/couchbase.py +0 -0
  655. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/lancedb.py +0 -0
  656. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  657. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  658. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  659. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/milvus.py +0 -0
  660. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  661. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/pgvector.py +0 -0
  662. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/pinecone.py +0 -0
  663. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/qdrant.py +0 -0
  664. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  665. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  666. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  667. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  668. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  669. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/knowledge/weaviate.py +0 -0
  670. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/migrations/__init__.py +0 -0
  671. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/migrations/manager.py +0 -0
  672. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/orchestrator.py +0 -0
  673. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/registry.py +0 -0
  674. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/__init__.py +0 -0
  675. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/async_mongodb.py +0 -0
  676. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/base.py +0 -0
  677. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/dynamodb.py +0 -0
  678. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/firestore.py +0 -0
  679. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/gcs.py +0 -0
  680. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/memory.py +0 -0
  681. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/mongodb.py +0 -0
  682. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/redis.py +0 -0
  683. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/upstash.py +0 -0
  684. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/state/valkey.py +0 -0
  685. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/__init__.py +0 -0
  686. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/test_all_backends.py +0 -0
  687. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  688. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/profiler.py +0 -0
  689. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/__init__.py +0 -0
  690. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/client.py +0 -0
  691. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/push/transports.py +0 -0
  692. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/__init__.py +0 -0
  693. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/bridge.py +0 -0
  694. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/core.py +0 -0
  695. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/exceptions.py +0 -0
  696. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/history.py +0 -0
  697. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/models.py +0 -0
  698. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/operations.py +0 -0
  699. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/policy.py +0 -0
  700. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/registry.py +0 -0
  701. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/runtime.py +0 -0
  702. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/security.py +0 -0
  703. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/serve.py +0 -0
  704. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/recipe/server.py +0 -0
  705. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/__init__.py +0 -0
  706. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/analyzer.py +0 -0
  707. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/applier.py +0 -0
  708. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/judge.py +0 -0
  709. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/plan.py +0 -0
  710. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/player.py +0 -0
  711. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/reader.py +0 -0
  712. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/storage.py +0 -0
  713. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/replay/writer.py +0 -0
  714. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/__init__.py +0 -0
  715. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/_shell.py +0 -0
  716. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/daytona.py +0 -0
  717. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/e2b.py +0 -0
  718. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/modal.py +0 -0
  719. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/sandlock.py +0 -0
  720. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/sandbox/ssh.py +0 -0
  721. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/__init__.py +0 -0
  722. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/executor.py +0 -0
  723. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/shared.py +0 -0
  724. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/state_manager.py +0 -0
  725. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/scheduler/yaml_loader.py +0 -0
  726. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/__init__.py +0 -0
  727. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/audit.py +0 -0
  728. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/injection.py +0 -0
  729. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/security/protected.py +0 -0
  730. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/__init__.py +0 -0
  731. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/build.py +0 -0
  732. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/post_install.py +0 -0
  733. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup/setup_conda_env.py +0 -0
  734. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/setup.py +0 -0
  735. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/__init__.py +0 -0
  736. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/ai_generator.py +0 -0
  737. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/config.py +0 -0
  738. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/dedupe.py +0 -0
  739. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/discovery.py +0 -0
  740. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/drift.py +0 -0
  741. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/engine.py +0 -0
  742. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/enhanced_templates.py +0 -0
  743. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/example_verifier.py +0 -0
  744. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/manifest.py +0 -0
  745. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/models.py +0 -0
  746. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/reports.py +0 -0
  747. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/templates.py +0 -0
  748. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/undo_redo.py +0 -0
  749. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/standardise/validator.py +0 -0
  750. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/__init__.py +0 -0
  751. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/dynamodb_adapter.py +0 -0
  752. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/mongodb_adapter.py +0 -0
  753. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/postgresql_adapter.py +0 -0
  754. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/redis_adapter.py +0 -0
  755. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/storage/valkey_adapter.py +0 -0
  756. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/__init__.py +0 -0
  757. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/batch_source.py +0 -0
  758. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/cli_docs_source.py +0 -0
  759. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/discovery.py +0 -0
  760. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/docs_source.py +0 -0
  761. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/examples_source.py +0 -0
  762. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/executor.py +0 -0
  763. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/models.py +0 -0
  764. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/report_viewer.py +0 -0
  765. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/reporter.py +0 -0
  766. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/suite_runner/runner.py +0 -0
  767. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/__init__.py +0 -0
  768. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/cache.py +0 -0
  769. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/dependency_checker.py +0 -0
  770. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/discovery.py +0 -0
  771. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/loader.py +0 -0
  772. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/registry.py +0 -0
  773. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/resolver.py +0 -0
  774. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/security.py +0 -0
  775. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/tool_override.py +0 -0
  776. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/templates/tools_doctor.py +0 -0
  777. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/test.py +0 -0
  778. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tool_registry.py +0 -0
  779. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/__init__.py +0 -0
  780. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/audio.py +0 -0
  781. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/glob_tool.py +0 -0
  782. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/grep_tool.py +0 -0
  783. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/kanban_tools.py +0 -0
  784. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/multiedit.py +0 -0
  785. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/tools/skill_manage.py +0 -0
  786. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/__init__.py +0 -0
  787. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/_ollama.py +0 -0
  788. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/__init__.py +0 -0
  789. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/grader.py +0 -0
  790. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/hook.py +0 -0
  791. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/models.py +0 -0
  792. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/orchestrator.py +0 -0
  793. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/agents/storage.py +0 -0
  794. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train/llm/__init__.py +0 -0
  795. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train.py +0 -0
  796. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/train_vision.py +0 -0
  797. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/_aiui_datastore.py +0 -0
  798. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/_external_agents.py +0 -0
  799. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/callbacks.py +0 -0
  800. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/components/aicoder.py +0 -0
  801. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/context.py +0 -0
  802. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui/database_config.py +0 -0
  803. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_agents/__init__.py +0 -0
  804. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_agents/default_app.py +0 -0
  805. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_bot/__init__.py +0 -0
  806. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_bot/default_app.py +0 -0
  807. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_chat/__init__.py +0 -0
  808. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_chat/default_app.py +0 -0
  809. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_dashboard/default_app.py +0 -0
  810. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_realtime/__init__.py +0 -0
  811. {praisonai-4.6.51 → praisonai-4.6.53}/praisonai/ui_realtime/default_app.py +0 -0
  812. {praisonai-4.6.51 → praisonai-4.6.53}/setup.cfg +0 -0
  813. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test.py +0 -0
  814. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_agents_playbook.py +0 -0
  815. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_approval_system.py +0 -0
  816. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_basic.py +0 -0
  817. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_cli_features.py +0 -0
  818. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_custom_tools_fix.py +0 -0
  819. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_double_api_fix.py +0 -0
  820. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_agent_invoke.py +0 -0
  821. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_cli_feature.py +0 -0
  822. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_n8n_integration.py +0 -0
  823. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_phase2_refactor.py +0 -0
  824. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_recipe.py +0 -0
  825. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_registry.py +0 -0
  826. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_runner.py +0 -0
  827. {praisonai-4.6.51 → praisonai-4.6.53}/tests/test_sandboxed_agent_compatibility.py +0 -0
  828. {praisonai-4.6.51 → praisonai-4.6.53}/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.51
3
+ Version: 4.6.53
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.51
14
+ Requires-Dist: praisonaiagents>=1.6.53
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.51
3
+ Version: 4.6.53
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.51
14
+ Requires-Dist: praisonaiagents>=1.6.53
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
@@ -710,6 +710,7 @@ praisonai/sandbox/sandlock.py
710
710
  praisonai/sandbox/ssh.py
711
711
  praisonai/sandbox/subprocess.py
712
712
  praisonai/scheduler/__init__.py
713
+ praisonai/scheduler/_base_scheduler.py
713
714
  praisonai/scheduler/agent_scheduler.py
714
715
  praisonai/scheduler/async_agent_scheduler.py
715
716
  praisonai/scheduler/base.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.51
4
+ praisonaiagents>=1.6.53
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -65,9 +65,32 @@ async def arun(agent_file: str,
65
65
  tools: list | None = None,
66
66
  agent_yaml: str | None = None,
67
67
  cli_config: dict | None = None) -> str:
68
- """Async equivalent of `run()` for FastAPI / Jupyter async callers."""
69
- import asyncio
70
- return await asyncio.to_thread(
71
- run, agent_file, framework,
72
- tools=tools, agent_yaml=agent_yaml, cli_config=cli_config,
73
- )
68
+ """Async equivalent of `run()` using native async framework adapters."""
69
+ from .agents_generator import AgentsGenerator
70
+ from ._framework_availability import is_available
71
+
72
+ if framework is None:
73
+ # Mirror the CLI default-resolution order
74
+ for candidate in ("crewai", "praisonaiagents", "autogen", "ag2"):
75
+ if is_available(candidate):
76
+ framework = "praisonai" if candidate == "praisonaiagents" else candidate
77
+ break
78
+ else:
79
+ raise RuntimeError(
80
+ "No supported framework installed. "
81
+ "Install one of: crewai, praisonaiagents, autogen, ag2."
82
+ )
83
+ else:
84
+ # Validate explicit framework like CLI does
85
+ from .framework_adapters.validators import assert_framework_available
86
+ assert_framework_available(framework)
87
+
88
+ gen = AgentsGenerator(
89
+ agent_file=agent_file,
90
+ framework=framework,
91
+ config_list=_build_config_list(),
92
+ tools=tools,
93
+ agent_yaml=agent_yaml,
94
+ cli_config=cli_config,
95
+ )
96
+ return await gen.agenerate_crew_and_kickoff()
@@ -24,39 +24,23 @@ class Agent(CoreAgent):
24
24
  *args: Positional arguments for core Agent
25
25
  cli_backend: CLI backend for delegating full turns. Accepts:
26
26
  - str: Backend ID ("claude-code", "codex-cli") - resolved in wrapper
27
+ - dict: Backend config {"id": "claude-code", "overrides": {...}}
27
28
  - CliBackendProtocol: Pre-resolved backend instance
28
29
  - callable: Factory function returning CliBackendProtocol
29
30
  - None: No CLI backend
30
31
  **kwargs: Keyword arguments for core Agent
31
32
  """
32
- # Resolve string CLI backends to instances in wrapper layer
33
- if isinstance(cli_backend, str):
34
- cli_backend = self._resolve_string_backend(cli_backend)
33
+ # Resolve CLI backend configuration using unified resolver
34
+ if cli_backend is not None and not self._is_protocol_instance(cli_backend):
35
+ from .cli_backends import resolve_cli_backend_config
36
+ cli_backend = resolve_cli_backend_config(cli_backend)
35
37
 
36
38
  # Pass resolved backend to core Agent
37
39
  super().__init__(*args, cli_backend=cli_backend, **kwargs)
38
40
 
39
- def _resolve_string_backend(self, backend_id: str) -> Any:
40
- """Resolve string backend ID to CliBackendProtocol instance.
41
-
42
- Args:
43
- backend_id: Backend identifier (e.g., "claude-code")
44
-
45
- Returns:
46
- CliBackendProtocol instance
47
-
48
- Raises:
49
- ImportError: If CLI backends module not available
50
- ValueError: If backend_id is not registered
51
- """
52
- try:
53
- from .cli_backends import resolve_cli_backend
54
- return resolve_cli_backend(backend_id)
55
- except ImportError:
56
- raise ImportError(
57
- f"CLI backend '{backend_id}' requested but CLI backends not available. "
58
- "This may indicate a packaging or installation issue."
59
- )
41
+ def _is_protocol_instance(self, obj) -> bool:
42
+ """Check if object appears to be a protocol instance (duck typing)."""
43
+ return callable(obj) or hasattr(obj, 'process_turn')
60
44
 
61
45
 
62
46
  # Export the wrapper Agent as the default for import from praisonai
@@ -62,45 +62,6 @@ def __dir__():
62
62
  # Note: OTEL_SDK_DISABLED moved to CLI entry point per issue requirements
63
63
 
64
64
 
65
- def safe_format(template: str, **kwargs) -> str:
66
- """
67
- Safely format a string template, preserving JSON-like curly braces.
68
-
69
- This handles cases where templates contain Gutenberg block syntax like
70
- {"level":2} which would cause KeyError with standard .format().
71
-
72
- Uses a two-pass approach:
73
- 1. Escape all {{ and }} (already escaped braces)
74
- 2. Only substitute known variable placeholders
75
-
76
- Args:
77
- template: String template with {variable} placeholders
78
- **kwargs: Variable substitutions to apply
79
-
80
- Returns:
81
- Formatted string with variables substituted and JSON preserved
82
-
83
- Example:
84
- >>> safe_format('Use <!-- wp:heading {"level":2} --> for {topic}', topic='AI')
85
- 'Use <!-- wp:heading {"level":2} --> for AI'
86
- """
87
- import re
88
-
89
- # Pattern to match {word} but not {"key": or {number} patterns
90
- # This matches simple variable names like {topic}, {style}, etc.
91
- def replace_var(match):
92
- var_name = match.group(1)
93
- if var_name in kwargs:
94
- return str(kwargs[var_name])
95
- # If not in kwargs, leave it as-is (don't raise KeyError)
96
- return match.group(0)
97
-
98
- # Match {variable_name} where variable_name is a valid Python identifier
99
- # but NOT {" (JSON start) or {number (like {2})
100
- pattern = r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}'
101
-
102
- return re.sub(pattern, replace_var, template)
103
-
104
65
 
105
66
  def _wrap_with_timeout(tool, timeout_seconds: float):
106
67
  """Enforce per-call timeout on a tool, sync or async, without
@@ -208,47 +169,10 @@ def sanitize_agent_name_for_autogen_v4(name):
208
169
 
209
170
  def _resolve_yaml_cli_backend(cli_backend_config, logger):
210
171
  """Resolve a YAML ``cli_backend`` field to a CliBackendProtocol instance.
211
-
212
- Accepts ``None`` (no backend), a string id (e.g. ``"claude-code"``), or a
213
- dict of shape ``{"id": "claude-code", "overrides": {...}}``. Returns
214
- ``None`` on any error after logging a warning, so YAML parsing never raises.
215
-
216
- Kept at module scope so it is unit-testable without constructing a full
217
- ``AgentsGenerator`` instance.
172
+ Deprecated wrapper. Use praisonai.cli_backends.resolve_cli_backend_config directly.
218
173
  """
219
- if not cli_backend_config:
220
- return None
221
-
222
- # Pre-seed label from config before import so we can show it in error logs
223
- if isinstance(cli_backend_config, str):
224
- label = cli_backend_config
225
- elif isinstance(cli_backend_config, dict):
226
- label = cli_backend_config.get('id') or "<missing>"
227
- else:
228
- label = type(cli_backend_config).__name__
229
-
230
- try:
231
- from praisonai.cli_backends import resolve_cli_backend
232
- if isinstance(cli_backend_config, str):
233
- return resolve_cli_backend(cli_backend_config)
234
- if isinstance(cli_backend_config, dict):
235
- backend_id = cli_backend_config.get('id')
236
- if not backend_id:
237
- raise ValueError("cli_backend dict must contain an 'id' field")
238
- overrides = cli_backend_config.get('overrides') or {}
239
- return resolve_cli_backend(backend_id, overrides=overrides)
240
- raise ValueError(
241
- f"cli_backend must be string or dict, got: {type(cli_backend_config).__name__}"
242
- )
243
- except ImportError:
244
- logger.warning(
245
- "CLI backend '%s' requested but not available", label
246
- )
247
- except Exception as e:
248
- logger.warning(
249
- "Failed to resolve CLI backend '%s': %s", label, e
250
- )
251
- return None
174
+ from praisonai.cli_backends import resolve_cli_backend_config
175
+ return resolve_cli_backend_config(cli_backend_config)
252
176
 
253
177
 
254
178
  class AgentsGenerator:
@@ -419,6 +343,27 @@ class AgentsGenerator:
419
343
  agent_config[field] = value
420
344
  self.logger.debug(f"CLI override for agent {agent_name}: {field} = {value}")
421
345
 
346
+ def _validate_cli_backend_compatibility(self, config, framework):
347
+ """Validate that cli_backend is only used with compatible frameworks."""
348
+ # Check if any agent/role defines cli_backend (support both key names)
349
+ all_entities = {
350
+ **config.get('roles', {}),
351
+ **config.get('agents', {}),
352
+ }
353
+ has_cli_backend = any(
354
+ isinstance(details, dict) and details.get('cli_backend')
355
+ for details in all_entities.values()
356
+ )
357
+
358
+ if has_cli_backend and framework != 'praisonai':
359
+ self.logger.error(
360
+ f"cli_backend is not supported for framework='{framework}'. "
361
+ f"Remove cli_backend from your YAML or switch to framework='praisonai'."
362
+ )
363
+ raise ValueError(
364
+ f"cli_backend requires framework='praisonai', but framework='{framework}' was specified"
365
+ )
366
+
422
367
  def _validate_agents_config(self, config):
423
368
  """
424
369
  Validate agent configuration for typos in field names and provide suggestions.
@@ -427,7 +372,7 @@ class AgentsGenerator:
427
372
  config (dict): The parsed YAML configuration
428
373
  """
429
374
  known_fields = {
430
- 'role', 'goal', 'instructions', 'backstory', 'tools', 'tasks', 'llm',
375
+ 'role', 'goal', 'instructions', 'backstory', 'tools', 'toolsets', 'tasks', 'llm',
431
376
  'function_calling_llm', 'allow_delegation', 'max_iter', 'max_rpm',
432
377
  'max_execution_time', 'verbose', 'cache', 'system_template',
433
378
  'prompt_template', 'response_template', 'tool_timeout', 'planning_tools',
@@ -567,17 +512,26 @@ class AgentsGenerator:
567
512
  # Route to YAMLWorkflowParser for advanced workflow patterns
568
513
  return self._run_yaml_workflow(config)
569
514
 
515
+ config, adapter, tools_dict, topic = self._prepare(config)
516
+ return adapter.run(
517
+ config,
518
+ self.config_list,
519
+ topic,
520
+ tools_dict=tools_dict,
521
+ agent_callback=getattr(self, 'agent_callback', None),
522
+ task_callback=getattr(self, 'task_callback', None),
523
+ cli_config=getattr(self, 'cli_config', None),
524
+ )
525
+
526
+ def _prepare(self, config):
527
+ """Shared preparation logic for both sync and async entry points."""
570
528
  # Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
571
- # This ensures backward compatibility while supporting the new canonical format
572
529
  if 'agents' in config and 'roles' not in config:
573
530
  config['roles'] = {}
574
531
  for agent_name, agent_config in config['agents'].items():
575
532
  role_config = dict(agent_config) if agent_config else {}
576
- # Convert 'instructions' to 'backstory' if present
577
- # Note: preserve 'instructions' key for adapters that pass it to PraisonAgent
578
533
  if 'instructions' in role_config and 'backstory' not in role_config:
579
534
  role_config['backstory'] = role_config['instructions']
580
- # Ensure required fields have defaults
581
535
  if 'role' not in role_config:
582
536
  role_config['role'] = agent_name.replace('_', ' ').title()
583
537
  if 'goal' not in role_config:
@@ -613,25 +567,20 @@ class AgentsGenerator:
613
567
  # Resolve only the tools actually referenced in YAML
614
568
  for tool_name in needed_tools:
615
569
  try:
616
- resolved_tool = self.tool_resolver.resolve(tool_name)
617
- if resolved_tool is None:
618
- self.logger.warning(f"Tool '{tool_name}' not found")
619
- continue
620
- tools_dict[tool_name] = (
621
- resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
622
- )
570
+ resolved_tool = self.tool_resolver.resolve(tool_name, instantiate=True)
571
+ if resolved_tool is not None:
572
+ tools_dict[tool_name] = resolved_tool
623
573
  except Exception as e:
624
574
  self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
625
575
  continue
626
-
576
+
627
577
  except Exception as e:
628
578
  self.logger.warning(f"Error collecting YAML tool references: {e}")
629
-
579
+
630
580
  # Add tools from class names - use tool_resolver to check tool validity
631
581
  for tool_class in self.tools:
632
582
  if isinstance(tool_class, type):
633
583
  try:
634
- # Try to instantiate the tool to validate it
635
584
  tool_instance = tool_class()
636
585
  tool_name = tool_class.__name__
637
586
  tools_dict[tool_name] = tool_instance
@@ -642,7 +591,7 @@ class AgentsGenerator:
642
591
  root_directory = os.getcwd()
643
592
  tools_py_path = os.path.join(root_directory, 'tools.py')
644
593
  tools_dir_path = Path(root_directory) / 'tools'
645
-
594
+
646
595
  # Use consolidated ToolResolver for tools.py loading
647
596
  tools_dict.update(self.tool_resolver.get_local_tool_classes())
648
597
  if os.path.isfile(tools_py_path):
@@ -654,9 +603,32 @@ class AgentsGenerator:
654
603
 
655
604
  framework = self.framework or config.get('framework', 'crewai')
656
605
 
657
- # Get initial adapter and resolve to concrete variant
658
- initial_adapter = self._get_framework_adapter(framework)
659
- adapter = initial_adapter.resolve()
606
+ # AutoGen version selection logic
607
+ if framework == "autogen":
608
+ autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
609
+ autogen_v2_adapter = self._get_framework_adapter("autogen")
610
+
611
+ autogen_version = str(
612
+ config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
613
+ ).lower()
614
+ use_v4 = False
615
+
616
+ if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
617
+ use_v4 = True
618
+ elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
619
+ use_v4 = False
620
+ elif autogen_version == "auto":
621
+ use_v4 = autogen_v4_adapter.is_available()
622
+ else:
623
+ use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
624
+
625
+ framework = "autogen_v4" if use_v4 else "autogen"
626
+
627
+ # Validate cli_backend compatibility
628
+ self._validate_cli_backend_compatibility(config, framework)
629
+
630
+ # Get framework adapter and resolve to concrete variant
631
+ adapter = self._get_framework_adapter(framework).resolve()
660
632
 
661
633
  # Validate framework availability early
662
634
  from .framework_adapters.validators import assert_framework_available
@@ -674,15 +646,7 @@ class AgentsGenerator:
674
646
  self.framework_adapter = adapter
675
647
 
676
648
  self.logger.info(f"Using framework: {adapter.name}")
677
- return adapter.run(
678
- config,
679
- self.config_list,
680
- topic,
681
- tools_dict=tools_dict,
682
- agent_callback=getattr(self, 'agent_callback', None),
683
- task_callback=getattr(self, 'task_callback', None),
684
- cli_config=getattr(self, 'cli_config', None),
685
- )
649
+ return config, adapter, tools_dict, topic
686
650
 
687
651
  async def agenerate_crew_and_kickoff(self):
688
652
  """
@@ -718,129 +682,8 @@ class AgentsGenerator:
718
682
 
719
683
  async def _arun_framework(self, config):
720
684
  """Async version of _run_framework with shared preparation logic."""
721
- # Canonical format conversion: 'agents' -> 'roles', 'instructions' -> 'backstory'
722
- if 'agents' in config and 'roles' not in config:
723
- config['roles'] = {}
724
- for agent_name, agent_config in config['agents'].items():
725
- role_config = dict(agent_config) if agent_config else {}
726
- if 'instructions' in role_config and 'backstory' not in role_config:
727
- role_config['backstory'] = role_config['instructions']
728
- if 'role' not in role_config:
729
- role_config['role'] = agent_name.replace('_', ' ').title()
730
- if 'goal' not in role_config:
731
- role_config['goal'] = role_config.get('backstory', 'Complete the assigned task')
732
- if 'backstory' not in role_config:
733
- role_config['backstory'] = f'You are a {role_config["role"]}'
734
- config['roles'][agent_name] = role_config
735
-
736
- # Get workflow input: 'input' is canonical, 'topic' is alias for backward compatibility
737
- topic = config.get('input', config.get('topic', ''))
738
-
739
- # Validate agents configuration for typos in field names
740
- self._validate_agents_config(config)
741
-
742
- tools_dict = {}
743
-
744
- # Demand-driven tool resolution - only resolve tools actually used in YAML
745
- if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
746
- try:
747
- # Collect all tool names mentioned in the YAML config
748
- needed_tools: set[str] = set()
749
- for role_cfg in config.get('roles', {}).values():
750
- for t in role_cfg.get('tools') or []:
751
- if isinstance(t, str) and t.strip():
752
- needed_tools.add(t.strip())
753
- for task_cfg in (role_cfg.get('tasks') or {}).values():
754
- if not isinstance(task_cfg, dict):
755
- continue
756
- for t in task_cfg.get('tools') or []:
757
- if isinstance(t, str) and t.strip():
758
- needed_tools.add(t.strip())
759
-
760
- # Resolve only the tools actually referenced in YAML
761
- for tool_name in needed_tools:
762
- try:
763
- resolved_tool = self.tool_resolver.resolve(tool_name)
764
- if resolved_tool is None:
765
- self.logger.warning(f"Tool '{tool_name}' not found")
766
- continue
767
- tools_dict[tool_name] = (
768
- resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
769
- )
770
- except Exception as e:
771
- self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
772
- continue
773
-
774
- except Exception as e:
775
- self.logger.warning(f"Error collecting YAML tool references: {e}")
776
-
777
- # Add tools from class names - use tool_resolver to check tool validity
778
- for tool_class in self.tools:
779
- if isinstance(tool_class, type):
780
- try:
781
- tool_instance = tool_class()
782
- tool_name = tool_class.__name__
783
- tools_dict[tool_name] = tool_instance
784
- self.logger.debug(f"Added tool: {tool_name}")
785
- except Exception as e:
786
- self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
787
-
788
- root_directory = os.getcwd()
789
- tools_py_path = os.path.join(root_directory, 'tools.py')
790
- tools_dir_path = Path(root_directory) / 'tools'
791
-
792
- # Use consolidated ToolResolver for tools.py loading
793
- tools_dict.update(self.tool_resolver.get_local_tool_classes())
794
- if os.path.isfile(tools_py_path):
795
- self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
796
- elif tools_dir_path.is_dir():
797
- tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
798
- if tools_dict:
799
- self.logger.debug("tools folder exists in the root directory")
800
-
801
- framework = self.framework or config.get('framework', 'crewai')
802
-
803
- # AutoGen version selection logic
804
- if framework == "autogen":
805
- autogen_v4_adapter = self._get_framework_adapter("autogen_v4")
806
- autogen_v2_adapter = self._get_framework_adapter("autogen")
807
-
808
- autogen_version = str(
809
- config.get('autogen_version', os.environ.get("AUTOGEN_VERSION", "auto"))
810
- ).lower()
811
- use_v4 = False
812
-
813
- if autogen_version == "v0.4" and autogen_v4_adapter.is_available():
814
- use_v4 = True
815
- elif autogen_version == "v0.2" and autogen_v2_adapter.is_available():
816
- use_v4 = False
817
- elif autogen_version == "auto":
818
- use_v4 = autogen_v4_adapter.is_available()
819
- else:
820
- use_v4 = autogen_v4_adapter.is_available() and not autogen_v2_adapter.is_available()
821
-
822
- framework = "autogen_v4" if use_v4 else "autogen"
823
-
824
- # Initialize AgentOps if configured
825
- agentops_api_key = os.getenv("AGENTOPS_API_KEY")
826
- if agentops_api_key:
827
- try:
828
- import agentops
829
- agentops.init(agentops_api_key, default_tags=[framework])
830
- except ImportError:
831
- pass
832
-
833
- # Update framework adapter if framework changed
834
- if framework != self.framework:
835
- self.framework = framework
836
- self.framework_adapter = self._get_framework_adapter(framework)
837
-
838
- # Validate framework availability
839
- from .framework_adapters.validators import assert_framework_available
840
- assert_framework_available(framework)
841
-
842
- self.logger.info(f"Using framework: {framework}")
843
- return await self.framework_adapter.arun(
685
+ config, adapter, tools_dict, topic = self._prepare(config)
686
+ return await adapter.arun(
844
687
  config,
845
688
  self.config_list,
846
689
  topic,
@@ -851,10 +694,58 @@ class AgentsGenerator:
851
694
  )
852
695
 
853
696
  async def _arun_yaml_workflow(self, config):
854
- """Async placeholder for workflow mode - currently delegates to sync version."""
855
- # For now, delegate to sync version using asyncio.to_thread
856
- import asyncio
857
- return await asyncio.to_thread(self._run_yaml_workflow, config)
697
+ """
698
+ Async version of _run_yaml_workflow using YAMLWorkflowParser.
699
+
700
+ This method handles agents.yaml files that have:
701
+ - process: workflow
702
+
703
+ Args:
704
+ config: YAML configuration dictionary
705
+
706
+ Returns:
707
+ str: Workflow execution result
708
+ """
709
+ if not is_available("praisonaiagents"):
710
+ raise ImportError("PraisonAI is not installed. Please install it with 'pip install praisonaiagents'")
711
+
712
+ try:
713
+ from praisonaiagents.workflows import YAMLWorkflowParser
714
+ except ImportError as err:
715
+ raise ImportError("YAMLWorkflowParser not available. Please update praisonaiagents.") from err
716
+
717
+ # Ensure name is present
718
+ if 'name' not in config:
719
+ config['name'] = config.get('topic', 'Workflow')
720
+
721
+ # Pass model from config_list to workflow as default_llm
722
+ if self.config_list and self.config_list[0].get('model'):
723
+ model_from_cli = self.config_list[0]['model']
724
+ if 'workflow' not in config:
725
+ config['workflow'] = {}
726
+ if 'default_llm' not in config['workflow']:
727
+ config['workflow']['default_llm'] = model_from_cli
728
+
729
+ import yaml as yaml_module
730
+ yaml_content = yaml_module.dump(config, default_flow_style=False)
731
+
732
+ parser = YAMLWorkflowParser()
733
+ workflow = parser.parse_string(yaml_content)
734
+
735
+ input_data = config.get('input', config.get('topic', ''))
736
+
737
+ self.logger.info(f"Starting async YAML workflow with topic: {input_data}")
738
+
739
+ if hasattr(workflow, 'astart'):
740
+ result = await workflow.astart(input_data)
741
+ else:
742
+ import asyncio
743
+ result = await asyncio.to_thread(workflow.start, input_data)
744
+
745
+ if result.get("status") == "completed":
746
+ return result.get("output", "Workflow completed successfully")
747
+ else:
748
+ return f"Workflow failed: {result.get('error', 'Unknown error')}"
858
749
 
859
750
  def _run_yaml_workflow(self, config):
860
751
  """
@@ -911,3 +802,27 @@ class AgentsGenerator:
911
802
  return result.get("output", "Workflow completed successfully")
912
803
  else:
913
804
  return f"Workflow failed: {result.get('error', 'Unknown error')}"
805
+
806
+
807
+ # Standalone function for backward compatibility with tests
808
+ def safe_format(template, **kwargs):
809
+ """
810
+ Safe string formatting that preserves JSON/dict literals while substituting variables.
811
+
812
+ This function only substitutes placeholders that look like identifiers (e.g., {topic})
813
+ while preserving JSON structures like {"level": 2}.
814
+
815
+ Args:
816
+ template (str): Template string with placeholders
817
+ **kwargs: Values to substitute
818
+
819
+ Returns:
820
+ str: Formatted string with safe substitutions
821
+ """
822
+ # Use the same regex-based substitution logic as BaseFrameworkAdapter._format_template
823
+ def replace_placeholder(match):
824
+ placeholder = match.group(1)
825
+ return str(kwargs.get(placeholder, match.group(0)))
826
+
827
+ # Only replace placeholders that look like identifiers
828
+ return re.sub(r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}', replace_placeholder, template)