praisonAI 3.7.2__tar.gz → 3.7.4__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 (526) hide show
  1. {praisonai-3.7.2 → praisonai-3.7.4}/PKG-INFO +2 -2
  2. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/SOURCES.txt +4 -0
  4. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/app.py +109 -0
  6. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/chat.py +2 -3
  7. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/standardise.py +305 -4
  8. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/legacy.py +2 -0
  9. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy.py +1 -1
  10. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/__init__.py +11 -0
  11. praisonai-3.7.4/praisonai/standardise/ai_generator.py +1278 -0
  12. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/config.py +28 -16
  13. praisonai-3.7.4/praisonai/standardise/enhanced_templates.py +674 -0
  14. praisonai-3.7.4/praisonai/standardise/example_verifier.py +229 -0
  15. praisonai-3.7.4/praisonai/standardise/undo_redo.py +232 -0
  16. praisonai-3.7.4/praisonai/version.py +1 -0
  17. {praisonai-3.7.2 → praisonai-3.7.4}/pyproject.toml +1 -1
  18. praisonai-3.7.2/praisonai/version.py +0 -1
  19. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/dependency_links.txt +0 -0
  20. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/entry_points.txt +0 -0
  21. {praisonai-3.7.2 → praisonai-3.7.4}/PraisonAI.egg-info/top_level.txt +0 -0
  22. {praisonai-3.7.2 → praisonai-3.7.4}/README.md +0 -0
  23. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/__init__.py +0 -0
  24. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/__main__.py +0 -0
  25. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/_dev/__init__.py +0 -0
  26. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/_dev/api_md.py +0 -0
  27. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/acp/__init__.py +0 -0
  28. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/acp/config.py +0 -0
  29. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/acp/safe_edit.py +0 -0
  30. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/acp/server.py +0 -0
  31. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/acp/session.py +0 -0
  32. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/adapters/__init__.py +0 -0
  33. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/adapters/readers.py +0 -0
  34. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/adapters/rerankers.py +0 -0
  35. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/adapters/retrievers.py +0 -0
  36. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/adapters/vector_stores.py +0 -0
  37. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/agent_scheduler.py +0 -0
  38. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/agents_generator.py +0 -0
  39. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/api/call.py +0 -0
  40. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/audit/__init__.py +0 -0
  41. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/audit/agent_centric.py +0 -0
  42. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/auto.py +0 -0
  43. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/__init__.py +0 -0
  44. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/a2a.py +0 -0
  45. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/assistants.py +0 -0
  46. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/audio.py +0 -0
  47. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/batches.py +0 -0
  48. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/completions.py +0 -0
  49. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/container_files.py +0 -0
  50. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/containers.py +0 -0
  51. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/embeddings.py +0 -0
  52. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/files.py +0 -0
  53. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/fine_tuning.py +0 -0
  54. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/guardrails.py +0 -0
  55. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/images.py +0 -0
  56. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/mcp.py +0 -0
  57. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/messages.py +0 -0
  58. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/moderations.py +0 -0
  59. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/ocr.py +0 -0
  60. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/passthrough.py +0 -0
  61. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/rag.py +0 -0
  62. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/realtime.py +0 -0
  63. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/rerank.py +0 -0
  64. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/responses.py +0 -0
  65. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/search.py +0 -0
  66. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/skills.py +0 -0
  67. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/vector_store_files.py +0 -0
  68. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/vector_stores.py +0 -0
  69. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/capabilities/videos.py +0 -0
  70. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/chainlit_ui.py +0 -0
  71. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/chat/__init__.py +0 -0
  72. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/chat/app.py +0 -0
  73. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/__init__.py +0 -0
  74. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/__init__.py +0 -0
  75. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/acp.py +0 -0
  76. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/agents.py +0 -0
  77. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/audit.py +0 -0
  78. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/benchmark.py +0 -0
  79. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/call.py +0 -0
  80. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/code.py +0 -0
  81. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/commit.py +0 -0
  82. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/completion.py +0 -0
  83. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/config.py +0 -0
  84. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/context.py +0 -0
  85. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/debug.py +0 -0
  86. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/deploy.py +0 -0
  87. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/diag.py +0 -0
  88. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/docs.py +0 -0
  89. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/doctor.py +0 -0
  90. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/endpoints.py +0 -0
  91. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/environment.py +0 -0
  92. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/eval.py +0 -0
  93. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/examples.py +0 -0
  94. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/hooks.py +0 -0
  95. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/knowledge.py +0 -0
  96. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/lsp.py +0 -0
  97. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/mcp.py +0 -0
  98. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/memory.py +0 -0
  99. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/package.py +0 -0
  100. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/profile.py +0 -0
  101. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/rag.py +0 -0
  102. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/realtime.py +0 -0
  103. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/recipe.py +0 -0
  104. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/registry.py +0 -0
  105. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/research.py +0 -0
  106. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/retrieval.py +0 -0
  107. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/rules.py +0 -0
  108. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/run.py +0 -0
  109. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/schedule.py +0 -0
  110. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/serve.py +0 -0
  111. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/session.py +0 -0
  112. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/skills.py +0 -0
  113. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/templates.py +0 -0
  114. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/test.py +0 -0
  115. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/todo.py +0 -0
  116. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/tools.py +0 -0
  117. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/traces.py +0 -0
  118. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/train.py +0 -0
  119. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/ui.py +0 -0
  120. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/version.py +0 -0
  121. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/commands/workflow.py +0 -0
  122. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/config_loader.py +0 -0
  123. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/configuration/__init__.py +0 -0
  124. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/configuration/loader.py +0 -0
  125. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/configuration/paths.py +0 -0
  126. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/configuration/schema.py +0 -0
  127. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/execution/__init__.py +0 -0
  128. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/execution/core.py +0 -0
  129. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/execution/profiler.py +0 -0
  130. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/execution/request.py +0 -0
  131. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/execution/result.py +0 -0
  132. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/__init__.py +0 -0
  133. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/acp.py +0 -0
  134. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/action_orchestrator.py +0 -0
  135. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/agent_scheduler.py +0 -0
  136. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/agent_tools.py +0 -0
  137. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/agents.py +0 -0
  138. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/at_mentions.py +0 -0
  139. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/auto_memory.py +0 -0
  140. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/auto_mode.py +0 -0
  141. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/autonomy_mode.py +0 -0
  142. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/background.py +0 -0
  143. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/base.py +0 -0
  144. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/benchmark.py +0 -0
  145. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/capabilities.py +0 -0
  146. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/checkpoints.py +0 -0
  147. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/cli_profiler.py +0 -0
  148. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/code_intelligence.py +0 -0
  149. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/compaction.py +0 -0
  150. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/compare.py +0 -0
  151. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/config_hierarchy.py +0 -0
  152. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/context_manager.py +0 -0
  153. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/cost_tracker.py +0 -0
  154. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/debug.py +0 -0
  155. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/deploy.py +0 -0
  156. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/diag.py +0 -0
  157. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/__init__.py +0 -0
  158. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  159. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  160. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  161. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  162. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  163. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  164. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  165. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  166. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  167. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  168. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  169. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  170. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  171. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  172. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  173. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  174. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/engine.py +0 -0
  175. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/formatters.py +0 -0
  176. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/handler.py +0 -0
  177. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/models.py +0 -0
  178. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/doctor/registry.py +0 -0
  179. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/endpoints.py +0 -0
  180. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/eval.py +0 -0
  181. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/examples.py +0 -0
  182. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/external_agents.py +0 -0
  183. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/fast_context.py +0 -0
  184. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/file_history.py +0 -0
  185. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/flow_display.py +0 -0
  186. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/git_attribution.py +0 -0
  187. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/git_integration.py +0 -0
  188. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/guardrail.py +0 -0
  189. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/handoff.py +0 -0
  190. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/hooks.py +0 -0
  191. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/image.py +0 -0
  192. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/interactive_runtime.py +0 -0
  193. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/interactive_tools.py +0 -0
  194. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/interactive_tui.py +0 -0
  195. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/jobs.py +0 -0
  196. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/knowledge.py +0 -0
  197. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/knowledge_cli.py +0 -0
  198. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/lite.py +0 -0
  199. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/logs.py +0 -0
  200. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/lsp_cli.py +0 -0
  201. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  202. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/mcp.py +0 -0
  203. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/message_queue.py +0 -0
  204. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/metrics.py +0 -0
  205. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/n8n.py +0 -0
  206. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/observability.py +0 -0
  207. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/ollama.py +0 -0
  208. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/output_modes.py +0 -0
  209. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/output_style.py +0 -0
  210. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/package.py +0 -0
  211. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/performance.py +0 -0
  212. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/persistence.py +0 -0
  213. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profile.py +0 -0
  214. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profiler/__init__.py +0 -0
  215. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profiler/core.py +0 -0
  216. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profiler/optimizations.py +0 -0
  217. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profiler/suite.py +0 -0
  218. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/profiling.py +0 -0
  219. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/__init__.py +0 -0
  220. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/manager.py +0 -0
  221. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/models.py +0 -0
  222. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/persistence.py +0 -0
  223. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/scheduler.py +0 -0
  224. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/queue/worker.py +0 -0
  225. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/recipe.py +0 -0
  226. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/recipes.py +0 -0
  227. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/registry.py +0 -0
  228. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/repo_map.py +0 -0
  229. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/router.py +0 -0
  230. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/safe_shell.py +0 -0
  231. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/sandbox_executor.py +0 -0
  232. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/serve.py +0 -0
  233. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/session.py +0 -0
  234. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/skills.py +0 -0
  235. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/slash_commands.py +0 -0
  236. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/telemetry.py +0 -0
  237. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/templates.py +0 -0
  238. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/thinking.py +0 -0
  239. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/todo.py +0 -0
  240. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tools.py +0 -0
  241. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/__init__.py +0 -0
  242. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/app.py +0 -0
  243. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/cli.py +0 -0
  244. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/config.py +0 -0
  245. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/debug.py +0 -0
  246. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/events.py +0 -0
  247. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/mock_provider.py +0 -0
  248. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/orchestrator.py +0 -0
  249. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  250. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/help.py +0 -0
  251. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/main.py +0 -0
  252. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/queue.py +0 -0
  253. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/session.py +0 -0
  254. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/screens/settings.py +0 -0
  255. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/session_store.py +0 -0
  256. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  257. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  258. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  259. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  260. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  261. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  262. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/status.py +0 -0
  263. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  264. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/features/workflow.py +0 -0
  265. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/__init__.py +0 -0
  266. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/config.py +0 -0
  267. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/core.py +0 -0
  268. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/events.py +0 -0
  269. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  270. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  271. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  272. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/main.py +0 -0
  273. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/output/__init__.py +0 -0
  274. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/output/console.py +0 -0
  275. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/schedule_cli.py +0 -0
  276. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/session/__init__.py +0 -0
  277. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/session/unified.py +0 -0
  278. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/state/__init__.py +0 -0
  279. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/state/identifiers.py +0 -0
  280. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/state/sessions.py +0 -0
  281. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/__init__.py +0 -0
  282. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/config.py +0 -0
  283. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/events.py +0 -0
  284. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/mg_backend.py +0 -0
  285. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/plain.py +0 -0
  286. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/cli/ui/rich_backend.py +0 -0
  287. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/__init__.py +0 -0
  288. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/agent_tools.py +0 -0
  289. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/diff/__init__.py +0 -0
  290. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/diff/diff_strategy.py +0 -0
  291. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/__init__.py +0 -0
  292. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/apply_diff.py +0 -0
  293. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/execute_command.py +0 -0
  294. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/list_files.py +0 -0
  295. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/read_file.py +0 -0
  296. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/search_replace.py +0 -0
  297. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/tools/write_file.py +0 -0
  298. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/utils/__init__.py +0 -0
  299. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/utils/file_utils.py +0 -0
  300. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/utils/ignore_utils.py +0 -0
  301. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/code/utils/text_utils.py +0 -0
  302. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/db/__init__.py +0 -0
  303. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/db/adapter.py +0 -0
  304. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/__init__.py +0 -0
  305. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/api.py +0 -0
  306. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/docker.py +0 -0
  307. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/doctor.py +0 -0
  308. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/main.py +0 -0
  309. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/models.py +0 -0
  310. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/providers/__init__.py +0 -0
  311. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/providers/aws.py +0 -0
  312. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/providers/azure.py +0 -0
  313. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/providers/base.py +0 -0
  314. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/providers/gcp.py +0 -0
  315. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/deploy/schema.py +0 -0
  316. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/__init__.py +0 -0
  317. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/classifier.py +0 -0
  318. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/executor.py +0 -0
  319. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/extractor.py +0 -0
  320. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/reporter.py +0 -0
  321. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/runner.py +0 -0
  322. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/docs_runner/workspace.py +0 -0
  323. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/__init__.py +0 -0
  324. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/a2u_server.py +0 -0
  325. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/discovery.py +0 -0
  326. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/__init__.py +0 -0
  327. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/a2a.py +0 -0
  328. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/a2u.py +0 -0
  329. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/agents_api.py +0 -0
  330. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/base.py +0 -0
  331. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/mcp.py +0 -0
  332. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/recipe.py +0 -0
  333. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  334. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/registry.py +0 -0
  335. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/endpoints/server.py +0 -0
  336. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/inbuilt_tools/__init__.py +0 -0
  337. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  338. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/inc/__init__.py +0 -0
  339. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/inc/config.py +0 -0
  340. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/inc/models.py +0 -0
  341. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/__init__.py +0 -0
  342. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/base.py +0 -0
  343. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/claude_code.py +0 -0
  344. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/codex_cli.py +0 -0
  345. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/cursor_cli.py +0 -0
  346. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/integrations/gemini_cli.py +0 -0
  347. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/__init__.py +0 -0
  348. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/executor.py +0 -0
  349. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/models.py +0 -0
  350. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/router.py +0 -0
  351. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/server.py +0 -0
  352. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/jobs/store.py +0 -0
  353. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/llm/__init__.py +0 -0
  354. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/llm/registry.py +0 -0
  355. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/__init__.py +0 -0
  356. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/__init__.py +0 -0
  357. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/agents.py +0 -0
  358. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  359. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  360. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  361. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  362. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/memory.py +0 -0
  363. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/prompts.py +0 -0
  364. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/resources.py +0 -0
  365. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  366. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/auth/__init__.py +0 -0
  367. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/auth/api_key.py +0 -0
  368. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/auth/oauth.py +0 -0
  369. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/auth/oidc.py +0 -0
  370. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/auth/scopes.py +0 -0
  371. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/cli.py +0 -0
  372. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/elicitation.py +0 -0
  373. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/icons.py +0 -0
  374. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/recipe_adapter.py +0 -0
  375. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/recipe_cli.py +0 -0
  376. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/registry.py +0 -0
  377. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/sampling.py +0 -0
  378. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/server.py +0 -0
  379. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/tasks.py +0 -0
  380. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/transports/__init__.py +0 -0
  381. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/transports/http_stream.py +0 -0
  382. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/mcp_server/transports/stdio.py +0 -0
  383. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/__init__.py +0 -0
  384. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/config.py +0 -0
  385. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/__init__.py +0 -0
  386. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/async_mysql.py +0 -0
  387. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/async_postgres.py +0 -0
  388. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  389. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/base.py +0 -0
  390. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/json_store.py +0 -0
  391. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/mysql.py +0 -0
  392. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/postgres.py +0 -0
  393. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/singlestore.py +0 -0
  394. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/sqlite.py +0 -0
  395. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/supabase.py +0 -0
  396. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/conversation/surrealdb.py +0 -0
  397. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/factory.py +0 -0
  398. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/hooks/__init__.py +0 -0
  399. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  400. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/__init__.py +0 -0
  401. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/base.py +0 -0
  402. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/cassandra.py +0 -0
  403. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/chroma.py +0 -0
  404. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  405. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  406. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/couchbase.py +0 -0
  407. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/lancedb.py +0 -0
  408. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  409. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  410. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  411. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/milvus.py +0 -0
  412. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  413. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/pgvector.py +0 -0
  414. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/pinecone.py +0 -0
  415. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/qdrant.py +0 -0
  416. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  417. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  418. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  419. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  420. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/knowledge/weaviate.py +0 -0
  421. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/migrations/__init__.py +0 -0
  422. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/migrations/manager.py +0 -0
  423. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/orchestrator.py +0 -0
  424. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/__init__.py +0 -0
  425. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/async_mongodb.py +0 -0
  426. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/base.py +0 -0
  427. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/dynamodb.py +0 -0
  428. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/firestore.py +0 -0
  429. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/gcs.py +0 -0
  430. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/memory.py +0 -0
  431. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/mongodb.py +0 -0
  432. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/redis.py +0 -0
  433. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/state/upstash.py +0 -0
  434. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/tests/__init__.py +0 -0
  435. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/persistence/tests/test_all_backends.py +0 -0
  436. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/profiler.py +0 -0
  437. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/__init__.py +0 -0
  438. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/bridge.py +0 -0
  439. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/core.py +0 -0
  440. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/exceptions.py +0 -0
  441. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/history.py +0 -0
  442. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/models.py +0 -0
  443. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/operations.py +0 -0
  444. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/policy.py +0 -0
  445. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/registry.py +0 -0
  446. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/runtime.py +0 -0
  447. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/security.py +0 -0
  448. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/serve.py +0 -0
  449. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/recipe/server.py +0 -0
  450. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/__init__.py +0 -0
  451. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/agent_scheduler.py +0 -0
  452. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/base.py +0 -0
  453. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/daemon_manager.py +0 -0
  454. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/state_manager.py +0 -0
  455. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler/yaml_loader.py +0 -0
  456. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/scheduler.py +0 -0
  457. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/setup/__init__.py +0 -0
  458. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/setup/build.py +0 -0
  459. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/setup/post_install.py +0 -0
  460. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/setup/setup_conda_env.py +0 -0
  461. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/setup.py +0 -0
  462. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/dedupe.py +0 -0
  463. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/discovery.py +0 -0
  464. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/drift.py +0 -0
  465. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/engine.py +0 -0
  466. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/manifest.py +0 -0
  467. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/models.py +0 -0
  468. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/reports.py +0 -0
  469. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/templates.py +0 -0
  470. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/standardise/validator.py +0 -0
  471. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/__init__.py +0 -0
  472. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/discovery.py +0 -0
  473. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/docs_source.py +0 -0
  474. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/examples_source.py +0 -0
  475. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/executor.py +0 -0
  476. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/models.py +0 -0
  477. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/report_viewer.py +0 -0
  478. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/reporter.py +0 -0
  479. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/suite_runner/runner.py +0 -0
  480. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/__init__.py +0 -0
  481. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/cache.py +0 -0
  482. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/dependency_checker.py +0 -0
  483. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/discovery.py +0 -0
  484. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/loader.py +0 -0
  485. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/registry.py +0 -0
  486. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/resolver.py +0 -0
  487. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/security.py +0 -0
  488. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/tool_override.py +0 -0
  489. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/templates/tools_doctor.py +0 -0
  490. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/test.py +0 -0
  491. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/tools/__init__.py +0 -0
  492. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/tools/glob_tool.py +0 -0
  493. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/tools/grep_tool.py +0 -0
  494. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/tools/multiedit.py +0 -0
  495. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/train.py +0 -0
  496. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/train_vision.py +0 -0
  497. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/agents.py +0 -0
  498. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/callbacks.py +0 -0
  499. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/chainlit_compat.py +0 -0
  500. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/chat.py +0 -0
  501. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/code.py +0 -0
  502. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/colab.py +0 -0
  503. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/colab_chainlit.py +0 -0
  504. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/components/aicoder.py +0 -0
  505. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/context.py +0 -0
  506. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/database_config.py +0 -0
  507. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/db.py +0 -0
  508. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/realtime.py +0 -0
  509. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/realtimeclient/__init__.py +0 -0
  510. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/realtimeclient/tools.py +0 -0
  511. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/ui/sql_alchemy.py +0 -0
  512. {praisonai-3.7.2 → praisonai-3.7.4}/praisonai/upload_vision.py +0 -0
  513. {praisonai-3.7.2 → praisonai-3.7.4}/setup.cfg +0 -0
  514. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test.py +0 -0
  515. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_agents_playbook.py +0 -0
  516. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_approval_system.py +0 -0
  517. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_basic.py +0 -0
  518. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_cli_features.py +0 -0
  519. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_custom_tools_fix.py +0 -0
  520. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_double_api_fix.py +0 -0
  521. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_n8n_integration.py +0 -0
  522. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_phase2_refactor.py +0 -0
  523. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_recipe.py +0 -0
  524. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_registry.py +0 -0
  525. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_runner.py +0 -0
  526. {praisonai-3.7.2 → praisonai-3.7.4}/tests/test_serve_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 3.7.2
3
+ Version: 3.7.4
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>=0.11.1
14
+ Requires-Dist: praisonaiagents>=0.11.2
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 3.7.2
3
+ Version: 3.7.4
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>=0.11.1
14
+ Requires-Dist: praisonaiagents>=0.11.2
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: instructor>=1.3.3
17
17
  Requires-Dist: PyYAML>=6.0
@@ -456,15 +456,19 @@ praisonai/setup/build.py
456
456
  praisonai/setup/post_install.py
457
457
  praisonai/setup/setup_conda_env.py
458
458
  praisonai/standardise/__init__.py
459
+ praisonai/standardise/ai_generator.py
459
460
  praisonai/standardise/config.py
460
461
  praisonai/standardise/dedupe.py
461
462
  praisonai/standardise/discovery.py
462
463
  praisonai/standardise/drift.py
463
464
  praisonai/standardise/engine.py
465
+ praisonai/standardise/enhanced_templates.py
466
+ praisonai/standardise/example_verifier.py
464
467
  praisonai/standardise/manifest.py
465
468
  praisonai/standardise/models.py
466
469
  praisonai/standardise/reports.py
467
470
  praisonai/standardise/templates.py
471
+ praisonai/standardise/undo_redo.py
468
472
  praisonai/standardise/validator.py
469
473
  praisonai/suite_runner/__init__.py
470
474
  praisonai/suite_runner/discovery.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=0.11.1
4
+ praisonaiagents>=0.11.2
5
5
  python-dotenv>=0.19.0
6
6
  instructor>=1.3.3
7
7
  PyYAML>=6.0
@@ -266,6 +266,115 @@ def register_commands():
266
266
  app.add_typer(test_app, name="test", help="Run test suite with tier and provider options")
267
267
  app.add_typer(examples_app, name="examples", help="Run and manage example files")
268
268
 
269
+ # Register standardise command
270
+ try:
271
+ standardise_app = typer.Typer(name="standardise", help="Documentation and examples standardisation (FDEP)")
272
+
273
+ @standardise_app.command("check")
274
+ def standardise_check(
275
+ path: str = typer.Option(".", "--path", "-p", help="Project root path"),
276
+ feature: str = typer.Option(None, "--feature", help="Specific feature slug"),
277
+ scope: str = typer.Option("all", "--scope", help="Scope: all, docs, examples, sdk, cli"),
278
+ ci: bool = typer.Option(False, "--ci", help="CI mode"),
279
+ ):
280
+ """Check for standardisation issues."""
281
+ from .commands.standardise import _run_check
282
+ import argparse
283
+ args = argparse.Namespace(path=path, feature=feature, scope=scope, ci=ci, dry_run=True)
284
+ _run_check(args)
285
+
286
+ @standardise_app.command("report")
287
+ def standardise_report(
288
+ path: str = typer.Option(".", "--path", "-p", help="Project root path"),
289
+ format: str = typer.Option("text", "--format", "-f", help="Format: text, json, markdown"),
290
+ output: str = typer.Option(None, "--output", "-o", help="Output file"),
291
+ ci: bool = typer.Option(False, "--ci", help="CI mode"),
292
+ ):
293
+ """Generate detailed report."""
294
+ from .commands.standardise import _run_report
295
+ import argparse
296
+ args = argparse.Namespace(path=path, format=format, output=output, ci=ci, feature=None, scope="all", dry_run=True)
297
+ _run_report(args)
298
+
299
+ @standardise_app.command("fix")
300
+ def standardise_fix(
301
+ path: str = typer.Option(".", "--path", "-p", help="Project root path"),
302
+ feature: str = typer.Option(None, "--feature", help="Specific feature slug"),
303
+ apply: bool = typer.Option(False, "--apply", help="Actually apply changes"),
304
+ no_backup: bool = typer.Option(False, "--no-backup", help="Don't create backups"),
305
+ ):
306
+ """Fix standardisation issues."""
307
+ from .commands.standardise import _run_fix
308
+ import argparse
309
+ args = argparse.Namespace(path=path, feature=feature, apply=apply, no_backup=no_backup, scope="all", ci=False, dry_run=not apply)
310
+ _run_fix(args)
311
+
312
+ @standardise_app.command("init")
313
+ def standardise_init(
314
+ feature: str = typer.Argument(..., help="Feature slug to initialise"),
315
+ path: str = typer.Option(".", "--path", "-p", help="Project root path"),
316
+ apply: bool = typer.Option(False, "--apply", help="Actually create files"),
317
+ ):
318
+ """Initialise a new feature with all required artifacts."""
319
+ from .commands.standardise import _run_init
320
+ import argparse
321
+ args = argparse.Namespace(feature=feature, path=path, apply=apply, scope="all", ci=False, dry_run=not apply)
322
+ _run_init(args)
323
+
324
+ @standardise_app.command("ai")
325
+ def standardise_ai(
326
+ feature: str = typer.Argument(..., help="Feature slug to generate content for"),
327
+ gen_type: str = typer.Option("all", "--type", "-t", help="Type: docs, examples, all"),
328
+ apply: bool = typer.Option(False, "--apply", help="Actually create files"),
329
+ verify: bool = typer.Option(False, "--verify", help="Verify with AI"),
330
+ model: str = typer.Option("gpt-4o-mini", "--model", help="LLM model"),
331
+ path: str = typer.Option(".", "--path", "-p", help="Project root path"),
332
+ ):
333
+ """AI-powered generation of docs/examples."""
334
+ from .commands.standardise import _run_ai
335
+ import argparse
336
+ args = argparse.Namespace(feature=feature, type=gen_type, apply=apply, verify=verify, model=model, path=path, scope="all", ci=False, dry_run=not apply)
337
+ _run_ai(args)
338
+
339
+ @standardise_app.command("checkpoint")
340
+ def standardise_checkpoint(
341
+ message: str = typer.Option(None, "--message", "-m", help="Checkpoint message"),
342
+ path: str = typer.Option(".", "--path", "-p", help="Repository path"),
343
+ ):
344
+ """Create an undo checkpoint."""
345
+ from .commands.standardise import _run_checkpoint
346
+ import argparse
347
+ args = argparse.Namespace(message=message, path=path)
348
+ _run_checkpoint(args)
349
+
350
+ @standardise_app.command("undo")
351
+ def standardise_undo(
352
+ checkpoint: str = typer.Option(None, "--checkpoint", help="Checkpoint ID"),
353
+ list_checkpoints: bool = typer.Option(False, "--list", help="List checkpoints"),
354
+ path: str = typer.Option(".", "--path", "-p", help="Repository path"),
355
+ ):
356
+ """Undo to a previous checkpoint."""
357
+ from .commands.standardise import _run_undo
358
+ import argparse
359
+ args = argparse.Namespace(checkpoint=checkpoint, list=list_checkpoints, path=path)
360
+ _run_undo(args)
361
+
362
+ @standardise_app.command("redo")
363
+ def standardise_redo(
364
+ path: str = typer.Option(".", "--path", "-p", help="Repository path"),
365
+ ):
366
+ """Redo after an undo."""
367
+ from .commands.standardise import _run_redo
368
+ import argparse
369
+ args = argparse.Namespace(path=path)
370
+ _run_redo(args)
371
+
372
+ app.add_typer(standardise_app, name="standardise", help="Documentation and examples standardisation (FDEP)")
373
+ # Also register as 'standardize' for US spelling
374
+ app.add_typer(standardise_app, name="standardize", help="Documentation and examples standardisation (FDEP)")
375
+ except Exception:
376
+ pass # Graceful degradation if standardise module not available
377
+
269
378
  # Register TUI and queue commands
270
379
  tui_app = create_tui_debug_app()
271
380
  queue_app = create_queue_app()
@@ -127,7 +127,7 @@ def chat_main(
127
127
  profile: bool = typer.Option(False, "--profile", help="Enable CLI profiling (timing breakdown)"),
128
128
  profile_deep: bool = typer.Option(False, "--profile-deep", help="Enable deep profiling (cProfile stats, higher overhead)"),
129
129
  # UI backend selection
130
- ui: str = typer.Option("auto", "--ui", help="UI backend: auto, plain, rich, mg (middle-ground)"),
130
+ ui_backend: str = typer.Option("auto", "--ui-backend", help="UI backend: auto, plain, rich, mg (middle-ground)"),
131
131
  json_output: bool = typer.Option(False, "--json", help="Output JSON (forces plain backend)"),
132
132
  no_color: bool = typer.Option(False, "--no-color", help="Disable colors"),
133
133
  theme: str = typer.Option("default", "--theme", help="UI theme: default, dark, light, minimal"),
@@ -159,7 +159,7 @@ def chat_main(
159
159
  # Configure UI backend
160
160
  from praisonai.cli.ui import select_backend, UIConfig
161
161
  ui_config = UIConfig(
162
- ui_backend=ui,
162
+ ui_backend=ui_backend,
163
163
  json_output=json_output,
164
164
  no_color=no_color,
165
165
  theme=theme,
@@ -275,7 +275,6 @@ def _run_profiled_chat(
275
275
  "name": "ChatAgent",
276
276
  "role": "Assistant",
277
277
  "goal": "Help the user",
278
- "verbose": verbose,
279
278
  }
280
279
  if model:
281
280
  agent_config["llm"] = model
@@ -2,10 +2,14 @@
2
2
  CLI commands for the FDEP standardisation system.
3
3
 
4
4
  Commands:
5
- - praisonai standardise check - Check for standardisation issues
6
- - praisonai standardise report - Generate detailed report
7
- - praisonai standardise fix - Fix issues (with --apply)
8
- - praisonai standardise init - Initialise a new feature
5
+ - praisonai standardise check - Check for standardisation issues
6
+ - praisonai standardise report - Generate detailed report
7
+ - praisonai standardise fix - Fix issues (with --apply)
8
+ - praisonai standardise init - Initialise a new feature
9
+ - praisonai standardise ai - AI-powered generation
10
+ - praisonai standardise checkpoint - Create undo checkpoint
11
+ - praisonai standardise undo - Undo to previous checkpoint
12
+ - praisonai standardise redo - Redo after undo
9
13
  """
10
14
 
11
15
  import sys
@@ -88,6 +92,91 @@ def standardise_command(args=None):
88
92
  help="Actually create files (default: dry-run)",
89
93
  )
90
94
 
95
+ # ai subcommand
96
+ ai_parser = subparsers.add_parser(
97
+ "ai",
98
+ help="AI-powered generation of docs/examples",
99
+ )
100
+ ai_parser.add_argument(
101
+ "feature",
102
+ type=str,
103
+ help="Feature slug to generate content for",
104
+ )
105
+ ai_parser.add_argument(
106
+ "--type", "-t",
107
+ choices=["docs", "examples", "all"],
108
+ default="all",
109
+ help="Type of content to generate",
110
+ )
111
+ ai_parser.add_argument(
112
+ "--apply",
113
+ action="store_true",
114
+ help="Actually create files (default: dry-run preview)",
115
+ )
116
+ ai_parser.add_argument(
117
+ "--verify",
118
+ action="store_true",
119
+ help="Verify generated content with AI",
120
+ )
121
+ ai_parser.add_argument(
122
+ "--model",
123
+ type=str,
124
+ default="gpt-4o-mini",
125
+ help="LLM model to use (default: gpt-4o-mini)",
126
+ )
127
+ _add_common_args(ai_parser)
128
+
129
+ # checkpoint subcommand
130
+ checkpoint_parser = subparsers.add_parser(
131
+ "checkpoint",
132
+ help="Create an undo checkpoint",
133
+ )
134
+ checkpoint_parser.add_argument(
135
+ "--message", "-m",
136
+ type=str,
137
+ help="Checkpoint message",
138
+ )
139
+ checkpoint_parser.add_argument(
140
+ "--path", "-p",
141
+ type=str,
142
+ default=".",
143
+ help="Repository path",
144
+ )
145
+
146
+ # undo subcommand
147
+ undo_parser = subparsers.add_parser(
148
+ "undo",
149
+ help="Undo to a previous checkpoint",
150
+ )
151
+ undo_parser.add_argument(
152
+ "--checkpoint",
153
+ type=str,
154
+ help="Specific checkpoint ID to restore",
155
+ )
156
+ undo_parser.add_argument(
157
+ "--list",
158
+ action="store_true",
159
+ help="List available checkpoints",
160
+ )
161
+ undo_parser.add_argument(
162
+ "--path", "-p",
163
+ type=str,
164
+ default=".",
165
+ help="Repository path",
166
+ )
167
+
168
+ # redo subcommand
169
+ redo_parser = subparsers.add_parser(
170
+ "redo",
171
+ help="Redo after an undo",
172
+ )
173
+ redo_parser.add_argument(
174
+ "--path", "-p",
175
+ type=str,
176
+ default=".",
177
+ help="Repository path",
178
+ )
179
+
91
180
  # Parse args
92
181
  parsed = parser.parse_args(args)
93
182
 
@@ -105,6 +194,14 @@ def standardise_command(args=None):
105
194
  return _run_fix(parsed)
106
195
  elif parsed.subcommand == "init":
107
196
  return _run_init(parsed)
197
+ elif parsed.subcommand == "ai":
198
+ return _run_ai(parsed)
199
+ elif parsed.subcommand == "checkpoint":
200
+ return _run_checkpoint(parsed)
201
+ elif parsed.subcommand == "undo":
202
+ return _run_undo(parsed)
203
+ elif parsed.subcommand == "redo":
204
+ return _run_redo(parsed)
108
205
 
109
206
  return 0
110
207
 
@@ -258,6 +355,210 @@ def _run_init(parsed) -> int:
258
355
  return 0
259
356
 
260
357
 
358
+ def _run_ai(parsed) -> int:
359
+ """Run the AI generation subcommand with ACP/LSP runtime support."""
360
+ import asyncio
361
+ from praisonai.standardise.ai_generator import AIGenerator
362
+ from praisonai.standardise.models import ArtifactType, FeatureSlug
363
+
364
+ config = _create_config(parsed)
365
+
366
+ slug = FeatureSlug.from_string(parsed.feature)
367
+ if not slug.is_valid:
368
+ print(f"Error: Invalid feature slug: {slug.validation_error}")
369
+ return 2
370
+
371
+ # Start ACP/LSP runtime for context gathering
372
+ runtime = None
373
+ try:
374
+ from praisonai.cli.features.interactive_runtime import create_runtime
375
+ runtime = create_runtime(
376
+ workspace=str(config.sdk_root or config.project_root or "."),
377
+ lsp=True,
378
+ acp=False # ACP not needed for generation
379
+ )
380
+ # Start runtime in background
381
+ asyncio.get_event_loop().run_until_complete(runtime.start())
382
+ if runtime.lsp_ready:
383
+ print("🔧 LSP server ready for code intelligence")
384
+ except Exception:
385
+ # Runtime is optional, continue without it
386
+ pass
387
+
388
+ generator = AIGenerator(
389
+ model=parsed.model,
390
+ sdk_root=config.sdk_root,
391
+ docs_root=config.docs_root,
392
+ examples_root=config.examples_root,
393
+ use_fast_context=True,
394
+ )
395
+
396
+ # Determine which artifacts to generate
397
+ artifact_types = []
398
+ gen_type = getattr(parsed, "type", "all")
399
+
400
+ if gen_type in ["docs", "all"]:
401
+ artifact_types.extend([
402
+ ArtifactType.DOCS_CONCEPT,
403
+ ArtifactType.DOCS_FEATURE,
404
+ ArtifactType.DOCS_CLI,
405
+ ArtifactType.DOCS_SDK,
406
+ ])
407
+
408
+ if gen_type in ["examples", "all"]:
409
+ artifact_types.extend([
410
+ ArtifactType.EXAMPLE_BASIC,
411
+ ArtifactType.EXAMPLE_ADVANCED,
412
+ ])
413
+
414
+ print(f"🤖 AI Generation for '{slug.normalised}'")
415
+ print("=" * 50)
416
+
417
+ results = []
418
+ for artifact_type in artifact_types:
419
+ print(f"\n📝 Generating {artifact_type.value}...")
420
+
421
+ try:
422
+ # Generate with execution verification for examples
423
+ content, output_path, verification_info = generator.generate(
424
+ slug, artifact_type,
425
+ dry_run=not parsed.apply,
426
+ verify_execution=True,
427
+ )
428
+
429
+ # Show verification results for examples
430
+ if verification_info:
431
+ if verification_info.get("execution_passed"):
432
+ print(" ✅ Code verified: runs successfully")
433
+ elif verification_info.get("requires_external"):
434
+ libs = ", ".join(verification_info.get("missing_libraries", []))
435
+ print(f" ⚠️ Requires external libraries: {libs}")
436
+ elif not verification_info.get("syntax_valid"):
437
+ print(f" ❌ Syntax error: {verification_info.get('error', 'Unknown')[:100]}")
438
+ else:
439
+ print(f" ❌ Execution failed after {verification_info.get('attempt', 1)} attempts")
440
+ if verification_info.get("error"):
441
+ print(f" Error: {verification_info['error'][:150]}")
442
+
443
+ # AI content verification (optional)
444
+ if parsed.verify:
445
+ print(" 🔍 AI content review...")
446
+ is_valid, summary, issues = generator.verify(content, artifact_type, slug)
447
+ if is_valid:
448
+ print(f" ✅ {summary}")
449
+ else:
450
+ print(f" ⚠️ {summary}")
451
+ for issue in issues[:3]:
452
+ print(f" - {issue}")
453
+
454
+ # Check if we should write
455
+ can_write = True
456
+ if verification_info and not verification_info.get("success"):
457
+ if not verification_info.get("requires_external"):
458
+ can_write = False
459
+ print(" ⛔ Not writing: code doesn't run")
460
+
461
+ if parsed.apply and output_path and can_write:
462
+ print(f" ✓ Created: {output_path}")
463
+ results.append((artifact_type.value, True, output_path))
464
+ elif not parsed.apply:
465
+ print(f" 📋 Preview ({len(content)} chars)")
466
+ # Show first few lines
467
+ preview_lines = content.split("\n")[:10]
468
+ for line in preview_lines:
469
+ print(f" {line[:60]}")
470
+ if len(content.split("\n")) > 10:
471
+ print(" ...")
472
+ results.append((artifact_type.value, True, None))
473
+ else:
474
+ results.append((artifact_type.value, False, "Verification failed"))
475
+
476
+ except Exception as e:
477
+ print(f" ❌ Error: {e}")
478
+ results.append((artifact_type.value, False, str(e)))
479
+
480
+ print("\n" + "=" * 50)
481
+ print("Summary:")
482
+ success_count = sum(1 for _, success, _ in results if success)
483
+ print(f" Generated: {success_count}/{len(results)}")
484
+
485
+ if not parsed.apply:
486
+ print("\nRun with --apply to create these files.")
487
+
488
+ # Cleanup runtime
489
+ if runtime:
490
+ try:
491
+ asyncio.get_event_loop().run_until_complete(runtime.stop())
492
+ except Exception:
493
+ pass
494
+
495
+ return 0
496
+
497
+
498
+ def _run_checkpoint(parsed) -> int:
499
+ """Run the checkpoint subcommand."""
500
+ from praisonai.standardise.undo_redo import UndoRedoManager
501
+
502
+ manager = UndoRedoManager(Path(parsed.path).resolve())
503
+
504
+ success, result = manager.create_checkpoint(parsed.message)
505
+
506
+ if success:
507
+ print(f"✓ Checkpoint created: {result}")
508
+ else:
509
+ print(f"❌ Failed: {result}")
510
+ return 1
511
+
512
+ return 0
513
+
514
+
515
+ def _run_undo(parsed) -> int:
516
+ """Run the undo subcommand."""
517
+ from praisonai.standardise.undo_redo import UndoRedoManager
518
+
519
+ manager = UndoRedoManager(Path(parsed.path).resolve())
520
+
521
+ # List checkpoints if requested
522
+ if getattr(parsed, "list", False):
523
+ checkpoints = manager.list_checkpoints()
524
+ if not checkpoints:
525
+ print("No checkpoints found.")
526
+ return 0
527
+
528
+ print("Available checkpoints:")
529
+ for cp_id, date, message in checkpoints:
530
+ print(f" • {cp_id} ({date}): {message[:50]}")
531
+ return 0
532
+
533
+ # Undo to checkpoint
534
+ success, result = manager.undo(parsed.checkpoint)
535
+
536
+ if success:
537
+ print(f"✓ {result}")
538
+ else:
539
+ print(f"❌ {result}")
540
+ return 1
541
+
542
+ return 0
543
+
544
+
545
+ def _run_redo(parsed) -> int:
546
+ """Run the redo subcommand."""
547
+ from praisonai.standardise.undo_redo import UndoRedoManager
548
+
549
+ manager = UndoRedoManager(Path(parsed.path).resolve())
550
+
551
+ success, result = manager.redo()
552
+
553
+ if success:
554
+ print(f"✓ {result}")
555
+ else:
556
+ print(f"❌ {result}")
557
+ return 1
558
+
559
+ return 0
560
+
561
+
261
562
  # Click-based alternative for integration with main CLI
262
563
  def register_click_commands(app):
263
564
  """Register click commands with the main CLI app."""
@@ -34,6 +34,8 @@ TYPER_COMMANDS = {
34
34
  'memory', 'workflow', 'tools', 'knowledge', 'deploy', 'agents', 'skills',
35
35
  'eval', 'templates', 'recipe', 'todo', 'docs', 'commit', 'hooks', 'rules',
36
36
  'registry', 'package', 'endpoints',
37
+ # Standardisation commands
38
+ 'standardise', 'standardize',
37
39
  }
38
40
 
39
41
 
@@ -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==3.7.2 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==3.7.4 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
 
@@ -25,6 +25,9 @@ __all__ = [
25
25
  "ReportGenerator",
26
26
  # Config
27
27
  "StandardiseConfig",
28
+ # AI Generation
29
+ "AIGenerator",
30
+ "ExampleVerifier",
28
31
  ]
29
32
 
30
33
 
@@ -70,4 +73,12 @@ def __getattr__(name: str):
70
73
  from .config import StandardiseConfig
71
74
  return StandardiseConfig
72
75
 
76
+ if name == "AIGenerator":
77
+ from .ai_generator import AIGenerator
78
+ return AIGenerator
79
+
80
+ if name == "ExampleVerifier":
81
+ from .example_verifier import ExampleVerifier
82
+ return ExampleVerifier
83
+
73
84
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")