PraisonAI 4.6.81__tar.gz → 4.6.83__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 (912) hide show
  1. {praisonai-4.6.81 → praisonai-4.6.83}/PKG-INFO +9 -4
  2. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/PKG-INFO +9 -4
  3. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/SOURCES.txt +6 -5
  4. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/requires.txt +8 -2
  5. {praisonai-4.6.81 → praisonai-4.6.83}/README.md +1 -1
  6. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_async_bridge.py +91 -2
  7. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/agents_generator.py +20 -0
  8. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/auto.py +143 -84
  9. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/__init__.py +5 -0
  10. praisonai-4.6.83/praisonai/bots/_admission.py +283 -0
  11. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_commands.py +260 -0
  12. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_delivery.py +43 -4
  13. praisonai-4.6.83/praisonai/bots/_outbound_media.py +418 -0
  14. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_outbound_messenger.py +88 -8
  15. praisonai-4.6.83/praisonai/bots/_outbound_resilience.py +146 -0
  16. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_outbox.py +19 -3
  17. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_protocol_mixin.py +39 -1
  18. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_rate_limit.py +50 -0
  19. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_resilience.py +114 -9
  20. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_session.py +145 -3
  21. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/agentmail.py +24 -10
  22. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/bot.py +17 -0
  23. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/botos.py +131 -0
  24. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/delivery.py +61 -0
  25. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/discord.py +13 -2
  26. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/email.py +14 -3
  27. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/linear.py +14 -2
  28. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/slack.py +14 -2
  29. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/whatsapp.py +38 -17
  30. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/app.py +4 -0
  31. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/checkpoint.py +24 -1
  32. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/code.py +110 -1
  33. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/config.py +1 -1
  34. praisonai-4.6.83/praisonai/cli/commands/deploy.py +71 -0
  35. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/gateway.py +178 -2
  36. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/run.py +110 -5
  37. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/serve.py +5 -1
  38. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/session.py +57 -5
  39. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/skills.py +83 -0
  40. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/resolver.py +2 -0
  41. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/checkpoints.py +7 -4
  42. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/config_hierarchy.py +54 -6
  43. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/deploy.py +88 -0
  44. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/config_checks.py +9 -2
  45. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/runtime_checks.py +28 -8
  46. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/gateway.py +187 -32
  47. praisonai-4.6.83/praisonai/cli/features/session_checkpoints.py +208 -0
  48. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/skills.py +85 -0
  49. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/thinking.py +39 -1
  50. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/main.py +315 -88
  51. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/session/resume.py +31 -0
  52. praisonai-4.6.83/praisonai/cli/state/project_sessions.py +383 -0
  53. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/db/adapter.py +124 -40
  54. praisonai-4.6.83/praisonai/framework_adapters/__init__.py +75 -0
  55. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/framework_adapters/autogen_adapter.py +113 -44
  56. praisonai-4.6.83/praisonai/framework_adapters/base.py +66 -0
  57. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/framework_adapters/crewai_adapter.py +1 -1
  58. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/framework_adapters/praisonai_adapter.py +5 -0
  59. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/framework_adapters/registry.py +76 -9
  60. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/framework_adapters/validators.py +6 -14
  61. praisonai-4.6.83/praisonai/framework_adapters/workflow_framework.py +51 -0
  62. praisonai-4.6.83/praisonai/gateway/forensics.py +201 -0
  63. praisonai-4.6.83/praisonai/gateway/kanban_dispatcher.py +797 -0
  64. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/server.py +233 -8
  65. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/kanban/__init__.py +3 -1
  66. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/kanban/models.py +110 -0
  67. praisonai-4.6.83/praisonai/kanban/sqlite_store.py +1175 -0
  68. praisonai-4.6.83/praisonai/runtime/__main__.py +81 -0
  69. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tool_resolver.py +55 -6
  70. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/kanban_tools.py +108 -14
  71. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/skill_manage.py +42 -12
  72. praisonai-4.6.83/praisonai/version.py +1 -0
  73. {praisonai-4.6.81 → praisonai-4.6.83}/pyproject.toml +13 -4
  74. praisonai-4.6.81/praisonai/cli/commands/deploy.py +0 -109
  75. praisonai-4.6.81/praisonai/cli/features/plugin_cli.py +0 -295
  76. praisonai-4.6.81/praisonai/cli/features/profile.py +0 -226
  77. praisonai-4.6.81/praisonai/cli/features/profiling.py +0 -350
  78. praisonai-4.6.81/praisonai/cli/features/recipes.py +0 -449
  79. praisonai-4.6.81/praisonai/cli/state/project_sessions.py +0 -179
  80. praisonai-4.6.81/praisonai/framework_adapters/__init__.py +0 -14
  81. praisonai-4.6.81/praisonai/framework_adapters/base.py +0 -218
  82. praisonai-4.6.81/praisonai/gateway/kanban_dispatcher.py +0 -439
  83. praisonai-4.6.81/praisonai/kanban/sqlite_store.py +0 -565
  84. praisonai-4.6.81/praisonai/runtime/__main__.py +0 -43
  85. praisonai-4.6.81/praisonai/scheduler/enhanced_executor.py +0 -232
  86. praisonai-4.6.81/praisonai/version.py +0 -1
  87. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/dependency_links.txt +0 -0
  88. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/entry_points.txt +0 -0
  89. {praisonai-4.6.81 → praisonai-4.6.83}/PraisonAI.egg-info/top_level.txt +0 -0
  90. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/__init__.py +0 -0
  91. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/__main__.py +0 -0
  92. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_approval_spec.py +0 -0
  93. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/__init__.py +0 -0
  94. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/api_md.py +0 -0
  95. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/__init__.py +0 -0
  96. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/docs_extractor.py +0 -0
  97. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/docs_generator.py +0 -0
  98. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/generator.py +0 -0
  99. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  100. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/python_extractor.py +0 -0
  101. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  102. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/rust_extractor.py +0 -0
  103. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  104. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  105. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  106. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_entrypoint.py +0 -0
  107. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_framework_availability.py +0 -0
  108. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_lazy_cache.py +0 -0
  109. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_lockmap.py +0 -0
  110. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_logging.py +0 -0
  111. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_registry.py +0 -0
  112. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/_safe_loader.py +0 -0
  113. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/acp/__init__.py +0 -0
  114. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/acp/config.py +0 -0
  115. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/acp/safe_edit.py +0 -0
  116. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/acp/server.py +0 -0
  117. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/acp/session.py +0 -0
  118. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/adapters/__init__.py +0 -0
  119. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/adapters/readers.py +0 -0
  120. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/adapters/rerankers.py +0 -0
  121. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/adapters/retrievers.py +0 -0
  122. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/adapters/vector_stores.py +0 -0
  123. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/agent.py +0 -0
  124. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/agent_scheduler.py +0 -0
  125. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/api/agent_invoke.py +0 -0
  126. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/api/call.py +0 -0
  127. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/app/__init__.py +0 -0
  128. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/app/agentos.py +0 -0
  129. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/async_agent_scheduler.py +0 -0
  130. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/audit/__init__.py +0 -0
  131. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/audit/agent_centric.py +0 -0
  132. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_ack.py +0 -0
  133. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_approval.py +0 -0
  134. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_approval_base.py +0 -0
  135. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_approval_store.py +0 -0
  136. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_auth.py +0 -0
  137. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_chunk.py +0 -0
  138. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_config_schema.py +0 -0
  139. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_correlation.py +0 -0
  140. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_debounce.py +0 -0
  141. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_defaults.py +0 -0
  142. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_discord_approval.py +0 -0
  143. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_dlq.py +0 -0
  144. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_durable_adapter.py +0 -0
  145. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_email_utils.py +0 -0
  146. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_http_approval.py +0 -0
  147. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_identity.py +0 -0
  148. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_ingress.py +0 -0
  149. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_media.py +0 -0
  150. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_metrics.py +0 -0
  151. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_mirror.py +0 -0
  152. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_pairing_ui.py +0 -0
  153. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_presentation_approval.py +0 -0
  154. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_presentation_renderer.py +0 -0
  155. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_registry.py +0 -0
  156. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_reset_policy.py +0 -0
  157. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_run_control.py +0 -0
  158. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_slack_approval.py +0 -0
  159. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_status.py +0 -0
  160. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_streaming.py +0 -0
  161. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_telegram_approval.py +0 -0
  162. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_typing.py +0 -0
  163. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_typing_indicator.py +0 -0
  164. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_unknown_user.py +0 -0
  165. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_webhook_approval.py +0 -0
  166. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  167. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/media.py +0 -0
  168. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/telegram.py +0 -0
  169. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/bots/webhook_security.py +0 -0
  170. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/__init__.py +0 -0
  171. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/agent.py +0 -0
  172. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/benchmark.py +0 -0
  173. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/cdp_agent.py +0 -0
  174. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/cdp_utils.py +0 -0
  175. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/cli.py +0 -0
  176. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/diagnostics.py +0 -0
  177. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/launcher.py +0 -0
  178. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/playwright_agent.py +0 -0
  179. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/profiling.py +0 -0
  180. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/protocol.py +0 -0
  181. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/report.py +0 -0
  182. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/server.py +0 -0
  183. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/sessions.py +0 -0
  184. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/browser/video.py +0 -0
  185. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/__init__.py +0 -0
  186. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/a2a.py +0 -0
  187. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/assistants.py +0 -0
  188. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/audio.py +0 -0
  189. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/batches.py +0 -0
  190. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/completions.py +0 -0
  191. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/container_files.py +0 -0
  192. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/containers.py +0 -0
  193. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/embeddings.py +0 -0
  194. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/files.py +0 -0
  195. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/fine_tuning.py +0 -0
  196. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/guardrails.py +0 -0
  197. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/images.py +0 -0
  198. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/mcp.py +0 -0
  199. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/messages.py +0 -0
  200. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/moderations.py +0 -0
  201. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/ocr.py +0 -0
  202. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/passthrough.py +0 -0
  203. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/rag.py +0 -0
  204. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/realtime.py +0 -0
  205. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/rerank.py +0 -0
  206. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/responses.py +0 -0
  207. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/search.py +0 -0
  208. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/skills.py +0 -0
  209. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/vector_store_files.py +0 -0
  210. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/vector_stores.py +0 -0
  211. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/capabilities/videos.py +0 -0
  212. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/claw/__init__.py +0 -0
  213. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/claw/default_app.py +0 -0
  214. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/__init__.py +0 -0
  215. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/_paths.py +0 -0
  216. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/_warnings.py +0 -0
  217. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/approval_backend.py +0 -0
  218. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/branding.py +0 -0
  219. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/__init__.py +0 -0
  220. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/acp.py +0 -0
  221. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/agent.py +0 -0
  222. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/agents.py +0 -0
  223. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/app.py +0 -0
  224. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/attach.py +0 -0
  225. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/audit.py +0 -0
  226. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/auth.py +0 -0
  227. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/batch.py +0 -0
  228. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/benchmark.py +0 -0
  229. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/bot.py +0 -0
  230. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/browser.py +0 -0
  231. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/call.py +0 -0
  232. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/chat.py +0 -0
  233. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/claw.py +0 -0
  234. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/command.py +0 -0
  235. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/commit.py +0 -0
  236. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/completion.py +0 -0
  237. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/context.py +0 -0
  238. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/daemon.py +0 -0
  239. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/dashboard.py +0 -0
  240. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/debug.py +0 -0
  241. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/diag.py +0 -0
  242. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/docs.py +0 -0
  243. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/doctor.py +0 -0
  244. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/endpoints.py +0 -0
  245. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/environment.py +0 -0
  246. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/eval.py +0 -0
  247. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/examples.py +0 -0
  248. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/flow.py +0 -0
  249. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/github.py +0 -0
  250. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/hooks.py +0 -0
  251. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/identity.py +0 -0
  252. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/init.py +0 -0
  253. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/kanban.py +0 -0
  254. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/knowledge.py +0 -0
  255. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/langextract.py +0 -0
  256. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/langfuse.py +0 -0
  257. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/loop.py +0 -0
  258. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/lsp.py +0 -0
  259. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/managed.py +0 -0
  260. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/mcp.py +0 -0
  261. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/memory.py +0 -0
  262. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/mint_link.py +0 -0
  263. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/models.py +0 -0
  264. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/n8n.py +0 -0
  265. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/obs.py +0 -0
  266. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/onboard.py +0 -0
  267. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/package.py +0 -0
  268. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/pairing.py +0 -0
  269. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/paths.py +0 -0
  270. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/permissions.py +0 -0
  271. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/plugins.py +0 -0
  272. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/port.py +0 -0
  273. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/profile.py +0 -0
  274. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/publish.py +0 -0
  275. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/rag.py +0 -0
  276. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/realtime.py +0 -0
  277. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/recipe.py +0 -0
  278. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/registry.py +0 -0
  279. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/replay.py +0 -0
  280. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/research.py +0 -0
  281. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/retrieval.py +0 -0
  282. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/rules.py +0 -0
  283. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/sandbox.py +0 -0
  284. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/schedule.py +0 -0
  285. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/setup.py +0 -0
  286. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/standardise.py +0 -0
  287. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/templates.py +0 -0
  288. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/test.py +0 -0
  289. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/todo.py +0 -0
  290. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/tools.py +0 -0
  291. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/traces.py +0 -0
  292. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/tracker.py +0 -0
  293. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/train.py +0 -0
  294. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/ui.py +0 -0
  295. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/up.py +0 -0
  296. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/validate.py +0 -0
  297. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/version.py +0 -0
  298. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/commands/workflow.py +0 -0
  299. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/config_loader.py +0 -0
  300. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/__init__.py +0 -0
  301. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/config.schema.json +0 -0
  302. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/credentials.py +0 -0
  303. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/loader.py +0 -0
  304. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/model_resolver.py +0 -0
  305. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/oauth.py +0 -0
  306. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/paths.py +0 -0
  307. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/configuration/schema.py +0 -0
  308. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/execution/__init__.py +0 -0
  309. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/execution/core.py +0 -0
  310. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/execution/profiler.py +0 -0
  311. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/execution/request.py +0 -0
  312. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/execution/result.py +0 -0
  313. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/fallback_schema.py +0 -0
  314. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/__init__.py +0 -0
  315. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/_endpoint_registry.py +0 -0
  316. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/_search_registry.py +0 -0
  317. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/acp.py +0 -0
  318. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/action_orchestrator.py +0 -0
  319. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/agent_scheduler.py +0 -0
  320. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/agent_tools.py +0 -0
  321. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/agents.py +0 -0
  322. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/approval.py +0 -0
  323. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/at_mentions.py +0 -0
  324. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/audit_cli.py +0 -0
  325. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/auto_memory.py +0 -0
  326. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/auto_mode.py +0 -0
  327. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/autonomy_mode.py +0 -0
  328. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/background.py +0 -0
  329. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/base.py +0 -0
  330. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/benchmark.py +0 -0
  331. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/bots_cli.py +0 -0
  332. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/capabilities.py +0 -0
  333. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/cli_profiler.py +0 -0
  334. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/code_intelligence.py +0 -0
  335. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/compaction.py +0 -0
  336. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/compare.py +0 -0
  337. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/context_manager.py +0 -0
  338. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/cost_tracker.py +0 -0
  339. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/csv_test_runner.py +0 -0
  340. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/custom_definitions.py +0 -0
  341. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/debug.py +0 -0
  342. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/diag.py +0 -0
  343. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/display_jsonl.py +0 -0
  344. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/__init__.py +0 -0
  345. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  346. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  347. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  348. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  349. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  350. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/gateway_checks.py +0 -0
  351. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  352. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  353. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  354. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  355. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  356. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  357. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  358. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  359. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/runtime_migration_checks.py +0 -0
  360. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  361. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  362. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  363. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  364. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/engine.py +0 -0
  365. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/formatters.py +0 -0
  366. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/handler.py +0 -0
  367. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/models.py +0 -0
  368. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/doctor/registry.py +0 -0
  369. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/endpoints.py +0 -0
  370. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/eval.py +0 -0
  371. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/examples.py +0 -0
  372. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/external_agents.py +0 -0
  373. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/fast_context.py +0 -0
  374. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/file_history.py +0 -0
  375. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/flow_display.py +0 -0
  376. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/git_attribution.py +0 -0
  377. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/git_integration.py +0 -0
  378. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/guardrail.py +0 -0
  379. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/handoff.py +0 -0
  380. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/hooks.py +0 -0
  381. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/hybrid_workflow.py +0 -0
  382. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/image.py +0 -0
  383. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/interactive_core_headless.py +0 -0
  384. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/interactive_runtime.py +0 -0
  385. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/interactive_test_harness.py +0 -0
  386. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/interactive_tools.py +0 -0
  387. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/interactive_tui.py +0 -0
  388. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/job_workflow.py +0 -0
  389. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/jobs.py +0 -0
  390. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/knowledge.py +0 -0
  391. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/knowledge_cli.py +0 -0
  392. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/lite.py +0 -0
  393. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/logs.py +0 -0
  394. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/lsp_cli.py +0 -0
  395. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  396. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/mcp.py +0 -0
  397. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/message_queue.py +0 -0
  398. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/metrics.py +0 -0
  399. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/migrate.py +0 -0
  400. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/migration_flow.py +0 -0
  401. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/migration_spec.py +0 -0
  402. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/n8n.py +0 -0
  403. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/observability.py +0 -0
  404. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/ollama.py +0 -0
  405. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/onboard.py +0 -0
  406. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/output_modes.py +0 -0
  407. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/output_style.py +0 -0
  408. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/package.py +0 -0
  409. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/performance.py +0 -0
  410. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/persistence.py +0 -0
  411. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/profiler/__init__.py +0 -0
  412. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/profiler/core.py +0 -0
  413. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/profiler/optimizations.py +0 -0
  414. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/profiler/suite.py +0 -0
  415. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/__init__.py +0 -0
  416. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/manager.py +0 -0
  417. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/models.py +0 -0
  418. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/persistence.py +0 -0
  419. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/scheduler.py +0 -0
  420. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/queue/worker.py +0 -0
  421. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/recipe.py +0 -0
  422. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/recipe_creator.py +0 -0
  423. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/recipe_optimizer.py +0 -0
  424. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/recipe_prompts.py +0 -0
  425. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/registry.py +0 -0
  426. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/repo_map.py +0 -0
  427. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/router.py +0 -0
  428. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/safe_shell.py +0 -0
  429. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/sandbox_cli.py +0 -0
  430. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/sandbox_executor.py +0 -0
  431. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/sdk_knowledge.py +0 -0
  432. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/serve.py +0 -0
  433. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/session.py +0 -0
  434. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/setup/__init__.py +0 -0
  435. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/setup/handler.py +0 -0
  436. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/setup/templates.py +0 -0
  437. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/slash_commands.py +0 -0
  438. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/telemetry.py +0 -0
  439. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/templates.py +0 -0
  440. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/todo.py +0 -0
  441. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tools.py +0 -0
  442. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/__init__.py +0 -0
  443. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/app.py +0 -0
  444. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/cli.py +0 -0
  445. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/config.py +0 -0
  446. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/debug.py +0 -0
  447. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/events.py +0 -0
  448. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/mock_provider.py +0 -0
  449. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/orchestrator.py +0 -0
  450. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  451. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/help.py +0 -0
  452. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/main.py +0 -0
  453. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/queue.py +0 -0
  454. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/session.py +0 -0
  455. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/screens/settings.py +0 -0
  456. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/session_store.py +0 -0
  457. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  458. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  459. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  460. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  461. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  462. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  463. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/status.py +0 -0
  464. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  465. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/wizard.py +0 -0
  466. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/workflow.py +0 -0
  467. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/features/yaml_utils.py +0 -0
  468. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/__init__.py +0 -0
  469. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/async_tui.py +0 -0
  470. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/config.py +0 -0
  471. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/core.py +0 -0
  472. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/events.py +0 -0
  473. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  474. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  475. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  476. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/praison_io.py +0 -0
  477. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/repl.py +0 -0
  478. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/split_tui.py +0 -0
  479. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/interactive/tui_app.py +0 -0
  480. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/langfuse_client.py +0 -0
  481. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/output/__init__.py +0 -0
  482. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/output/console.py +0 -0
  483. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/output/event_bridge.py +0 -0
  484. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/schedule_cli.py +0 -0
  485. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/schema_provider.py +0 -0
  486. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/session/__init__.py +0 -0
  487. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/session/unified.py +0 -0
  488. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/state/__init__.py +0 -0
  489. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/state/identifiers.py +0 -0
  490. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/state/sessions.py +0 -0
  491. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/__init__.py +0 -0
  492. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/config.py +0 -0
  493. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/events.py +0 -0
  494. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/mg_backend.py +0 -0
  495. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/plain.py +0 -0
  496. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/ui/rich_backend.py +0 -0
  497. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/unified_schema.py +0 -0
  498. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/utils/env_utils.py +0 -0
  499. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli/utils/project.py +0 -0
  500. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli_backends/__init__.py +0 -0
  501. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli_backends/claude.py +0 -0
  502. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/cli_backends/registry.py +0 -0
  503. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/__init__.py +0 -0
  504. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/agent_tools.py +0 -0
  505. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/diff/__init__.py +0 -0
  506. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/diff/diff_strategy.py +0 -0
  507. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/__init__.py +0 -0
  508. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/apply_diff.py +0 -0
  509. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/execute_command.py +0 -0
  510. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/list_files.py +0 -0
  511. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/read_file.py +0 -0
  512. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/search_replace.py +0 -0
  513. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/tools/write_file.py +0 -0
  514. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/utils/__init__.py +0 -0
  515. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/utils/file_utils.py +0 -0
  516. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/utils/ignore_utils.py +0 -0
  517. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/code/utils/text_utils.py +0 -0
  518. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/config/__init__.py +0 -0
  519. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/config/schema.py +0 -0
  520. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/config/validator.py +0 -0
  521. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/__init__.py +0 -0
  522. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/_storage_path.py +0 -0
  523. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/artifact_store.py +0 -0
  524. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/config.py +0 -0
  525. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/history_store.py +0 -0
  526. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/queue.py +0 -0
  527. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/setup.py +0 -0
  528. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/context/terminal_logger.py +0 -0
  529. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/daemon/__init__.py +0 -0
  530. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/daemon/launchd.py +0 -0
  531. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/daemon/systemd.py +0 -0
  532. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/daemon/windows.py +0 -0
  533. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/db/__init__.py +0 -0
  534. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/__init__.py +0 -0
  535. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/api.py +0 -0
  536. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/docker.py +0 -0
  537. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/doctor.py +0 -0
  538. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/main.py +0 -0
  539. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/models.py +0 -0
  540. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/__init__.py +0 -0
  541. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/_registry.py +0 -0
  542. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/aws.py +0 -0
  543. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/azure.py +0 -0
  544. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/base.py +0 -0
  545. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/providers/gcp.py +0 -0
  546. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/deploy/schema.py +0 -0
  547. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/__init__.py +0 -0
  548. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/classifier.py +0 -0
  549. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/executor.py +0 -0
  550. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/extractor.py +0 -0
  551. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/reporter.py +0 -0
  552. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/runner.py +0 -0
  553. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/docs_runner/workspace.py +0 -0
  554. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/__init__.py +0 -0
  555. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/a2u_server.py +0 -0
  556. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/discovery.py +0 -0
  557. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/__init__.py +0 -0
  558. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/a2a.py +0 -0
  559. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/a2u.py +0 -0
  560. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/agents_api.py +0 -0
  561. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/base.py +0 -0
  562. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/mcp.py +0 -0
  563. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/openai_compat.py +0 -0
  564. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/recipe.py +0 -0
  565. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  566. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/registry.py +0 -0
  567. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/endpoints/server.py +0 -0
  568. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/__init__.py +0 -0
  569. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/client.py +0 -0
  570. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  571. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  572. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/components/__init__.py +0 -0
  573. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/converter.py +0 -0
  574. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/flow/helpers.py +0 -0
  575. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/__init__.py +0 -0
  576. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/auth.py +0 -0
  577. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/client.py +0 -0
  578. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/cookie_auth.py +0 -0
  579. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/exec_approval.py +0 -0
  580. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/gateway_approval.py +0 -0
  581. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/health_monitor.py +0 -0
  582. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/home_channels.py +0 -0
  583. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/magic_link.py +0 -0
  584. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/origin_check.py +0 -0
  585. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/pairing.py +0 -0
  586. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/pairing_routes.py +0 -0
  587. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/port_utils.py +0 -0
  588. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/push_channels.py +0 -0
  589. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/push_delivery.py +0 -0
  590. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/push_polling.py +0 -0
  591. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/push_presence.py +0 -0
  592. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/rate_limiter.py +0 -0
  593. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/redis_pubsub.py +0 -0
  594. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/supervisor.py +0 -0
  595. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/gateway/unicode_utils.py +0 -0
  596. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/inbuilt_tools/__init__.py +0 -0
  597. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  598. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/inc/__init__.py +0 -0
  599. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/inc/config.py +0 -0
  600. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/inc/models.py +0 -0
  601. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/__init__.py +0 -0
  602. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/__init__.py +0 -0
  603. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  604. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/hooks_query.py +0 -0
  605. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  606. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/schedules_runner.py +0 -0
  607. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/usage_bridge.py +0 -0
  608. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/bridges/workflows_service.py +0 -0
  609. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/context_files.py +0 -0
  610. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/gateway_host.py +0 -0
  611. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/host_app.py +0 -0
  612. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/pages/__init__.py +0 -0
  613. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/pages/bot_health.py +0 -0
  614. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integration/pages/workflow_runs.py +0 -0
  615. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/__init__.py +0 -0
  616. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/_session_info.py +0 -0
  617. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/_tool_aliases.py +0 -0
  618. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/_unified_registry.py +0 -0
  619. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/backend_registry.py +0 -0
  620. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/base.py +0 -0
  621. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/claude_code.py +0 -0
  622. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/codex_cli.py +0 -0
  623. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/__init__.py +0 -0
  624. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/daytona.py +0 -0
  625. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/docker.py +0 -0
  626. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/e2b.py +0 -0
  627. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/flyio.py +0 -0
  628. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/local.py +0 -0
  629. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/compute/modal_compute.py +0 -0
  630. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/cursor_cli.py +0 -0
  631. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/db_session_adapter.py +0 -0
  632. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/gemini_cli.py +0 -0
  633. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/hosted_agent.py +0 -0
  634. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/local_agent.py +0 -0
  635. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/managed_agents.py +0 -0
  636. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/managed_local.py +0 -0
  637. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/registry.py +0 -0
  638. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/integrations/sandboxed_agent.py +0 -0
  639. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/__init__.py +0 -0
  640. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/executor.py +0 -0
  641. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/models.py +0 -0
  642. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/path_validation.py +0 -0
  643. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/router.py +0 -0
  644. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/server.py +0 -0
  645. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/jobs/store.py +0 -0
  646. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/kanban/paths.py +0 -0
  647. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/__init__.py +0 -0
  648. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/catalogue.py +0 -0
  649. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/config.py +0 -0
  650. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/credentials.py +0 -0
  651. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/env.py +0 -0
  652. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/gateways.py +0 -0
  653. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/llm/registry.py +0 -0
  654. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/__init__.py +0 -0
  655. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/__init__.py +0 -0
  656. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/agents.py +0 -0
  657. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  658. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  659. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  660. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  661. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/memory.py +0 -0
  662. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/prompts.py +0 -0
  663. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/resources.py +0 -0
  664. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  665. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/auth/__init__.py +0 -0
  666. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/auth/api_key.py +0 -0
  667. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/auth/oauth.py +0 -0
  668. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/auth/oidc.py +0 -0
  669. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/auth/scopes.py +0 -0
  670. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/cli.py +0 -0
  671. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/elicitation.py +0 -0
  672. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/icons.py +0 -0
  673. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/recipe_adapter.py +0 -0
  674. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/recipe_cli.py +0 -0
  675. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/registry.py +0 -0
  676. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/sampling.py +0 -0
  677. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/server.py +0 -0
  678. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/tasks.py +0 -0
  679. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/tool_index.py +0 -0
  680. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/transports/__init__.py +0 -0
  681. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/transports/http_stream.py +0 -0
  682. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/mcp_server/transports/stdio.py +0 -0
  683. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/n8n/__init__.py +0 -0
  684. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/n8n/client.py +0 -0
  685. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/n8n/converter.py +0 -0
  686. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/n8n/preview.py +0 -0
  687. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/n8n/reverse_converter.py +0 -0
  688. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/observability/__init__.py +0 -0
  689. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/observability/hooks.py +0 -0
  690. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/observability/langextract.py +0 -0
  691. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/observability/langfuse.py +0 -0
  692. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/__init__.py +0 -0
  693. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/_valkey_client.py +0 -0
  694. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/config.py +0 -0
  695. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/__init__.py +0 -0
  696. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/_sql_base.py +0 -0
  697. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  698. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/async_mysql.py +0 -0
  699. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/async_postgres.py +0 -0
  700. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  701. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/base.py +0 -0
  702. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/json_store.py +0 -0
  703. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/mysql.py +0 -0
  704. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/postgres.py +0 -0
  705. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/singlestore.py +0 -0
  706. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/sqlite.py +0 -0
  707. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/supabase.py +0 -0
  708. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/surrealdb.py +0 -0
  709. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  710. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/conversation/turso.py +0 -0
  711. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/factory.py +0 -0
  712. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/hooks/__init__.py +0 -0
  713. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  714. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/__init__.py +0 -0
  715. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/base.py +0 -0
  716. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/cassandra.py +0 -0
  717. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/chroma.py +0 -0
  718. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  719. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  720. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/couchbase.py +0 -0
  721. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/lancedb.py +0 -0
  722. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  723. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  724. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  725. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/milvus.py +0 -0
  726. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  727. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/pgvector.py +0 -0
  728. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/pinecone.py +0 -0
  729. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/qdrant.py +0 -0
  730. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  731. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  732. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  733. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  734. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  735. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/knowledge/weaviate.py +0 -0
  736. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/migrations/__init__.py +0 -0
  737. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/migrations/manager.py +0 -0
  738. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/orchestrator.py +0 -0
  739. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/registry.py +0 -0
  740. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/__init__.py +0 -0
  741. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/async_mongodb.py +0 -0
  742. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/base.py +0 -0
  743. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/dynamodb.py +0 -0
  744. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/firestore.py +0 -0
  745. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/gcs.py +0 -0
  746. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/memory.py +0 -0
  747. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/mongodb.py +0 -0
  748. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/redis.py +0 -0
  749. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/upstash.py +0 -0
  750. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/state/valkey.py +0 -0
  751. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/tests/__init__.py +0 -0
  752. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/tests/test_all_backends.py +0 -0
  753. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  754. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/profiler.py +0 -0
  755. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/push/__init__.py +0 -0
  756. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/push/client.py +0 -0
  757. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/push/transports.py +0 -0
  758. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/__init__.py +0 -0
  759. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/bridge.py +0 -0
  760. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/core.py +0 -0
  761. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/exceptions.py +0 -0
  762. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/history.py +0 -0
  763. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/models.py +0 -0
  764. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/operations.py +0 -0
  765. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/policy.py +0 -0
  766. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/registry.py +0 -0
  767. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/runtime.py +0 -0
  768. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/security.py +0 -0
  769. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/serve.py +0 -0
  770. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/recipe/server.py +0 -0
  771. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/__init__.py +0 -0
  772. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/analyzer.py +0 -0
  773. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/applier.py +0 -0
  774. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/judge.py +0 -0
  775. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/plan.py +0 -0
  776. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/player.py +0 -0
  777. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/reader.py +0 -0
  778. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/storage.py +0 -0
  779. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/replay/writer.py +0 -0
  780. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/runtime/__init__.py +0 -0
  781. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/runtime/client.py +0 -0
  782. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/runtime/descriptor.py +0 -0
  783. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/runtime/server.py +0 -0
  784. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/__init__.py +0 -0
  785. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/_compat.py +0 -0
  786. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/_registry.py +0 -0
  787. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/_shell.py +0 -0
  788. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/daytona.py +0 -0
  789. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/docker.py +0 -0
  790. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/e2b.py +0 -0
  791. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/modal.py +0 -0
  792. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/sandlock.py +0 -0
  793. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/ssh.py +0 -0
  794. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/sandbox/subprocess.py +0 -0
  795. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/__init__.py +0 -0
  796. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/_base_scheduler.py +0 -0
  797. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/_dispatch.py +0 -0
  798. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/agent_scheduler.py +0 -0
  799. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  800. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/base.py +0 -0
  801. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  802. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/condition_gate.py +0 -0
  803. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/daemon_manager.py +0 -0
  804. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/deployment.py +0 -0
  805. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/executor.py +0 -0
  806. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/run_policy.py +0 -0
  807. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/shared.py +0 -0
  808. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/state_manager.py +0 -0
  809. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/suggestion_engine.py +0 -0
  810. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/scheduler/yaml_loader.py +0 -0
  811. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/security/__init__.py +0 -0
  812. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/security/audit.py +0 -0
  813. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/security/injection.py +0 -0
  814. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/security/protected.py +0 -0
  815. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/setup/__init__.py +0 -0
  816. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/setup/build.py +0 -0
  817. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/setup/post_install.py +0 -0
  818. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/setup/setup_conda_env.py +0 -0
  819. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/setup.py +0 -0
  820. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/__init__.py +0 -0
  821. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/ai_generator.py +0 -0
  822. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/config.py +0 -0
  823. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/dedupe.py +0 -0
  824. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/discovery.py +0 -0
  825. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/drift.py +0 -0
  826. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/engine.py +0 -0
  827. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/enhanced_templates.py +0 -0
  828. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/example_verifier.py +0 -0
  829. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/manifest.py +0 -0
  830. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/models.py +0 -0
  831. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/reports.py +0 -0
  832. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/templates.py +0 -0
  833. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/undo_redo.py +0 -0
  834. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/standardise/validator.py +0 -0
  835. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/__init__.py +0 -0
  836. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/dynamodb_adapter.py +0 -0
  837. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/mongodb_adapter.py +0 -0
  838. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/postgresql_adapter.py +0 -0
  839. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/redis_adapter.py +0 -0
  840. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/storage/valkey_adapter.py +0 -0
  841. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/__init__.py +0 -0
  842. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/batch_source.py +0 -0
  843. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/cli_docs_source.py +0 -0
  844. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/discovery.py +0 -0
  845. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/docs_source.py +0 -0
  846. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/examples_source.py +0 -0
  847. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/executor.py +0 -0
  848. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/models.py +0 -0
  849. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/report_viewer.py +0 -0
  850. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/reporter.py +0 -0
  851. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/suite_runner/runner.py +0 -0
  852. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/__init__.py +0 -0
  853. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/cache.py +0 -0
  854. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/dependency_checker.py +0 -0
  855. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/discovery.py +0 -0
  856. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/loader.py +0 -0
  857. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/registry.py +0 -0
  858. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/resolver.py +0 -0
  859. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/security.py +0 -0
  860. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/tool_override.py +0 -0
  861. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/templates/tools_doctor.py +0 -0
  862. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tool_registry.py +0 -0
  863. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/__init__.py +0 -0
  864. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/audio.py +0 -0
  865. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/glob_tool.py +0 -0
  866. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/grep_tool.py +0 -0
  867. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/tools/multiedit.py +0 -0
  868. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/__init__.py +0 -0
  869. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/_ollama.py +0 -0
  870. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/__init__.py +0 -0
  871. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/grader.py +0 -0
  872. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/hook.py +0 -0
  873. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/models.py +0 -0
  874. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/orchestrator.py +0 -0
  875. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/agents/storage.py +0 -0
  876. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/llm/__init__.py +0 -0
  877. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train/llm/trainer.py +0 -0
  878. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train.py +0 -0
  879. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/train_vision.py +0 -0
  880. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/_aiui_datastore.py +0 -0
  881. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/_external_agents.py +0 -0
  882. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/callbacks.py +0 -0
  883. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/components/aicoder.py +0 -0
  884. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/context.py +0 -0
  885. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui/database_config.py +0 -0
  886. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_agents/__init__.py +0 -0
  887. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_agents/default_app.py +0 -0
  888. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_bot/__init__.py +0 -0
  889. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_bot/default_app.py +0 -0
  890. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_chat/__init__.py +0 -0
  891. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_chat/default_app.py +0 -0
  892. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_dashboard/default_app.py +0 -0
  893. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_realtime/__init__.py +0 -0
  894. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/ui_realtime/default_app.py +0 -0
  895. {praisonai-4.6.81 → praisonai-4.6.83}/praisonai/upload_vision.py +0 -0
  896. {praisonai-4.6.81 → praisonai-4.6.83}/setup.cfg +0 -0
  897. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test.py +0 -0
  898. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_agents_playbook.py +0 -0
  899. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_approval_system.py +0 -0
  900. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_basic.py +0 -0
  901. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_cli_features.py +0 -0
  902. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_custom_tools_fix.py +0 -0
  903. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_double_api_fix.py +0 -0
  904. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_n8n_agent_invoke.py +0 -0
  905. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_n8n_cli_feature.py +0 -0
  906. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_n8n_integration.py +0 -0
  907. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_phase2_refactor.py +0 -0
  908. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_recipe.py +0 -0
  909. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_registry.py +0 -0
  910. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_runner.py +0 -0
  911. {praisonai-4.6.81 → praisonai-4.6.83}/tests/test_sandboxed_agent_compatibility.py +0 -0
  912. {praisonai-4.6.81 → praisonai-4.6.83}/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.81
3
+ Version: 4.6.83
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,14 +11,16 @@ 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.81
14
+ Requires-Dist: praisonaiagents>=1.6.90
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
18
18
  Requires-Dist: mcp>=1.20.0
19
- Requires-Dist: typer>=0.9.0
19
+ Requires-Dist: typer>=0.12.0
20
+ Requires-Dist: click>=8.4.2
20
21
  Requires-Dist: textual>=0.47.0
21
22
  Requires-Dist: pydantic>=2.0.0
23
+ Requires-Dist: toml>=0.10.2
22
24
  Provides-Extra: ui
23
25
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "ui"
24
26
  Provides-Extra: gradio
@@ -93,6 +95,9 @@ Requires-Dist: praisonai-tools>=0.1.0; extra == "autogen-v4"
93
95
  Requires-Dist: crewai; extra == "autogen-v4"
94
96
  Provides-Extra: acp
95
97
  Requires-Dist: agent-client-protocol>=0.7.0; extra == "acp"
98
+ Provides-Extra: flow
99
+ Requires-Dist: langflow>=1.0.0; extra == "flow"
100
+ Requires-Dist: requests>=2.31.0; extra == "flow"
96
101
  Provides-Extra: lite
97
102
  Provides-Extra: all
98
103
  Requires-Dist: fastapi>=0.115.0; extra == "all"
@@ -751,7 +756,7 @@ praisonai agents.yaml
751
756
  | Query Rewriter Agent | [Example](examples/python/agents/query-rewriter-agent.py) | [📖](https://docs.praison.ai/docs/agents/query-rewriter) |
752
757
  | Native Web Search | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/agents/websearch) |
753
758
  | Built-in Search Tools | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/tools/tavily) |
754
- | Unified Web Search | [Example](src/praisonai-agents/examples/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
759
+ | Unified Web Search | [Example](examples/python/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
755
760
  | Web Fetch (Anthropic) | [Example](examples/python/agents/web-fetch-agent.py) | [📖](https://docs.praison.ai/docs/features/model-capabilities) |
756
761
 
757
762
  </details>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.81
3
+ Version: 4.6.83
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,14 +11,16 @@ 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.81
14
+ Requires-Dist: praisonaiagents>=1.6.90
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
18
18
  Requires-Dist: mcp>=1.20.0
19
- Requires-Dist: typer>=0.9.0
19
+ Requires-Dist: typer>=0.12.0
20
+ Requires-Dist: click>=8.4.2
20
21
  Requires-Dist: textual>=0.47.0
21
22
  Requires-Dist: pydantic>=2.0.0
23
+ Requires-Dist: toml>=0.10.2
22
24
  Provides-Extra: ui
23
25
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "ui"
24
26
  Provides-Extra: gradio
@@ -93,6 +95,9 @@ Requires-Dist: praisonai-tools>=0.1.0; extra == "autogen-v4"
93
95
  Requires-Dist: crewai; extra == "autogen-v4"
94
96
  Provides-Extra: acp
95
97
  Requires-Dist: agent-client-protocol>=0.7.0; extra == "acp"
98
+ Provides-Extra: flow
99
+ Requires-Dist: langflow>=1.0.0; extra == "flow"
100
+ Requires-Dist: requests>=2.31.0; extra == "flow"
96
101
  Provides-Extra: lite
97
102
  Provides-Extra: all
98
103
  Requires-Dist: fastapi>=0.115.0; extra == "all"
@@ -751,7 +756,7 @@ praisonai agents.yaml
751
756
  | Query Rewriter Agent | [Example](examples/python/agents/query-rewriter-agent.py) | [📖](https://docs.praison.ai/docs/agents/query-rewriter) |
752
757
  | Native Web Search | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/agents/websearch) |
753
758
  | Built-in Search Tools | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/tools/tavily) |
754
- | Unified Web Search | [Example](src/praisonai-agents/examples/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
759
+ | Unified Web Search | [Example](examples/python/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
755
760
  | Web Fetch (Anthropic) | [Example](examples/python/agents/web-fetch-agent.py) | [📖](https://docs.praison.ai/docs/features/model-capabilities) |
756
761
 
757
762
  </details>
@@ -61,6 +61,7 @@ praisonai/audit/__init__.py
61
61
  praisonai/audit/agent_centric.py
62
62
  praisonai/bots/__init__.py
63
63
  praisonai/bots/_ack.py
64
+ praisonai/bots/_admission.py
64
65
  praisonai/bots/_approval.py
65
66
  praisonai/bots/_approval_base.py
66
67
  praisonai/bots/_approval_store.py
@@ -82,7 +83,9 @@ praisonai/bots/_ingress.py
82
83
  praisonai/bots/_media.py
83
84
  praisonai/bots/_metrics.py
84
85
  praisonai/bots/_mirror.py
86
+ praisonai/bots/_outbound_media.py
85
87
  praisonai/bots/_outbound_messenger.py
88
+ praisonai/bots/_outbound_resilience.py
86
89
  praisonai/bots/_outbox.py
87
90
  praisonai/bots/_pairing_ui.py
88
91
  praisonai/bots/_presentation_approval.py
@@ -351,14 +354,10 @@ praisonai/cli/features/output_style.py
351
354
  praisonai/cli/features/package.py
352
355
  praisonai/cli/features/performance.py
353
356
  praisonai/cli/features/persistence.py
354
- praisonai/cli/features/plugin_cli.py
355
- praisonai/cli/features/profile.py
356
- praisonai/cli/features/profiling.py
357
357
  praisonai/cli/features/recipe.py
358
358
  praisonai/cli/features/recipe_creator.py
359
359
  praisonai/cli/features/recipe_optimizer.py
360
360
  praisonai/cli/features/recipe_prompts.py
361
- praisonai/cli/features/recipes.py
362
361
  praisonai/cli/features/registry.py
363
362
  praisonai/cli/features/repo_map.py
364
363
  praisonai/cli/features/router.py
@@ -368,6 +367,7 @@ praisonai/cli/features/sandbox_executor.py
368
367
  praisonai/cli/features/sdk_knowledge.py
369
368
  praisonai/cli/features/serve.py
370
369
  praisonai/cli/features/session.py
370
+ praisonai/cli/features/session_checkpoints.py
371
371
  praisonai/cli/features/skills.py
372
372
  praisonai/cli/features/slash_commands.py
373
373
  praisonai/cli/features/telemetry.py
@@ -554,11 +554,13 @@ praisonai/framework_adapters/crewai_adapter.py
554
554
  praisonai/framework_adapters/praisonai_adapter.py
555
555
  praisonai/framework_adapters/registry.py
556
556
  praisonai/framework_adapters/validators.py
557
+ praisonai/framework_adapters/workflow_framework.py
557
558
  praisonai/gateway/__init__.py
558
559
  praisonai/gateway/auth.py
559
560
  praisonai/gateway/client.py
560
561
  praisonai/gateway/cookie_auth.py
561
562
  praisonai/gateway/exec_approval.py
563
+ praisonai/gateway/forensics.py
562
564
  praisonai/gateway/gateway_approval.py
563
565
  praisonai/gateway/health_monitor.py
564
566
  praisonai/gateway/home_channels.py
@@ -789,7 +791,6 @@ praisonai/scheduler/blueprint_catalogue.py
789
791
  praisonai/scheduler/condition_gate.py
790
792
  praisonai/scheduler/daemon_manager.py
791
793
  praisonai/scheduler/deployment.py
792
- praisonai/scheduler/enhanced_executor.py
793
794
  praisonai/scheduler/executor.py
794
795
  praisonai/scheduler/run_policy.py
795
796
  praisonai/scheduler/shared.py
@@ -1,14 +1,16 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.81
4
+ praisonaiagents>=1.6.90
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
8
8
  mcp>=1.20.0
9
- typer>=0.9.0
9
+ typer>=0.12.0
10
+ click>=8.4.2
10
11
  textual>=0.47.0
11
12
  pydantic>=2.0.0
13
+ toml>=0.10.2
12
14
 
13
15
  [acp]
14
16
  agent-client-protocol>=0.7.0
@@ -141,6 +143,10 @@ pytest-asyncio>=0.21.0
141
143
  [dynamodb]
142
144
  boto3>=1.35.0
143
145
 
146
+ [flow]
147
+ langflow>=1.0.0
148
+ requests>=2.31.0
149
+
144
150
  [gradio]
145
151
  gradio>=4.26.0
146
152
 
@@ -568,7 +568,7 @@ praisonai agents.yaml
568
568
  | Query Rewriter Agent | [Example](examples/python/agents/query-rewriter-agent.py) | [📖](https://docs.praison.ai/docs/agents/query-rewriter) |
569
569
  | Native Web Search | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/agents/websearch) |
570
570
  | Built-in Search Tools | [Example](examples/python/agents/websearch-agent.py) | [📖](https://docs.praison.ai/docs/tools/tavily) |
571
- | Unified Web Search | [Example](src/praisonai-agents/examples/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
571
+ | Unified Web Search | [Example](examples/python/web_search_example.py) | [📖](https://docs.praison.ai/docs/tools/web-search) |
572
572
  | Web Fetch (Anthropic) | [Example](examples/python/agents/web-fetch-agent.py) | [📖](https://docs.praison.ai/docs/features/model-capabilities) |
573
573
 
574
574
  </details>
@@ -7,11 +7,13 @@ on every call (which is expensive and breaks multi-agent workflows).
7
7
  """
8
8
  import asyncio
9
9
  import atexit
10
+ import contextlib
11
+ import contextvars
10
12
  import os
11
13
  import threading
12
14
  import concurrent.futures
13
15
  from concurrent.futures import CancelledError as FutureCancelledError, Future
14
- from typing import Awaitable, TypeVar
16
+ from typing import Awaitable, Iterator, Optional, TypeVar
15
17
 
16
18
  T = TypeVar("T")
17
19
 
@@ -25,6 +27,13 @@ class AsyncBridge:
25
27
  self._loop: asyncio.AbstractEventLoop | None = None
26
28
  self._thread: threading.Thread | None = None
27
29
  self._lock = threading.Lock()
30
+ # Permanently-closed flag. Set by ``shutdown(permanent=True)`` for
31
+ # scope-owned bridges so a leaked context (e.g. an ``asyncio.Task`` that
32
+ # copied the ContextVar inside a ``scoped_bridge`` block) cannot silently
33
+ # resurrect an orphaned loop+thread after the scope exits. The shared
34
+ # default is never marked permanent so its only teardown is the atexit
35
+ # hook at process exit.
36
+ self._closed = False
28
37
  # Identity of the thread currently holding ``self._lock``. Set under the
29
38
  # lock by ``get()``/``submit()`` so ``_spawn_locked()`` can verify the
30
39
  # *caller* (not merely *someone*) owns the lock.
@@ -47,6 +56,16 @@ class AsyncBridge:
47
56
  raise AssertionError(
48
57
  "_spawn_locked() must be called while holding self._lock"
49
58
  )
59
+ # Refuse to resurrect a permanently-closed (scope-owned) bridge. This
60
+ # guards the case where a context copied inside ``scoped_bridge`` outlives
61
+ # the ``with`` block and later tries to run work through the now-shut-down
62
+ # bridge: instead of silently starting an orphaned loop+thread that no
63
+ # scope or atexit hook owns, fail loudly.
64
+ if self._closed:
65
+ raise RuntimeError(
66
+ "AsyncBridge has been shut down and cannot be reused; "
67
+ "this usually means a context outlived its scoped_bridge() block"
68
+ )
50
69
  if self._loop is None or self._loop.is_closed():
51
70
  self._loop = asyncio.new_event_loop()
52
71
  self._thread = threading.Thread(
@@ -103,9 +122,22 @@ class AsyncBridge:
103
122
  fut.cancel()
104
123
  raise
105
124
 
106
- def shutdown(self, timeout: float = 5.0) -> None:
125
+ def shutdown(self, timeout: float = 5.0, *, permanent: bool = False) -> None:
126
+ """Tear down the loop+thread.
127
+
128
+ Args:
129
+ timeout: Seconds to wait for in-flight tasks to cancel and the
130
+ background thread to join.
131
+ permanent: When ``True`` the bridge is marked closed and may not be
132
+ reused; a later ``run_sync``/``submit`` raises ``RuntimeError``
133
+ rather than silently resurrecting an orphaned loop. Used by
134
+ :func:`scoped_bridge` for the bridges it owns. The shared default
135
+ is shut down with ``permanent=False`` so it never poisons callers.
136
+ """
107
137
  # Snapshot loop and thread outside lock to avoid holding lock during wait
108
138
  with self._lock:
139
+ if permanent:
140
+ self._closed = True
109
141
  loop, thread = self._loop, self._thread
110
142
  if loop is None:
111
143
  return
@@ -149,10 +181,67 @@ class AsyncBridge:
149
181
  _BG: AsyncBridge = AsyncBridge()
150
182
 
151
183
 
184
+ # Context-scoped override. When set (via :func:`scoped_bridge`), callers in that
185
+ # context — and any code they transitively invoke, including async tasks that
186
+ # copy the context — resolve to the scoped bridge instead of the shared default.
187
+ # This lets server/gateway/managed callers bind a per-session loop+thread
188
+ # without rewriting internal modules that import ``run_sync`` directly.
189
+ _bridge_var: contextvars.ContextVar[Optional[AsyncBridge]] = contextvars.ContextVar(
190
+ "praisonai_async_bridge", default=None
191
+ )
192
+
193
+
152
194
  def _default_bridge() -> AsyncBridge:
195
+ """Resolve the active bridge: context-scoped override, else shared default."""
196
+ scoped = _bridge_var.get()
197
+ if scoped is not None:
198
+ return scoped
153
199
  return _BG
154
200
 
155
201
 
202
+ def current_bridge() -> AsyncBridge:
203
+ """Return the :class:`AsyncBridge` active in the current context.
204
+
205
+ Returns the bridge bound by an enclosing :func:`scoped_bridge` block, or the
206
+ process-wide shared default when no scope is active. Prefer this over reaching
207
+ for the module-level ``_BG`` so embedders can override the bridge via
208
+ dependency injection.
209
+ """
210
+ return _default_bridge()
211
+
212
+
213
+ @contextlib.contextmanager
214
+ def scoped_bridge(bridge: Optional[AsyncBridge] = None) -> Iterator[AsyncBridge]:
215
+ """Bind a per-scope :class:`AsyncBridge` for the duration of the ``with`` block.
216
+
217
+ Server callers (``praisonai serve``, gateway, managed agents) can isolate a
218
+ session's sync→async work onto its own loop+thread so a stuck coroutine in one
219
+ session does not park the shared default loop for every other session::
220
+
221
+ with scoped_bridge() as bridge:
222
+ run_sync(some_coro()) # uses ``bridge`` instead of the global default
223
+ ...
224
+ # bridge is shut down automatically on exit when created here.
225
+
226
+ Args:
227
+ bridge: An existing bridge to bind. When ``None`` a fresh bridge is created
228
+ for the scope and shut down on exit. A caller-provided bridge is left
229
+ untouched (the caller owns its lifecycle).
230
+ """
231
+ owns = bridge is None
232
+ if bridge is None:
233
+ bridge = AsyncBridge()
234
+ token = _bridge_var.set(bridge)
235
+ try:
236
+ yield bridge
237
+ finally:
238
+ _bridge_var.reset(token)
239
+ if owns:
240
+ # ``permanent=True`` poisons the bridge so a context that copied the
241
+ # ContextVar inside this block cannot resurrect it after we exit.
242
+ bridge.shutdown(permanent=True)
243
+
244
+
156
245
  def _shutdown_default() -> None:
157
246
  """Private process-exit hook: tear down the shared default bridge.
158
247
 
@@ -708,6 +708,16 @@ class AgentsGenerator:
708
708
  # Ensure name is present
709
709
  if 'name' not in config:
710
710
  config['name'] = config.get('topic', 'Workflow')
711
+
712
+ from .framework_adapters.workflow_framework import (
713
+ framework_from_config,
714
+ validate_workflow_framework,
715
+ )
716
+ effective_framework = (self.framework or framework_from_config(config))
717
+ validate_workflow_framework(
718
+ effective_framework,
719
+ source="agents.yaml workflow section",
720
+ )
711
721
 
712
722
  # Pass model from config_list to workflow as default_llm
713
723
  if self.config_list and self.config_list[0].get('model'):
@@ -763,6 +773,16 @@ class AgentsGenerator:
763
773
  # Ensure name is present (YAMLWorkflowParser handles roles->agents conversion)
764
774
  if 'name' not in config:
765
775
  config['name'] = config.get('topic', 'Workflow')
776
+
777
+ from .framework_adapters.workflow_framework import (
778
+ framework_from_config,
779
+ validate_workflow_framework,
780
+ )
781
+ effective_framework = (self.framework or framework_from_config(config))
782
+ validate_workflow_framework(
783
+ effective_framework,
784
+ source="agents.yaml workflow section",
785
+ )
766
786
 
767
787
  # Pass model from config_list to workflow as default_llm
768
788
  if self.config_list and self.config_list[0].get('model'):
@@ -25,6 +25,21 @@ T = TypeVar('T')
25
25
  # =============================================================================
26
26
 
27
27
  from ._lazy_cache import lazy_get
28
+ from ._async_bridge import run_sync
29
+ import inspect as _inspect
30
+
31
+
32
+ async def _maybe_await(value):
33
+ """Await ``value`` if it is awaitable, otherwise return it unchanged.
34
+
35
+ Lets a single coroutine drive both async provider calls (which return
36
+ awaitables) and sync provider calls (which return plain results) without
37
+ duplicating the surrounding fallback ladder.
38
+ """
39
+ if _inspect.isawaitable(value):
40
+ return await value
41
+ return value
42
+
28
43
 
29
44
  # Module-level cache for lazily constructed Pydantic workflow models.
30
45
  # Populated on first call to _get_workflow_models() / _get_job_workflow_models().
@@ -460,36 +475,63 @@ class BaseAutoGenerator:
460
475
  return False
461
476
 
462
477
 
463
- def _structured_completion(self, response_model: Type[T], messages: List[Dict], **kwargs) -> T:
478
+ def _get_async_openai_client(self):
479
+ """Get or create the async OpenAI client for this instance.
480
+
481
+ Lazy-init AND snapshot the client under the same lock so the returned
482
+ local reference survives a concurrent aclose() that nulls the attribute,
483
+ closing the shutdown-during-request race (mirrors the sync path).
464
484
  """
465
- Make a structured LLM completion with provider fallback.
466
-
467
- Priority:
468
- 1. LiteLLM (if available) - supports 100+ LLM providers
469
- 2. OpenAI SDK (fallback) - uses beta.chat.completions.parse
470
-
471
- Args:
472
- response_model: Pydantic model class for structured output
473
- messages: List of message dicts for the LLM
474
- **kwargs: Additional arguments passed to the LLM
475
-
476
- Returns:
477
- Instance of response_model with parsed response
478
-
479
- Raises:
480
- ImportError: If neither litellm nor openai is installed
485
+ with self._client_lock:
486
+ client = self._async_openai_client
487
+ if client is None:
488
+ try:
489
+ from openai import AsyncOpenAI
490
+ except ImportError as e:
491
+ raise ImportError("Install with: pip install openai") from e
492
+ cfg = self.config_list[0]
493
+ client = self._async_openai_client = AsyncOpenAI(
494
+ api_key=cfg.get("api_key") or os.environ.get("OPENAI_API_KEY"),
495
+ base_url=cfg.get("base_url"),
496
+ )
497
+ return client
498
+
499
+ async def _completion_impl(
500
+ self,
501
+ response_model: Type[T],
502
+ messages: List[Dict],
503
+ *,
504
+ is_async: bool,
505
+ **kwargs,
506
+ ) -> T:
507
+ """Single source of truth for the structured-completion fallback ladder.
508
+
509
+ Drives the same LiteLLM -> OpenAI ladder for both the sync and async
510
+ entry points; the ONLY divergence is whether the provider call is
511
+ awaited (async) or run directly (sync), and which OpenAI client cache is
512
+ used. This collapses the previously byte-for-byte duplicated sync/async
513
+ paths into one place so the ladder can only ever be changed once.
481
514
  """
482
515
  model_name = self.config_list[0]['model']
483
-
516
+
484
517
  # Try LiteLLM first (preferred - supports 100+ providers)
485
518
  if is_available("litellm"):
486
519
  try:
487
520
  litellm = _get_litellm()
488
- response = litellm.completion(
521
+ call = litellm.acompletion if is_async else litellm.completion
522
+ call_kwargs = dict(
489
523
  model=model_name,
490
524
  messages=messages,
491
525
  response_format=response_model,
492
- **kwargs
526
+ **kwargs,
527
+ )
528
+ # The async path awaits the provider coroutine directly. The sync
529
+ # path offloads the blocking provider call via asyncio.to_thread
530
+ # so it never blocks the bridge event loop this coroutine runs on.
531
+ response = (
532
+ await _maybe_await(call(**call_kwargs))
533
+ if is_async
534
+ else await asyncio.to_thread(lambda: call(**call_kwargs))
493
535
  )
494
536
  content = response.choices[0].message.content
495
537
  return response_model.model_validate_json(content)
@@ -504,97 +546,114 @@ class BaseAutoGenerator:
504
546
  "LiteLLM structured completion failed (%s); "
505
547
  "falling back to OpenAI SDK.", e
506
548
  )
507
-
549
+
508
550
  # Fallback to OpenAI SDK (uses beta.chat.completions.parse)
509
551
  if is_available("openai"):
510
- client = self._get_openai_client()
511
- response = client.beta.chat.completions.parse(
552
+ client = (
553
+ self._get_async_openai_client() if is_async
554
+ else self._get_openai_client()
555
+ )
556
+ parse = client.beta.chat.completions.parse
557
+ parse_kwargs = dict(
512
558
  model=model_name,
513
559
  messages=messages,
514
560
  response_format=response_model,
515
- **kwargs
561
+ **kwargs,
562
+ )
563
+ # As above: await directly when async, otherwise offload the blocking
564
+ # sync parse() so the bridge event loop is never blocked.
565
+ response = (
566
+ await _maybe_await(parse(**parse_kwargs))
567
+ if is_async
568
+ else await asyncio.to_thread(lambda: parse(**parse_kwargs))
516
569
  )
517
570
  return response.choices[0].message.parsed
518
-
571
+
519
572
  # Neither available - raise helpful error
520
573
  raise ImportError(
521
574
  "Structured output requires either litellm or openai. "
522
575
  "Install with: pip install litellm OR pip install openai"
523
576
  )
524
-
577
+
578
+ def _structured_completion(self, response_model: Type[T], messages: List[Dict], **kwargs) -> T:
579
+ """
580
+ Make a structured LLM completion with provider fallback.
581
+
582
+ Priority:
583
+ 1. LiteLLM (if available) - supports 100+ LLM providers
584
+ 2. OpenAI SDK (fallback) - uses beta.chat.completions.parse
585
+
586
+ Args:
587
+ response_model: Pydantic model class for structured output
588
+ messages: List of message dicts for the LLM
589
+ **kwargs: Additional arguments passed to the LLM
590
+
591
+ Returns:
592
+ Instance of response_model with parsed response
593
+
594
+ Raises:
595
+ ImportError: If neither litellm nor openai is installed
596
+ """
597
+ # Backward compatibility: the historical sync path called the blocking
598
+ # provider clients directly, so it worked even when invoked from inside a
599
+ # running event loop (FastAPI handler, Jupyter, async test). run_sync()
600
+ # rejects that case, so when a loop is already running we drive the sync
601
+ # ladder on a dedicated worker thread (with its own loop) instead of
602
+ # raising. The provider calls still execute off the caller's loop.
603
+ try:
604
+ asyncio.get_running_loop()
605
+ except RuntimeError:
606
+ running_loop = False
607
+ else:
608
+ running_loop = True
609
+
610
+ if not running_loop:
611
+ return run_sync(
612
+ self._completion_impl(response_model, messages, is_async=False, **kwargs)
613
+ )
614
+
615
+ result: List[Any] = []
616
+ error: List[BaseException] = []
617
+
618
+ def _runner() -> None:
619
+ try:
620
+ result.append(
621
+ asyncio.run(
622
+ self._completion_impl(
623
+ response_model, messages, is_async=False, **kwargs
624
+ )
625
+ )
626
+ )
627
+ except BaseException as e: # noqa: BLE001 - re-raised on caller thread
628
+ error.append(e)
629
+
630
+ thread = threading.Thread(target=_runner, name="praisonai-sync-completion")
631
+ thread.start()
632
+ thread.join()
633
+ if error:
634
+ raise error[0]
635
+ return result[0]
636
+
525
637
  async def _astructured_completion(self, response_model: Type[T], messages: List[Dict], **kwargs) -> T:
526
638
  """
527
639
  Make an async structured LLM completion with provider fallback.
528
-
640
+
529
641
  Priority:
530
642
  1. LiteLLM async (if available) - supports 100+ LLM providers
531
643
  2. OpenAI AsyncSDK (fallback) - uses beta.chat.completions.parse
532
-
644
+
533
645
  Args:
534
646
  response_model: Pydantic model class for structured output
535
647
  messages: List of message dicts for the LLM
536
648
  **kwargs: Additional arguments passed to the LLM
537
-
649
+
538
650
  Returns:
539
651
  Instance of response_model with parsed response
540
-
652
+
541
653
  Raises:
542
654
  ImportError: If neither litellm nor openai is installed
543
655
  """
544
- model_name = self.config_list[0]['model']
545
-
546
- # Try LiteLLM async first (preferred - supports 100+ providers)
547
- if is_available("litellm"):
548
- try:
549
- litellm = _get_litellm()
550
- response = await litellm.acompletion(
551
- model=model_name,
552
- messages=messages,
553
- response_format=response_model,
554
- **kwargs
555
- )
556
- content = response.choices[0].message.content
557
- return response_model.model_validate_json(content)
558
- except Exception as e:
559
- # Graceful execution-level fallback (see _structured_completion).
560
- if not is_available("openai"):
561
- raise
562
- logger.warning(
563
- "LiteLLM async structured completion failed (%s); "
564
- "falling back to OpenAI SDK.", e
565
- )
566
-
567
- # Fallback to OpenAI AsyncSDK (uses beta.chat.completions.parse)
568
- if is_available("openai"):
569
- # Lazy-init AND snapshot the client under the same lock. The local
570
- # reference survives a concurrent aclose() that nulls the attribute,
571
- # closing the shutdown-during-request race.
572
- with self._client_lock:
573
- if self._async_openai_client is None:
574
- try:
575
- from openai import AsyncOpenAI
576
- except ImportError as e:
577
- raise ImportError("Install with: pip install openai") from e
578
- cfg = self.config_list[0]
579
- self._async_openai_client = AsyncOpenAI(
580
- api_key=cfg.get("api_key") or os.environ.get("OPENAI_API_KEY"),
581
- base_url=cfg.get("base_url"),
582
- )
583
- client = self._async_openai_client
584
-
585
- response = await client.beta.chat.completions.parse(
586
- model=model_name,
587
- messages=messages,
588
- response_format=response_model,
589
- **kwargs
590
- )
591
- return response.choices[0].message.parsed
592
-
593
- # Neither available - raise helpful error
594
- raise ImportError(
595
- "Structured output requires either litellm or openai. "
596
- "Install with: pip install litellm OR pip install openai"
597
- )
656
+ return await self._completion_impl(response_model, messages, is_async=True, **kwargs)
598
657
 
599
658
  @staticmethod
600
659
  def get_available_tools() -> List[str]:
@@ -31,6 +31,7 @@ if TYPE_CHECKING:
31
31
  from ._approval_store import ApprovalStore
32
32
  from ._delivery import DurableDelivery, deliver_with_retry
33
33
  from ._durable_adapter import DurableAdapterMixin
34
+ from ._outbound_resilience import OutboundResilienceMixin
34
35
  from ._outbound_messenger import BotOutboundMessenger
35
36
  from ._correlation import (
36
37
  correlation_id_from,
@@ -140,6 +141,9 @@ def __getattr__(name: str):
140
141
  if name == "DurableAdapterMixin":
141
142
  from ._durable_adapter import DurableAdapterMixin
142
143
  return DurableAdapterMixin
144
+ if name == "OutboundResilienceMixin":
145
+ from ._outbound_resilience import OutboundResilienceMixin
146
+ return OutboundResilienceMixin
143
147
  if name == "BotOutboundMessenger":
144
148
  from ._outbound_messenger import BotOutboundMessenger
145
149
  return BotOutboundMessenger
@@ -173,6 +177,7 @@ __all__ = [
173
177
  "ApprovalStore",
174
178
  "DurableDelivery", "deliver_with_retry", "deliver_chunked",
175
179
  "DurableAdapterMixin",
180
+ "OutboundResilienceMixin",
176
181
  "BotOutboundMessenger",
177
182
  # Correlation + metrics (gateway message-flow observability)
178
183
  "correlation_id_from", "current_correlation_id", "new_correlation_id",