PraisonAI 4.6.164__tar.gz → 4.7.0__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 (591) hide show
  1. {praisonai-4.6.164 → praisonai-4.7.0}/PKG-INFO +57 -23
  2. {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/PKG-INFO +57 -23
  3. {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/SOURCES.txt +2 -0
  4. praisonai-4.7.0/PraisonAI.egg-info/entry_points.txt +18 -0
  5. {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/requires.txt +16 -9
  6. {praisonai-4.6.164 → praisonai-4.7.0}/README.md +42 -13
  7. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/__init__.py +11 -2
  8. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/__main__.py +197 -13
  9. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agents_generator.py +23 -0
  10. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/managed.py +24 -3
  11. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/recipe.py +66 -0
  12. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/schedule.py +428 -17
  13. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/endpoints.py +21 -4
  14. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/workflow.py +135 -7
  15. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/argparse_builder.py +13 -2
  16. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/workflow_commands.py +60 -1
  17. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/agents.schema.json +92 -10
  18. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/schema.py +140 -27
  19. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/db/__init__.py +7 -5
  20. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/db/adapter.py +6 -3
  21. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/__init__.py +15 -0
  22. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/registry.py +28 -7
  23. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/praisonai_adapter.py +25 -11
  24. praisonai-4.7.0/praisonai/integration/bridges/schedules_runner.py +93 -0
  25. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/__init__.py +15 -0
  26. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_unified_registry.py +6 -3
  27. praisonai-4.7.0/praisonai/integrations/backend_registry.py +87 -0
  28. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/base.py +7 -0
  29. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/claude_code.py +4 -1
  30. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/codex_cli.py +4 -1
  31. praisonai-4.7.0/praisonai/integrations/compute/_sync_base.py +18 -0
  32. praisonai-4.7.0/praisonai/integrations/compute/daytona.py +18 -0
  33. praisonai-4.7.0/praisonai/integrations/compute/docker.py +18 -0
  34. praisonai-4.7.0/praisonai/integrations/compute/e2b.py +18 -0
  35. praisonai-4.7.0/praisonai/integrations/compute/flyio.py +18 -0
  36. praisonai-4.7.0/praisonai/integrations/compute/local.py +18 -0
  37. praisonai-4.7.0/praisonai/integrations/compute/modal_compute.py +18 -0
  38. praisonai-4.7.0/praisonai/integrations/compute/tenki.py +18 -0
  39. praisonai-4.7.0/praisonai/integrations/compute_managed_agent.py +336 -0
  40. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/cursor_cli.py +4 -1
  41. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/db_session_adapter.py +67 -34
  42. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/gemini_cli.py +4 -1
  43. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/local_agent.py +27 -2
  44. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/managed_agents.py +1 -1
  45. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/managed_local.py +27 -34
  46. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/registry.py +68 -3
  47. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/sandboxed_agent.py +3 -3
  48. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/router.py +2 -0
  49. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_mysql.py +36 -21
  50. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/mongodb.py +9 -3
  51. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/redis.py +8 -15
  52. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/upstash.py +17 -4
  53. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/core.py +71 -0
  54. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/condition_gate.py +2 -2
  55. praisonai-4.7.0/praisonai/scheduler/suggestion_engine.py +263 -0
  56. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/audit.py +46 -1
  57. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/redis_adapter.py +20 -13
  58. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/_external_agents.py +32 -20
  59. praisonai-4.7.0/praisonai/version.py +1 -0
  60. {praisonai-4.6.164 → praisonai-4.7.0}/pyproject.toml +33 -11
  61. praisonai-4.6.164/PraisonAI.egg-info/entry_points.txt +0 -9
  62. praisonai-4.6.164/praisonai/integration/bridges/schedules_runner.py +0 -30
  63. praisonai-4.6.164/praisonai/integrations/backend_registry.py +0 -45
  64. praisonai-4.6.164/praisonai/integrations/compute/daytona.py +0 -263
  65. praisonai-4.6.164/praisonai/integrations/compute/docker.py +0 -669
  66. praisonai-4.6.164/praisonai/integrations/compute/e2b.py +0 -250
  67. praisonai-4.6.164/praisonai/integrations/compute/flyio.py +0 -278
  68. praisonai-4.6.164/praisonai/integrations/compute/local.py +0 -192
  69. praisonai-4.6.164/praisonai/integrations/compute/modal_compute.py +0 -279
  70. praisonai-4.6.164/praisonai/integrations/compute/tenki.py +0 -379
  71. praisonai-4.6.164/praisonai/scheduler/suggestion_engine.py +0 -150
  72. praisonai-4.6.164/praisonai/version.py +0 -1
  73. {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/dependency_links.txt +0 -0
  74. {praisonai-4.6.164 → praisonai-4.7.0}/PraisonAI.egg-info/top_level.txt +0 -0
  75. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_api_auth.py +0 -0
  76. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_approval_spec.py +0 -0
  77. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_async_bridge.py +0 -0
  78. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_bootstrap.py +0 -0
  79. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/__init__.py +0 -0
  80. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/api_md.py +0 -0
  81. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/__init__.py +0 -0
  82. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/docs_extractor.py +0 -0
  83. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/docs_generator.py +0 -0
  84. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/generator.py +0 -0
  85. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  86. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/python_extractor.py +0 -0
  87. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  88. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/rust_extractor.py +0 -0
  89. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  90. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  91. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  92. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_entrypoint.py +0 -0
  93. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_framework_availability.py +0 -0
  94. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_lazy_cache.py +0 -0
  95. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_logging.py +0 -0
  96. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_registry.py +0 -0
  97. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/_safe_loader.py +0 -0
  98. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/__init__.py +0 -0
  99. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/config.py +0 -0
  100. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/safe_edit.py +0 -0
  101. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/server.py +0 -0
  102. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/acp/session.py +0 -0
  103. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/__init__.py +0 -0
  104. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/readers.py +0 -0
  105. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/rerankers.py +0 -0
  106. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/retrievers.py +0 -0
  107. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/adapters/vector_stores.py +0 -0
  108. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agent.py +0 -0
  109. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/agent_scheduler.py +0 -0
  110. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/api/agent_invoke.py +0 -0
  111. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/api/call.py +0 -0
  112. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/app/__init__.py +0 -0
  113. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/app/agentos.py +0 -0
  114. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/async_agent_scheduler.py +0 -0
  115. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/audit/__init__.py +0 -0
  116. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/audit/agent_centric.py +0 -0
  117. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/auto.py +0 -0
  118. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/bots/__init__.py +0 -0
  119. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/browser/__init__.py +0 -0
  120. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/__init__.py +0 -0
  121. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/a2a.py +0 -0
  122. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/assistants.py +0 -0
  123. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/audio.py +0 -0
  124. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/batches.py +0 -0
  125. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/completions.py +0 -0
  126. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/container_files.py +0 -0
  127. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/containers.py +0 -0
  128. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/embeddings.py +0 -0
  129. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/files.py +0 -0
  130. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/fine_tuning.py +0 -0
  131. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/guardrails.py +0 -0
  132. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/images.py +0 -0
  133. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/mcp.py +0 -0
  134. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/messages.py +0 -0
  135. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/moderations.py +0 -0
  136. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/ocr.py +0 -0
  137. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/passthrough.py +0 -0
  138. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/rag.py +0 -0
  139. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/realtime.py +0 -0
  140. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/rerank.py +0 -0
  141. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/responses.py +0 -0
  142. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/search.py +0 -0
  143. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/skills.py +0 -0
  144. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/vector_store_files.py +0 -0
  145. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/vector_stores.py +0 -0
  146. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/capabilities/videos.py +0 -0
  147. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/claw/__init__.py +0 -0
  148. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/__init__.py +0 -0
  149. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_paths.py +0 -0
  150. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_shim.py +0 -0
  151. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/_warnings.py +0 -0
  152. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/app.py +0 -0
  153. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/approval_backend.py +0 -0
  154. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/branding.py +0 -0
  155. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/__init__.py +0 -0
  156. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/_profiling.py +0 -0
  157. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/acp.py +0 -0
  158. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/agent.py +0 -0
  159. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/agents.py +0 -0
  160. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/app.py +0 -0
  161. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/attach.py +0 -0
  162. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/audit.py +0 -0
  163. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/auth.py +0 -0
  164. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/batch.py +0 -0
  165. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/benchmark.py +0 -0
  166. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/bot.py +0 -0
  167. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/browser.py +0 -0
  168. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/call.py +0 -0
  169. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/chat.py +0 -0
  170. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/checkpoint.py +0 -0
  171. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/claw.py +0 -0
  172. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/code.py +0 -0
  173. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/command.py +0 -0
  174. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/commit.py +0 -0
  175. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/completion.py +0 -0
  176. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/config.py +0 -0
  177. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/context.py +0 -0
  178. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/daemon.py +0 -0
  179. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/dashboard.py +0 -0
  180. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/debug.py +0 -0
  181. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/deploy.py +0 -0
  182. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/diag.py +0 -0
  183. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/docs.py +0 -0
  184. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/doctor.py +0 -0
  185. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/endpoints.py +0 -0
  186. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/environment.py +0 -0
  187. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/eval.py +0 -0
  188. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/examples.py +0 -0
  189. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/flow.py +0 -0
  190. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/gateway.py +0 -0
  191. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/github.py +0 -0
  192. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/hooks.py +0 -0
  193. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/identity.py +0 -0
  194. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/init.py +0 -0
  195. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/kanban.py +0 -0
  196. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/knowledge.py +0 -0
  197. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/langextract.py +0 -0
  198. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/langfuse.py +0 -0
  199. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/loop.py +0 -0
  200. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/lsp.py +0 -0
  201. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/mcp.py +0 -0
  202. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/memory.py +0 -0
  203. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/mint_link.py +0 -0
  204. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/models.py +0 -0
  205. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/n8n.py +0 -0
  206. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/obs.py +0 -0
  207. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/onboard.py +0 -0
  208. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/package.py +0 -0
  209. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/pairing.py +0 -0
  210. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/paths.py +0 -0
  211. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/permissions.py +0 -0
  212. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/plugins.py +0 -0
  213. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/port.py +0 -0
  214. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/profile.py +0 -0
  215. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/publish.py +0 -0
  216. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/rag.py +0 -0
  217. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/realtime.py +0 -0
  218. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/registry.py +0 -0
  219. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/replay.py +0 -0
  220. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/research.py +0 -0
  221. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/retrieval.py +0 -0
  222. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/rules.py +0 -0
  223. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/run.py +0 -0
  224. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/sandbox.py +0 -0
  225. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/serve.py +0 -0
  226. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/session.py +0 -0
  227. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/setup.py +0 -0
  228. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/skills.py +0 -0
  229. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/standardise.py +0 -0
  230. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/templates.py +0 -0
  231. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/test.py +0 -0
  232. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/todo.py +0 -0
  233. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/tools.py +0 -0
  234. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/traces.py +0 -0
  235. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/tracker.py +0 -0
  236. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/train.py +0 -0
  237. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/ui.py +0 -0
  238. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/up.py +0 -0
  239. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/validate.py +0 -0
  240. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/version.py +0 -0
  241. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/commands/workflow.py +0 -0
  242. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/config_loader.py +0 -0
  243. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/configuration/__init__.py +0 -0
  244. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/configuration/config.schema.json +0 -0
  245. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/execution/__init__.py +0 -0
  246. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/fallback_schema.py +0 -0
  247. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/__init__.py +0 -0
  248. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/acp.py +0 -0
  249. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/agent_scheduler.py +0 -0
  250. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/agent_tools.py +0 -0
  251. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/approval.py +0 -0
  252. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/background.py +0 -0
  253. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/bots_cli.py +0 -0
  254. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/deploy.py +0 -0
  255. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/eval.py +0 -0
  256. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/gateway.py +0 -0
  257. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/ollama.py +0 -0
  258. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/onboard.py +0 -0
  259. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/persistence.py +0 -0
  260. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/recipe.py +0 -0
  261. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/recipe_optimizer.py +0 -0
  262. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/registry.py +0 -0
  263. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/sandbox_cli.py +0 -0
  264. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/serve.py +0 -0
  265. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/templates.py +0 -0
  266. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tools.py +0 -0
  267. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tui/__init__.py +0 -0
  268. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/features/tui/app.py +0 -0
  269. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/__init__.py +0 -0
  270. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/async_tui.py +0 -0
  271. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/config.py +0 -0
  272. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/core.py +0 -0
  273. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/interactive/events.py +0 -0
  274. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/langfuse_client.py +0 -0
  275. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/__init__.py +0 -0
  276. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/direct_prompt.py +0 -0
  277. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
  278. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
  279. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/framework_run.py +0 -0
  280. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
  281. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/interactive_legacy.py +0 -0
  282. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
  283. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/main.py +0 -0
  284. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/output/__init__.py +0 -0
  285. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/schedule_cli.py +0 -0
  286. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/schema_provider.py +0 -0
  287. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/session/__init__.py +0 -0
  288. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/state/__init__.py +0 -0
  289. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/ui/__init__.py +0 -0
  290. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/unified_schema.py +0 -0
  291. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli/utils/__init__.py +0 -0
  292. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/cli_backends/__init__.py +0 -0
  293. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/__init__.py +0 -0
  294. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/agent_tools.py +0 -0
  295. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/diff/__init__.py +0 -0
  296. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/diff/diff_strategy.py +0 -0
  297. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/__init__.py +0 -0
  298. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/apply_diff.py +0 -0
  299. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/execute_command.py +0 -0
  300. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/list_files.py +0 -0
  301. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/read_file.py +0 -0
  302. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/search_replace.py +0 -0
  303. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/tools/write_file.py +0 -0
  304. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/__init__.py +0 -0
  305. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/file_utils.py +0 -0
  306. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/ignore_utils.py +0 -0
  307. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/code/utils/text_utils.py +0 -0
  308. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/__init__.py +0 -0
  309. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/config/validator.py +0 -0
  310. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/__init__.py +0 -0
  311. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/_storage_path.py +0 -0
  312. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/artifact_store.py +0 -0
  313. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/config.py +0 -0
  314. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/history_store.py +0 -0
  315. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/queue.py +0 -0
  316. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/setup.py +0 -0
  317. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/context/terminal_logger.py +0 -0
  318. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/daemon/__init__.py +0 -0
  319. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/deploy/__init__.py +0 -0
  320. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/a2u_server.py +0 -0
  321. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/discovery.py +0 -0
  322. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/__init__.py +0 -0
  323. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/a2a.py +0 -0
  324. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/a2u.py +0 -0
  325. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/agents_api.py +0 -0
  326. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/base.py +0 -0
  327. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/mcp.py +0 -0
  328. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/openai_compat.py +0 -0
  329. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/recipe.py +0 -0
  330. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  331. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/endpoints/server.py +0 -0
  332. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/__init__.py +0 -0
  333. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/client.py +0 -0
  334. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  335. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  336. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/components/__init__.py +0 -0
  337. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/converter.py +0 -0
  338. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/flow/helpers.py +0 -0
  339. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/__init__.py +0 -0
  340. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/_config_builder.py +0 -0
  341. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  342. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/base.py +0 -0
  343. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  344. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/registry.py +0 -0
  345. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/validators.py +0 -0
  346. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/framework_adapters/workflow_framework.py +0 -0
  347. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/gateway/__init__.py +0 -0
  348. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inbuilt_tools/__init__.py +0 -0
  349. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  350. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/__init__.py +0 -0
  351. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/config.py +0 -0
  352. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/inc/models.py +0 -0
  353. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/__init__.py +0 -0
  354. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/__init__.py +0 -0
  355. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  356. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/hooks_query.py +0 -0
  357. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  358. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/usage_bridge.py +0 -0
  359. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/bridges/workflows_service.py +0 -0
  360. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/context_files.py +0 -0
  361. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/gateway_host.py +0 -0
  362. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/host_app.py +0 -0
  363. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/__init__.py +0 -0
  364. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/bot_health.py +0 -0
  365. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integration/pages/workflow_runs.py +0 -0
  366. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_cli_loaders.py +0 -0
  367. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_session_info.py +0 -0
  368. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/_tool_aliases.py +0 -0
  369. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/compute/__init__.py +0 -0
  370. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/integrations/hosted_agent.py +0 -0
  371. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/__init__.py +0 -0
  372. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/executor.py +0 -0
  373. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/models.py +0 -0
  374. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/path_validation.py +0 -0
  375. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/server.py +0 -0
  376. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/jobs/store.py +0 -0
  377. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/kanban/__init__.py +0 -0
  378. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/__init__.py +0 -0
  379. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/catalogue.py +0 -0
  380. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/config.py +0 -0
  381. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/credentials.py +0 -0
  382. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/env.py +0 -0
  383. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/gateways.py +0 -0
  384. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/llm/registry.py +0 -0
  385. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/mcp_server/__init__.py +0 -0
  386. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/__init__.py +0 -0
  387. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/client.py +0 -0
  388. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/converter.py +0 -0
  389. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/preview.py +0 -0
  390. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/n8n/reverse_converter.py +0 -0
  391. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/__init__.py +0 -0
  392. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/hooks.py +0 -0
  393. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/langextract.py +0 -0
  394. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/observability/langfuse.py +0 -0
  395. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/__init__.py +0 -0
  396. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/_valkey_client.py +0 -0
  397. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/config.py +0 -0
  398. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/__init__.py +0 -0
  399. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_ops.py +0 -0
  400. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_sql_base.py +0 -0
  401. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  402. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_postgres.py +0 -0
  403. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  404. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/base.py +0 -0
  405. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/json_store.py +0 -0
  406. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/mysql.py +0 -0
  407. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/postgres.py +0 -0
  408. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/singlestore.py +0 -0
  409. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/sqlite.py +0 -0
  410. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/supabase.py +0 -0
  411. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/surrealdb.py +0 -0
  412. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  413. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/conversation/turso.py +0 -0
  414. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/factory.py +0 -0
  415. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/hooks/__init__.py +0 -0
  416. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  417. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/__init__.py +0 -0
  418. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/base.py +0 -0
  419. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/cassandra.py +0 -0
  420. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/chroma.py +0 -0
  421. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  422. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  423. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/couchbase.py +0 -0
  424. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/lancedb.py +0 -0
  425. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  426. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  427. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  428. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/milvus.py +0 -0
  429. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  430. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/pgvector.py +0 -0
  431. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/pinecone.py +0 -0
  432. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/qdrant.py +0 -0
  433. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  434. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  435. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  436. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  437. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  438. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/knowledge/weaviate.py +0 -0
  439. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/migrations/__init__.py +0 -0
  440. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/migrations/manager.py +0 -0
  441. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/orchestrator.py +0 -0
  442. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/registry.py +0 -0
  443. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/__init__.py +0 -0
  444. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/async_mongodb.py +0 -0
  445. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/base.py +0 -0
  446. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/dynamodb.py +0 -0
  447. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/firestore.py +0 -0
  448. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/gcs.py +0 -0
  449. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/memory.py +0 -0
  450. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/state/valkey.py +0 -0
  451. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/__init__.py +0 -0
  452. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_all_backends.py +0 -0
  453. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
  454. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  455. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/profiler.py +0 -0
  456. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/__init__.py +0 -0
  457. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/client.py +0 -0
  458. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/push/transports.py +0 -0
  459. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/__init__.py +0 -0
  460. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/bridge.py +0 -0
  461. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/exceptions.py +0 -0
  462. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/history.py +0 -0
  463. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/models.py +0 -0
  464. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/operations.py +0 -0
  465. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/policy.py +0 -0
  466. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/registry.py +0 -0
  467. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/runtime.py +0 -0
  468. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/security.py +0 -0
  469. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/serve.py +0 -0
  470. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/recipe/server.py +0 -0
  471. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/__init__.py +0 -0
  472. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/analyzer.py +0 -0
  473. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/applier.py +0 -0
  474. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/judge.py +0 -0
  475. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/plan.py +0 -0
  476. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/player.py +0 -0
  477. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/reader.py +0 -0
  478. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/storage.py +0 -0
  479. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/replay/writer.py +0 -0
  480. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/runtime/__init__.py +0 -0
  481. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/runtime/__main__.py +0 -0
  482. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/sandbox/__init__.py +0 -0
  483. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/sandbox/_registry.py +0 -0
  484. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/__init__.py +0 -0
  485. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_base_scheduler.py +0 -0
  486. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_delivery.py +0 -0
  487. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/_dispatch.py +0 -0
  488. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/agent_scheduler.py +0 -0
  489. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  490. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/base.py +0 -0
  491. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  492. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/daemon_manager.py +0 -0
  493. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/deployment.py +0 -0
  494. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/executor.py +0 -0
  495. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/run_policy.py +0 -0
  496. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/shared.py +0 -0
  497. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/state_manager.py +0 -0
  498. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/scheduler/yaml_loader.py +0 -0
  499. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/__init__.py +0 -0
  500. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/injection.py +0 -0
  501. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/security/protected.py +0 -0
  502. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/__init__.py +0 -0
  503. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/build.py +0 -0
  504. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/post_install.py +0 -0
  505. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup/setup_conda_env.py +0 -0
  506. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/setup.py +0 -0
  507. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/__init__.py +0 -0
  508. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/ai_generator.py +0 -0
  509. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/config.py +0 -0
  510. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/dedupe.py +0 -0
  511. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/discovery.py +0 -0
  512. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/drift.py +0 -0
  513. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/engine.py +0 -0
  514. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/enhanced_templates.py +0 -0
  515. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/example_verifier.py +0 -0
  516. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/manifest.py +0 -0
  517. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/models.py +0 -0
  518. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/reports.py +0 -0
  519. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/templates.py +0 -0
  520. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/undo_redo.py +0 -0
  521. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/standardise/validator.py +0 -0
  522. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/__init__.py +0 -0
  523. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/dynamodb_adapter.py +0 -0
  524. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/mongodb_adapter.py +0 -0
  525. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/postgresql_adapter.py +0 -0
  526. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/storage/valkey_adapter.py +0 -0
  527. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/__init__.py +0 -0
  528. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/batch_source.py +0 -0
  529. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/cli_docs_source.py +0 -0
  530. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/discovery.py +0 -0
  531. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/docs_source.py +0 -0
  532. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/examples_source.py +0 -0
  533. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/executor.py +0 -0
  534. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/models.py +0 -0
  535. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/report_viewer.py +0 -0
  536. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/reporter.py +0 -0
  537. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/suite_runner/runner.py +0 -0
  538. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/__init__.py +0 -0
  539. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/_tool_sources.py +0 -0
  540. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/cache.py +0 -0
  541. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/dependency_checker.py +0 -0
  542. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/discovery.py +0 -0
  543. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/loader.py +0 -0
  544. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/registry.py +0 -0
  545. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/resolver.py +0 -0
  546. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/security.py +0 -0
  547. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/tool_override.py +0 -0
  548. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/templates/tools_doctor.py +0 -0
  549. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tool_registry.py +0 -0
  550. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tool_resolver.py +0 -0
  551. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/__init__.py +0 -0
  552. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/audio.py +0 -0
  553. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/glob_tool.py +0 -0
  554. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/grep_tool.py +0 -0
  555. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/kanban_tools.py +0 -0
  556. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/multiedit.py +0 -0
  557. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/tools/skill_manage.py +0 -0
  558. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train/__init__.py +0 -0
  559. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train.py +0 -0
  560. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/train_vision.py +0 -0
  561. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/_aiui_datastore.py +0 -0
  562. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/context.py +0 -0
  563. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui/database_config.py +0 -0
  564. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_agents/__init__.py +0 -0
  565. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_agents/default_app.py +0 -0
  566. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_bot/__init__.py +0 -0
  567. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_bot/default_app.py +0 -0
  568. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_chat/__init__.py +0 -0
  569. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_chat/default_app.py +0 -0
  570. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_dashboard/__init__.py +0 -0
  571. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_dashboard/default_app.py +0 -0
  572. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_realtime/__init__.py +0 -0
  573. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/ui_realtime/default_app.py +0 -0
  574. {praisonai-4.6.164 → praisonai-4.7.0}/praisonai/upload_vision.py +0 -0
  575. {praisonai-4.6.164 → praisonai-4.7.0}/setup.cfg +0 -0
  576. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test.py +0 -0
  577. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_agents_playbook.py +0 -0
  578. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_approval_system.py +0 -0
  579. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_basic.py +0 -0
  580. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_cli_features.py +0 -0
  581. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_custom_tools_fix.py +0 -0
  582. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_double_api_fix.py +0 -0
  583. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_agent_invoke.py +0 -0
  584. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_cli_feature.py +0 -0
  585. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_n8n_integration.py +0 -0
  586. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_phase2_refactor.py +0 -0
  587. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_recipe.py +0 -0
  588. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_registry.py +0 -0
  589. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_runner.py +0 -0
  590. {praisonai-4.6.164 → praisonai-4.7.0}/tests/test_sandboxed_agent_compatibility.py +0 -0
  591. {praisonai-4.6.164 → praisonai-4.7.0}/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.164
3
+ Version: 4.7.0
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,14 +11,14 @@ 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.168
15
- Requires-Dist: praisonai-code>=0.0.64
16
- Requires-Dist: praisonai-bot>=0.0.49
17
- Requires-Dist: praisonai-train>=0.0.19
18
- Requires-Dist: praisonai-browser>=0.0.15
19
- Requires-Dist: praisonai-mcp>=0.0.15
20
- Requires-Dist: praisonai-sandbox>=0.0.13
21
- Requires-Dist: praisonai-deploy>=0.0.8
14
+ Requires-Dist: praisonaiagents>=1.7.0
15
+ Requires-Dist: praisonai-code>=0.1.0
16
+ Requires-Dist: praisonai-bot>=0.1.0
17
+ Requires-Dist: praisonai-train>=0.1.0
18
+ Requires-Dist: praisonai-browser>=0.1.0
19
+ Requires-Dist: praisonai-mcp>=0.1.0
20
+ Requires-Dist: praisonai-sandbox>=0.1.0
21
+ Requires-Dist: praisonai-deploy>=0.1.0
22
22
  Requires-Dist: python-dotenv>=0.19.0
23
23
  Requires-Dist: litellm<2,>=1.83.14
24
24
  Requires-Dist: PyYAML>=6.0
@@ -69,9 +69,14 @@ Provides-Extra: ssh
69
69
  Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
70
70
  Provides-Extra: modal
71
71
  Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
72
+ Provides-Extra: e2b
73
+ Requires-Dist: praisonai-sandbox[e2b]; extra == "e2b"
74
+ Provides-Extra: docker
75
+ Requires-Dist: praisonai-sandbox[docker]; extra == "docker"
72
76
  Provides-Extra: daytona
77
+ Requires-Dist: praisonai-sandbox[daytona]; extra == "daytona"
73
78
  Provides-Extra: tenki
74
- Requires-Dist: tenki>=0.5.4; extra == "tenki"
79
+ Requires-Dist: praisonai-sandbox[tenki]; extra == "tenki"
75
80
  Provides-Extra: realtime
76
81
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
77
82
  Requires-Dist: tavily-python==0.5.0; extra == "realtime"
@@ -337,7 +342,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
337
342
  | **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
338
343
  | **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
339
344
  | **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
340
- | **⬡ Managed** | *Where does it actually run?* | `run_on="docker"` — one shared remote sandbox, or a fully hosted loop |
345
+ | **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
341
346
 
342
347
  ### Layer 1 · Prompt — *Did I say it clearly?*
343
348
 
@@ -442,7 +447,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
442
447
  pip install praisonai
443
448
  ```
444
449
 
445
- The simplest way in is `run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2:
450
+ The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
446
451
 
447
452
  ```python
448
453
  from praisonaiagents import Agent, AgentFlow
@@ -450,7 +455,7 @@ from praisonaiagents import Agent, AgentFlow
450
455
  writer = Agent(name="Writer", instructions="You write files.")
451
456
  reader = Agent(name="Reader", instructions="You read files.")
452
457
 
453
- flow = AgentFlow(run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
458
+ flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
454
459
  flow.run("Write 'hello' to /workspace/note.txt, then read it back")
455
460
  ```
456
461
 
@@ -458,7 +463,7 @@ Same thing with no Python at all:
458
463
 
459
464
  ```yaml
460
465
  name: remote-demo
461
- run_on: docker # every step shares one sandbox
466
+ tools_run_on: docker # every step shares one sandbox
462
467
  agents:
463
468
  writer: {role: Writer, goal: Write files}
464
469
  reader: {role: Reader, goal: Read files}
@@ -469,22 +474,51 @@ steps:
469
474
  action: "Read /workspace/note.txt"
470
475
  ```
471
476
 
472
- For a single agent, pick the axis you need — remote **tools** or a remote **loop**:
477
+ For a single agent, two words cover it — and they answer different questions:
473
478
 
474
479
  ```python
475
- from praisonai import Agent, LocalAgent, LocalAgentConfig, HostedAgent
480
+ from praisonaiagents import Agent
476
481
 
477
- # A. Tools run in a remote sandbox; the agent loop stays local
478
- agent = Agent(name="builder", backend=LocalAgent(
479
- compute="e2b", # or modal | daytona | flyio | docker | tenki
480
- config=LocalAgentConfig(model="gpt-4o-mini", name="RemoteTools"),
481
- ))
482
+ # A. Only the TOOLS move. Thinking stays on your machine.
483
+ agent = Agent(name="builder", instructions="You build things.",
484
+ tools_run_on="docker") # docker | e2b | modal | daytona | flyio
485
+ # tenki | sandlock | ssh | novita | subprocess
482
486
 
483
- # B. The entire agent loop runs in the cloud (needs ANTHROPIC_API_KEY)
484
- agent = Agent(name="teacher", backend=HostedAgent(provider="anthropic"))
487
+ # B. The WHOLE agent moves — model calls, loop and tools
488
+ agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
489
+ agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
485
490
  agent.start("Write a Python script that prints the first 10 primes, then run it")
486
491
  ```
487
492
 
493
+ Ask any object where it runs, and it will tell you:
494
+
495
+ ```python
496
+ >>> Agent(name="builder", instructions="x", tools_run_on="docker")
497
+ Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
498
+
499
+ >>> agent.where_does_it_run()
500
+ Thinking (the AI model calls) happens on this machine.
501
+ Tools run on a Docker container.
502
+ Your own tools (check_db) still run on this machine -- only shell, file and
503
+ code tools move. They read and write this machine's files.
504
+ ```
505
+
506
+ Naming a place that cannot do the job is a typo, not a preference, so it says so:
507
+
508
+ ```python
509
+ >>> Agent(name="x", instructions="i", run_on="e2b")
510
+ TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
511
+ -- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
512
+ commands but cannot host an agent loop.
513
+ To run only the tools there: Agent(tools_run_on='e2b')
514
+ ```
515
+
516
+ To run one block of code somewhere else, name the place on that call:
517
+
518
+ ```python
519
+ agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
520
+ ```
521
+
488
522
  See what is running and reclaim strays:
489
523
 
490
524
  ```bash
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.164
3
+ Version: 4.7.0
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,14 +11,14 @@ 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.168
15
- Requires-Dist: praisonai-code>=0.0.64
16
- Requires-Dist: praisonai-bot>=0.0.49
17
- Requires-Dist: praisonai-train>=0.0.19
18
- Requires-Dist: praisonai-browser>=0.0.15
19
- Requires-Dist: praisonai-mcp>=0.0.15
20
- Requires-Dist: praisonai-sandbox>=0.0.13
21
- Requires-Dist: praisonai-deploy>=0.0.8
14
+ Requires-Dist: praisonaiagents>=1.7.0
15
+ Requires-Dist: praisonai-code>=0.1.0
16
+ Requires-Dist: praisonai-bot>=0.1.0
17
+ Requires-Dist: praisonai-train>=0.1.0
18
+ Requires-Dist: praisonai-browser>=0.1.0
19
+ Requires-Dist: praisonai-mcp>=0.1.0
20
+ Requires-Dist: praisonai-sandbox>=0.1.0
21
+ Requires-Dist: praisonai-deploy>=0.1.0
22
22
  Requires-Dist: python-dotenv>=0.19.0
23
23
  Requires-Dist: litellm<2,>=1.83.14
24
24
  Requires-Dist: PyYAML>=6.0
@@ -69,9 +69,14 @@ Provides-Extra: ssh
69
69
  Requires-Dist: praisonai-sandbox[ssh]; extra == "ssh"
70
70
  Provides-Extra: modal
71
71
  Requires-Dist: praisonai-sandbox[modal]; extra == "modal"
72
+ Provides-Extra: e2b
73
+ Requires-Dist: praisonai-sandbox[e2b]; extra == "e2b"
74
+ Provides-Extra: docker
75
+ Requires-Dist: praisonai-sandbox[docker]; extra == "docker"
72
76
  Provides-Extra: daytona
77
+ Requires-Dist: praisonai-sandbox[daytona]; extra == "daytona"
73
78
  Provides-Extra: tenki
74
- Requires-Dist: tenki>=0.5.4; extra == "tenki"
79
+ Requires-Dist: praisonai-sandbox[tenki]; extra == "tenki"
75
80
  Provides-Extra: realtime
76
81
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "realtime"
77
82
  Requires-Dist: tavily-python==0.5.0; extra == "realtime"
@@ -337,7 +342,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
337
342
  | **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
338
343
  | **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
339
344
  | **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
340
- | **⬡ Managed** | *Where does it actually run?* | `run_on="docker"` — one shared remote sandbox, or a fully hosted loop |
345
+ | **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
341
346
 
342
347
  ### Layer 1 · Prompt — *Did I say it clearly?*
343
348
 
@@ -442,7 +447,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
442
447
  pip install praisonai
443
448
  ```
444
449
 
445
- The simplest way in is `run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2:
450
+ The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
446
451
 
447
452
  ```python
448
453
  from praisonaiagents import Agent, AgentFlow
@@ -450,7 +455,7 @@ from praisonaiagents import Agent, AgentFlow
450
455
  writer = Agent(name="Writer", instructions="You write files.")
451
456
  reader = Agent(name="Reader", instructions="You read files.")
452
457
 
453
- flow = AgentFlow(run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
458
+ flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
454
459
  flow.run("Write 'hello' to /workspace/note.txt, then read it back")
455
460
  ```
456
461
 
@@ -458,7 +463,7 @@ Same thing with no Python at all:
458
463
 
459
464
  ```yaml
460
465
  name: remote-demo
461
- run_on: docker # every step shares one sandbox
466
+ tools_run_on: docker # every step shares one sandbox
462
467
  agents:
463
468
  writer: {role: Writer, goal: Write files}
464
469
  reader: {role: Reader, goal: Read files}
@@ -469,22 +474,51 @@ steps:
469
474
  action: "Read /workspace/note.txt"
470
475
  ```
471
476
 
472
- For a single agent, pick the axis you need — remote **tools** or a remote **loop**:
477
+ For a single agent, two words cover it — and they answer different questions:
473
478
 
474
479
  ```python
475
- from praisonai import Agent, LocalAgent, LocalAgentConfig, HostedAgent
480
+ from praisonaiagents import Agent
476
481
 
477
- # A. Tools run in a remote sandbox; the agent loop stays local
478
- agent = Agent(name="builder", backend=LocalAgent(
479
- compute="e2b", # or modal | daytona | flyio | docker | tenki
480
- config=LocalAgentConfig(model="gpt-4o-mini", name="RemoteTools"),
481
- ))
482
+ # A. Only the TOOLS move. Thinking stays on your machine.
483
+ agent = Agent(name="builder", instructions="You build things.",
484
+ tools_run_on="docker") # docker | e2b | modal | daytona | flyio
485
+ # tenki | sandlock | ssh | novita | subprocess
482
486
 
483
- # B. The entire agent loop runs in the cloud (needs ANTHROPIC_API_KEY)
484
- agent = Agent(name="teacher", backend=HostedAgent(provider="anthropic"))
487
+ # B. The WHOLE agent moves — model calls, loop and tools
488
+ agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
489
+ agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
485
490
  agent.start("Write a Python script that prints the first 10 primes, then run it")
486
491
  ```
487
492
 
493
+ Ask any object where it runs, and it will tell you:
494
+
495
+ ```python
496
+ >>> Agent(name="builder", instructions="x", tools_run_on="docker")
497
+ Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
498
+
499
+ >>> agent.where_does_it_run()
500
+ Thinking (the AI model calls) happens on this machine.
501
+ Tools run on a Docker container.
502
+ Your own tools (check_db) still run on this machine -- only shell, file and
503
+ code tools move. They read and write this machine's files.
504
+ ```
505
+
506
+ Naming a place that cannot do the job is a typo, not a preference, so it says so:
507
+
508
+ ```python
509
+ >>> Agent(name="x", instructions="i", run_on="e2b")
510
+ TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
511
+ -- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
512
+ commands but cannot host an agent loop.
513
+ To run only the tools there: Agent(tools_run_on='e2b')
514
+ ```
515
+
516
+ To run one block of code somewhere else, name the place on that call:
517
+
518
+ ```python
519
+ agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
520
+ ```
521
+
488
522
  See what is running and reclaim strays:
489
523
 
490
524
  ```bash
@@ -332,6 +332,7 @@ praisonai/integrations/backend_registry.py
332
332
  praisonai/integrations/base.py
333
333
  praisonai/integrations/claude_code.py
334
334
  praisonai/integrations/codex_cli.py
335
+ praisonai/integrations/compute_managed_agent.py
335
336
  praisonai/integrations/cursor_cli.py
336
337
  praisonai/integrations/db_session_adapter.py
337
338
  praisonai/integrations/gemini_cli.py
@@ -342,6 +343,7 @@ praisonai/integrations/managed_local.py
342
343
  praisonai/integrations/registry.py
343
344
  praisonai/integrations/sandboxed_agent.py
344
345
  praisonai/integrations/compute/__init__.py
346
+ praisonai/integrations/compute/_sync_base.py
345
347
  praisonai/integrations/compute/daytona.py
346
348
  praisonai/integrations/compute/docker.py
347
349
  praisonai/integrations/compute/e2b.py
@@ -0,0 +1,18 @@
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.endpoint_providers]
7
+ a2a = praisonai.endpoints.providers.a2a:A2AProvider
8
+ a2u = praisonai.endpoints.providers.a2u:A2UProvider
9
+ agents-api = praisonai.endpoints.providers.agents_api:AgentsAPIProvider
10
+ mcp = praisonai.endpoints.providers.mcp:MCPProvider
11
+ openai-compat = praisonai.endpoints.providers.openai_compat:OpenAICompatProvider
12
+ recipe = praisonai.endpoints.providers.recipe:RecipeProvider
13
+ tools-mcp = praisonai.endpoints.providers.tools_mcp:ToolsMCPProvider
14
+
15
+ [praisonai.framework_adapters]
16
+ autogen = praisonai.framework_adapters.autogen_adapter:AutoGenFamilyAdapter
17
+ autogen_v2 = praisonai.framework_adapters.autogen_adapter:AutoGenAdapter
18
+ crewai = praisonai.framework_adapters.crewai_adapter:CrewAIAdapter
@@ -1,14 +1,14 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.168
5
- praisonai-code>=0.0.64
6
- praisonai-bot>=0.0.49
7
- praisonai-train>=0.0.19
8
- praisonai-browser>=0.0.15
9
- praisonai-mcp>=0.0.15
10
- praisonai-sandbox>=0.0.13
11
- praisonai-deploy>=0.0.8
4
+ praisonaiagents>=1.7.0
5
+ praisonai-code>=0.1.0
6
+ praisonai-bot>=0.1.0
7
+ praisonai-train>=0.1.0
8
+ praisonai-browser>=0.1.0
9
+ praisonai-mcp>=0.1.0
10
+ praisonai-sandbox>=0.1.0
11
+ praisonai-deploy>=0.1.0
12
12
  python-dotenv>=0.19.0
13
13
  litellm<2,>=1.83.14
14
14
  PyYAML>=6.0
@@ -131,6 +131,7 @@ crewai>=0.157.0
131
131
  praisonai-tools>=0.1.0
132
132
 
133
133
  [daytona]
134
+ praisonai-sandbox[daytona]
134
135
 
135
136
  [deploy]
136
137
  praisonai-deploy[all]
@@ -140,9 +141,15 @@ textual-dev>=1.0.0
140
141
  pytest>=7.0.0
141
142
  pytest-asyncio>=0.21.0
142
143
 
144
+ [docker]
145
+ praisonai-sandbox[docker]
146
+
143
147
  [dynamodb]
144
148
  boto3>=1.35.0
145
149
 
150
+ [e2b]
151
+ praisonai-sandbox[e2b]
152
+
146
153
  [flow]
147
154
  langflow>=1.0.0
148
155
  requests>=2.31.0
@@ -227,7 +234,7 @@ praisonai-sandbox[all]
227
234
  praisonai-sandbox[ssh]
228
235
 
229
236
  [tenki]
230
- tenki>=0.5.4
237
+ praisonai-sandbox[tenki]
231
238
 
232
239
  [train]
233
240
  praisonai-train[llm]
@@ -130,7 +130,7 @@ Each layer wraps the one inside it. When an agent misbehaves, the layer tells yo
130
130
  | **3 · Harness** | Can it act, and be checked? | `tools=`, `MCP()`, `guardrails=`, `approval=`, `hooks=`, `sandbox=` |
131
131
  | **4 · Loop** | When do we stop? | `execution=ExecutionConfig(...)`, `reflection=`, `autonomy=`, doom-loop detection |
132
132
  | **5 · Graph** | Who runs when, and who checks whom? | `AgentFlow`, `route()`, `parallel()`, `loop()`, `repeat()` |
133
- | **⬡ Managed** | *Where does it actually run?* | `run_on="docker"` — one shared remote sandbox, or a fully hosted loop |
133
+ | **⬡ Managed** | *Where does it actually run?* | `tools_run_on="docker"` — one shared sandbox for the tools, or `run_on="anthropic"` for the whole agent |
134
134
 
135
135
  ### Layer 1 · Prompt — *Did I say it clearly?*
136
136
 
@@ -235,7 +235,7 @@ The harness is commoditising; **where** the agent executes is the next multiplie
235
235
  pip install praisonai
236
236
  ```
237
237
 
238
- The simplest way in is `run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2:
238
+ The simplest way in is `tools_run_on=` — one whole team or workflow shares **one** sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:
239
239
 
240
240
  ```python
241
241
  from praisonaiagents import Agent, AgentFlow
@@ -243,7 +243,7 @@ from praisonaiagents import Agent, AgentFlow
243
243
  writer = Agent(name="Writer", instructions="You write files.")
244
244
  reader = Agent(name="Reader", instructions="You read files.")
245
245
 
246
- flow = AgentFlow(run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
246
+ flow = AgentFlow(tools_run_on="docker", steps=[writer, reader]) # or e2b | modal | daytona | flyio
247
247
  flow.run("Write 'hello' to /workspace/note.txt, then read it back")
248
248
  ```
249
249
 
@@ -251,7 +251,7 @@ Same thing with no Python at all:
251
251
 
252
252
  ```yaml
253
253
  name: remote-demo
254
- run_on: docker # every step shares one sandbox
254
+ tools_run_on: docker # every step shares one sandbox
255
255
  agents:
256
256
  writer: {role: Writer, goal: Write files}
257
257
  reader: {role: Reader, goal: Read files}
@@ -262,22 +262,51 @@ steps:
262
262
  action: "Read /workspace/note.txt"
263
263
  ```
264
264
 
265
- For a single agent, pick the axis you need — remote **tools** or a remote **loop**:
265
+ For a single agent, two words cover it — and they answer different questions:
266
266
 
267
267
  ```python
268
- from praisonai import Agent, LocalAgent, LocalAgentConfig, HostedAgent
268
+ from praisonaiagents import Agent
269
269
 
270
- # A. Tools run in a remote sandbox; the agent loop stays local
271
- agent = Agent(name="builder", backend=LocalAgent(
272
- compute="e2b", # or modal | daytona | flyio | docker | tenki
273
- config=LocalAgentConfig(model="gpt-4o-mini", name="RemoteTools"),
274
- ))
270
+ # A. Only the TOOLS move. Thinking stays on your machine.
271
+ agent = Agent(name="builder", instructions="You build things.",
272
+ tools_run_on="docker") # docker | e2b | modal | daytona | flyio
273
+ # tenki | sandlock | ssh | novita | subprocess
275
274
 
276
- # B. The entire agent loop runs in the cloud (needs ANTHROPIC_API_KEY)
277
- agent = Agent(name="teacher", backend=HostedAgent(provider="anthropic"))
275
+ # B. The WHOLE agent moves — model calls, loop and tools
276
+ agent = Agent(name="teacher", instructions="You teach.", run_on="anthropic") # hosted
277
+ agent = Agent(name="builder", instructions="You build.", run_on="docker") # self-hosted
278
278
  agent.start("Write a Python script that prints the first 10 primes, then run it")
279
279
  ```
280
280
 
281
+ Ask any object where it runs, and it will tell you:
282
+
283
+ ```python
284
+ >>> Agent(name="builder", instructions="x", tools_run_on="docker")
285
+ Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
286
+
287
+ >>> agent.where_does_it_run()
288
+ Thinking (the AI model calls) happens on this machine.
289
+ Tools run on a Docker container.
290
+ Your own tools (check_db) still run on this machine -- only shell, file and
291
+ code tools move. They read and write this machine's files.
292
+ ```
293
+
294
+ Naming a place that cannot do the job is a typo, not a preference, so it says so:
295
+
296
+ ```python
297
+ >>> Agent(name="x", instructions="i", run_on="e2b")
298
+ TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent
299
+ -- model calls, loop and tools -- on a managed runtime, and 'e2b' runs
300
+ commands but cannot host an agent loop.
301
+ To run only the tools there: Agent(tools_run_on='e2b')
302
+ ```
303
+
304
+ To run one block of code somewhere else, name the place on that call:
305
+
306
+ ```python
307
+ agent.execute_code_sync("print(6 * 7)", run_in="sandlock") # kernel-enforced
308
+ ```
309
+
281
310
  See what is running and reclaim strays:
282
311
 
283
312
  ```bash
@@ -217,8 +217,17 @@ def __getattr__(name):
217
217
 
218
218
  try:
219
219
  import praisonaiagents
220
- except ModuleNotFoundError:
221
- raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
220
+ except ModuleNotFoundError as e:
221
+ if e.name == "praisonaiagents":
222
+ # Genuinely not installed — this is a real attribute miss.
223
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
224
+ # praisonaiagents IS installed but a transitive dep is missing.
225
+ # Surface the real cause instead of a misleading attribute error.
226
+ _praisonaiagents_import_error = e
227
+ raise AttributeError(
228
+ f"module {__name__!r} has no attribute {name!r}: praisonaiagents is "
229
+ f"installed but failed to import ({e})"
230
+ ) from e
222
231
  except ImportError as e:
223
232
  _praisonaiagents_import_error = e
224
233
  raise AttributeError(