PraisonAI 4.6.30__tar.gz → 4.6.31__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 (770) hide show
  1. {praisonai-4.6.30 → praisonai-4.6.31}/PKG-INFO +2 -2
  2. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/requires.txt +1 -1
  4. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/__main__.py +15 -0
  5. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/output/console.py +101 -15
  6. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy.py +1 -1
  7. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/models.py +16 -4
  8. praisonai-4.6.31/praisonai/ui/_aiui_datastore.py +141 -0
  9. praisonai-4.6.31/praisonai/version.py +1 -0
  10. {praisonai-4.6.30 → praisonai-4.6.31}/pyproject.toml +1 -1
  11. praisonai-4.6.30/praisonai/ui/_aiui_datastore.py +0 -108
  12. praisonai-4.6.30/praisonai/version.py +0 -1
  13. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/SOURCES.txt +0 -0
  14. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/dependency_links.txt +0 -0
  15. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/entry_points.txt +0 -0
  16. {praisonai-4.6.30 → praisonai-4.6.31}/PraisonAI.egg-info/top_level.txt +0 -0
  17. {praisonai-4.6.30 → praisonai-4.6.31}/README.md +0 -0
  18. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/__init__.py +0 -0
  19. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_approval_spec.py +0 -0
  20. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_async_bridge.py +0 -0
  21. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/__init__.py +0 -0
  22. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/api_md.py +0 -0
  23. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/__init__.py +0 -0
  24. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/docs_extractor.py +0 -0
  25. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/docs_generator.py +0 -0
  26. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/generator.py +0 -0
  27. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  28. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/python_extractor.py +0 -0
  29. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  30. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/rust_extractor.py +0 -0
  31. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  32. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  33. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  34. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/_logging.py +0 -0
  35. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/__init__.py +0 -0
  36. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/config.py +0 -0
  37. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/safe_edit.py +0 -0
  38. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/server.py +0 -0
  39. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/acp/session.py +0 -0
  40. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/__init__.py +0 -0
  41. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/readers.py +0 -0
  42. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/rerankers.py +0 -0
  43. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/retrievers.py +0 -0
  44. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/adapters/vector_stores.py +0 -0
  45. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agent.py +0 -0
  46. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agent_scheduler.py +0 -0
  47. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/agents_generator.py +0 -0
  48. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/api/agent_invoke.py +0 -0
  49. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/api/call.py +0 -0
  50. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/app/__init__.py +0 -0
  51. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/app/agentos.py +0 -0
  52. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/async_agent_scheduler.py +0 -0
  53. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/audit/__init__.py +0 -0
  54. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/audit/agent_centric.py +0 -0
  55. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/auto.py +0 -0
  56. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/__init__.py +0 -0
  57. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_ack.py +0 -0
  58. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_approval.py +0 -0
  59. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_approval_base.py +0 -0
  60. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_auth.py +0 -0
  61. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_chunk.py +0 -0
  62. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_commands.py +0 -0
  63. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_config_schema.py +0 -0
  64. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_debounce.py +0 -0
  65. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_defaults.py +0 -0
  66. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_discord_approval.py +0 -0
  67. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_email_utils.py +0 -0
  68. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_http_approval.py +0 -0
  69. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_pairing_ui.py +0 -0
  70. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_protocol_mixin.py +0 -0
  71. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_rate_limit.py +0 -0
  72. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_registry.py +0 -0
  73. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_resilience.py +0 -0
  74. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_session.py +0 -0
  75. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_slack_approval.py +0 -0
  76. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_telegram_approval.py +0 -0
  77. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_unknown_user.py +0 -0
  78. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_webhook_approval.py +0 -0
  79. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  80. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/agentmail.py +0 -0
  81. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/bot.py +0 -0
  82. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/botos.py +0 -0
  83. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/discord.py +0 -0
  84. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/email.py +0 -0
  85. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/media.py +0 -0
  86. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/slack.py +0 -0
  87. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/telegram.py +0 -0
  88. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/bots/whatsapp.py +0 -0
  89. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/__init__.py +0 -0
  90. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/agent.py +0 -0
  91. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/benchmark.py +0 -0
  92. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cdp_agent.py +0 -0
  93. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cdp_utils.py +0 -0
  94. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/cli.py +0 -0
  95. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/diagnostics.py +0 -0
  96. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/launcher.py +0 -0
  97. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/playwright_agent.py +0 -0
  98. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/profiling.py +0 -0
  99. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/protocol.py +0 -0
  100. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/report.py +0 -0
  101. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/server.py +0 -0
  102. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/sessions.py +0 -0
  103. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/browser/video.py +0 -0
  104. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/__init__.py +0 -0
  105. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/a2a.py +0 -0
  106. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/assistants.py +0 -0
  107. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/audio.py +0 -0
  108. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/batches.py +0 -0
  109. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/completions.py +0 -0
  110. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/container_files.py +0 -0
  111. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/containers.py +0 -0
  112. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/embeddings.py +0 -0
  113. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/files.py +0 -0
  114. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/fine_tuning.py +0 -0
  115. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/guardrails.py +0 -0
  116. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/images.py +0 -0
  117. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/mcp.py +0 -0
  118. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/messages.py +0 -0
  119. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/moderations.py +0 -0
  120. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/ocr.py +0 -0
  121. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/passthrough.py +0 -0
  122. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/rag.py +0 -0
  123. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/realtime.py +0 -0
  124. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/rerank.py +0 -0
  125. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/responses.py +0 -0
  126. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/search.py +0 -0
  127. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/skills.py +0 -0
  128. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/vector_store_files.py +0 -0
  129. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/vector_stores.py +0 -0
  130. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/capabilities/videos.py +0 -0
  131. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/claw/__init__.py +0 -0
  132. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/claw/default_app.py +0 -0
  133. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/__init__.py +0 -0
  134. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/_paths.py +0 -0
  135. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/app.py +0 -0
  136. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/branding.py +0 -0
  137. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/__init__.py +0 -0
  138. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/acp.py +0 -0
  139. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/agents.py +0 -0
  140. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/app.py +0 -0
  141. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/audit.py +0 -0
  142. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/batch.py +0 -0
  143. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/benchmark.py +0 -0
  144. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/bot.py +0 -0
  145. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/browser.py +0 -0
  146. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/call.py +0 -0
  147. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/chat.py +0 -0
  148. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/claw.py +0 -0
  149. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/code.py +0 -0
  150. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/commit.py +0 -0
  151. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/completion.py +0 -0
  152. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/config.py +0 -0
  153. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/context.py +0 -0
  154. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/dashboard.py +0 -0
  155. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/debug.py +0 -0
  156. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/deploy.py +0 -0
  157. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/diag.py +0 -0
  158. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/docs.py +0 -0
  159. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/doctor.py +0 -0
  160. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/endpoints.py +0 -0
  161. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/environment.py +0 -0
  162. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/eval.py +0 -0
  163. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/examples.py +0 -0
  164. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/flow.py +0 -0
  165. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/gateway.py +0 -0
  166. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/github.py +0 -0
  167. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/hooks.py +0 -0
  168. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/knowledge.py +0 -0
  169. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/langextract.py +0 -0
  170. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/langfuse.py +0 -0
  171. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/loop.py +0 -0
  172. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/lsp.py +0 -0
  173. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/managed.py +0 -0
  174. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/mcp.py +0 -0
  175. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/memory.py +0 -0
  176. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/mint_link.py +0 -0
  177. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/n8n.py +0 -0
  178. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/obs.py +0 -0
  179. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/onboard.py +0 -0
  180. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/package.py +0 -0
  181. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/pairing.py +0 -0
  182. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/paths.py +0 -0
  183. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/plugins.py +0 -0
  184. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/port.py +0 -0
  185. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/profile.py +0 -0
  186. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/publish.py +0 -0
  187. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/rag.py +0 -0
  188. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/realtime.py +0 -0
  189. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/recipe.py +0 -0
  190. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/registry.py +0 -0
  191. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/replay.py +0 -0
  192. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/research.py +0 -0
  193. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/retrieval.py +0 -0
  194. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/rules.py +0 -0
  195. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/run.py +0 -0
  196. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/sandbox.py +0 -0
  197. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/schedule.py +0 -0
  198. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/serve.py +0 -0
  199. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/session.py +0 -0
  200. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/setup.py +0 -0
  201. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/skills.py +0 -0
  202. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/standardise.py +0 -0
  203. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/templates.py +0 -0
  204. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/test.py +0 -0
  205. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/todo.py +0 -0
  206. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/tools.py +0 -0
  207. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/traces.py +0 -0
  208. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/tracker.py +0 -0
  209. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/train.py +0 -0
  210. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/ui.py +0 -0
  211. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/up.py +0 -0
  212. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/version.py +0 -0
  213. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/commands/workflow.py +0 -0
  214. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/config_loader.py +0 -0
  215. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/__init__.py +0 -0
  216. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/loader.py +0 -0
  217. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/paths.py +0 -0
  218. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/configuration/schema.py +0 -0
  219. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/__init__.py +0 -0
  220. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/core.py +0 -0
  221. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/profiler.py +0 -0
  222. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/request.py +0 -0
  223. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/execution/result.py +0 -0
  224. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/fallback_schema.py +0 -0
  225. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/__init__.py +0 -0
  226. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/acp.py +0 -0
  227. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/action_orchestrator.py +0 -0
  228. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agent_scheduler.py +0 -0
  229. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agent_tools.py +0 -0
  230. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/agents.py +0 -0
  231. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/approval.py +0 -0
  232. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/at_mentions.py +0 -0
  233. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/audit_cli.py +0 -0
  234. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/auto_memory.py +0 -0
  235. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/auto_mode.py +0 -0
  236. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/autonomy_mode.py +0 -0
  237. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/background.py +0 -0
  238. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/base.py +0 -0
  239. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/benchmark.py +0 -0
  240. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/bots_cli.py +0 -0
  241. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/capabilities.py +0 -0
  242. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/checkpoints.py +0 -0
  243. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/cli_profiler.py +0 -0
  244. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/code_intelligence.py +0 -0
  245. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/compaction.py +0 -0
  246. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/compare.py +0 -0
  247. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/config_hierarchy.py +0 -0
  248. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/context_manager.py +0 -0
  249. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/cost_tracker.py +0 -0
  250. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/csv_test_runner.py +0 -0
  251. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/debug.py +0 -0
  252. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/deploy.py +0 -0
  253. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/diag.py +0 -0
  254. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/display_jsonl.py +0 -0
  255. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/__init__.py +0 -0
  256. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  257. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  258. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  259. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  260. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  261. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  262. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  263. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  264. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  265. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  266. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  267. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  268. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  269. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  270. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  271. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  272. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  273. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/engine.py +0 -0
  274. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/formatters.py +0 -0
  275. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/handler.py +0 -0
  276. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/models.py +0 -0
  277. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/doctor/registry.py +0 -0
  278. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/endpoints.py +0 -0
  279. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/eval.py +0 -0
  280. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/examples.py +0 -0
  281. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/external_agents.py +0 -0
  282. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/fast_context.py +0 -0
  283. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/file_history.py +0 -0
  284. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/flow_display.py +0 -0
  285. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/gateway.py +0 -0
  286. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/git_attribution.py +0 -0
  287. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/git_integration.py +0 -0
  288. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/guardrail.py +0 -0
  289. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/handoff.py +0 -0
  290. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/hooks.py +0 -0
  291. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/hybrid_workflow.py +0 -0
  292. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/image.py +0 -0
  293. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_core_headless.py +0 -0
  294. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_runtime.py +0 -0
  295. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_test_harness.py +0 -0
  296. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_tools.py +0 -0
  297. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/interactive_tui.py +0 -0
  298. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/job_workflow.py +0 -0
  299. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/jobs.py +0 -0
  300. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/knowledge.py +0 -0
  301. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/knowledge_cli.py +0 -0
  302. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lite.py +0 -0
  303. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/logs.py +0 -0
  304. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lsp_cli.py +0 -0
  305. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  306. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/mcp.py +0 -0
  307. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/message_queue.py +0 -0
  308. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/metrics.py +0 -0
  309. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migrate.py +0 -0
  310. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migration_flow.py +0 -0
  311. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/migration_spec.py +0 -0
  312. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/n8n.py +0 -0
  313. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/observability.py +0 -0
  314. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/ollama.py +0 -0
  315. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/onboard.py +0 -0
  316. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/output_modes.py +0 -0
  317. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/output_style.py +0 -0
  318. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/package.py +0 -0
  319. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/performance.py +0 -0
  320. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/persistence.py +0 -0
  321. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/plugin_cli.py +0 -0
  322. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profile.py +0 -0
  323. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/__init__.py +0 -0
  324. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/core.py +0 -0
  325. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/optimizations.py +0 -0
  326. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiler/suite.py +0 -0
  327. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/profiling.py +0 -0
  328. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/__init__.py +0 -0
  329. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/manager.py +0 -0
  330. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/models.py +0 -0
  331. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/persistence.py +0 -0
  332. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/scheduler.py +0 -0
  333. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/queue/worker.py +0 -0
  334. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe.py +0 -0
  335. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_creator.py +0 -0
  336. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_optimizer.py +0 -0
  337. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipe_prompts.py +0 -0
  338. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/recipes.py +0 -0
  339. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/registry.py +0 -0
  340. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/repo_map.py +0 -0
  341. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/router.py +0 -0
  342. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/safe_shell.py +0 -0
  343. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sandbox_cli.py +0 -0
  344. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sandbox_executor.py +0 -0
  345. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/sdk_knowledge.py +0 -0
  346. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/serve.py +0 -0
  347. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/session.py +0 -0
  348. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/__init__.py +0 -0
  349. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/handler.py +0 -0
  350. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/setup/templates.py +0 -0
  351. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/skills.py +0 -0
  352. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/slash_commands.py +0 -0
  353. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/telemetry.py +0 -0
  354. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/templates.py +0 -0
  355. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/thinking.py +0 -0
  356. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/todo.py +0 -0
  357. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tools.py +0 -0
  358. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/__init__.py +0 -0
  359. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/app.py +0 -0
  360. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/cli.py +0 -0
  361. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/config.py +0 -0
  362. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/debug.py +0 -0
  363. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/events.py +0 -0
  364. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/mock_provider.py +0 -0
  365. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/orchestrator.py +0 -0
  366. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  367. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/help.py +0 -0
  368. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/main.py +0 -0
  369. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/queue.py +0 -0
  370. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/session.py +0 -0
  371. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/screens/settings.py +0 -0
  372. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/session_store.py +0 -0
  373. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  374. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  375. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  376. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  377. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  378. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  379. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/status.py +0 -0
  380. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  381. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/wizard.py +0 -0
  382. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/workflow.py +0 -0
  383. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/features/yaml_utils.py +0 -0
  384. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/__init__.py +0 -0
  385. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/async_tui.py +0 -0
  386. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/config.py +0 -0
  387. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/core.py +0 -0
  388. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/events.py +0 -0
  389. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  390. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  391. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  392. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/praison_io.py +0 -0
  393. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/repl.py +0 -0
  394. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/split_tui.py +0 -0
  395. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/interactive/tui_app.py +0 -0
  396. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/langfuse_client.py +0 -0
  397. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/legacy.py +0 -0
  398. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/main.py +0 -0
  399. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/output/__init__.py +0 -0
  400. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/schedule_cli.py +0 -0
  401. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/schema_provider.py +0 -0
  402. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/session/__init__.py +0 -0
  403. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/session/unified.py +0 -0
  404. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/__init__.py +0 -0
  405. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/identifiers.py +0 -0
  406. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/state/sessions.py +0 -0
  407. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/__init__.py +0 -0
  408. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/config.py +0 -0
  409. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/events.py +0 -0
  410. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/mg_backend.py +0 -0
  411. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/plain.py +0 -0
  412. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/ui/rich_backend.py +0 -0
  413. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli/unified_schema.py +0 -0
  414. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/__init__.py +0 -0
  415. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/claude.py +0 -0
  416. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/cli_backends/registry.py +0 -0
  417. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/__init__.py +0 -0
  418. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/agent_tools.py +0 -0
  419. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/diff/__init__.py +0 -0
  420. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/diff/diff_strategy.py +0 -0
  421. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/__init__.py +0 -0
  422. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/apply_diff.py +0 -0
  423. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/execute_command.py +0 -0
  424. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/list_files.py +0 -0
  425. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/read_file.py +0 -0
  426. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/search_replace.py +0 -0
  427. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/tools/write_file.py +0 -0
  428. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/__init__.py +0 -0
  429. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/file_utils.py +0 -0
  430. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/ignore_utils.py +0 -0
  431. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/code/utils/text_utils.py +0 -0
  432. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/__init__.py +0 -0
  433. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/artifact_store.py +0 -0
  434. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/config.py +0 -0
  435. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/history_store.py +0 -0
  436. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/queue.py +0 -0
  437. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/setup.py +0 -0
  438. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/context/terminal_logger.py +0 -0
  439. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/__init__.py +0 -0
  440. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/launchd.py +0 -0
  441. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/systemd.py +0 -0
  442. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/daemon/windows.py +0 -0
  443. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/db/__init__.py +0 -0
  444. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/db/adapter.py +0 -0
  445. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/__init__.py +0 -0
  446. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/api.py +0 -0
  447. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/docker.py +0 -0
  448. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/doctor.py +0 -0
  449. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/main.py +0 -0
  450. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/models.py +0 -0
  451. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/__init__.py +0 -0
  452. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/aws.py +0 -0
  453. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/azure.py +0 -0
  454. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/base.py +0 -0
  455. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/providers/gcp.py +0 -0
  456. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/deploy/schema.py +0 -0
  457. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/__init__.py +0 -0
  458. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/classifier.py +0 -0
  459. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/executor.py +0 -0
  460. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/extractor.py +0 -0
  461. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/reporter.py +0 -0
  462. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/runner.py +0 -0
  463. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/docs_runner/workspace.py +0 -0
  464. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/__init__.py +0 -0
  465. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/a2u_server.py +0 -0
  466. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/discovery.py +0 -0
  467. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/__init__.py +0 -0
  468. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/a2a.py +0 -0
  469. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/a2u.py +0 -0
  470. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/agents_api.py +0 -0
  471. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/base.py +0 -0
  472. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/mcp.py +0 -0
  473. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/recipe.py +0 -0
  474. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  475. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/registry.py +0 -0
  476. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/endpoints/server.py +0 -0
  477. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/__init__.py +0 -0
  478. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/client.py +0 -0
  479. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  480. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  481. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/components/__init__.py +0 -0
  482. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/converter.py +0 -0
  483. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/flow/helpers.py +0 -0
  484. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/__init__.py +0 -0
  485. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  486. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/base.py +0 -0
  487. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  488. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  489. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/__init__.py +0 -0
  490. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/auth.py +0 -0
  491. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/cookie_auth.py +0 -0
  492. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/exec_approval.py +0 -0
  493. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/gateway_approval.py +0 -0
  494. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/magic_link.py +0 -0
  495. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/origin_check.py +0 -0
  496. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/pairing.py +0 -0
  497. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/pairing_routes.py +0 -0
  498. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_channels.py +0 -0
  499. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_delivery.py +0 -0
  500. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_polling.py +0 -0
  501. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/push_presence.py +0 -0
  502. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/rate_limiter.py +0 -0
  503. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/redis_pubsub.py +0 -0
  504. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/gateway/server.py +0 -0
  505. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inbuilt_tools/__init__.py +0 -0
  506. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  507. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/__init__.py +0 -0
  508. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/inc/config.py +0 -0
  509. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/__init__.py +0 -0
  510. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/_session_info.py +0 -0
  511. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/_tool_aliases.py +0 -0
  512. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/base.py +0 -0
  513. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/claude_code.py +0 -0
  514. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/codex_cli.py +0 -0
  515. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/__init__.py +0 -0
  516. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/daytona.py +0 -0
  517. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/docker.py +0 -0
  518. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/e2b.py +0 -0
  519. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/flyio.py +0 -0
  520. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/local.py +0 -0
  521. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/compute/modal_compute.py +0 -0
  522. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/cursor_cli.py +0 -0
  523. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/db_session_adapter.py +0 -0
  524. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/gemini_cli.py +0 -0
  525. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/managed_agents.py +0 -0
  526. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/managed_local.py +0 -0
  527. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/registry.py +0 -0
  528. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/integrations/sandboxed_agent.py +0 -0
  529. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/__init__.py +0 -0
  530. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/executor.py +0 -0
  531. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/models.py +0 -0
  532. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/router.py +0 -0
  533. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/server.py +0 -0
  534. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/jobs/store.py +0 -0
  535. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/llm/__init__.py +0 -0
  536. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/llm/registry.py +0 -0
  537. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/__init__.py +0 -0
  538. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/__init__.py +0 -0
  539. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/agents.py +0 -0
  540. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  541. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  542. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  543. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  544. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/memory.py +0 -0
  545. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/prompts.py +0 -0
  546. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/resources.py +0 -0
  547. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  548. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/__init__.py +0 -0
  549. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/api_key.py +0 -0
  550. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/oauth.py +0 -0
  551. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/oidc.py +0 -0
  552. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/auth/scopes.py +0 -0
  553. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/cli.py +0 -0
  554. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/elicitation.py +0 -0
  555. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/icons.py +0 -0
  556. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/recipe_adapter.py +0 -0
  557. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/recipe_cli.py +0 -0
  558. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/registry.py +0 -0
  559. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/sampling.py +0 -0
  560. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/server.py +0 -0
  561. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/tasks.py +0 -0
  562. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/tool_index.py +0 -0
  563. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/__init__.py +0 -0
  564. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/http_stream.py +0 -0
  565. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/mcp_server/transports/stdio.py +0 -0
  566. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/__init__.py +0 -0
  567. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/client.py +0 -0
  568. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/converter.py +0 -0
  569. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/preview.py +0 -0
  570. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/n8n/reverse_converter.py +0 -0
  571. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/__init__.py +0 -0
  572. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/langextract.py +0 -0
  573. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/observability/langfuse.py +0 -0
  574. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/__init__.py +0 -0
  575. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/config.py +0 -0
  576. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/__init__.py +0 -0
  577. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_mysql.py +0 -0
  578. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_postgres.py +0 -0
  579. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  580. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/base.py +0 -0
  581. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/json_store.py +0 -0
  582. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/mysql.py +0 -0
  583. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/postgres.py +0 -0
  584. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/singlestore.py +0 -0
  585. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/sqlite.py +0 -0
  586. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/supabase.py +0 -0
  587. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/surrealdb.py +0 -0
  588. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/conversation/turso.py +0 -0
  589. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/factory.py +0 -0
  590. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/hooks/__init__.py +0 -0
  591. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  592. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/__init__.py +0 -0
  593. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/base.py +0 -0
  594. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/cassandra.py +0 -0
  595. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/chroma.py +0 -0
  596. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  597. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  598. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/couchbase.py +0 -0
  599. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/lancedb.py +0 -0
  600. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  601. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  602. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  603. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/milvus.py +0 -0
  604. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  605. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/pgvector.py +0 -0
  606. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/pinecone.py +0 -0
  607. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/qdrant.py +0 -0
  608. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  609. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  610. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  611. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  612. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/knowledge/weaviate.py +0 -0
  613. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/migrations/__init__.py +0 -0
  614. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/migrations/manager.py +0 -0
  615. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/orchestrator.py +0 -0
  616. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/__init__.py +0 -0
  617. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/async_mongodb.py +0 -0
  618. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/base.py +0 -0
  619. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/dynamodb.py +0 -0
  620. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/firestore.py +0 -0
  621. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/gcs.py +0 -0
  622. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/memory.py +0 -0
  623. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/mongodb.py +0 -0
  624. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/redis.py +0 -0
  625. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/state/upstash.py +0 -0
  626. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/tests/__init__.py +0 -0
  627. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/persistence/tests/test_all_backends.py +0 -0
  628. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/profiler.py +0 -0
  629. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/__init__.py +0 -0
  630. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/client.py +0 -0
  631. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/push/transports.py +0 -0
  632. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/__init__.py +0 -0
  633. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/bridge.py +0 -0
  634. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/core.py +0 -0
  635. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/exceptions.py +0 -0
  636. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/history.py +0 -0
  637. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/models.py +0 -0
  638. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/operations.py +0 -0
  639. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/policy.py +0 -0
  640. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/registry.py +0 -0
  641. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/runtime.py +0 -0
  642. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/security.py +0 -0
  643. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/serve.py +0 -0
  644. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/recipe/server.py +0 -0
  645. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/__init__.py +0 -0
  646. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/analyzer.py +0 -0
  647. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/applier.py +0 -0
  648. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/judge.py +0 -0
  649. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/plan.py +0 -0
  650. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/player.py +0 -0
  651. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/reader.py +0 -0
  652. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/storage.py +0 -0
  653. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/replay/writer.py +0 -0
  654. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/__init__.py +0 -0
  655. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/daytona.py +0 -0
  656. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/docker.py +0 -0
  657. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/modal.py +0 -0
  658. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/sandlock.py +0 -0
  659. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/ssh.py +0 -0
  660. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/sandbox/subprocess.py +0 -0
  661. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/__init__.py +0 -0
  662. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/agent_scheduler.py +0 -0
  663. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/base.py +0 -0
  664. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/daemon_manager.py +0 -0
  665. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/executor.py +0 -0
  666. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/shared.py +0 -0
  667. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/state_manager.py +0 -0
  668. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler/yaml_loader.py +0 -0
  669. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/scheduler.py +0 -0
  670. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/__init__.py +0 -0
  671. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/audit.py +0 -0
  672. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/injection.py +0 -0
  673. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/security/protected.py +0 -0
  674. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/__init__.py +0 -0
  675. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/build.py +0 -0
  676. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/post_install.py +0 -0
  677. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup/setup_conda_env.py +0 -0
  678. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/setup.py +0 -0
  679. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/__init__.py +0 -0
  680. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/ai_generator.py +0 -0
  681. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/config.py +0 -0
  682. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/dedupe.py +0 -0
  683. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/discovery.py +0 -0
  684. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/drift.py +0 -0
  685. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/engine.py +0 -0
  686. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/enhanced_templates.py +0 -0
  687. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/example_verifier.py +0 -0
  688. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/manifest.py +0 -0
  689. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/models.py +0 -0
  690. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/reports.py +0 -0
  691. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/templates.py +0 -0
  692. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/undo_redo.py +0 -0
  693. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/standardise/validator.py +0 -0
  694. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/__init__.py +0 -0
  695. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/dynamodb_adapter.py +0 -0
  696. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/mongodb_adapter.py +0 -0
  697. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/postgresql_adapter.py +0 -0
  698. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/storage/redis_adapter.py +0 -0
  699. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/__init__.py +0 -0
  700. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/batch_source.py +0 -0
  701. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/cli_docs_source.py +0 -0
  702. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/discovery.py +0 -0
  703. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/docs_source.py +0 -0
  704. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/examples_source.py +0 -0
  705. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/executor.py +0 -0
  706. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/models.py +0 -0
  707. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/report_viewer.py +0 -0
  708. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/reporter.py +0 -0
  709. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/suite_runner/runner.py +0 -0
  710. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/__init__.py +0 -0
  711. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/cache.py +0 -0
  712. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/dependency_checker.py +0 -0
  713. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/discovery.py +0 -0
  714. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/loader.py +0 -0
  715. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/registry.py +0 -0
  716. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/resolver.py +0 -0
  717. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/security.py +0 -0
  718. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/tool_override.py +0 -0
  719. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/templates/tools_doctor.py +0 -0
  720. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/test.py +0 -0
  721. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tool_registry.py +0 -0
  722. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tool_resolver.py +0 -0
  723. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/__init__.py +0 -0
  724. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/audio.py +0 -0
  725. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/glob_tool.py +0 -0
  726. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/grep_tool.py +0 -0
  727. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/multiedit.py +0 -0
  728. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/tools/skill_manage.py +0 -0
  729. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/__init__.py +0 -0
  730. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/__init__.py +0 -0
  731. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/grader.py +0 -0
  732. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/hook.py +0 -0
  733. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/models.py +0 -0
  734. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/orchestrator.py +0 -0
  735. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/agents/storage.py +0 -0
  736. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/llm/__init__.py +0 -0
  737. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train/llm/trainer.py +0 -0
  738. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train.py +0 -0
  739. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/train_vision.py +0 -0
  740. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/_external_agents.py +0 -0
  741. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/callbacks.py +0 -0
  742. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/components/aicoder.py +0 -0
  743. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/context.py +0 -0
  744. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui/database_config.py +0 -0
  745. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_agents/__init__.py +0 -0
  746. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_agents/default_app.py +0 -0
  747. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_bot/__init__.py +0 -0
  748. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_bot/default_app.py +0 -0
  749. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_chat/__init__.py +0 -0
  750. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_chat/default_app.py +0 -0
  751. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_realtime/__init__.py +0 -0
  752. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/ui_realtime/default_app.py +0 -0
  753. {praisonai-4.6.30 → praisonai-4.6.31}/praisonai/upload_vision.py +0 -0
  754. {praisonai-4.6.30 → praisonai-4.6.31}/setup.cfg +0 -0
  755. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test.py +0 -0
  756. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_agents_playbook.py +0 -0
  757. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_approval_system.py +0 -0
  758. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_basic.py +0 -0
  759. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_cli_features.py +0 -0
  760. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_custom_tools_fix.py +0 -0
  761. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_double_api_fix.py +0 -0
  762. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_agent_invoke.py +0 -0
  763. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_cli_feature.py +0 -0
  764. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_n8n_integration.py +0 -0
  765. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_phase2_refactor.py +0 -0
  766. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_recipe.py +0 -0
  767. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_registry.py +0 -0
  768. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_runner.py +0 -0
  769. {praisonai-4.6.30 → praisonai-4.6.31}/tests/test_sandboxed_agent_compatibility.py +0 -0
  770. {praisonai-4.6.30 → praisonai-4.6.31}/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.30
3
+ Version: 4.6.31
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.30
14
+ Requires-Dist: praisonaiagents>=1.6.31
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<=1.82.6,>=1.81.0
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.30
3
+ Version: 4.6.31
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.30
14
+ Requires-Dist: praisonaiagents>=1.6.31
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<=1.82.6,>=1.81.0
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.30
4
+ praisonaiagents>=1.6.31
5
5
  python-dotenv>=0.19.0
6
6
  litellm<=1.82.6,>=1.81.0
7
7
  PyYAML>=6.0
@@ -72,6 +72,16 @@ def _find_first_command(argv):
72
72
 
73
73
  def _run_typer(argv):
74
74
  """Dispatch to the Typer CLI app."""
75
+ import os
76
+
77
+ # Set up safer encoding for Windows legacy terminals
78
+ if sys.platform == "win32" and hasattr(sys.stdout, 'encoding'):
79
+ encoding = getattr(sys.stdout, 'encoding', '').lower()
80
+ if encoding in ('cp1252', 'cp1251', 'cp850', 'ascii') or ('cp' in encoding and encoding != 'cp65001'):
81
+ # Force UTF-8 mode for subprocess safety
82
+ if 'PYTHONIOENCODING' not in os.environ:
83
+ os.environ['PYTHONIOENCODING'] = 'utf-8'
84
+
75
85
  from praisonai.cli.app import app, register_commands
76
86
  register_commands() # idempotent
77
87
 
@@ -79,6 +89,11 @@ def _run_typer(argv):
79
89
  sys.argv = ["praisonai"] + list(argv)
80
90
  try:
81
91
  app()
92
+ except UnicodeEncodeError as e:
93
+ # Handle Unicode encoding errors gracefully
94
+ print("Error: Unable to display help due to terminal encoding limitations.", file=sys.stderr)
95
+ print("Try setting: $env:PYTHONIOENCODING='utf-8' (PowerShell) or set PYTHONIOENCODING=utf-8 (cmd)", file=sys.stderr)
96
+ sys.exit(0)
82
97
  except SystemExit as e:
83
98
  sys.exit(e.code if isinstance(e.code, int) else 0)
84
99
  finally:
@@ -40,7 +40,36 @@ def _get_console():
40
40
  global _console
41
41
  if _console is None and _get_rich_available():
42
42
  from rich.console import Console
43
- _console = Console()
43
+ import sys
44
+ import os
45
+
46
+ # Detect Windows legacy encoding (CP1252) and use safe fallback
47
+ if sys.platform == "win32" and hasattr(sys.stdout, 'encoding'):
48
+ encoding = getattr(sys.stdout, 'encoding', '').lower()
49
+ # Check for Windows legacy code pages that can't handle Unicode
50
+ if encoding in ('cp1252', 'cp1251', 'cp850', 'ascii') or ('cp' in encoding and encoding != 'cp65001'):
51
+ # Force UTF-8 mode or create console with safe encoding handling
52
+ try:
53
+ # Set PYTHONIOENCODING to utf-8 for subprocess safety (won't affect current process)
54
+ if 'PYTHONIOENCODING' not in os.environ:
55
+ os.environ['PYTHONIOENCODING'] = 'utf-8'
56
+
57
+ # Create console with safe encoding options
58
+ _console = Console(
59
+ force_terminal=True,
60
+ legacy_windows=True, # Use legacy Windows mode
61
+ safe_box=True, # Use safe box characters
62
+ emoji=False, # Disable emojis on Windows legacy
63
+ color_system='standard', # Use basic colors
64
+ _environ=os.environ # Pass updated environment
65
+ )
66
+ except Exception:
67
+ # Fallback to basic console if Rich options fail
68
+ _console = Console(force_terminal=False, no_color=True)
69
+ else:
70
+ _console = Console()
71
+ else:
72
+ _console = Console()
44
73
  return _console
45
74
 
46
75
 
@@ -137,6 +166,19 @@ class OutputController:
137
166
  """Check if in screen reader mode."""
138
167
  return self.mode == OutputMode.SCREEN_READER
139
168
 
169
+ def _safe_console_print(self, *args, **kwargs) -> None:
170
+ """Safely print to console with UnicodeEncodeError protection."""
171
+ if self.console:
172
+ try:
173
+ self.console.print(*args, **kwargs)
174
+ except UnicodeEncodeError:
175
+ # Fallback to plain text if Rich can't handle the encoding
176
+ message = str(args[0]) if args else ""
177
+ print(message.encode('ascii', 'replace').decode('ascii'))
178
+ else:
179
+ message = str(args[0]) if args else ""
180
+ print(message)
181
+
140
182
  def print(self, message: str, style: Optional[str] = None, **kwargs) -> None:
141
183
  """Print a message respecting the current mode."""
142
184
  if self.is_quiet:
@@ -150,11 +192,8 @@ class OutputController:
150
192
  # Plain text output
151
193
  print(message)
152
194
  else:
153
- # Rich formatted output
154
- if self.console:
155
- self.console.print(message, style=style, **kwargs)
156
- else:
157
- print(message)
195
+ # Rich formatted output with encoding safety
196
+ self._safe_console_print(message, style=style, **kwargs)
158
197
 
159
198
  def print_error(self, message: str, code: Optional[str] = None, remediation: Optional[str] = None) -> None:
160
199
  """Print an error message with optional remediation."""
@@ -187,10 +226,16 @@ class OutputController:
187
226
  if remediation:
188
227
  content.append(f"\n💡 Fix: {remediation}", style="yellow")
189
228
 
190
- if self.console:
191
- self.console.print(Panel(content, title="Error", border_style="red"))
192
- else:
229
+ try:
230
+ if self.console:
231
+ self.console.print(Panel(content, title="Error", border_style="red"))
232
+ else:
233
+ print(f"ERROR: {message}", file=sys.stderr)
234
+ except UnicodeEncodeError:
235
+ # Fallback to plain text if emoji rendering fails
193
236
  print(f"ERROR: {message}", file=sys.stderr)
237
+ if remediation:
238
+ print(f"FIX: {remediation}", file=sys.stderr)
194
239
 
195
240
  def print_success(self, message: str, data: Optional[Dict[str, Any]] = None) -> None:
196
241
  """Print a success message."""
@@ -214,7 +259,10 @@ class OutputController:
214
259
  if self.is_screen_reader or self.no_color or not _get_rich_available():
215
260
  print(f"SUCCESS: {message}")
216
261
  else:
217
- self.print(f"✅ {message}", style="bold green")
262
+ try:
263
+ self.print(f"✅ {message}", style="bold green")
264
+ except UnicodeEncodeError:
265
+ print(f"SUCCESS: {message}")
218
266
 
219
267
  def print_warning(self, message: str) -> None:
220
268
  """Print a warning message."""
@@ -224,7 +272,10 @@ class OutputController:
224
272
  if self.is_screen_reader or self.no_color or not _get_rich_available():
225
273
  print(f"WARNING: {message}")
226
274
  else:
227
- self.print(f"⚠️ {message}", style="bold yellow")
275
+ try:
276
+ self.print(f"⚠️ {message}", style="bold yellow")
277
+ except UnicodeEncodeError:
278
+ print(f"WARNING: {message}")
228
279
 
229
280
  def print_info(self, message: str) -> None:
230
281
  """Print an info message."""
@@ -234,7 +285,10 @@ class OutputController:
234
285
  if self.is_screen_reader or self.no_color or not _get_rich_available():
235
286
  print(f"INFO: {message}")
236
287
  else:
237
- self.print(f"ℹ️ {message}", style="bold blue")
288
+ try:
289
+ self.print(f"ℹ️ {message}", style="bold blue")
290
+ except UnicodeEncodeError:
291
+ print(f"INFO: {message}")
238
292
 
239
293
  def print_debug(self, message: str) -> None:
240
294
  """Print a debug message (only in verbose mode)."""
@@ -244,7 +298,10 @@ class OutputController:
244
298
  if self.is_screen_reader or self.no_color or not _get_rich_available():
245
299
  print(f"DEBUG: {message}")
246
300
  else:
247
- self.print(f"🔍 {message}", style="dim")
301
+ try:
302
+ self.print(f"🔍 {message}", style="dim")
303
+ except UnicodeEncodeError:
304
+ print(f"DEBUG: {message}")
248
305
 
249
306
  def emit_event(self, event_type: str, message: Optional[str] = None, data: Optional[Dict[str, Any]] = None, agent_id: Optional[str] = None) -> None:
250
307
  """Emit a stream event (for stream-json mode)."""
@@ -321,7 +378,28 @@ class OutputController:
321
378
  table.add_row(*[str(cell) for cell in row])
322
379
 
323
380
  if self.console:
324
- self.console.print(table)
381
+ try:
382
+ self.console.print(table)
383
+ except UnicodeEncodeError:
384
+ # Fallback to plain text table if Rich fails
385
+ if title:
386
+ print(f"\n{title}")
387
+ print("-" * len(title))
388
+
389
+ # Calculate column widths
390
+ widths = [len(h) for h in headers]
391
+ for row in rows:
392
+ for i, cell in enumerate(row):
393
+ widths[i] = max(widths[i], len(str(cell)))
394
+
395
+ # Print header
396
+ header_line = " | ".join(h.ljust(widths[i]) for i, h in enumerate(headers))
397
+ print(header_line)
398
+ print("-" * len(header_line))
399
+
400
+ # Print rows
401
+ for row in rows:
402
+ print(" | ".join(str(cell).ljust(widths[i]) for i, cell in enumerate(row)))
325
403
 
326
404
  def print_panel(self, content: str, title: Optional[str] = None, style: str = "cyan") -> None:
327
405
  """Print a panel."""
@@ -338,7 +416,15 @@ class OutputController:
338
416
  from rich.panel import Panel
339
417
 
340
418
  if self.console:
341
- self.console.print(Panel(content, title=title, border_style=style))
419
+ try:
420
+ self.console.print(Panel(content, title=title, border_style=style))
421
+ except UnicodeEncodeError:
422
+ # Fallback to plain text if panel rendering fails
423
+ if title:
424
+ print(f"\n=== {title} ===")
425
+ print(content)
426
+ if title:
427
+ print("=" * (len(title) + 8))
342
428
 
343
429
  def get_events(self) -> List[Dict[str, Any]]:
344
430
  """Get all collected events."""
@@ -57,7 +57,7 @@ class CloudDeployer:
57
57
  file.write("FROM python:3.11-slim\n")
58
58
  file.write("WORKDIR /app\n")
59
59
  file.write("COPY . .\n")
60
- file.write("RUN pip install flask praisonai==4.6.30 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==4.6.31 gunicorn markdown\n")
61
61
  file.write("EXPOSE 8080\n")
62
62
  file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
63
63
 
@@ -13,12 +13,24 @@ logging.basicConfig(level=_loglevel, format='%(asctime)s - %(levelname)s - %(mes
13
13
  # Constants
14
14
  LOCAL_SERVER_API_KEY_PLACEHOLDER = "not-needed"
15
15
 
16
+ def _is_module_available(module_name: str) -> bool:
17
+ """Safely check if a module spec is importable.
18
+
19
+ Guards against missing parent packages (e.g. `google.generativeai`
20
+ when the `google` namespace is absent) so test collection in a
21
+ base install does not fail.
22
+ """
23
+ try:
24
+ return importlib.util.find_spec(module_name) is not None
25
+ except (ImportError, AttributeError, ValueError):
26
+ return False
27
+
16
28
  # Use find_spec for fast availability checks (no actual import)
17
29
  # This avoids the ~3200ms langchain_openai import at module load
18
- OPENAI_AVAILABLE = importlib.util.find_spec("openai") is not None
19
- GOOGLE_GENAI_AVAILABLE = importlib.util.find_spec("google.generativeai") is not None
20
- ANTHROPIC_AVAILABLE = importlib.util.find_spec("anthropic") is not None
21
- COHERE_AVAILABLE = importlib.util.find_spec("cohere") is not None
30
+ OPENAI_AVAILABLE = _is_module_available("openai")
31
+ GOOGLE_GENAI_AVAILABLE = _is_module_available("google.generativeai")
32
+ ANTHROPIC_AVAILABLE = _is_module_available("anthropic")
33
+ COHERE_AVAILABLE = _is_module_available("cohere")
22
34
 
23
35
  # Lazy import helpers for provider SDKs
24
36
  def _get_openai_client():
@@ -0,0 +1,141 @@
1
+ """Bridge praisonaiagents SessionStore → aiui BaseDataStore.
2
+
3
+ Allows any SessionStoreProtocol implementation (file/Redis/Mongo) to back
4
+ the aiui dashboard's Sessions page. No Chainlit required.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import logging
9
+ import uuid
10
+ from typing import Any, Optional
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+ # Module-level cached implementation class
15
+ _impl_cls = None
16
+
17
+
18
+ def _build_impl_cls():
19
+ """Build the implementation class with BaseDataStore inheritance.
20
+
21
+ Thread-safe lazy class factory that imports BaseDataStore and creates
22
+ a proper subclass. This avoids runtime __bases__ mutation and ensures
23
+ BaseDataStore.__init__ is properly called.
24
+ """
25
+ global _impl_cls
26
+ if _impl_cls is not None:
27
+ return _impl_cls
28
+
29
+ try:
30
+ from praisonaiui.datastore import BaseDataStore
31
+ except ImportError as e:
32
+ raise ImportError(
33
+ "praisonaiui is required for PraisonAISessionDataStore. "
34
+ "Install with: pip install 'praisonai[ui]'"
35
+ ) from e
36
+
37
+ try:
38
+ from praisonaiagents.session import get_hierarchical_session_store
39
+ except ImportError as e:
40
+ raise ImportError(
41
+ "praisonaiagents is required for PraisonAISessionDataStore. "
42
+ "Install with: pip install praisonaiagents"
43
+ ) from e
44
+
45
+ class _PraisonAISessionDataStoreImpl(BaseDataStore):
46
+ """Implementation class that properly inherits from BaseDataStore."""
47
+
48
+ def __init__(self, store: Optional[Any] = None):
49
+ """Initialize with an optional session store, defaults to hierarchical store.
50
+
51
+ Args:
52
+ store: Optional SessionStoreProtocol implementation
53
+ """
54
+ super().__init__() # Properly call BaseDataStore.__init__()
55
+ self._store = store or get_hierarchical_session_store()
56
+
57
+ def _new_id(self) -> str:
58
+ """Generate a new session ID."""
59
+ return str(uuid.uuid4())
60
+
61
+ async def list_sessions(self) -> list[dict[str, Any]]:
62
+ """List all available sessions."""
63
+ # Check if store supports listing (DefaultSessionStore/HierarchicalSessionStore do)
64
+ list_fn = getattr(self._store, "list_sessions", None)
65
+ if list_fn is None:
66
+ return [] # Protocol implementation doesn't support listing
67
+
68
+ try:
69
+ # DefaultSessionStore/HierarchicalSessionStore return list[dict]
70
+ return list_fn(limit=50) or []
71
+ except Exception:
72
+ logger.exception("Failed to list sessions")
73
+ return []
74
+
75
+ async def get_session(self, session_id: str) -> Optional[dict[str, Any]]:
76
+ """Get a specific session by ID."""
77
+ if not self._store.session_exists(session_id):
78
+ return None
79
+
80
+ try:
81
+ chat_history = self._store.get_chat_history(session_id)
82
+ return {
83
+ "id": session_id,
84
+ "messages": chat_history or [],
85
+ }
86
+ except Exception:
87
+ logger.exception("Failed to load session %s", session_id)
88
+ return None
89
+
90
+ async def create_session(self, session_id: Optional[str] = None) -> dict[str, Any]:
91
+ """Create a new session."""
92
+ sid = session_id or self._new_id()
93
+ # Sessions are created lazily on first add_message
94
+ return {
95
+ "id": sid,
96
+ "messages": []
97
+ }
98
+
99
+ async def delete_session(self, session_id: str) -> bool:
100
+ """Delete a session and return success status."""
101
+ try:
102
+ return self._store.delete_session(session_id)
103
+ except Exception:
104
+ logger.exception("Failed to delete session %s", session_id)
105
+ return False
106
+
107
+ async def add_message(self, session_id: str, message: dict[str, Any]):
108
+ """Add a message to a session."""
109
+ self._store.add_message(
110
+ session_id=session_id,
111
+ role=message.get("role", "user"),
112
+ content=message.get("content", ""),
113
+ metadata=message.get("metadata")
114
+ )
115
+
116
+ async def get_messages(self, session_id: str) -> list[dict[str, Any]]:
117
+ """Get all messages for a session."""
118
+ if not self._store.session_exists(session_id):
119
+ return []
120
+
121
+ try:
122
+ return self._store.get_chat_history(session_id) or []
123
+ except Exception:
124
+ logger.exception("Failed to load messages for session %s", session_id)
125
+ return []
126
+
127
+ _impl_cls = _PraisonAISessionDataStoreImpl
128
+ return _impl_cls
129
+
130
+
131
+ class PraisonAISessionDataStore:
132
+ """Adapter that bridges PraisonAI SessionStoreProtocol to aiui BaseDataStore.
133
+
134
+ Dependency imports are deferred until instantiation to allow test
135
+ collection without optional modules installed.
136
+ """
137
+
138
+ def __new__(cls, store: Optional[Any] = None):
139
+ """Factory method that returns a properly configured implementation instance."""
140
+ impl_cls = _build_impl_cls()
141
+ return impl_cls(store)
@@ -0,0 +1 @@
1
+ __version__ = "4.6.31"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "rich>=13.7",
13
13
  "markdown>=3.5",
14
14
  "pyparsing>=3.0.0",
15
- "praisonaiagents>=1.6.30",
15
+ "praisonaiagents>=1.6.31",
16
16
  "python-dotenv>=0.19.0",
17
17
  "litellm>=1.81.0,<=1.82.6",
18
18
  "PyYAML>=6.0",
@@ -1,108 +0,0 @@
1
- """Bridge praisonaiagents SessionStore → aiui BaseDataStore.
2
-
3
- Allows any SessionStoreProtocol implementation (file/Redis/Mongo) to back
4
- the aiui dashboard's Sessions page. No Chainlit required.
5
- """
6
- from __future__ import annotations
7
-
8
- import logging
9
- import uuid
10
- from typing import Any, Optional
11
-
12
- logger = logging.getLogger(__name__)
13
-
14
- # Fail loudly on missing optional dependencies per AGENTS.md §4.2
15
- try:
16
- from praisonaiui.datastore import BaseDataStore
17
- except ImportError as e:
18
- raise ImportError(
19
- "praisonaiui is required for PraisonAISessionDataStore. "
20
- "Install with: pip install 'praisonai[ui]'"
21
- ) from e
22
-
23
- try:
24
- from praisonaiagents.session import SessionStoreProtocol
25
- from praisonaiagents.session import get_hierarchical_session_store
26
- except ImportError as e:
27
- raise ImportError(
28
- "praisonaiagents is required for PraisonAISessionDataStore. "
29
- "Install with: pip install praisonaiagents"
30
- ) from e
31
-
32
-
33
- class PraisonAISessionDataStore(BaseDataStore):
34
- """Adapter that bridges PraisonAI SessionStoreProtocol to aiui BaseDataStore."""
35
-
36
- def __init__(self, store: Optional[SessionStoreProtocol] = None):
37
- """Initialize with an optional session store, defaults to hierarchical store."""
38
- self._store = store or get_hierarchical_session_store()
39
-
40
- def _new_id(self) -> str:
41
- """Generate a new session ID."""
42
- return str(uuid.uuid4())
43
-
44
- async def list_sessions(self) -> list[dict[str, Any]]:
45
- """List all available sessions."""
46
- # Check if store supports listing (DefaultSessionStore/HierarchicalSessionStore do)
47
- list_fn = getattr(self._store, "list_sessions", None)
48
- if list_fn is None:
49
- return [] # Protocol implementation doesn't support listing
50
-
51
- try:
52
- # DefaultSessionStore/HierarchicalSessionStore return list[dict]
53
- return list_fn(limit=50) or []
54
- except Exception:
55
- logger.exception("Failed to list sessions")
56
- return []
57
-
58
- async def get_session(self, session_id: str) -> Optional[dict[str, Any]]:
59
- """Get a specific session by ID."""
60
- if not self._store.session_exists(session_id):
61
- return None
62
-
63
- try:
64
- chat_history = self._store.get_chat_history(session_id)
65
- return {
66
- "id": session_id,
67
- "messages": chat_history or [],
68
- }
69
- except Exception:
70
- logger.exception("Failed to load session %s", session_id)
71
- return None
72
-
73
- async def create_session(self, session_id: Optional[str] = None) -> dict[str, Any]:
74
- """Create a new session."""
75
- sid = session_id or self._new_id()
76
- # Sessions are created lazily on first add_message
77
- return {
78
- "id": sid,
79
- "messages": []
80
- }
81
-
82
- async def delete_session(self, session_id: str) -> bool:
83
- """Delete a session and return success status."""
84
- try:
85
- return self._store.delete_session(session_id)
86
- except Exception:
87
- logger.exception("Failed to delete session %s", session_id)
88
- return False
89
-
90
- async def add_message(self, session_id: str, message: dict[str, Any]):
91
- """Add a message to a session."""
92
- self._store.add_message(
93
- session_id=session_id,
94
- role=message.get("role", "user"),
95
- content=message.get("content", ""),
96
- metadata=message.get("metadata")
97
- )
98
-
99
- async def get_messages(self, session_id: str) -> list[dict[str, Any]]:
100
- """Get all messages for a session."""
101
- if not self._store.session_exists(session_id):
102
- return []
103
-
104
- try:
105
- return self._store.get_chat_history(session_id) or []
106
- except Exception:
107
- logger.exception("Failed to load messages for session %s", session_id)
108
- return []
@@ -1 +0,0 @@
1
- __version__ = "4.6.30"
File without changes