PraisonAI 4.6.104__tar.gz → 4.6.108__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 (719) hide show
  1. {praisonai-4.6.104 → praisonai-4.6.108}/PKG-INFO +10 -3
  2. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/PKG-INFO +10 -3
  3. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/SOURCES.txt +5 -0
  4. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/requires.txt +10 -2
  5. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/__init__.py +2 -2
  6. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/__main__.py +6 -1
  7. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/docs_generator.py +10 -6
  8. praisonai-4.6.108/praisonai/_framework_availability.py +14 -0
  9. praisonai-4.6.108/praisonai/_safe_loader.py +14 -0
  10. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/agents_generator.py +9 -5
  11. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_protocol_mixin.py +46 -0
  12. praisonai-4.6.108/praisonai/bots/_reliability.py +190 -0
  13. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/botos.py +217 -4
  14. praisonai-4.6.108/praisonai/cli/_warnings.py +11 -0
  15. praisonai-4.6.108/praisonai/cli/fallback_schema.py +11 -0
  16. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/gateway.py +47 -5
  17. praisonai-4.6.108/praisonai/cli/schema_provider.py +11 -0
  18. praisonai-4.6.108/praisonai/cli/unified_schema.py +11 -0
  19. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/registry.py +3 -2
  20. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/server.py +312 -8
  21. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/kanban/sqlite_store.py +5 -6
  22. praisonai-4.6.108/praisonai/llm/catalogue.py +14 -0
  23. praisonai-4.6.108/praisonai/llm/config.py +14 -0
  24. praisonai-4.6.108/praisonai/llm/credentials.py +14 -0
  25. praisonai-4.6.108/praisonai/llm/env.py +14 -0
  26. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/profiler.py +292 -1
  27. praisonai-4.6.108/praisonai/scheduler/_dispatch.py +56 -0
  28. praisonai-4.6.108/praisonai/tool_registry.py +14 -0
  29. praisonai-4.6.108/praisonai/tool_resolver.py +14 -0
  30. praisonai-4.6.108/praisonai/version.py +1 -0
  31. {praisonai-4.6.104 → praisonai-4.6.108}/pyproject.toml +13 -2
  32. praisonai-4.6.104/praisonai/_framework_availability.py +0 -134
  33. praisonai-4.6.104/praisonai/_safe_loader.py +0 -100
  34. praisonai-4.6.104/praisonai/llm/catalogue.py +0 -462
  35. praisonai-4.6.104/praisonai/llm/config.py +0 -37
  36. praisonai-4.6.104/praisonai/llm/credentials.py +0 -286
  37. praisonai-4.6.104/praisonai/llm/env.py +0 -229
  38. praisonai-4.6.104/praisonai/scheduler/_dispatch.py +0 -28
  39. praisonai-4.6.104/praisonai/tool_registry.py +0 -118
  40. praisonai-4.6.104/praisonai/tool_resolver.py +0 -1241
  41. praisonai-4.6.104/praisonai/version.py +0 -1
  42. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/dependency_links.txt +0 -0
  43. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/entry_points.txt +0 -0
  44. {praisonai-4.6.104 → praisonai-4.6.108}/PraisonAI.egg-info/top_level.txt +0 -0
  45. {praisonai-4.6.104 → praisonai-4.6.108}/README.md +0 -0
  46. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_approval_spec.py +0 -0
  47. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_async_bridge.py +0 -0
  48. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_bootstrap.py +0 -0
  49. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/__init__.py +0 -0
  50. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/api_md.py +0 -0
  51. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/__init__.py +0 -0
  52. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/docs_extractor.py +0 -0
  53. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/generator.py +0 -0
  54. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  55. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/python_extractor.py +0 -0
  56. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  57. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/rust_extractor.py +0 -0
  58. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  59. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  60. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  61. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_entrypoint.py +0 -0
  62. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_lazy_cache.py +0 -0
  63. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_lockmap.py +0 -0
  64. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_logging.py +0 -0
  65. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/_registry.py +0 -0
  66. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/acp/__init__.py +0 -0
  67. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/acp/config.py +0 -0
  68. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/acp/safe_edit.py +0 -0
  69. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/acp/server.py +0 -0
  70. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/acp/session.py +0 -0
  71. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/adapters/__init__.py +0 -0
  72. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/adapters/readers.py +0 -0
  73. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/adapters/rerankers.py +0 -0
  74. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/adapters/retrievers.py +0 -0
  75. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/adapters/vector_stores.py +0 -0
  76. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/agent.py +0 -0
  77. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/agent_scheduler.py +0 -0
  78. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/api/agent_invoke.py +0 -0
  79. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/api/call.py +0 -0
  80. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/app/__init__.py +0 -0
  81. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/app/agentos.py +0 -0
  82. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/async_agent_scheduler.py +0 -0
  83. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/audit/__init__.py +0 -0
  84. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/audit/agent_centric.py +0 -0
  85. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/auto.py +0 -0
  86. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/__init__.py +0 -0
  87. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_ack.py +0 -0
  88. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_admission.py +0 -0
  89. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_approval.py +0 -0
  90. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_approval_base.py +0 -0
  91. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_approval_store.py +0 -0
  92. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_chunk.py +0 -0
  93. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_commands.py +0 -0
  94. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_config_schema.py +0 -0
  95. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_correlation.py +0 -0
  96. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_dead_targets.py +0 -0
  97. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_debounce.py +0 -0
  98. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_defaults.py +0 -0
  99. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_delivery.py +0 -0
  100. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_discord_approval.py +0 -0
  101. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_dlq.py +0 -0
  102. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_durable_adapter.py +0 -0
  103. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_email_utils.py +0 -0
  104. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_http_approval.py +0 -0
  105. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_identity.py +0 -0
  106. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_ingress.py +0 -0
  107. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_media.py +0 -0
  108. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_metrics.py +0 -0
  109. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_mirror.py +0 -0
  110. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_outbound_media.py +0 -0
  111. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_outbound_messenger.py +0 -0
  112. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_outbound_resilience.py +0 -0
  113. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_outbox.py +0 -0
  114. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_pairing_ui.py +0 -0
  115. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_presentation_approval.py +0 -0
  116. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_presentation_approval_backend.py +0 -0
  117. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_presentation_renderer.py +0 -0
  118. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_rate_limit.py +0 -0
  119. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_registry.py +0 -0
  120. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_relay_adapter.py +0 -0
  121. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_reset_policy.py +0 -0
  122. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_resilience.py +0 -0
  123. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_run_control.py +0 -0
  124. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_session.py +0 -0
  125. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_slack_approval.py +0 -0
  126. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_status.py +0 -0
  127. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_streaming.py +0 -0
  128. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_telegram_approval.py +0 -0
  129. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_typing.py +0 -0
  130. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_typing_indicator.py +0 -0
  131. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_unknown_user.py +0 -0
  132. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_webhook_approval.py +0 -0
  133. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  134. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/agentmail.py +0 -0
  135. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/bot.py +0 -0
  136. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/delivery.py +0 -0
  137. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/discord.py +0 -0
  138. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/email.py +0 -0
  139. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/linear.py +0 -0
  140. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/media.py +0 -0
  141. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/slack.py +0 -0
  142. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/telegram.py +0 -0
  143. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/webhook_security.py +0 -0
  144. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/bots/whatsapp.py +0 -0
  145. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/__init__.py +0 -0
  146. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/agent.py +0 -0
  147. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/benchmark.py +0 -0
  148. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/cdp_agent.py +0 -0
  149. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/cdp_utils.py +0 -0
  150. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/cli.py +0 -0
  151. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/diagnostics.py +0 -0
  152. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/launcher.py +0 -0
  153. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/playwright_agent.py +0 -0
  154. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/profiling.py +0 -0
  155. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/protocol.py +0 -0
  156. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/report.py +0 -0
  157. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/server.py +0 -0
  158. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/sessions.py +0 -0
  159. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/browser/video.py +0 -0
  160. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/__init__.py +0 -0
  161. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/a2a.py +0 -0
  162. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/assistants.py +0 -0
  163. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/audio.py +0 -0
  164. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/batches.py +0 -0
  165. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/completions.py +0 -0
  166. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/container_files.py +0 -0
  167. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/containers.py +0 -0
  168. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/embeddings.py +0 -0
  169. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/files.py +0 -0
  170. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/fine_tuning.py +0 -0
  171. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/guardrails.py +0 -0
  172. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/images.py +0 -0
  173. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/mcp.py +0 -0
  174. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/messages.py +0 -0
  175. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/moderations.py +0 -0
  176. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/ocr.py +0 -0
  177. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/passthrough.py +0 -0
  178. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/rag.py +0 -0
  179. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/realtime.py +0 -0
  180. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/rerank.py +0 -0
  181. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/responses.py +0 -0
  182. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/search.py +0 -0
  183. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/skills.py +0 -0
  184. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/vector_store_files.py +0 -0
  185. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/vector_stores.py +0 -0
  186. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/capabilities/videos.py +0 -0
  187. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/claw/__init__.py +0 -0
  188. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/claw/default_app.py +0 -0
  189. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/__init__.py +0 -0
  190. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/_paths.py +0 -0
  191. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/_shim.py +0 -0
  192. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/app.py +0 -0
  193. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/approval_backend.py +0 -0
  194. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/branding.py +0 -0
  195. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/__init__.py +0 -0
  196. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/acp.py +0 -0
  197. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/agent.py +0 -0
  198. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/agents.py +0 -0
  199. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/app.py +0 -0
  200. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/attach.py +0 -0
  201. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/audit.py +0 -0
  202. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/auth.py +0 -0
  203. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/batch.py +0 -0
  204. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/benchmark.py +0 -0
  205. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/bot.py +0 -0
  206. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/browser.py +0 -0
  207. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/call.py +0 -0
  208. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/chat.py +0 -0
  209. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/checkpoint.py +0 -0
  210. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/claw.py +0 -0
  211. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/code.py +0 -0
  212. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/command.py +0 -0
  213. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/commit.py +0 -0
  214. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/completion.py +0 -0
  215. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/config.py +0 -0
  216. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/context.py +0 -0
  217. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/daemon.py +0 -0
  218. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/dashboard.py +0 -0
  219. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/debug.py +0 -0
  220. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/deploy.py +0 -0
  221. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/diag.py +0 -0
  222. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/docs.py +0 -0
  223. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/doctor.py +0 -0
  224. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/endpoints.py +0 -0
  225. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/environment.py +0 -0
  226. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/eval.py +0 -0
  227. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/examples.py +0 -0
  228. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/flow.py +0 -0
  229. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/gateway.py +0 -0
  230. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/github.py +0 -0
  231. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/hooks.py +0 -0
  232. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/identity.py +0 -0
  233. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/init.py +0 -0
  234. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/kanban.py +0 -0
  235. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/knowledge.py +0 -0
  236. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/langextract.py +0 -0
  237. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/langfuse.py +0 -0
  238. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/loop.py +0 -0
  239. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/lsp.py +0 -0
  240. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/managed.py +0 -0
  241. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/mcp.py +0 -0
  242. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/memory.py +0 -0
  243. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/mint_link.py +0 -0
  244. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/models.py +0 -0
  245. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/n8n.py +0 -0
  246. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/obs.py +0 -0
  247. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/onboard.py +0 -0
  248. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/package.py +0 -0
  249. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/pairing.py +0 -0
  250. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/paths.py +0 -0
  251. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/permissions.py +0 -0
  252. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/plugins.py +0 -0
  253. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/port.py +0 -0
  254. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/profile.py +0 -0
  255. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/publish.py +0 -0
  256. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/rag.py +0 -0
  257. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/realtime.py +0 -0
  258. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/recipe.py +0 -0
  259. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/registry.py +0 -0
  260. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/replay.py +0 -0
  261. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/research.py +0 -0
  262. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/retrieval.py +0 -0
  263. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/rules.py +0 -0
  264. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/run.py +0 -0
  265. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/sandbox.py +0 -0
  266. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/schedule.py +0 -0
  267. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/serve.py +0 -0
  268. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/session.py +0 -0
  269. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/setup.py +0 -0
  270. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/skills.py +0 -0
  271. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/standardise.py +0 -0
  272. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/templates.py +0 -0
  273. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/test.py +0 -0
  274. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/todo.py +0 -0
  275. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/tools.py +0 -0
  276. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/traces.py +0 -0
  277. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/tracker.py +0 -0
  278. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/train.py +0 -0
  279. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/ui.py +0 -0
  280. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/up.py +0 -0
  281. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/validate.py +0 -0
  282. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/version.py +0 -0
  283. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/commands/workflow.py +0 -0
  284. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/config_loader.py +0 -0
  285. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/configuration/__init__.py +0 -0
  286. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/configuration/config.schema.json +0 -0
  287. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/execution/__init__.py +0 -0
  288. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/__init__.py +0 -0
  289. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/approval.py +0 -0
  290. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/bots_cli.py +0 -0
  291. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/onboard.py +0 -0
  292. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/features/serve.py +0 -0
  293. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/interactive/__init__.py +0 -0
  294. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/langfuse_client.py +0 -0
  295. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/main.py +0 -0
  296. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/output/__init__.py +0 -0
  297. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/schedule_cli.py +0 -0
  298. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/session/__init__.py +0 -0
  299. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/state/__init__.py +0 -0
  300. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/ui/__init__.py +0 -0
  301. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli/utils/__init__.py +0 -0
  302. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/cli_backends/__init__.py +0 -0
  303. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/__init__.py +0 -0
  304. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/agent_tools.py +0 -0
  305. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/diff/__init__.py +0 -0
  306. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/diff/diff_strategy.py +0 -0
  307. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/__init__.py +0 -0
  308. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/apply_diff.py +0 -0
  309. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/execute_command.py +0 -0
  310. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/list_files.py +0 -0
  311. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/read_file.py +0 -0
  312. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/search_replace.py +0 -0
  313. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/tools/write_file.py +0 -0
  314. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/utils/__init__.py +0 -0
  315. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/utils/file_utils.py +0 -0
  316. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/utils/ignore_utils.py +0 -0
  317. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/code/utils/text_utils.py +0 -0
  318. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/config/__init__.py +0 -0
  319. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/config/schema.py +0 -0
  320. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/config/validator.py +0 -0
  321. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/__init__.py +0 -0
  322. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/_storage_path.py +0 -0
  323. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/artifact_store.py +0 -0
  324. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/config.py +0 -0
  325. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/history_store.py +0 -0
  326. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/queue.py +0 -0
  327. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/setup.py +0 -0
  328. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/context/terminal_logger.py +0 -0
  329. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/daemon/__init__.py +0 -0
  330. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/daemon/launchd.py +0 -0
  331. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/daemon/systemd.py +0 -0
  332. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/daemon/windows.py +0 -0
  333. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/db/__init__.py +0 -0
  334. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/db/adapter.py +0 -0
  335. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/__init__.py +0 -0
  336. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/api.py +0 -0
  337. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/docker.py +0 -0
  338. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/doctor.py +0 -0
  339. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/main.py +0 -0
  340. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/models.py +0 -0
  341. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/__init__.py +0 -0
  342. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/_registry.py +0 -0
  343. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/aws.py +0 -0
  344. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/azure.py +0 -0
  345. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/base.py +0 -0
  346. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/providers/gcp.py +0 -0
  347. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/deploy/schema.py +0 -0
  348. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/__init__.py +0 -0
  349. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/classifier.py +0 -0
  350. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/executor.py +0 -0
  351. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/extractor.py +0 -0
  352. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/reporter.py +0 -0
  353. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/runner.py +0 -0
  354. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/docs_runner/workspace.py +0 -0
  355. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/__init__.py +0 -0
  356. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/a2u_server.py +0 -0
  357. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/discovery.py +0 -0
  358. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/__init__.py +0 -0
  359. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/a2a.py +0 -0
  360. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/a2u.py +0 -0
  361. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/agents_api.py +0 -0
  362. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/base.py +0 -0
  363. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/mcp.py +0 -0
  364. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/openai_compat.py +0 -0
  365. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/recipe.py +0 -0
  366. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  367. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/registry.py +0 -0
  368. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/endpoints/server.py +0 -0
  369. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/__init__.py +0 -0
  370. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/client.py +0 -0
  371. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  372. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  373. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/components/__init__.py +0 -0
  374. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/converter.py +0 -0
  375. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/flow/helpers.py +0 -0
  376. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/__init__.py +0 -0
  377. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/_config_builder.py +0 -0
  378. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  379. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/base.py +0 -0
  380. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  381. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  382. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/validators.py +0 -0
  383. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/framework_adapters/workflow_framework.py +0 -0
  384. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/__init__.py +0 -0
  385. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/auth.py +0 -0
  386. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/client.py +0 -0
  387. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/cookie_auth.py +0 -0
  388. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/exec_approval.py +0 -0
  389. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/forensics.py +0 -0
  390. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/gateway_approval.py +0 -0
  391. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/health_monitor.py +0 -0
  392. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/home_channels.py +0 -0
  393. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/kanban_dispatcher.py +0 -0
  394. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/magic_link.py +0 -0
  395. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/origin_check.py +0 -0
  396. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/pairing.py +0 -0
  397. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/pairing_routes.py +0 -0
  398. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/port_utils.py +0 -0
  399. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/push_channels.py +0 -0
  400. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/push_delivery.py +0 -0
  401. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/push_polling.py +0 -0
  402. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/push_presence.py +0 -0
  403. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/rate_limiter.py +0 -0
  404. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/redis_pubsub.py +0 -0
  405. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/supervisor.py +0 -0
  406. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/gateway/unicode_utils.py +0 -0
  407. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/inbuilt_tools/__init__.py +0 -0
  408. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  409. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/inc/__init__.py +0 -0
  410. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/inc/config.py +0 -0
  411. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/inc/models.py +0 -0
  412. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/__init__.py +0 -0
  413. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/__init__.py +0 -0
  414. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  415. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/hooks_query.py +0 -0
  416. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  417. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/schedules_runner.py +0 -0
  418. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/usage_bridge.py +0 -0
  419. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/bridges/workflows_service.py +0 -0
  420. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/context_files.py +0 -0
  421. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/gateway_host.py +0 -0
  422. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/host_app.py +0 -0
  423. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/pages/__init__.py +0 -0
  424. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/pages/bot_health.py +0 -0
  425. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integration/pages/workflow_runs.py +0 -0
  426. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/__init__.py +0 -0
  427. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/_session_info.py +0 -0
  428. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/_tool_aliases.py +0 -0
  429. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/_unified_registry.py +0 -0
  430. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/backend_registry.py +0 -0
  431. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/base.py +0 -0
  432. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/claude_code.py +0 -0
  433. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/codex_cli.py +0 -0
  434. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/__init__.py +0 -0
  435. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/daytona.py +0 -0
  436. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/docker.py +0 -0
  437. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/e2b.py +0 -0
  438. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/flyio.py +0 -0
  439. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/local.py +0 -0
  440. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/compute/modal_compute.py +0 -0
  441. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/cursor_cli.py +0 -0
  442. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/db_session_adapter.py +0 -0
  443. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/gemini_cli.py +0 -0
  444. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/hosted_agent.py +0 -0
  445. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/local_agent.py +0 -0
  446. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/managed_agents.py +0 -0
  447. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/managed_local.py +0 -0
  448. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/registry.py +0 -0
  449. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/integrations/sandboxed_agent.py +0 -0
  450. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/__init__.py +0 -0
  451. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/executor.py +0 -0
  452. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/models.py +0 -0
  453. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/path_validation.py +0 -0
  454. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/router.py +0 -0
  455. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/server.py +0 -0
  456. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/jobs/store.py +0 -0
  457. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/kanban/__init__.py +0 -0
  458. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/kanban/models.py +0 -0
  459. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/kanban/paths.py +0 -0
  460. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/llm/__init__.py +0 -0
  461. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/llm/gateways.py +0 -0
  462. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/llm/registry.py +0 -0
  463. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/__init__.py +0 -0
  464. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/__init__.py +0 -0
  465. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/agents.py +0 -0
  466. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  467. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  468. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  469. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  470. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/memory.py +0 -0
  471. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/prompts.py +0 -0
  472. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/resources.py +0 -0
  473. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  474. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/auth/__init__.py +0 -0
  475. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/auth/api_key.py +0 -0
  476. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/auth/oauth.py +0 -0
  477. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/auth/oidc.py +0 -0
  478. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/auth/scopes.py +0 -0
  479. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/cli.py +0 -0
  480. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/elicitation.py +0 -0
  481. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/icons.py +0 -0
  482. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/recipe_adapter.py +0 -0
  483. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/recipe_cli.py +0 -0
  484. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/registry.py +0 -0
  485. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/sampling.py +0 -0
  486. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/server.py +0 -0
  487. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/tasks.py +0 -0
  488. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/tool_index.py +0 -0
  489. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/transports/__init__.py +0 -0
  490. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/transports/http_stream.py +0 -0
  491. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/mcp_server/transports/stdio.py +0 -0
  492. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/n8n/__init__.py +0 -0
  493. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/n8n/client.py +0 -0
  494. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/n8n/converter.py +0 -0
  495. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/n8n/preview.py +0 -0
  496. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/n8n/reverse_converter.py +0 -0
  497. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/observability/__init__.py +0 -0
  498. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/observability/hooks.py +0 -0
  499. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/observability/langextract.py +0 -0
  500. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/observability/langfuse.py +0 -0
  501. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/__init__.py +0 -0
  502. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/_valkey_client.py +0 -0
  503. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/config.py +0 -0
  504. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/__init__.py +0 -0
  505. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/_sql_base.py +0 -0
  506. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  507. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/async_mysql.py +0 -0
  508. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/async_postgres.py +0 -0
  509. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  510. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/base.py +0 -0
  511. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/json_store.py +0 -0
  512. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/mysql.py +0 -0
  513. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/postgres.py +0 -0
  514. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/singlestore.py +0 -0
  515. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/sqlite.py +0 -0
  516. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/supabase.py +0 -0
  517. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/surrealdb.py +0 -0
  518. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  519. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/conversation/turso.py +0 -0
  520. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/factory.py +0 -0
  521. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/hooks/__init__.py +0 -0
  522. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  523. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/__init__.py +0 -0
  524. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/base.py +0 -0
  525. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/cassandra.py +0 -0
  526. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/chroma.py +0 -0
  527. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  528. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  529. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/couchbase.py +0 -0
  530. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/lancedb.py +0 -0
  531. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  532. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  533. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  534. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/milvus.py +0 -0
  535. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  536. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/pgvector.py +0 -0
  537. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/pinecone.py +0 -0
  538. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/qdrant.py +0 -0
  539. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  540. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  541. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  542. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  543. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  544. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/knowledge/weaviate.py +0 -0
  545. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/migrations/__init__.py +0 -0
  546. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/migrations/manager.py +0 -0
  547. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/orchestrator.py +0 -0
  548. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/registry.py +0 -0
  549. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/__init__.py +0 -0
  550. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/async_mongodb.py +0 -0
  551. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/base.py +0 -0
  552. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/dynamodb.py +0 -0
  553. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/firestore.py +0 -0
  554. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/gcs.py +0 -0
  555. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/memory.py +0 -0
  556. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/mongodb.py +0 -0
  557. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/redis.py +0 -0
  558. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/upstash.py +0 -0
  559. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/state/valkey.py +0 -0
  560. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/tests/__init__.py +0 -0
  561. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/tests/test_all_backends.py +0 -0
  562. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
  563. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  564. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/push/__init__.py +0 -0
  565. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/push/client.py +0 -0
  566. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/push/transports.py +0 -0
  567. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/__init__.py +0 -0
  568. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/bridge.py +0 -0
  569. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/core.py +0 -0
  570. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/exceptions.py +0 -0
  571. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/history.py +0 -0
  572. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/models.py +0 -0
  573. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/operations.py +0 -0
  574. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/policy.py +0 -0
  575. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/registry.py +0 -0
  576. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/runtime.py +0 -0
  577. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/security.py +0 -0
  578. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/serve.py +0 -0
  579. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/recipe/server.py +0 -0
  580. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/__init__.py +0 -0
  581. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/analyzer.py +0 -0
  582. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/applier.py +0 -0
  583. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/judge.py +0 -0
  584. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/plan.py +0 -0
  585. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/player.py +0 -0
  586. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/reader.py +0 -0
  587. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/storage.py +0 -0
  588. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/replay/writer.py +0 -0
  589. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/runtime/__init__.py +0 -0
  590. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/runtime/__main__.py +0 -0
  591. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/__init__.py +0 -0
  592. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/_compat.py +0 -0
  593. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/_registry.py +0 -0
  594. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/_shell.py +0 -0
  595. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/daytona.py +0 -0
  596. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/docker.py +0 -0
  597. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/e2b.py +0 -0
  598. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/modal.py +0 -0
  599. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/sandlock.py +0 -0
  600. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/ssh.py +0 -0
  601. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/sandbox/subprocess.py +0 -0
  602. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/__init__.py +0 -0
  603. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/_base_scheduler.py +0 -0
  604. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/agent_scheduler.py +0 -0
  605. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  606. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/base.py +0 -0
  607. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  608. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/condition_gate.py +0 -0
  609. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/daemon_manager.py +0 -0
  610. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/deployment.py +0 -0
  611. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/executor.py +0 -0
  612. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/run_policy.py +0 -0
  613. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/shared.py +0 -0
  614. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/state_manager.py +0 -0
  615. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/suggestion_engine.py +0 -0
  616. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/scheduler/yaml_loader.py +0 -0
  617. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/security/__init__.py +0 -0
  618. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/security/audit.py +0 -0
  619. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/security/injection.py +0 -0
  620. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/security/protected.py +0 -0
  621. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/setup/__init__.py +0 -0
  622. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/setup/build.py +0 -0
  623. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/setup/post_install.py +0 -0
  624. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/setup/setup_conda_env.py +0 -0
  625. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/setup.py +0 -0
  626. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/__init__.py +0 -0
  627. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/ai_generator.py +0 -0
  628. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/config.py +0 -0
  629. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/dedupe.py +0 -0
  630. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/discovery.py +0 -0
  631. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/drift.py +0 -0
  632. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/engine.py +0 -0
  633. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/enhanced_templates.py +0 -0
  634. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/example_verifier.py +0 -0
  635. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/manifest.py +0 -0
  636. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/models.py +0 -0
  637. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/reports.py +0 -0
  638. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/templates.py +0 -0
  639. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/undo_redo.py +0 -0
  640. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/standardise/validator.py +0 -0
  641. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/__init__.py +0 -0
  642. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/dynamodb_adapter.py +0 -0
  643. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/mongodb_adapter.py +0 -0
  644. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/postgresql_adapter.py +0 -0
  645. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/redis_adapter.py +0 -0
  646. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/storage/valkey_adapter.py +0 -0
  647. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/__init__.py +0 -0
  648. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/batch_source.py +0 -0
  649. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/cli_docs_source.py +0 -0
  650. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/discovery.py +0 -0
  651. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/docs_source.py +0 -0
  652. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/examples_source.py +0 -0
  653. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/executor.py +0 -0
  654. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/models.py +0 -0
  655. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/report_viewer.py +0 -0
  656. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/reporter.py +0 -0
  657. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/suite_runner/runner.py +0 -0
  658. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/__init__.py +0 -0
  659. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/cache.py +0 -0
  660. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/dependency_checker.py +0 -0
  661. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/discovery.py +0 -0
  662. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/loader.py +0 -0
  663. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/registry.py +0 -0
  664. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/resolver.py +0 -0
  665. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/security.py +0 -0
  666. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/tool_override.py +0 -0
  667. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/templates/tools_doctor.py +0 -0
  668. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/__init__.py +0 -0
  669. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/audio.py +0 -0
  670. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/glob_tool.py +0 -0
  671. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/grep_tool.py +0 -0
  672. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/kanban_tools.py +0 -0
  673. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/multiedit.py +0 -0
  674. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/tools/skill_manage.py +0 -0
  675. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/__init__.py +0 -0
  676. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/_ollama.py +0 -0
  677. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/__init__.py +0 -0
  678. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/grader.py +0 -0
  679. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/hook.py +0 -0
  680. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/models.py +0 -0
  681. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/orchestrator.py +0 -0
  682. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/agents/storage.py +0 -0
  683. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/llm/__init__.py +0 -0
  684. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train/llm/trainer.py +0 -0
  685. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train.py +0 -0
  686. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/train_vision.py +0 -0
  687. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/_aiui_datastore.py +0 -0
  688. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/_external_agents.py +0 -0
  689. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/callbacks.py +0 -0
  690. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/components/aicoder.py +0 -0
  691. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/context.py +0 -0
  692. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui/database_config.py +0 -0
  693. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_agents/__init__.py +0 -0
  694. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_agents/default_app.py +0 -0
  695. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_bot/__init__.py +0 -0
  696. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_bot/default_app.py +0 -0
  697. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_chat/__init__.py +0 -0
  698. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_chat/default_app.py +0 -0
  699. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_dashboard/default_app.py +0 -0
  700. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_realtime/__init__.py +0 -0
  701. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/ui_realtime/default_app.py +0 -0
  702. {praisonai-4.6.104 → praisonai-4.6.108}/praisonai/upload_vision.py +0 -0
  703. {praisonai-4.6.104 → praisonai-4.6.108}/setup.cfg +0 -0
  704. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test.py +0 -0
  705. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_agents_playbook.py +0 -0
  706. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_approval_system.py +0 -0
  707. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_basic.py +0 -0
  708. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_cli_features.py +0 -0
  709. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_custom_tools_fix.py +0 -0
  710. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_double_api_fix.py +0 -0
  711. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_n8n_agent_invoke.py +0 -0
  712. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_n8n_cli_feature.py +0 -0
  713. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_n8n_integration.py +0 -0
  714. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_phase2_refactor.py +0 -0
  715. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_recipe.py +0 -0
  716. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_registry.py +0 -0
  717. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_runner.py +0 -0
  718. {praisonai-4.6.104 → praisonai-4.6.108}/tests/test_sandboxed_agent_compatibility.py +0 -0
  719. {praisonai-4.6.104 → praisonai-4.6.108}/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.104
3
+ Version: 4.6.108
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,8 +11,8 @@ 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.104
15
- Requires-Dist: praisonai-code
14
+ Requires-Dist: praisonaiagents>=1.6.108
15
+ Requires-Dist: praisonai-code>=0.0.6
16
16
  Requires-Dist: python-dotenv>=0.19.0
17
17
  Requires-Dist: litellm<2,>=1.83.14
18
18
  Requires-Dist: PyYAML>=6.0
@@ -36,6 +36,12 @@ Requires-Dist: fastapi>=0.115.0; extra == "os"
36
36
  Requires-Dist: uvicorn>=0.34.0; extra == "os"
37
37
  Requires-Dist: PyJWT>=2.8.0; extra == "os"
38
38
  Requires-Dist: sse-starlette>=1.6.0; extra == "os"
39
+ Provides-Extra: gateway
40
+ Requires-Dist: fastapi>=0.115.0; extra == "gateway"
41
+ Requires-Dist: uvicorn>=0.34.0; extra == "gateway"
42
+ Requires-Dist: sse-starlette>=1.6.0; extra == "gateway"
43
+ Requires-Dist: websockets>=12.0; extra == "gateway"
44
+ Requires-Dist: watchdog>=3.0.0; extra == "gateway"
39
45
  Provides-Extra: agentops
40
46
  Requires-Dist: agentops>=0.3.12; extra == "agentops"
41
47
  Provides-Extra: langfuse
@@ -123,6 +129,7 @@ Requires-Dist: fastapi>=0.115.0; extra == "all"
123
129
  Requires-Dist: uvicorn>=0.34.0; extra == "all"
124
130
  Requires-Dist: sse-starlette>=1.6.0; extra == "all"
125
131
  Requires-Dist: websockets>=12.0; extra == "all"
132
+ Requires-Dist: watchdog>=3.0.0; extra == "all"
126
133
  Requires-Dist: tavily-python==0.5.0; extra == "all"
127
134
  Requires-Dist: crawl4ai>=0.7.0; extra == "all"
128
135
  Requires-Dist: playwright>=1.47.0; extra == "all"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.104
3
+ Version: 4.6.108
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,8 +11,8 @@ 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.104
15
- Requires-Dist: praisonai-code
14
+ Requires-Dist: praisonaiagents>=1.6.108
15
+ Requires-Dist: praisonai-code>=0.0.6
16
16
  Requires-Dist: python-dotenv>=0.19.0
17
17
  Requires-Dist: litellm<2,>=1.83.14
18
18
  Requires-Dist: PyYAML>=6.0
@@ -36,6 +36,12 @@ Requires-Dist: fastapi>=0.115.0; extra == "os"
36
36
  Requires-Dist: uvicorn>=0.34.0; extra == "os"
37
37
  Requires-Dist: PyJWT>=2.8.0; extra == "os"
38
38
  Requires-Dist: sse-starlette>=1.6.0; extra == "os"
39
+ Provides-Extra: gateway
40
+ Requires-Dist: fastapi>=0.115.0; extra == "gateway"
41
+ Requires-Dist: uvicorn>=0.34.0; extra == "gateway"
42
+ Requires-Dist: sse-starlette>=1.6.0; extra == "gateway"
43
+ Requires-Dist: websockets>=12.0; extra == "gateway"
44
+ Requires-Dist: watchdog>=3.0.0; extra == "gateway"
39
45
  Provides-Extra: agentops
40
46
  Requires-Dist: agentops>=0.3.12; extra == "agentops"
41
47
  Provides-Extra: langfuse
@@ -123,6 +129,7 @@ Requires-Dist: fastapi>=0.115.0; extra == "all"
123
129
  Requires-Dist: uvicorn>=0.34.0; extra == "all"
124
130
  Requires-Dist: sse-starlette>=1.6.0; extra == "all"
125
131
  Requires-Dist: websockets>=12.0; extra == "all"
132
+ Requires-Dist: watchdog>=3.0.0; extra == "all"
126
133
  Requires-Dist: tavily-python==0.5.0; extra == "all"
127
134
  Requires-Dist: crawl4ai>=0.7.0; extra == "all"
128
135
  Requires-Dist: playwright>=1.47.0; extra == "all"
@@ -96,6 +96,7 @@ praisonai/bots/_protocol_mixin.py
96
96
  praisonai/bots/_rate_limit.py
97
97
  praisonai/bots/_registry.py
98
98
  praisonai/bots/_relay_adapter.py
99
+ praisonai/bots/_reliability.py
99
100
  praisonai/bots/_reset_policy.py
100
101
  praisonai/bots/_resilience.py
101
102
  praisonai/bots/_run_control.py
@@ -168,13 +169,17 @@ praisonai/claw/default_app.py
168
169
  praisonai/cli/__init__.py
169
170
  praisonai/cli/_paths.py
170
171
  praisonai/cli/_shim.py
172
+ praisonai/cli/_warnings.py
171
173
  praisonai/cli/app.py
172
174
  praisonai/cli/approval_backend.py
173
175
  praisonai/cli/branding.py
174
176
  praisonai/cli/config_loader.py
177
+ praisonai/cli/fallback_schema.py
175
178
  praisonai/cli/langfuse_client.py
176
179
  praisonai/cli/main.py
177
180
  praisonai/cli/schedule_cli.py
181
+ praisonai/cli/schema_provider.py
182
+ praisonai/cli/unified_schema.py
178
183
  praisonai/cli/commands/__init__.py
179
184
  praisonai/cli/commands/acp.py
180
185
  praisonai/cli/commands/agent.py
@@ -1,8 +1,8 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.104
5
- praisonai-code
4
+ praisonaiagents>=1.6.108
5
+ praisonai-code>=0.0.6
6
6
  python-dotenv>=0.19.0
7
7
  litellm<2,>=1.83.14
8
8
  PyYAML>=6.0
@@ -32,6 +32,7 @@ fastapi>=0.115.0
32
32
  uvicorn>=0.34.0
33
33
  sse-starlette>=1.6.0
34
34
  websockets>=12.0
35
+ watchdog>=3.0.0
35
36
  tavily-python==0.5.0
36
37
  crawl4ai>=0.7.0
37
38
  playwright>=1.47.0
@@ -152,6 +153,13 @@ boto3>=1.35.0
152
153
  langflow>=1.0.0
153
154
  requests>=2.31.0
154
155
 
156
+ [gateway]
157
+ fastapi>=0.115.0
158
+ uvicorn>=0.34.0
159
+ sse-starlette>=1.6.0
160
+ websockets>=12.0
161
+ watchdog>=3.0.0
162
+
155
163
  [google-adk]
156
164
  praisonai-frameworks[google-adk]>=0.1.8
157
165
  praisonai-tools>=0.1.0
@@ -153,8 +153,8 @@ def __getattr__(name):
153
153
  elif name == 'run_integrated_gateway':
154
154
  from .integration.gateway_host import run_integrated_gateway
155
155
  return run_integrated_gateway
156
- elif name == 'AgentApp':
157
- # Silent alias for AgentOS (backward compatibility)
156
+ elif name in ('AgentOS', 'AgentApp'):
157
+ # AgentApp is a silent alias for AgentOS (backward compatibility)
158
158
  from .app import AgentOS
159
159
  return AgentOS
160
160
  elif name in ('ManagedAgent', 'ManagedAgentIntegration'):
@@ -116,7 +116,12 @@ def _run_typer(argv):
116
116
 
117
117
 
118
118
  def _run_legacy(argv):
119
- """Dispatch to the legacy argparse CLI (prompts, YAML, deprecated flags)."""
119
+ """Dispatch to the legacy argparse CLI (prompts, YAML, deprecated flags).
120
+
121
+ Wrapper-enhanced: multi-framework YAML and ``--framework crewai`` paths load
122
+ framework adapters via ``praisonai_code._wrapper_bridge`` (requires
123
+ ``pip install praisonai``). Typer hot path remains in ``_run_typer``.
124
+ """
120
125
  from praisonai.cli.main import PraisonAI
121
126
 
122
127
  original = sys.argv
@@ -195,7 +195,6 @@ PYTHON_DOC_ORPHAN_EXCLUSIONS = frozenset({
195
195
  DOC_FEATURE_CATEGORY_ALIASES = {
196
196
  'Callbacks': 'Hooks',
197
197
  'Middleware': 'Hooks',
198
- 'Vector Store': 'Knowledge',
199
198
  'Token Management': 'Context Management',
200
199
  'Jobs': 'Workflows',
201
200
  'Chat': 'Agent',
@@ -377,7 +376,9 @@ class DocsParityGenerator:
377
376
  def _calculate_category_parity(
378
377
  self,
379
378
  feature_groups: Dict[str, List[str]],
380
- doc_groups: Dict[str, tuple[List[str], int]]
379
+ doc_groups: Dict[str, tuple[List[str], int]],
380
+ *,
381
+ apply_python_doc_rules: bool = False,
381
382
  ) -> tuple[DocsParitySummary, List[CategoryParity]]:
382
383
  """Calculate parity at category level, grouped by display name."""
383
384
  # Convert prefix-based groups to display-name-based groups
@@ -398,9 +399,10 @@ class DocsParityGenerator:
398
399
  if prefix == 'other':
399
400
  continue
400
401
  display_name = FEATURE_CATEGORIES.get(prefix, prefix.title())
401
- if display_name in PYTHON_DOC_ORPHAN_EXCLUSIONS:
402
- continue
403
- display_name = DOC_FEATURE_CATEGORY_ALIASES.get(display_name, display_name)
402
+ if apply_python_doc_rules:
403
+ if display_name in PYTHON_DOC_ORPHAN_EXCLUSIONS:
404
+ continue
405
+ display_name = DOC_FEATURE_CATEGORY_ALIASES.get(display_name, display_name)
404
406
  if display_name not in result:
405
407
  result[display_name] = ([], 0)
406
408
  existing_names, existing_lines = result[display_name]
@@ -466,7 +468,9 @@ class DocsParityGenerator:
466
468
  doc_groups = self._group_docs(docs)
467
469
 
468
470
  # Calculate parity
469
- summary, categories = self._calculate_category_parity(feature_groups, doc_groups)
471
+ summary, categories = self._calculate_category_parity(
472
+ feature_groups, doc_groups, apply_python_doc_rules=True
473
+ )
470
474
 
471
475
  # Build category lists - stubs are separate from documented
472
476
  documented = [c for c in categories if c.has_features and c.has_docs and not c.is_stub]
@@ -0,0 +1,14 @@
1
+ """Backward-compatibility shim for :mod:`praisonai._framework_availability`.
2
+
3
+ The implementation moved to :mod:`praisonai_code._framework_availability` (C7).
4
+ """
5
+
6
+ import sys as _sys
7
+
8
+ from praisonai._bootstrap import ensure_praisonai_code
9
+
10
+ ensure_praisonai_code()
11
+
12
+ import praisonai_code._framework_availability as _impl
13
+
14
+ _sys.modules[__name__] = _impl
@@ -0,0 +1,14 @@
1
+ """Backward-compatibility shim for :mod:`praisonai._safe_loader`.
2
+
3
+ The implementation moved to :mod:`praisonai_code._safe_loader` (C7).
4
+ """
5
+
6
+ import sys as _sys
7
+
8
+ from praisonai._bootstrap import ensure_praisonai_code
9
+
10
+ ensure_praisonai_code()
11
+
12
+ import praisonai_code._safe_loader as _impl
13
+
14
+ _sys.modules[__name__] = _impl
@@ -205,11 +205,15 @@ def sanitize_agent_name_for_autogen_v4(name):
205
205
  return sanitized
206
206
 
207
207
  def _resolve_yaml_cli_backend(cli_backend_config, logger):
208
- """Resolve a YAML ``cli_backend`` field to a CliBackendProtocol instance.
209
- Deprecated wrapper. Use praisonai.cli_backends.resolve_cli_backend_config directly.
210
- """
211
- from praisonai.cli_backends import resolve_cli_backend_config
212
- return resolve_cli_backend_config(cli_backend_config)
208
+ """Resolve a YAML ``cli_backend`` field to a CliBackendProtocol instance."""
209
+ if cli_backend_config is None:
210
+ return None
211
+ try:
212
+ from praisonai.cli_backends import resolve_cli_backend_config
213
+ return resolve_cli_backend_config(cli_backend_config)
214
+ except (ImportError, ValueError, TypeError) as exc:
215
+ logger.warning("Failed to resolve cli_backend %r: %s", cli_backend_config, exc)
216
+ return None
213
217
 
214
218
 
215
219
  class AgentsGenerator:
@@ -508,6 +508,52 @@ def fire_schedule_trigger(
508
508
  logger.debug(f"SCHEDULE_TRIGGER hook error (non-fatal): {e}")
509
509
 
510
510
 
511
+ def fire_job_completed(
512
+ runner: Any,
513
+ job_id: str,
514
+ status: str,
515
+ *,
516
+ result: Any = None,
517
+ error: Optional[str] = None,
518
+ deliver: str = "",
519
+ platform: str = "",
520
+ chat_id: str = "",
521
+ thread_id: str = "",
522
+ session_id: str = "",
523
+ agent_name: str = "background",
524
+ ) -> None:
525
+ """Fire JOB_COMPLETED hook when a background job reaches a terminal state.
526
+
527
+ Best-effort and non-fatal: an observability/delivery plugin may subscribe
528
+ to this to react to background completion, but delivery itself is routed by
529
+ the gateway's ``on_job_complete`` callback (see :class:`BotOS`).
530
+ """
531
+ if runner is None:
532
+ return
533
+ try:
534
+ from praisonaiagents.hooks.types import HookEvent
535
+ from praisonaiagents.hooks.events import JobCompletedInput
536
+
537
+ event_input = JobCompletedInput(
538
+ session_id=session_id,
539
+ cwd=os.getcwd(),
540
+ event_name=HookEvent.JOB_COMPLETED,
541
+ timestamp=str(time.time()),
542
+ agent_name=agent_name,
543
+ job_id=job_id,
544
+ status=status,
545
+ result=result,
546
+ error=error,
547
+ deliver=deliver,
548
+ platform=platform,
549
+ chat_id=chat_id,
550
+ thread_id=thread_id,
551
+ )
552
+ _emit(runner, HookEvent.JOB_COMPLETED, event_input)
553
+ except Exception as e:
554
+ logger.debug(f"JOB_COMPLETED hook error (non-fatal): {e}")
555
+
556
+
511
557
  def fire_session_start(
512
558
  runner: Any,
513
559
  session_id: str,
@@ -0,0 +1,190 @@
1
+ """
2
+ Gateway reliability presets (Issue #2531).
3
+
4
+ The gateway ships strong reliability building blocks — a durable inbound
5
+ journal (default-on at the session level), a durable outbound outbox, gateway
6
+ -wide admission control, and graceful-shutdown draining — but the two strongest
7
+ lifecycle knobs (graceful drain and inbound admission) are individually opt-in.
8
+ An operator running the gateway the "obvious" way therefore silently gets a
9
+ no-backpressure deployment that cuts in-flight turns on restart.
10
+
11
+ This module resolves a single, discoverable ``reliability`` preset onto the
12
+ already-existing :class:`BotOS` constructor arguments so the happy path is
13
+ production-grade in one switch, while explicit fields still win.
14
+
15
+ Profiles
16
+ --------
17
+ ``"production"``
18
+ Graceful drain (15s window), inbound admission with a CPU-scaled
19
+ concurrency ceiling and a bounded fair wait queue.
20
+ ``"default"`` / ``None``
21
+ A sane, small graceful-drain window (5s) so a restart doesn't cut
22
+ in-flight turns, but no admission ceiling (unbounded, legacy dispatch).
23
+ Durable inbound journal remains on by default (session level).
24
+ ``"off"``
25
+ Today's immediate-teardown behaviour: no drain, no admission.
26
+
27
+ Precedence
28
+ ----------
29
+ Explicit constructor fields always override the preset. A caller passing
30
+ ``drain_timeout=`` / ``max_concurrent_runs=`` / ``admission_policy=`` keeps
31
+ exactly that value; the preset only fills in the fields left unset.
32
+ """
33
+
34
+ from __future__ import annotations
35
+
36
+ import os
37
+ from dataclasses import dataclass
38
+ from typing import Optional
39
+
40
+ # Sane default graceful-drain window (seconds) applied when neither a preset
41
+ # nor an explicit ``drain_timeout`` selects one. Small enough to keep restarts
42
+ # snappy, long enough that a mid-turn reply is not cut on a rolling deploy.
43
+ _DEFAULT_DRAIN_SECONDS = 5.0
44
+
45
+ # Graceful-drain window for the ``production`` preset.
46
+ _PRODUCTION_DRAIN_SECONDS = 15.0
47
+
48
+ # Bounded wait-queue depth for the ``production`` preset — absorbs short bursts
49
+ # without letting the queue grow unbounded.
50
+ _PRODUCTION_QUEUE_DEPTH = 32
51
+
52
+ _KNOWN_PROFILES = ("production", "default", "off")
53
+
54
+
55
+ def _cpu_scaled_ceiling() -> int:
56
+ """A conservative CPU-scaled default concurrency ceiling.
57
+
58
+ Agent turns are latency-bound (provider calls) rather than CPU-bound, so we
59
+ allow several turns per core while keeping a sane floor/ceiling so a burst
60
+ can't fan out unboundedly.
61
+ """
62
+ try:
63
+ cpus = os.cpu_count() or 2
64
+ except Exception: # pragma: no cover — defensive
65
+ cpus = 2
66
+ return max(4, min(32, cpus * 4))
67
+
68
+
69
+ @dataclass(frozen=True)
70
+ class ResolvedReliability:
71
+ """The concrete knobs a reliability preset resolves to.
72
+
73
+ ``None`` fields mean "leave the constructor default / explicit value in
74
+ place"; non-``None`` fields are the preset-supplied values that fill unset
75
+ constructor arguments.
76
+ """
77
+
78
+ drain_timeout: Optional[float]
79
+ max_concurrent_runs: int
80
+ queue_depth: int
81
+ overflow_policy: str
82
+
83
+
84
+ def normalize_reliability(reliability: Optional[str]) -> Optional[str]:
85
+ """Normalise a reliability value to a known profile name (or ``None``).
86
+
87
+ Accepts ``None`` (unset → the ``default`` posture) and is case/space
88
+ insensitive. Raises ``ValueError`` on an unknown profile so a typo fails
89
+ fast rather than silently degrading robustness.
90
+ """
91
+ if reliability is None:
92
+ return None
93
+ if not isinstance(reliability, str):
94
+ raise ValueError(
95
+ f"reliability must be a string profile name, got {reliability!r}"
96
+ )
97
+ name = reliability.strip().lower()
98
+ if name in ("", "none"):
99
+ return None
100
+ if name not in _KNOWN_PROFILES:
101
+ raise ValueError(
102
+ f"unknown reliability profile {reliability!r}; "
103
+ f"expected one of {', '.join(_KNOWN_PROFILES)}"
104
+ )
105
+ return name
106
+
107
+
108
+ def resolve_reliability(
109
+ reliability: Optional[str],
110
+ *,
111
+ drain_timeout: Optional[float] = None,
112
+ max_concurrent_runs: int = 0,
113
+ queue_depth: int = 0,
114
+ overflow_policy: str = "reject",
115
+ admission_policy: Optional[object] = None,
116
+ ) -> ResolvedReliability:
117
+ """Compose a reliability preset with explicit constructor overrides.
118
+
119
+ Args:
120
+ reliability: Profile name (``"production"`` | ``"default"`` | ``"off"``)
121
+ or ``None`` for the default posture.
122
+ drain_timeout: Explicit graceful-drain window; ``None`` means "let the
123
+ preset decide".
124
+ max_concurrent_runs: Explicit admission ceiling; a positive value wins
125
+ over the preset. ``0`` means "let the preset decide".
126
+ queue_depth: Explicit bounded wait-queue depth (used with admission).
127
+ overflow_policy: Explicit overflow behaviour when the queue is full.
128
+ admission_policy: Explicit admission policy object; when supplied the
129
+ preset does not synthesise admission knobs (the policy wins).
130
+
131
+ Returns:
132
+ A :class:`ResolvedReliability` carrying the effective knobs.
133
+ """
134
+ profile = normalize_reliability(reliability)
135
+
136
+ # Start from the caller's explicit values (these always win).
137
+ resolved_drain = drain_timeout
138
+ resolved_max = int(max_concurrent_runs or 0)
139
+ resolved_queue = int(queue_depth or 0)
140
+ resolved_overflow = overflow_policy or "reject"
141
+
142
+ explicit_admission = admission_policy is not None or resolved_max > 0
143
+
144
+ if profile == "off":
145
+ # Preserve today's immediate-teardown / unbounded-dispatch behaviour,
146
+ # but never override an explicit opt-in.
147
+ if resolved_drain is None:
148
+ resolved_drain = 0.0
149
+ return ResolvedReliability(
150
+ drain_timeout=resolved_drain,
151
+ max_concurrent_runs=resolved_max,
152
+ queue_depth=resolved_queue,
153
+ overflow_policy=resolved_overflow,
154
+ )
155
+
156
+ if profile == "production":
157
+ if resolved_drain is None:
158
+ resolved_drain = _PRODUCTION_DRAIN_SECONDS
159
+ if not explicit_admission:
160
+ resolved_max = _cpu_scaled_ceiling()
161
+ if resolved_queue <= 0:
162
+ resolved_queue = _PRODUCTION_QUEUE_DEPTH
163
+ # A bounded queue is the production-safe default; only fall back to
164
+ # plain reject when the caller has said so explicitly.
165
+ if overflow_policy == "reject":
166
+ resolved_overflow = "queue"
167
+ return ResolvedReliability(
168
+ drain_timeout=resolved_drain,
169
+ max_concurrent_runs=resolved_max,
170
+ queue_depth=resolved_queue,
171
+ overflow_policy=resolved_overflow,
172
+ )
173
+
174
+ # profile in (None, "default"): a sane small drain window so a restart does
175
+ # not cut in-flight turns, but no admission ceiling by default.
176
+ if resolved_drain is None:
177
+ resolved_drain = _DEFAULT_DRAIN_SECONDS
178
+ return ResolvedReliability(
179
+ drain_timeout=resolved_drain,
180
+ max_concurrent_runs=resolved_max,
181
+ queue_depth=resolved_queue,
182
+ overflow_policy=resolved_overflow,
183
+ )
184
+
185
+
186
+ __all__ = [
187
+ "ResolvedReliability",
188
+ "normalize_reliability",
189
+ "resolve_reliability",
190
+ ]