PraisonAI 4.6.20__tar.gz → 4.6.22__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 (763) hide show
  1. {praisonai-4.6.20 → praisonai-4.6.22}/PKG-INFO +2 -2
  2. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/SOURCES.txt +7 -1
  4. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/agents_generator.py +5 -0
  6. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/skills.py +14 -13
  7. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/app.py +1 -1
  8. praisonai-4.6.20/praisonai/cli/commands/unified.py → praisonai-4.6.22/praisonai/cli/commands/dashboard.py +254 -22
  9. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/skills.py +66 -17
  10. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy.py +1 -1
  11. praisonai-4.6.22/praisonai/gateway/push_channels.py +224 -0
  12. praisonai-4.6.22/praisonai/gateway/push_delivery.py +281 -0
  13. praisonai-4.6.22/praisonai/gateway/push_polling.py +306 -0
  14. praisonai-4.6.22/praisonai/gateway/push_presence.py +235 -0
  15. praisonai-4.6.22/praisonai/gateway/redis_pubsub.py +253 -0
  16. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/server.py +98 -1
  17. praisonai-4.6.22/praisonai/tools/skill_manage.py +573 -0
  18. praisonai-4.6.22/praisonai/version.py +1 -0
  19. {praisonai-4.6.20 → praisonai-4.6.22}/pyproject.toml +1 -1
  20. praisonai-4.6.20/praisonai/version.py +0 -1
  21. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/dependency_links.txt +0 -0
  22. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/entry_points.txt +0 -0
  23. {praisonai-4.6.20 → praisonai-4.6.22}/PraisonAI.egg-info/top_level.txt +0 -0
  24. {praisonai-4.6.20 → praisonai-4.6.22}/README.md +0 -0
  25. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/__init__.py +0 -0
  26. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/__main__.py +0 -0
  27. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_approval_spec.py +0 -0
  28. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_async_bridge.py +0 -0
  29. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/__init__.py +0 -0
  30. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/api_md.py +0 -0
  31. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/__init__.py +0 -0
  32. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/docs_extractor.py +0 -0
  33. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/docs_generator.py +0 -0
  34. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/generator.py +0 -0
  35. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  36. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/python_extractor.py +0 -0
  37. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  38. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/rust_extractor.py +0 -0
  39. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  40. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  41. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  42. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/_logging.py +0 -0
  43. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/acp/__init__.py +0 -0
  44. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/acp/config.py +0 -0
  45. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/acp/safe_edit.py +0 -0
  46. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/acp/server.py +0 -0
  47. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/acp/session.py +0 -0
  48. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/adapters/__init__.py +0 -0
  49. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/adapters/readers.py +0 -0
  50. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/adapters/rerankers.py +0 -0
  51. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/adapters/retrievers.py +0 -0
  52. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/adapters/vector_stores.py +0 -0
  53. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/agent_scheduler.py +0 -0
  54. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/api/agent_invoke.py +0 -0
  55. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/api/call.py +0 -0
  56. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/app/__init__.py +0 -0
  57. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/app/agentos.py +0 -0
  58. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/async_agent_scheduler.py +0 -0
  59. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/audit/__init__.py +0 -0
  60. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/audit/agent_centric.py +0 -0
  61. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/auto.py +0 -0
  62. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/__init__.py +0 -0
  63. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_ack.py +0 -0
  64. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_approval.py +0 -0
  65. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_approval_base.py +0 -0
  66. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_chunk.py +0 -0
  67. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_commands.py +0 -0
  68. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_config_schema.py +0 -0
  69. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_debounce.py +0 -0
  70. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_discord_approval.py +0 -0
  71. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_email_utils.py +0 -0
  72. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_http_approval.py +0 -0
  73. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_protocol_mixin.py +0 -0
  74. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_rate_limit.py +0 -0
  75. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_registry.py +0 -0
  76. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_resilience.py +0 -0
  77. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_session.py +0 -0
  78. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_slack_approval.py +0 -0
  79. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_telegram_approval.py +0 -0
  80. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_webhook_approval.py +0 -0
  81. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  82. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/agentmail.py +0 -0
  83. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/bot.py +0 -0
  84. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/botos.py +0 -0
  85. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/discord.py +0 -0
  86. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/email.py +0 -0
  87. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/media.py +0 -0
  88. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/slack.py +0 -0
  89. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/telegram.py +0 -0
  90. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/bots/whatsapp.py +0 -0
  91. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/__init__.py +0 -0
  92. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/agent.py +0 -0
  93. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/benchmark.py +0 -0
  94. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/cdp_agent.py +0 -0
  95. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/cdp_utils.py +0 -0
  96. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/cli.py +0 -0
  97. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/diagnostics.py +0 -0
  98. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/launcher.py +0 -0
  99. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/playwright_agent.py +0 -0
  100. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/profiling.py +0 -0
  101. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/protocol.py +0 -0
  102. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/report.py +0 -0
  103. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/server.py +0 -0
  104. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/sessions.py +0 -0
  105. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/browser/video.py +0 -0
  106. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/__init__.py +0 -0
  107. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/a2a.py +0 -0
  108. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/assistants.py +0 -0
  109. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/audio.py +0 -0
  110. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/batches.py +0 -0
  111. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/completions.py +0 -0
  112. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/container_files.py +0 -0
  113. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/containers.py +0 -0
  114. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/embeddings.py +0 -0
  115. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/files.py +0 -0
  116. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/fine_tuning.py +0 -0
  117. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/guardrails.py +0 -0
  118. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/images.py +0 -0
  119. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/mcp.py +0 -0
  120. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/messages.py +0 -0
  121. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/moderations.py +0 -0
  122. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/ocr.py +0 -0
  123. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/passthrough.py +0 -0
  124. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/rag.py +0 -0
  125. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/realtime.py +0 -0
  126. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/rerank.py +0 -0
  127. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/responses.py +0 -0
  128. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/search.py +0 -0
  129. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/vector_store_files.py +0 -0
  130. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/vector_stores.py +0 -0
  131. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/capabilities/videos.py +0 -0
  132. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/chainlit_ui.py +0 -0
  133. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/chat/__init__.py +0 -0
  134. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/chat/app.py +0 -0
  135. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/claw/__init__.py +0 -0
  136. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/claw/default_app.py +0 -0
  137. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/__init__.py +0 -0
  138. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/_paths.py +0 -0
  139. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/branding.py +0 -0
  140. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/__init__.py +0 -0
  141. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/acp.py +0 -0
  142. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/agents.py +0 -0
  143. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/app.py +0 -0
  144. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/audit.py +0 -0
  145. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/batch.py +0 -0
  146. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/benchmark.py +0 -0
  147. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/bot.py +0 -0
  148. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/browser.py +0 -0
  149. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/call.py +0 -0
  150. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/chat.py +0 -0
  151. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/claw.py +0 -0
  152. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/code.py +0 -0
  153. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/commit.py +0 -0
  154. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/completion.py +0 -0
  155. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/config.py +0 -0
  156. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/context.py +0 -0
  157. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/debug.py +0 -0
  158. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/deploy.py +0 -0
  159. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/diag.py +0 -0
  160. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/docs.py +0 -0
  161. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/doctor.py +0 -0
  162. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/endpoints.py +0 -0
  163. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/environment.py +0 -0
  164. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/eval.py +0 -0
  165. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/examples.py +0 -0
  166. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/flow.py +0 -0
  167. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/gateway.py +0 -0
  168. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/github.py +0 -0
  169. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/hooks.py +0 -0
  170. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/knowledge.py +0 -0
  171. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/langextract.py +0 -0
  172. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/langfuse.py +0 -0
  173. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/loop.py +0 -0
  174. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/lsp.py +0 -0
  175. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/managed.py +0 -0
  176. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/mcp.py +0 -0
  177. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/memory.py +0 -0
  178. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/n8n.py +0 -0
  179. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/obs.py +0 -0
  180. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/onboard.py +0 -0
  181. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/package.py +0 -0
  182. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/paths.py +0 -0
  183. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/plugins.py +0 -0
  184. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/port.py +0 -0
  185. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/profile.py +0 -0
  186. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/publish.py +0 -0
  187. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/rag.py +0 -0
  188. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/realtime.py +0 -0
  189. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/recipe.py +0 -0
  190. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/registry.py +0 -0
  191. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/replay.py +0 -0
  192. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/research.py +0 -0
  193. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/retrieval.py +0 -0
  194. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/rules.py +0 -0
  195. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/run.py +0 -0
  196. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/sandbox.py +0 -0
  197. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/schedule.py +0 -0
  198. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/serve.py +0 -0
  199. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/session.py +0 -0
  200. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/setup.py +0 -0
  201. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/standardise.py +0 -0
  202. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/templates.py +0 -0
  203. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/test.py +0 -0
  204. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/todo.py +0 -0
  205. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/tools.py +0 -0
  206. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/traces.py +0 -0
  207. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/tracker.py +0 -0
  208. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/train.py +0 -0
  209. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/ui.py +0 -0
  210. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/up.py +0 -0
  211. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/version.py +0 -0
  212. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/commands/workflow.py +0 -0
  213. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/config_loader.py +0 -0
  214. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/configuration/__init__.py +0 -0
  215. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/configuration/loader.py +0 -0
  216. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/configuration/paths.py +0 -0
  217. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/configuration/schema.py +0 -0
  218. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/execution/__init__.py +0 -0
  219. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/execution/core.py +0 -0
  220. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/execution/profiler.py +0 -0
  221. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/execution/request.py +0 -0
  222. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/execution/result.py +0 -0
  223. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/fallback_schema.py +0 -0
  224. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/__init__.py +0 -0
  225. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/acp.py +0 -0
  226. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/action_orchestrator.py +0 -0
  227. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/agent_scheduler.py +0 -0
  228. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/agent_tools.py +0 -0
  229. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/agents.py +0 -0
  230. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/approval.py +0 -0
  231. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/at_mentions.py +0 -0
  232. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/audit_cli.py +0 -0
  233. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/auto_memory.py +0 -0
  234. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/auto_mode.py +0 -0
  235. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/autonomy_mode.py +0 -0
  236. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/background.py +0 -0
  237. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/base.py +0 -0
  238. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/benchmark.py +0 -0
  239. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/bots_cli.py +0 -0
  240. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/capabilities.py +0 -0
  241. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/checkpoints.py +0 -0
  242. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/cli_profiler.py +0 -0
  243. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/code_intelligence.py +0 -0
  244. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/compaction.py +0 -0
  245. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/compare.py +0 -0
  246. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/config_hierarchy.py +0 -0
  247. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/context_manager.py +0 -0
  248. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/cost_tracker.py +0 -0
  249. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/csv_test_runner.py +0 -0
  250. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/debug.py +0 -0
  251. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/deploy.py +0 -0
  252. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/diag.py +0 -0
  253. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/display_jsonl.py +0 -0
  254. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/__init__.py +0 -0
  255. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  256. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  257. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  258. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  259. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  260. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  261. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  262. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  263. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  264. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  265. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  266. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  267. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  268. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  269. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  270. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  271. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  272. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/engine.py +0 -0
  273. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/formatters.py +0 -0
  274. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/handler.py +0 -0
  275. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/models.py +0 -0
  276. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/doctor/registry.py +0 -0
  277. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/endpoints.py +0 -0
  278. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/eval.py +0 -0
  279. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/examples.py +0 -0
  280. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/external_agents.py +0 -0
  281. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/fast_context.py +0 -0
  282. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/file_history.py +0 -0
  283. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/flow_display.py +0 -0
  284. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/gateway.py +0 -0
  285. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/git_attribution.py +0 -0
  286. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/git_integration.py +0 -0
  287. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/guardrail.py +0 -0
  288. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/handoff.py +0 -0
  289. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/hooks.py +0 -0
  290. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/hybrid_workflow.py +0 -0
  291. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/image.py +0 -0
  292. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/interactive_core_headless.py +0 -0
  293. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/interactive_runtime.py +0 -0
  294. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/interactive_test_harness.py +0 -0
  295. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/interactive_tools.py +0 -0
  296. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/interactive_tui.py +0 -0
  297. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/job_workflow.py +0 -0
  298. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/jobs.py +0 -0
  299. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/knowledge.py +0 -0
  300. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/knowledge_cli.py +0 -0
  301. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/lite.py +0 -0
  302. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/logs.py +0 -0
  303. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/lsp_cli.py +0 -0
  304. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  305. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/mcp.py +0 -0
  306. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/message_queue.py +0 -0
  307. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/metrics.py +0 -0
  308. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/migrate.py +0 -0
  309. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/migration_flow.py +0 -0
  310. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/migration_spec.py +0 -0
  311. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/n8n.py +0 -0
  312. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/observability.py +0 -0
  313. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/ollama.py +0 -0
  314. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/onboard.py +0 -0
  315. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/output_modes.py +0 -0
  316. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/output_style.py +0 -0
  317. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/package.py +0 -0
  318. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/performance.py +0 -0
  319. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/persistence.py +0 -0
  320. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/plugin_cli.py +0 -0
  321. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profile.py +0 -0
  322. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profiler/__init__.py +0 -0
  323. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profiler/core.py +0 -0
  324. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profiler/optimizations.py +0 -0
  325. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profiler/suite.py +0 -0
  326. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/profiling.py +0 -0
  327. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/__init__.py +0 -0
  328. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/manager.py +0 -0
  329. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/models.py +0 -0
  330. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/persistence.py +0 -0
  331. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/scheduler.py +0 -0
  332. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/queue/worker.py +0 -0
  333. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/recipe.py +0 -0
  334. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/recipe_creator.py +0 -0
  335. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/recipe_optimizer.py +0 -0
  336. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/recipe_prompts.py +0 -0
  337. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/recipes.py +0 -0
  338. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/registry.py +0 -0
  339. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/repo_map.py +0 -0
  340. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/router.py +0 -0
  341. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/safe_shell.py +0 -0
  342. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/sandbox_cli.py +0 -0
  343. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/sandbox_executor.py +0 -0
  344. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/sdk_knowledge.py +0 -0
  345. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/serve.py +0 -0
  346. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/session.py +0 -0
  347. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/setup/__init__.py +0 -0
  348. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/setup/handler.py +0 -0
  349. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/setup/templates.py +0 -0
  350. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/skills.py +0 -0
  351. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/slash_commands.py +0 -0
  352. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/telemetry.py +0 -0
  353. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/templates.py +0 -0
  354. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/thinking.py +0 -0
  355. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/todo.py +0 -0
  356. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tools.py +0 -0
  357. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/__init__.py +0 -0
  358. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/app.py +0 -0
  359. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/cli.py +0 -0
  360. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/config.py +0 -0
  361. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/debug.py +0 -0
  362. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/events.py +0 -0
  363. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/mock_provider.py +0 -0
  364. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/orchestrator.py +0 -0
  365. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  366. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/help.py +0 -0
  367. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/main.py +0 -0
  368. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/queue.py +0 -0
  369. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/session.py +0 -0
  370. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/screens/settings.py +0 -0
  371. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/session_store.py +0 -0
  372. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  373. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  374. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  375. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  376. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  377. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  378. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/status.py +0 -0
  379. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  380. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/wizard.py +0 -0
  381. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/workflow.py +0 -0
  382. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/features/yaml_utils.py +0 -0
  383. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/__init__.py +0 -0
  384. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/async_tui.py +0 -0
  385. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/config.py +0 -0
  386. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/core.py +0 -0
  387. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/events.py +0 -0
  388. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  389. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  390. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  391. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/praison_io.py +0 -0
  392. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/repl.py +0 -0
  393. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/split_tui.py +0 -0
  394. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/interactive/tui_app.py +0 -0
  395. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/langfuse_client.py +0 -0
  396. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/legacy.py +0 -0
  397. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/main.py +0 -0
  398. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/output/__init__.py +0 -0
  399. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/output/console.py +0 -0
  400. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/schedule_cli.py +0 -0
  401. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/schema_provider.py +0 -0
  402. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/session/__init__.py +0 -0
  403. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/session/unified.py +0 -0
  404. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/state/__init__.py +0 -0
  405. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/state/identifiers.py +0 -0
  406. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/state/sessions.py +0 -0
  407. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/__init__.py +0 -0
  408. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/config.py +0 -0
  409. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/events.py +0 -0
  410. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/mg_backend.py +0 -0
  411. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/plain.py +0 -0
  412. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/ui/rich_backend.py +0 -0
  413. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/cli/unified_schema.py +0 -0
  414. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/__init__.py +0 -0
  415. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/agent_tools.py +0 -0
  416. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/diff/__init__.py +0 -0
  417. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/diff/diff_strategy.py +0 -0
  418. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/__init__.py +0 -0
  419. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/apply_diff.py +0 -0
  420. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/execute_command.py +0 -0
  421. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/list_files.py +0 -0
  422. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/read_file.py +0 -0
  423. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/search_replace.py +0 -0
  424. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/tools/write_file.py +0 -0
  425. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/utils/__init__.py +0 -0
  426. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/utils/file_utils.py +0 -0
  427. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/utils/ignore_utils.py +0 -0
  428. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/code/utils/text_utils.py +0 -0
  429. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/__init__.py +0 -0
  430. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/artifact_store.py +0 -0
  431. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/config.py +0 -0
  432. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/history_store.py +0 -0
  433. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/queue.py +0 -0
  434. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/setup.py +0 -0
  435. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/context/terminal_logger.py +0 -0
  436. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/daemon/__init__.py +0 -0
  437. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/daemon/launchd.py +0 -0
  438. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/daemon/systemd.py +0 -0
  439. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/daemon/windows.py +0 -0
  440. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/db/__init__.py +0 -0
  441. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/db/adapter.py +0 -0
  442. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/__init__.py +0 -0
  443. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/api.py +0 -0
  444. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/docker.py +0 -0
  445. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/doctor.py +0 -0
  446. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/main.py +0 -0
  447. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/models.py +0 -0
  448. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/providers/__init__.py +0 -0
  449. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/providers/aws.py +0 -0
  450. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/providers/azure.py +0 -0
  451. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/providers/base.py +0 -0
  452. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/providers/gcp.py +0 -0
  453. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/deploy/schema.py +0 -0
  454. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/__init__.py +0 -0
  455. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/classifier.py +0 -0
  456. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/executor.py +0 -0
  457. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/extractor.py +0 -0
  458. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/reporter.py +0 -0
  459. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/runner.py +0 -0
  460. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/docs_runner/workspace.py +0 -0
  461. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/__init__.py +0 -0
  462. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/a2u_server.py +0 -0
  463. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/discovery.py +0 -0
  464. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/__init__.py +0 -0
  465. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/a2a.py +0 -0
  466. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/a2u.py +0 -0
  467. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/agents_api.py +0 -0
  468. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/base.py +0 -0
  469. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/mcp.py +0 -0
  470. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/recipe.py +0 -0
  471. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  472. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/registry.py +0 -0
  473. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/endpoints/server.py +0 -0
  474. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/__init__.py +0 -0
  475. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/client.py +0 -0
  476. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  477. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  478. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/components/__init__.py +0 -0
  479. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/converter.py +0 -0
  480. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/flow/helpers.py +0 -0
  481. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/framework_adapters/__init__.py +0 -0
  482. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  483. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/framework_adapters/base.py +0 -0
  484. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  485. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  486. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/__init__.py +0 -0
  487. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/exec_approval.py +0 -0
  488. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/gateway_approval.py +0 -0
  489. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/pairing.py +0 -0
  490. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/gateway/rate_limiter.py +0 -0
  491. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/inbuilt_tools/__init__.py +0 -0
  492. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  493. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/inc/__init__.py +0 -0
  494. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/inc/config.py +0 -0
  495. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/inc/models.py +0 -0
  496. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/__init__.py +0 -0
  497. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/_session_info.py +0 -0
  498. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/_tool_aliases.py +0 -0
  499. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/base.py +0 -0
  500. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/claude_code.py +0 -0
  501. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/codex_cli.py +0 -0
  502. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/__init__.py +0 -0
  503. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/daytona.py +0 -0
  504. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/docker.py +0 -0
  505. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/e2b.py +0 -0
  506. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/flyio.py +0 -0
  507. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/local.py +0 -0
  508. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/compute/modal_compute.py +0 -0
  509. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/cursor_cli.py +0 -0
  510. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/db_session_adapter.py +0 -0
  511. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/gemini_cli.py +0 -0
  512. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/managed_agents.py +0 -0
  513. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/managed_local.py +0 -0
  514. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/integrations/registry.py +0 -0
  515. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/__init__.py +0 -0
  516. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/executor.py +0 -0
  517. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/models.py +0 -0
  518. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/router.py +0 -0
  519. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/server.py +0 -0
  520. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/jobs/store.py +0 -0
  521. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/llm/__init__.py +0 -0
  522. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/llm/registry.py +0 -0
  523. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/__init__.py +0 -0
  524. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/__init__.py +0 -0
  525. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/agents.py +0 -0
  526. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  527. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  528. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  529. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  530. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/memory.py +0 -0
  531. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/prompts.py +0 -0
  532. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/resources.py +0 -0
  533. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  534. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/auth/__init__.py +0 -0
  535. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/auth/api_key.py +0 -0
  536. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/auth/oauth.py +0 -0
  537. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/auth/oidc.py +0 -0
  538. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/auth/scopes.py +0 -0
  539. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/cli.py +0 -0
  540. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/elicitation.py +0 -0
  541. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/icons.py +0 -0
  542. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/recipe_adapter.py +0 -0
  543. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/recipe_cli.py +0 -0
  544. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/registry.py +0 -0
  545. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/sampling.py +0 -0
  546. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/server.py +0 -0
  547. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/tasks.py +0 -0
  548. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/tool_index.py +0 -0
  549. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/transports/__init__.py +0 -0
  550. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/transports/http_stream.py +0 -0
  551. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/mcp_server/transports/stdio.py +0 -0
  552. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/n8n/__init__.py +0 -0
  553. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/n8n/client.py +0 -0
  554. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/n8n/converter.py +0 -0
  555. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/n8n/preview.py +0 -0
  556. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/n8n/reverse_converter.py +0 -0
  557. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/observability/__init__.py +0 -0
  558. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/observability/langextract.py +0 -0
  559. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/observability/langfuse.py +0 -0
  560. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/__init__.py +0 -0
  561. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/config.py +0 -0
  562. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/__init__.py +0 -0
  563. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/async_mysql.py +0 -0
  564. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/async_postgres.py +0 -0
  565. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  566. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/base.py +0 -0
  567. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/json_store.py +0 -0
  568. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/mysql.py +0 -0
  569. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/postgres.py +0 -0
  570. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/singlestore.py +0 -0
  571. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/sqlite.py +0 -0
  572. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/supabase.py +0 -0
  573. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/surrealdb.py +0 -0
  574. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/conversation/turso.py +0 -0
  575. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/factory.py +0 -0
  576. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/hooks/__init__.py +0 -0
  577. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  578. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/__init__.py +0 -0
  579. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/base.py +0 -0
  580. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/cassandra.py +0 -0
  581. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/chroma.py +0 -0
  582. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  583. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  584. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/couchbase.py +0 -0
  585. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/lancedb.py +0 -0
  586. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  587. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  588. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  589. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/milvus.py +0 -0
  590. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  591. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/pgvector.py +0 -0
  592. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/pinecone.py +0 -0
  593. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/qdrant.py +0 -0
  594. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  595. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  596. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  597. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  598. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/knowledge/weaviate.py +0 -0
  599. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/migrations/__init__.py +0 -0
  600. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/migrations/manager.py +0 -0
  601. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/orchestrator.py +0 -0
  602. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/__init__.py +0 -0
  603. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/async_mongodb.py +0 -0
  604. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/base.py +0 -0
  605. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/dynamodb.py +0 -0
  606. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/firestore.py +0 -0
  607. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/gcs.py +0 -0
  608. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/memory.py +0 -0
  609. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/mongodb.py +0 -0
  610. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/redis.py +0 -0
  611. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/state/upstash.py +0 -0
  612. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/tests/__init__.py +0 -0
  613. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/persistence/tests/test_all_backends.py +0 -0
  614. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/profiler.py +0 -0
  615. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/__init__.py +0 -0
  616. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/bridge.py +0 -0
  617. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/core.py +0 -0
  618. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/exceptions.py +0 -0
  619. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/history.py +0 -0
  620. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/models.py +0 -0
  621. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/operations.py +0 -0
  622. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/policy.py +0 -0
  623. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/registry.py +0 -0
  624. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/runtime.py +0 -0
  625. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/security.py +0 -0
  626. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/serve.py +0 -0
  627. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/recipe/server.py +0 -0
  628. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/__init__.py +0 -0
  629. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/analyzer.py +0 -0
  630. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/applier.py +0 -0
  631. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/judge.py +0 -0
  632. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/plan.py +0 -0
  633. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/player.py +0 -0
  634. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/reader.py +0 -0
  635. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/storage.py +0 -0
  636. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/replay/writer.py +0 -0
  637. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/__init__.py +0 -0
  638. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/daytona.py +0 -0
  639. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/docker.py +0 -0
  640. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/modal.py +0 -0
  641. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/sandlock.py +0 -0
  642. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/ssh.py +0 -0
  643. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/sandbox/subprocess.py +0 -0
  644. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/__init__.py +0 -0
  645. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/agent_scheduler.py +0 -0
  646. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/base.py +0 -0
  647. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/daemon_manager.py +0 -0
  648. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/executor.py +0 -0
  649. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/state_manager.py +0 -0
  650. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler/yaml_loader.py +0 -0
  651. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/scheduler.py +0 -0
  652. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/security/__init__.py +0 -0
  653. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/security/audit.py +0 -0
  654. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/security/injection.py +0 -0
  655. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/security/protected.py +0 -0
  656. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/setup/__init__.py +0 -0
  657. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/setup/build.py +0 -0
  658. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/setup/post_install.py +0 -0
  659. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/setup/setup_conda_env.py +0 -0
  660. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/setup.py +0 -0
  661. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/__init__.py +0 -0
  662. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/ai_generator.py +0 -0
  663. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/config.py +0 -0
  664. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/dedupe.py +0 -0
  665. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/discovery.py +0 -0
  666. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/drift.py +0 -0
  667. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/engine.py +0 -0
  668. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/enhanced_templates.py +0 -0
  669. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/example_verifier.py +0 -0
  670. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/manifest.py +0 -0
  671. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/models.py +0 -0
  672. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/reports.py +0 -0
  673. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/templates.py +0 -0
  674. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/undo_redo.py +0 -0
  675. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/standardise/validator.py +0 -0
  676. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/storage/__init__.py +0 -0
  677. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/storage/dynamodb_adapter.py +0 -0
  678. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/storage/mongodb_adapter.py +0 -0
  679. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/storage/postgresql_adapter.py +0 -0
  680. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/storage/redis_adapter.py +0 -0
  681. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/__init__.py +0 -0
  682. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/batch_source.py +0 -0
  683. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/cli_docs_source.py +0 -0
  684. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/discovery.py +0 -0
  685. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/docs_source.py +0 -0
  686. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/examples_source.py +0 -0
  687. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/executor.py +0 -0
  688. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/models.py +0 -0
  689. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/report_viewer.py +0 -0
  690. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/reporter.py +0 -0
  691. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/suite_runner/runner.py +0 -0
  692. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/__init__.py +0 -0
  693. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/cache.py +0 -0
  694. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/dependency_checker.py +0 -0
  695. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/discovery.py +0 -0
  696. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/loader.py +0 -0
  697. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/registry.py +0 -0
  698. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/resolver.py +0 -0
  699. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/security.py +0 -0
  700. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/tool_override.py +0 -0
  701. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/templates/tools_doctor.py +0 -0
  702. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/test.py +0 -0
  703. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tool_registry.py +0 -0
  704. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tool_resolver.py +0 -0
  705. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tools/__init__.py +0 -0
  706. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tools/audio.py +0 -0
  707. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tools/glob_tool.py +0 -0
  708. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tools/grep_tool.py +0 -0
  709. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/tools/multiedit.py +0 -0
  710. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/__init__.py +0 -0
  711. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/__init__.py +0 -0
  712. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/grader.py +0 -0
  713. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/hook.py +0 -0
  714. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/models.py +0 -0
  715. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/orchestrator.py +0 -0
  716. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/agents/storage.py +0 -0
  717. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/llm/__init__.py +0 -0
  718. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train/llm/trainer.py +0 -0
  719. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train.py +0 -0
  720. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/train_vision.py +0 -0
  721. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/_aiui_datastore.py +0 -0
  722. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/_external_agents.py +0 -0
  723. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/agents.py +0 -0
  724. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/bot.py +0 -0
  725. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/callbacks.py +0 -0
  726. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/chainlit_compat.py +0 -0
  727. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/chat.py +0 -0
  728. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/code.py +0 -0
  729. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/colab.py +0 -0
  730. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/colab_chainlit.py +0 -0
  731. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/components/aicoder.py +0 -0
  732. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/context.py +0 -0
  733. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/database_config.py +0 -0
  734. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/db.py +0 -0
  735. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/realtime.py +0 -0
  736. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/realtimeclient/__init__.py +0 -0
  737. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/realtimeclient/tools.py +0 -0
  738. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui/sql_alchemy.py +0 -0
  739. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_agents/__init__.py +0 -0
  740. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_agents/default_app.py +0 -0
  741. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_bot/__init__.py +0 -0
  742. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_bot/default_app.py +0 -0
  743. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_chat/__init__.py +0 -0
  744. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_chat/default_app.py +0 -0
  745. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_realtime/__init__.py +0 -0
  746. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/ui_realtime/default_app.py +0 -0
  747. {praisonai-4.6.20 → praisonai-4.6.22}/praisonai/upload_vision.py +0 -0
  748. {praisonai-4.6.20 → praisonai-4.6.22}/setup.cfg +0 -0
  749. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test.py +0 -0
  750. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_agents_playbook.py +0 -0
  751. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_approval_system.py +0 -0
  752. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_basic.py +0 -0
  753. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_cli_features.py +0 -0
  754. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_custom_tools_fix.py +0 -0
  755. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_double_api_fix.py +0 -0
  756. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_n8n_agent_invoke.py +0 -0
  757. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_n8n_cli_feature.py +0 -0
  758. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_n8n_integration.py +0 -0
  759. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_phase2_refactor.py +0 -0
  760. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_recipe.py +0 -0
  761. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_registry.py +0 -0
  762. {praisonai-4.6.20 → praisonai-4.6.22}/tests/test_runner.py +0 -0
  763. {praisonai-4.6.20 → praisonai-4.6.22}/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.20
3
+ Version: 4.6.22
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.20
14
+ Requires-Dist: praisonaiagents>=1.6.22
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.20
3
+ Version: 4.6.22
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.20
14
+ Requires-Dist: praisonaiagents>=1.6.22
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
@@ -160,6 +160,7 @@ praisonai/cli/commands/commit.py
160
160
  praisonai/cli/commands/completion.py
161
161
  praisonai/cli/commands/config.py
162
162
  praisonai/cli/commands/context.py
163
+ praisonai/cli/commands/dashboard.py
163
164
  praisonai/cli/commands/debug.py
164
165
  praisonai/cli/commands/deploy.py
165
166
  praisonai/cli/commands/diag.py
@@ -214,7 +215,6 @@ praisonai/cli/commands/traces.py
214
215
  praisonai/cli/commands/tracker.py
215
216
  praisonai/cli/commands/train.py
216
217
  praisonai/cli/commands/ui.py
217
- praisonai/cli/commands/unified.py
218
218
  praisonai/cli/commands/up.py
219
219
  praisonai/cli/commands/version.py
220
220
  praisonai/cli/commands/workflow.py
@@ -487,7 +487,12 @@ praisonai/gateway/__init__.py
487
487
  praisonai/gateway/exec_approval.py
488
488
  praisonai/gateway/gateway_approval.py
489
489
  praisonai/gateway/pairing.py
490
+ praisonai/gateway/push_channels.py
491
+ praisonai/gateway/push_delivery.py
492
+ praisonai/gateway/push_polling.py
493
+ praisonai/gateway/push_presence.py
490
494
  praisonai/gateway/rate_limiter.py
495
+ praisonai/gateway/redis_pubsub.py
491
496
  praisonai/gateway/server.py
492
497
  praisonai/inbuilt_tools/__init__.py
493
498
  praisonai/inbuilt_tools/autogen_tools.py
@@ -702,6 +707,7 @@ praisonai/tools/audio.py
702
707
  praisonai/tools/glob_tool.py
703
708
  praisonai/tools/grep_tool.py
704
709
  praisonai/tools/multiedit.py
710
+ praisonai/tools/skill_manage.py
705
711
  praisonai/train/__init__.py
706
712
  praisonai/train/agents/__init__.py
707
713
  praisonai/train/agents/grader.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.20
4
+ praisonaiagents>=1.6.22
5
5
  python-dotenv>=0.19.0
6
6
  litellm<=1.82.6,>=1.81.0
7
7
  PyYAML>=6.0
@@ -1236,6 +1236,10 @@ class AgentsGenerator:
1236
1236
  except ImportError:
1237
1237
  self.logger.warning("OutputConfig not available, streaming disabled")
1238
1238
 
1239
+ # G16: YAML `skills:` key. Accepts a list of paths, a single path
1240
+ # string, or a full SkillsConfig dict (paths/dirs/auto_discover).
1241
+ agent_skills = details.get('skills')
1242
+
1239
1243
  agent = PraisonAgent(
1240
1244
  name=role_filled,
1241
1245
  role=role_filled,
@@ -1252,6 +1256,7 @@ class AgentsGenerator:
1252
1256
  guardrails=guardrails_config,
1253
1257
  approval=approval_config,
1254
1258
  output=output_config,
1259
+ skills=agent_skills,
1255
1260
  )
1256
1261
 
1257
1262
  if self.agent_callback:
@@ -97,19 +97,20 @@ def skill_load(
97
97
  """
98
98
  try:
99
99
  from praisonaiagents.skills import load_skill
100
-
101
- skill = load_skill(skill_name, skill_dirs)
102
-
103
- if skill:
104
- return SkillResult(
105
- name=skill.name,
106
- description=skill.description,
107
- path=str(skill.path) if skill.path else None,
108
- instructions=skill.instructions if hasattr(skill, 'instructions') else None,
109
- metadata=metadata or {},
110
- )
111
-
112
- return None
100
+
101
+ loaded = load_skill(skill_name, skill_dirs)
102
+
103
+ if loaded is None:
104
+ return None
105
+
106
+ props = loaded.properties
107
+ return SkillResult(
108
+ name=props.name,
109
+ description=props.description,
110
+ path=str(props.path) if props.path else None,
111
+ instructions=loaded.instructions,
112
+ metadata=metadata or {},
113
+ )
113
114
  except ImportError:
114
115
  return None
115
116
 
@@ -348,7 +348,7 @@ def register_commands():
348
348
  from .commands.sandbox import app as sandbox_app
349
349
  from .commands.claw import app as claw_app
350
350
  from .commands.flow import app as flow_app
351
- from .commands.unified import app as unified_app
351
+ from .commands.dashboard import app as unified_app
352
352
  from .commands.langfuse import app as langfuse_app
353
353
  from .commands.langextract import app as langextract_app
354
354
  from .commands.port import app as port_app
@@ -10,6 +10,7 @@ import subprocess
10
10
  import sys
11
11
  import atexit
12
12
  import signal
13
+ import json
13
14
  from pathlib import Path
14
15
  from types import FrameType
15
16
  from typing import Set, TextIO
@@ -76,6 +77,218 @@ def _unregister_cleanup_handlers(original_sigint, original_sigterm):
76
77
  # so we keep the atexit handler but check if process list is empty
77
78
 
78
79
 
80
+ def _spawn_service(service_name: str, service_port: int, host: str, log_handle):
81
+ """Spawn a single service with proper command configuration."""
82
+ # Service configuration: [command, extra_flags]
83
+ service_config = {
84
+ "flow": ["flow", ["--no-open"]],
85
+ "claw": ["claw", []],
86
+ "ui": ["ui", []]
87
+ }
88
+
89
+ if service_name not in service_config:
90
+ raise ValueError(f"Unknown service: {service_name}")
91
+
92
+ command, extra_flags = service_config[service_name]
93
+ argv = [sys.executable, "-m", "praisonai", command, "--port", str(service_port), "--host", host] + extra_flags
94
+
95
+ return subprocess.Popen(argv, stdout=log_handle, stderr=subprocess.STDOUT)
96
+
97
+
98
+ def _wait_for_service_ready(service_name: str, proc: subprocess.Popen, service_port: int, host: str, log_file: Path, console, timeout: int = 15) -> bool:
99
+ """Wait for service to be ready with proper readiness check."""
100
+ check_host = _resolve_check_host(host)
101
+ deadline = time.time() + timeout
102
+
103
+ while time.time() < deadline:
104
+ # Check if process crashed
105
+ if proc.poll() is not None:
106
+ console.print(f"[red]✗ {service_name} crashed during startup (exit code: {proc.returncode})[/red]")
107
+ console.print(f"[dim]Check log: {log_file}[/dim]")
108
+ return False
109
+
110
+ # Check if service is accepting connections
111
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
112
+ try:
113
+ if sock.connect_ex((check_host, service_port)) == 0:
114
+ return True
115
+ except OSError:
116
+ pass
117
+ finally:
118
+ sock.close()
119
+
120
+ time.sleep(0.5)
121
+
122
+ console.print(f"[red]✗ {service_name} did not become ready within {timeout} seconds[/red]")
123
+ console.print(f"[dim]Check log: {log_file}[/dim]")
124
+ return False
125
+
126
+
127
+ def _auto_start_services(console, host: str) -> bool:
128
+ """Auto-start PraisonAI services with proper readiness checks."""
129
+ services = [
130
+ ("flow", 7860),
131
+ ("claw", 8082),
132
+ ("ui", 8081)
133
+ ]
134
+
135
+ success_count = 0
136
+
137
+ for service_name, service_port in services:
138
+ # Check if service is already running
139
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
140
+ check_host = _resolve_check_host(host)
141
+ try:
142
+ connection_result = sock.connect_ex((check_host, service_port))
143
+ if connection_result == 0:
144
+ console.print(f"[yellow]✓ {service_name} already running on port {service_port}[/yellow]")
145
+ success_count += 1
146
+ sock.close()
147
+ continue
148
+ except OSError:
149
+ pass
150
+ finally:
151
+ sock.close()
152
+
153
+ # Start the service
154
+ console.print(f"[cyan]Starting {service_name} on port {service_port}...[/cyan]")
155
+ log_handle = None
156
+ proc = None
157
+ try:
158
+ # Create log directory for troubleshooting
159
+ log_dir = Path.home() / ".praisonai" / "unified" / "logs"
160
+ log_dir.mkdir(parents=True, exist_ok=True)
161
+ log_file = log_dir / f"{service_name}.log"
162
+
163
+ log_handle = open(log_file, "a", encoding="utf-8")
164
+
165
+ # Spawn service using shared logic
166
+ proc = _spawn_service(service_name, service_port, host, log_handle)
167
+
168
+ # Wait for service to be ready
169
+ if _wait_for_service_ready(service_name, proc, service_port, host, log_file, console):
170
+ # Track process for cleanup only after successful startup
171
+ _ACTIVE_PROCESSES.add(proc)
172
+ _PROCESS_LOG_HANDLES[proc] = log_handle
173
+ console.print(f"[green]✓ {service_name} started successfully[/green]")
174
+ success_count += 1
175
+ log_handle = None # Don't close, it's now tracked
176
+ else:
177
+ # Clean up failed process
178
+ if proc and proc.poll() is None:
179
+ proc.terminate()
180
+ try:
181
+ proc.wait(timeout=5)
182
+ except subprocess.TimeoutExpired:
183
+ proc.kill()
184
+ if log_handle:
185
+ log_handle.close()
186
+ log_handle = None
187
+
188
+ except Exception as e:
189
+ console.print(f"[red]✗ Failed to start {service_name}: {e}[/red]")
190
+ if proc:
191
+ try:
192
+ proc.terminate()
193
+ except Exception:
194
+ pass
195
+ if log_handle:
196
+ log_handle.close()
197
+
198
+ return success_count == len(services)
199
+
200
+
201
+ def _run_aiui_dashboard(port: int, host: str, console) -> bool:
202
+ """Run the aiui dashboard interface using proper CLI entrypoint."""
203
+ console.print("[bold green]🦞 Starting aiui Dashboard...[/bold green]")
204
+
205
+ try:
206
+ import tempfile
207
+ import os
208
+
209
+ # Check if aiui is available first
210
+ result = subprocess.run([
211
+ sys.executable, "-c", "import praisonaiui"
212
+ ], capture_output=True, text=True)
213
+
214
+ if result.returncode != 0:
215
+ console.print("[red]Error: aiui package not installed.[/red]")
216
+ console.print("[yellow]Install with: pip install aiui[/yellow]")
217
+ return False
218
+
219
+ # Create a temporary script for aiui dashboard based on claw pattern
220
+ aiui_script = '''import os
221
+ import praisonaiui as aiui
222
+ from praisonai.ui._aiui_datastore import PraisonAISessionDataStore
223
+
224
+ # Set up datastore bridge
225
+ aiui.set_datastore(PraisonAISessionDataStore())
226
+
227
+ # Configure dashboard style
228
+ aiui.set_style("dashboard")
229
+ aiui.set_branding(title="PraisonAI Unified Dashboard", logo="🌟")
230
+
231
+ # Set up pages for unified dashboard
232
+ aiui.set_pages([
233
+ "chat", "agents", "memory", "knowledge",
234
+ "skills", "sessions", "usage", "config", "logs"
235
+ ])
236
+
237
+ # Register a simple welcome message
238
+ @aiui.welcome
239
+ async def on_welcome():
240
+ await aiui.say("🌟 Welcome to PraisonAI Unified Dashboard!")
241
+ await aiui.say("Access all your AI services from one interface.")
242
+
243
+ # Register basic reply handler
244
+ @aiui.reply
245
+ async def on_reply(message: str, settings: dict | None = None):
246
+ await aiui.think("Processing...")
247
+ await aiui.say(f"Unified Dashboard received: {message}")
248
+ await aiui.say("Use the sidebar to access Flow, Agents, Memory, and more!")
249
+ '''
250
+
251
+ # Create temp file safely
252
+ with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f:
253
+ f.write(aiui_script)
254
+ temp_script = f.name
255
+
256
+ try:
257
+ console.print(f"[green]✓ Starting aiui dashboard on {host}:{port}[/green]")
258
+
259
+ # Use aiui CLI to run the dashboard (NOT create_app)
260
+ # Try aiui command first, fallback to python -m
261
+ try:
262
+ result = subprocess.run([
263
+ "aiui", "run", temp_script, "--port", str(port), "--host", host
264
+ ], check=True)
265
+ except (subprocess.CalledProcessError, FileNotFoundError):
266
+ # Fallback to python -m praisonaiui
267
+ result = subprocess.run([
268
+ sys.executable, "-m", "praisonaiui.cli", "run",
269
+ temp_script, "--port", str(port), "--host", host
270
+ ], check=True)
271
+
272
+ return True
273
+
274
+ except subprocess.CalledProcessError as e:
275
+ console.print(f"[red]aiui dashboard exited with code {e.returncode}[/red]")
276
+ return False
277
+ finally:
278
+ # Clean up temp file
279
+ try:
280
+ os.unlink(temp_script)
281
+ except (OSError, FileNotFoundError):
282
+ pass
283
+
284
+ except subprocess.CalledProcessError as e:
285
+ console.print(f"[red]aiui dashboard failed with code {e.returncode}[/red]")
286
+ return False
287
+ except Exception as e:
288
+ console.print(f"[red]Error running aiui dashboard: {e}[/red]")
289
+ return False
290
+
291
+
79
292
  def _generate_dashboard_html(host: str = "localhost") -> str:
80
293
  """Generate dashboard HTML with dynamic host configuration."""
81
294
  dashboard_html = """<!DOCTYPE html>
@@ -393,6 +606,8 @@ def unified(
393
606
  ctx: typer.Context,
394
607
  port: int = typer.Option(3000, "--port", "-p", help="Port to run unified dashboard on"),
395
608
  host: str = typer.Option("127.0.0.1", "--host", help="Host to bind to (use 0.0.0.0 to expose remotely)"),
609
+ auto_start: bool = typer.Option(True, "--auto-start/--no-auto-start", help="Auto-start all services"),
610
+ aiui: bool = typer.Option(False, "--aiui", help="Use aiui dashboard interface (experimental)"),
396
611
  ):
397
612
  """
398
613
  Launch the PraisonAI Unified Dashboard.
@@ -402,15 +617,19 @@ def unified(
402
617
  - Claw Dashboard (Full UI) - port 8082
403
618
  - Clean Chat UI - port 8081
404
619
 
405
- This unified launcher allows you to:
406
- 1. Create agents visually using Flow Builder
407
- 2. Chat with agents using the Chat UI
408
- 3. Manage everything from Claw Dashboard
409
- 4. Connect external services like Telegram
620
+ This unified launcher:
621
+ 1. Auto-starts all services by default (like 'praisonai up')
622
+ 2. Creates agents visually using Flow Builder
623
+ 3. Chats with agents using the Chat UI
624
+ 4. Manages everything from Claw Dashboard
625
+ 5. Connects external services like Telegram
626
+ 6. Optionally uses aiui for enhanced dashboard experience
410
627
 
411
628
  Examples:
412
- praisonai dashboard
629
+ praisonai dashboard # Auto-start all services
630
+ praisonai dashboard --no-auto-start # Dashboard only (no auto-start)
413
631
  praisonai dashboard --port 9000 --host 0.0.0.0
632
+ praisonai dashboard --aiui # Use aiui interface (experimental)
414
633
  """
415
634
  if ctx.invoked_subcommand is not None:
416
635
  return
@@ -418,6 +637,23 @@ def unified(
418
637
  from rich.console import Console
419
638
  console = Console()
420
639
 
640
+ # Auto-start services if enabled (before aiui mode)
641
+ if auto_start:
642
+ console.print("[bold green]🚀 Auto-starting PraisonAI services...[/bold green]")
643
+ if not _auto_start_services(console, host):
644
+ console.print("[yellow]⚠️ Some services failed to start, continuing anyway...[/yellow]")
645
+ console.print("[green]✅ Auto-start complete[/green]")
646
+ console.print()
647
+
648
+ # Check for aiui mode
649
+ if aiui:
650
+ result = _run_aiui_dashboard(port, host, console)
651
+ if not result:
652
+ console.print("[red]Failed to start aiui dashboard, falling back to standard dashboard[/red]")
653
+ # Continue to standard dashboard instead of exiting
654
+ else:
655
+ return # aiui started successfully, exit
656
+
421
657
  # Import optional dependencies inside function to avoid startup overhead
422
658
  try:
423
659
  from fastapi import FastAPI, HTTPException
@@ -429,6 +665,14 @@ def unified(
429
665
  console.print(f"[dim]Error details: {exc}[/dim]")
430
666
  raise typer.Abort()
431
667
 
668
+ # Auto-start services if not already done for aiui
669
+ if auto_start and not aiui:
670
+ console.print("[bold green]🚀 Auto-starting PraisonAI services...[/bold green]")
671
+ if not _auto_start_services(console, host):
672
+ console.print("[yellow]⚠️ Some services failed to start, dashboard will still work[/yellow]")
673
+ console.print("[green]✅ Auto-start complete[/green]")
674
+ console.print()
675
+
432
676
  # Register cleanup handlers and save originals for restoration
433
677
  original_handlers = _register_cleanup_handlers()
434
678
 
@@ -468,22 +712,8 @@ def unified(
468
712
  log_file = log_dir / f"{service}.log"
469
713
  log_handle = open(log_file, "a", encoding="utf-8")
470
714
 
471
- if service == "flow":
472
- # Use praisonai module entrypoint so command resolution matches CLI behavior.
473
- proc = subprocess.Popen([
474
- sys.executable, "-m", "praisonai", "flow",
475
- "--port", str(service_port), "--host", host, "--no-open"
476
- ], stdout=log_handle, stderr=subprocess.STDOUT)
477
- elif service == "claw":
478
- proc = subprocess.Popen([
479
- sys.executable, "-m", "praisonai", "claw",
480
- "--port", str(service_port), "--host", host
481
- ], stdout=log_handle, stderr=subprocess.STDOUT)
482
- elif service == "ui":
483
- proc = subprocess.Popen([
484
- sys.executable, "-m", "praisonai", "ui",
485
- "--port", str(service_port), "--host", host
486
- ], stdout=log_handle, stderr=subprocess.STDOUT)
715
+ # Use shared service spawning logic
716
+ proc = _spawn_service(service, service_port, host, log_handle)
487
717
 
488
718
  # Wait for service to start with timeout
489
719
  deadline = time.time() + 15
@@ -554,6 +784,8 @@ def unified(
554
784
  console.print()
555
785
  console.print("[bold green]🌟 Starting PraisonAI Unified Dashboard[/bold green]")
556
786
  console.print(f"[dim]Unified interface on {host}:{port}[/dim]")
787
+ if auto_start:
788
+ console.print("[dim]Services auto-started and dashboard ready[/dim]")
557
789
  console.print("[dim]Access Flow Builder, Claw Dashboard, and Chat UI from one place[/dim]")
558
790
  console.print()
559
791
 
@@ -80,24 +80,73 @@ def skills_create(
80
80
 
81
81
  @app.command("install")
82
82
  def skills_install(
83
- source: str = typer.Argument(..., help="Skill source (path or URL)"),
83
+ source: str = typer.Argument(..., help="Skill source (local path or https:// git URL)"),
84
+ dest: str = typer.Option(None, "--dest", "-d", help="Install destination (defaults to ~/.praisonai/skills)"),
84
85
  ):
85
- """Install a skill."""
86
- from praisonai.cli.main import PraisonAI
87
- import sys
88
-
89
- argv = ['skills', 'install', source]
90
-
91
- original_argv = sys.argv
92
- sys.argv = ['praisonai'] + argv
93
-
94
- try:
95
- praison = PraisonAI()
96
- praison.main()
97
- except SystemExit:
98
- pass
99
- finally:
100
- sys.argv = original_argv
86
+ """Install a skill from a local path or git URL.
87
+
88
+ Local path: ``praisonai skills install ./my-skill``
89
+ Git URL: ``praisonai skills install https://github.com/org/repo``
90
+ """
91
+ import shutil
92
+ import subprocess
93
+ import tempfile
94
+ from pathlib import Path
95
+
96
+ from praisonaiagents.paths import get_skills_dir
97
+ from praisonaiagents.skills import validate as validate_skill
98
+
99
+ dest_root = Path(dest).expanduser() if dest else get_skills_dir()
100
+ dest_root.mkdir(parents=True, exist_ok=True)
101
+
102
+ def _install_from_dir(src: Path) -> Path:
103
+ target = dest_root / src.name
104
+ if target.exists():
105
+ typer.echo(f"Error: {target} already exists; remove it first.", err=True)
106
+ raise typer.Exit(1)
107
+ shutil.copytree(src, target)
108
+ return target
109
+
110
+ src_path = Path(source).expanduser()
111
+ installed: Path
112
+ if source.startswith(("http://", "https://", "git@")):
113
+ with tempfile.TemporaryDirectory() as tmp:
114
+ tmp_path = Path(tmp) / "clone"
115
+ proc = subprocess.run(
116
+ ["git", "clone", "--depth=1", source, str(tmp_path)],
117
+ capture_output=True, text=True,
118
+ )
119
+ if proc.returncode != 0:
120
+ typer.echo(f"git clone failed: {proc.stderr.strip()}", err=True)
121
+ raise typer.Exit(1)
122
+ # If the clone contains a top-level SKILL.md, install as-is.
123
+ # Otherwise, install each direct subdirectory that looks like a skill.
124
+ if (tmp_path / "SKILL.md").exists():
125
+ installed = _install_from_dir(tmp_path)
126
+ else:
127
+ installed_any = False
128
+ for child in tmp_path.iterdir():
129
+ if child.is_dir() and (child / "SKILL.md").exists():
130
+ _install_from_dir(child)
131
+ installed_any = True
132
+ if not installed_any:
133
+ typer.echo("No SKILL.md found in clone.", err=True)
134
+ raise typer.Exit(1)
135
+ typer.echo(f"Installed skills to {dest_root}")
136
+ return
137
+ elif src_path.exists() and src_path.is_dir():
138
+ installed = _install_from_dir(src_path)
139
+ else:
140
+ typer.echo(f"Unknown source (not a dir, not a URL): {source}", err=True)
141
+ raise typer.Exit(1)
142
+
143
+ errors = validate_skill(installed)
144
+ if errors:
145
+ typer.echo(f"Installed at {installed} but validation found issues:", err=True)
146
+ for e in errors:
147
+ typer.echo(f" - {e}", err=True)
148
+ raise typer.Exit(1)
149
+ typer.echo(f"Installed: {installed}")
101
150
 
102
151
 
103
152
  @app.command("search")
@@ -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.20 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==4.6.22 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