PraisonAI 4.7.0__tar.gz → 4.7.1__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 (580) hide show
  1. {praisonai-4.7.0 → praisonai-4.7.1}/PKG-INFO +9 -9
  2. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/PKG-INFO +9 -9
  3. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/requires.txt +8 -8
  4. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_async_bridge.py +31 -8
  5. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_lazy_cache.py +9 -5
  6. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/agents_generator.py +12 -10
  7. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/api/call.py +138 -50
  8. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/_shim.py +49 -14
  9. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/db/adapter.py +6 -6
  10. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/praisonai_adapter.py +25 -14
  11. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/schedules_runner.py +14 -2
  12. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/base.py +30 -16
  13. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/async_mongodb.py +157 -0
  14. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/dynamodb.py +96 -23
  15. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/firestore.py +43 -21
  16. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/serve.py +73 -21
  17. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/security/audit.py +26 -0
  18. praisonai-4.7.1/praisonai/version.py +1 -0
  19. {praisonai-4.7.0 → praisonai-4.7.1}/pyproject.toml +8 -8
  20. praisonai-4.7.0/praisonai/version.py +0 -1
  21. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/SOURCES.txt +0 -0
  22. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/dependency_links.txt +0 -0
  23. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/entry_points.txt +0 -0
  24. {praisonai-4.7.0 → praisonai-4.7.1}/PraisonAI.egg-info/top_level.txt +0 -0
  25. {praisonai-4.7.0 → praisonai-4.7.1}/README.md +0 -0
  26. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/__init__.py +0 -0
  27. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/__main__.py +0 -0
  28. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_api_auth.py +0 -0
  29. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_approval_spec.py +0 -0
  30. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_bootstrap.py +0 -0
  31. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/__init__.py +0 -0
  32. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/api_md.py +0 -0
  33. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/__init__.py +0 -0
  34. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/docs_extractor.py +0 -0
  35. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/docs_generator.py +0 -0
  36. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/generator.py +0 -0
  37. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  38. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/python_extractor.py +0 -0
  39. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  40. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/rust_extractor.py +0 -0
  41. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  42. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  43. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  44. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_entrypoint.py +0 -0
  45. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_framework_availability.py +0 -0
  46. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_logging.py +0 -0
  47. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_registry.py +0 -0
  48. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/_safe_loader.py +0 -0
  49. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/acp/__init__.py +0 -0
  50. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/acp/config.py +0 -0
  51. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/acp/safe_edit.py +0 -0
  52. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/acp/server.py +0 -0
  53. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/acp/session.py +0 -0
  54. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/adapters/__init__.py +0 -0
  55. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/adapters/readers.py +0 -0
  56. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/adapters/rerankers.py +0 -0
  57. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/adapters/retrievers.py +0 -0
  58. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/adapters/vector_stores.py +0 -0
  59. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/agent.py +0 -0
  60. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/agent_scheduler.py +0 -0
  61. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/api/agent_invoke.py +0 -0
  62. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/app/__init__.py +0 -0
  63. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/app/agentos.py +0 -0
  64. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/async_agent_scheduler.py +0 -0
  65. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/audit/__init__.py +0 -0
  66. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/audit/agent_centric.py +0 -0
  67. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/auto.py +0 -0
  68. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/bots/__init__.py +0 -0
  69. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/browser/__init__.py +0 -0
  70. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/__init__.py +0 -0
  71. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/a2a.py +0 -0
  72. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/assistants.py +0 -0
  73. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/audio.py +0 -0
  74. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/batches.py +0 -0
  75. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/completions.py +0 -0
  76. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/container_files.py +0 -0
  77. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/containers.py +0 -0
  78. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/embeddings.py +0 -0
  79. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/files.py +0 -0
  80. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/fine_tuning.py +0 -0
  81. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/guardrails.py +0 -0
  82. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/images.py +0 -0
  83. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/mcp.py +0 -0
  84. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/messages.py +0 -0
  85. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/moderations.py +0 -0
  86. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/ocr.py +0 -0
  87. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/passthrough.py +0 -0
  88. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/rag.py +0 -0
  89. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/realtime.py +0 -0
  90. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/rerank.py +0 -0
  91. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/responses.py +0 -0
  92. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/search.py +0 -0
  93. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/skills.py +0 -0
  94. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/vector_store_files.py +0 -0
  95. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/vector_stores.py +0 -0
  96. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/capabilities/videos.py +0 -0
  97. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/claw/__init__.py +0 -0
  98. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/__init__.py +0 -0
  99. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/_paths.py +0 -0
  100. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/_warnings.py +0 -0
  101. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/app.py +0 -0
  102. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/approval_backend.py +0 -0
  103. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/branding.py +0 -0
  104. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/__init__.py +0 -0
  105. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/_profiling.py +0 -0
  106. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/acp.py +0 -0
  107. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/agent.py +0 -0
  108. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/agents.py +0 -0
  109. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/app.py +0 -0
  110. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/attach.py +0 -0
  111. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/audit.py +0 -0
  112. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/auth.py +0 -0
  113. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/batch.py +0 -0
  114. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/benchmark.py +0 -0
  115. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/bot.py +0 -0
  116. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/browser.py +0 -0
  117. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/call.py +0 -0
  118. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/chat.py +0 -0
  119. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/checkpoint.py +0 -0
  120. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/claw.py +0 -0
  121. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/code.py +0 -0
  122. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/command.py +0 -0
  123. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/commit.py +0 -0
  124. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/completion.py +0 -0
  125. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/config.py +0 -0
  126. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/context.py +0 -0
  127. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/daemon.py +0 -0
  128. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/dashboard.py +0 -0
  129. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/debug.py +0 -0
  130. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/deploy.py +0 -0
  131. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/diag.py +0 -0
  132. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/docs.py +0 -0
  133. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/doctor.py +0 -0
  134. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/endpoints.py +0 -0
  135. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/environment.py +0 -0
  136. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/eval.py +0 -0
  137. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/examples.py +0 -0
  138. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/flow.py +0 -0
  139. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/gateway.py +0 -0
  140. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/github.py +0 -0
  141. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/hooks.py +0 -0
  142. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/identity.py +0 -0
  143. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/init.py +0 -0
  144. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/kanban.py +0 -0
  145. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/knowledge.py +0 -0
  146. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/langextract.py +0 -0
  147. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/langfuse.py +0 -0
  148. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/loop.py +0 -0
  149. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/lsp.py +0 -0
  150. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/managed.py +0 -0
  151. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/mcp.py +0 -0
  152. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/memory.py +0 -0
  153. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/mint_link.py +0 -0
  154. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/models.py +0 -0
  155. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/n8n.py +0 -0
  156. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/obs.py +0 -0
  157. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/onboard.py +0 -0
  158. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/package.py +0 -0
  159. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/pairing.py +0 -0
  160. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/paths.py +0 -0
  161. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/permissions.py +0 -0
  162. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/plugins.py +0 -0
  163. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/port.py +0 -0
  164. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/profile.py +0 -0
  165. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/publish.py +0 -0
  166. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/rag.py +0 -0
  167. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/realtime.py +0 -0
  168. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/recipe.py +0 -0
  169. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/registry.py +0 -0
  170. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/replay.py +0 -0
  171. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/research.py +0 -0
  172. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/retrieval.py +0 -0
  173. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/rules.py +0 -0
  174. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/run.py +0 -0
  175. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/sandbox.py +0 -0
  176. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/schedule.py +0 -0
  177. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/serve.py +0 -0
  178. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/session.py +0 -0
  179. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/setup.py +0 -0
  180. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/skills.py +0 -0
  181. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/standardise.py +0 -0
  182. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/templates.py +0 -0
  183. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/test.py +0 -0
  184. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/todo.py +0 -0
  185. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/tools.py +0 -0
  186. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/traces.py +0 -0
  187. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/tracker.py +0 -0
  188. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/train.py +0 -0
  189. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/ui.py +0 -0
  190. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/up.py +0 -0
  191. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/validate.py +0 -0
  192. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/version.py +0 -0
  193. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/commands/workflow.py +0 -0
  194. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/config_loader.py +0 -0
  195. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/configuration/__init__.py +0 -0
  196. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/configuration/config.schema.json +0 -0
  197. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/execution/__init__.py +0 -0
  198. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/fallback_schema.py +0 -0
  199. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/__init__.py +0 -0
  200. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/acp.py +0 -0
  201. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/agent_scheduler.py +0 -0
  202. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/agent_tools.py +0 -0
  203. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/approval.py +0 -0
  204. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/background.py +0 -0
  205. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/bots_cli.py +0 -0
  206. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/deploy.py +0 -0
  207. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/endpoints.py +0 -0
  208. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/eval.py +0 -0
  209. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/gateway.py +0 -0
  210. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/ollama.py +0 -0
  211. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/onboard.py +0 -0
  212. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/persistence.py +0 -0
  213. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/recipe.py +0 -0
  214. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/recipe_optimizer.py +0 -0
  215. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/registry.py +0 -0
  216. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/sandbox_cli.py +0 -0
  217. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/serve.py +0 -0
  218. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/templates.py +0 -0
  219. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/tools.py +0 -0
  220. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/tui/__init__.py +0 -0
  221. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/tui/app.py +0 -0
  222. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/features/workflow.py +0 -0
  223. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/interactive/__init__.py +0 -0
  224. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/interactive/async_tui.py +0 -0
  225. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/interactive/config.py +0 -0
  226. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/interactive/core.py +0 -0
  227. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/interactive/events.py +0 -0
  228. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/langfuse_client.py +0 -0
  229. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/__init__.py +0 -0
  230. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/direct_prompt.py +0 -0
  231. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/dispatch/__init__.py +0 -0
  232. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/dispatch/argparse_builder.py +0 -0
  233. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/dispatch/legacy_dispatch.py +0 -0
  234. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/framework_run.py +0 -0
  235. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/inbuilt_tools.py +0 -0
  236. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/interactive_legacy.py +0 -0
  237. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/subcommand_handlers.py +0 -0
  238. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/legacy/workflow_commands.py +0 -0
  239. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/main.py +0 -0
  240. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/output/__init__.py +0 -0
  241. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/schedule_cli.py +0 -0
  242. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/schema_provider.py +0 -0
  243. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/session/__init__.py +0 -0
  244. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/state/__init__.py +0 -0
  245. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/ui/__init__.py +0 -0
  246. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/unified_schema.py +0 -0
  247. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli/utils/__init__.py +0 -0
  248. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/cli_backends/__init__.py +0 -0
  249. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/__init__.py +0 -0
  250. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/agent_tools.py +0 -0
  251. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/diff/__init__.py +0 -0
  252. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/diff/diff_strategy.py +0 -0
  253. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/__init__.py +0 -0
  254. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/apply_diff.py +0 -0
  255. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/execute_command.py +0 -0
  256. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/list_files.py +0 -0
  257. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/read_file.py +0 -0
  258. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/search_replace.py +0 -0
  259. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/tools/write_file.py +0 -0
  260. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/utils/__init__.py +0 -0
  261. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/utils/file_utils.py +0 -0
  262. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/utils/ignore_utils.py +0 -0
  263. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/code/utils/text_utils.py +0 -0
  264. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/config/__init__.py +0 -0
  265. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/config/agents.schema.json +0 -0
  266. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/config/schema.py +0 -0
  267. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/config/validator.py +0 -0
  268. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/__init__.py +0 -0
  269. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/_storage_path.py +0 -0
  270. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/artifact_store.py +0 -0
  271. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/config.py +0 -0
  272. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/history_store.py +0 -0
  273. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/queue.py +0 -0
  274. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/setup.py +0 -0
  275. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/context/terminal_logger.py +0 -0
  276. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/daemon/__init__.py +0 -0
  277. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/db/__init__.py +0 -0
  278. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/deploy/__init__.py +0 -0
  279. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/__init__.py +0 -0
  280. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/a2u_server.py +0 -0
  281. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/discovery.py +0 -0
  282. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/__init__.py +0 -0
  283. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/a2a.py +0 -0
  284. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/a2u.py +0 -0
  285. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/agents_api.py +0 -0
  286. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/base.py +0 -0
  287. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/mcp.py +0 -0
  288. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/openai_compat.py +0 -0
  289. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/recipe.py +0 -0
  290. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  291. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/registry.py +0 -0
  292. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/endpoints/server.py +0 -0
  293. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/__init__.py +0 -0
  294. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/client.py +0 -0
  295. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  296. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  297. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/components/__init__.py +0 -0
  298. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/converter.py +0 -0
  299. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/flow/helpers.py +0 -0
  300. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/__init__.py +0 -0
  301. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/_config_builder.py +0 -0
  302. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  303. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/base.py +0 -0
  304. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  305. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/registry.py +0 -0
  306. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/validators.py +0 -0
  307. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/framework_adapters/workflow_framework.py +0 -0
  308. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/gateway/__init__.py +0 -0
  309. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/inbuilt_tools/__init__.py +0 -0
  310. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  311. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/inc/__init__.py +0 -0
  312. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/inc/config.py +0 -0
  313. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/inc/models.py +0 -0
  314. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/__init__.py +0 -0
  315. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/__init__.py +0 -0
  316. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  317. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/hooks_query.py +0 -0
  318. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  319. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/usage_bridge.py +0 -0
  320. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/bridges/workflows_service.py +0 -0
  321. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/context_files.py +0 -0
  322. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/gateway_host.py +0 -0
  323. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/host_app.py +0 -0
  324. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/pages/__init__.py +0 -0
  325. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/pages/bot_health.py +0 -0
  326. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integration/pages/workflow_runs.py +0 -0
  327. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/__init__.py +0 -0
  328. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/_cli_loaders.py +0 -0
  329. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/_session_info.py +0 -0
  330. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/_tool_aliases.py +0 -0
  331. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/_unified_registry.py +0 -0
  332. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/backend_registry.py +0 -0
  333. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/claude_code.py +0 -0
  334. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/codex_cli.py +0 -0
  335. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/__init__.py +0 -0
  336. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/_sync_base.py +0 -0
  337. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/daytona.py +0 -0
  338. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/docker.py +0 -0
  339. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/e2b.py +0 -0
  340. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/flyio.py +0 -0
  341. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/local.py +0 -0
  342. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/modal_compute.py +0 -0
  343. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute/tenki.py +0 -0
  344. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/compute_managed_agent.py +0 -0
  345. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/cursor_cli.py +0 -0
  346. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/db_session_adapter.py +0 -0
  347. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/gemini_cli.py +0 -0
  348. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/hosted_agent.py +0 -0
  349. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/local_agent.py +0 -0
  350. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/managed_agents.py +0 -0
  351. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/managed_local.py +0 -0
  352. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/registry.py +0 -0
  353. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/integrations/sandboxed_agent.py +0 -0
  354. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/__init__.py +0 -0
  355. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/executor.py +0 -0
  356. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/models.py +0 -0
  357. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/path_validation.py +0 -0
  358. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/router.py +0 -0
  359. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/server.py +0 -0
  360. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/jobs/store.py +0 -0
  361. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/kanban/__init__.py +0 -0
  362. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/__init__.py +0 -0
  363. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/catalogue.py +0 -0
  364. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/config.py +0 -0
  365. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/credentials.py +0 -0
  366. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/env.py +0 -0
  367. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/gateways.py +0 -0
  368. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/llm/registry.py +0 -0
  369. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/mcp_server/__init__.py +0 -0
  370. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/n8n/__init__.py +0 -0
  371. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/n8n/client.py +0 -0
  372. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/n8n/converter.py +0 -0
  373. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/n8n/preview.py +0 -0
  374. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/n8n/reverse_converter.py +0 -0
  375. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/observability/__init__.py +0 -0
  376. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/observability/hooks.py +0 -0
  377. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/observability/langextract.py +0 -0
  378. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/observability/langfuse.py +0 -0
  379. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/__init__.py +0 -0
  380. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/_valkey_client.py +0 -0
  381. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/config.py +0 -0
  382. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/__init__.py +0 -0
  383. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/_ops.py +0 -0
  384. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/_sql_base.py +0 -0
  385. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  386. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/async_mysql.py +0 -0
  387. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/async_postgres.py +0 -0
  388. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  389. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/base.py +0 -0
  390. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/json_store.py +0 -0
  391. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/mysql.py +0 -0
  392. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/postgres.py +0 -0
  393. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/singlestore.py +0 -0
  394. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/sqlite.py +0 -0
  395. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/supabase.py +0 -0
  396. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/surrealdb.py +0 -0
  397. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  398. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/conversation/turso.py +0 -0
  399. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/factory.py +0 -0
  400. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/hooks/__init__.py +0 -0
  401. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  402. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/__init__.py +0 -0
  403. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/base.py +0 -0
  404. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/cassandra.py +0 -0
  405. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/chroma.py +0 -0
  406. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  407. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  408. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/couchbase.py +0 -0
  409. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/lancedb.py +0 -0
  410. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  411. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  412. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  413. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/milvus.py +0 -0
  414. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  415. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/pgvector.py +0 -0
  416. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/pinecone.py +0 -0
  417. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/qdrant.py +0 -0
  418. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  419. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  420. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  421. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  422. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  423. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/knowledge/weaviate.py +0 -0
  424. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/migrations/__init__.py +0 -0
  425. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/migrations/manager.py +0 -0
  426. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/orchestrator.py +0 -0
  427. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/registry.py +0 -0
  428. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/__init__.py +0 -0
  429. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/base.py +0 -0
  430. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/gcs.py +0 -0
  431. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/memory.py +0 -0
  432. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/mongodb.py +0 -0
  433. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/redis.py +0 -0
  434. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/upstash.py +0 -0
  435. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/state/valkey.py +0 -0
  436. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/tests/__init__.py +0 -0
  437. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/tests/test_all_backends.py +0 -0
  438. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/tests/test_registry_lazy.py +0 -0
  439. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  440. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/profiler.py +0 -0
  441. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/push/__init__.py +0 -0
  442. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/push/client.py +0 -0
  443. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/push/transports.py +0 -0
  444. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/__init__.py +0 -0
  445. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/bridge.py +0 -0
  446. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/core.py +0 -0
  447. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/exceptions.py +0 -0
  448. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/history.py +0 -0
  449. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/models.py +0 -0
  450. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/operations.py +0 -0
  451. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/policy.py +0 -0
  452. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/registry.py +0 -0
  453. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/runtime.py +0 -0
  454. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/security.py +0 -0
  455. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/recipe/server.py +0 -0
  456. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/__init__.py +0 -0
  457. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/analyzer.py +0 -0
  458. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/applier.py +0 -0
  459. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/judge.py +0 -0
  460. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/plan.py +0 -0
  461. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/player.py +0 -0
  462. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/reader.py +0 -0
  463. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/storage.py +0 -0
  464. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/replay/writer.py +0 -0
  465. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/runtime/__init__.py +0 -0
  466. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/runtime/__main__.py +0 -0
  467. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/sandbox/__init__.py +0 -0
  468. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/sandbox/_registry.py +0 -0
  469. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/__init__.py +0 -0
  470. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/_base_scheduler.py +0 -0
  471. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/_delivery.py +0 -0
  472. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/_dispatch.py +0 -0
  473. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/agent_scheduler.py +0 -0
  474. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  475. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/base.py +0 -0
  476. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  477. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/condition_gate.py +0 -0
  478. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/daemon_manager.py +0 -0
  479. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/deployment.py +0 -0
  480. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/executor.py +0 -0
  481. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/run_policy.py +0 -0
  482. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/shared.py +0 -0
  483. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/state_manager.py +0 -0
  484. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/suggestion_engine.py +0 -0
  485. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/scheduler/yaml_loader.py +0 -0
  486. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/security/__init__.py +0 -0
  487. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/security/injection.py +0 -0
  488. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/security/protected.py +0 -0
  489. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/setup/__init__.py +0 -0
  490. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/setup/build.py +0 -0
  491. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/setup/post_install.py +0 -0
  492. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/setup/setup_conda_env.py +0 -0
  493. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/setup.py +0 -0
  494. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/__init__.py +0 -0
  495. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/ai_generator.py +0 -0
  496. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/config.py +0 -0
  497. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/dedupe.py +0 -0
  498. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/discovery.py +0 -0
  499. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/drift.py +0 -0
  500. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/engine.py +0 -0
  501. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/enhanced_templates.py +0 -0
  502. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/example_verifier.py +0 -0
  503. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/manifest.py +0 -0
  504. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/models.py +0 -0
  505. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/reports.py +0 -0
  506. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/templates.py +0 -0
  507. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/undo_redo.py +0 -0
  508. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/standardise/validator.py +0 -0
  509. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/__init__.py +0 -0
  510. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/dynamodb_adapter.py +0 -0
  511. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/mongodb_adapter.py +0 -0
  512. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/postgresql_adapter.py +0 -0
  513. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/redis_adapter.py +0 -0
  514. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/storage/valkey_adapter.py +0 -0
  515. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/__init__.py +0 -0
  516. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/batch_source.py +0 -0
  517. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/cli_docs_source.py +0 -0
  518. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/discovery.py +0 -0
  519. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/docs_source.py +0 -0
  520. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/examples_source.py +0 -0
  521. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/executor.py +0 -0
  522. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/models.py +0 -0
  523. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/report_viewer.py +0 -0
  524. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/reporter.py +0 -0
  525. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/suite_runner/runner.py +0 -0
  526. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/__init__.py +0 -0
  527. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/_tool_sources.py +0 -0
  528. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/cache.py +0 -0
  529. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/dependency_checker.py +0 -0
  530. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/discovery.py +0 -0
  531. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/loader.py +0 -0
  532. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/registry.py +0 -0
  533. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/resolver.py +0 -0
  534. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/security.py +0 -0
  535. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/tool_override.py +0 -0
  536. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/templates/tools_doctor.py +0 -0
  537. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tool_registry.py +0 -0
  538. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tool_resolver.py +0 -0
  539. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/__init__.py +0 -0
  540. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/audio.py +0 -0
  541. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/glob_tool.py +0 -0
  542. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/grep_tool.py +0 -0
  543. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/kanban_tools.py +0 -0
  544. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/multiedit.py +0 -0
  545. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/tools/skill_manage.py +0 -0
  546. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/train/__init__.py +0 -0
  547. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/train.py +0 -0
  548. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/train_vision.py +0 -0
  549. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui/_aiui_datastore.py +0 -0
  550. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui/_external_agents.py +0 -0
  551. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui/context.py +0 -0
  552. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui/database_config.py +0 -0
  553. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_agents/__init__.py +0 -0
  554. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_agents/default_app.py +0 -0
  555. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_bot/__init__.py +0 -0
  556. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_bot/default_app.py +0 -0
  557. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_chat/__init__.py +0 -0
  558. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_chat/default_app.py +0 -0
  559. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_dashboard/__init__.py +0 -0
  560. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_dashboard/default_app.py +0 -0
  561. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_realtime/__init__.py +0 -0
  562. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/ui_realtime/default_app.py +0 -0
  563. {praisonai-4.7.0 → praisonai-4.7.1}/praisonai/upload_vision.py +0 -0
  564. {praisonai-4.7.0 → praisonai-4.7.1}/setup.cfg +0 -0
  565. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test.py +0 -0
  566. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_agents_playbook.py +0 -0
  567. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_approval_system.py +0 -0
  568. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_basic.py +0 -0
  569. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_cli_features.py +0 -0
  570. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_custom_tools_fix.py +0 -0
  571. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_double_api_fix.py +0 -0
  572. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_n8n_agent_invoke.py +0 -0
  573. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_n8n_cli_feature.py +0 -0
  574. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_n8n_integration.py +0 -0
  575. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_phase2_refactor.py +0 -0
  576. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_recipe.py +0 -0
  577. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_registry.py +0 -0
  578. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_runner.py +0 -0
  579. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_sandboxed_agent_compatibility.py +0 -0
  580. {praisonai-4.7.0 → praisonai-4.7.1}/tests/test_serve_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.7.0
3
+ Version: 4.7.1
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.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
14
+ Requires-Dist: praisonaiagents>=1.7.1
15
+ Requires-Dist: praisonai-code>=0.1.1
16
+ Requires-Dist: praisonai-bot>=0.1.1
17
+ Requires-Dist: praisonai-train>=0.1.1
18
+ Requires-Dist: praisonai-browser>=0.1.1
19
+ Requires-Dist: praisonai-mcp>=0.1.3
20
+ Requires-Dist: praisonai-sandbox>=0.1.1
21
+ Requires-Dist: praisonai-deploy>=0.1.1
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.7.0
3
+ Version: 4.7.1
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.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
14
+ Requires-Dist: praisonaiagents>=1.7.1
15
+ Requires-Dist: praisonai-code>=0.1.1
16
+ Requires-Dist: praisonai-bot>=0.1.1
17
+ Requires-Dist: praisonai-train>=0.1.1
18
+ Requires-Dist: praisonai-browser>=0.1.1
19
+ Requires-Dist: praisonai-mcp>=0.1.3
20
+ Requires-Dist: praisonai-sandbox>=0.1.1
21
+ Requires-Dist: praisonai-deploy>=0.1.1
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
@@ -1,14 +1,14 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
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
4
+ praisonaiagents>=1.7.1
5
+ praisonai-code>=0.1.1
6
+ praisonai-bot>=0.1.1
7
+ praisonai-train>=0.1.1
8
+ praisonai-browser>=0.1.1
9
+ praisonai-mcp>=0.1.3
10
+ praisonai-sandbox>=0.1.1
11
+ praisonai-deploy>=0.1.1
12
12
  python-dotenv>=0.19.0
13
13
  litellm<2,>=1.83.14
14
14
  PyYAML>=6.0
@@ -291,22 +291,45 @@ def run_sync_or_offload(
291
291
  :class:`AsyncBridge` via :func:`run_sync`, sharing its background loop and
292
292
  connection pools.
293
293
  - Called from inside a running loop (FastAPI handler, Jupyter, async test):
294
- copies the caller's ContextVars onto a worker thread that hands the
295
- coroutine to the SAME bridge (never a fresh ``asyncio.new_event_loop()``),
296
- so a caller-installed :func:`scoped_bridge` binding still wins and
297
- LiteLLM/HTTPX per-loop connection pools are preserved. Exceptions are
298
- re-raised on the caller thread.
294
+ by default this raises ``RuntimeError`` rather than blocking the loop,
295
+ pointing callers at the awaitable siblings (:func:`arun_sync_or_offload`,
296
+ ``adapter.arun``, ``praisonai.arun``). Set
297
+ ``PRAISONAI_ALLOW_LOOP_BLOCKING=true`` to opt into the legacy behaviour
298
+ that copies the caller's ContextVars onto a worker thread handing the
299
+ coroutine to the SAME bridge (never a fresh ``asyncio.new_event_loop()``)
300
+ and joins it — which pins the loop for up to ``timeout`` seconds.
299
301
 
300
302
  Callers who *know* they are on a sync-only path should use :func:`run_sync`
301
- (it fails loudly inside a loop). Everything that participates in the 3-way
302
- surface (CLI + YAML + Python) should use this helper so the correct
303
- running-loop handling lives in one place instead of being re-implemented.
303
+ (it fails loudly inside a loop). Async callers should ``await``
304
+ :func:`arun_sync_or_offload`, which never blocks the loop.
304
305
  """
305
306
  try:
306
307
  asyncio.get_running_loop()
307
308
  except RuntimeError:
308
309
  return run_sync(coro, timeout=timeout)
309
310
 
311
+ # Strict path (default): never block a running event loop. Joining the
312
+ # worker thread from the loop thread pins the loop for up to ``timeout``
313
+ # seconds — exactly the "async-safe" pathology this project forbids. Steer
314
+ # callers to the awaitable siblings that never block the loop.
315
+ if os.environ.get("PRAISONAI_ALLOW_LOOP_BLOCKING", "").lower() not in (
316
+ "1",
317
+ "true",
318
+ ):
319
+ # Close the coroutine we are refusing to run so it does not leak as a
320
+ # "coroutine was never awaited" warning.
321
+ with contextlib.suppress(Exception):
322
+ coro.close() # type: ignore[attr-defined]
323
+ raise RuntimeError(
324
+ "run_sync_or_offload() would block the running event loop for up to "
325
+ f"{timeout}s. From an async context, await one of:\n"
326
+ " - praisonai.arun(...)\n"
327
+ " - adapter.arun(...)\n"
328
+ " - praisonai._async_bridge.arun_sync_or_offload(coro)\n"
329
+ "Set PRAISONAI_ALLOW_LOOP_BLOCKING=true to opt into the legacy "
330
+ "blocking behaviour."
331
+ )
332
+
310
333
  result: list[T] = []
311
334
  error: list[BaseException] = []
312
335
  # Hold the concurrent.futures.Future for the in-flight coroutine so the
@@ -6,7 +6,7 @@ T = TypeVar("T")
6
6
 
7
7
 
8
8
  class LazyCache:
9
- """Thread-safe double-checked lazy cache. Caches and re-raises ImportError exceptions."""
9
+ """Thread-safe double-checked lazy cache. Caches and re-raises terminal loader failures."""
10
10
 
11
11
  def __init__(self) -> None:
12
12
  self._cache: Dict[str, object] = {}
@@ -16,19 +16,23 @@ class LazyCache:
16
16
  if key in self._cache:
17
17
  cached = self._cache[key]
18
18
  # Re-raise cached exception
19
- if isinstance(cached, ImportError):
19
+ if isinstance(cached, BaseException):
20
20
  raise cached
21
21
  return cached # type: ignore[return-value]
22
22
  with self._lock:
23
23
  if key in self._cache:
24
24
  cached = self._cache[key]
25
- if isinstance(cached, ImportError):
25
+ if isinstance(cached, BaseException):
26
26
  raise cached
27
27
  return cached # type: ignore[return-value]
28
28
  try:
29
29
  value: object = loader()
30
- except ImportError as e:
31
- # Cache the exception and re-raise
30
+ except (KeyboardInterrupt, SystemExit):
31
+ # Control-flow exceptions must propagate cleanly, never memoised.
32
+ raise
33
+ except BaseException as e:
34
+ # Cache every terminal loader failure so a broken optional dep
35
+ # fails fast instead of re-running the import/probe every call.
32
36
  self._cache[key] = e
33
37
  raise
34
38
  self._cache[key] = value
@@ -1527,21 +1527,23 @@ class AgentsGenerator:
1527
1527
  def safe_format(template, **kwargs):
1528
1528
  """
1529
1529
  Safe string formatting that preserves JSON/dict literals while substituting variables.
1530
-
1530
+
1531
1531
  This function only substitutes placeholders that look like identifiers (e.g., {topic})
1532
1532
  while preserving JSON structures like {"level": 2}.
1533
-
1533
+
1534
+ Delegates to the single source of truth,
1535
+ ``BaseFrameworkAdapter._format_template`` in the core SDK, so the wrapper
1536
+ and core cannot drift (non-string short-circuit, regex, missing-key
1537
+ handling). ``_format_template`` is stateless; a fresh instance is free.
1538
+
1534
1539
  Args:
1535
1540
  template (str): Template string with placeholders
1536
1541
  **kwargs: Values to substitute
1537
-
1542
+
1538
1543
  Returns:
1539
1544
  str: Formatted string with safe substitutions
1540
1545
  """
1541
- # Use the same regex-based substitution logic as BaseFrameworkAdapter._format_template
1542
- def replace_placeholder(match):
1543
- placeholder = match.group(1)
1544
- return str(kwargs.get(placeholder, match.group(0)))
1545
-
1546
- # Only replace placeholders that look like identifiers
1547
- return re.sub(r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}', replace_placeholder, template)
1546
+ from praisonaiagents.frameworks.base import BaseFrameworkAdapter
1547
+ return BaseFrameworkAdapter._format_template(
1548
+ BaseFrameworkAdapter(), template, **kwargs
1549
+ )
@@ -4,14 +4,6 @@ import base64
4
4
  import hmac
5
5
  import secrets
6
6
  import asyncio
7
- import websockets
8
- from fastapi import FastAPI, WebSocket, Request
9
- from fastapi.responses import HTMLResponse
10
- from fastapi.websockets import WebSocketDisconnect
11
- from twilio.twiml.voice_response import VoiceResponse, Connect
12
- import uvicorn
13
- from pyngrok import ngrok, conf
14
- from rich import print
15
7
  import argparse
16
8
  import logging
17
9
  import importlib.util
@@ -19,6 +11,12 @@ import time
19
11
  from typing import Optional
20
12
  from collections import defaultdict
21
13
 
14
+ # Heavy, optional dependencies (websockets, fastapi, twilio, uvicorn, pyngrok,
15
+ # rich) are imported lazily inside the functions that need them. Importing this
16
+ # module must stay cheap: ``import praisonai.api.call`` (reachable from unrelated
17
+ # code paths) should not pay the transitive cost of the voice/serve stack or
18
+ # fail on minimal containers where those native deps are absent.
19
+
22
20
 
23
21
  def _maybe_load_dotenv() -> None:
24
22
  """Load a ``.env`` file only when explicitly opted in.
@@ -170,25 +168,16 @@ def _refresh_env_globals() -> None:
170
168
  pass
171
169
 
172
170
 
173
- app = FastAPI()
174
-
175
171
  # Set up logging
176
172
  logger = logging.getLogger(__name__)
177
173
  log_level = os.getenv("LOGLEVEL", "INFO").upper()
178
174
  logger.handlers.clear()
179
175
 
180
- # Include agent invoke router for n8n integration
181
- try:
182
- from .agent_invoke import router as agent_invoke_router
183
- app.include_router(agent_invoke_router)
184
- logger.debug("Agent invoke router added for n8n integration")
185
- except ImportError as e:
186
- logger.warning(f"Could not load agent invoke router: {e}")
187
-
188
- # Try to import tools from the root directory
176
+ # Tool registry populated only when a server verb explicitly loads local tools
177
+ # (see ``_load_local_tools`` / ``build_call_app``). It is NEVER populated as an
178
+ # import-time side effect.
189
179
  tools = []
190
- tools_path = os.path.join(os.getcwd(), 'tools.py')
191
- logger.debug(f"Tools path: {tools_path}")
180
+
192
181
 
193
182
  def import_tools_from_file(file_path):
194
183
  """Import tools from file with PRAISONAI_ALLOW_LOCAL_TOOLS opt-in.
@@ -211,34 +200,122 @@ def import_tools_from_file(file_path):
211
200
  logger.error("Failed to import tools from %s", file_path, exc_info=True)
212
201
  raise ValueError(f"Failed to import tools from {file_path}") from e
213
202
 
214
- try:
215
- # Security: Require explicit opt-in for local tools loading
216
- if os.environ.get("PRAISONAI_ALLOW_LOCAL_TOOLS", "").lower() != "true":
217
- logger.debug("Local tools loading disabled. Set PRAISONAI_ALLOW_LOCAL_TOOLS=true to enable.")
218
- custom_tools_module = None
219
- elif os.path.exists(tools_path):
220
- # tools.py exists in the root directory, import from file
221
- custom_tools_module = import_tools_from_file(tools_path)
222
- logger.debug("Successfully imported custom tools from root tools.py")
223
- else:
224
- logger.debug("No custom tools.py file found in the root directory")
225
- custom_tools_module = None
226
203
 
227
- if custom_tools_module:
228
- # Update the tools list with custom tools
229
- if hasattr(custom_tools_module, 'tools') and isinstance(custom_tools_module.tools, list):
230
- tools.extend(custom_tools_module.tools)
204
+ def _load_local_tools():
205
+ """Load ``./tools.py`` into the module ``tools`` registry, if opted in.
206
+
207
+ Runs user code, so it is gated behind ``PRAISONAI_ALLOW_LOCAL_TOOLS=true``
208
+ and only invoked by a server entry point (``build_call_app``/``main``) — never
209
+ at import time. Importing ``praisonai.api.call`` therefore has no filesystem
210
+ scan and never executes a neighbouring ``tools.py``.
211
+
212
+ Idempotent: the shared ``tools`` registry is rebuilt from scratch on each
213
+ call. Building the app more than once in a process (e.g. two
214
+ ``build_call_app(load_local_tools=True)`` calls) therefore does not
215
+ accumulate duplicate tool definitions — which would otherwise send the same
216
+ tool multiple times in every realtime ``session.update`` and grow the
217
+ registry unbounded across builds.
218
+ """
219
+ tools_path = os.path.join(os.getcwd(), 'tools.py')
220
+ logger.debug(f"Tools path: {tools_path}")
221
+ try:
222
+ if os.environ.get("PRAISONAI_ALLOW_LOCAL_TOOLS", "").lower() != "true":
223
+ logger.debug("Local tools loading disabled. Set PRAISONAI_ALLOW_LOCAL_TOOLS=true to enable.")
224
+ custom_tools_module = None
225
+ elif os.path.exists(tools_path):
226
+ custom_tools_module = import_tools_from_file(tools_path)
227
+ logger.debug("Successfully imported custom tools from root tools.py")
231
228
  else:
232
- for name, obj in custom_tools_module.__dict__.items():
233
- if callable(obj) and not name.startswith("__"):
234
- tool_definition = getattr(obj, 'definition', None)
235
- if tool_definition:
236
- tools.append(tool_definition)
229
+ logger.debug("No custom tools.py file found in the root directory")
230
+ custom_tools_module = None
231
+
232
+ if custom_tools_module:
233
+ # Reset in place (keep the same list object other modules may hold a
234
+ # reference to) so a re-load replaces rather than appends.
235
+ tools.clear()
236
+ if hasattr(custom_tools_module, 'tools') and isinstance(custom_tools_module.tools, list):
237
+ tools.extend(custom_tools_module.tools)
238
+ else:
239
+ for name, obj in custom_tools_module.__dict__.items():
240
+ if callable(obj) and not name.startswith("__"):
241
+ tool_definition = getattr(obj, 'definition', None)
242
+ if tool_definition:
243
+ tools.append(tool_definition)
244
+ except Exception as e:
245
+ logger.warning(f"Error importing custom tools: {str(e)}. Continuing without custom tools.")
246
+
247
+
248
+ def build_call_app(*, load_local_tools: bool = False):
249
+ """Build a fresh FastAPI app with the call routes registered.
250
+
251
+ Heavy deps (FastAPI, the agent-invoke router) are imported here, not at
252
+ module import time. When ``load_local_tools`` is true and the env opt-in is
253
+ set, ``./tools.py`` is loaded into the shared ``tools`` registry.
254
+ """
255
+ from fastapi import FastAPI
256
+
257
+ app = FastAPI()
258
+
259
+ try:
260
+ from .agent_invoke import router as agent_invoke_router
261
+ app.include_router(agent_invoke_router)
262
+ logger.debug("Agent invoke router added for n8n integration")
263
+ except ImportError as e:
264
+ logger.warning(f"Could not load agent invoke router: {e}")
265
+
266
+ _register_routes(app)
267
+
268
+ if load_local_tools:
269
+ _load_local_tools()
270
+
271
+ return app
272
+
273
+
274
+ _app = None
275
+
276
+
277
+ def __getattr__(name):
278
+ """Lazily construct the module-level ``app`` on first access.
279
+
280
+ Preserves the ``praisonai.api.call.app`` attribute for third parties that
281
+ import the name directly, without building a FastAPI app (and pulling its
282
+ transitive deps) merely because the module was imported.
283
+ """
284
+ if name == "app":
285
+ global _app
286
+ if _app is None:
287
+ _app = build_call_app()
288
+ return _app
289
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
290
+
291
+
292
+ def _register_routes(app):
293
+ """Register the voice-call HTTP/WebSocket routes on ``app``.
294
+
295
+ Handlers are defined at module scope (below) and attached here so the app is
296
+ built lazily by :func:`build_call_app` without any import-time app object.
297
+
298
+ The handlers are annotation-free at module scope to keep ``import
299
+ praisonai.api.call`` free of a top-level ``fastapi`` dependency. FastAPI
300
+ resolves framework objects (``Request``/``WebSocket``) by *annotation*, not
301
+ by parameter name, so the real classes are stamped onto the handlers here —
302
+ at build time, where ``fastapi`` is already imported — before registration.
303
+ Without this, an unannotated ``request`` parameter is treated as a required
304
+ query parameter and the ``/`` route 422s.
305
+ """
306
+ from fastapi import Request, WebSocket
307
+ from fastapi.responses import HTMLResponse
308
+
309
+ handle_incoming_call.__annotations__["request"] = Request
310
+ handle_media_stream.__annotations__["websocket"] = WebSocket
311
+
312
+ app.add_api_route(
313
+ "/status", index_page, methods=["GET"], response_class=HTMLResponse
314
+ )
315
+ app.add_api_route("/", handle_incoming_call, methods=["GET", "POST"])
316
+ app.add_api_websocket_route("/media-stream", handle_media_stream)
237
317
 
238
- except Exception as e:
239
- logger.warning(f"Error importing custom tools: {str(e)}. Continuing without custom tools.")
240
318
 
241
- @app.get("/status", response_class=HTMLResponse)
242
319
  async def index_page():
243
320
  return """
244
321
  <html>
@@ -251,11 +328,13 @@ async def index_page():
251
328
  </html>
252
329
  """
253
330
 
254
- from fastapi import HTTPException, status
255
331
 
256
- @app.api_route("/", methods=["GET", "POST"])
257
- async def handle_incoming_call(request: Request):
332
+ async def handle_incoming_call(request):
258
333
  """Handle incoming call and return TwiML response to connect to Media Stream."""
334
+ from fastapi import HTTPException, status
335
+ from fastapi.responses import HTMLResponse
336
+ from twilio.twiml.voice_response import VoiceResponse, Connect
337
+
259
338
  if not CALL_SERVER_TOKEN:
260
339
  raise HTTPException(
261
340
  status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
@@ -298,9 +377,11 @@ async def handle_incoming_call(request: Request):
298
377
  response.append(connect)
299
378
  return HTMLResponse(content=str(response), media_type="application/xml")
300
379
 
301
- @app.websocket("/media-stream")
302
- async def handle_media_stream(websocket: WebSocket):
380
+ async def handle_media_stream(websocket):
303
381
  """Handle WebSocket connections between Twilio and OpenAI."""
382
+ import websockets
383
+ from fastapi.websockets import WebSocketDisconnect
384
+
304
385
  global active_connections
305
386
 
306
387
  # 1. Authentication — accept a one-shot, per-connection session token
@@ -498,6 +579,8 @@ async def send_session_update(openai_ws):
498
579
  await openai_ws.send(json.dumps(session_update))
499
580
 
500
581
  def setup_public_url(port):
582
+ from pyngrok import ngrok, conf
583
+
501
584
  if NGROK_AUTH_TOKEN:
502
585
  conf.get_default().auth_token = NGROK_AUTH_TOKEN
503
586
  public_url = ngrok.connect(addr=str(port)).public_url
@@ -506,6 +589,8 @@ def setup_public_url(port):
506
589
 
507
590
  def run_server(port: int, host: str = "127.0.0.1", use_public: bool = False):
508
591
  """Run the FastAPI server using uvicorn."""
592
+ import uvicorn
593
+
509
594
  if not OPENAI_API_KEY:
510
595
  raise ValueError('Missing the OpenAI API key. Please set it in the .env file or configure it through the GUI.')
511
596
 
@@ -522,6 +607,9 @@ def run_server(port: int, host: str = "127.0.0.1", use_public: bool = False):
522
607
 
523
608
  os.environ["PRAISONAI_CALL_BIND_HOST"] = host
524
609
 
610
+ # Build the app here (server entry point) — this is the only place local
611
+ # tools.py is loaded, and only when PRAISONAI_ALLOW_LOCAL_TOOLS is set.
612
+ app = build_call_app(load_local_tools=True)
525
613
  uvicorn.run(app, host=host, port=port, log_level="warning")
526
614
 
527
615
  def main(args=None):
@@ -33,10 +33,14 @@ the moved package.
33
33
  from __future__ import annotations
34
34
 
35
35
  import importlib
36
+ import logging
37
+ import os
36
38
  import pkgutil
37
39
  import sys
38
40
  from importlib.machinery import ModuleSpec
39
41
 
42
+ _logger = logging.getLogger(__name__)
43
+
40
44
 
41
45
  class _RedirectLoader:
42
46
  """Loader that returns an already-imported module without re-executing it."""
@@ -75,25 +79,35 @@ class _AliasFinder:
75
79
 
76
80
 
77
81
  def _register_submodules(old_name: str, new_name: str, module) -> None:
78
- """Eagerly import the moved subtree and alias each submodule.
82
+ """Alias the moved subtree under the old dotted name.
79
83
 
80
84
  Registering each moved submodule under its old dotted name in
81
85
  ``sys.modules`` guarantees that a later ``import old_name.sub`` finds the
82
86
  identical object immediately, never re-executing the file (which would
83
- create duplicate class/enum objects). Modules that fail to import eagerly
84
- (e.g. optional heavy dependencies not installed) are skipped and resolved
85
- lazily by :class:`_AliasFinder` on first successful use.
86
-
87
- Eager pre-registration is required for correctness, not just startup speed:
88
- if the alias for ``old_name.sub`` is *absent* when a combined statement such
89
- as ``from old_name.sub import Symbol`` runs, CPython imports the parent
90
- shim, then resolves ``.sub`` through :class:`_AliasFinder.find_spec`, which
91
- calls ``import_module`` re-entrantly *inside* the parent's in-progress
92
- import. Under the import lock that re-entrancy loads the moved file twice,
87
+ create duplicate class/enum objects).
88
+
89
+ Eager pre-registration is required for **correctness**, not merely startup
90
+ speed. If the alias for ``old_name.sub`` is *absent* when a statement such as
91
+ ``from old_name.sub import Symbol`` (or ``import old_name.sub``) runs first,
92
+ CPython imports the parent shim, then resolves ``.sub`` through
93
+ :class:`_AliasFinder.find_spec`, which calls ``import_module`` re-entrantly.
94
+ Under the import lock that re-entrancy can load the moved file *twice*,
93
95
  producing two distinct module objects (duplicate classes) and breaking
94
- module identity (guarantee #1). Pre-stamping ``sys.modules[old_name.sub]``
95
- here means ``_find_and_load`` returns the single canonical object directly
96
- and never re-enters the finder.
96
+ module identity — so ``old_name.sub is new_name.sub`` becomes ``False`` and
97
+ ``unittest.mock.patch("old_name.sub.attr")`` no longer patches the object the
98
+ running code (importing via the new name) actually uses.
99
+
100
+ Pre-stamping ``sys.modules[old_name.sub]`` here means ``_find_and_load``
101
+ returns the single canonical object directly and never re-enters the finder.
102
+ Modules that fail to import eagerly (optional heavy deps not installed) are
103
+ logged and left for :class:`_AliasFinder` to resolve lazily on first use, so
104
+ a partial install still starts cleanly.
105
+
106
+ Set ``PRAISONAI_SHIM_LAZY=1`` to opt *out* of the eager subtree walk (pure
107
+ lazy resolution). This trades the module-identity guarantee above for not
108
+ importing the moved subtree at shim-install time; only use it when nothing in
109
+ the process relies on ``old_name.sub is new_name.sub`` (e.g. no ``mock.patch``
110
+ against the old dotted path).
97
111
  """
98
112
  new_prefix = new_name + "."
99
113
 
@@ -109,6 +123,12 @@ def _register_submodules(old_name: str, new_name: str, module) -> None:
109
123
  old_equiv = old_name + mod_name[len(new_name):]
110
124
  sys.modules.setdefault(old_equiv, mod)
111
125
 
126
+ if os.environ.get("PRAISONAI_SHIM_LAZY", "").lower() in ("1", "true"):
127
+ # Explicit opt-out: rely solely on _AliasFinder for on-demand
128
+ # resolution. Callers choosing this must not depend on module identity
129
+ # across the old/new dotted paths (see docstring).
130
+ return
131
+
112
132
  search_path = getattr(module, "__path__", None)
113
133
  if not search_path:
114
134
  return
@@ -120,7 +140,22 @@ def _register_submodules(old_name: str, new_name: str, module) -> None:
120
140
  try:
121
141
  sub = importlib.import_module(info.name)
122
142
  except Exception:
143
+ # Do not swallow silently: a downstream AttributeError on the
144
+ # alias with no traceback pointing here is the opposite of
145
+ # "safe by default". Log and let _AliasFinder retry lazily.
146
+ _logger.warning(
147
+ "shim: eager import of %s failed; will be resolved lazily",
148
+ info.name,
149
+ exc_info=True,
150
+ )
123
151
  continue
152
+ # ``sys.modules[info.name]`` may be a ``None`` placeholder (CPython
153
+ # records known-absent submodules that way). Aliasing one would poison
154
+ # the old dotted name so ``import old_name.sub`` raises "None in
155
+ # sys.modules" before _AliasFinder can resolve it lazily — mirror the
156
+ # guard in the already-imported pass above.
157
+ if sub is None:
158
+ continue
124
159
  old_equiv = old_name + info.name[len(new_name):]
125
160
  sys.modules.setdefault(old_equiv, sub)
126
161
 
@@ -889,7 +889,7 @@ class PraisonAIDB:
889
889
  await self._dispatch_async(
890
890
  self._state_store,
891
891
  "set",
892
- "aset",
892
+ "async_set",
893
893
  f"agent:{session_id}",
894
894
  {
895
895
  "agent_name": agent_name,
@@ -1039,7 +1039,7 @@ class PraisonAIDB:
1039
1039
  # instead of overwriting it with a disconnected "ended" record.
1040
1040
  agent_key = f"agent:{session_id}"
1041
1041
  agent_data = await self._dispatch_async(
1042
- self._state_store, "get", "aget", agent_key
1042
+ self._state_store, "get", "async_get", agent_key
1043
1043
  ) or {}
1044
1044
  agent_data.update({
1045
1045
  "status": "ended",
@@ -1047,7 +1047,7 @@ class PraisonAIDB:
1047
1047
  "metadata": {**agent_data.get("metadata", {}), **(metadata or {})},
1048
1048
  })
1049
1049
  await self._dispatch_async(
1050
- self._state_store, "set", "aset", agent_key, agent_data
1050
+ self._state_store, "set", "async_set", agent_key, agent_data
1051
1051
  )
1052
1052
 
1053
1053
  async def aon_run_start(
@@ -1065,7 +1065,7 @@ class PraisonAIDB:
1065
1065
  await self._dispatch_async(
1066
1066
  self._state_store,
1067
1067
  "set",
1068
- "aset",
1068
+ "async_set",
1069
1069
  run_key,
1070
1070
  {
1071
1071
  "run_id": run_id,
@@ -1092,7 +1092,7 @@ class PraisonAIDB:
1092
1092
  if self._state_store:
1093
1093
  run_key = f"run:{session_id}:{run_id}"
1094
1094
  run_data = await self._dispatch_async(
1095
- self._state_store, "get", "aget", run_key
1095
+ self._state_store, "get", "async_get", run_key
1096
1096
  ) or {}
1097
1097
  run_data.update({
1098
1098
  "ended_at": time.time(),
@@ -1102,7 +1102,7 @@ class PraisonAIDB:
1102
1102
  "metadata": {**run_data.get("metadata", {}), **(metadata or {})},
1103
1103
  })
1104
1104
  await self._dispatch_async(
1105
- self._state_store, "set", "aset", run_key, run_data
1105
+ self._state_store, "set", "async_set", run_key, run_data
1106
1106
  )
1107
1107
 
1108
1108
  async def aclose(self) -> None: