PraisonAI 4.6.34__tar.gz → 4.6.35__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 (775) hide show
  1. {praisonai-4.6.34 → praisonai-4.6.35}/PKG-INFO +2 -2
  2. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/SOURCES.txt +1 -0
  4. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy.py +1 -1
  6. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/llm/registry.py +115 -81
  7. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_mysql.py +30 -18
  8. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_postgres.py +17 -6
  9. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/async_sqlite.py +19 -7
  10. praisonai-4.6.35/praisonai/persistence/factory.py +126 -0
  11. praisonai-4.6.35/praisonai/persistence/registry.py +352 -0
  12. praisonai-4.6.35/praisonai/version.py +1 -0
  13. {praisonai-4.6.34 → praisonai-4.6.35}/pyproject.toml +1 -1
  14. praisonai-4.6.34/praisonai/persistence/factory.py +0 -322
  15. praisonai-4.6.34/praisonai/version.py +0 -1
  16. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/dependency_links.txt +0 -0
  17. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/entry_points.txt +0 -0
  18. {praisonai-4.6.34 → praisonai-4.6.35}/PraisonAI.egg-info/top_level.txt +0 -0
  19. {praisonai-4.6.34 → praisonai-4.6.35}/README.md +0 -0
  20. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/__init__.py +0 -0
  21. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/__main__.py +0 -0
  22. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_approval_spec.py +0 -0
  23. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_async_bridge.py +0 -0
  24. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/__init__.py +0 -0
  25. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/api_md.py +0 -0
  26. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/__init__.py +0 -0
  27. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/docs_extractor.py +0 -0
  28. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/docs_generator.py +0 -0
  29. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/generator.py +0 -0
  30. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  31. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/python_extractor.py +0 -0
  32. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  33. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/rust_extractor.py +0 -0
  34. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  35. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  36. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  37. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_logging.py +0 -0
  38. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/_safe_loader.py +0 -0
  39. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/__init__.py +0 -0
  40. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/config.py +0 -0
  41. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/safe_edit.py +0 -0
  42. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/server.py +0 -0
  43. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/acp/session.py +0 -0
  44. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/__init__.py +0 -0
  45. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/readers.py +0 -0
  46. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/rerankers.py +0 -0
  47. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/retrievers.py +0 -0
  48. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/adapters/vector_stores.py +0 -0
  49. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agent.py +0 -0
  50. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agent_scheduler.py +0 -0
  51. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/agents_generator.py +0 -0
  52. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/api/agent_invoke.py +0 -0
  53. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/api/call.py +0 -0
  54. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/app/__init__.py +0 -0
  55. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/app/agentos.py +0 -0
  56. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/async_agent_scheduler.py +0 -0
  57. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/audit/__init__.py +0 -0
  58. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/audit/agent_centric.py +0 -0
  59. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/auto.py +0 -0
  60. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/__init__.py +0 -0
  61. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_ack.py +0 -0
  62. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_approval.py +0 -0
  63. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_approval_base.py +0 -0
  64. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_auth.py +0 -0
  65. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_chunk.py +0 -0
  66. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_commands.py +0 -0
  67. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_config_schema.py +0 -0
  68. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_debounce.py +0 -0
  69. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_defaults.py +0 -0
  70. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_discord_approval.py +0 -0
  71. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_email_utils.py +0 -0
  72. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_http_approval.py +0 -0
  73. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_pairing_ui.py +0 -0
  74. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_protocol_mixin.py +0 -0
  75. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_rate_limit.py +0 -0
  76. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_registry.py +0 -0
  77. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_resilience.py +0 -0
  78. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_session.py +0 -0
  79. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_slack_approval.py +0 -0
  80. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_telegram_approval.py +0 -0
  81. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_unknown_user.py +0 -0
  82. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_webhook_approval.py +0 -0
  83. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  84. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/agentmail.py +0 -0
  85. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/bot.py +0 -0
  86. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/botos.py +0 -0
  87. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/discord.py +0 -0
  88. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/email.py +0 -0
  89. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/media.py +0 -0
  90. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/slack.py +0 -0
  91. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/telegram.py +0 -0
  92. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/bots/whatsapp.py +0 -0
  93. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/__init__.py +0 -0
  94. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/agent.py +0 -0
  95. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/benchmark.py +0 -0
  96. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cdp_agent.py +0 -0
  97. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cdp_utils.py +0 -0
  98. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/cli.py +0 -0
  99. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/diagnostics.py +0 -0
  100. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/launcher.py +0 -0
  101. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/playwright_agent.py +0 -0
  102. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/profiling.py +0 -0
  103. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/protocol.py +0 -0
  104. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/report.py +0 -0
  105. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/server.py +0 -0
  106. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/sessions.py +0 -0
  107. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/browser/video.py +0 -0
  108. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/__init__.py +0 -0
  109. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/a2a.py +0 -0
  110. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/assistants.py +0 -0
  111. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/audio.py +0 -0
  112. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/batches.py +0 -0
  113. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/completions.py +0 -0
  114. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/container_files.py +0 -0
  115. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/containers.py +0 -0
  116. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/embeddings.py +0 -0
  117. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/files.py +0 -0
  118. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/fine_tuning.py +0 -0
  119. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/guardrails.py +0 -0
  120. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/images.py +0 -0
  121. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/mcp.py +0 -0
  122. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/messages.py +0 -0
  123. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/moderations.py +0 -0
  124. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/ocr.py +0 -0
  125. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/passthrough.py +0 -0
  126. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/rag.py +0 -0
  127. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/realtime.py +0 -0
  128. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/rerank.py +0 -0
  129. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/responses.py +0 -0
  130. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/search.py +0 -0
  131. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/skills.py +0 -0
  132. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/vector_store_files.py +0 -0
  133. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/vector_stores.py +0 -0
  134. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/capabilities/videos.py +0 -0
  135. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/claw/__init__.py +0 -0
  136. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/claw/default_app.py +0 -0
  137. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/__init__.py +0 -0
  138. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/_paths.py +0 -0
  139. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/app.py +0 -0
  140. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/branding.py +0 -0
  141. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/__init__.py +0 -0
  142. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/acp.py +0 -0
  143. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/agents.py +0 -0
  144. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/app.py +0 -0
  145. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/audit.py +0 -0
  146. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/batch.py +0 -0
  147. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/benchmark.py +0 -0
  148. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/bot.py +0 -0
  149. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/browser.py +0 -0
  150. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/call.py +0 -0
  151. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/chat.py +0 -0
  152. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/claw.py +0 -0
  153. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/code.py +0 -0
  154. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/commit.py +0 -0
  155. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/completion.py +0 -0
  156. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/config.py +0 -0
  157. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/context.py +0 -0
  158. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/dashboard.py +0 -0
  159. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/debug.py +0 -0
  160. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/deploy.py +0 -0
  161. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/diag.py +0 -0
  162. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/docs.py +0 -0
  163. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/doctor.py +0 -0
  164. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/endpoints.py +0 -0
  165. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/environment.py +0 -0
  166. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/eval.py +0 -0
  167. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/examples.py +0 -0
  168. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/flow.py +0 -0
  169. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/gateway.py +0 -0
  170. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/github.py +0 -0
  171. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/hooks.py +0 -0
  172. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/knowledge.py +0 -0
  173. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/langextract.py +0 -0
  174. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/langfuse.py +0 -0
  175. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/loop.py +0 -0
  176. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/lsp.py +0 -0
  177. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/managed.py +0 -0
  178. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/mcp.py +0 -0
  179. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/memory.py +0 -0
  180. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/mint_link.py +0 -0
  181. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/n8n.py +0 -0
  182. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/obs.py +0 -0
  183. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/onboard.py +0 -0
  184. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/package.py +0 -0
  185. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/pairing.py +0 -0
  186. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/paths.py +0 -0
  187. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/plugins.py +0 -0
  188. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/port.py +0 -0
  189. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/profile.py +0 -0
  190. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/publish.py +0 -0
  191. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/rag.py +0 -0
  192. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/realtime.py +0 -0
  193. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/recipe.py +0 -0
  194. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/registry.py +0 -0
  195. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/replay.py +0 -0
  196. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/research.py +0 -0
  197. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/retrieval.py +0 -0
  198. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/rules.py +0 -0
  199. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/run.py +0 -0
  200. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/sandbox.py +0 -0
  201. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/schedule.py +0 -0
  202. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/serve.py +0 -0
  203. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/session.py +0 -0
  204. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/setup.py +0 -0
  205. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/skills.py +0 -0
  206. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/standardise.py +0 -0
  207. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/templates.py +0 -0
  208. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/test.py +0 -0
  209. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/todo.py +0 -0
  210. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/tools.py +0 -0
  211. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/traces.py +0 -0
  212. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/tracker.py +0 -0
  213. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/train.py +0 -0
  214. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/ui.py +0 -0
  215. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/up.py +0 -0
  216. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/version.py +0 -0
  217. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/commands/workflow.py +0 -0
  218. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/config_loader.py +0 -0
  219. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/__init__.py +0 -0
  220. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/loader.py +0 -0
  221. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/paths.py +0 -0
  222. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/configuration/schema.py +0 -0
  223. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/__init__.py +0 -0
  224. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/core.py +0 -0
  225. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/profiler.py +0 -0
  226. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/request.py +0 -0
  227. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/execution/result.py +0 -0
  228. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/fallback_schema.py +0 -0
  229. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/__init__.py +0 -0
  230. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/acp.py +0 -0
  231. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/action_orchestrator.py +0 -0
  232. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agent_scheduler.py +0 -0
  233. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agent_tools.py +0 -0
  234. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/agents.py +0 -0
  235. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/approval.py +0 -0
  236. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/at_mentions.py +0 -0
  237. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/audit_cli.py +0 -0
  238. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/auto_memory.py +0 -0
  239. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/auto_mode.py +0 -0
  240. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/autonomy_mode.py +0 -0
  241. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/background.py +0 -0
  242. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/base.py +0 -0
  243. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/benchmark.py +0 -0
  244. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/bots_cli.py +0 -0
  245. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/capabilities.py +0 -0
  246. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/checkpoints.py +0 -0
  247. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/cli_profiler.py +0 -0
  248. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/code_intelligence.py +0 -0
  249. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/compaction.py +0 -0
  250. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/compare.py +0 -0
  251. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/config_hierarchy.py +0 -0
  252. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/context_manager.py +0 -0
  253. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/cost_tracker.py +0 -0
  254. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/csv_test_runner.py +0 -0
  255. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/debug.py +0 -0
  256. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/deploy.py +0 -0
  257. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/diag.py +0 -0
  258. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/display_jsonl.py +0 -0
  259. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/__init__.py +0 -0
  260. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  261. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  262. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  263. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  264. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  265. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  266. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  267. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  268. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  269. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  270. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  271. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  272. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  273. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  274. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  275. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  276. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  277. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/engine.py +0 -0
  278. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/formatters.py +0 -0
  279. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/handler.py +0 -0
  280. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/models.py +0 -0
  281. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/doctor/registry.py +0 -0
  282. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/endpoints.py +0 -0
  283. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/eval.py +0 -0
  284. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/examples.py +0 -0
  285. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/external_agents.py +0 -0
  286. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/fast_context.py +0 -0
  287. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/file_history.py +0 -0
  288. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/flow_display.py +0 -0
  289. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/gateway.py +0 -0
  290. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/git_attribution.py +0 -0
  291. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/git_integration.py +0 -0
  292. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/guardrail.py +0 -0
  293. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/handoff.py +0 -0
  294. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/hooks.py +0 -0
  295. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/hybrid_workflow.py +0 -0
  296. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/image.py +0 -0
  297. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_core_headless.py +0 -0
  298. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_runtime.py +0 -0
  299. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_test_harness.py +0 -0
  300. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_tools.py +0 -0
  301. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/interactive_tui.py +0 -0
  302. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/job_workflow.py +0 -0
  303. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/jobs.py +0 -0
  304. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/knowledge.py +0 -0
  305. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/knowledge_cli.py +0 -0
  306. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lite.py +0 -0
  307. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/logs.py +0 -0
  308. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lsp_cli.py +0 -0
  309. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  310. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/mcp.py +0 -0
  311. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/message_queue.py +0 -0
  312. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/metrics.py +0 -0
  313. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migrate.py +0 -0
  314. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migration_flow.py +0 -0
  315. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/migration_spec.py +0 -0
  316. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/n8n.py +0 -0
  317. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/observability.py +0 -0
  318. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/ollama.py +0 -0
  319. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/onboard.py +0 -0
  320. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/output_modes.py +0 -0
  321. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/output_style.py +0 -0
  322. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/package.py +0 -0
  323. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/performance.py +0 -0
  324. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/persistence.py +0 -0
  325. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/plugin_cli.py +0 -0
  326. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profile.py +0 -0
  327. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/__init__.py +0 -0
  328. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/core.py +0 -0
  329. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/optimizations.py +0 -0
  330. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiler/suite.py +0 -0
  331. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/profiling.py +0 -0
  332. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/__init__.py +0 -0
  333. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/manager.py +0 -0
  334. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/models.py +0 -0
  335. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/persistence.py +0 -0
  336. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/scheduler.py +0 -0
  337. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/queue/worker.py +0 -0
  338. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe.py +0 -0
  339. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_creator.py +0 -0
  340. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_optimizer.py +0 -0
  341. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipe_prompts.py +0 -0
  342. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/recipes.py +0 -0
  343. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/registry.py +0 -0
  344. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/repo_map.py +0 -0
  345. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/router.py +0 -0
  346. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/safe_shell.py +0 -0
  347. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sandbox_cli.py +0 -0
  348. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sandbox_executor.py +0 -0
  349. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/sdk_knowledge.py +0 -0
  350. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/serve.py +0 -0
  351. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/session.py +0 -0
  352. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/__init__.py +0 -0
  353. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/handler.py +0 -0
  354. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/setup/templates.py +0 -0
  355. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/skills.py +0 -0
  356. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/slash_commands.py +0 -0
  357. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/telemetry.py +0 -0
  358. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/templates.py +0 -0
  359. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/thinking.py +0 -0
  360. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/todo.py +0 -0
  361. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tools.py +0 -0
  362. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/__init__.py +0 -0
  363. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/app.py +0 -0
  364. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/cli.py +0 -0
  365. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/config.py +0 -0
  366. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/debug.py +0 -0
  367. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/events.py +0 -0
  368. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/mock_provider.py +0 -0
  369. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/orchestrator.py +0 -0
  370. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  371. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/help.py +0 -0
  372. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/main.py +0 -0
  373. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/queue.py +0 -0
  374. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/session.py +0 -0
  375. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/screens/settings.py +0 -0
  376. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/session_store.py +0 -0
  377. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  378. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  379. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  380. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  381. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  382. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  383. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/status.py +0 -0
  384. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  385. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/wizard.py +0 -0
  386. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/workflow.py +0 -0
  387. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/features/yaml_utils.py +0 -0
  388. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/__init__.py +0 -0
  389. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/async_tui.py +0 -0
  390. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/config.py +0 -0
  391. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/core.py +0 -0
  392. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/events.py +0 -0
  393. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  394. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  395. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  396. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/praison_io.py +0 -0
  397. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/repl.py +0 -0
  398. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/split_tui.py +0 -0
  399. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/interactive/tui_app.py +0 -0
  400. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/langfuse_client.py +0 -0
  401. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/legacy.py +0 -0
  402. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/main.py +0 -0
  403. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/output/__init__.py +0 -0
  404. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/output/console.py +0 -0
  405. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/schedule_cli.py +0 -0
  406. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/schema_provider.py +0 -0
  407. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/session/__init__.py +0 -0
  408. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/session/unified.py +0 -0
  409. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/__init__.py +0 -0
  410. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/identifiers.py +0 -0
  411. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/state/sessions.py +0 -0
  412. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/__init__.py +0 -0
  413. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/config.py +0 -0
  414. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/events.py +0 -0
  415. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/mg_backend.py +0 -0
  416. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/plain.py +0 -0
  417. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/ui/rich_backend.py +0 -0
  418. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli/unified_schema.py +0 -0
  419. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/__init__.py +0 -0
  420. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/claude.py +0 -0
  421. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/cli_backends/registry.py +0 -0
  422. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/__init__.py +0 -0
  423. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/agent_tools.py +0 -0
  424. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/diff/__init__.py +0 -0
  425. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/diff/diff_strategy.py +0 -0
  426. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/__init__.py +0 -0
  427. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/apply_diff.py +0 -0
  428. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/execute_command.py +0 -0
  429. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/list_files.py +0 -0
  430. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/read_file.py +0 -0
  431. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/search_replace.py +0 -0
  432. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/tools/write_file.py +0 -0
  433. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/__init__.py +0 -0
  434. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/file_utils.py +0 -0
  435. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/ignore_utils.py +0 -0
  436. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/code/utils/text_utils.py +0 -0
  437. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/__init__.py +0 -0
  438. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/artifact_store.py +0 -0
  439. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/config.py +0 -0
  440. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/history_store.py +0 -0
  441. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/queue.py +0 -0
  442. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/setup.py +0 -0
  443. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/context/terminal_logger.py +0 -0
  444. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/__init__.py +0 -0
  445. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/launchd.py +0 -0
  446. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/systemd.py +0 -0
  447. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/daemon/windows.py +0 -0
  448. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/db/__init__.py +0 -0
  449. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/db/adapter.py +0 -0
  450. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/__init__.py +0 -0
  451. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/api.py +0 -0
  452. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/docker.py +0 -0
  453. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/doctor.py +0 -0
  454. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/main.py +0 -0
  455. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/models.py +0 -0
  456. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/__init__.py +0 -0
  457. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/aws.py +0 -0
  458. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/azure.py +0 -0
  459. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/base.py +0 -0
  460. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/providers/gcp.py +0 -0
  461. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/deploy/schema.py +0 -0
  462. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/__init__.py +0 -0
  463. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/classifier.py +0 -0
  464. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/executor.py +0 -0
  465. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/extractor.py +0 -0
  466. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/reporter.py +0 -0
  467. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/runner.py +0 -0
  468. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/docs_runner/workspace.py +0 -0
  469. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/__init__.py +0 -0
  470. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/a2u_server.py +0 -0
  471. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/discovery.py +0 -0
  472. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/__init__.py +0 -0
  473. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/a2a.py +0 -0
  474. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/a2u.py +0 -0
  475. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/agents_api.py +0 -0
  476. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/base.py +0 -0
  477. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/mcp.py +0 -0
  478. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/recipe.py +0 -0
  479. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  480. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/registry.py +0 -0
  481. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/endpoints/server.py +0 -0
  482. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/__init__.py +0 -0
  483. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/client.py +0 -0
  484. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  485. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  486. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/components/__init__.py +0 -0
  487. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/converter.py +0 -0
  488. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/flow/helpers.py +0 -0
  489. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/__init__.py +0 -0
  490. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  491. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/base.py +0 -0
  492. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  493. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  494. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/framework_adapters/registry.py +0 -0
  495. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/__init__.py +0 -0
  496. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/auth.py +0 -0
  497. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/cookie_auth.py +0 -0
  498. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/exec_approval.py +0 -0
  499. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/gateway_approval.py +0 -0
  500. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/magic_link.py +0 -0
  501. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/origin_check.py +0 -0
  502. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/pairing.py +0 -0
  503. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/pairing_routes.py +0 -0
  504. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_channels.py +0 -0
  505. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_delivery.py +0 -0
  506. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_polling.py +0 -0
  507. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/push_presence.py +0 -0
  508. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/rate_limiter.py +0 -0
  509. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/redis_pubsub.py +0 -0
  510. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/gateway/server.py +0 -0
  511. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inbuilt_tools/__init__.py +0 -0
  512. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  513. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/__init__.py +0 -0
  514. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/config.py +0 -0
  515. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/inc/models.py +0 -0
  516. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/__init__.py +0 -0
  517. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/_session_info.py +0 -0
  518. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/_tool_aliases.py +0 -0
  519. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/base.py +0 -0
  520. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/claude_code.py +0 -0
  521. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/codex_cli.py +0 -0
  522. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/__init__.py +0 -0
  523. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/daytona.py +0 -0
  524. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/docker.py +0 -0
  525. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/e2b.py +0 -0
  526. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/flyio.py +0 -0
  527. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/local.py +0 -0
  528. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/compute/modal_compute.py +0 -0
  529. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/cursor_cli.py +0 -0
  530. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/db_session_adapter.py +0 -0
  531. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/gemini_cli.py +0 -0
  532. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/hosted_agent.py +0 -0
  533. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/local_agent.py +0 -0
  534. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/managed_agents.py +0 -0
  535. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/managed_local.py +0 -0
  536. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/registry.py +0 -0
  537. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/integrations/sandboxed_agent.py +0 -0
  538. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/__init__.py +0 -0
  539. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/executor.py +0 -0
  540. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/models.py +0 -0
  541. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/router.py +0 -0
  542. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/server.py +0 -0
  543. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/jobs/store.py +0 -0
  544. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/llm/__init__.py +0 -0
  545. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/__init__.py +0 -0
  546. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/__init__.py +0 -0
  547. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/agents.py +0 -0
  548. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  549. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  550. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  551. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  552. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/memory.py +0 -0
  553. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/prompts.py +0 -0
  554. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/resources.py +0 -0
  555. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  556. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/__init__.py +0 -0
  557. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/api_key.py +0 -0
  558. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/oauth.py +0 -0
  559. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/oidc.py +0 -0
  560. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/auth/scopes.py +0 -0
  561. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/cli.py +0 -0
  562. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/elicitation.py +0 -0
  563. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/icons.py +0 -0
  564. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/recipe_adapter.py +0 -0
  565. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/recipe_cli.py +0 -0
  566. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/registry.py +0 -0
  567. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/sampling.py +0 -0
  568. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/server.py +0 -0
  569. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/tasks.py +0 -0
  570. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/tool_index.py +0 -0
  571. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/__init__.py +0 -0
  572. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/http_stream.py +0 -0
  573. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/mcp_server/transports/stdio.py +0 -0
  574. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/__init__.py +0 -0
  575. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/client.py +0 -0
  576. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/converter.py +0 -0
  577. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/preview.py +0 -0
  578. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/n8n/reverse_converter.py +0 -0
  579. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/__init__.py +0 -0
  580. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/langextract.py +0 -0
  581. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/observability/langfuse.py +0 -0
  582. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/__init__.py +0 -0
  583. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/config.py +0 -0
  584. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/__init__.py +0 -0
  585. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/base.py +0 -0
  586. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/json_store.py +0 -0
  587. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/mysql.py +0 -0
  588. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/postgres.py +0 -0
  589. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/singlestore.py +0 -0
  590. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/sqlite.py +0 -0
  591. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/supabase.py +0 -0
  592. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/surrealdb.py +0 -0
  593. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/conversation/turso.py +0 -0
  594. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/hooks/__init__.py +0 -0
  595. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  596. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/__init__.py +0 -0
  597. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/base.py +0 -0
  598. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/cassandra.py +0 -0
  599. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/chroma.py +0 -0
  600. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  601. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  602. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/couchbase.py +0 -0
  603. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/lancedb.py +0 -0
  604. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  605. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  606. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  607. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/milvus.py +0 -0
  608. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  609. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/pgvector.py +0 -0
  610. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/pinecone.py +0 -0
  611. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/qdrant.py +0 -0
  612. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  613. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  614. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  615. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  616. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/knowledge/weaviate.py +0 -0
  617. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/migrations/__init__.py +0 -0
  618. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/migrations/manager.py +0 -0
  619. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/orchestrator.py +0 -0
  620. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/__init__.py +0 -0
  621. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/async_mongodb.py +0 -0
  622. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/base.py +0 -0
  623. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/dynamodb.py +0 -0
  624. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/firestore.py +0 -0
  625. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/gcs.py +0 -0
  626. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/memory.py +0 -0
  627. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/mongodb.py +0 -0
  628. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/redis.py +0 -0
  629. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/state/upstash.py +0 -0
  630. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/tests/__init__.py +0 -0
  631. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/persistence/tests/test_all_backends.py +0 -0
  632. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/profiler.py +0 -0
  633. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/__init__.py +0 -0
  634. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/client.py +0 -0
  635. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/push/transports.py +0 -0
  636. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/__init__.py +0 -0
  637. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/bridge.py +0 -0
  638. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/core.py +0 -0
  639. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/exceptions.py +0 -0
  640. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/history.py +0 -0
  641. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/models.py +0 -0
  642. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/operations.py +0 -0
  643. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/policy.py +0 -0
  644. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/registry.py +0 -0
  645. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/runtime.py +0 -0
  646. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/security.py +0 -0
  647. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/serve.py +0 -0
  648. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/recipe/server.py +0 -0
  649. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/__init__.py +0 -0
  650. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/analyzer.py +0 -0
  651. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/applier.py +0 -0
  652. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/judge.py +0 -0
  653. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/plan.py +0 -0
  654. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/player.py +0 -0
  655. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/reader.py +0 -0
  656. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/storage.py +0 -0
  657. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/replay/writer.py +0 -0
  658. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/__init__.py +0 -0
  659. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/daytona.py +0 -0
  660. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/docker.py +0 -0
  661. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/modal.py +0 -0
  662. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/sandlock.py +0 -0
  663. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/ssh.py +0 -0
  664. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/sandbox/subprocess.py +0 -0
  665. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/__init__.py +0 -0
  666. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/agent_scheduler.py +0 -0
  667. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/base.py +0 -0
  668. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/daemon_manager.py +0 -0
  669. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/executor.py +0 -0
  670. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/shared.py +0 -0
  671. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/state_manager.py +0 -0
  672. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler/yaml_loader.py +0 -0
  673. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/scheduler.py +0 -0
  674. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/__init__.py +0 -0
  675. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/audit.py +0 -0
  676. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/injection.py +0 -0
  677. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/security/protected.py +0 -0
  678. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/__init__.py +0 -0
  679. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/build.py +0 -0
  680. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/post_install.py +0 -0
  681. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup/setup_conda_env.py +0 -0
  682. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/setup.py +0 -0
  683. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/__init__.py +0 -0
  684. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/ai_generator.py +0 -0
  685. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/config.py +0 -0
  686. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/dedupe.py +0 -0
  687. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/discovery.py +0 -0
  688. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/drift.py +0 -0
  689. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/engine.py +0 -0
  690. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/enhanced_templates.py +0 -0
  691. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/example_verifier.py +0 -0
  692. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/manifest.py +0 -0
  693. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/models.py +0 -0
  694. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/reports.py +0 -0
  695. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/templates.py +0 -0
  696. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/undo_redo.py +0 -0
  697. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/standardise/validator.py +0 -0
  698. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/__init__.py +0 -0
  699. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/dynamodb_adapter.py +0 -0
  700. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/mongodb_adapter.py +0 -0
  701. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/postgresql_adapter.py +0 -0
  702. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/storage/redis_adapter.py +0 -0
  703. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/__init__.py +0 -0
  704. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/batch_source.py +0 -0
  705. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/cli_docs_source.py +0 -0
  706. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/discovery.py +0 -0
  707. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/docs_source.py +0 -0
  708. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/examples_source.py +0 -0
  709. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/executor.py +0 -0
  710. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/models.py +0 -0
  711. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/report_viewer.py +0 -0
  712. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/reporter.py +0 -0
  713. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/suite_runner/runner.py +0 -0
  714. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/__init__.py +0 -0
  715. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/cache.py +0 -0
  716. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/dependency_checker.py +0 -0
  717. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/discovery.py +0 -0
  718. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/loader.py +0 -0
  719. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/registry.py +0 -0
  720. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/resolver.py +0 -0
  721. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/security.py +0 -0
  722. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/tool_override.py +0 -0
  723. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/templates/tools_doctor.py +0 -0
  724. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/test.py +0 -0
  725. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tool_registry.py +0 -0
  726. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tool_resolver.py +0 -0
  727. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/__init__.py +0 -0
  728. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/audio.py +0 -0
  729. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/glob_tool.py +0 -0
  730. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/grep_tool.py +0 -0
  731. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/multiedit.py +0 -0
  732. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/tools/skill_manage.py +0 -0
  733. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/__init__.py +0 -0
  734. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/__init__.py +0 -0
  735. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/grader.py +0 -0
  736. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/hook.py +0 -0
  737. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/models.py +0 -0
  738. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/orchestrator.py +0 -0
  739. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/agents/storage.py +0 -0
  740. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/llm/__init__.py +0 -0
  741. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train/llm/trainer.py +0 -0
  742. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train.py +0 -0
  743. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/train_vision.py +0 -0
  744. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/_aiui_datastore.py +0 -0
  745. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/_external_agents.py +0 -0
  746. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/callbacks.py +0 -0
  747. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/components/aicoder.py +0 -0
  748. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/context.py +0 -0
  749. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui/database_config.py +0 -0
  750. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_agents/__init__.py +0 -0
  751. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_agents/default_app.py +0 -0
  752. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_bot/__init__.py +0 -0
  753. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_bot/default_app.py +0 -0
  754. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_chat/__init__.py +0 -0
  755. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_chat/default_app.py +0 -0
  756. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_realtime/__init__.py +0 -0
  757. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/ui_realtime/default_app.py +0 -0
  758. {praisonai-4.6.34 → praisonai-4.6.35}/praisonai/upload_vision.py +0 -0
  759. {praisonai-4.6.34 → praisonai-4.6.35}/setup.cfg +0 -0
  760. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test.py +0 -0
  761. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_agents_playbook.py +0 -0
  762. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_approval_system.py +0 -0
  763. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_basic.py +0 -0
  764. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_cli_features.py +0 -0
  765. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_custom_tools_fix.py +0 -0
  766. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_double_api_fix.py +0 -0
  767. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_agent_invoke.py +0 -0
  768. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_cli_feature.py +0 -0
  769. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_n8n_integration.py +0 -0
  770. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_phase2_refactor.py +0 -0
  771. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_recipe.py +0 -0
  772. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_registry.py +0 -0
  773. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_runner.py +0 -0
  774. {praisonai-4.6.34 → praisonai-4.6.35}/tests/test_sandboxed_agent_compatibility.py +0 -0
  775. {praisonai-4.6.34 → praisonai-4.6.35}/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.34
3
+ Version: 4.6.35
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.34
14
+ Requires-Dist: praisonaiagents>=1.6.35
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<=1.82.6,>=1.81.0
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.34
3
+ Version: 4.6.35
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.34
14
+ Requires-Dist: praisonaiagents>=1.6.35
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<=1.82.6,>=1.81.0
17
17
  Requires-Dist: PyYAML>=6.0
@@ -584,6 +584,7 @@ praisonai/persistence/__init__.py
584
584
  praisonai/persistence/config.py
585
585
  praisonai/persistence/factory.py
586
586
  praisonai/persistence/orchestrator.py
587
+ praisonai/persistence/registry.py
587
588
  praisonai/persistence/conversation/__init__.py
588
589
  praisonai/persistence/conversation/async_mysql.py
589
590
  praisonai/persistence/conversation/async_postgres.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.34
4
+ praisonaiagents>=1.6.35
5
5
  python-dotenv>=0.19.0
6
6
  litellm<=1.82.6,>=1.81.0
7
7
  PyYAML>=6.0
@@ -57,7 +57,7 @@ class CloudDeployer:
57
57
  file.write("FROM python:3.11-slim\n")
58
58
  file.write("WORKDIR /app\n")
59
59
  file.write("COPY . .\n")
60
- file.write("RUN pip install flask praisonai==4.6.34 gunicorn markdown\n")
60
+ file.write("RUN pip install flask praisonai==4.6.35 gunicorn markdown\n")
61
61
  file.write("EXPOSE 8080\n")
62
62
  file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
63
63
 
@@ -21,6 +21,7 @@ Example:
21
21
  """
22
22
 
23
23
  from typing import Any, Callable, Dict, List, Optional, Type, Union
24
+ import threading
24
25
 
25
26
 
26
27
  # Type aliases
@@ -35,12 +36,33 @@ class LLMProviderRegistry:
35
36
 
36
37
  Manages registration and resolution of LLM providers by name.
37
38
  Supports lazy loading, aliases, and isolated instances.
39
+ Thread-safe for concurrent operations.
38
40
  """
39
41
 
42
+ _instance: Optional["LLMProviderRegistry"] = None
43
+ _instance_lock = threading.Lock()
44
+
40
45
  def __init__(self):
41
46
  """Initialize an empty registry."""
42
47
  self._providers: Dict[str, ProviderType] = {}
43
48
  self._aliases: Dict[str, str] = {} # alias -> canonical name
49
+ self._lock = threading.RLock() # RLock for re-entrant calls
50
+ # Register built-in providers during initialization
51
+ _register_builtin_providers(self)
52
+
53
+ @classmethod
54
+ def get_instance(cls) -> "LLMProviderRegistry":
55
+ """
56
+ Get the singleton registry instance.
57
+
58
+ Returns:
59
+ LLMProviderRegistry: The singleton registry instance
60
+ """
61
+ if cls._instance is None:
62
+ with cls._instance_lock:
63
+ if cls._instance is None:
64
+ cls._instance = cls()
65
+ return cls._instance
44
66
 
45
67
  def register(
46
68
  self,
@@ -62,35 +84,48 @@ class LLMProviderRegistry:
62
84
  Raises:
63
85
  ValueError: If name is already registered (unless override=True)
64
86
  """
65
- normalized_name = name.lower()
66
-
67
- # Check for existing registration
68
- if normalized_name in self._providers and not override:
69
- raise ValueError(
70
- f"Provider '{name}' is already registered. "
71
- f"Use override=True to replace it."
72
- )
73
-
74
- self._providers[normalized_name] = provider
75
-
76
- # Register aliases
77
- if aliases:
78
- for alias in aliases:
79
- normalized_alias = alias.lower()
80
- # Check collision with existing provider name
81
- if normalized_alias in self._providers and not override:
82
- raise ValueError(
83
- f"Alias '{alias}' conflicts with existing provider name. "
84
- f"Use override=True to replace it."
85
- )
86
- # Check collision with existing alias
87
- if normalized_alias in self._aliases and not override:
88
- existing_target = self._aliases[normalized_alias]
89
- raise ValueError(
90
- f"Alias '{alias}' is already registered (points to '{existing_target}'). "
91
- f"Use override=True to replace it."
92
- )
93
- self._aliases[normalized_alias] = normalized_name
87
+ with self._lock:
88
+ normalized_name = name.lower()
89
+
90
+ # Check for existing registration
91
+ if normalized_name in self._providers and not override:
92
+ raise ValueError(
93
+ f"Provider '{name}' is already registered. "
94
+ f"Use override=True to replace it."
95
+ )
96
+
97
+ # Check if this canonical name conflicts with existing alias
98
+ if normalized_name in self._aliases and not override:
99
+ existing_target = self._aliases[normalized_name]
100
+ raise ValueError(
101
+ f"Cannot register provider '{name}' - it conflicts with existing alias "
102
+ f"(currently points to '{existing_target}'). Use override=True to replace it."
103
+ )
104
+
105
+ # If override=True, clean up any existing alias before registering canonical name
106
+ if override and normalized_name in self._aliases:
107
+ del self._aliases[normalized_name]
108
+
109
+ self._providers[normalized_name] = provider
110
+
111
+ # Register aliases
112
+ if aliases:
113
+ for alias in aliases:
114
+ normalized_alias = alias.lower()
115
+ # Check collision with existing provider name
116
+ if normalized_alias in self._providers and not override:
117
+ raise ValueError(
118
+ f"Alias '{alias}' conflicts with existing provider name. "
119
+ f"Use override=True to replace it."
120
+ )
121
+ # Check collision with existing alias
122
+ if normalized_alias in self._aliases and not override:
123
+ existing_target = self._aliases[normalized_alias]
124
+ raise ValueError(
125
+ f"Alias '{alias}' is already registered (points to '{existing_target}'). "
126
+ f"Use override=True to replace it."
127
+ )
128
+ self._aliases[normalized_alias] = normalized_name
94
129
 
95
130
  def unregister(self, name: str) -> bool:
96
131
  """
@@ -102,27 +137,28 @@ class LLMProviderRegistry:
102
137
  Returns:
103
138
  True if provider was unregistered, False if not found
104
139
  """
105
- normalized_name = name.lower()
106
-
107
- # Check if it's an alias
108
- if normalized_name in self._aliases:
109
- del self._aliases[normalized_name]
110
- return True
111
-
112
- # Check if it's a canonical name
113
- if normalized_name in self._providers:
114
- # Remove all aliases pointing to this provider
115
- aliases_to_remove = [
116
- alias for alias, canonical in self._aliases.items()
117
- if canonical == normalized_name
118
- ]
119
- for alias in aliases_to_remove:
120
- del self._aliases[alias]
140
+ with self._lock:
141
+ normalized_name = name.lower()
121
142
 
122
- del self._providers[normalized_name]
123
- return True
124
-
125
- return False
143
+ # Check if it's an alias
144
+ if normalized_name in self._aliases:
145
+ del self._aliases[normalized_name]
146
+ return True
147
+
148
+ # Check if it's a canonical name
149
+ if normalized_name in self._providers:
150
+ # Remove all aliases pointing to this provider
151
+ aliases_to_remove = [
152
+ alias for alias, canonical in self._aliases.items()
153
+ if canonical == normalized_name
154
+ ]
155
+ for alias in aliases_to_remove:
156
+ del self._aliases[alias]
157
+
158
+ del self._providers[normalized_name]
159
+ return True
160
+
161
+ return False
126
162
 
127
163
  def has(self, name: str) -> bool:
128
164
  """
@@ -134,8 +170,9 @@ class LLMProviderRegistry:
134
170
  Returns:
135
171
  True if provider is registered
136
172
  """
137
- normalized_name = name.lower()
138
- return normalized_name in self._providers or normalized_name in self._aliases
173
+ with self._lock:
174
+ normalized_name = name.lower()
175
+ return normalized_name in self._providers or normalized_name in self._aliases
139
176
 
140
177
  def list(self) -> List[str]:
141
178
  """
@@ -144,7 +181,8 @@ class LLMProviderRegistry:
144
181
  Returns:
145
182
  List of provider names
146
183
  """
147
- return list(self._providers.keys())
184
+ with self._lock:
185
+ return list(self._providers.keys())
148
186
 
149
187
  def list_all(self) -> List[str]:
150
188
  """
@@ -153,7 +191,8 @@ class LLMProviderRegistry:
153
191
  Returns:
154
192
  List of all registered names and aliases
155
193
  """
156
- return list(self._providers.keys()) + list(self._aliases.keys())
194
+ with self._lock:
195
+ return list(self._providers.keys()) + list(self._aliases.keys())
157
196
 
158
197
  def resolve(
159
198
  self,
@@ -175,21 +214,22 @@ class LLMProviderRegistry:
175
214
  Raises:
176
215
  ValueError: If provider not found
177
216
  """
178
- normalized_name = name.lower()
179
-
180
- # Resolve alias to canonical name
181
- canonical_name = self._aliases.get(normalized_name, normalized_name)
182
-
183
- provider = self._providers.get(canonical_name)
184
- if provider is None:
185
- available = self.list()
186
- raise ValueError(
187
- f"Unknown provider: '{name}'. "
188
- f"Available providers: {', '.join(available) if available else 'none'}. "
189
- f"Register a custom provider with register_llm_provider('{name}', YourProviderClass)."
190
- )
217
+ with self._lock:
218
+ normalized_name = name.lower()
219
+
220
+ # Resolve alias to canonical name
221
+ canonical_name = self._aliases.get(normalized_name, normalized_name)
222
+
223
+ provider = self._providers.get(canonical_name)
224
+ if provider is None:
225
+ available = list(self._providers.keys()) # Don't call self.list() to avoid double-locking
226
+ raise ValueError(
227
+ f"Unknown provider: '{name}'. "
228
+ f"Available providers: {', '.join(available) if available else 'none'}. "
229
+ f"Register a custom provider with register_llm_provider('{name}', YourProviderClass)."
230
+ )
191
231
 
192
- # Create instance
232
+ # Create instance outside the lock
193
233
  return provider(model_id, config)
194
234
 
195
235
  def get(self, name: str) -> Optional[ProviderType]:
@@ -202,30 +242,24 @@ class LLMProviderRegistry:
202
242
  Returns:
203
243
  Provider class/factory or None
204
244
  """
205
- normalized_name = name.lower()
206
- canonical_name = self._aliases.get(normalized_name, normalized_name)
207
- return self._providers.get(canonical_name)
245
+ with self._lock:
246
+ normalized_name = name.lower()
247
+ canonical_name = self._aliases.get(normalized_name, normalized_name)
248
+ return self._providers.get(canonical_name)
208
249
 
209
250
 
210
251
  # ============================================================================
211
252
  # Default Registry Singleton
212
253
  # ============================================================================
213
254
 
214
- _default_registry: Optional[LLMProviderRegistry] = None
215
-
216
-
217
255
  def get_default_llm_registry() -> LLMProviderRegistry:
218
256
  """
219
257
  Get the default global LLM provider registry.
220
258
 
221
259
  This is the registry used by create_llm_provider() when no custom registry
222
- is specified.
260
+ is specified. Uses the thread-safe singleton pattern.
223
261
  """
224
- global _default_registry
225
- if _default_registry is None:
226
- _default_registry = LLMProviderRegistry()
227
- _register_builtin_providers(_default_registry)
228
- return _default_registry
262
+ return LLMProviderRegistry.get_instance()
229
263
 
230
264
 
231
265
  def _register_builtin_providers(registry: LLMProviderRegistry) -> None:
@@ -378,5 +412,5 @@ def create_llm_provider(
378
412
 
379
413
  def _reset_default_registry() -> None:
380
414
  """Reset the default registry (mainly for testing)."""
381
- global _default_registry
382
- _default_registry = None
415
+ with LLMProviderRegistry._instance_lock:
416
+ LLMProviderRegistry._instance = None
@@ -41,7 +41,7 @@ class AsyncMySQLConversationStore(ConversationStore):
41
41
  database: str = "praisonai",
42
42
  user: str = "root",
43
43
  password: str = "",
44
- table_prefix: str = "praisonai_",
44
+ table_prefix: str = "praison_",
45
45
  pool_size: int = 10,
46
46
  ):
47
47
  """
@@ -122,6 +122,7 @@ class AsyncMySQLConversationStore(ConversationStore):
122
122
  user_id VARCHAR(255),
123
123
  agent_id VARCHAR(255),
124
124
  name VARCHAR(255),
125
+ state JSON,
125
126
  metadata JSON,
126
127
  created_at DOUBLE,
127
128
  updated_at DOUBLE,
@@ -136,6 +137,8 @@ class AsyncMySQLConversationStore(ConversationStore):
136
137
  session_id VARCHAR(255),
137
138
  role VARCHAR(50),
138
139
  content TEXT,
140
+ tool_calls JSON,
141
+ tool_call_id VARCHAR(255),
139
142
  metadata JSON,
140
143
  created_at DOUBLE,
141
144
  INDEX idx_session_id (session_id),
@@ -152,9 +155,10 @@ class AsyncMySQLConversationStore(ConversationStore):
152
155
  async with self._pool.acquire() as conn:
153
156
  async with conn.cursor() as cur:
154
157
  await cur.execute(f"""
155
- INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
156
- VALUES (%s, %s, %s, %s, %s, %s, %s)
158
+ INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
159
+ VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
157
160
  """, (session.session_id, session.user_id, session.agent_id, session.name,
161
+ json.dumps(session.state) if session.state else None,
158
162
  json.dumps(session.metadata) if session.metadata else None,
159
163
  session.created_at, session.updated_at))
160
164
 
@@ -173,7 +177,7 @@ class AsyncMySQLConversationStore(ConversationStore):
173
177
  async with self._pool.acquire() as conn:
174
178
  async with conn.cursor() as cur:
175
179
  await cur.execute(f"""
176
- SELECT session_id, user_id, agent_id, name, metadata, created_at, updated_at
180
+ SELECT session_id, user_id, agent_id, name, state, metadata, created_at, updated_at
177
181
  FROM {table} WHERE session_id = %s
178
182
  """, (session_id,))
179
183
  row = await cur.fetchone()
@@ -184,9 +188,10 @@ class AsyncMySQLConversationStore(ConversationStore):
184
188
  user_id=row[1],
185
189
  agent_id=row[2],
186
190
  name=row[3],
187
- metadata=json.loads(row[4]) if row[4] else None,
188
- created_at=row[5],
189
- updated_at=row[6]
191
+ state=json.loads(row[4]) if row[4] else None,
192
+ metadata=json.loads(row[5]) if row[5] else None,
193
+ created_at=row[6],
194
+ updated_at=row[7]
190
195
  )
191
196
  return None
192
197
 
@@ -206,9 +211,11 @@ class AsyncMySQLConversationStore(ConversationStore):
206
211
  async with conn.cursor() as cur:
207
212
  await cur.execute(f"""
208
213
  UPDATE {table}
209
- SET name = %s, metadata = %s, updated_at = %s
214
+ SET name = %s, state = %s, metadata = %s, updated_at = %s
210
215
  WHERE session_id = %s
211
- """, (session.name, json.dumps(session.metadata) if session.metadata else None,
216
+ """, (session.name,
217
+ json.dumps(session.state) if session.state else None,
218
+ json.dumps(session.metadata) if session.metadata else None,
212
219
  session.updated_at, session.session_id))
213
220
 
214
221
  return session
@@ -263,7 +270,7 @@ class AsyncMySQLConversationStore(ConversationStore):
263
270
  async with self._pool.acquire() as conn:
264
271
  async with conn.cursor() as cur:
265
272
  await cur.execute(f"""
266
- SELECT session_id, user_id, agent_id, name, metadata, created_at, updated_at
273
+ SELECT session_id, user_id, agent_id, name, state, metadata, created_at, updated_at
267
274
  FROM {table} {where_clause}
268
275
  ORDER BY updated_at DESC
269
276
  LIMIT %s OFFSET %s
@@ -276,9 +283,10 @@ class AsyncMySQLConversationStore(ConversationStore):
276
283
  user_id=row[1],
277
284
  agent_id=row[2],
278
285
  name=row[3],
279
- metadata=json.loads(row[4]) if row[4] else None,
280
- created_at=row[5],
281
- updated_at=row[6]
286
+ state=json.loads(row[4]) if row[4] else None,
287
+ metadata=json.loads(row[5]) if row[5] else None,
288
+ created_at=row[6],
289
+ updated_at=row[7]
282
290
  )
283
291
  for row in rows
284
292
  ]
@@ -304,9 +312,11 @@ class AsyncMySQLConversationStore(ConversationStore):
304
312
  async with self._pool.acquire() as conn:
305
313
  async with conn.cursor() as cur:
306
314
  await cur.execute(f"""
307
- INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
308
- VALUES (%s, %s, %s, %s, %s, %s)
315
+ INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
316
+ VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
309
317
  """, (message.id, session_id, message.role, message.content,
318
+ json.dumps(message.tool_calls) if message.tool_calls else None,
319
+ message.tool_call_id,
310
320
  json.dumps(message.metadata) if message.metadata else None,
311
321
  message.created_at))
312
322
 
@@ -347,7 +357,7 @@ class AsyncMySQLConversationStore(ConversationStore):
347
357
  async with self._pool.acquire() as conn:
348
358
  async with conn.cursor() as cur:
349
359
  await cur.execute(f"""
350
- SELECT id, session_id, role, content, metadata, created_at
360
+ SELECT id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at
351
361
  FROM {table} {where_clause}
352
362
  ORDER BY created_at ASC {limit_clause}
353
363
  """, params)
@@ -359,8 +369,10 @@ class AsyncMySQLConversationStore(ConversationStore):
359
369
  session_id=row[1],
360
370
  role=row[2],
361
371
  content=row[3],
362
- metadata=json.loads(row[4]) if row[4] else None,
363
- created_at=row[5]
372
+ tool_calls=json.loads(row[4]) if row[4] else None,
373
+ tool_call_id=row[5],
374
+ metadata=json.loads(row[6]) if row[6] else None,
375
+ created_at=row[7]
364
376
  )
365
377
  for row in rows
366
378
  ]
@@ -39,7 +39,7 @@ class AsyncPostgresConversationStore(ConversationStore):
39
39
  database: str = "praisonai",
40
40
  user: str = "postgres",
41
41
  password: str = "",
42
- table_prefix: str = "praisonai_",
42
+ table_prefix: str = "praison_",
43
43
  pool_size: int = 10,
44
44
  ):
45
45
  """
@@ -116,6 +116,7 @@ class AsyncPostgresConversationStore(ConversationStore):
116
116
  user_id VARCHAR(255),
117
117
  agent_id VARCHAR(255),
118
118
  name VARCHAR(255),
119
+ state JSONB,
119
120
  metadata JSONB,
120
121
  created_at DOUBLE PRECISION,
121
122
  updated_at DOUBLE PRECISION
@@ -128,6 +129,8 @@ class AsyncPostgresConversationStore(ConversationStore):
128
129
  session_id VARCHAR(255) REFERENCES {sessions_table}(session_id) ON DELETE CASCADE,
129
130
  role VARCHAR(50),
130
131
  content TEXT,
132
+ tool_calls JSONB,
133
+ tool_call_id VARCHAR(255),
131
134
  metadata JSONB,
132
135
  created_at DOUBLE PRECISION
133
136
  )
@@ -146,9 +149,10 @@ class AsyncPostgresConversationStore(ConversationStore):
146
149
  table = f"{self.table_prefix}sessions"
147
150
  async with self._pool.acquire() as conn:
148
151
  await conn.execute(f"""
149
- INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
150
- VALUES ($1, $2, $3, $4, $5, $6, $7)
152
+ INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
153
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
151
154
  """, session.session_id, session.user_id, session.agent_id, session.name,
155
+ json.dumps(session.state) if session.state else None,
152
156
  json.dumps(session.metadata) if session.metadata else None,
153
157
  session.created_at, session.updated_at)
154
158
 
@@ -175,6 +179,7 @@ class AsyncPostgresConversationStore(ConversationStore):
175
179
  user_id=row['user_id'],
176
180
  agent_id=row['agent_id'],
177
181
  name=row['name'],
182
+ state=json.loads(row['state']) if row['state'] else None,
178
183
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
179
184
  created_at=row['created_at'],
180
185
  updated_at=row['updated_at']
@@ -196,9 +201,10 @@ class AsyncPostgresConversationStore(ConversationStore):
196
201
  async with self._pool.acquire() as conn:
197
202
  await conn.execute(f"""
198
203
  UPDATE {table}
199
- SET name = $2, metadata = $3, updated_at = $4
204
+ SET name = $2, state = $3, metadata = $4, updated_at = $5
200
205
  WHERE session_id = $1
201
206
  """, session.session_id, session.name,
207
+ json.dumps(session.state) if session.state else None,
202
208
  json.dumps(session.metadata) if session.metadata else None,
203
209
  session.updated_at)
204
210
 
@@ -267,6 +273,7 @@ class AsyncPostgresConversationStore(ConversationStore):
267
273
  user_id=row['user_id'],
268
274
  agent_id=row['agent_id'],
269
275
  name=row['name'],
276
+ state=json.loads(row['state']) if row['state'] else None,
270
277
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
271
278
  created_at=row['created_at'],
272
279
  updated_at=row['updated_at']
@@ -294,9 +301,11 @@ class AsyncPostgresConversationStore(ConversationStore):
294
301
 
295
302
  async with self._pool.acquire() as conn:
296
303
  await conn.execute(f"""
297
- INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
298
- VALUES ($1, $2, $3, $4, $5, $6)
304
+ INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
305
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
299
306
  """, message.id, session_id, message.role, message.content,
307
+ json.dumps(message.tool_calls) if message.tool_calls else None,
308
+ message.tool_call_id,
300
309
  json.dumps(message.metadata) if message.metadata else None,
301
310
  message.created_at)
302
311
 
@@ -349,6 +358,8 @@ class AsyncPostgresConversationStore(ConversationStore):
349
358
  session_id=row['session_id'],
350
359
  role=row['role'],
351
360
  content=row['content'],
361
+ tool_calls=json.loads(row['tool_calls']) if row['tool_calls'] else None,
362
+ tool_call_id=row['tool_call_id'],
352
363
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
353
364
  created_at=row['created_at']
354
365
  )
@@ -31,7 +31,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
31
31
  def __init__(
32
32
  self,
33
33
  path: str = "praisonai_conversations.db",
34
- table_prefix: str = "praisonai_",
34
+ table_prefix: str = "praison_",
35
35
  ):
36
36
  """
37
37
  Initialize async SQLite store.
@@ -76,6 +76,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
76
76
  user_id TEXT,
77
77
  agent_id TEXT,
78
78
  name TEXT,
79
+ state TEXT,
79
80
  metadata TEXT,
80
81
  created_at REAL,
81
82
  updated_at REAL
@@ -88,6 +89,8 @@ class AsyncSQLiteConversationStore(ConversationStore):
88
89
  session_id TEXT REFERENCES {sessions_table}(session_id) ON DELETE CASCADE,
89
90
  role TEXT,
90
91
  content TEXT,
92
+ tool_calls TEXT,
93
+ tool_call_id TEXT,
91
94
  metadata TEXT,
92
95
  created_at REAL
93
96
  )
@@ -107,9 +110,10 @@ class AsyncSQLiteConversationStore(ConversationStore):
107
110
 
108
111
  table = f"{self.table_prefix}sessions"
109
112
  await self._conn.execute(f"""
110
- INSERT INTO {table} (session_id, user_id, agent_id, name, metadata, created_at, updated_at)
111
- VALUES (?, ?, ?, ?, ?, ?, ?)
113
+ INSERT INTO {table} (session_id, user_id, agent_id, name, state, metadata, created_at, updated_at)
114
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
112
115
  """, (session.session_id, session.user_id, session.agent_id, session.name,
116
+ json.dumps(session.state) if session.state else None,
113
117
  json.dumps(session.metadata) if session.metadata else None,
114
118
  session.created_at, session.updated_at))
115
119
  await self._conn.commit()
@@ -139,6 +143,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
139
143
  user_id=row['user_id'],
140
144
  agent_id=row['agent_id'],
141
145
  name=row['name'],
146
+ state=json.loads(row['state']) if row['state'] else None,
142
147
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
143
148
  created_at=row['created_at'],
144
149
  updated_at=row['updated_at']
@@ -161,9 +166,11 @@ class AsyncSQLiteConversationStore(ConversationStore):
161
166
 
162
167
  await self._conn.execute(f"""
163
168
  UPDATE {table}
164
- SET name = ?, metadata = ?, updated_at = ?
169
+ SET name = ?, state = ?, metadata = ?, updated_at = ?
165
170
  WHERE session_id = ?
166
- """, (session.name, json.dumps(session.metadata) if session.metadata else None,
171
+ """, (session.name,
172
+ json.dumps(session.state) if session.state else None,
173
+ json.dumps(session.metadata) if session.metadata else None,
167
174
  session.updated_at, session.session_id))
168
175
  await self._conn.commit()
169
176
 
@@ -233,6 +240,7 @@ class AsyncSQLiteConversationStore(ConversationStore):
233
240
  user_id=row['user_id'],
234
241
  agent_id=row['agent_id'],
235
242
  name=row['name'],
243
+ state=json.loads(row['state']) if row['state'] else None,
236
244
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
237
245
  created_at=row['created_at'],
238
246
  updated_at=row['updated_at']
@@ -261,9 +269,11 @@ class AsyncSQLiteConversationStore(ConversationStore):
261
269
  table = f"{self.table_prefix}messages"
262
270
 
263
271
  await self._conn.execute(f"""
264
- INSERT INTO {table} (id, session_id, role, content, metadata, created_at)
265
- VALUES (?, ?, ?, ?, ?, ?)
272
+ INSERT INTO {table} (id, session_id, role, content, tool_calls, tool_call_id, metadata, created_at)
273
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
266
274
  """, (message.id, session_id, message.role, message.content,
275
+ json.dumps(message.tool_calls) if message.tool_calls else None,
276
+ message.tool_call_id,
267
277
  json.dumps(message.metadata) if message.metadata else None,
268
278
  message.created_at))
269
279
  await self._conn.commit()
@@ -316,6 +326,8 @@ class AsyncSQLiteConversationStore(ConversationStore):
316
326
  session_id=row['session_id'],
317
327
  role=row['role'],
318
328
  content=row['content'],
329
+ tool_calls=json.loads(row['tool_calls']) if row['tool_calls'] else None,
330
+ tool_call_id=row['tool_call_id'],
319
331
  metadata=json.loads(row['metadata']) if row['metadata'] else None,
320
332
  created_at=row['created_at']
321
333
  )