PraisonAI 4.6.54__tar.gz → 4.6.56__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 (826) hide show
  1. {praisonai-4.6.54 → praisonai-4.6.56}/PKG-INFO +2 -2
  2. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/SOURCES.txt +0 -1
  4. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/agents_generator.py +7 -6
  6. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/formatters.py +47 -2
  7. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/main.py +42 -1
  8. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/inc/models.py +0 -2
  9. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/host_app.py +67 -7
  10. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/base.py +14 -2
  11. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/registry.py +7 -5
  12. praisonai-4.6.56/praisonai/llm/env.py +87 -0
  13. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/subprocess.py +111 -22
  14. praisonai-4.6.56/praisonai/version.py +1 -0
  15. {praisonai-4.6.54 → praisonai-4.6.56}/pyproject.toml +1 -1
  16. praisonai-4.6.54/praisonai/deploy.py +0 -223
  17. praisonai-4.6.54/praisonai/llm/env.py +0 -56
  18. praisonai-4.6.54/praisonai/version.py +0 -1
  19. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/dependency_links.txt +0 -0
  20. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/entry_points.txt +0 -0
  21. {praisonai-4.6.54 → praisonai-4.6.56}/PraisonAI.egg-info/top_level.txt +0 -0
  22. {praisonai-4.6.54 → praisonai-4.6.56}/README.md +0 -0
  23. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/__init__.py +0 -0
  24. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/__main__.py +0 -0
  25. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_approval_spec.py +0 -0
  26. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_async_bridge.py +0 -0
  27. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/__init__.py +0 -0
  28. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/api_md.py +0 -0
  29. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/__init__.py +0 -0
  30. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/docs_extractor.py +0 -0
  31. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/docs_generator.py +0 -0
  32. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/generator.py +0 -0
  33. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  34. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/python_extractor.py +0 -0
  35. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  36. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/rust_extractor.py +0 -0
  37. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  38. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  39. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  40. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_entrypoint.py +0 -0
  41. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_framework_availability.py +0 -0
  42. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_logging.py +0 -0
  43. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_registry.py +0 -0
  44. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/_safe_loader.py +0 -0
  45. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/acp/__init__.py +0 -0
  46. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/acp/config.py +0 -0
  47. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/acp/safe_edit.py +0 -0
  48. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/acp/server.py +0 -0
  49. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/acp/session.py +0 -0
  50. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/adapters/__init__.py +0 -0
  51. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/adapters/readers.py +0 -0
  52. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/adapters/rerankers.py +0 -0
  53. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/adapters/retrievers.py +0 -0
  54. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/adapters/vector_stores.py +0 -0
  55. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/agent.py +0 -0
  56. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/agent_scheduler.py +0 -0
  57. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/api/agent_invoke.py +0 -0
  58. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/api/call.py +0 -0
  59. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/app/__init__.py +0 -0
  60. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/app/agentos.py +0 -0
  61. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/async_agent_scheduler.py +0 -0
  62. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/audit/__init__.py +0 -0
  63. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/audit/agent_centric.py +0 -0
  64. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/auto.py +0 -0
  65. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/__init__.py +0 -0
  66. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_ack.py +0 -0
  67. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_approval.py +0 -0
  68. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_approval_base.py +0 -0
  69. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_auth.py +0 -0
  70. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_chunk.py +0 -0
  71. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_commands.py +0 -0
  72. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_config_schema.py +0 -0
  73. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_debounce.py +0 -0
  74. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_defaults.py +0 -0
  75. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_discord_approval.py +0 -0
  76. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_dlq.py +0 -0
  77. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_email_utils.py +0 -0
  78. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_http_approval.py +0 -0
  79. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_mirror.py +0 -0
  80. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_pairing_ui.py +0 -0
  81. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_protocol_mixin.py +0 -0
  82. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_rate_limit.py +0 -0
  83. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_registry.py +0 -0
  84. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_resilience.py +0 -0
  85. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_session.py +0 -0
  86. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_slack_approval.py +0 -0
  87. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_telegram_approval.py +0 -0
  88. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_typing_indicator.py +0 -0
  89. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_unknown_user.py +0 -0
  90. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_webhook_approval.py +0 -0
  91. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  92. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/agentmail.py +0 -0
  93. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/bot.py +0 -0
  94. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/botos.py +0 -0
  95. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/discord.py +0 -0
  96. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/email.py +0 -0
  97. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/linear.py +0 -0
  98. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/media.py +0 -0
  99. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/slack.py +0 -0
  100. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/telegram.py +0 -0
  101. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/bots/whatsapp.py +0 -0
  102. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/__init__.py +0 -0
  103. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/agent.py +0 -0
  104. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/benchmark.py +0 -0
  105. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/cdp_agent.py +0 -0
  106. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/cdp_utils.py +0 -0
  107. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/cli.py +0 -0
  108. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/diagnostics.py +0 -0
  109. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/launcher.py +0 -0
  110. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/playwright_agent.py +0 -0
  111. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/profiling.py +0 -0
  112. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/protocol.py +0 -0
  113. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/report.py +0 -0
  114. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/server.py +0 -0
  115. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/sessions.py +0 -0
  116. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/browser/video.py +0 -0
  117. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/__init__.py +0 -0
  118. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/a2a.py +0 -0
  119. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/assistants.py +0 -0
  120. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/audio.py +0 -0
  121. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/batches.py +0 -0
  122. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/completions.py +0 -0
  123. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/container_files.py +0 -0
  124. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/containers.py +0 -0
  125. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/embeddings.py +0 -0
  126. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/files.py +0 -0
  127. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/fine_tuning.py +0 -0
  128. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/guardrails.py +0 -0
  129. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/images.py +0 -0
  130. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/mcp.py +0 -0
  131. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/messages.py +0 -0
  132. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/moderations.py +0 -0
  133. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/ocr.py +0 -0
  134. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/passthrough.py +0 -0
  135. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/rag.py +0 -0
  136. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/realtime.py +0 -0
  137. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/rerank.py +0 -0
  138. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/responses.py +0 -0
  139. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/search.py +0 -0
  140. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/skills.py +0 -0
  141. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/vector_store_files.py +0 -0
  142. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/vector_stores.py +0 -0
  143. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/capabilities/videos.py +0 -0
  144. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/claw/__init__.py +0 -0
  145. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/claw/default_app.py +0 -0
  146. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/__init__.py +0 -0
  147. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/_paths.py +0 -0
  148. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/app.py +0 -0
  149. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/branding.py +0 -0
  150. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/__init__.py +0 -0
  151. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/acp.py +0 -0
  152. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/agents.py +0 -0
  153. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/app.py +0 -0
  154. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/audit.py +0 -0
  155. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/batch.py +0 -0
  156. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/benchmark.py +0 -0
  157. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/bot.py +0 -0
  158. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/browser.py +0 -0
  159. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/call.py +0 -0
  160. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/chat.py +0 -0
  161. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/claw.py +0 -0
  162. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/code.py +0 -0
  163. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/commit.py +0 -0
  164. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/completion.py +0 -0
  165. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/config.py +0 -0
  166. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/context.py +0 -0
  167. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/dashboard.py +0 -0
  168. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/debug.py +0 -0
  169. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/deploy.py +0 -0
  170. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/diag.py +0 -0
  171. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/docs.py +0 -0
  172. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/doctor.py +0 -0
  173. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/endpoints.py +0 -0
  174. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/environment.py +0 -0
  175. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/eval.py +0 -0
  176. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/examples.py +0 -0
  177. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/flow.py +0 -0
  178. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/gateway.py +0 -0
  179. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/github.py +0 -0
  180. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/hooks.py +0 -0
  181. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/kanban.py +0 -0
  182. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/knowledge.py +0 -0
  183. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/langextract.py +0 -0
  184. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/langfuse.py +0 -0
  185. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/loop.py +0 -0
  186. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/lsp.py +0 -0
  187. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/managed.py +0 -0
  188. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/mcp.py +0 -0
  189. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/memory.py +0 -0
  190. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/mint_link.py +0 -0
  191. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/n8n.py +0 -0
  192. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/obs.py +0 -0
  193. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/onboard.py +0 -0
  194. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/package.py +0 -0
  195. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/pairing.py +0 -0
  196. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/paths.py +0 -0
  197. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/plugins.py +0 -0
  198. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/port.py +0 -0
  199. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/profile.py +0 -0
  200. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/publish.py +0 -0
  201. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/rag.py +0 -0
  202. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/realtime.py +0 -0
  203. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/recipe.py +0 -0
  204. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/registry.py +0 -0
  205. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/replay.py +0 -0
  206. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/research.py +0 -0
  207. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/retrieval.py +0 -0
  208. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/rules.py +0 -0
  209. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/run.py +0 -0
  210. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/sandbox.py +0 -0
  211. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/schedule.py +0 -0
  212. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/serve.py +0 -0
  213. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/session.py +0 -0
  214. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/setup.py +0 -0
  215. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/skills.py +0 -0
  216. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/standardise.py +0 -0
  217. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/templates.py +0 -0
  218. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/test.py +0 -0
  219. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/todo.py +0 -0
  220. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/tools.py +0 -0
  221. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/traces.py +0 -0
  222. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/tracker.py +0 -0
  223. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/train.py +0 -0
  224. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/ui.py +0 -0
  225. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/up.py +0 -0
  226. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/version.py +0 -0
  227. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/commands/workflow.py +0 -0
  228. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/config_loader.py +0 -0
  229. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/configuration/__init__.py +0 -0
  230. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/configuration/loader.py +0 -0
  231. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/configuration/paths.py +0 -0
  232. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/configuration/schema.py +0 -0
  233. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/execution/__init__.py +0 -0
  234. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/execution/core.py +0 -0
  235. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/execution/profiler.py +0 -0
  236. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/execution/request.py +0 -0
  237. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/execution/result.py +0 -0
  238. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/fallback_schema.py +0 -0
  239. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/__init__.py +0 -0
  240. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/acp.py +0 -0
  241. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/action_orchestrator.py +0 -0
  242. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/agent_scheduler.py +0 -0
  243. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/agent_tools.py +0 -0
  244. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/agents.py +0 -0
  245. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/approval.py +0 -0
  246. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/at_mentions.py +0 -0
  247. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/audit_cli.py +0 -0
  248. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/auto_memory.py +0 -0
  249. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/auto_mode.py +0 -0
  250. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/autonomy_mode.py +0 -0
  251. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/background.py +0 -0
  252. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/base.py +0 -0
  253. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/benchmark.py +0 -0
  254. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/bots_cli.py +0 -0
  255. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/capabilities.py +0 -0
  256. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/checkpoints.py +0 -0
  257. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/cli_profiler.py +0 -0
  258. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/code_intelligence.py +0 -0
  259. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/compaction.py +0 -0
  260. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/compare.py +0 -0
  261. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/config_hierarchy.py +0 -0
  262. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/context_manager.py +0 -0
  263. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/cost_tracker.py +0 -0
  264. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/csv_test_runner.py +0 -0
  265. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/debug.py +0 -0
  266. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/deploy.py +0 -0
  267. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/diag.py +0 -0
  268. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/display_jsonl.py +0 -0
  269. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/__init__.py +0 -0
  270. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  271. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  272. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  273. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  274. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  275. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  276. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  277. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  278. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  279. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  280. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  281. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  282. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  283. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  284. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  285. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  286. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  287. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  288. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/engine.py +0 -0
  289. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/handler.py +0 -0
  290. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/models.py +0 -0
  291. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/doctor/registry.py +0 -0
  292. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/endpoints.py +0 -0
  293. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/eval.py +0 -0
  294. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/examples.py +0 -0
  295. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/external_agents.py +0 -0
  296. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/fast_context.py +0 -0
  297. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/file_history.py +0 -0
  298. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/flow_display.py +0 -0
  299. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/gateway.py +0 -0
  300. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/git_attribution.py +0 -0
  301. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/git_integration.py +0 -0
  302. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/guardrail.py +0 -0
  303. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/handoff.py +0 -0
  304. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/hooks.py +0 -0
  305. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/hybrid_workflow.py +0 -0
  306. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/image.py +0 -0
  307. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/interactive_core_headless.py +0 -0
  308. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/interactive_runtime.py +0 -0
  309. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/interactive_test_harness.py +0 -0
  310. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/interactive_tools.py +0 -0
  311. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/interactive_tui.py +0 -0
  312. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/job_workflow.py +0 -0
  313. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/jobs.py +0 -0
  314. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/knowledge.py +0 -0
  315. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/knowledge_cli.py +0 -0
  316. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/lite.py +0 -0
  317. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/logs.py +0 -0
  318. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/lsp_cli.py +0 -0
  319. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  320. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/mcp.py +0 -0
  321. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/message_queue.py +0 -0
  322. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/metrics.py +0 -0
  323. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/migrate.py +0 -0
  324. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/migration_flow.py +0 -0
  325. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/migration_spec.py +0 -0
  326. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/n8n.py +0 -0
  327. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/observability.py +0 -0
  328. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/ollama.py +0 -0
  329. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/onboard.py +0 -0
  330. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/output_modes.py +0 -0
  331. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/output_style.py +0 -0
  332. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/package.py +0 -0
  333. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/performance.py +0 -0
  334. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/persistence.py +0 -0
  335. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/plugin_cli.py +0 -0
  336. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profile.py +0 -0
  337. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profiler/__init__.py +0 -0
  338. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profiler/core.py +0 -0
  339. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profiler/optimizations.py +0 -0
  340. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profiler/suite.py +0 -0
  341. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/profiling.py +0 -0
  342. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/__init__.py +0 -0
  343. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/manager.py +0 -0
  344. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/models.py +0 -0
  345. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/persistence.py +0 -0
  346. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/scheduler.py +0 -0
  347. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/queue/worker.py +0 -0
  348. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/recipe.py +0 -0
  349. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/recipe_creator.py +0 -0
  350. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/recipe_optimizer.py +0 -0
  351. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/recipe_prompts.py +0 -0
  352. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/recipes.py +0 -0
  353. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/registry.py +0 -0
  354. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/repo_map.py +0 -0
  355. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/router.py +0 -0
  356. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/safe_shell.py +0 -0
  357. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/sandbox_cli.py +0 -0
  358. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/sandbox_executor.py +0 -0
  359. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/sdk_knowledge.py +0 -0
  360. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/serve.py +0 -0
  361. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/session.py +0 -0
  362. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/setup/__init__.py +0 -0
  363. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/setup/handler.py +0 -0
  364. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/setup/templates.py +0 -0
  365. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/skills.py +0 -0
  366. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/slash_commands.py +0 -0
  367. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/telemetry.py +0 -0
  368. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/templates.py +0 -0
  369. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/thinking.py +0 -0
  370. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/todo.py +0 -0
  371. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tools.py +0 -0
  372. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/__init__.py +0 -0
  373. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/app.py +0 -0
  374. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/cli.py +0 -0
  375. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/config.py +0 -0
  376. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/debug.py +0 -0
  377. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/events.py +0 -0
  378. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/mock_provider.py +0 -0
  379. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/orchestrator.py +0 -0
  380. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  381. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/help.py +0 -0
  382. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/main.py +0 -0
  383. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/queue.py +0 -0
  384. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/session.py +0 -0
  385. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/screens/settings.py +0 -0
  386. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/session_store.py +0 -0
  387. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  388. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  389. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  390. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  391. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  392. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  393. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/status.py +0 -0
  394. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  395. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/wizard.py +0 -0
  396. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/workflow.py +0 -0
  397. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/features/yaml_utils.py +0 -0
  398. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/__init__.py +0 -0
  399. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/async_tui.py +0 -0
  400. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/config.py +0 -0
  401. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/core.py +0 -0
  402. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/events.py +0 -0
  403. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  404. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  405. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  406. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/praison_io.py +0 -0
  407. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/repl.py +0 -0
  408. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/split_tui.py +0 -0
  409. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/interactive/tui_app.py +0 -0
  410. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/langfuse_client.py +0 -0
  411. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/legacy.py +0 -0
  412. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/output/__init__.py +0 -0
  413. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/output/console.py +0 -0
  414. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/schedule_cli.py +0 -0
  415. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/schema_provider.py +0 -0
  416. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/session/__init__.py +0 -0
  417. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/session/unified.py +0 -0
  418. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/state/__init__.py +0 -0
  419. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/state/identifiers.py +0 -0
  420. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/state/sessions.py +0 -0
  421. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/__init__.py +0 -0
  422. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/config.py +0 -0
  423. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/events.py +0 -0
  424. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/mg_backend.py +0 -0
  425. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/plain.py +0 -0
  426. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/ui/rich_backend.py +0 -0
  427. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli/unified_schema.py +0 -0
  428. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli_backends/__init__.py +0 -0
  429. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli_backends/claude.py +0 -0
  430. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/cli_backends/registry.py +0 -0
  431. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/__init__.py +0 -0
  432. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/agent_tools.py +0 -0
  433. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/diff/__init__.py +0 -0
  434. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/diff/diff_strategy.py +0 -0
  435. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/__init__.py +0 -0
  436. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/apply_diff.py +0 -0
  437. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/execute_command.py +0 -0
  438. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/list_files.py +0 -0
  439. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/read_file.py +0 -0
  440. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/search_replace.py +0 -0
  441. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/tools/write_file.py +0 -0
  442. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/utils/__init__.py +0 -0
  443. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/utils/file_utils.py +0 -0
  444. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/utils/ignore_utils.py +0 -0
  445. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/code/utils/text_utils.py +0 -0
  446. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/__init__.py +0 -0
  447. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/artifact_store.py +0 -0
  448. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/config.py +0 -0
  449. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/history_store.py +0 -0
  450. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/queue.py +0 -0
  451. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/setup.py +0 -0
  452. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/context/terminal_logger.py +0 -0
  453. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/daemon/__init__.py +0 -0
  454. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/daemon/launchd.py +0 -0
  455. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/daemon/systemd.py +0 -0
  456. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/daemon/windows.py +0 -0
  457. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/db/__init__.py +0 -0
  458. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/db/adapter.py +0 -0
  459. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/__init__.py +0 -0
  460. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/api.py +0 -0
  461. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/docker.py +0 -0
  462. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/doctor.py +0 -0
  463. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/main.py +0 -0
  464. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/models.py +0 -0
  465. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/providers/__init__.py +0 -0
  466. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/providers/aws.py +0 -0
  467. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/providers/azure.py +0 -0
  468. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/providers/base.py +0 -0
  469. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/providers/gcp.py +0 -0
  470. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/deploy/schema.py +0 -0
  471. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/__init__.py +0 -0
  472. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/classifier.py +0 -0
  473. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/executor.py +0 -0
  474. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/extractor.py +0 -0
  475. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/reporter.py +0 -0
  476. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/runner.py +0 -0
  477. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/docs_runner/workspace.py +0 -0
  478. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/__init__.py +0 -0
  479. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/a2u_server.py +0 -0
  480. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/discovery.py +0 -0
  481. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/__init__.py +0 -0
  482. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/a2a.py +0 -0
  483. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/a2u.py +0 -0
  484. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/agents_api.py +0 -0
  485. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/base.py +0 -0
  486. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/mcp.py +0 -0
  487. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/recipe.py +0 -0
  488. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  489. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/registry.py +0 -0
  490. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/endpoints/server.py +0 -0
  491. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/__init__.py +0 -0
  492. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/client.py +0 -0
  493. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  494. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  495. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/components/__init__.py +0 -0
  496. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/converter.py +0 -0
  497. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/flow/helpers.py +0 -0
  498. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/__init__.py +0 -0
  499. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  500. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/base.py +0 -0
  501. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  502. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  503. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/registry.py +0 -0
  504. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/framework_adapters/validators.py +0 -0
  505. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/__init__.py +0 -0
  506. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/auth.py +0 -0
  507. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/cookie_auth.py +0 -0
  508. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/exec_approval.py +0 -0
  509. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/gateway_approval.py +0 -0
  510. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/kanban_dispatcher.py +0 -0
  511. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/magic_link.py +0 -0
  512. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/origin_check.py +0 -0
  513. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/pairing.py +0 -0
  514. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/pairing_routes.py +0 -0
  515. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/port_utils.py +0 -0
  516. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/push_channels.py +0 -0
  517. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/push_delivery.py +0 -0
  518. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/push_polling.py +0 -0
  519. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/push_presence.py +0 -0
  520. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/rate_limiter.py +0 -0
  521. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/redis_pubsub.py +0 -0
  522. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/server.py +0 -0
  523. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/gateway/unicode_utils.py +0 -0
  524. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/inbuilt_tools/__init__.py +0 -0
  525. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  526. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/inc/__init__.py +0 -0
  527. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/inc/config.py +0 -0
  528. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/__init__.py +0 -0
  529. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/_legacy_handlers.py +0 -0
  530. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/__init__.py +0 -0
  531. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  532. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/hooks_query.py +0 -0
  533. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  534. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/schedules_runner.py +0 -0
  535. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/usage_bridge.py +0 -0
  536. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/bridges/workflows_service.py +0 -0
  537. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/context_files.py +0 -0
  538. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/gateway_host.py +0 -0
  539. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/pages/__init__.py +0 -0
  540. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/pages/bot_health.py +0 -0
  541. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integration/pages/workflow_runs.py +0 -0
  542. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/__init__.py +0 -0
  543. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/_session_info.py +0 -0
  544. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/_tool_aliases.py +0 -0
  545. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/_unified_registry.py +0 -0
  546. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/claude_code.py +0 -0
  547. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/codex_cli.py +0 -0
  548. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/__init__.py +0 -0
  549. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/daytona.py +0 -0
  550. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/docker.py +0 -0
  551. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/e2b.py +0 -0
  552. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/flyio.py +0 -0
  553. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/local.py +0 -0
  554. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/compute/modal_compute.py +0 -0
  555. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/cursor_cli.py +0 -0
  556. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/db_session_adapter.py +0 -0
  557. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/gemini_cli.py +0 -0
  558. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/hosted_agent.py +0 -0
  559. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/local_agent.py +0 -0
  560. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/managed_agents.py +0 -0
  561. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/managed_local.py +0 -0
  562. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/integrations/sandboxed_agent.py +0 -0
  563. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/__init__.py +0 -0
  564. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/executor.py +0 -0
  565. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/models.py +0 -0
  566. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/router.py +0 -0
  567. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/server.py +0 -0
  568. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/jobs/store.py +0 -0
  569. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/kanban/__init__.py +0 -0
  570. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/kanban/models.py +0 -0
  571. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/kanban/paths.py +0 -0
  572. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/kanban/sqlite_store.py +0 -0
  573. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/llm/__init__.py +0 -0
  574. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/llm/registry.py +0 -0
  575. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/__init__.py +0 -0
  576. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/__init__.py +0 -0
  577. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/agents.py +0 -0
  578. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  579. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  580. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  581. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  582. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/memory.py +0 -0
  583. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/prompts.py +0 -0
  584. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/resources.py +0 -0
  585. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  586. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/auth/__init__.py +0 -0
  587. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/auth/api_key.py +0 -0
  588. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/auth/oauth.py +0 -0
  589. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/auth/oidc.py +0 -0
  590. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/auth/scopes.py +0 -0
  591. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/cli.py +0 -0
  592. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/elicitation.py +0 -0
  593. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/icons.py +0 -0
  594. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/recipe_adapter.py +0 -0
  595. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/recipe_cli.py +0 -0
  596. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/registry.py +0 -0
  597. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/sampling.py +0 -0
  598. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/server.py +0 -0
  599. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/tasks.py +0 -0
  600. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/tool_index.py +0 -0
  601. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/transports/__init__.py +0 -0
  602. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/transports/http_stream.py +0 -0
  603. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/mcp_server/transports/stdio.py +0 -0
  604. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/n8n/__init__.py +0 -0
  605. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/n8n/client.py +0 -0
  606. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/n8n/converter.py +0 -0
  607. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/n8n/preview.py +0 -0
  608. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/n8n/reverse_converter.py +0 -0
  609. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/observability/__init__.py +0 -0
  610. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/observability/hooks.py +0 -0
  611. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/observability/langextract.py +0 -0
  612. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/observability/langfuse.py +0 -0
  613. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/__init__.py +0 -0
  614. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/_valkey_client.py +0 -0
  615. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/config.py +0 -0
  616. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/__init__.py +0 -0
  617. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/_sql_base.py +0 -0
  618. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/async_mysql.py +0 -0
  619. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/async_postgres.py +0 -0
  620. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  621. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/base.py +0 -0
  622. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/json_store.py +0 -0
  623. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/mysql.py +0 -0
  624. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/mysql_new.py +0 -0
  625. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/postgres.py +0 -0
  626. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/singlestore.py +0 -0
  627. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/sqlite.py +0 -0
  628. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/supabase.py +0 -0
  629. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/surrealdb.py +0 -0
  630. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  631. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/conversation/turso.py +0 -0
  632. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/factory.py +0 -0
  633. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/hooks/__init__.py +0 -0
  634. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  635. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/__init__.py +0 -0
  636. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/base.py +0 -0
  637. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/cassandra.py +0 -0
  638. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/chroma.py +0 -0
  639. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  640. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  641. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/couchbase.py +0 -0
  642. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/lancedb.py +0 -0
  643. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  644. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  645. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  646. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/milvus.py +0 -0
  647. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  648. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/pgvector.py +0 -0
  649. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/pinecone.py +0 -0
  650. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/qdrant.py +0 -0
  651. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  652. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  653. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  654. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  655. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  656. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/knowledge/weaviate.py +0 -0
  657. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/migrations/__init__.py +0 -0
  658. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/migrations/manager.py +0 -0
  659. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/orchestrator.py +0 -0
  660. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/registry.py +0 -0
  661. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/__init__.py +0 -0
  662. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/async_mongodb.py +0 -0
  663. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/base.py +0 -0
  664. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/dynamodb.py +0 -0
  665. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/firestore.py +0 -0
  666. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/gcs.py +0 -0
  667. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/memory.py +0 -0
  668. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/mongodb.py +0 -0
  669. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/redis.py +0 -0
  670. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/upstash.py +0 -0
  671. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/state/valkey.py +0 -0
  672. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/tests/__init__.py +0 -0
  673. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/tests/test_all_backends.py +0 -0
  674. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  675. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/profiler.py +0 -0
  676. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/push/__init__.py +0 -0
  677. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/push/client.py +0 -0
  678. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/push/transports.py +0 -0
  679. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/__init__.py +0 -0
  680. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/bridge.py +0 -0
  681. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/core.py +0 -0
  682. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/exceptions.py +0 -0
  683. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/history.py +0 -0
  684. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/models.py +0 -0
  685. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/operations.py +0 -0
  686. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/policy.py +0 -0
  687. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/registry.py +0 -0
  688. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/runtime.py +0 -0
  689. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/security.py +0 -0
  690. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/serve.py +0 -0
  691. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/recipe/server.py +0 -0
  692. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/__init__.py +0 -0
  693. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/analyzer.py +0 -0
  694. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/applier.py +0 -0
  695. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/judge.py +0 -0
  696. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/plan.py +0 -0
  697. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/player.py +0 -0
  698. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/reader.py +0 -0
  699. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/storage.py +0 -0
  700. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/replay/writer.py +0 -0
  701. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/__init__.py +0 -0
  702. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/_compat.py +0 -0
  703. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/_shell.py +0 -0
  704. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/daytona.py +0 -0
  705. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/docker.py +0 -0
  706. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/e2b.py +0 -0
  707. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/modal.py +0 -0
  708. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/sandlock.py +0 -0
  709. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/sandbox/ssh.py +0 -0
  710. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/__init__.py +0 -0
  711. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/_base_scheduler.py +0 -0
  712. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/agent_scheduler.py +0 -0
  713. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  714. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/base.py +0 -0
  715. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/daemon_manager.py +0 -0
  716. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/deployment.py +0 -0
  717. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/executor.py +0 -0
  718. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/shared.py +0 -0
  719. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/state_manager.py +0 -0
  720. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/scheduler/yaml_loader.py +0 -0
  721. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/security/__init__.py +0 -0
  722. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/security/audit.py +0 -0
  723. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/security/injection.py +0 -0
  724. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/security/protected.py +0 -0
  725. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/setup/__init__.py +0 -0
  726. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/setup/build.py +0 -0
  727. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/setup/post_install.py +0 -0
  728. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/setup/setup_conda_env.py +0 -0
  729. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/setup.py +0 -0
  730. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/__init__.py +0 -0
  731. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/ai_generator.py +0 -0
  732. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/config.py +0 -0
  733. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/dedupe.py +0 -0
  734. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/discovery.py +0 -0
  735. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/drift.py +0 -0
  736. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/engine.py +0 -0
  737. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/enhanced_templates.py +0 -0
  738. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/example_verifier.py +0 -0
  739. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/manifest.py +0 -0
  740. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/models.py +0 -0
  741. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/reports.py +0 -0
  742. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/templates.py +0 -0
  743. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/undo_redo.py +0 -0
  744. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/standardise/validator.py +0 -0
  745. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/__init__.py +0 -0
  746. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/dynamodb_adapter.py +0 -0
  747. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/mongodb_adapter.py +0 -0
  748. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/postgresql_adapter.py +0 -0
  749. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/redis_adapter.py +0 -0
  750. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/storage/valkey_adapter.py +0 -0
  751. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/__init__.py +0 -0
  752. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/batch_source.py +0 -0
  753. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/cli_docs_source.py +0 -0
  754. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/discovery.py +0 -0
  755. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/docs_source.py +0 -0
  756. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/examples_source.py +0 -0
  757. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/executor.py +0 -0
  758. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/models.py +0 -0
  759. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/report_viewer.py +0 -0
  760. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/reporter.py +0 -0
  761. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/suite_runner/runner.py +0 -0
  762. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/__init__.py +0 -0
  763. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/cache.py +0 -0
  764. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/dependency_checker.py +0 -0
  765. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/discovery.py +0 -0
  766. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/loader.py +0 -0
  767. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/registry.py +0 -0
  768. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/resolver.py +0 -0
  769. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/security.py +0 -0
  770. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/tool_override.py +0 -0
  771. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/templates/tools_doctor.py +0 -0
  772. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/test.py +0 -0
  773. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tool_registry.py +0 -0
  774. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tool_resolver.py +0 -0
  775. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/__init__.py +0 -0
  776. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/audio.py +0 -0
  777. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/glob_tool.py +0 -0
  778. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/grep_tool.py +0 -0
  779. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/kanban_tools.py +0 -0
  780. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/multiedit.py +0 -0
  781. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/tools/skill_manage.py +0 -0
  782. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/__init__.py +0 -0
  783. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/_ollama.py +0 -0
  784. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/__init__.py +0 -0
  785. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/grader.py +0 -0
  786. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/hook.py +0 -0
  787. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/models.py +0 -0
  788. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/orchestrator.py +0 -0
  789. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/agents/storage.py +0 -0
  790. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/llm/__init__.py +0 -0
  791. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train/llm/trainer.py +0 -0
  792. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train.py +0 -0
  793. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/train_vision.py +0 -0
  794. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/_aiui_datastore.py +0 -0
  795. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/_external_agents.py +0 -0
  796. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/callbacks.py +0 -0
  797. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/components/aicoder.py +0 -0
  798. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/context.py +0 -0
  799. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui/database_config.py +0 -0
  800. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_agents/__init__.py +0 -0
  801. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_agents/default_app.py +0 -0
  802. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_bot/__init__.py +0 -0
  803. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_bot/default_app.py +0 -0
  804. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_chat/__init__.py +0 -0
  805. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_chat/default_app.py +0 -0
  806. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_dashboard/default_app.py +0 -0
  807. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_realtime/__init__.py +0 -0
  808. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/ui_realtime/default_app.py +0 -0
  809. {praisonai-4.6.54 → praisonai-4.6.56}/praisonai/upload_vision.py +0 -0
  810. {praisonai-4.6.54 → praisonai-4.6.56}/setup.cfg +0 -0
  811. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test.py +0 -0
  812. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_agents_playbook.py +0 -0
  813. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_approval_system.py +0 -0
  814. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_basic.py +0 -0
  815. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_cli_features.py +0 -0
  816. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_custom_tools_fix.py +0 -0
  817. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_double_api_fix.py +0 -0
  818. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_n8n_agent_invoke.py +0 -0
  819. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_n8n_cli_feature.py +0 -0
  820. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_n8n_integration.py +0 -0
  821. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_phase2_refactor.py +0 -0
  822. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_recipe.py +0 -0
  823. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_registry.py +0 -0
  824. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_runner.py +0 -0
  825. {praisonai-4.6.54 → praisonai-4.6.56}/tests/test_sandboxed_agent_compatibility.py +0 -0
  826. {praisonai-4.6.54 → praisonai-4.6.56}/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.54
3
+ Version: 4.6.56
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.54
14
+ Requires-Dist: praisonaiagents>=1.6.56
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.54
3
+ Version: 4.6.56
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.54
14
+ Requires-Dist: praisonaiagents>=1.6.56
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
@@ -20,7 +20,6 @@ praisonai/agent_scheduler.py
20
20
  praisonai/agents_generator.py
21
21
  praisonai/async_agent_scheduler.py
22
22
  praisonai/auto.py
23
- praisonai/deploy.py
24
23
  praisonai/profiler.py
25
24
  praisonai/setup.py
26
25
  praisonai/test.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.54
4
+ praisonaiagents>=1.6.56
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -235,8 +235,9 @@ class AgentsGenerator:
235
235
  # CLI users get the process default.
236
236
  self._adapter_registry = adapter_registry or get_default_registry()
237
237
 
238
- # Get framework adapter (availability already validated at CLI entry)
239
- self.framework_adapter = self._get_framework_adapter(framework)
238
+ # Defer framework adapter creation until YAML is loaded
239
+ # This fixes the issue where empty framework string fails before YAML framework is read
240
+ self.framework_adapter = None
240
241
 
241
242
  def _get_framework_adapter(self, framework: str) -> FrameworkAdapter:
242
243
  """
@@ -281,7 +282,7 @@ class AgentsGenerator:
281
282
  self.logger.debug(f"CLI override: lsp = {cli_config['lsp']}")
282
283
 
283
284
  # Handle agent-level overrides using unified approach
284
- agent_level_fields = ['tool_timeout', 'planning_tools', 'autonomy', 'planning', 'web', 'web_fetch']
285
+ agent_level_fields = ['tool_timeout', 'tool_retry_policy', 'planning_tools', 'autonomy', 'planning', 'web', 'web_fetch']
285
286
  agent_overrides = {k: v for k, v in cli_config.items() if k in agent_level_fields}
286
287
 
287
288
  # Handle handoff configuration - convert CLI flags into handoff dict
@@ -377,7 +378,7 @@ class AgentsGenerator:
377
378
 
378
379
  # Select framework with AutoGen version logic
379
380
  framework = self._select_autogen_version(
380
- self.framework or config.get('framework', 'crewai'),
381
+ self.framework or config.get('framework', 'praisonai'),
381
382
  config,
382
383
  )
383
384
 
@@ -537,8 +538,8 @@ class AgentsGenerator:
537
538
  'role', 'goal', 'instructions', 'backstory', 'tools', 'toolsets', 'tasks', 'llm',
538
539
  'function_calling_llm', 'allow_delegation', 'max_iter', 'max_rpm',
539
540
  'max_execution_time', 'verbose', 'cache', 'system_template',
540
- 'prompt_template', 'response_template', 'tool_timeout', 'planning_tools',
541
- 'planning', 'autonomy', 'guardrails', 'streaming', 'stream',
541
+ 'prompt_template', 'response_template', 'tool_timeout', 'tool_retry_policy',
542
+ 'planning_tools', 'planning', 'autonomy', 'guardrails', 'streaming', 'stream',
542
543
  'approval', 'skills', 'cli_backend', 'reflection', 'handoff', 'web', 'web_fetch'
543
544
  }
544
545
 
@@ -144,6 +144,17 @@ class BaseFormatter:
144
144
  class TextFormatter(BaseFormatter):
145
145
  """Text formatter with optional color support."""
146
146
 
147
+ def __init__(
148
+ self,
149
+ no_color: bool = False,
150
+ quiet: bool = False,
151
+ redact: bool = True,
152
+ show_prefix_suffix: bool = False,
153
+ ):
154
+ super().__init__(no_color, quiet, redact, show_prefix_suffix)
155
+ # Cache encoding detection result at initialization
156
+ self._unicode_supported = self._can_encode_unicode()
157
+
147
158
  # ANSI color codes
148
159
  COLORS = {
149
160
  "reset": "\033[0m",
@@ -173,15 +184,49 @@ class TextFormatter(BaseFormatter):
173
184
  CheckStatus.ERROR: "✗",
174
185
  }
175
186
 
187
+ # ASCII fallback symbols for systems that don't support UTF-8
188
+ STATUS_SYMBOLS_ASCII = {
189
+ CheckStatus.PASS: "[OK]",
190
+ CheckStatus.WARN: "[!]",
191
+ CheckStatus.FAIL: "[X]",
192
+ CheckStatus.SKIP: "[-]",
193
+ CheckStatus.ERROR: "[X]",
194
+ }
195
+
176
196
  def _color(self, text: str, color: str) -> str:
177
197
  """Apply color to text if colors are enabled."""
178
198
  if self.no_color:
179
199
  return text
180
200
  return f"{self.COLORS.get(color, '')}{text}{self.COLORS['reset']}"
181
201
 
202
+ def _can_encode_unicode(self) -> bool:
203
+ """Check if stdout can encode Unicode symbols."""
204
+ try:
205
+ # Get stdout encoding
206
+ encoding = getattr(sys.stdout, 'encoding', 'ascii') or 'ascii'
207
+
208
+ # UTF-8 always supports Unicode
209
+ if encoding.lower() in ('utf-8', 'utf8'):
210
+ return True
211
+
212
+ # Test if we can encode our specific Unicode symbols
213
+ test_symbols = ["✓", "⚠", "✗", "○"]
214
+ for symbol in test_symbols:
215
+ try:
216
+ symbol.encode(encoding, errors='strict')
217
+ except (UnicodeEncodeError, LookupError):
218
+ return False
219
+ return True
220
+ except (AttributeError, TypeError):
221
+ # If we can't determine encoding, assume ASCII-only is safer
222
+ return False
223
+
182
224
  def _status_symbol(self, status: CheckStatus) -> str:
183
- """Get colored status symbol."""
184
- symbol = self.STATUS_SYMBOLS.get(status, "?")
225
+ """Get colored status symbol with encoding safety."""
226
+ if self._unicode_supported:
227
+ symbol = self.STATUS_SYMBOLS.get(status, "?")
228
+ else:
229
+ symbol = self.STATUS_SYMBOLS_ASCII.get(status, "[?]")
185
230
  color = self.STATUS_COLORS.get(status, "white")
186
231
  return self._color(symbol, color)
187
232
 
@@ -425,7 +425,6 @@ class PraisonAI:
425
425
 
426
426
  # Handle backends command
427
427
  elif args.command == "backends":
428
- from rich import print
429
428
  subcommand = unknown_args[0] if unknown_args and not unknown_args[0].startswith('-') else None
430
429
 
431
430
  if subcommand == "list" or subcommand is None:
@@ -1096,6 +1095,16 @@ class PraisonAI:
1096
1095
  parser.add_argument("--tool-timeout", type=int, default=60,
1097
1096
  help="Timeout in seconds for each tool call (default: 60)")
1098
1097
 
1098
+ # Tool retry policy - handle transient failures with exponential backoff
1099
+ parser.add_argument("--tool-retry-attempts", type=int, default=3,
1100
+ help="Maximum retry attempts for tool failures (default: 3)")
1101
+ parser.add_argument("--tool-retry-delay", type=int, default=1000,
1102
+ help="Initial retry delay in milliseconds (default: 1000)")
1103
+ parser.add_argument("--tool-retry-backoff", type=float, default=2.0,
1104
+ help="Retry backoff multiplier (default: 2.0)")
1105
+ parser.add_argument("--tool-retry-on", type=str, default="timeout,rate_limit,connection_error",
1106
+ help="Error types to retry (comma-separated, default: timeout,rate_limit,connection_error)")
1107
+
1099
1108
  # Tool Approval - control tool execution approval
1100
1109
  parser.add_argument("--trust", action="store_true", help="Auto-approve all tool executions (skip approval prompts)")
1101
1110
  parser.add_argument("--approve-level", type=str, choices=["low", "medium", "high", "critical"],
@@ -4138,6 +4147,22 @@ Do NOT add any explanations or formatting."""
4138
4147
  tool_timeout = getattr(self.args, 'tool_timeout', None)
4139
4148
  if tool_timeout is not None:
4140
4149
  cli_config['tool_timeout'] = tool_timeout
4150
+
4151
+ # Extract --tool-retry-* flags for retry policy
4152
+ retry_attempts = getattr(self.args, 'tool_retry_attempts', 3)
4153
+ retry_delay = getattr(self.args, 'tool_retry_delay', 1000)
4154
+ retry_backoff = getattr(self.args, 'tool_retry_backoff', 2.0)
4155
+ retry_on_str = getattr(self.args, 'tool_retry_on', "timeout,rate_limit,connection_error")
4156
+ retry_on = set(error_type.strip() for error_type in retry_on_str.split(',') if error_type.strip())
4157
+
4158
+ if retry_attempts > 1: # Only create retry policy if retries are enabled
4159
+ from praisonaiagents.tools.retry import RetryPolicy
4160
+ cli_config['tool_retry_policy'] = RetryPolicy(
4161
+ max_attempts=retry_attempts,
4162
+ initial_delay_ms=retry_delay,
4163
+ backoff_factor=retry_backoff,
4164
+ retry_on=retry_on
4165
+ )
4141
4166
 
4142
4167
  # Extract --planning-tools flag
4143
4168
  planning_tools = getattr(self.args, 'planning_tools', None)
@@ -4396,6 +4421,22 @@ Do NOT add any explanations or formatting."""
4396
4421
  if tool_timeout and tool_timeout > 0:
4397
4422
  agent_config["tool_timeout"] = tool_timeout
4398
4423
 
4424
+ # Tool retry policy - handle transient failures with exponential backoff
4425
+ retry_attempts = getattr(self.args, 'tool_retry_attempts', 3)
4426
+ retry_delay = getattr(self.args, 'tool_retry_delay', 1000)
4427
+ retry_backoff = getattr(self.args, 'tool_retry_backoff', 2.0)
4428
+ retry_on_str = getattr(self.args, 'tool_retry_on', "timeout,rate_limit,connection_error")
4429
+ retry_on = set(error_type.strip() for error_type in retry_on_str.split(',') if error_type.strip())
4430
+
4431
+ if retry_attempts > 1: # Only create retry policy if retries are enabled
4432
+ from praisonaiagents.tools.retry import RetryPolicy
4433
+ agent_config["tool_retry_policy"] = RetryPolicy(
4434
+ max_attempts=retry_attempts,
4435
+ initial_delay_ms=retry_delay,
4436
+ backoff_factor=retry_backoff,
4437
+ retry_on=retry_on
4438
+ )
4439
+
4399
4440
  # Memory
4400
4441
  if getattr(self.args, 'memory', False):
4401
4442
  memory_kwargs = {}
@@ -7,8 +7,6 @@ from urllib.parse import urlparse
7
7
  import importlib.util
8
8
 
9
9
  logger = logging.getLogger(__name__)
10
- _loglevel = os.environ.get('LOGLEVEL', 'INFO').strip().upper() or 'INFO'
11
- logging.basicConfig(level=_loglevel, format='%(asctime)s - %(levelname)s - %(message)s')
12
10
 
13
11
  # Constants
14
12
  LOCAL_SERVER_API_KEY_PLACEHOLDER = "not-needed"
@@ -7,9 +7,64 @@ Set ``PRAISONAI_HOST_LEGACY=1`` to skip provider wiring (callback-only mode).
7
7
  from __future__ import annotations
8
8
 
9
9
  import os
10
+ import contextvars
10
11
  from typing import Any, Dict, List, Optional, Sequence
11
12
 
12
- _CONFIGURED = False
13
+ # Use context variable instead of module-level global for multi-agent safety
14
+ _configured_context: contextvars.ContextVar[bool] = contextvars.ContextVar('host_configured', default=False)
15
+
16
+ # For testing: also maintain a module-level flag that can be accessed across contexts
17
+ _configured_global = False
18
+
19
+ # Backward compatibility for tests
20
+ def reset_configuration() -> None:
21
+ """Reset configuration state for testing. Use instead of host_app._CONFIGURED = False."""
22
+ global _configured_global
23
+ _configured_context.set(False)
24
+ _configured_global = False
25
+
26
+ # Also clear any cached state that might be lingering
27
+ try:
28
+ import praisonaiui.server as srv
29
+ if hasattr(srv, '_provider'):
30
+ srv._provider = None
31
+ if hasattr(srv, '_datastore'):
32
+ srv._datastore = None
33
+ # Clear any other potentially cached state
34
+ if hasattr(srv, '_app'):
35
+ srv._app = None
36
+ # Clear backends registry if it exists
37
+ try:
38
+ import praisonaiui.backends as backends
39
+ if hasattr(backends, 'clear_backends'):
40
+ backends.clear_backends()
41
+ elif hasattr(backends, '_backends'):
42
+ backends._backends.clear()
43
+ except (ImportError, AttributeError):
44
+ pass
45
+ except ImportError:
46
+ pass
47
+
48
+ def is_configured() -> bool:
49
+ """Check if configuration has been applied in current context."""
50
+ return _configured_context.get() or _configured_global
51
+
52
+ # Backward compatibility shim for tests that assign host_app._CONFIGURED = False
53
+ class _ConfiguredShim:
54
+ """Backward compatibility shim that proxies to both ContextVar and global."""
55
+ def __get__(self, obj, objtype=None):
56
+ return _configured_context.get() or _configured_global
57
+
58
+ def __set__(self, obj, value):
59
+ global _configured_global
60
+ _configured_context.set(bool(value))
61
+ _configured_global = bool(value)
62
+
63
+ def __bool__(self):
64
+ return _configured_context.get() or _configured_global
65
+
66
+ # Expose the shim so tests can still use host_app._CONFIGURED = False
67
+ _CONFIGURED = _ConfiguredShim()
13
68
 
14
69
 
15
70
  def is_legacy_host() -> bool:
@@ -38,7 +93,11 @@ def configure_host(
38
93
  **kwargs: Any,
39
94
  ) -> None:
40
95
  """Apply PraisonAIUI host settings and wire L1 backends (unless legacy mode)."""
41
- global _CONFIGURED
96
+ global _configured_global
97
+
98
+ # Check if already configured in this context to avoid duplicate configuration
99
+ if _configured_context.get() or _configured_global:
100
+ return
42
101
 
43
102
  import praisonaiui as aiui
44
103
  from praisonai.ui._aiui_datastore import PraisonAISessionDataStore
@@ -78,7 +137,9 @@ def configure_host(
78
137
  if not is_legacy_host():
79
138
  from praisonaiui.providers import PraisonAIProvider
80
139
  from praisonaiui.server import set_provider
81
-
140
+
141
+ # Always proceed with provider setup unless explicitly skipped by legacy mode
142
+ # Tests that need to override providers should do so after configure_host() completes
82
143
  kwargs = dict(agent_kwargs or {})
83
144
  if agents:
84
145
  set_provider(PraisonAIProvider(agents=list(agents), **kwargs))
@@ -112,7 +173,8 @@ def configure_host(
112
173
  except ImportError:
113
174
  pass # L3 pages are optional
114
175
 
115
- _CONFIGURED = True
176
+ _configured_context.set(True)
177
+ _configured_global = True
116
178
 
117
179
 
118
180
  def setup_bridges() -> None:
@@ -170,8 +232,6 @@ def setup_bridges() -> None:
170
232
  from praisonai.integration.bridges.kanban_bridge import register_kanban_backends
171
233
  register_kanban_backends()
172
234
 
173
- except Exception as exc:
174
- log.debug("aiui backend injection failed: %s", exc)
175
235
  except Exception as exc:
176
236
  log.warning("aiui backend injection failed: %s", exc)
177
237
 
@@ -180,7 +240,7 @@ def create_host_app():
180
240
  """Return the Starlette app from PraisonAIUI (call after ``configure_host``)."""
181
241
  from praisonaiui.server import create_app
182
242
 
183
- if not _CONFIGURED:
243
+ if not (_configured_context.get() or _configured_global):
184
244
  configure_host()
185
245
  return create_app()
186
246
 
@@ -102,13 +102,25 @@ class BaseCLIIntegration(ABC):
102
102
  """
103
103
  cmd = self.cli_command
104
104
  cache = BaseCLIIntegration._availability_cache
105
- if cmd in cache:
106
- return cache[cmd]
107
105
  with BaseCLIIntegration._availability_cache_lock:
108
106
  if cmd not in cache:
109
107
  cache[cmd] = shutil.which(cmd) is not None
110
108
  return cache[cmd]
111
109
 
110
+ @classmethod
111
+ def invalidate_availability(cls, command: Optional[str] = None) -> None:
112
+ """
113
+ Invalidate availability cache for CLI tools.
114
+
115
+ Args:
116
+ command: Specific CLI command to invalidate, or None to clear all
117
+ """
118
+ with cls._availability_cache_lock:
119
+ if command is None:
120
+ cls._availability_cache.clear()
121
+ else:
122
+ cls._availability_cache.pop(command, None)
123
+
112
124
  @abstractmethod
113
125
  async def execute(self, prompt: str, **options) -> str:
114
126
  """
@@ -19,8 +19,10 @@ Usage:
19
19
  # Register custom integration
20
20
  registry.register('my-agent', MyCustomIntegration)
21
21
 
22
- # Create integration
23
- agent = registry.create('claude', workspace="/path/to/project")
22
+ # Create integration (use try_create for optional behavior)
23
+ agent = registry.try_create('claude', workspace="/path/to/project")
24
+ if agent is None:
25
+ print("Integration 'claude' not found or unavailable")
24
26
 
25
27
  # List available integrations
26
28
  available = await registry.get_available()
@@ -104,9 +106,9 @@ class ExternalAgentRegistry(PluginRegistry[BaseCLIIntegration]):
104
106
  """
105
107
  return self.list_names()
106
108
 
107
- def create(self, name: str, **kwargs: Any) -> Optional[BaseCLIIntegration]:
109
+ def try_create(self, name: str, **kwargs: Any) -> Optional[BaseCLIIntegration]:
108
110
  """
109
- Create an instance of the specified integration.
111
+ Try to create an instance of the specified integration.
110
112
 
111
113
  Args:
112
114
  name: Name of the integration
@@ -217,7 +219,7 @@ def create_integration(name: str, **kwargs: Any) -> Optional[BaseCLIIntegration]
217
219
  BaseCLIIntegration: Instance of the integration, or None if not found
218
220
  """
219
221
  registry = get_default_registry()
220
- return registry.create(name, **kwargs)
222
+ return registry.try_create(name, **kwargs)
221
223
 
222
224
 
223
225
  def get_available_integrations() -> Dict[str, bool]:
@@ -0,0 +1,87 @@
1
+ """
2
+ LLM endpoint environment variable resolver.
3
+
4
+ Provides a single source of truth for resolving LLM endpoint configuration
5
+ from environment variables, ensuring consistent precedence across all components.
6
+ """
7
+
8
+ import os
9
+ from dataclasses import dataclass
10
+ from typing import Optional
11
+
12
+
13
+ @dataclass(frozen=True)
14
+ class LLMEndpoint:
15
+ """LLM endpoint configuration resolved from environment variables."""
16
+ model: str
17
+ base_url: str
18
+ api_key: Optional[str]
19
+
20
+
21
+ # Map well-known model prefixes to their (env-var, default base_url).
22
+ _PROVIDER_MAP = {
23
+ "anthropic/": ("ANTHROPIC_API_KEY", "https://api.anthropic.com/v1"),
24
+ "google/": ("GOOGLE_API_KEY", "https://generativelanguage.googleapis.com/v1beta"),
25
+ "gemini/": ("GEMINI_API_KEY", "https://generativelanguage.googleapis.com/v1beta"),
26
+ "groq/": ("GROQ_API_KEY", "https://api.groq.com/openai/v1"),
27
+ "cohere/": ("COHERE_API_KEY", "https://api.cohere.ai/v1"),
28
+ "openrouter/": ("OPENROUTER_API_KEY", "https://openrouter.ai/api/v1"),
29
+ "ollama/": ("OLLAMA_API_KEY", "http://localhost:11434/v1"),
30
+ }
31
+
32
+ # Documented, single precedence list. Add new providers here only.
33
+ _MODEL_VARS = ("MODEL_NAME", "OPENAI_MODEL_NAME")
34
+ _BASE_URL_VARS = ("OPENAI_BASE_URL", "OPENAI_API_BASE", "OLLAMA_API_BASE")
35
+ _DEFAULT_MODEL = "gpt-4o-mini"
36
+ _DEFAULT_BASE = "https://api.openai.com/v1"
37
+ _DEFAULT_KEY_VAR = "OPENAI_API_KEY"
38
+
39
+
40
+ def _first_set(*names: str) -> Optional[str]:
41
+ """Return the first environment variable that is set and non-empty."""
42
+ for name in names:
43
+ value = os.environ.get(name)
44
+ if value:
45
+ return value
46
+ return None
47
+
48
+
49
+ def _provider_from_model(model: str) -> tuple[str, str | None]:
50
+ """Get provider-specific API key environment variable and base URL for a model."""
51
+ for prefix, (key_var, default_base) in _PROVIDER_MAP.items():
52
+ if model.startswith(prefix):
53
+ return key_var, default_base
54
+ return _DEFAULT_KEY_VAR, None
55
+
56
+
57
+ def resolve_llm_endpoint(*, default_base: str = _DEFAULT_BASE) -> LLMEndpoint:
58
+ """
59
+ Resolve LLM endpoint configuration from environment variables.
60
+
61
+ Precedence order:
62
+ - Model: MODEL_NAME > OPENAI_MODEL_NAME > default
63
+ - Base URL: OPENAI_BASE_URL > OPENAI_API_BASE > OLLAMA_API_BASE > provider default > default
64
+ - API Key: provider-specific key (e.g., ANTHROPIC_API_KEY) > OPENAI_API_KEY fallback
65
+
66
+ Args:
67
+ default_base: Default base URL if none found in environment variables
68
+
69
+ Returns:
70
+ LLMEndpoint with resolved configuration
71
+ """
72
+ model = _first_set(*_MODEL_VARS) or _DEFAULT_MODEL
73
+ key_var, provider_base = _provider_from_model(model)
74
+
75
+ base_url = (
76
+ _first_set(*_BASE_URL_VARS)
77
+ or provider_base
78
+ or default_base
79
+ )
80
+
81
+ # Try provider-specific key first; fall back to OPENAI_API_KEY only for
82
+ # OpenAI-compatible proxies that may use a single shared key.
83
+ api_key = os.environ.get(key_var) or (
84
+ os.environ.get("OPENAI_API_KEY") if key_var == "OPENAI_API_KEY" else None
85
+ )
86
+
87
+ return LLMEndpoint(model=model, base_url=base_url, api_key=api_key)