PraisonAI 4.6.149__tar.gz → 4.6.151__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 (651) hide show
  1. {praisonai-4.6.149 → praisonai-4.6.151}/PKG-INFO +9 -6
  2. {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/PKG-INFO +9 -6
  3. {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/SOURCES.txt +0 -58
  4. praisonai-4.6.151/PraisonAI.egg-info/entry_points.txt +9 -0
  5. {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/requires.txt +9 -5
  6. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_bootstrap.py +16 -0
  7. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agents_generator.py +10 -4
  8. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/api/agent_invoke.py +122 -6
  9. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/auto.py +44 -36
  10. praisonai-4.6.151/praisonai/cli/commands/mcp.py +11 -0
  11. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/apply_diff.py +12 -12
  12. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/search_replace.py +13 -13
  13. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/write_file.py +11 -11
  14. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/registry.py +3 -6
  15. praisonai-4.6.151/praisonai/mcp_server/__init__.py +9 -0
  16. praisonai-4.6.151/praisonai/version.py +1 -0
  17. {praisonai-4.6.149 → praisonai-4.6.151}/pyproject.toml +15 -5
  18. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_agent_invoke.py +135 -0
  19. praisonai-4.6.149/PraisonAI.egg-info/entry_points.txt +0 -4
  20. praisonai-4.6.149/praisonai/README.md +0 -5
  21. praisonai-4.6.149/praisonai/cli/commands/mcp.py +0 -763
  22. praisonai-4.6.149/praisonai/mcp_server/__init__.py +0 -152
  23. praisonai-4.6.149/praisonai/mcp_server/adapters/__init__.py +0 -74
  24. praisonai-4.6.149/praisonai/mcp_server/adapters/agents.py +0 -128
  25. praisonai-4.6.149/praisonai/mcp_server/adapters/capabilities.py +0 -168
  26. praisonai-4.6.149/praisonai/mcp_server/adapters/cli_tools.py +0 -624
  27. praisonai-4.6.149/praisonai/mcp_server/adapters/extended_capabilities.py +0 -462
  28. praisonai-4.6.149/praisonai/mcp_server/adapters/knowledge.py +0 -93
  29. praisonai-4.6.149/praisonai/mcp_server/adapters/memory.py +0 -104
  30. praisonai-4.6.149/praisonai/mcp_server/adapters/prompts.py +0 -306
  31. praisonai-4.6.149/praisonai/mcp_server/adapters/resources.py +0 -124
  32. praisonai-4.6.149/praisonai/mcp_server/adapters/tools_bridge.py +0 -280
  33. praisonai-4.6.149/praisonai/mcp_server/auth/__init__.py +0 -48
  34. praisonai-4.6.149/praisonai/mcp_server/auth/api_key.py +0 -291
  35. praisonai-4.6.149/praisonai/mcp_server/auth/oauth.py +0 -461
  36. praisonai-4.6.149/praisonai/mcp_server/auth/oidc.py +0 -289
  37. praisonai-4.6.149/praisonai/mcp_server/auth/scopes.py +0 -261
  38. praisonai-4.6.149/praisonai/mcp_server/cli.py +0 -898
  39. praisonai-4.6.149/praisonai/mcp_server/elicitation.py +0 -445
  40. praisonai-4.6.149/praisonai/mcp_server/icons.py +0 -302
  41. praisonai-4.6.149/praisonai/mcp_server/recipe_adapter.py +0 -573
  42. praisonai-4.6.149/praisonai/mcp_server/recipe_cli.py +0 -824
  43. praisonai-4.6.149/praisonai/mcp_server/registry.py +0 -718
  44. praisonai-4.6.149/praisonai/mcp_server/sampling.py +0 -422
  45. praisonai-4.6.149/praisonai/mcp_server/server.py +0 -607
  46. praisonai-4.6.149/praisonai/mcp_server/tasks.py +0 -443
  47. praisonai-4.6.149/praisonai/mcp_server/tool_index.py +0 -481
  48. praisonai-4.6.149/praisonai/mcp_server/transports/__init__.py +0 -18
  49. praisonai-4.6.149/praisonai/mcp_server/transports/http_stream.py +0 -525
  50. praisonai-4.6.149/praisonai/mcp_server/transports/stdio.py +0 -132
  51. praisonai-4.6.149/praisonai/public/fantasy.svg +0 -3
  52. praisonai-4.6.149/praisonai/public/game.svg +0 -3
  53. praisonai-4.6.149/praisonai/public/movie.svg +0 -3
  54. praisonai-4.6.149/praisonai/public/thriller.svg +0 -3
  55. praisonai-4.6.149/praisonai/scheduler/README.md +0 -274
  56. praisonai-4.6.149/praisonai/setup/config.yaml +0 -60
  57. praisonai-4.6.149/praisonai/ui/README.md +0 -21
  58. praisonai-4.6.149/praisonai/ui/callbacks.py +0 -57
  59. praisonai-4.6.149/praisonai/ui/components/aicoder.py +0 -343
  60. praisonai-4.6.149/praisonai/ui/config/chainlit.md +0 -1
  61. praisonai-4.6.149/praisonai/ui/config/translations/bn.json +0 -231
  62. praisonai-4.6.149/praisonai/ui/config/translations/en-US.json +0 -229
  63. praisonai-4.6.149/praisonai/ui/config/translations/gu.json +0 -231
  64. praisonai-4.6.149/praisonai/ui/config/translations/he-IL.json +0 -231
  65. praisonai-4.6.149/praisonai/ui/config/translations/hi.json +0 -231
  66. praisonai-4.6.149/praisonai/ui/config/translations/kn.json +0 -231
  67. praisonai-4.6.149/praisonai/ui/config/translations/ml.json +0 -231
  68. praisonai-4.6.149/praisonai/ui/config/translations/mr.json +0 -231
  69. praisonai-4.6.149/praisonai/ui/config/translations/ta.json +0 -231
  70. praisonai-4.6.149/praisonai/ui/config/translations/te.json +0 -231
  71. praisonai-4.6.149/praisonai/ui/config/translations/zh-CN.json +0 -229
  72. praisonai-4.6.149/praisonai/ui/public/fantasy.svg +0 -3
  73. praisonai-4.6.149/praisonai/ui/public/game.svg +0 -3
  74. praisonai-4.6.149/praisonai/ui/public/logo_dark.png +0 -0
  75. praisonai-4.6.149/praisonai/ui/public/logo_light.png +0 -0
  76. praisonai-4.6.149/praisonai/ui/public/movie.svg +0 -3
  77. praisonai-4.6.149/praisonai/ui/public/praison.css +0 -3
  78. praisonai-4.6.149/praisonai/ui/public/thriller.svg +0 -3
  79. praisonai-4.6.149/praisonai/ui/tools.md +0 -133
  80. praisonai-4.6.149/praisonai/version.py +0 -1
  81. {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/dependency_links.txt +0 -0
  82. {praisonai-4.6.149 → praisonai-4.6.151}/PraisonAI.egg-info/top_level.txt +0 -0
  83. {praisonai-4.6.149 → praisonai-4.6.151}/README.md +0 -0
  84. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/__init__.py +0 -0
  85. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/__main__.py +0 -0
  86. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_approval_spec.py +0 -0
  87. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_async_bridge.py +0 -0
  88. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/__init__.py +0 -0
  89. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/api_md.py +0 -0
  90. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/__init__.py +0 -0
  91. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/docs_extractor.py +0 -0
  92. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/docs_generator.py +0 -0
  93. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/generator.py +0 -0
  94. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  95. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/python_extractor.py +0 -0
  96. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  97. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/rust_extractor.py +0 -0
  98. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  99. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  100. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  101. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_entrypoint.py +0 -0
  102. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_framework_availability.py +0 -0
  103. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_lazy_cache.py +0 -0
  104. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_logging.py +0 -0
  105. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_registry.py +0 -0
  106. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/_safe_loader.py +0 -0
  107. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/__init__.py +0 -0
  108. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/config.py +0 -0
  109. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/safe_edit.py +0 -0
  110. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/server.py +0 -0
  111. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/acp/session.py +0 -0
  112. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/__init__.py +0 -0
  113. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/readers.py +0 -0
  114. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/rerankers.py +0 -0
  115. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/retrievers.py +0 -0
  116. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/adapters/vector_stores.py +0 -0
  117. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agent.py +0 -0
  118. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/agent_scheduler.py +0 -0
  119. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/api/call.py +0 -0
  120. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/app/__init__.py +0 -0
  121. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/app/agentos.py +0 -0
  122. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/async_agent_scheduler.py +0 -0
  123. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/audit/__init__.py +0 -0
  124. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/audit/agent_centric.py +0 -0
  125. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/bots/__init__.py +0 -0
  126. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/browser/__init__.py +0 -0
  127. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/__init__.py +0 -0
  128. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/a2a.py +0 -0
  129. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/assistants.py +0 -0
  130. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/audio.py +0 -0
  131. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/batches.py +0 -0
  132. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/completions.py +0 -0
  133. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/container_files.py +0 -0
  134. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/containers.py +0 -0
  135. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/embeddings.py +0 -0
  136. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/files.py +0 -0
  137. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/fine_tuning.py +0 -0
  138. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/guardrails.py +0 -0
  139. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/images.py +0 -0
  140. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/mcp.py +0 -0
  141. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/messages.py +0 -0
  142. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/moderations.py +0 -0
  143. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/ocr.py +0 -0
  144. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/passthrough.py +0 -0
  145. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/rag.py +0 -0
  146. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/realtime.py +0 -0
  147. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/rerank.py +0 -0
  148. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/responses.py +0 -0
  149. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/search.py +0 -0
  150. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/skills.py +0 -0
  151. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/vector_store_files.py +0 -0
  152. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/vector_stores.py +0 -0
  153. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/capabilities/videos.py +0 -0
  154. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/claw/__init__.py +0 -0
  155. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/__init__.py +0 -0
  156. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_paths.py +0 -0
  157. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_shim.py +0 -0
  158. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/_warnings.py +0 -0
  159. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/app.py +0 -0
  160. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/approval_backend.py +0 -0
  161. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/branding.py +0 -0
  162. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/__init__.py +0 -0
  163. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/acp.py +0 -0
  164. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/agent.py +0 -0
  165. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/agents.py +0 -0
  166. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/app.py +0 -0
  167. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/attach.py +0 -0
  168. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/audit.py +0 -0
  169. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/auth.py +0 -0
  170. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/batch.py +0 -0
  171. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/benchmark.py +0 -0
  172. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/bot.py +0 -0
  173. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/browser.py +0 -0
  174. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/call.py +0 -0
  175. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/chat.py +0 -0
  176. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/checkpoint.py +0 -0
  177. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/claw.py +0 -0
  178. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/code.py +0 -0
  179. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/command.py +0 -0
  180. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/commit.py +0 -0
  181. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/completion.py +0 -0
  182. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/config.py +0 -0
  183. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/context.py +0 -0
  184. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/daemon.py +0 -0
  185. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/dashboard.py +0 -0
  186. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/debug.py +0 -0
  187. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/deploy.py +0 -0
  188. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/diag.py +0 -0
  189. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/docs.py +0 -0
  190. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/doctor.py +0 -0
  191. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/endpoints.py +0 -0
  192. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/environment.py +0 -0
  193. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/eval.py +0 -0
  194. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/examples.py +0 -0
  195. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/flow.py +0 -0
  196. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/gateway.py +0 -0
  197. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/github.py +0 -0
  198. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/hooks.py +0 -0
  199. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/identity.py +0 -0
  200. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/init.py +0 -0
  201. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/kanban.py +0 -0
  202. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/knowledge.py +0 -0
  203. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/langextract.py +0 -0
  204. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/langfuse.py +0 -0
  205. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/loop.py +0 -0
  206. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/lsp.py +0 -0
  207. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/managed.py +0 -0
  208. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/memory.py +0 -0
  209. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/mint_link.py +0 -0
  210. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/models.py +0 -0
  211. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/n8n.py +0 -0
  212. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/obs.py +0 -0
  213. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/onboard.py +0 -0
  214. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/package.py +0 -0
  215. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/pairing.py +0 -0
  216. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/paths.py +0 -0
  217. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/permissions.py +0 -0
  218. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/plugins.py +0 -0
  219. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/port.py +0 -0
  220. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/profile.py +0 -0
  221. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/publish.py +0 -0
  222. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/rag.py +0 -0
  223. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/realtime.py +0 -0
  224. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/recipe.py +0 -0
  225. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/registry.py +0 -0
  226. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/replay.py +0 -0
  227. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/research.py +0 -0
  228. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/retrieval.py +0 -0
  229. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/rules.py +0 -0
  230. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/run.py +0 -0
  231. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/sandbox.py +0 -0
  232. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/schedule.py +0 -0
  233. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/serve.py +0 -0
  234. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/session.py +0 -0
  235. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/setup.py +0 -0
  236. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/skills.py +0 -0
  237. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/standardise.py +0 -0
  238. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/templates.py +0 -0
  239. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/test.py +0 -0
  240. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/todo.py +0 -0
  241. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/tools.py +0 -0
  242. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/traces.py +0 -0
  243. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/tracker.py +0 -0
  244. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/train.py +0 -0
  245. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/ui.py +0 -0
  246. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/up.py +0 -0
  247. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/validate.py +0 -0
  248. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/version.py +0 -0
  249. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/commands/workflow.py +0 -0
  250. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/config_loader.py +0 -0
  251. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/configuration/__init__.py +0 -0
  252. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/configuration/config.schema.json +0 -0
  253. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/execution/__init__.py +0 -0
  254. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/fallback_schema.py +0 -0
  255. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/__init__.py +0 -0
  256. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/acp.py +0 -0
  257. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/agent_scheduler.py +0 -0
  258. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/agent_tools.py +0 -0
  259. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/approval.py +0 -0
  260. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/background.py +0 -0
  261. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/bots_cli.py +0 -0
  262. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/deploy.py +0 -0
  263. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/endpoints.py +0 -0
  264. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/eval.py +0 -0
  265. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/gateway.py +0 -0
  266. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/ollama.py +0 -0
  267. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/onboard.py +0 -0
  268. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/persistence.py +0 -0
  269. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/recipe.py +0 -0
  270. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/recipe_optimizer.py +0 -0
  271. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/registry.py +0 -0
  272. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/sandbox_cli.py +0 -0
  273. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/serve.py +0 -0
  274. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/templates.py +0 -0
  275. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tools.py +0 -0
  276. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tui/__init__.py +0 -0
  277. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/tui/app.py +0 -0
  278. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/features/workflow.py +0 -0
  279. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/__init__.py +0 -0
  280. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/async_tui.py +0 -0
  281. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/interactive/core.py +0 -0
  282. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/langfuse_client.py +0 -0
  283. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/__init__.py +0 -0
  284. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/direct_prompt.py +0 -0
  285. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
  286. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
  287. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
  288. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/framework_run.py +0 -0
  289. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
  290. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/interactive_legacy.py +0 -0
  291. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
  292. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/legacy/workflow_commands.py +0 -0
  293. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/main.py +0 -0
  294. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/output/__init__.py +0 -0
  295. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/schedule_cli.py +0 -0
  296. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/schema_provider.py +0 -0
  297. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/session/__init__.py +0 -0
  298. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/state/__init__.py +0 -0
  299. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/ui/__init__.py +0 -0
  300. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/unified_schema.py +0 -0
  301. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli/utils/__init__.py +0 -0
  302. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/cli_backends/__init__.py +0 -0
  303. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/__init__.py +0 -0
  304. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/agent_tools.py +0 -0
  305. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/diff/__init__.py +0 -0
  306. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/diff/diff_strategy.py +0 -0
  307. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/__init__.py +0 -0
  308. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/execute_command.py +0 -0
  309. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/list_files.py +0 -0
  310. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/tools/read_file.py +0 -0
  311. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/__init__.py +0 -0
  312. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/file_utils.py +0 -0
  313. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/ignore_utils.py +0 -0
  314. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/code/utils/text_utils.py +0 -0
  315. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/__init__.py +0 -0
  316. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/schema.py +0 -0
  317. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/config/validator.py +0 -0
  318. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/__init__.py +0 -0
  319. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/_storage_path.py +0 -0
  320. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/artifact_store.py +0 -0
  321. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/config.py +0 -0
  322. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/history_store.py +0 -0
  323. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/queue.py +0 -0
  324. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/setup.py +0 -0
  325. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/context/terminal_logger.py +0 -0
  326. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/daemon/__init__.py +0 -0
  327. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/db/__init__.py +0 -0
  328. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/db/adapter.py +0 -0
  329. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/__init__.py +0 -0
  330. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/api.py +0 -0
  331. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/docker.py +0 -0
  332. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/doctor.py +0 -0
  333. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/main.py +0 -0
  334. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/models.py +0 -0
  335. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/__init__.py +0 -0
  336. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/_registry.py +0 -0
  337. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/aws.py +0 -0
  338. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/azure.py +0 -0
  339. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/base.py +0 -0
  340. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/providers/gcp.py +0 -0
  341. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/deploy/schema.py +0 -0
  342. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/__init__.py +0 -0
  343. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/a2u_server.py +0 -0
  344. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/discovery.py +0 -0
  345. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/__init__.py +0 -0
  346. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/a2a.py +0 -0
  347. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/a2u.py +0 -0
  348. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/agents_api.py +0 -0
  349. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/base.py +0 -0
  350. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/mcp.py +0 -0
  351. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/openai_compat.py +0 -0
  352. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/recipe.py +0 -0
  353. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  354. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/registry.py +0 -0
  355. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/endpoints/server.py +0 -0
  356. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/__init__.py +0 -0
  357. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/client.py +0 -0
  358. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  359. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  360. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/components/__init__.py +0 -0
  361. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/converter.py +0 -0
  362. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/flow/helpers.py +0 -0
  363. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/__init__.py +0 -0
  364. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/_config_builder.py +0 -0
  365. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  366. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/base.py +0 -0
  367. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  368. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  369. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/validators.py +0 -0
  370. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/framework_adapters/workflow_framework.py +0 -0
  371. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/gateway/__init__.py +0 -0
  372. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inbuilt_tools/__init__.py +0 -0
  373. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  374. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/__init__.py +0 -0
  375. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/config.py +0 -0
  376. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/inc/models.py +0 -0
  377. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/__init__.py +0 -0
  378. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/__init__.py +0 -0
  379. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  380. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/hooks_query.py +0 -0
  381. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  382. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/schedules_runner.py +0 -0
  383. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/usage_bridge.py +0 -0
  384. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/bridges/workflows_service.py +0 -0
  385. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/context_files.py +0 -0
  386. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/gateway_host.py +0 -0
  387. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/host_app.py +0 -0
  388. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/__init__.py +0 -0
  389. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/bot_health.py +0 -0
  390. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integration/pages/workflow_runs.py +0 -0
  391. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/__init__.py +0 -0
  392. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_cli_loaders.py +0 -0
  393. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_session_info.py +0 -0
  394. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_tool_aliases.py +0 -0
  395. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/_unified_registry.py +0 -0
  396. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/backend_registry.py +0 -0
  397. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/base.py +0 -0
  398. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/claude_code.py +0 -0
  399. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/codex_cli.py +0 -0
  400. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/__init__.py +0 -0
  401. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/daytona.py +0 -0
  402. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/docker.py +0 -0
  403. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/e2b.py +0 -0
  404. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/flyio.py +0 -0
  405. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/local.py +0 -0
  406. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/compute/modal_compute.py +0 -0
  407. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/cursor_cli.py +0 -0
  408. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/db_session_adapter.py +0 -0
  409. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/gemini_cli.py +0 -0
  410. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/hosted_agent.py +0 -0
  411. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/local_agent.py +0 -0
  412. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/managed_agents.py +0 -0
  413. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/managed_local.py +0 -0
  414. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/registry.py +0 -0
  415. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/integrations/sandboxed_agent.py +0 -0
  416. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/__init__.py +0 -0
  417. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/executor.py +0 -0
  418. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/models.py +0 -0
  419. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/path_validation.py +0 -0
  420. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/router.py +0 -0
  421. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/server.py +0 -0
  422. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/jobs/store.py +0 -0
  423. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/kanban/__init__.py +0 -0
  424. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/__init__.py +0 -0
  425. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/catalogue.py +0 -0
  426. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/config.py +0 -0
  427. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/credentials.py +0 -0
  428. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/env.py +0 -0
  429. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/gateways.py +0 -0
  430. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/llm/registry.py +0 -0
  431. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/__init__.py +0 -0
  432. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/client.py +0 -0
  433. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/converter.py +0 -0
  434. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/preview.py +0 -0
  435. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/n8n/reverse_converter.py +0 -0
  436. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/__init__.py +0 -0
  437. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/hooks.py +0 -0
  438. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/langextract.py +0 -0
  439. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/observability/langfuse.py +0 -0
  440. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/__init__.py +0 -0
  441. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/_valkey_client.py +0 -0
  442. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/config.py +0 -0
  443. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/__init__.py +0 -0
  444. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/_sql_base.py +0 -0
  445. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  446. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_mysql.py +0 -0
  447. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_postgres.py +0 -0
  448. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  449. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/base.py +0 -0
  450. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/json_store.py +0 -0
  451. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/mysql.py +0 -0
  452. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/postgres.py +0 -0
  453. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/singlestore.py +0 -0
  454. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/sqlite.py +0 -0
  455. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/supabase.py +0 -0
  456. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/surrealdb.py +0 -0
  457. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  458. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/conversation/turso.py +0 -0
  459. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/factory.py +0 -0
  460. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/hooks/__init__.py +0 -0
  461. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  462. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/__init__.py +0 -0
  463. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/base.py +0 -0
  464. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/cassandra.py +0 -0
  465. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/chroma.py +0 -0
  466. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  467. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  468. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/couchbase.py +0 -0
  469. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/lancedb.py +0 -0
  470. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  471. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  472. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  473. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/milvus.py +0 -0
  474. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  475. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/pgvector.py +0 -0
  476. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/pinecone.py +0 -0
  477. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/qdrant.py +0 -0
  478. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  479. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  480. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  481. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  482. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  483. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/knowledge/weaviate.py +0 -0
  484. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/migrations/__init__.py +0 -0
  485. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/migrations/manager.py +0 -0
  486. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/orchestrator.py +0 -0
  487. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/registry.py +0 -0
  488. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/__init__.py +0 -0
  489. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/async_mongodb.py +0 -0
  490. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/base.py +0 -0
  491. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/dynamodb.py +0 -0
  492. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/firestore.py +0 -0
  493. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/gcs.py +0 -0
  494. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/memory.py +0 -0
  495. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/mongodb.py +0 -0
  496. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/redis.py +0 -0
  497. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/upstash.py +0 -0
  498. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/state/valkey.py +0 -0
  499. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/__init__.py +0 -0
  500. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_all_backends.py +0 -0
  501. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
  502. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  503. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/profiler.py +0 -0
  504. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/__init__.py +0 -0
  505. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/client.py +0 -0
  506. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/push/transports.py +0 -0
  507. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/__init__.py +0 -0
  508. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/bridge.py +0 -0
  509. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/core.py +0 -0
  510. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/exceptions.py +0 -0
  511. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/history.py +0 -0
  512. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/models.py +0 -0
  513. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/operations.py +0 -0
  514. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/policy.py +0 -0
  515. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/registry.py +0 -0
  516. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/runtime.py +0 -0
  517. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/security.py +0 -0
  518. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/serve.py +0 -0
  519. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/recipe/server.py +0 -0
  520. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/__init__.py +0 -0
  521. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/analyzer.py +0 -0
  522. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/applier.py +0 -0
  523. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/judge.py +0 -0
  524. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/plan.py +0 -0
  525. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/player.py +0 -0
  526. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/reader.py +0 -0
  527. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/storage.py +0 -0
  528. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/replay/writer.py +0 -0
  529. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/runtime/__init__.py +0 -0
  530. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/runtime/__main__.py +0 -0
  531. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/__init__.py +0 -0
  532. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_compat.py +0 -0
  533. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_registry.py +0 -0
  534. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/_shell.py +0 -0
  535. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/daytona.py +0 -0
  536. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/docker.py +0 -0
  537. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/e2b.py +0 -0
  538. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/modal.py +0 -0
  539. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/sandlock.py +0 -0
  540. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/ssh.py +0 -0
  541. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/sandbox/subprocess.py +0 -0
  542. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/__init__.py +0 -0
  543. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_base_scheduler.py +0 -0
  544. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_delivery.py +0 -0
  545. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/_dispatch.py +0 -0
  546. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/agent_scheduler.py +0 -0
  547. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  548. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/base.py +0 -0
  549. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  550. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/condition_gate.py +0 -0
  551. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/daemon_manager.py +0 -0
  552. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/deployment.py +0 -0
  553. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/executor.py +0 -0
  554. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/run_policy.py +0 -0
  555. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/shared.py +0 -0
  556. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/state_manager.py +0 -0
  557. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/suggestion_engine.py +0 -0
  558. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/scheduler/yaml_loader.py +0 -0
  559. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/__init__.py +0 -0
  560. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/audit.py +0 -0
  561. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/injection.py +0 -0
  562. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/security/protected.py +0 -0
  563. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/__init__.py +0 -0
  564. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/build.py +0 -0
  565. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/post_install.py +0 -0
  566. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup/setup_conda_env.py +0 -0
  567. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/setup.py +0 -0
  568. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/__init__.py +0 -0
  569. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/ai_generator.py +0 -0
  570. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/config.py +0 -0
  571. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/dedupe.py +0 -0
  572. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/discovery.py +0 -0
  573. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/drift.py +0 -0
  574. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/engine.py +0 -0
  575. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/enhanced_templates.py +0 -0
  576. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/example_verifier.py +0 -0
  577. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/manifest.py +0 -0
  578. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/models.py +0 -0
  579. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/reports.py +0 -0
  580. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/templates.py +0 -0
  581. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/undo_redo.py +0 -0
  582. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/standardise/validator.py +0 -0
  583. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/__init__.py +0 -0
  584. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/dynamodb_adapter.py +0 -0
  585. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/mongodb_adapter.py +0 -0
  586. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/postgresql_adapter.py +0 -0
  587. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/redis_adapter.py +0 -0
  588. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/storage/valkey_adapter.py +0 -0
  589. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/__init__.py +0 -0
  590. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/batch_source.py +0 -0
  591. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/cli_docs_source.py +0 -0
  592. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/discovery.py +0 -0
  593. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/docs_source.py +0 -0
  594. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/examples_source.py +0 -0
  595. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/executor.py +0 -0
  596. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/models.py +0 -0
  597. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/report_viewer.py +0 -0
  598. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/reporter.py +0 -0
  599. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/suite_runner/runner.py +0 -0
  600. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/__init__.py +0 -0
  601. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/cache.py +0 -0
  602. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/dependency_checker.py +0 -0
  603. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/discovery.py +0 -0
  604. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/loader.py +0 -0
  605. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/registry.py +0 -0
  606. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/resolver.py +0 -0
  607. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/security.py +0 -0
  608. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/tool_override.py +0 -0
  609. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/templates/tools_doctor.py +0 -0
  610. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tool_registry.py +0 -0
  611. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tool_resolver.py +0 -0
  612. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/__init__.py +0 -0
  613. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/audio.py +0 -0
  614. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/glob_tool.py +0 -0
  615. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/grep_tool.py +0 -0
  616. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/kanban_tools.py +0 -0
  617. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/multiedit.py +0 -0
  618. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/tools/skill_manage.py +0 -0
  619. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train/__init__.py +0 -0
  620. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train.py +0 -0
  621. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/train_vision.py +0 -0
  622. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/_aiui_datastore.py +0 -0
  623. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/_external_agents.py +0 -0
  624. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/context.py +0 -0
  625. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui/database_config.py +0 -0
  626. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_agents/__init__.py +0 -0
  627. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_agents/default_app.py +0 -0
  628. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_bot/__init__.py +0 -0
  629. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_bot/default_app.py +0 -0
  630. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_chat/__init__.py +0 -0
  631. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_chat/default_app.py +0 -0
  632. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_dashboard/default_app.py +0 -0
  633. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_realtime/__init__.py +0 -0
  634. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/ui_realtime/default_app.py +0 -0
  635. {praisonai-4.6.149 → praisonai-4.6.151}/praisonai/upload_vision.py +0 -0
  636. {praisonai-4.6.149 → praisonai-4.6.151}/setup.cfg +0 -0
  637. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test.py +0 -0
  638. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_agents_playbook.py +0 -0
  639. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_approval_system.py +0 -0
  640. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_basic.py +0 -0
  641. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_cli_features.py +0 -0
  642. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_custom_tools_fix.py +0 -0
  643. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_double_api_fix.py +0 -0
  644. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_cli_feature.py +0 -0
  645. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_n8n_integration.py +0 -0
  646. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_phase2_refactor.py +0 -0
  647. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_recipe.py +0 -0
  648. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_registry.py +0 -0
  649. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_runner.py +0 -0
  650. {praisonai-4.6.149 → praisonai-4.6.151}/tests/test_sandboxed_agent_compatibility.py +0 -0
  651. {praisonai-4.6.149 → praisonai-4.6.151}/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.149
3
+ Version: 4.6.151
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,11 +11,12 @@ 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.152
15
- Requires-Dist: praisonai-code>=0.0.48
16
- Requires-Dist: praisonai-bot>=0.0.33
17
- Requires-Dist: praisonai-train>=0.0.4
18
- Requires-Dist: praisonai-browser>=0.0.1
14
+ Requires-Dist: praisonaiagents>=1.6.154
15
+ Requires-Dist: praisonai-code>=0.0.50
16
+ Requires-Dist: praisonai-bot>=0.0.35
17
+ Requires-Dist: praisonai-train>=0.0.6
18
+ Requires-Dist: praisonai-browser>=0.0.3
19
+ Requires-Dist: praisonai-mcp>=0.0.3
19
20
  Requires-Dist: python-dotenv>=0.19.0
20
21
  Requires-Dist: litellm<2,>=1.83.14
21
22
  Requires-Dist: PyYAML>=6.0
@@ -86,6 +87,8 @@ Provides-Extra: train
86
87
  Requires-Dist: praisonai-train[llm]; extra == "train"
87
88
  Provides-Extra: browser
88
89
  Requires-Dist: praisonai-browser[all]; extra == "browser"
90
+ Provides-Extra: mcp
91
+ Requires-Dist: praisonai-mcp[all]; extra == "mcp"
89
92
  Provides-Extra: crewai
90
93
  Requires-Dist: crewai>=0.157.0; extra == "crewai"
91
94
  Requires-Dist: praisonai-tools>=0.1.0; extra == "crewai"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.149
3
+ Version: 4.6.151
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,11 +11,12 @@ 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.152
15
- Requires-Dist: praisonai-code>=0.0.48
16
- Requires-Dist: praisonai-bot>=0.0.33
17
- Requires-Dist: praisonai-train>=0.0.4
18
- Requires-Dist: praisonai-browser>=0.0.1
14
+ Requires-Dist: praisonaiagents>=1.6.154
15
+ Requires-Dist: praisonai-code>=0.0.50
16
+ Requires-Dist: praisonai-bot>=0.0.35
17
+ Requires-Dist: praisonai-train>=0.0.6
18
+ Requires-Dist: praisonai-browser>=0.0.3
19
+ Requires-Dist: praisonai-mcp>=0.0.3
19
20
  Requires-Dist: python-dotenv>=0.19.0
20
21
  Requires-Dist: litellm<2,>=1.83.14
21
22
  Requires-Dist: PyYAML>=6.0
@@ -86,6 +87,8 @@ Provides-Extra: train
86
87
  Requires-Dist: praisonai-train[llm]; extra == "train"
87
88
  Provides-Extra: browser
88
89
  Requires-Dist: praisonai-browser[all]; extra == "browser"
90
+ Provides-Extra: mcp
91
+ Requires-Dist: praisonai-mcp[all]; extra == "mcp"
89
92
  Provides-Extra: crewai
90
93
  Requires-Dist: crewai>=0.157.0; extra == "crewai"
91
94
  Requires-Dist: praisonai-tools>=0.1.0; extra == "crewai"
@@ -6,7 +6,6 @@ PraisonAI.egg-info/dependency_links.txt
6
6
  PraisonAI.egg-info/entry_points.txt
7
7
  PraisonAI.egg-info/requires.txt
8
8
  PraisonAI.egg-info/top_level.txt
9
- praisonai/README.md
10
9
  praisonai/__init__.py
11
10
  praisonai/__main__.py
12
11
  praisonai/_approval_spec.py
@@ -372,34 +371,6 @@ praisonai/llm/env.py
372
371
  praisonai/llm/gateways.py
373
372
  praisonai/llm/registry.py
374
373
  praisonai/mcp_server/__init__.py
375
- praisonai/mcp_server/cli.py
376
- praisonai/mcp_server/elicitation.py
377
- praisonai/mcp_server/icons.py
378
- praisonai/mcp_server/recipe_adapter.py
379
- praisonai/mcp_server/recipe_cli.py
380
- praisonai/mcp_server/registry.py
381
- praisonai/mcp_server/sampling.py
382
- praisonai/mcp_server/server.py
383
- praisonai/mcp_server/tasks.py
384
- praisonai/mcp_server/tool_index.py
385
- praisonai/mcp_server/adapters/__init__.py
386
- praisonai/mcp_server/adapters/agents.py
387
- praisonai/mcp_server/adapters/capabilities.py
388
- praisonai/mcp_server/adapters/cli_tools.py
389
- praisonai/mcp_server/adapters/extended_capabilities.py
390
- praisonai/mcp_server/adapters/knowledge.py
391
- praisonai/mcp_server/adapters/memory.py
392
- praisonai/mcp_server/adapters/prompts.py
393
- praisonai/mcp_server/adapters/resources.py
394
- praisonai/mcp_server/adapters/tools_bridge.py
395
- praisonai/mcp_server/auth/__init__.py
396
- praisonai/mcp_server/auth/api_key.py
397
- praisonai/mcp_server/auth/oauth.py
398
- praisonai/mcp_server/auth/oidc.py
399
- praisonai/mcp_server/auth/scopes.py
400
- praisonai/mcp_server/transports/__init__.py
401
- praisonai/mcp_server/transports/http_stream.py
402
- praisonai/mcp_server/transports/stdio.py
403
374
  praisonai/n8n/__init__.py
404
375
  praisonai/n8n/client.py
405
376
  praisonai/n8n/converter.py
@@ -472,10 +443,6 @@ praisonai/persistence/tests/__init__.py
472
443
  praisonai/persistence/tests/test_all_backends.py
473
444
  praisonai/persistence/tests/test_registry_lazy.py
474
445
  praisonai/persistence/tests/test_valkey_backends.py
475
- praisonai/public/fantasy.svg
476
- praisonai/public/game.svg
477
- praisonai/public/movie.svg
478
- praisonai/public/thriller.svg
479
446
  praisonai/push/__init__.py
480
447
  praisonai/push/client.py
481
448
  praisonai/push/transports.py
@@ -514,7 +481,6 @@ praisonai/sandbox/modal.py
514
481
  praisonai/sandbox/sandlock.py
515
482
  praisonai/sandbox/ssh.py
516
483
  praisonai/sandbox/subprocess.py
517
- praisonai/scheduler/README.md
518
484
  praisonai/scheduler/__init__.py
519
485
  praisonai/scheduler/_base_scheduler.py
520
486
  praisonai/scheduler/_delivery.py
@@ -538,7 +504,6 @@ praisonai/security/injection.py
538
504
  praisonai/security/protected.py
539
505
  praisonai/setup/__init__.py
540
506
  praisonai/setup/build.py
541
- praisonai/setup/config.yaml
542
507
  praisonai/setup/post_install.py
543
508
  praisonai/setup/setup_conda_env.py
544
509
  praisonai/standardise/__init__.py
@@ -591,33 +556,10 @@ praisonai/tools/kanban_tools.py
591
556
  praisonai/tools/multiedit.py
592
557
  praisonai/tools/skill_manage.py
593
558
  praisonai/train/__init__.py
594
- praisonai/ui/README.md
595
559
  praisonai/ui/_aiui_datastore.py
596
560
  praisonai/ui/_external_agents.py
597
- praisonai/ui/callbacks.py
598
561
  praisonai/ui/context.py
599
562
  praisonai/ui/database_config.py
600
- praisonai/ui/tools.md
601
- praisonai/ui/components/aicoder.py
602
- praisonai/ui/config/chainlit.md
603
- praisonai/ui/config/translations/bn.json
604
- praisonai/ui/config/translations/en-US.json
605
- praisonai/ui/config/translations/gu.json
606
- praisonai/ui/config/translations/he-IL.json
607
- praisonai/ui/config/translations/hi.json
608
- praisonai/ui/config/translations/kn.json
609
- praisonai/ui/config/translations/ml.json
610
- praisonai/ui/config/translations/mr.json
611
- praisonai/ui/config/translations/ta.json
612
- praisonai/ui/config/translations/te.json
613
- praisonai/ui/config/translations/zh-CN.json
614
- praisonai/ui/public/fantasy.svg
615
- praisonai/ui/public/game.svg
616
- praisonai/ui/public/logo_dark.png
617
- praisonai/ui/public/logo_light.png
618
- praisonai/ui/public/movie.svg
619
- praisonai/ui/public/praison.css
620
- praisonai/ui/public/thriller.svg
621
563
  praisonai/ui_agents/__init__.py
622
564
  praisonai/ui_agents/default_app.py
623
565
  praisonai/ui_bot/__init__.py
@@ -0,0 +1,9 @@
1
+ [console_scripts]
2
+ praisonai = praisonai.__main__:main
3
+ praisonai-call = praisonai.api.call:main
4
+ setup-conda-env = praisonai.setup.setup_conda_env:main
5
+
6
+ [praisonai.framework_adapters]
7
+ autogen = praisonai.framework_adapters.autogen_adapter:AutoGenFamilyAdapter
8
+ autogen_v2 = praisonai.framework_adapters.autogen_adapter:AutoGenAdapter
9
+ crewai = praisonai.framework_adapters.crewai_adapter:CrewAIAdapter
@@ -1,11 +1,12 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.152
5
- praisonai-code>=0.0.48
6
- praisonai-bot>=0.0.33
7
- praisonai-train>=0.0.4
8
- praisonai-browser>=0.0.1
4
+ praisonaiagents>=1.6.154
5
+ praisonai-code>=0.0.50
6
+ praisonai-bot>=0.0.35
7
+ praisonai-train>=0.0.6
8
+ praisonai-browser>=0.0.3
9
+ praisonai-mcp>=0.0.3
9
10
  python-dotenv>=0.19.0
10
11
  litellm<2,>=1.83.14
11
12
  PyYAML>=6.0
@@ -166,6 +167,9 @@ praisonai-tools>=0.1.0
166
167
 
167
168
  [lite]
168
169
 
170
+ [mcp]
171
+ praisonai-mcp[all]
172
+
169
173
  [modal]
170
174
  modal>=0.64.0
171
175
 
@@ -75,3 +75,19 @@ def ensure_praisonai_browser() -> None:
75
75
  root = str(browser_src)
76
76
  if root not in sys.path:
77
77
  sys.path.insert(0, root)
78
+
79
+
80
+ def ensure_praisonai_mcp() -> None:
81
+ """Ensure ``praisonai_mcp`` can be imported in monorepo dev layouts."""
82
+ try:
83
+ import praisonai_mcp # noqa: F401
84
+ return
85
+ except ImportError:
86
+ pass
87
+
88
+ wrapper_src = Path(__file__).resolve().parents[1] # .../src/praisonai
89
+ mcp_src = wrapper_src.parent / "praisonai-mcp"
90
+ if (mcp_src / "praisonai_mcp").is_dir():
91
+ root = str(mcp_src)
92
+ if root not in sys.path:
93
+ sys.path.insert(0, root)
@@ -401,7 +401,7 @@ def _resolve_yaml_cli_backend(cli_backend_config, logger):
401
401
 
402
402
 
403
403
  class AgentsGenerator:
404
- def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None):
404
+ def __init__(self, agent_file, framework, config_list, log_level=None, agent_callback=None, task_callback=None, agent_yaml=None, tools=None, cli_config=None, adapter_registry=None, tool_timeout_executor=None, tool_resolver=None):
405
405
  """
406
406
  Initialize the AgentsGenerator object.
407
407
 
@@ -416,6 +416,7 @@ class AgentsGenerator:
416
416
  tools (dict, optional): A dictionary containing the tools to be used for the agents. Defaults to None.
417
417
  cli_config (dict, optional): CLI configuration to override YAML settings. Defaults to None.
418
418
  adapter_registry (FrameworkAdapterRegistry, optional): Registry for framework adapters. Defaults to process default.
419
+ tool_resolver (ToolResolver, optional): Canonical tool resolver. Defaults to the shared context-local resolver so discovery runs once per run.
419
420
 
420
421
  Attributes:
421
422
  agent_file (str): The path to the agent file.
@@ -448,9 +449,14 @@ class AgentsGenerator:
448
449
  elif os.environ.get('LOGLEVEL'):
449
450
  self.logger.setLevel(getattr(logging, os.environ.get('LOGLEVEL', 'INFO').upper(), logging.INFO))
450
451
 
451
- # Initialize tool resolver (single source of truth for tool resolution)
452
- from .tool_resolver import ToolResolver
453
- self.tool_resolver = ToolResolver()
452
+ # Initialize tool resolver (single source of truth for tool resolution).
453
+ # DI-friendly: callers (e.g. AutoGenerator hand-off, tests) may pass a
454
+ # resolver; otherwise share the context-local default so tool discovery
455
+ # runs once per run instead of once per generator construction.
456
+ if tool_resolver is None:
457
+ from .tool_resolver import _get_default_resolver
458
+ tool_resolver = _get_default_resolver()
459
+ self.tool_resolver = tool_resolver
454
460
 
455
461
  # DI-friendly: tests/multi-tenant runtimes pass their own registry;
456
462
  # CLI users get the process default.
@@ -168,6 +168,109 @@ def list_registered_agents() -> list:
168
168
  return list(_agent_registry.keys())
169
169
 
170
170
 
171
+ def _is_real_agent(agent: Any) -> bool:
172
+ """Return True when ``agent`` is a genuine ``praisonaiagents`` ``Agent``.
173
+
174
+ Uses ``isinstance`` against the real ``Agent`` class so **subclasses defined
175
+ in application code** are recognised too (they inherit the per-session
176
+ machinery and ``clone_for_channel``). Plain mocks / lightweight callables are
177
+ not ``Agent`` instances, so they fall back to the shared instance for
178
+ backward compatibility. If ``praisonaiagents`` cannot be imported we treat
179
+ the object as non-isolatable.
180
+ """
181
+ try:
182
+ from praisonaiagents import Agent
183
+ except Exception:
184
+ return False
185
+ return isinstance(agent, Agent)
186
+
187
+
188
+ def _supports_session_isolation(agent: Any) -> bool:
189
+ """Return True when ``agent`` can be safely cloned per session.
190
+
191
+ A real ``Agent`` (or any subclass) exposes the per-session machinery
192
+ (``_session_id`` binding, ``chat_history`` and a safe clone path). Plain
193
+ mocks / lightweight callables do not, so they stay on the shared instance to
194
+ preserve backward compatibility.
195
+ """
196
+ if not _is_real_agent(agent):
197
+ return False
198
+ if not hasattr(agent, "_session_id"):
199
+ return False
200
+ if not hasattr(agent, "chat_history"):
201
+ return False
202
+ return callable(getattr(agent, "clone_for_channel", None))
203
+
204
+
205
+ def _clone_agent(agent: Any) -> Any:
206
+ """Create an independent copy of a real ``Agent``.
207
+
208
+ Prefers ``clone_for_channel`` (purpose-built for multi-channel isolation
209
+ with fresh locks), falling back to ``deepcopy``.
210
+ """
211
+ clone_for_channel = getattr(agent, "clone_for_channel", None)
212
+ if callable(clone_for_channel):
213
+ return clone_for_channel()
214
+ import copy as _copy
215
+
216
+ return _copy.deepcopy(agent)
217
+
218
+
219
+ def resolve_session_agent(agent_id: str, session_id: Optional[str]) -> Any:
220
+ """Resolve an isolated, session-scoped agent for a single request.
221
+
222
+ The registry holds a *template* agent, not a live conversation. Every
223
+ request gets its own clone so concurrent callers never share mutable
224
+ ``chat_history``:
225
+
226
+ - With a ``session_id``: the clone is bound to that session so its history
227
+ is loaded from (and persisted to) the shared, file-locked session store —
228
+ giving continuity across requests and isolation between sessions.
229
+ - Without a ``session_id``: the clone is ephemeral (no session binding), so
230
+ no global state is mutated.
231
+
232
+ Agents that don't support cloning/session binding (e.g. plain mocks) fall
233
+ back to the shared registry instance for backward compatibility.
234
+ """
235
+ template = get_agent(agent_id)
236
+ if template is None:
237
+ return None
238
+
239
+ if not _supports_session_isolation(template):
240
+ return template
241
+
242
+ try:
243
+ agent = _clone_agent(template)
244
+ except Exception as e:
245
+ # A clone failure must never silently fall back to the shared template:
246
+ # doing so would leak one session's chat_history into another. Fail the
247
+ # request instead so isolation is guaranteed.
248
+ logger.error(
249
+ f"Failed to clone agent '{agent_id}' for session isolation: {e}"
250
+ )
251
+ raise RuntimeError(
252
+ f"Failed to isolate agent '{agent_id}' for session: {e}"
253
+ ) from e
254
+
255
+ # Reset per-request conversation state so the clone starts clean and
256
+ # (re)loads the requested session's history lazily on first chat.
257
+ try:
258
+ agent.chat_history = []
259
+ except Exception:
260
+ pass
261
+ if hasattr(agent, "_session_store_initialized"):
262
+ agent._session_store_initialized = False
263
+ if session_id:
264
+ agent._session_id = session_id
265
+ if hasattr(agent, "_history_session_id"):
266
+ agent._history_session_id = session_id
267
+ else:
268
+ agent._session_id = None
269
+ if hasattr(agent, "_history_session_id"):
270
+ agent._history_session_id = None
271
+ return agent
272
+
273
+
171
274
  def _supports_async_start(agent: Any) -> bool:
172
275
  """Return True if agent.astart is a coroutine function."""
173
276
  astart = getattr(agent, "astart", None)
@@ -218,8 +321,17 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
218
321
  }
219
322
  ```
220
323
  """
221
- # Get agent from registry
222
- agent = get_agent(agent_id)
324
+ # Resolve a per-session isolated agent view so concurrent callers never
325
+ # share mutable chat_history. A provided session_id gives continuity via
326
+ # the shared session store; its absence yields an ephemeral conversation.
327
+ try:
328
+ agent = resolve_session_agent(agent_id, request.session_id)
329
+ except Exception as e:
330
+ logger.error(f"Failed to isolate agent {agent_id}: {e}")
331
+ raise HTTPException(
332
+ status_code=500,
333
+ detail=f"Agent execution failed: {str(e)}"
334
+ )
223
335
  if not agent:
224
336
  logger.error(f"Agent not found: {agent_id}")
225
337
  raise HTTPException(
@@ -228,7 +340,7 @@ if FASTAPI_AVAILABLE and APIRouter is not None:
228
340
  )
229
341
 
230
342
  try:
231
- # Set session ID if provided
343
+ # Session ID echoed back to the caller
232
344
  session_id = request.session_id or "default"
233
345
 
234
346
  # Apply agent config overrides if provided
@@ -362,15 +474,19 @@ async def invoke_agent_standalone(
362
474
  This can be used in environments where FastAPI is not available
363
475
  or when integrating with other web frameworks.
364
476
  """
365
- agent = get_agent(agent_id)
366
- if not agent:
477
+ if get_agent(agent_id) is None:
367
478
  return {
368
479
  "error": f"Agent '{agent_id}' not found",
369
480
  "status": "error",
370
481
  "available_agents": list_registered_agents()
371
482
  }
372
-
483
+
373
484
  try:
485
+ # Per-session isolated agent view (see resolve_session_agent). Done
486
+ # inside the try so a clone/isolation failure returns a clean error
487
+ # rather than leaking one session's history into another.
488
+ agent = resolve_session_agent(agent_id, session_id)
489
+
374
490
  # Apply config if provided
375
491
  if agent_config:
376
492
  logger.debug(f"Agent config provided: {agent_config}")
@@ -733,10 +733,50 @@ class BaseAutoGenerator:
733
733
  raise error[0]
734
734
  return result[0]
735
735
 
736
- @staticmethod
737
- def get_available_tools() -> List[str]:
738
- """Return list of available tools for agent assignment."""
739
- return AVAILABLE_TOOLS.copy()
736
+ def _get_tool_resolver(self):
737
+ """Lazily construct the canonical ToolResolver (single source of truth).
738
+
739
+ Uses the shared context-local resolver so every generator in a run
740
+ (auto phase + AgentsGenerator + workflow/job generators) reuses one
741
+ warm cache instead of repeating full tool discovery. Kept lazy so
742
+ importing auto.py stays cheap and so a resolver-construction failure
743
+ never blocks generation — callers fall back to keyword/legacy hints.
744
+ """
745
+ resolver = getattr(self, "_tool_resolver", None)
746
+ if resolver is None:
747
+ try:
748
+ from .tool_resolver import _get_default_resolver
749
+ resolver = _get_default_resolver()
750
+ except Exception as e: # pragma: no cover - defensive
751
+ logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
752
+ resolver = False # sentinel: attempted, not available
753
+ self._tool_resolver = resolver
754
+ return resolver or None
755
+
756
+ def _available_tools(self) -> List[str]:
757
+ """Return the real, installed tool names from the canonical ToolResolver.
758
+
759
+ This is the single source of truth shared with AgentsGenerator. Returns
760
+ an empty list if the resolver is unavailable so callers can fall back.
761
+ """
762
+ resolver = self._get_tool_resolver()
763
+ if resolver is None:
764
+ return []
765
+ try:
766
+ return sorted(resolver.list_available().keys())
767
+ except Exception as e: # pragma: no cover - defensive
768
+ logger.debug("ToolResolver.list_available() failed (%s).", e)
769
+ return []
770
+
771
+ def get_available_tools(self) -> List[str]:
772
+ """Return list of available tools for agent assignment.
773
+
774
+ Routes through the canonical ToolResolver (single source of truth) so
775
+ the LLM is shown only tools that are actually installed. Falls back to
776
+ the frozen ``AVAILABLE_TOOLS`` list solely when the resolver is
777
+ unavailable or returns nothing.
778
+ """
779
+ return self._available_tools() or AVAILABLE_TOOLS.copy()
740
780
 
741
781
  @staticmethod
742
782
  def analyze_complexity(topic: str) -> str:
@@ -1103,38 +1143,6 @@ class AutoGenerator(BaseAutoGenerator):
1103
1143
 
1104
1144
  return merged_data
1105
1145
 
1106
- def _get_tool_resolver(self):
1107
- """Lazily construct the canonical ToolResolver (single source of truth).
1108
-
1109
- Kept lazy so importing auto.py stays cheap and so a resolver-construction
1110
- failure never blocks generation — callers fall back to keyword hints.
1111
- """
1112
- resolver = getattr(self, "_tool_resolver", None)
1113
- if resolver is None:
1114
- try:
1115
- from .tool_resolver import ToolResolver
1116
- resolver = ToolResolver()
1117
- except Exception as e: # pragma: no cover - defensive
1118
- logger.debug("ToolResolver unavailable (%s); using keyword hints only.", e)
1119
- resolver = False # sentinel: attempted, not available
1120
- self._tool_resolver = resolver
1121
- return resolver or None
1122
-
1123
- def _available_tools(self) -> List[str]:
1124
- """Return the real, installed tool names from the canonical ToolResolver.
1125
-
1126
- This is the single source of truth shared with AgentsGenerator. Returns
1127
- an empty list if the resolver is unavailable so callers can fall back.
1128
- """
1129
- resolver = self._get_tool_resolver()
1130
- if resolver is None:
1131
- return []
1132
- try:
1133
- return sorted(resolver.list_available().keys())
1134
- except Exception as e: # pragma: no cover - defensive
1135
- logger.debug("ToolResolver.list_available() failed (%s).", e)
1136
- return []
1137
-
1138
1146
  def discover_tools_for_topic(self) -> List[str]:
1139
1147
  """
1140
1148
  Discover appropriate tools for the topic.
@@ -0,0 +1,11 @@
1
+ """C12 shim: implementation moved to ``praisonai_mcp.cli.commands.mcp``."""
2
+
3
+ import sys as _sys
4
+
5
+ from praisonai._bootstrap import ensure_praisonai_mcp
6
+
7
+ ensure_praisonai_mcp()
8
+
9
+ import praisonai_mcp.cli.commands.mcp as _impl
10
+
11
+ _sys.modules[__name__] = _impl
@@ -71,9 +71,10 @@ def apply_diff(
71
71
  ... '''
72
72
  >>> result = apply_diff("src/main.py", diff)
73
73
  """
74
- # Resolve path
75
- if workspace and not os.path.isabs(path):
76
- abs_path = os.path.abspath(os.path.join(workspace, path))
74
+ # Resolve path — default workspace is cwd so relative paths cannot escape
75
+ effective_workspace = workspace or os.getcwd()
76
+ if not os.path.isabs(path):
77
+ abs_path = os.path.abspath(os.path.join(effective_workspace, path))
77
78
  else:
78
79
  abs_path = os.path.abspath(path)
79
80
 
@@ -87,15 +88,14 @@ def apply_diff(
87
88
  'applied_count': 0,
88
89
  }
89
90
 
90
- # Security check
91
- if workspace:
92
- if not is_path_within_directory(abs_path, workspace):
93
- return {
94
- 'success': False,
95
- 'error': f"Path '{path}' is outside the workspace",
96
- 'path': path,
97
- 'applied_count': 0,
98
- }
91
+ # Security check — confinement always enforced against the workspace
92
+ if not is_path_within_directory(abs_path, effective_workspace):
93
+ return {
94
+ 'success': False,
95
+ 'error': f"Path '{path}' is outside the workspace",
96
+ 'path': path,
97
+ 'applied_count': 0,
98
+ }
99
99
 
100
100
  # Check if file exists
101
101
  if not file_exists(abs_path):
@@ -56,9 +56,10 @@ def search_replace(
56
56
  ... ]
57
57
  >>> result = search_replace("src/main.py", operations)
58
58
  """
59
- # Resolve path
60
- if workspace and not os.path.isabs(path):
61
- abs_path = os.path.abspath(os.path.join(workspace, path))
59
+ # Resolve path — default workspace is cwd so relative paths cannot escape
60
+ effective_workspace = workspace or os.getcwd()
61
+ if not os.path.isabs(path):
62
+ abs_path = os.path.abspath(os.path.join(effective_workspace, path))
62
63
  else:
63
64
  abs_path = os.path.abspath(path)
64
65
 
@@ -73,16 +74,15 @@ def search_replace(
73
74
  'total_replacements': 0,
74
75
  }
75
76
 
76
- # Security check
77
- if workspace:
78
- if not is_path_within_directory(abs_path, workspace):
79
- return {
80
- 'success': False,
81
- 'error': f"Path '{path}' is outside the workspace",
82
- 'path': path,
83
- 'operations_applied': 0,
84
- 'total_replacements': 0,
85
- }
77
+ # Security check — confinement always enforced against the workspace
78
+ if not is_path_within_directory(abs_path, effective_workspace):
79
+ return {
80
+ 'success': False,
81
+ 'error': f"Path '{path}' is outside the workspace",
82
+ 'path': path,
83
+ 'operations_applied': 0,
84
+ 'total_replacements': 0,
85
+ }
86
86
 
87
87
  # Check if file exists
88
88
  if not file_exists(abs_path):
@@ -177,9 +177,10 @@ def append_to_file(
177
177
  Returns:
178
178
  Dictionary with success status and details
179
179
  """
180
- # Resolve path
181
- if workspace and not os.path.isabs(path):
182
- abs_path = os.path.abspath(os.path.join(workspace, path))
180
+ # Resolve path — default workspace is cwd so relative paths cannot escape
181
+ effective_workspace = workspace or os.getcwd()
182
+ if not os.path.isabs(path):
183
+ abs_path = os.path.abspath(os.path.join(effective_workspace, path))
183
184
  else:
184
185
  abs_path = os.path.abspath(path)
185
186
 
@@ -192,14 +193,13 @@ def append_to_file(
192
193
  'path': path,
193
194
  }
194
195
 
195
- # Security check
196
- if workspace:
197
- if not is_path_within_directory(abs_path, workspace):
198
- return {
199
- 'success': False,
200
- 'error': f"Path '{path}' is outside the workspace",
201
- 'path': path,
202
- }
196
+ # Security check — confinement always enforced against the workspace
197
+ if not is_path_within_directory(abs_path, effective_workspace):
198
+ return {
199
+ 'success': False,
200
+ 'error': f"Path '{path}' is outside the workspace",
201
+ 'path': path,
202
+ }
203
203
 
204
204
  file_existed = file_exists(abs_path)
205
205