PraisonAI 4.6.63__tar.gz → 4.6.64__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 (850) hide show
  1. {praisonai-4.6.63 → praisonai-4.6.64}/PKG-INFO +2 -2
  2. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/SOURCES.txt +14 -1
  4. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_async_bridge.py +49 -48
  6. praisonai-4.6.64/praisonai/_lazy_cache.py +38 -0
  7. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/agent.py +1 -0
  8. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/agents_generator.py +8 -122
  9. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/auto.py +11 -47
  10. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/__init__.py +13 -0
  11. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_chunk.py +52 -11
  12. praisonai-4.6.64/praisonai/bots/_commands.py +413 -0
  13. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_config_schema.py +30 -0
  14. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_defaults.py +1 -1
  15. praisonai-4.6.64/praisonai/bots/_delivery.py +252 -0
  16. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_dlq.py +261 -1
  17. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_ingress.py +68 -3
  18. praisonai-4.6.64/praisonai/bots/_presentation_approval.py +269 -0
  19. praisonai-4.6.64/praisonai/bots/_presentation_renderer.py +379 -0
  20. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_registry.py +84 -4
  21. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_resilience.py +87 -1
  22. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_session.py +41 -16
  23. praisonai-4.6.64/praisonai/bots/_status.py +256 -0
  24. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_streaming.py +31 -1
  25. praisonai-4.6.64/praisonai/bots/_typing.py +203 -0
  26. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/botos.py +266 -17
  27. praisonai-4.6.64/praisonai/bots/delivery.py +222 -0
  28. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/discord.py +64 -0
  29. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/email.py +20 -0
  30. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/slack.py +76 -0
  31. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/telegram.py +280 -20
  32. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/whatsapp.py +20 -0
  33. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/app.py +2 -0
  34. praisonai-4.6.64/praisonai/cli/approval_backend.py +263 -0
  35. praisonai-4.6.64/praisonai/cli/commands/auth.py +382 -0
  36. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/config.py +287 -46
  37. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/doctor.py +17 -0
  38. praisonai-4.6.64/praisonai/cli/commands/permissions.py +272 -0
  39. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/run.py +79 -43
  40. praisonai-4.6.64/praisonai/cli/configuration/credentials.py +267 -0
  41. praisonai-4.6.64/praisonai/cli/configuration/resolver.py +543 -0
  42. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/configuration/schema.py +69 -2
  43. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/approval.py +26 -5
  44. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/handler.py +141 -0
  45. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/models.py +4 -0
  46. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/gateway.py +0 -56
  47. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/serve.py +0 -96
  48. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/setup/handler.py +37 -6
  49. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/main.py +60 -16
  50. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/state/project_sessions.py +40 -1
  51. praisonai-4.6.64/praisonai/gateway/health_monitor.py +314 -0
  52. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/server.py +25 -0
  53. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/supervisor.py +103 -4
  54. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/inbuilt_tools/__init__.py +2 -2
  55. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/llm/__init__.py +18 -43
  56. praisonai-4.6.64/praisonai/llm/credentials.py +107 -0
  57. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/llm/env.py +60 -13
  58. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tool_resolver.py +82 -5
  59. praisonai-4.6.64/praisonai/version.py +1 -0
  60. {praisonai-4.6.63 → praisonai-4.6.64}/pyproject.toml +1 -1
  61. praisonai-4.6.63/praisonai/bots/_commands.py +0 -184
  62. praisonai-4.6.63/praisonai/integration/_legacy_handlers.py +0 -18
  63. praisonai-4.6.63/praisonai/version.py +0 -1
  64. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/dependency_links.txt +0 -0
  65. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/entry_points.txt +0 -0
  66. {praisonai-4.6.63 → praisonai-4.6.64}/PraisonAI.egg-info/top_level.txt +0 -0
  67. {praisonai-4.6.63 → praisonai-4.6.64}/README.md +0 -0
  68. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/__init__.py +0 -0
  69. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/__main__.py +0 -0
  70. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_approval_spec.py +0 -0
  71. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/__init__.py +0 -0
  72. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/api_md.py +0 -0
  73. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/__init__.py +0 -0
  74. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/docs_extractor.py +0 -0
  75. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/docs_generator.py +0 -0
  76. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/generator.py +0 -0
  77. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  78. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/python_extractor.py +0 -0
  79. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  80. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/rust_extractor.py +0 -0
  81. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  82. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  83. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  84. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_entrypoint.py +0 -0
  85. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_framework_availability.py +0 -0
  86. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_lockmap.py +0 -0
  87. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_logging.py +0 -0
  88. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_registry.py +0 -0
  89. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/_safe_loader.py +0 -0
  90. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/acp/__init__.py +0 -0
  91. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/acp/config.py +0 -0
  92. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/acp/safe_edit.py +0 -0
  93. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/acp/server.py +0 -0
  94. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/acp/session.py +0 -0
  95. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/adapters/__init__.py +0 -0
  96. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/adapters/readers.py +0 -0
  97. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/adapters/rerankers.py +0 -0
  98. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/adapters/retrievers.py +0 -0
  99. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/adapters/vector_stores.py +0 -0
  100. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/agent_scheduler.py +0 -0
  101. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/api/agent_invoke.py +0 -0
  102. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/api/call.py +0 -0
  103. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/app/__init__.py +0 -0
  104. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/app/agentos.py +0 -0
  105. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/async_agent_scheduler.py +0 -0
  106. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/audit/__init__.py +0 -0
  107. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/audit/agent_centric.py +0 -0
  108. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_ack.py +0 -0
  109. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_approval.py +0 -0
  110. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_approval_base.py +0 -0
  111. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_auth.py +0 -0
  112. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_debounce.py +0 -0
  113. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_discord_approval.py +0 -0
  114. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_email_utils.py +0 -0
  115. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_http_approval.py +0 -0
  116. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_mirror.py +0 -0
  117. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_pairing_ui.py +0 -0
  118. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_protocol_mixin.py +0 -0
  119. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_rate_limit.py +0 -0
  120. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_run_control.py +0 -0
  121. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_slack_approval.py +0 -0
  122. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_telegram_approval.py +0 -0
  123. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_typing_indicator.py +0 -0
  124. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_unknown_user.py +0 -0
  125. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_webhook_approval.py +0 -0
  126. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  127. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/agentmail.py +0 -0
  128. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/bot.py +0 -0
  129. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/linear.py +0 -0
  130. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/media.py +0 -0
  131. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/bots/webhook_security.py +0 -0
  132. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/__init__.py +0 -0
  133. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/agent.py +0 -0
  134. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/benchmark.py +0 -0
  135. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/cdp_agent.py +0 -0
  136. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/cdp_utils.py +0 -0
  137. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/cli.py +0 -0
  138. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/diagnostics.py +0 -0
  139. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/launcher.py +0 -0
  140. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/playwright_agent.py +0 -0
  141. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/profiling.py +0 -0
  142. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/protocol.py +0 -0
  143. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/report.py +0 -0
  144. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/server.py +0 -0
  145. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/sessions.py +0 -0
  146. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/browser/video.py +0 -0
  147. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/__init__.py +0 -0
  148. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/a2a.py +0 -0
  149. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/assistants.py +0 -0
  150. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/audio.py +0 -0
  151. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/batches.py +0 -0
  152. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/completions.py +0 -0
  153. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/container_files.py +0 -0
  154. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/containers.py +0 -0
  155. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/embeddings.py +0 -0
  156. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/files.py +0 -0
  157. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/fine_tuning.py +0 -0
  158. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/guardrails.py +0 -0
  159. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/images.py +0 -0
  160. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/mcp.py +0 -0
  161. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/messages.py +0 -0
  162. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/moderations.py +0 -0
  163. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/ocr.py +0 -0
  164. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/passthrough.py +0 -0
  165. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/rag.py +0 -0
  166. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/realtime.py +0 -0
  167. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/rerank.py +0 -0
  168. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/responses.py +0 -0
  169. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/search.py +0 -0
  170. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/skills.py +0 -0
  171. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/vector_store_files.py +0 -0
  172. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/vector_stores.py +0 -0
  173. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/capabilities/videos.py +0 -0
  174. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/claw/__init__.py +0 -0
  175. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/claw/default_app.py +0 -0
  176. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/__init__.py +0 -0
  177. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/_paths.py +0 -0
  178. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/branding.py +0 -0
  179. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/__init__.py +0 -0
  180. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/acp.py +0 -0
  181. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/agents.py +0 -0
  182. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/app.py +0 -0
  183. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/audit.py +0 -0
  184. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/batch.py +0 -0
  185. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/benchmark.py +0 -0
  186. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/bot.py +0 -0
  187. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/browser.py +0 -0
  188. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/call.py +0 -0
  189. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/chat.py +0 -0
  190. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/claw.py +0 -0
  191. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/code.py +0 -0
  192. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/commit.py +0 -0
  193. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/completion.py +0 -0
  194. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/context.py +0 -0
  195. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/dashboard.py +0 -0
  196. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/debug.py +0 -0
  197. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/deploy.py +0 -0
  198. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/diag.py +0 -0
  199. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/docs.py +0 -0
  200. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/endpoints.py +0 -0
  201. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/environment.py +0 -0
  202. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/eval.py +0 -0
  203. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/examples.py +0 -0
  204. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/flow.py +0 -0
  205. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/gateway.py +0 -0
  206. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/github.py +0 -0
  207. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/hooks.py +0 -0
  208. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/kanban.py +0 -0
  209. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/knowledge.py +0 -0
  210. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/langextract.py +0 -0
  211. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/langfuse.py +0 -0
  212. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/loop.py +0 -0
  213. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/lsp.py +0 -0
  214. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/managed.py +0 -0
  215. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/mcp.py +0 -0
  216. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/memory.py +0 -0
  217. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/mint_link.py +0 -0
  218. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/n8n.py +0 -0
  219. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/obs.py +0 -0
  220. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/onboard.py +0 -0
  221. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/package.py +0 -0
  222. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/pairing.py +0 -0
  223. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/paths.py +0 -0
  224. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/plugins.py +0 -0
  225. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/port.py +0 -0
  226. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/profile.py +0 -0
  227. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/publish.py +0 -0
  228. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/rag.py +0 -0
  229. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/realtime.py +0 -0
  230. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/recipe.py +0 -0
  231. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/registry.py +0 -0
  232. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/replay.py +0 -0
  233. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/research.py +0 -0
  234. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/retrieval.py +0 -0
  235. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/rules.py +0 -0
  236. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/sandbox.py +0 -0
  237. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/schedule.py +0 -0
  238. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/serve.py +0 -0
  239. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/session.py +0 -0
  240. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/setup.py +0 -0
  241. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/skills.py +0 -0
  242. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/standardise.py +0 -0
  243. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/templates.py +0 -0
  244. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/test.py +0 -0
  245. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/todo.py +0 -0
  246. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/tools.py +0 -0
  247. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/traces.py +0 -0
  248. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/tracker.py +0 -0
  249. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/train.py +0 -0
  250. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/ui.py +0 -0
  251. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/up.py +0 -0
  252. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/version.py +0 -0
  253. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/commands/workflow.py +0 -0
  254. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/config_loader.py +0 -0
  255. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/configuration/__init__.py +0 -0
  256. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/configuration/loader.py +0 -0
  257. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/configuration/paths.py +0 -0
  258. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/execution/__init__.py +0 -0
  259. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/execution/core.py +0 -0
  260. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/execution/profiler.py +0 -0
  261. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/execution/request.py +0 -0
  262. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/execution/result.py +0 -0
  263. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/fallback_schema.py +0 -0
  264. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/__init__.py +0 -0
  265. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/acp.py +0 -0
  266. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/action_orchestrator.py +0 -0
  267. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/agent_scheduler.py +0 -0
  268. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/agent_tools.py +0 -0
  269. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/agents.py +0 -0
  270. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/at_mentions.py +0 -0
  271. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/audit_cli.py +0 -0
  272. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/auto_memory.py +0 -0
  273. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/auto_mode.py +0 -0
  274. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/autonomy_mode.py +0 -0
  275. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/background.py +0 -0
  276. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/base.py +0 -0
  277. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/benchmark.py +0 -0
  278. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/bots_cli.py +0 -0
  279. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/capabilities.py +0 -0
  280. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/checkpoints.py +0 -0
  281. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/cli_profiler.py +0 -0
  282. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/code_intelligence.py +0 -0
  283. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/compaction.py +0 -0
  284. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/compare.py +0 -0
  285. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/config_hierarchy.py +0 -0
  286. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/context_manager.py +0 -0
  287. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/cost_tracker.py +0 -0
  288. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/csv_test_runner.py +0 -0
  289. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/debug.py +0 -0
  290. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/deploy.py +0 -0
  291. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/diag.py +0 -0
  292. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/display_jsonl.py +0 -0
  293. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/__init__.py +0 -0
  294. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  295. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  296. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  297. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  298. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  299. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  300. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  301. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  302. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  303. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  304. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  305. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  306. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  307. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  308. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/runtime_checks.py +0 -0
  309. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  310. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  311. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  312. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  313. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/engine.py +0 -0
  314. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/formatters.py +0 -0
  315. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/doctor/registry.py +0 -0
  316. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/endpoints.py +0 -0
  317. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/eval.py +0 -0
  318. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/examples.py +0 -0
  319. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/external_agents.py +0 -0
  320. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/fast_context.py +0 -0
  321. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/file_history.py +0 -0
  322. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/flow_display.py +0 -0
  323. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/git_attribution.py +0 -0
  324. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/git_integration.py +0 -0
  325. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/guardrail.py +0 -0
  326. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/handoff.py +0 -0
  327. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/hooks.py +0 -0
  328. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/hybrid_workflow.py +0 -0
  329. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/image.py +0 -0
  330. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/interactive_core_headless.py +0 -0
  331. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/interactive_runtime.py +0 -0
  332. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/interactive_test_harness.py +0 -0
  333. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/interactive_tools.py +0 -0
  334. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/interactive_tui.py +0 -0
  335. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/job_workflow.py +0 -0
  336. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/jobs.py +0 -0
  337. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/knowledge.py +0 -0
  338. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/knowledge_cli.py +0 -0
  339. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/lite.py +0 -0
  340. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/logs.py +0 -0
  341. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/lsp_cli.py +0 -0
  342. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  343. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/mcp.py +0 -0
  344. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/message_queue.py +0 -0
  345. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/metrics.py +0 -0
  346. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/migrate.py +0 -0
  347. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/migration_flow.py +0 -0
  348. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/migration_spec.py +0 -0
  349. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/n8n.py +0 -0
  350. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/observability.py +0 -0
  351. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/ollama.py +0 -0
  352. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/onboard.py +0 -0
  353. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/output_modes.py +0 -0
  354. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/output_style.py +0 -0
  355. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/package.py +0 -0
  356. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/performance.py +0 -0
  357. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/persistence.py +0 -0
  358. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/plugin_cli.py +0 -0
  359. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profile.py +0 -0
  360. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profiler/__init__.py +0 -0
  361. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profiler/core.py +0 -0
  362. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profiler/optimizations.py +0 -0
  363. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profiler/suite.py +0 -0
  364. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/profiling.py +0 -0
  365. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/__init__.py +0 -0
  366. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/manager.py +0 -0
  367. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/models.py +0 -0
  368. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/persistence.py +0 -0
  369. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/scheduler.py +0 -0
  370. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/queue/worker.py +0 -0
  371. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/recipe.py +0 -0
  372. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/recipe_creator.py +0 -0
  373. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/recipe_optimizer.py +0 -0
  374. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/recipe_prompts.py +0 -0
  375. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/recipes.py +0 -0
  376. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/registry.py +0 -0
  377. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/repo_map.py +0 -0
  378. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/router.py +0 -0
  379. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/safe_shell.py +0 -0
  380. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/sandbox_cli.py +0 -0
  381. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/sandbox_executor.py +0 -0
  382. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/sdk_knowledge.py +0 -0
  383. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/session.py +0 -0
  384. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/setup/__init__.py +0 -0
  385. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/setup/templates.py +0 -0
  386. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/skills.py +0 -0
  387. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/slash_commands.py +0 -0
  388. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/telemetry.py +0 -0
  389. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/templates.py +0 -0
  390. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/thinking.py +0 -0
  391. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/todo.py +0 -0
  392. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tools.py +0 -0
  393. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/__init__.py +0 -0
  394. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/app.py +0 -0
  395. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/cli.py +0 -0
  396. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/config.py +0 -0
  397. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/debug.py +0 -0
  398. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/events.py +0 -0
  399. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/mock_provider.py +0 -0
  400. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/orchestrator.py +0 -0
  401. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  402. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/help.py +0 -0
  403. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/main.py +0 -0
  404. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/queue.py +0 -0
  405. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/session.py +0 -0
  406. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/screens/settings.py +0 -0
  407. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/session_store.py +0 -0
  408. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  409. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  410. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  411. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  412. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  413. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  414. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/status.py +0 -0
  415. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  416. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/wizard.py +0 -0
  417. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/workflow.py +0 -0
  418. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/features/yaml_utils.py +0 -0
  419. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/__init__.py +0 -0
  420. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/async_tui.py +0 -0
  421. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/config.py +0 -0
  422. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/core.py +0 -0
  423. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/events.py +0 -0
  424. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  425. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  426. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  427. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/praison_io.py +0 -0
  428. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/repl.py +0 -0
  429. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/split_tui.py +0 -0
  430. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/interactive/tui_app.py +0 -0
  431. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/langfuse_client.py +0 -0
  432. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/legacy.py +0 -0
  433. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/output/__init__.py +0 -0
  434. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/output/console.py +0 -0
  435. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/schedule_cli.py +0 -0
  436. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/schema_provider.py +0 -0
  437. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/session/__init__.py +0 -0
  438. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/session/unified.py +0 -0
  439. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/state/__init__.py +0 -0
  440. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/state/identifiers.py +0 -0
  441. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/state/sessions.py +0 -0
  442. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/__init__.py +0 -0
  443. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/config.py +0 -0
  444. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/events.py +0 -0
  445. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/mg_backend.py +0 -0
  446. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/plain.py +0 -0
  447. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/ui/rich_backend.py +0 -0
  448. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/unified_schema.py +0 -0
  449. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli/utils/project.py +0 -0
  450. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli_backends/__init__.py +0 -0
  451. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli_backends/claude.py +0 -0
  452. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/cli_backends/registry.py +0 -0
  453. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/__init__.py +0 -0
  454. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/agent_tools.py +0 -0
  455. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/diff/__init__.py +0 -0
  456. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/diff/diff_strategy.py +0 -0
  457. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/__init__.py +0 -0
  458. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/apply_diff.py +0 -0
  459. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/execute_command.py +0 -0
  460. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/list_files.py +0 -0
  461. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/read_file.py +0 -0
  462. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/search_replace.py +0 -0
  463. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/tools/write_file.py +0 -0
  464. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/utils/__init__.py +0 -0
  465. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/utils/file_utils.py +0 -0
  466. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/utils/ignore_utils.py +0 -0
  467. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/code/utils/text_utils.py +0 -0
  468. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/__init__.py +0 -0
  469. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/_storage_path.py +0 -0
  470. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/artifact_store.py +0 -0
  471. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/config.py +0 -0
  472. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/history_store.py +0 -0
  473. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/queue.py +0 -0
  474. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/setup.py +0 -0
  475. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/context/terminal_logger.py +0 -0
  476. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/daemon/__init__.py +0 -0
  477. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/daemon/launchd.py +0 -0
  478. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/daemon/systemd.py +0 -0
  479. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/daemon/windows.py +0 -0
  480. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/db/__init__.py +0 -0
  481. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/db/adapter.py +0 -0
  482. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/__init__.py +0 -0
  483. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/api.py +0 -0
  484. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/docker.py +0 -0
  485. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/doctor.py +0 -0
  486. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/main.py +0 -0
  487. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/models.py +0 -0
  488. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/providers/__init__.py +0 -0
  489. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/providers/aws.py +0 -0
  490. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/providers/azure.py +0 -0
  491. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/providers/base.py +0 -0
  492. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/providers/gcp.py +0 -0
  493. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/deploy/schema.py +0 -0
  494. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/__init__.py +0 -0
  495. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/classifier.py +0 -0
  496. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/executor.py +0 -0
  497. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/extractor.py +0 -0
  498. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/reporter.py +0 -0
  499. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/runner.py +0 -0
  500. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/docs_runner/workspace.py +0 -0
  501. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/__init__.py +0 -0
  502. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/a2u_server.py +0 -0
  503. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/discovery.py +0 -0
  504. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/__init__.py +0 -0
  505. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/a2a.py +0 -0
  506. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/a2u.py +0 -0
  507. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/agents_api.py +0 -0
  508. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/base.py +0 -0
  509. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/mcp.py +0 -0
  510. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/recipe.py +0 -0
  511. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  512. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/registry.py +0 -0
  513. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/endpoints/server.py +0 -0
  514. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/__init__.py +0 -0
  515. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/client.py +0 -0
  516. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  517. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  518. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/components/__init__.py +0 -0
  519. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/converter.py +0 -0
  520. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/flow/helpers.py +0 -0
  521. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/__init__.py +0 -0
  522. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  523. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/base.py +0 -0
  524. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  525. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  526. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/registry.py +0 -0
  527. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/framework_adapters/validators.py +0 -0
  528. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/__init__.py +0 -0
  529. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/auth.py +0 -0
  530. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/cookie_auth.py +0 -0
  531. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/exec_approval.py +0 -0
  532. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/gateway_approval.py +0 -0
  533. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/kanban_dispatcher.py +0 -0
  534. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/magic_link.py +0 -0
  535. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/origin_check.py +0 -0
  536. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/pairing.py +0 -0
  537. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/pairing_routes.py +0 -0
  538. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/port_utils.py +0 -0
  539. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/push_channels.py +0 -0
  540. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/push_delivery.py +0 -0
  541. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/push_polling.py +0 -0
  542. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/push_presence.py +0 -0
  543. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/rate_limiter.py +0 -0
  544. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/redis_pubsub.py +0 -0
  545. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/gateway/unicode_utils.py +0 -0
  546. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  547. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/inc/__init__.py +0 -0
  548. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/inc/config.py +0 -0
  549. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/inc/models.py +0 -0
  550. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/__init__.py +0 -0
  551. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/__init__.py +0 -0
  552. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  553. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/hooks_query.py +0 -0
  554. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  555. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/schedules_runner.py +0 -0
  556. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/usage_bridge.py +0 -0
  557. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/bridges/workflows_service.py +0 -0
  558. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/context_files.py +0 -0
  559. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/gateway_host.py +0 -0
  560. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/host_app.py +0 -0
  561. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/pages/__init__.py +0 -0
  562. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/pages/bot_health.py +0 -0
  563. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integration/pages/workflow_runs.py +0 -0
  564. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/__init__.py +0 -0
  565. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/_session_info.py +0 -0
  566. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/_tool_aliases.py +0 -0
  567. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/_unified_registry.py +0 -0
  568. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/base.py +0 -0
  569. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/claude_code.py +0 -0
  570. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/codex_cli.py +0 -0
  571. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/__init__.py +0 -0
  572. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/daytona.py +0 -0
  573. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/docker.py +0 -0
  574. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/e2b.py +0 -0
  575. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/flyio.py +0 -0
  576. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/local.py +0 -0
  577. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/compute/modal_compute.py +0 -0
  578. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/cursor_cli.py +0 -0
  579. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/db_session_adapter.py +0 -0
  580. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/gemini_cli.py +0 -0
  581. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/hosted_agent.py +0 -0
  582. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/local_agent.py +0 -0
  583. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/managed_agents.py +0 -0
  584. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/managed_local.py +0 -0
  585. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/registry.py +0 -0
  586. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/integrations/sandboxed_agent.py +0 -0
  587. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/__init__.py +0 -0
  588. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/executor.py +0 -0
  589. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/models.py +0 -0
  590. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/path_validation.py +0 -0
  591. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/router.py +0 -0
  592. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/server.py +0 -0
  593. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/jobs/store.py +0 -0
  594. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/kanban/__init__.py +0 -0
  595. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/kanban/models.py +0 -0
  596. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/kanban/paths.py +0 -0
  597. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/kanban/sqlite_store.py +0 -0
  598. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/llm/registry.py +0 -0
  599. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/__init__.py +0 -0
  600. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/__init__.py +0 -0
  601. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/agents.py +0 -0
  602. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  603. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  604. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  605. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  606. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/memory.py +0 -0
  607. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/prompts.py +0 -0
  608. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/resources.py +0 -0
  609. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  610. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/auth/__init__.py +0 -0
  611. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/auth/api_key.py +0 -0
  612. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/auth/oauth.py +0 -0
  613. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/auth/oidc.py +0 -0
  614. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/auth/scopes.py +0 -0
  615. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/cli.py +0 -0
  616. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/elicitation.py +0 -0
  617. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/icons.py +0 -0
  618. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/recipe_adapter.py +0 -0
  619. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/recipe_cli.py +0 -0
  620. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/registry.py +0 -0
  621. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/sampling.py +0 -0
  622. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/server.py +0 -0
  623. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/tasks.py +0 -0
  624. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/tool_index.py +0 -0
  625. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/transports/__init__.py +0 -0
  626. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/transports/http_stream.py +0 -0
  627. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/mcp_server/transports/stdio.py +0 -0
  628. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/n8n/__init__.py +0 -0
  629. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/n8n/client.py +0 -0
  630. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/n8n/converter.py +0 -0
  631. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/n8n/preview.py +0 -0
  632. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/n8n/reverse_converter.py +0 -0
  633. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/observability/__init__.py +0 -0
  634. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/observability/hooks.py +0 -0
  635. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/observability/langextract.py +0 -0
  636. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/observability/langfuse.py +0 -0
  637. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/__init__.py +0 -0
  638. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/_valkey_client.py +0 -0
  639. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/config.py +0 -0
  640. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/__init__.py +0 -0
  641. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/_sql_base.py +0 -0
  642. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/async_mysql.py +0 -0
  643. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/async_postgres.py +0 -0
  644. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  645. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/base.py +0 -0
  646. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/json_store.py +0 -0
  647. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/mysql.py +0 -0
  648. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/mysql_new.py +0 -0
  649. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/postgres.py +0 -0
  650. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/singlestore.py +0 -0
  651. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/sqlite.py +0 -0
  652. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/supabase.py +0 -0
  653. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/surrealdb.py +0 -0
  654. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  655. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/conversation/turso.py +0 -0
  656. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/factory.py +0 -0
  657. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/hooks/__init__.py +0 -0
  658. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  659. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/__init__.py +0 -0
  660. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/base.py +0 -0
  661. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/cassandra.py +0 -0
  662. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/chroma.py +0 -0
  663. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  664. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  665. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/couchbase.py +0 -0
  666. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/lancedb.py +0 -0
  667. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  668. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  669. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  670. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/milvus.py +0 -0
  671. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  672. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/pgvector.py +0 -0
  673. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/pinecone.py +0 -0
  674. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/qdrant.py +0 -0
  675. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  676. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  677. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  678. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  679. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  680. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/knowledge/weaviate.py +0 -0
  681. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/migrations/__init__.py +0 -0
  682. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/migrations/manager.py +0 -0
  683. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/orchestrator.py +0 -0
  684. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/registry.py +0 -0
  685. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/__init__.py +0 -0
  686. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/async_mongodb.py +0 -0
  687. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/base.py +0 -0
  688. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/dynamodb.py +0 -0
  689. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/firestore.py +0 -0
  690. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/gcs.py +0 -0
  691. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/memory.py +0 -0
  692. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/mongodb.py +0 -0
  693. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/redis.py +0 -0
  694. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/upstash.py +0 -0
  695. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/state/valkey.py +0 -0
  696. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/tests/__init__.py +0 -0
  697. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/tests/test_all_backends.py +0 -0
  698. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  699. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/profiler.py +0 -0
  700. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/push/__init__.py +0 -0
  701. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/push/client.py +0 -0
  702. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/push/transports.py +0 -0
  703. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/__init__.py +0 -0
  704. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/bridge.py +0 -0
  705. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/core.py +0 -0
  706. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/exceptions.py +0 -0
  707. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/history.py +0 -0
  708. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/models.py +0 -0
  709. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/operations.py +0 -0
  710. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/policy.py +0 -0
  711. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/registry.py +0 -0
  712. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/runtime.py +0 -0
  713. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/security.py +0 -0
  714. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/serve.py +0 -0
  715. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/recipe/server.py +0 -0
  716. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/__init__.py +0 -0
  717. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/analyzer.py +0 -0
  718. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/applier.py +0 -0
  719. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/judge.py +0 -0
  720. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/plan.py +0 -0
  721. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/player.py +0 -0
  722. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/reader.py +0 -0
  723. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/storage.py +0 -0
  724. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/replay/writer.py +0 -0
  725. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/__init__.py +0 -0
  726. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/_compat.py +0 -0
  727. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/_shell.py +0 -0
  728. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/daytona.py +0 -0
  729. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/docker.py +0 -0
  730. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/e2b.py +0 -0
  731. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/modal.py +0 -0
  732. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/sandlock.py +0 -0
  733. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/ssh.py +0 -0
  734. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/sandbox/subprocess.py +0 -0
  735. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/__init__.py +0 -0
  736. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/_base_scheduler.py +0 -0
  737. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/agent_scheduler.py +0 -0
  738. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  739. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/base.py +0 -0
  740. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/daemon_manager.py +0 -0
  741. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/deployment.py +0 -0
  742. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/executor.py +0 -0
  743. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/shared.py +0 -0
  744. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/state_manager.py +0 -0
  745. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/scheduler/yaml_loader.py +0 -0
  746. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/security/__init__.py +0 -0
  747. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/security/audit.py +0 -0
  748. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/security/injection.py +0 -0
  749. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/security/protected.py +0 -0
  750. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/setup/__init__.py +0 -0
  751. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/setup/build.py +0 -0
  752. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/setup/post_install.py +0 -0
  753. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/setup/setup_conda_env.py +0 -0
  754. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/setup.py +0 -0
  755. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/__init__.py +0 -0
  756. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/ai_generator.py +0 -0
  757. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/config.py +0 -0
  758. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/dedupe.py +0 -0
  759. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/discovery.py +0 -0
  760. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/drift.py +0 -0
  761. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/engine.py +0 -0
  762. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/enhanced_templates.py +0 -0
  763. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/example_verifier.py +0 -0
  764. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/manifest.py +0 -0
  765. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/models.py +0 -0
  766. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/reports.py +0 -0
  767. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/templates.py +0 -0
  768. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/undo_redo.py +0 -0
  769. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/standardise/validator.py +0 -0
  770. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/__init__.py +0 -0
  771. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/dynamodb_adapter.py +0 -0
  772. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/mongodb_adapter.py +0 -0
  773. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/postgresql_adapter.py +0 -0
  774. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/redis_adapter.py +0 -0
  775. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/storage/valkey_adapter.py +0 -0
  776. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/__init__.py +0 -0
  777. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/batch_source.py +0 -0
  778. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/cli_docs_source.py +0 -0
  779. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/discovery.py +0 -0
  780. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/docs_source.py +0 -0
  781. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/examples_source.py +0 -0
  782. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/executor.py +0 -0
  783. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/models.py +0 -0
  784. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/report_viewer.py +0 -0
  785. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/reporter.py +0 -0
  786. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/suite_runner/runner.py +0 -0
  787. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/__init__.py +0 -0
  788. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/cache.py +0 -0
  789. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/dependency_checker.py +0 -0
  790. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/discovery.py +0 -0
  791. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/loader.py +0 -0
  792. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/registry.py +0 -0
  793. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/resolver.py +0 -0
  794. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/security.py +0 -0
  795. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/tool_override.py +0 -0
  796. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/templates/tools_doctor.py +0 -0
  797. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/test.py +0 -0
  798. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tool_registry.py +0 -0
  799. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/__init__.py +0 -0
  800. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/audio.py +0 -0
  801. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/glob_tool.py +0 -0
  802. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/grep_tool.py +0 -0
  803. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/kanban_tools.py +0 -0
  804. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/multiedit.py +0 -0
  805. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/tools/skill_manage.py +0 -0
  806. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/__init__.py +0 -0
  807. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/_ollama.py +0 -0
  808. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/__init__.py +0 -0
  809. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/grader.py +0 -0
  810. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/hook.py +0 -0
  811. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/models.py +0 -0
  812. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/orchestrator.py +0 -0
  813. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/agents/storage.py +0 -0
  814. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/llm/__init__.py +0 -0
  815. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train/llm/trainer.py +0 -0
  816. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train.py +0 -0
  817. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/train_vision.py +0 -0
  818. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/_aiui_datastore.py +0 -0
  819. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/_external_agents.py +0 -0
  820. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/callbacks.py +0 -0
  821. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/components/aicoder.py +0 -0
  822. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/context.py +0 -0
  823. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui/database_config.py +0 -0
  824. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_agents/__init__.py +0 -0
  825. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_agents/default_app.py +0 -0
  826. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_bot/__init__.py +0 -0
  827. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_bot/default_app.py +0 -0
  828. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_chat/__init__.py +0 -0
  829. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_chat/default_app.py +0 -0
  830. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_dashboard/default_app.py +0 -0
  831. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_realtime/__init__.py +0 -0
  832. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/ui_realtime/default_app.py +0 -0
  833. {praisonai-4.6.63 → praisonai-4.6.64}/praisonai/upload_vision.py +0 -0
  834. {praisonai-4.6.63 → praisonai-4.6.64}/setup.cfg +0 -0
  835. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test.py +0 -0
  836. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_agents_playbook.py +0 -0
  837. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_approval_system.py +0 -0
  838. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_basic.py +0 -0
  839. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_cli_features.py +0 -0
  840. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_custom_tools_fix.py +0 -0
  841. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_double_api_fix.py +0 -0
  842. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_n8n_agent_invoke.py +0 -0
  843. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_n8n_cli_feature.py +0 -0
  844. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_n8n_integration.py +0 -0
  845. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_phase2_refactor.py +0 -0
  846. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_recipe.py +0 -0
  847. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_registry.py +0 -0
  848. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_runner.py +0 -0
  849. {praisonai-4.6.63 → praisonai-4.6.64}/tests/test_sandboxed_agent_compatibility.py +0 -0
  850. {praisonai-4.6.63 → praisonai-4.6.64}/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.63
3
+ Version: 4.6.64
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.63
14
+ Requires-Dist: praisonaiagents>=1.6.64
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.63
3
+ Version: 4.6.64
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.63
14
+ Requires-Dist: praisonaiagents>=1.6.64
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
@@ -12,6 +12,7 @@ praisonai/_approval_spec.py
12
12
  praisonai/_async_bridge.py
13
13
  praisonai/_entrypoint.py
14
14
  praisonai/_framework_availability.py
15
+ praisonai/_lazy_cache.py
15
16
  praisonai/_lockmap.py
16
17
  praisonai/_logging.py
17
18
  praisonai/_registry.py
@@ -69,6 +70,7 @@ praisonai/bots/_commands.py
69
70
  praisonai/bots/_config_schema.py
70
71
  praisonai/bots/_debounce.py
71
72
  praisonai/bots/_defaults.py
73
+ praisonai/bots/_delivery.py
72
74
  praisonai/bots/_discord_approval.py
73
75
  praisonai/bots/_dlq.py
74
76
  praisonai/bots/_email_utils.py
@@ -76,6 +78,8 @@ praisonai/bots/_http_approval.py
76
78
  praisonai/bots/_ingress.py
77
79
  praisonai/bots/_mirror.py
78
80
  praisonai/bots/_pairing_ui.py
81
+ praisonai/bots/_presentation_approval.py
82
+ praisonai/bots/_presentation_renderer.py
79
83
  praisonai/bots/_protocol_mixin.py
80
84
  praisonai/bots/_rate_limit.py
81
85
  praisonai/bots/_registry.py
@@ -83,8 +87,10 @@ praisonai/bots/_resilience.py
83
87
  praisonai/bots/_run_control.py
84
88
  praisonai/bots/_session.py
85
89
  praisonai/bots/_slack_approval.py
90
+ praisonai/bots/_status.py
86
91
  praisonai/bots/_streaming.py
87
92
  praisonai/bots/_telegram_approval.py
93
+ praisonai/bots/_typing.py
88
94
  praisonai/bots/_typing_indicator.py
89
95
  praisonai/bots/_unknown_user.py
90
96
  praisonai/bots/_webhook_approval.py
@@ -92,6 +98,7 @@ praisonai/bots/_whatsapp_web_adapter.py
92
98
  praisonai/bots/agentmail.py
93
99
  praisonai/bots/bot.py
94
100
  praisonai/bots/botos.py
101
+ praisonai/bots/delivery.py
95
102
  praisonai/bots/discord.py
96
103
  praisonai/bots/email.py
97
104
  praisonai/bots/linear.py
@@ -147,6 +154,7 @@ praisonai/claw/default_app.py
147
154
  praisonai/cli/__init__.py
148
155
  praisonai/cli/_paths.py
149
156
  praisonai/cli/app.py
157
+ praisonai/cli/approval_backend.py
150
158
  praisonai/cli/branding.py
151
159
  praisonai/cli/config_loader.py
152
160
  praisonai/cli/fallback_schema.py
@@ -161,6 +169,7 @@ praisonai/cli/commands/acp.py
161
169
  praisonai/cli/commands/agents.py
162
170
  praisonai/cli/commands/app.py
163
171
  praisonai/cli/commands/audit.py
172
+ praisonai/cli/commands/auth.py
164
173
  praisonai/cli/commands/batch.py
165
174
  praisonai/cli/commands/benchmark.py
166
175
  praisonai/cli/commands/bot.py
@@ -203,6 +212,7 @@ praisonai/cli/commands/onboard.py
203
212
  praisonai/cli/commands/package.py
204
213
  praisonai/cli/commands/pairing.py
205
214
  praisonai/cli/commands/paths.py
215
+ praisonai/cli/commands/permissions.py
206
216
  praisonai/cli/commands/plugins.py
207
217
  praisonai/cli/commands/port.py
208
218
  praisonai/cli/commands/profile.py
@@ -235,8 +245,10 @@ praisonai/cli/commands/up.py
235
245
  praisonai/cli/commands/version.py
236
246
  praisonai/cli/commands/workflow.py
237
247
  praisonai/cli/configuration/__init__.py
248
+ praisonai/cli/configuration/credentials.py
238
249
  praisonai/cli/configuration/loader.py
239
250
  praisonai/cli/configuration/paths.py
251
+ praisonai/cli/configuration/resolver.py
240
252
  praisonai/cli/configuration/schema.py
241
253
  praisonai/cli/execution/__init__.py
242
254
  praisonai/cli/execution/core.py
@@ -514,6 +526,7 @@ praisonai/gateway/auth.py
514
526
  praisonai/gateway/cookie_auth.py
515
527
  praisonai/gateway/exec_approval.py
516
528
  praisonai/gateway/gateway_approval.py
529
+ praisonai/gateway/health_monitor.py
517
530
  praisonai/gateway/kanban_dispatcher.py
518
531
  praisonai/gateway/magic_link.py
519
532
  praisonai/gateway/origin_check.py
@@ -535,7 +548,6 @@ praisonai/inc/__init__.py
535
548
  praisonai/inc/config.py
536
549
  praisonai/inc/models.py
537
550
  praisonai/integration/__init__.py
538
- praisonai/integration/_legacy_handlers.py
539
551
  praisonai/integration/context_files.py
540
552
  praisonai/integration/gateway_host.py
541
553
  praisonai/integration/host_app.py
@@ -584,6 +596,7 @@ praisonai/kanban/models.py
584
596
  praisonai/kanban/paths.py
585
597
  praisonai/kanban/sqlite_store.py
586
598
  praisonai/llm/__init__.py
599
+ praisonai/llm/credentials.py
587
600
  praisonai/llm/env.py
588
601
  praisonai/llm/registry.py
589
602
  praisonai/mcp_server/__init__.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.63
4
+ praisonaiagents>=1.6.64
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -16,7 +16,10 @@ T = TypeVar("T")
16
16
 
17
17
  _DEFAULT_TIMEOUT = float(os.environ.get("PRAISONAI_RUN_SYNC_TIMEOUT", "300"))
18
18
 
19
- class _BackgroundLoop:
19
+ class AsyncBridge:
20
+ """Per-instance async runner. The module-level `run_sync()` keeps the
21
+ historical shared default; embedders/services should construct their own."""
22
+
20
23
  def __init__(self) -> None:
21
24
  self._loop: asyncio.AbstractEventLoop | None = None
22
25
  self._thread: threading.Thread | None = None
@@ -53,6 +56,34 @@ class _BackgroundLoop:
53
56
  loop = self._spawn_locked()
54
57
  return asyncio.run_coroutine_threadsafe(coro, loop)
55
58
 
59
+ def run_sync(self, coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) -> T:
60
+ try:
61
+ asyncio.get_running_loop()
62
+ except RuntimeError:
63
+ pass
64
+ else:
65
+ raise RuntimeError(
66
+ "run_sync() cannot be called from a running event loop"
67
+ )
68
+ fut = self.submit(coro)
69
+ try:
70
+ return fut.result(timeout=timeout)
71
+ except (TimeoutError, concurrent.futures.TimeoutError):
72
+ fut.cancel()
73
+ try:
74
+ fut.exception(timeout=1.0)
75
+ except (
76
+ TimeoutError,
77
+ concurrent.futures.TimeoutError,
78
+ asyncio.CancelledError,
79
+ FutureCancelledError,
80
+ ):
81
+ pass
82
+ raise
83
+ except BaseException:
84
+ fut.cancel()
85
+ raise
86
+
56
87
  def shutdown(self, timeout: float = 5.0) -> None:
57
88
  with self._lock:
58
89
  loop, thread = self._loop, self._thread
@@ -75,16 +106,17 @@ class _BackgroundLoop:
75
106
  self._loop = None
76
107
  self._thread = None
77
108
 
78
- _BG: "_BackgroundLoop | None" = None
79
- _BG_LOCK = threading.Lock()
109
+ # Backwards-compatible module-level shared default:
110
+ _DEFAULT_BRIDGE: AsyncBridge | None = None
111
+ _DEFAULT_LOCK = threading.Lock()
80
112
 
81
- def _get_bg() -> "_BackgroundLoop":
82
- global _BG
83
- if _BG is None:
84
- with _BG_LOCK:
85
- if _BG is None:
86
- _BG = _BackgroundLoop()
87
- return _BG
113
+ def _default_bridge() -> AsyncBridge:
114
+ global _DEFAULT_BRIDGE
115
+ if _DEFAULT_BRIDGE is None:
116
+ with _DEFAULT_LOCK:
117
+ if _DEFAULT_BRIDGE is None:
118
+ _DEFAULT_BRIDGE = AsyncBridge()
119
+ return _DEFAULT_BRIDGE
88
120
 
89
121
 
90
122
  def run_sync(coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) -> T:
@@ -106,44 +138,13 @@ def run_sync(coro: Awaitable[T], *, timeout: float | None = _DEFAULT_TIMEOUT) ->
106
138
  TimeoutError: If timeout is exceeded
107
139
  Any exception raised by the coroutine
108
140
  """
109
- try:
110
- asyncio.get_running_loop()
111
- except RuntimeError:
112
- pass
113
- else:
114
- raise RuntimeError(
115
- "run_sync() cannot be called from a running event loop; "
116
- "await the coroutine directly instead."
117
- )
118
-
119
- # Submit the coroutine atomically
120
- fut = _get_bg().submit(coro)
121
-
122
- try:
123
- return fut.result(timeout=timeout)
124
- except (TimeoutError, concurrent.futures.TimeoutError):
125
- # Propagate cancellation into the background loop so the underlying
126
- # awaitable (DB query, HTTP call, subprocess wait) actually unwinds.
127
- fut.cancel()
128
- try:
129
- # Give cancellation a short grace period to release resources.
130
- fut.exception(timeout=1.0)
131
- except (
132
- TimeoutError,
133
- concurrent.futures.TimeoutError,
134
- asyncio.CancelledError,
135
- FutureCancelledError,
136
- ):
137
- pass
138
- raise
139
- except BaseException:
140
- # Ctrl-C / GeneratorExit / SystemExit must also cancel the bg task.
141
- fut.cancel()
142
- raise
141
+ return _default_bridge().run_sync(coro, timeout=timeout)
143
142
 
144
143
 
145
144
  def shutdown() -> None:
146
- """Public hook for long-running server processes to stop the bridge cleanly."""
147
- bg = _BG
148
- if bg is not None:
149
- bg.shutdown()
145
+ """Shut down ONLY the shared default bridge (not user-owned instances)."""
146
+ global _DEFAULT_BRIDGE
147
+ with _DEFAULT_LOCK:
148
+ if _DEFAULT_BRIDGE is not None:
149
+ _DEFAULT_BRIDGE.shutdown()
150
+ _DEFAULT_BRIDGE = None
@@ -0,0 +1,38 @@
1
+ """Single source of truth for thread-safe lazy loading of optional deps."""
2
+ import threading
3
+ from typing import Callable, Dict, Optional, TypeVar
4
+
5
+ T = TypeVar("T")
6
+
7
+
8
+ class LazyCache:
9
+ """Thread-safe double-checked lazy cache. Caches None for ImportError."""
10
+
11
+ def __init__(self) -> None:
12
+ self._cache: Dict[str, object] = {}
13
+ self._lock = threading.Lock()
14
+
15
+ def get(self, key: str, loader: Callable[[], T]) -> Optional[T]:
16
+ if key in self._cache:
17
+ return self._cache[key] # type: ignore[return-value]
18
+ with self._lock:
19
+ if key in self._cache:
20
+ return self._cache[key] # type: ignore[return-value]
21
+ try:
22
+ value: object = loader()
23
+ except ImportError:
24
+ value = None
25
+ self._cache[key] = value
26
+ return value # type: ignore[return-value]
27
+
28
+ def reset(self, key: Optional[str] = None) -> None:
29
+ with self._lock:
30
+ if key is None:
31
+ self._cache.clear()
32
+ else:
33
+ self._cache.pop(key, None)
34
+
35
+
36
+ _GLOBAL = LazyCache()
37
+ lazy_get = _GLOBAL.get
38
+ lazy_reset = _GLOBAL.reset
@@ -30,6 +30,7 @@ class Agent(CoreAgent):
30
30
  - None: No CLI backend
31
31
  **kwargs: Keyword arguments for core Agent
32
32
  """
33
+ # Deprecation warning will be emitted by the core Agent class
33
34
  # Resolve CLI backend configuration using unified resolver
34
35
  if cli_backend is not None and not self._is_protocol_instance(cli_backend):
35
36
  from .cli_backends import resolve_cli_backend_config
@@ -386,7 +386,7 @@ class AgentsGenerator:
386
386
  assert_framework_available(adapter.name)
387
387
 
388
388
  # Validate cli_backend compatibility
389
- self._validate_cli_backend_compatibility(config, adapter)
389
+ self._validate_cli_backend_compatibility(config, adapter.name)
390
390
 
391
391
  # Initialize observability hooks
392
392
  from .observability.hooks import init_observability
@@ -411,65 +411,13 @@ class AgentsGenerator:
411
411
 
412
412
  def _build_tools_dict(self, config):
413
413
  """Shared tool resolution logic for sync and async paths."""
414
- tools_dict = {}
415
-
416
- # Demand-driven tool resolution - only resolve tools actually used in YAML
417
- if is_available("crewai") or is_available("autogen") or is_available("praisonaiagents") or is_available("ag2"):
418
- try:
419
- # Collect all tool names mentioned in the YAML config
420
- needed_tools: set[str] = set()
421
- for role_cfg in config.get('roles', {}).values():
422
- for t in role_cfg.get('tools') or []:
423
- if isinstance(t, str) and t.strip():
424
- needed_tools.add(t.strip())
425
- for task_cfg in (role_cfg.get('tasks') or {}).values():
426
- if not isinstance(task_cfg, dict):
427
- continue
428
- for t in task_cfg.get('tools') or []:
429
- if isinstance(t, str) and t.strip():
430
- needed_tools.add(t.strip())
431
-
432
- # Resolve only the tools actually referenced in YAML
433
- for tool_name in needed_tools:
434
- try:
435
- resolved_tool = self.tool_resolver.resolve(tool_name)
436
- if resolved_tool is None:
437
- self.logger.warning(f"Tool '{tool_name}' not found")
438
- continue
439
- tools_dict[tool_name] = (
440
- resolved_tool() if inspect.isclass(resolved_tool) else resolved_tool
441
- )
442
- except Exception as e:
443
- self.logger.warning(f"Failed to initialize tool '{tool_name}': {e}")
444
- continue
445
-
446
- except Exception as e:
447
- self.logger.warning(f"Error collecting YAML tool references: {e}")
448
-
449
- # Add tools from class names - use tool_resolver to check tool validity
450
- for tool_class in self.tools:
451
- if isinstance(tool_class, type):
452
- try:
453
- tool_instance = tool_class()
454
- tool_name = tool_class.__name__
455
- tools_dict[tool_name] = tool_instance
456
- self.logger.debug(f"Added tool: {tool_name}")
457
- except Exception as e:
458
- self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
459
-
460
- root_directory = os.getcwd()
461
- tools_py_path = os.path.join(root_directory, 'tools.py')
462
- tools_dir_path = Path(root_directory) / 'tools'
463
-
464
- # Use consolidated ToolResolver for tools.py loading
465
- tools_dict.update(self.tool_resolver.get_local_tool_classes())
466
- if os.path.isfile(tools_py_path):
467
- self.logger.debug("tools.py exists in the root directory. Loading tools.py and skipping tools folder.")
468
- elif tools_dir_path.is_dir():
469
- tools_dict.update(self.tool_resolver.get_local_tool_classes_from_dir(tools_dir_path))
470
- if tools_dict:
471
- self.logger.debug("tools folder exists in the root directory")
472
-
414
+ tools_dict = self.tool_resolver.resolve_all_from_yaml(config)
415
+ for tool_class in self.tools:
416
+ if isinstance(tool_class, type):
417
+ try:
418
+ tools_dict[tool_class.__name__] = tool_class()
419
+ except (TypeError, ValueError, RuntimeError) as e:
420
+ self.logger.warning(f"Failed to instantiate tool class {tool_class.__name__}: {e}")
473
421
  return tools_dict
474
422
 
475
423
  def _select_framework(self, framework: str, config: Dict[str, Any]) -> Any:
@@ -601,68 +549,6 @@ class AgentsGenerator:
601
549
  f"Unknown field '{field_name}' in {entity_name} '{name}'.{suggestion}"
602
550
  )
603
551
 
604
- def is_function_or_decorated(self, obj):
605
- """
606
- Checks if the given object is a function or has a __call__ method.
607
-
608
- Parameters:
609
- obj (object): The object to be checked.
610
-
611
- Returns:
612
- bool: True if the object is a function or has a __call__ method, False otherwise.
613
- """
614
- return inspect.isfunction(obj) or hasattr(obj, '__call__')
615
-
616
- def load_tools_from_module(self, module_path):
617
- """
618
- Load function tools from a user-supplied module (gated by PRAISONAI_ALLOW_LOCAL_TOOLS).
619
-
620
- Parameters:
621
- module_path (str): The path to the module containing the tools.
622
-
623
- Returns:
624
- dict: A dictionary containing the names of the tools as keys and the corresponding functions or objects as values.
625
- Returns an empty dict if the module cannot be loaded (path missing, loading blocked by PRAISONAI_ALLOW_LOCAL_TOOLS, or any other load error).
626
- """
627
- from ._safe_loader import load_user_module
628
- module = load_user_module(module_path, name="tools_module")
629
- if module is None:
630
- return {}
631
- return {name: obj for name, obj in inspect.getmembers(module, self.is_function_or_decorated)}
632
-
633
- def load_tools_from_module_class(self, module_path):
634
- """
635
- Load BaseTool / langchain tool classes from a user-supplied module (gated by PRAISONAI_ALLOW_LOCAL_TOOLS).
636
- """
637
- from ._safe_loader import load_user_module
638
- module = load_user_module(module_path, name="tools_module")
639
- if module is None:
640
- return {}
641
- return self.tool_resolver._extract_tool_classes(module)
642
-
643
- def load_tools_from_package(self, package_path):
644
- """
645
- Loads tools from a specified package path containing modules with functions or classes.
646
-
647
- Parameters:
648
- package_path (str): The path to the package containing the tools.
649
-
650
- Returns:
651
- dict: A dictionary containing the names of the tools as keys and the corresponding initialized instances of the classes as values.
652
-
653
- Raises:
654
- FileNotFoundError: If the specified package path does not exist.
655
-
656
- This function iterates through all the .py files in the specified package path, excluding those that start with "__". For each file, it imports the corresponding module and checks if it contains any functions or classes that can be loaded as tools. The function then returns a dictionary containing the names of the tools as keys and the corresponding initialized instances of the classes as values.
657
- """
658
- tools_dict = {}
659
- for module_file in os.listdir(package_path):
660
- if module_file.endswith('.py') and not module_file.startswith('__'):
661
- module_name = f"{package_path.name}.{module_file[:-3]}" # Remove .py for import
662
- module = importlib.import_module(module_name)
663
- for name, obj in inspect.getmembers(module, self.is_function_or_decorated):
664
- tools_dict[name] = obj
665
- return tools_dict
666
552
 
667
553
 
668
554
  def _load_config(self):
@@ -24,11 +24,7 @@ T = TypeVar('T')
24
24
  # THREAD-SAFE LAZY LOADING INFRASTRUCTURE - All heavy imports are deferred
25
25
  # =============================================================================
26
26
 
27
- import threading
28
-
29
- # Thread-safe lazy cache for optional dependencies
30
- _optional_lock = threading.Lock()
31
- _optional_cache: dict[str, object] = {}
27
+ from ._lazy_cache import lazy_get
32
28
 
33
29
  def _rich_print(*args, **kwargs):
34
30
  """Lazy-loaded rich.print wrapper."""
@@ -46,29 +42,6 @@ def _yaml_safe_load(stream):
46
42
  return yaml.safe_load(stream)
47
43
 
48
44
 
49
- def _load_optional(key: str, loader):
50
- """Thread-safe lazy loading for optional dependencies.
51
-
52
- Args:
53
- key: Unique key for the dependency
54
- loader: Function that imports and returns the dependency
55
-
56
- Returns:
57
- The loaded dependency or None if import fails
58
- """
59
- if key in _optional_cache:
60
- return _optional_cache[key]
61
-
62
- with _optional_lock:
63
- if key in _optional_cache:
64
- return _optional_cache[key]
65
-
66
- try:
67
- _optional_cache[key] = loader()
68
- except ImportError:
69
- _optional_cache[key] = None
70
-
71
- return _optional_cache[key]
72
45
 
73
46
 
74
47
 
@@ -82,7 +55,7 @@ from ._framework_availability import is_available
82
55
 
83
56
  def _get_crewai():
84
57
  """Lazy load crewai classes (thread-safe)."""
85
- return _load_optional("crewai_classes", lambda: (
58
+ return lazy_get("crewai_classes", lambda: (
86
59
  __import__("crewai", fromlist=["Agent", "Task", "Crew"]).Agent,
87
60
  __import__("crewai", fromlist=["Agent", "Task", "Crew"]).Task,
88
61
  __import__("crewai", fromlist=["Agent", "Task", "Crew"]).Crew,
@@ -91,7 +64,7 @@ def _get_crewai():
91
64
 
92
65
  def _get_autogen():
93
66
  """Lazy load autogen module (thread-safe)."""
94
- return _load_optional("autogen_module", lambda: __import__("autogen"))
67
+ return lazy_get("autogen_module", lambda: __import__("autogen"))
95
68
 
96
69
 
97
70
  def _get_autogen_v4():
@@ -101,7 +74,7 @@ def _get_autogen_v4():
101
74
  from autogen_ext.models.openai import OpenAIChatCompletionClient
102
75
  return (AssistantAgent, OpenAIChatCompletionClient)
103
76
 
104
- return _load_optional("autogen_v4_classes", autogen_v4_loader)
77
+ return lazy_get("autogen_v4_classes", autogen_v4_loader)
105
78
 
106
79
 
107
80
  def _get_praisonai():
@@ -110,7 +83,7 @@ def _get_praisonai():
110
83
  from praisonaiagents import Agent as PraisonAgent, Task as PraisonTask, AgentTeam as Agents
111
84
  return (PraisonAgent, PraisonTask, Agents)
112
85
 
113
- return _load_optional("praisonai_classes", praisonai_loader)
86
+ return lazy_get("praisonai_classes", praisonai_loader)
114
87
 
115
88
 
116
89
  # --- PraisonAI Tools lazy loading ---
@@ -144,12 +117,12 @@ def _get_praisonai_tools():
144
117
  'YoutubeVideoSearchTool': YoutubeVideoSearchTool,
145
118
  }
146
119
 
147
- return _load_optional("praisonai_tools_dict", tools_loader)
120
+ return lazy_get("praisonai_tools_dict", tools_loader)
148
121
 
149
122
 
150
123
  def _get_litellm():
151
124
  """Lazy load litellm module."""
152
- result = _load_optional("litellm", lambda: __import__("litellm"))
125
+ result = lazy_get("litellm", lambda: __import__("litellm"))
153
126
  if result is None:
154
127
  raise ImportError("Install with: pip install litellm")
155
128
  return result
@@ -619,19 +592,9 @@ class BaseAutoGenerator:
619
592
  # Pydantic Models for Structured Output - Lazy Loaded
620
593
  # =============================================================================
621
594
 
622
- # Models are created on first use to avoid importing pydantic at module level
623
- _models_cache = {}
624
- _models_lock = threading.Lock()
625
-
626
595
  def _get_team_models():
627
596
  """Get team structure models, creating them on first use."""
628
- if 'team_models' in _models_cache:
629
- return _models_cache['team_models']
630
-
631
- with _models_lock:
632
- if 'team_models' in _models_cache:
633
- return _models_cache['team_models']
634
-
597
+ def _create_team_models():
635
598
  from pydantic import BaseModel
636
599
 
637
600
  class TaskDetails(BaseModel):
@@ -674,7 +637,7 @@ def _get_team_models():
674
637
  pass_action: str # Action if validation passes (e.g., "continue", "next_step")
675
638
  fail_action: str # Action if validation fails (e.g., "retry", "escalate", "abort")
676
639
 
677
- _models_cache['team_models'] = {
640
+ return {
678
641
  'TaskDetails': TaskDetails,
679
642
  'RoleDetails': RoleDetails,
680
643
  'TeamStructure': TeamStructure,
@@ -682,7 +645,8 @@ def _get_team_models():
682
645
  'PatternRecommendation': PatternRecommendation,
683
646
  'ValidationGate': ValidationGate
684
647
  }
685
- return _models_cache['team_models']
648
+
649
+ return lazy_get('team_models', _create_team_models)
686
650
 
687
651
  class AutoGenerator(BaseAutoGenerator):
688
652
  """
@@ -17,6 +17,7 @@ if TYPE_CHECKING:
17
17
  from .agentmail import AgentMailBot
18
18
  from .bot import Bot
19
19
  from .botos import BotOS
20
+ from .delivery import DeliveryRouter, ChannelDirectory, SessionSource
20
21
  from ._session import BotSessionManager
21
22
  from ._dlq import InboundDLQ, DLQEntry
22
23
  from ._ingress import InboundJournal, JournalEntry
@@ -102,6 +103,16 @@ def __getattr__(name: str):
102
103
  if name == "DraftStreamer":
103
104
  from ._streaming import DraftStreamer
104
105
  return DraftStreamer
106
+ # Delivery routing components
107
+ if name == "DeliveryRouter":
108
+ from .delivery import DeliveryRouter
109
+ return DeliveryRouter
110
+ if name == "ChannelDirectory":
111
+ from .delivery import ChannelDirectory
112
+ return ChannelDirectory
113
+ if name == "SessionSource":
114
+ from .delivery import SessionSource
115
+ return SessionSource
105
116
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
106
117
 
107
118
  __all__ = [
@@ -114,6 +125,8 @@ __all__ = [
114
125
  "WebhookApproval", "HTTPApproval",
115
126
  # Streaming
116
127
  "StreamingConfig", "StreamingMode", "DraftStreamer",
128
+ # Delivery routing
129
+ "DeliveryRouter", "ChannelDirectory", "SessionSource",
117
130
  # W1
118
131
  "mirror_to_session", "BotSessionManager",
119
132
  ]