PraisonAI 4.6.101__tar.gz → 4.6.102__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 (907) hide show
  1. {praisonai-4.6.101 → praisonai-4.6.102}/PKG-INFO +4 -2
  2. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/PKG-INFO +4 -2
  3. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/SOURCES.txt +1 -5
  4. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/requires.txt +3 -1
  5. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_registry.py +9 -2
  6. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/adapters/vector_stores.py +9 -2
  7. praisonai-4.6.102/praisonai/cli_backends/__init__.py +40 -0
  8. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/__init__.py +7 -0
  9. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/factory.py +13 -4
  10. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/registry.py +50 -4
  11. praisonai-4.6.102/praisonai/persistence/tests/test_registry_lazy.py +80 -0
  12. praisonai-4.6.102/praisonai/runtime/__init__.py +45 -0
  13. praisonai-4.6.102/praisonai/runtime/__main__.py +11 -0
  14. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tool_resolver.py +127 -1
  15. praisonai-4.6.102/praisonai/version.py +1 -0
  16. {praisonai-4.6.101 → praisonai-4.6.102}/pyproject.toml +7 -1
  17. praisonai-4.6.101/praisonai/cli_backends/__init__.py +0 -73
  18. praisonai-4.6.101/praisonai/cli_backends/claude.py +0 -373
  19. praisonai-4.6.101/praisonai/cli_backends/registry.py +0 -113
  20. praisonai-4.6.101/praisonai/runtime/__init__.py +0 -36
  21. praisonai-4.6.101/praisonai/runtime/__main__.py +0 -81
  22. praisonai-4.6.101/praisonai/runtime/client.py +0 -131
  23. praisonai-4.6.101/praisonai/runtime/descriptor.py +0 -209
  24. praisonai-4.6.101/praisonai/runtime/server.py +0 -356
  25. praisonai-4.6.101/praisonai/version.py +0 -1
  26. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/dependency_links.txt +0 -0
  27. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/entry_points.txt +0 -0
  28. {praisonai-4.6.101 → praisonai-4.6.102}/PraisonAI.egg-info/top_level.txt +0 -0
  29. {praisonai-4.6.101 → praisonai-4.6.102}/README.md +0 -0
  30. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/__init__.py +0 -0
  31. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/__main__.py +0 -0
  32. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_approval_spec.py +0 -0
  33. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_async_bridge.py +0 -0
  34. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/__init__.py +0 -0
  35. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/api_md.py +0 -0
  36. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/__init__.py +0 -0
  37. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/docs_extractor.py +0 -0
  38. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/docs_generator.py +0 -0
  39. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/generator.py +0 -0
  40. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  41. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/python_extractor.py +0 -0
  42. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  43. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/rust_extractor.py +0 -0
  44. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  45. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  46. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  47. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_entrypoint.py +0 -0
  48. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_framework_availability.py +0 -0
  49. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_lazy_cache.py +0 -0
  50. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_lockmap.py +0 -0
  51. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_logging.py +0 -0
  52. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/_safe_loader.py +0 -0
  53. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/acp/__init__.py +0 -0
  54. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/acp/config.py +0 -0
  55. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/acp/safe_edit.py +0 -0
  56. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/acp/server.py +0 -0
  57. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/acp/session.py +0 -0
  58. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/adapters/__init__.py +0 -0
  59. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/adapters/readers.py +0 -0
  60. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/adapters/rerankers.py +0 -0
  61. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/adapters/retrievers.py +0 -0
  62. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/agent.py +0 -0
  63. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/agent_scheduler.py +0 -0
  64. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/agents_generator.py +0 -0
  65. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/api/agent_invoke.py +0 -0
  66. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/api/call.py +0 -0
  67. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/app/__init__.py +0 -0
  68. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/app/agentos.py +0 -0
  69. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/async_agent_scheduler.py +0 -0
  70. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/audit/__init__.py +0 -0
  71. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/audit/agent_centric.py +0 -0
  72. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/auto.py +0 -0
  73. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/__init__.py +0 -0
  74. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_ack.py +0 -0
  75. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_admission.py +0 -0
  76. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_approval.py +0 -0
  77. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_approval_base.py +0 -0
  78. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_approval_store.py +0 -0
  79. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_chunk.py +0 -0
  80. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_commands.py +0 -0
  81. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_config_schema.py +0 -0
  82. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_correlation.py +0 -0
  83. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_dead_targets.py +0 -0
  84. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_debounce.py +0 -0
  85. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_defaults.py +0 -0
  86. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_delivery.py +0 -0
  87. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_discord_approval.py +0 -0
  88. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_dlq.py +0 -0
  89. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_durable_adapter.py +0 -0
  90. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_email_utils.py +0 -0
  91. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_http_approval.py +0 -0
  92. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_identity.py +0 -0
  93. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_ingress.py +0 -0
  94. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_media.py +0 -0
  95. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_metrics.py +0 -0
  96. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_mirror.py +0 -0
  97. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_outbound_media.py +0 -0
  98. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_outbound_messenger.py +0 -0
  99. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_outbound_resilience.py +0 -0
  100. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_outbox.py +0 -0
  101. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_pairing_ui.py +0 -0
  102. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_presentation_approval.py +0 -0
  103. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_presentation_approval_backend.py +0 -0
  104. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_presentation_renderer.py +0 -0
  105. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_protocol_mixin.py +0 -0
  106. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_rate_limit.py +0 -0
  107. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_registry.py +0 -0
  108. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_relay_adapter.py +0 -0
  109. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_reset_policy.py +0 -0
  110. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_resilience.py +0 -0
  111. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_run_control.py +0 -0
  112. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_session.py +0 -0
  113. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_slack_approval.py +0 -0
  114. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_status.py +0 -0
  115. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_streaming.py +0 -0
  116. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_telegram_approval.py +0 -0
  117. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_typing.py +0 -0
  118. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_typing_indicator.py +0 -0
  119. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_unknown_user.py +0 -0
  120. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_webhook_approval.py +0 -0
  121. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  122. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/agentmail.py +0 -0
  123. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/bot.py +0 -0
  124. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/botos.py +0 -0
  125. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/delivery.py +0 -0
  126. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/discord.py +0 -0
  127. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/email.py +0 -0
  128. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/linear.py +0 -0
  129. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/media.py +0 -0
  130. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/slack.py +0 -0
  131. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/telegram.py +0 -0
  132. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/webhook_security.py +0 -0
  133. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/bots/whatsapp.py +0 -0
  134. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/__init__.py +0 -0
  135. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/agent.py +0 -0
  136. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/benchmark.py +0 -0
  137. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/cdp_agent.py +0 -0
  138. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/cdp_utils.py +0 -0
  139. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/cli.py +0 -0
  140. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/diagnostics.py +0 -0
  141. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/launcher.py +0 -0
  142. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/playwright_agent.py +0 -0
  143. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/profiling.py +0 -0
  144. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/protocol.py +0 -0
  145. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/report.py +0 -0
  146. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/server.py +0 -0
  147. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/sessions.py +0 -0
  148. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/browser/video.py +0 -0
  149. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/__init__.py +0 -0
  150. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/a2a.py +0 -0
  151. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/assistants.py +0 -0
  152. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/audio.py +0 -0
  153. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/batches.py +0 -0
  154. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/completions.py +0 -0
  155. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/container_files.py +0 -0
  156. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/containers.py +0 -0
  157. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/embeddings.py +0 -0
  158. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/files.py +0 -0
  159. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/fine_tuning.py +0 -0
  160. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/guardrails.py +0 -0
  161. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/images.py +0 -0
  162. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/mcp.py +0 -0
  163. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/messages.py +0 -0
  164. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/moderations.py +0 -0
  165. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/ocr.py +0 -0
  166. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/passthrough.py +0 -0
  167. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/rag.py +0 -0
  168. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/realtime.py +0 -0
  169. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/rerank.py +0 -0
  170. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/responses.py +0 -0
  171. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/search.py +0 -0
  172. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/skills.py +0 -0
  173. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/vector_store_files.py +0 -0
  174. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/vector_stores.py +0 -0
  175. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/capabilities/videos.py +0 -0
  176. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/claw/__init__.py +0 -0
  177. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/claw/default_app.py +0 -0
  178. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/__init__.py +0 -0
  179. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/_paths.py +0 -0
  180. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/_warnings.py +0 -0
  181. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/app.py +0 -0
  182. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/approval_backend.py +0 -0
  183. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/branding.py +0 -0
  184. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/__init__.py +0 -0
  185. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/acp.py +0 -0
  186. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/agent.py +0 -0
  187. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/agents.py +0 -0
  188. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/app.py +0 -0
  189. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/attach.py +0 -0
  190. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/audit.py +0 -0
  191. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/auth.py +0 -0
  192. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/batch.py +0 -0
  193. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/benchmark.py +0 -0
  194. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/bot.py +0 -0
  195. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/browser.py +0 -0
  196. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/call.py +0 -0
  197. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/chat.py +0 -0
  198. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/checkpoint.py +0 -0
  199. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/claw.py +0 -0
  200. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/code.py +0 -0
  201. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/command.py +0 -0
  202. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/commit.py +0 -0
  203. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/completion.py +0 -0
  204. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/config.py +0 -0
  205. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/context.py +0 -0
  206. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/daemon.py +0 -0
  207. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/dashboard.py +0 -0
  208. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/debug.py +0 -0
  209. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/deploy.py +0 -0
  210. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/diag.py +0 -0
  211. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/docs.py +0 -0
  212. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/doctor.py +0 -0
  213. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/endpoints.py +0 -0
  214. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/environment.py +0 -0
  215. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/eval.py +0 -0
  216. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/examples.py +0 -0
  217. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/flow.py +0 -0
  218. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/gateway.py +0 -0
  219. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/github.py +0 -0
  220. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/hooks.py +0 -0
  221. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/identity.py +0 -0
  222. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/init.py +0 -0
  223. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/kanban.py +0 -0
  224. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/knowledge.py +0 -0
  225. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/langextract.py +0 -0
  226. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/langfuse.py +0 -0
  227. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/loop.py +0 -0
  228. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/lsp.py +0 -0
  229. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/managed.py +0 -0
  230. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/mcp.py +0 -0
  231. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/memory.py +0 -0
  232. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/mint_link.py +0 -0
  233. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/models.py +0 -0
  234. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/n8n.py +0 -0
  235. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/obs.py +0 -0
  236. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/onboard.py +0 -0
  237. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/package.py +0 -0
  238. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/pairing.py +0 -0
  239. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/paths.py +0 -0
  240. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/permissions.py +0 -0
  241. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/plugins.py +0 -0
  242. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/port.py +0 -0
  243. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/profile.py +0 -0
  244. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/publish.py +0 -0
  245. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/rag.py +0 -0
  246. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/realtime.py +0 -0
  247. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/recipe.py +0 -0
  248. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/registry.py +0 -0
  249. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/replay.py +0 -0
  250. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/research.py +0 -0
  251. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/retrieval.py +0 -0
  252. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/rules.py +0 -0
  253. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/run.py +0 -0
  254. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/sandbox.py +0 -0
  255. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/schedule.py +0 -0
  256. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/serve.py +0 -0
  257. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/session.py +0 -0
  258. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/setup.py +0 -0
  259. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/skills.py +0 -0
  260. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/standardise.py +0 -0
  261. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/templates.py +0 -0
  262. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/test.py +0 -0
  263. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/todo.py +0 -0
  264. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/tools.py +0 -0
  265. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/traces.py +0 -0
  266. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/tracker.py +0 -0
  267. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/train.py +0 -0
  268. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/ui.py +0 -0
  269. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/up.py +0 -0
  270. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/validate.py +0 -0
  271. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/version.py +0 -0
  272. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/commands/workflow.py +0 -0
  273. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/config_loader.py +0 -0
  274. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/__init__.py +0 -0
  275. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/config.schema.json +0 -0
  276. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/credentials.py +0 -0
  277. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/loader.py +0 -0
  278. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/model_resolver.py +0 -0
  279. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/oauth.py +0 -0
  280. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/paths.py +0 -0
  281. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/resolver.py +0 -0
  282. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/configuration/schema.py +0 -0
  283. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/execution/__init__.py +0 -0
  284. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/execution/core.py +0 -0
  285. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/execution/profiler.py +0 -0
  286. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/execution/request.py +0 -0
  287. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/execution/result.py +0 -0
  288. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/fallback_schema.py +0 -0
  289. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/__init__.py +0 -0
  290. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/_endpoint_registry.py +0 -0
  291. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/_search_registry.py +0 -0
  292. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/acp.py +0 -0
  293. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/action_orchestrator.py +0 -0
  294. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/agent_scheduler.py +0 -0
  295. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/agent_tools.py +0 -0
  296. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/agents.py +0 -0
  297. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/approval.py +0 -0
  298. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/at_mentions.py +0 -0
  299. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/audit_cli.py +0 -0
  300. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/auto_memory.py +0 -0
  301. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/auto_mode.py +0 -0
  302. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/autonomy_mode.py +0 -0
  303. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/background.py +0 -0
  304. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/base.py +0 -0
  305. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/benchmark.py +0 -0
  306. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/bots_cli.py +0 -0
  307. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/capabilities.py +0 -0
  308. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/checkpoints.py +0 -0
  309. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/cli_profiler.py +0 -0
  310. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/code_intelligence.py +0 -0
  311. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/compaction.py +0 -0
  312. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/compare.py +0 -0
  313. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/config_hierarchy.py +0 -0
  314. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/context_manager.py +0 -0
  315. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/cost_tracker.py +0 -0
  316. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/csv_test_runner.py +0 -0
  317. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/custom_definitions.py +0 -0
  318. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/debug.py +0 -0
  319. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/deploy.py +0 -0
  320. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/diag.py +0 -0
  321. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/display_jsonl.py +0 -0
  322. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/__init__.py +0 -0
  323. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  324. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  325. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  326. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  327. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  328. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  329. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/gateway_checks.py +0 -0
  330. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  331. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  332. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  333. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  334. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  335. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  336. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  337. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  338. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/runtime_checks.py +0 -0
  339. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/runtime_migration_checks.py +0 -0
  340. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  341. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  342. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  343. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  344. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/engine.py +0 -0
  345. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/formatters.py +0 -0
  346. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/handler.py +0 -0
  347. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/models.py +0 -0
  348. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/doctor/registry.py +0 -0
  349. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/endpoints.py +0 -0
  350. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/eval.py +0 -0
  351. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/examples.py +0 -0
  352. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/external_agents.py +0 -0
  353. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/fast_context.py +0 -0
  354. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/file_history.py +0 -0
  355. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/flow_display.py +0 -0
  356. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/gateway.py +0 -0
  357. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/git_attribution.py +0 -0
  358. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/git_integration.py +0 -0
  359. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/guardrail.py +0 -0
  360. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/handoff.py +0 -0
  361. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/hooks.py +0 -0
  362. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/hybrid_workflow.py +0 -0
  363. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/image.py +0 -0
  364. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/interactive_core_headless.py +0 -0
  365. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/interactive_runtime.py +0 -0
  366. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/interactive_test_harness.py +0 -0
  367. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/interactive_tools.py +0 -0
  368. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/interactive_tui.py +0 -0
  369. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/job_workflow.py +0 -0
  370. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/jobs.py +0 -0
  371. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/knowledge.py +0 -0
  372. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/knowledge_cli.py +0 -0
  373. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/lite.py +0 -0
  374. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/logs.py +0 -0
  375. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/lsp_cli.py +0 -0
  376. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  377. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/mcp.py +0 -0
  378. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/message_queue.py +0 -0
  379. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/metrics.py +0 -0
  380. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/migrate.py +0 -0
  381. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/migration_flow.py +0 -0
  382. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/migration_spec.py +0 -0
  383. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/n8n.py +0 -0
  384. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/observability.py +0 -0
  385. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/ollama.py +0 -0
  386. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/onboard.py +0 -0
  387. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/output_modes.py +0 -0
  388. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/output_style.py +0 -0
  389. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/package.py +0 -0
  390. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/performance.py +0 -0
  391. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/persistence.py +0 -0
  392. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/profiler/__init__.py +0 -0
  393. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/profiler/core.py +0 -0
  394. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/profiler/optimizations.py +0 -0
  395. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/profiler/suite.py +0 -0
  396. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/__init__.py +0 -0
  397. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/manager.py +0 -0
  398. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/models.py +0 -0
  399. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/persistence.py +0 -0
  400. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/scheduler.py +0 -0
  401. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/queue/worker.py +0 -0
  402. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/recipe.py +0 -0
  403. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/recipe_creator.py +0 -0
  404. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/recipe_optimizer.py +0 -0
  405. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/recipe_prompts.py +0 -0
  406. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/registry.py +0 -0
  407. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/repo_map.py +0 -0
  408. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/router.py +0 -0
  409. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/safe_shell.py +0 -0
  410. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/sandbox_cli.py +0 -0
  411. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/sandbox_executor.py +0 -0
  412. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/sdk_knowledge.py +0 -0
  413. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/serve.py +0 -0
  414. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/session.py +0 -0
  415. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/session_checkpoints.py +0 -0
  416. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/setup/__init__.py +0 -0
  417. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/setup/handler.py +0 -0
  418. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/setup/templates.py +0 -0
  419. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/skills.py +0 -0
  420. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/slash_commands.py +0 -0
  421. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/telemetry.py +0 -0
  422. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/templates.py +0 -0
  423. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/thinking.py +0 -0
  424. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/todo.py +0 -0
  425. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tools.py +0 -0
  426. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/__init__.py +0 -0
  427. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/app.py +0 -0
  428. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/cli.py +0 -0
  429. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/config.py +0 -0
  430. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/debug.py +0 -0
  431. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/events.py +0 -0
  432. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/mock_provider.py +0 -0
  433. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/orchestrator.py +0 -0
  434. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  435. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/help.py +0 -0
  436. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/main.py +0 -0
  437. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/queue.py +0 -0
  438. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/session.py +0 -0
  439. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/screens/settings.py +0 -0
  440. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/session_store.py +0 -0
  441. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  442. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  443. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  444. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  445. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  446. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  447. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/status.py +0 -0
  448. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  449. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/wizard.py +0 -0
  450. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/workflow.py +0 -0
  451. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/features/yaml_utils.py +0 -0
  452. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/__init__.py +0 -0
  453. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/async_tui.py +0 -0
  454. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/config.py +0 -0
  455. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/core.py +0 -0
  456. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/events.py +0 -0
  457. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  458. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  459. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  460. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/praison_io.py +0 -0
  461. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/repl.py +0 -0
  462. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/split_tui.py +0 -0
  463. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/interactive/tui_app.py +0 -0
  464. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/langfuse_client.py +0 -0
  465. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/main.py +0 -0
  466. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/output/__init__.py +0 -0
  467. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/output/console.py +0 -0
  468. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/output/event_bridge.py +0 -0
  469. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/schedule_cli.py +0 -0
  470. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/schema_provider.py +0 -0
  471. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/session/__init__.py +0 -0
  472. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/session/resume.py +0 -0
  473. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/session/unified.py +0 -0
  474. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/state/__init__.py +0 -0
  475. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/state/identifiers.py +0 -0
  476. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/state/project_sessions.py +0 -0
  477. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/state/sessions.py +0 -0
  478. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/__init__.py +0 -0
  479. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/config.py +0 -0
  480. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/events.py +0 -0
  481. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/mg_backend.py +0 -0
  482. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/plain.py +0 -0
  483. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/ui/rich_backend.py +0 -0
  484. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/unified_schema.py +0 -0
  485. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/utils/env_utils.py +0 -0
  486. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/cli/utils/project.py +0 -0
  487. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/__init__.py +0 -0
  488. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/agent_tools.py +0 -0
  489. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/diff/__init__.py +0 -0
  490. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/diff/diff_strategy.py +0 -0
  491. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/__init__.py +0 -0
  492. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/apply_diff.py +0 -0
  493. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/execute_command.py +0 -0
  494. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/list_files.py +0 -0
  495. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/read_file.py +0 -0
  496. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/search_replace.py +0 -0
  497. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/tools/write_file.py +0 -0
  498. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/utils/__init__.py +0 -0
  499. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/utils/file_utils.py +0 -0
  500. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/utils/ignore_utils.py +0 -0
  501. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/code/utils/text_utils.py +0 -0
  502. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/config/__init__.py +0 -0
  503. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/config/schema.py +0 -0
  504. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/config/validator.py +0 -0
  505. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/__init__.py +0 -0
  506. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/_storage_path.py +0 -0
  507. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/artifact_store.py +0 -0
  508. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/config.py +0 -0
  509. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/history_store.py +0 -0
  510. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/queue.py +0 -0
  511. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/setup.py +0 -0
  512. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/context/terminal_logger.py +0 -0
  513. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/daemon/__init__.py +0 -0
  514. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/daemon/launchd.py +0 -0
  515. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/daemon/systemd.py +0 -0
  516. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/daemon/windows.py +0 -0
  517. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/db/__init__.py +0 -0
  518. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/db/adapter.py +0 -0
  519. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/__init__.py +0 -0
  520. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/api.py +0 -0
  521. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/docker.py +0 -0
  522. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/doctor.py +0 -0
  523. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/main.py +0 -0
  524. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/models.py +0 -0
  525. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/__init__.py +0 -0
  526. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/_registry.py +0 -0
  527. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/aws.py +0 -0
  528. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/azure.py +0 -0
  529. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/base.py +0 -0
  530. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/providers/gcp.py +0 -0
  531. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/deploy/schema.py +0 -0
  532. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/__init__.py +0 -0
  533. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/classifier.py +0 -0
  534. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/executor.py +0 -0
  535. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/extractor.py +0 -0
  536. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/reporter.py +0 -0
  537. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/runner.py +0 -0
  538. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/docs_runner/workspace.py +0 -0
  539. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/__init__.py +0 -0
  540. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/a2u_server.py +0 -0
  541. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/discovery.py +0 -0
  542. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/__init__.py +0 -0
  543. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/a2a.py +0 -0
  544. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/a2u.py +0 -0
  545. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/agents_api.py +0 -0
  546. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/base.py +0 -0
  547. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/mcp.py +0 -0
  548. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/openai_compat.py +0 -0
  549. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/recipe.py +0 -0
  550. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  551. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/registry.py +0 -0
  552. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/endpoints/server.py +0 -0
  553. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/__init__.py +0 -0
  554. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/client.py +0 -0
  555. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  556. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  557. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/components/__init__.py +0 -0
  558. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/converter.py +0 -0
  559. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/flow/helpers.py +0 -0
  560. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/__init__.py +0 -0
  561. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/_config_builder.py +0 -0
  562. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/autogen_adapter.py +0 -0
  563. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/base.py +0 -0
  564. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  565. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/praisonai_adapter.py +0 -0
  566. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/registry.py +0 -0
  567. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/validators.py +0 -0
  568. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/framework_adapters/workflow_framework.py +0 -0
  569. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/__init__.py +0 -0
  570. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/auth.py +0 -0
  571. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/client.py +0 -0
  572. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/cookie_auth.py +0 -0
  573. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/exec_approval.py +0 -0
  574. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/forensics.py +0 -0
  575. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/gateway_approval.py +0 -0
  576. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/health_monitor.py +0 -0
  577. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/home_channels.py +0 -0
  578. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/kanban_dispatcher.py +0 -0
  579. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/magic_link.py +0 -0
  580. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/origin_check.py +0 -0
  581. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/pairing.py +0 -0
  582. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/pairing_routes.py +0 -0
  583. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/port_utils.py +0 -0
  584. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/push_channels.py +0 -0
  585. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/push_delivery.py +0 -0
  586. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/push_polling.py +0 -0
  587. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/push_presence.py +0 -0
  588. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/rate_limiter.py +0 -0
  589. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/redis_pubsub.py +0 -0
  590. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/server.py +0 -0
  591. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/supervisor.py +0 -0
  592. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/gateway/unicode_utils.py +0 -0
  593. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/inbuilt_tools/__init__.py +0 -0
  594. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  595. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/inc/__init__.py +0 -0
  596. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/inc/config.py +0 -0
  597. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/inc/models.py +0 -0
  598. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/__init__.py +0 -0
  599. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/__init__.py +0 -0
  600. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  601. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/hooks_query.py +0 -0
  602. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  603. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/schedules_runner.py +0 -0
  604. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/usage_bridge.py +0 -0
  605. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/bridges/workflows_service.py +0 -0
  606. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/context_files.py +0 -0
  607. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/gateway_host.py +0 -0
  608. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/host_app.py +0 -0
  609. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/pages/__init__.py +0 -0
  610. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/pages/bot_health.py +0 -0
  611. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integration/pages/workflow_runs.py +0 -0
  612. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/__init__.py +0 -0
  613. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/_session_info.py +0 -0
  614. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/_tool_aliases.py +0 -0
  615. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/_unified_registry.py +0 -0
  616. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/backend_registry.py +0 -0
  617. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/base.py +0 -0
  618. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/claude_code.py +0 -0
  619. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/codex_cli.py +0 -0
  620. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/__init__.py +0 -0
  621. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/daytona.py +0 -0
  622. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/docker.py +0 -0
  623. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/e2b.py +0 -0
  624. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/flyio.py +0 -0
  625. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/local.py +0 -0
  626. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/compute/modal_compute.py +0 -0
  627. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/cursor_cli.py +0 -0
  628. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/db_session_adapter.py +0 -0
  629. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/gemini_cli.py +0 -0
  630. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/hosted_agent.py +0 -0
  631. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/local_agent.py +0 -0
  632. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/managed_agents.py +0 -0
  633. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/managed_local.py +0 -0
  634. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/registry.py +0 -0
  635. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/integrations/sandboxed_agent.py +0 -0
  636. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/__init__.py +0 -0
  637. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/executor.py +0 -0
  638. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/models.py +0 -0
  639. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/path_validation.py +0 -0
  640. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/router.py +0 -0
  641. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/server.py +0 -0
  642. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/jobs/store.py +0 -0
  643. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/kanban/__init__.py +0 -0
  644. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/kanban/models.py +0 -0
  645. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/kanban/paths.py +0 -0
  646. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/kanban/sqlite_store.py +0 -0
  647. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/__init__.py +0 -0
  648. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/catalogue.py +0 -0
  649. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/config.py +0 -0
  650. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/credentials.py +0 -0
  651. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/env.py +0 -0
  652. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/gateways.py +0 -0
  653. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/llm/registry.py +0 -0
  654. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/__init__.py +0 -0
  655. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/__init__.py +0 -0
  656. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/agents.py +0 -0
  657. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  658. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  659. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  660. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  661. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/memory.py +0 -0
  662. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/prompts.py +0 -0
  663. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/resources.py +0 -0
  664. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  665. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/auth/__init__.py +0 -0
  666. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/auth/api_key.py +0 -0
  667. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/auth/oauth.py +0 -0
  668. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/auth/oidc.py +0 -0
  669. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/auth/scopes.py +0 -0
  670. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/cli.py +0 -0
  671. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/elicitation.py +0 -0
  672. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/icons.py +0 -0
  673. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/recipe_adapter.py +0 -0
  674. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/recipe_cli.py +0 -0
  675. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/registry.py +0 -0
  676. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/sampling.py +0 -0
  677. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/server.py +0 -0
  678. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/tasks.py +0 -0
  679. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/tool_index.py +0 -0
  680. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/transports/__init__.py +0 -0
  681. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/transports/http_stream.py +0 -0
  682. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/mcp_server/transports/stdio.py +0 -0
  683. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/n8n/__init__.py +0 -0
  684. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/n8n/client.py +0 -0
  685. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/n8n/converter.py +0 -0
  686. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/n8n/preview.py +0 -0
  687. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/n8n/reverse_converter.py +0 -0
  688. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/observability/__init__.py +0 -0
  689. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/observability/hooks.py +0 -0
  690. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/observability/langextract.py +0 -0
  691. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/observability/langfuse.py +0 -0
  692. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/_valkey_client.py +0 -0
  693. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/config.py +0 -0
  694. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/__init__.py +0 -0
  695. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/_sql_base.py +0 -0
  696. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/_sqlite_base.py +0 -0
  697. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/async_mysql.py +0 -0
  698. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/async_postgres.py +0 -0
  699. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  700. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/base.py +0 -0
  701. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/json_store.py +0 -0
  702. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/mysql.py +0 -0
  703. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/postgres.py +0 -0
  704. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/singlestore.py +0 -0
  705. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/sqlite.py +0 -0
  706. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/supabase.py +0 -0
  707. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/surrealdb.py +0 -0
  708. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  709. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/conversation/turso.py +0 -0
  710. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/hooks/__init__.py +0 -0
  711. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  712. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/__init__.py +0 -0
  713. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/base.py +0 -0
  714. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/cassandra.py +0 -0
  715. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/chroma.py +0 -0
  716. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  717. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  718. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/couchbase.py +0 -0
  719. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/lancedb.py +0 -0
  720. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  721. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  722. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  723. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/milvus.py +0 -0
  724. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  725. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/pgvector.py +0 -0
  726. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/pinecone.py +0 -0
  727. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/qdrant.py +0 -0
  728. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  729. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  730. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  731. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  732. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  733. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/knowledge/weaviate.py +0 -0
  734. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/migrations/__init__.py +0 -0
  735. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/migrations/manager.py +0 -0
  736. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/orchestrator.py +0 -0
  737. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/__init__.py +0 -0
  738. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/async_mongodb.py +0 -0
  739. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/base.py +0 -0
  740. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/dynamodb.py +0 -0
  741. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/firestore.py +0 -0
  742. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/gcs.py +0 -0
  743. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/memory.py +0 -0
  744. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/mongodb.py +0 -0
  745. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/redis.py +0 -0
  746. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/upstash.py +0 -0
  747. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/state/valkey.py +0 -0
  748. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/tests/__init__.py +0 -0
  749. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/tests/test_all_backends.py +0 -0
  750. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  751. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/profiler.py +0 -0
  752. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/push/__init__.py +0 -0
  753. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/push/client.py +0 -0
  754. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/push/transports.py +0 -0
  755. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/__init__.py +0 -0
  756. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/bridge.py +0 -0
  757. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/core.py +0 -0
  758. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/exceptions.py +0 -0
  759. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/history.py +0 -0
  760. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/models.py +0 -0
  761. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/operations.py +0 -0
  762. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/policy.py +0 -0
  763. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/registry.py +0 -0
  764. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/runtime.py +0 -0
  765. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/security.py +0 -0
  766. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/serve.py +0 -0
  767. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/recipe/server.py +0 -0
  768. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/__init__.py +0 -0
  769. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/analyzer.py +0 -0
  770. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/applier.py +0 -0
  771. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/judge.py +0 -0
  772. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/plan.py +0 -0
  773. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/player.py +0 -0
  774. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/reader.py +0 -0
  775. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/storage.py +0 -0
  776. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/replay/writer.py +0 -0
  777. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/__init__.py +0 -0
  778. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/_compat.py +0 -0
  779. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/_registry.py +0 -0
  780. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/_shell.py +0 -0
  781. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/daytona.py +0 -0
  782. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/docker.py +0 -0
  783. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/e2b.py +0 -0
  784. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/modal.py +0 -0
  785. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/sandlock.py +0 -0
  786. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/ssh.py +0 -0
  787. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/sandbox/subprocess.py +0 -0
  788. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/__init__.py +0 -0
  789. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/_base_scheduler.py +0 -0
  790. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/_dispatch.py +0 -0
  791. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/agent_scheduler.py +0 -0
  792. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/async_agent_scheduler.py +0 -0
  793. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/base.py +0 -0
  794. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/blueprint_catalogue.py +0 -0
  795. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/condition_gate.py +0 -0
  796. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/daemon_manager.py +0 -0
  797. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/deployment.py +0 -0
  798. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/executor.py +0 -0
  799. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/run_policy.py +0 -0
  800. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/shared.py +0 -0
  801. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/state_manager.py +0 -0
  802. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/suggestion_engine.py +0 -0
  803. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/scheduler/yaml_loader.py +0 -0
  804. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/security/__init__.py +0 -0
  805. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/security/audit.py +0 -0
  806. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/security/injection.py +0 -0
  807. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/security/protected.py +0 -0
  808. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/setup/__init__.py +0 -0
  809. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/setup/build.py +0 -0
  810. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/setup/post_install.py +0 -0
  811. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/setup/setup_conda_env.py +0 -0
  812. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/setup.py +0 -0
  813. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/__init__.py +0 -0
  814. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/ai_generator.py +0 -0
  815. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/config.py +0 -0
  816. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/dedupe.py +0 -0
  817. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/discovery.py +0 -0
  818. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/drift.py +0 -0
  819. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/engine.py +0 -0
  820. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/enhanced_templates.py +0 -0
  821. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/example_verifier.py +0 -0
  822. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/manifest.py +0 -0
  823. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/models.py +0 -0
  824. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/reports.py +0 -0
  825. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/templates.py +0 -0
  826. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/undo_redo.py +0 -0
  827. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/standardise/validator.py +0 -0
  828. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/__init__.py +0 -0
  829. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/dynamodb_adapter.py +0 -0
  830. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/mongodb_adapter.py +0 -0
  831. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/postgresql_adapter.py +0 -0
  832. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/redis_adapter.py +0 -0
  833. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/storage/valkey_adapter.py +0 -0
  834. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/__init__.py +0 -0
  835. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/batch_source.py +0 -0
  836. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/cli_docs_source.py +0 -0
  837. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/discovery.py +0 -0
  838. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/docs_source.py +0 -0
  839. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/examples_source.py +0 -0
  840. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/executor.py +0 -0
  841. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/models.py +0 -0
  842. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/report_viewer.py +0 -0
  843. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/reporter.py +0 -0
  844. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/suite_runner/runner.py +0 -0
  845. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/__init__.py +0 -0
  846. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/cache.py +0 -0
  847. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/dependency_checker.py +0 -0
  848. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/discovery.py +0 -0
  849. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/loader.py +0 -0
  850. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/registry.py +0 -0
  851. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/resolver.py +0 -0
  852. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/security.py +0 -0
  853. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/tool_override.py +0 -0
  854. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/templates/tools_doctor.py +0 -0
  855. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tool_registry.py +0 -0
  856. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/__init__.py +0 -0
  857. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/audio.py +0 -0
  858. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/glob_tool.py +0 -0
  859. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/grep_tool.py +0 -0
  860. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/kanban_tools.py +0 -0
  861. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/multiedit.py +0 -0
  862. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/tools/skill_manage.py +0 -0
  863. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/__init__.py +0 -0
  864. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/_ollama.py +0 -0
  865. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/__init__.py +0 -0
  866. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/grader.py +0 -0
  867. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/hook.py +0 -0
  868. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/models.py +0 -0
  869. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/orchestrator.py +0 -0
  870. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/agents/storage.py +0 -0
  871. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/llm/__init__.py +0 -0
  872. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train/llm/trainer.py +0 -0
  873. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train.py +0 -0
  874. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/train_vision.py +0 -0
  875. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/_aiui_datastore.py +0 -0
  876. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/_external_agents.py +0 -0
  877. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/callbacks.py +0 -0
  878. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/components/aicoder.py +0 -0
  879. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/context.py +0 -0
  880. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui/database_config.py +0 -0
  881. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_agents/__init__.py +0 -0
  882. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_agents/default_app.py +0 -0
  883. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_bot/__init__.py +0 -0
  884. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_bot/default_app.py +0 -0
  885. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_chat/__init__.py +0 -0
  886. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_chat/default_app.py +0 -0
  887. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_dashboard/default_app.py +0 -0
  888. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_realtime/__init__.py +0 -0
  889. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/ui_realtime/default_app.py +0 -0
  890. {praisonai-4.6.101 → praisonai-4.6.102}/praisonai/upload_vision.py +0 -0
  891. {praisonai-4.6.101 → praisonai-4.6.102}/setup.cfg +0 -0
  892. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test.py +0 -0
  893. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_agents_playbook.py +0 -0
  894. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_approval_system.py +0 -0
  895. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_basic.py +0 -0
  896. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_cli_features.py +0 -0
  897. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_custom_tools_fix.py +0 -0
  898. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_double_api_fix.py +0 -0
  899. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_n8n_agent_invoke.py +0 -0
  900. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_n8n_cli_feature.py +0 -0
  901. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_n8n_integration.py +0 -0
  902. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_phase2_refactor.py +0 -0
  903. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_recipe.py +0 -0
  904. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_registry.py +0 -0
  905. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_runner.py +0 -0
  906. {praisonai-4.6.101 → praisonai-4.6.102}/tests/test_sandboxed_agent_compatibility.py +0 -0
  907. {praisonai-4.6.101 → praisonai-4.6.102}/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.101
3
+ Version: 4.6.102
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,8 @@ 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.101
14
+ Requires-Dist: praisonaiagents>=1.6.102
15
+ Requires-Dist: praisonai-code
15
16
  Requires-Dist: python-dotenv>=0.19.0
16
17
  Requires-Dist: litellm<2,>=1.83.14
17
18
  Requires-Dist: PyYAML>=6.0
@@ -21,6 +22,7 @@ Requires-Dist: click>=8.4.2
21
22
  Requires-Dist: textual>=0.47.0
22
23
  Requires-Dist: pydantic>=2.0.0
23
24
  Requires-Dist: toml>=0.10.2
25
+ Requires-Dist: praisonai-code
24
26
  Provides-Extra: ui
25
27
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "ui"
26
28
  Provides-Extra: gradio
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.101
3
+ Version: 4.6.102
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,8 @@ 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.101
14
+ Requires-Dist: praisonaiagents>=1.6.102
15
+ Requires-Dist: praisonai-code
15
16
  Requires-Dist: python-dotenv>=0.19.0
16
17
  Requires-Dist: litellm<2,>=1.83.14
17
18
  Requires-Dist: PyYAML>=6.0
@@ -21,6 +22,7 @@ Requires-Dist: click>=8.4.2
21
22
  Requires-Dist: textual>=0.47.0
22
23
  Requires-Dist: pydantic>=2.0.0
23
24
  Requires-Dist: toml>=0.10.2
25
+ Requires-Dist: praisonai-code
24
26
  Provides-Extra: ui
25
27
  Requires-Dist: aiui<0.4,>=0.3.121; extra == "ui"
26
28
  Provides-Extra: gradio
@@ -474,8 +474,6 @@ praisonai/cli/ui/rich_backend.py
474
474
  praisonai/cli/utils/env_utils.py
475
475
  praisonai/cli/utils/project.py
476
476
  praisonai/cli_backends/__init__.py
477
- praisonai/cli_backends/claude.py
478
- praisonai/cli_backends/registry.py
479
477
  praisonai/code/__init__.py
480
478
  praisonai/code/agent_tools.py
481
479
  praisonai/code/diff/__init__.py
@@ -742,6 +740,7 @@ praisonai/persistence/state/upstash.py
742
740
  praisonai/persistence/state/valkey.py
743
741
  praisonai/persistence/tests/__init__.py
744
742
  praisonai/persistence/tests/test_all_backends.py
743
+ praisonai/persistence/tests/test_registry_lazy.py
745
744
  praisonai/persistence/tests/test_valkey_backends.py
746
745
  praisonai/push/__init__.py
747
746
  praisonai/push/client.py
@@ -770,9 +769,6 @@ praisonai/replay/storage.py
770
769
  praisonai/replay/writer.py
771
770
  praisonai/runtime/__init__.py
772
771
  praisonai/runtime/__main__.py
773
- praisonai/runtime/client.py
774
- praisonai/runtime/descriptor.py
775
- praisonai/runtime/server.py
776
772
  praisonai/sandbox/__init__.py
777
773
  praisonai/sandbox/_compat.py
778
774
  praisonai/sandbox/_registry.py
@@ -1,7 +1,8 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.101
4
+ praisonaiagents>=1.6.102
5
+ praisonai-code
5
6
  python-dotenv>=0.19.0
6
7
  litellm<2,>=1.83.14
7
8
  PyYAML>=6.0
@@ -11,6 +12,7 @@ click>=8.4.2
11
12
  textual>=0.47.0
12
13
  pydantic>=2.0.0
13
14
  toml>=0.10.2
15
+ praisonai-code
14
16
 
15
17
  [acp]
16
18
  agent-client-protocol>=0.7.0
@@ -34,13 +34,19 @@ class PluginRegistry(Generic[T]):
34
34
  self,
35
35
  *,
36
36
  entry_point_group: str,
37
- builtins: Optional[Dict[str, Callable[[], Type[T]]]] = None
37
+ builtins: Optional[Dict[str, Callable[[], Type[T]]]] = None,
38
+ discover_entry_points: bool = True
38
39
  ) -> None:
39
40
  """Initialize the registry.
40
41
 
41
42
  Args:
42
43
  entry_point_group: Entry points group name for plugin discovery
43
44
  builtins: Dict of name -> loader function for built-in plugins
45
+ discover_entry_points: When True (default) the registry scans the
46
+ ``entry_point_group`` for third-party plugins on construction.
47
+ Pass False to build an isolated registry that only contains the
48
+ supplied builtins / explicitly registered plugins (useful for
49
+ opt-out and deterministic tests).
44
50
  """
45
51
  self._entry_point_group = entry_point_group
46
52
  self._loaders: Dict[str, Callable[[], Type[T]]] = {} # lazy loaders
@@ -53,7 +59,8 @@ class PluginRegistry(Generic[T]):
53
59
  for name, loader in builtins.items():
54
60
  self._add_loader(name, loader)
55
61
 
56
- self._discover_entry_points()
62
+ if discover_entry_points:
63
+ self._discover_entry_points()
57
64
 
58
65
  def _add_loader(self, name: str, loader: Callable[[], Type[T]]) -> None:
59
66
  """Add a loader with normalized name."""
@@ -366,5 +366,12 @@ def register_default_vector_stores():
366
366
  logger.debug("Registered default vector stores")
367
367
 
368
368
 
369
- # Auto-register on import
370
- register_default_vector_stores()
369
+ # NOTE: No auto-registration at import time. Mutating the core-SDK vector-store
370
+ # registry and probing for chromadb / pinecone on disk as an import side effect
371
+ # violates the "core stays lightweight, wrapper does the heavy work at call
372
+ # time" principle and makes this module unsafe to import in tests / multi-tenant
373
+ # runtimes. Callers that want these backends wired into the SDK registry must
374
+ # invoke ``register_default_vector_stores()`` explicitly, e.g.::
375
+ #
376
+ # from praisonai.adapters.vector_stores import register_default_vector_stores
377
+ # register_default_vector_stores()
@@ -0,0 +1,40 @@
1
+ """Backward-compatible shim for ``praisonai.cli_backends``.
2
+
3
+ The CLI backend implementations moved to :mod:`praisonai_code.cli_backends`
4
+ (parent tracking issue, step C1). This shim re-exports the public surface and
5
+ aliases the submodules so existing imports keep working:
6
+
7
+ from praisonai.cli_backends import resolve_cli_backend_config
8
+ from praisonai.cli_backends import ClaudeCodeBackend
9
+ from praisonai.cli_backends.registry import resolve_cli_backend
10
+ """
11
+
12
+ import sys as _sys
13
+
14
+ import praisonai_code.cli_backends as _cli_backends
15
+
16
+ # Alias submodules so ``praisonai.cli_backends.<sub>`` resolves to the moved
17
+ # module. These submodules always exist in ``praisonai_code``; let any real
18
+ # import error surface here (with its original traceback) instead of being
19
+ # swallowed and re-raised later as a confusing missing-submodule error on the
20
+ # old path.
21
+ for _name in ("registry", "claude"):
22
+ _mod = __import__(f"praisonai_code.cli_backends.{_name}", fromlist=[_name])
23
+ _sys.modules[f"{__name__}.{_name}"] = _mod
24
+ # Bind on the package object too so ``import praisonai.cli_backends.<sub>``
25
+ # followed by attribute access works (sys.modules aliasing alone does not
26
+ # set the parent-package attribute when pre-inserted).
27
+ globals()[_name] = _mod
28
+
29
+ del _sys, _name, _mod
30
+
31
+
32
+ def __getattr__(name: str):
33
+ return getattr(_cli_backends, name)
34
+
35
+
36
+ def __dir__():
37
+ return sorted(set(globals()) | set(dir(_cli_backends)))
38
+
39
+
40
+ __all__ = getattr(_cli_backends, "__all__", [])
@@ -31,6 +31,9 @@ __all__ = [
31
31
  "create_knowledge_store",
32
32
  "create_state_store",
33
33
  "create_stores_from_config",
34
+ # Registry (dependency-injection / advanced)
35
+ "StoreRegistry",
36
+ "get_default_registry",
34
37
  # Config
35
38
  "PersistenceConfig",
36
39
  # Agent hooks
@@ -77,6 +80,10 @@ def __getattr__(name: str):
77
80
  from .factory import create_stores_from_config
78
81
  return create_stores_from_config
79
82
 
83
+ if name in ("StoreRegistry", "get_default_registry"):
84
+ from .registry import StoreRegistry, get_default_registry
85
+ return locals()[name]
86
+
80
87
  if name in ("wrap_agent_with_persistence", "PersistentAgent", "create_persistent_session"):
81
88
  from .hooks.agent_hooks import wrap_agent_with_persistence, PersistentAgent, create_persistent_session
82
89
  return locals()[name]
@@ -9,7 +9,7 @@ import logging
9
9
  from typing import Any, Dict, Literal, Optional
10
10
 
11
11
  from .config import PersistenceConfig
12
- from .registry import CONVERSATION_STORES, KNOWLEDGE_STORES, STATE_STORES
12
+ from .registry import StoreRegistry, get_default_registry
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
@@ -18,6 +18,8 @@ def create_conversation_store(
18
18
  backend: str,
19
19
  url: Optional[str] = None,
20
20
  mode: Literal["sync", "async", "auto"] = "auto",
21
+ *,
22
+ registry: Optional[StoreRegistry] = None,
21
23
  **options: Any
22
24
  ):
23
25
  """
@@ -63,12 +65,15 @@ def create_conversation_store(
63
65
  else:
64
66
  backend_name = backend
65
67
 
66
- return CONVERSATION_STORES.create(backend_name, url=url, **options)
68
+ registry = registry or get_default_registry("conversation")
69
+ return registry.create(backend_name, url=url, **options)
67
70
 
68
71
 
69
72
  def create_knowledge_store(
70
73
  backend: str,
71
74
  url: Optional[str] = None,
75
+ *,
76
+ registry: Optional[StoreRegistry] = None,
72
77
  **options: Any
73
78
  ):
74
79
  """
@@ -88,12 +93,15 @@ def create_knowledge_store(
88
93
  url="http://localhost:6333"
89
94
  )
90
95
  """
91
- return KNOWLEDGE_STORES.create(backend, url=url, **options)
96
+ registry = registry or get_default_registry("knowledge")
97
+ return registry.create(backend, url=url, **options)
92
98
 
93
99
 
94
100
  def create_state_store(
95
101
  backend: str,
96
102
  url: Optional[str] = None,
103
+ *,
104
+ registry: Optional[StoreRegistry] = None,
97
105
  **options: Any
98
106
  ):
99
107
  """
@@ -113,7 +121,8 @@ def create_state_store(
113
121
  url="redis://localhost:6379"
114
122
  )
115
123
  """
116
- return STATE_STORES.create(backend, url=url, **options)
124
+ registry = registry or get_default_registry("state")
125
+ return registry.create(backend, url=url, **options)
117
126
 
118
127
 
119
128
  def create_stores_from_config(config: PersistenceConfig) -> Dict[str, Any]:
@@ -354,7 +354,53 @@ def _register_builtin_state_stores(registry: StoreRegistry):
354
354
  registry.register("gcs", _gcs)
355
355
 
356
356
 
357
- # Create global registry instances - built-in stores are registered automatically via __init__
358
- CONVERSATION_STORES = StoreRegistry("conversation", "praisonai.conversation_stores")
359
- KNOWLEDGE_STORES = StoreRegistry("knowledge", "praisonai.knowledge_stores")
360
- STATE_STORES = StoreRegistry("state", "praisonai.state_stores")
357
+ # Lazy, per-caller registry construction. Importing this module no longer walks
358
+ # entry points or registers ~40 built-in loaders as a side effect; that work is
359
+ # deferred until a store is actually requested. Multi-tenant runtimes can build
360
+ # their own StoreRegistry and inject it, keeping registrations isolated.
361
+ _KINDS = {
362
+ "conversation": "praisonai.conversation_stores",
363
+ "knowledge": "praisonai.knowledge_stores",
364
+ "state": "praisonai.state_stores",
365
+ }
366
+
367
+ _default_registries: Dict[str, StoreRegistry] = {}
368
+ _default_lock = threading.Lock()
369
+
370
+
371
+ def get_default_registry(kind: str) -> StoreRegistry:
372
+ """Return the process-default registry for ``kind``, creating it on first use.
373
+
374
+ Prefer dependency-injection (pass your own :class:`StoreRegistry`) over
375
+ calling this. Valid kinds: ``"conversation"``, ``"knowledge"``, ``"state"``.
376
+ """
377
+ if kind not in _KINDS:
378
+ raise ValueError(
379
+ f"Unknown store kind: {kind!r}. Expected one of {sorted(_KINDS)}"
380
+ )
381
+ registry = _default_registries.get(kind)
382
+ if registry is not None:
383
+ return registry
384
+ with _default_lock:
385
+ registry = _default_registries.get(kind)
386
+ if registry is None:
387
+ registry = StoreRegistry(kind, _KINDS[kind])
388
+ _default_registries[kind] = registry
389
+ return registry
390
+
391
+
392
+ # Backward-compatible module-level access. ``CONVERSATION_STORES`` /
393
+ # ``KNOWLEDGE_STORES`` / ``STATE_STORES`` still resolve, but only build (and pay
394
+ # for) their registry the first time they are referenced, not at import time.
395
+ _MODULE_ATTR_KIND = {
396
+ "CONVERSATION_STORES": "conversation",
397
+ "KNOWLEDGE_STORES": "knowledge",
398
+ "STATE_STORES": "state",
399
+ }
400
+
401
+
402
+ def __getattr__(name: str) -> Any:
403
+ kind = _MODULE_ATTR_KIND.get(name)
404
+ if kind is not None:
405
+ return get_default_registry(kind)
406
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -0,0 +1,80 @@
1
+ """Tests for lazy persistence registries and DI-friendly factory (issue #2510).
2
+
3
+ Covers Gap 2a: importing ``praisonai.persistence.registry`` must not build the
4
+ process-default registries as a side effect, and ``get_default_registry`` must
5
+ return a stable, per-kind, lazily-created instance. Also verifies the factory
6
+ functions accept an injected ``registry=`` for multi-tenant isolation.
7
+ """
8
+
9
+ import pytest
10
+
11
+ from praisonai.persistence import registry as registry_module
12
+ from praisonai.persistence.registry import (
13
+ StoreRegistry,
14
+ get_default_registry,
15
+ )
16
+ from praisonai.persistence.factory import (
17
+ create_state_store,
18
+ create_conversation_store,
19
+ create_knowledge_store,
20
+ )
21
+
22
+
23
+ def test_import_has_no_module_level_singletons():
24
+ """Import must not bind eager module-level registry constants.
25
+
26
+ The legacy names resolve lazily via module ``__getattr__``; they must never
27
+ appear in the module ``__dict__`` as an import-time side effect.
28
+ """
29
+ assert "CONVERSATION_STORES" not in registry_module.__dict__
30
+ assert "KNOWLEDGE_STORES" not in registry_module.__dict__
31
+ assert "STATE_STORES" not in registry_module.__dict__
32
+
33
+
34
+ def test_get_default_registry_is_lazy_and_stable():
35
+ r1 = get_default_registry("state")
36
+ r2 = get_default_registry("state")
37
+ assert r1 is r2
38
+ assert isinstance(r1, StoreRegistry)
39
+ # Different kinds are different instances.
40
+ assert get_default_registry("state") is not get_default_registry("knowledge")
41
+
42
+
43
+ def test_get_default_registry_rejects_unknown_kind():
44
+ with pytest.raises(ValueError):
45
+ get_default_registry("bogus")
46
+
47
+
48
+ def test_backward_compat_module_attrs_resolve():
49
+ """Legacy ``CONVERSATION_STORES`` etc. still resolve to the default registry."""
50
+ assert registry_module.CONVERSATION_STORES is get_default_registry("conversation")
51
+ assert registry_module.KNOWLEDGE_STORES is get_default_registry("knowledge")
52
+ assert registry_module.STATE_STORES is get_default_registry("state")
53
+
54
+
55
+ def test_missing_module_attr_still_raises():
56
+ with pytest.raises(AttributeError):
57
+ registry_module.DOES_NOT_EXIST # noqa: B018
58
+
59
+
60
+ def test_factory_accepts_injected_registry():
61
+ """A caller-supplied registry is used instead of the process default."""
62
+ tenant = StoreRegistry("state", "praisonai.state_stores")
63
+
64
+ created = {}
65
+
66
+ def _fake(url=None, **kwargs):
67
+ created["called"] = True
68
+ return object()
69
+
70
+ tenant.register("memfake", _fake)
71
+ store = create_state_store("memfake", registry=tenant)
72
+ assert created.get("called") is True
73
+ assert store is not None
74
+ # The default registry is untouched by the tenant registration.
75
+ assert "memfake" not in get_default_registry("state").list_names()
76
+
77
+
78
+ def test_factory_defaults_to_process_registry():
79
+ store = create_state_store("memory")
80
+ assert store is not None
@@ -0,0 +1,45 @@
1
+ """Backward-compatible shim for ``praisonai.runtime``.
2
+
3
+ The warm local runtime moved to :mod:`praisonai_code.runtime` (parent tracking
4
+ issue, step C1). This shim re-exports the public surface and aliases the
5
+ submodules so existing imports keep working:
6
+
7
+ from praisonai.runtime import RuntimeDescriptor, RuntimeClient
8
+ from praisonai.runtime.descriptor import get_runtime_descriptor
9
+ python -m praisonai.runtime
10
+ """
11
+
12
+ import sys as _sys
13
+
14
+ import praisonai_code.runtime as _runtime
15
+
16
+ # Alias submodules so ``praisonai.runtime.<sub>`` resolves to the moved module.
17
+ # These submodules always exist in ``praisonai_code``; let any real import
18
+ # error surface here (with its original traceback) instead of being swallowed
19
+ # and re-raised later as a confusing missing-submodule error on the old path.
20
+ #
21
+ # ``__main__`` is deliberately excluded: pre-inserting it into ``sys.modules``
22
+ # makes runpy see the old-path ``__main__`` as already loaded under a foreign
23
+ # loader, breaking ``python -m praisonai.runtime`` (RuntimeWarning + ImportError).
24
+ # The physical delegating shim ``praisonai/runtime/__main__.py`` handles that
25
+ # path instead.
26
+ for _name in ("descriptor", "client", "server"):
27
+ _mod = __import__(f"praisonai_code.runtime.{_name}", fromlist=[_name])
28
+ _sys.modules[f"{__name__}.{_name}"] = _mod
29
+ # Bind on the package object too so ``import praisonai.runtime.<sub>``
30
+ # followed by attribute access works (sys.modules aliasing alone does not
31
+ # set the parent-package attribute when pre-inserted).
32
+ globals()[_name] = _mod
33
+
34
+ del _sys, _name, _mod
35
+
36
+
37
+ def __getattr__(name: str):
38
+ return getattr(_runtime, name)
39
+
40
+
41
+ def __dir__():
42
+ return sorted(set(globals()) | set(dir(_runtime)))
43
+
44
+
45
+ __all__ = getattr(_runtime, "__all__", [])
@@ -0,0 +1,11 @@
1
+ """Shim entrypoint: ``python -m praisonai.runtime`` boots the moved runtime.
2
+
3
+ Delegates to :mod:`praisonai_code.runtime.__main__` (moved in step C1).
4
+ """
5
+
6
+ import sys
7
+
8
+ from praisonai_code.runtime.__main__ import main
9
+
10
+ if __name__ == "__main__":
11
+ sys.exit(main())
@@ -41,6 +41,7 @@ from typing import (
41
41
  )
42
42
  from types import MappingProxyType
43
43
  from ._safe_loader import load_user_module
44
+ from ._registry import PluginRegistry
44
45
 
45
46
  if TYPE_CHECKING: # imported only for type annotations to avoid a runtime cycle
46
47
  from .tool_registry import ToolRegistry
@@ -95,6 +96,104 @@ class _CallableSource:
95
96
  return self._fn(name)
96
97
 
97
98
 
99
+ class ToolSourceRegistry(PluginRegistry["ToolSource"]):
100
+ """Entry-point-driven registry for third-party :class:`ToolSource` plugins.
101
+
102
+ Mirrors the other extension surfaces in the wrapper
103
+ (``FrameworkAdapterRegistry`` / ``LLMProviderRegistry`` / ``StoreRegistry``)
104
+ so tool sources are discoverable via the ``praisonai.tool_sources``
105
+ entry-point group instead of requiring subclassing / monkeypatching of
106
+ :class:`ToolResolver`.
107
+
108
+ A registered entry point may resolve to either:
109
+
110
+ * a :class:`ToolSource` instance (used directly), or
111
+ * a zero-argument callable / class that returns a :class:`ToolSource`
112
+ (instantiated on first use).
113
+
114
+ Third-party packages register in ``pyproject.toml``::
115
+
116
+ [project.entry-points."praisonai.tool_sources"]
117
+ corp-tools = "praisonai_corp_tools:CorpToolsSource"
118
+
119
+ The built-in resolution chain (local tools.py, wrapper registry,
120
+ praisonaiagents, praisonai-tools, core registry) stays owned by
121
+ :meth:`ToolResolver.default_sources`; entry-point sources discovered here
122
+ are appended after it so third parties extend rather than replace it.
123
+ """
124
+
125
+ def __init__(self, *, discover_entry_points: bool = True) -> None:
126
+ # No builtins: the historical chain is constructed by ToolResolver and
127
+ # bound to the resolver instance. This registry only carries pluggable,
128
+ # instance-independent third-party sources discovered via entry points.
129
+ #
130
+ # Pass ``discover_entry_points=False`` for a guaranteed-empty registry
131
+ # (opt out of third-party sources, or make tests deterministic
132
+ # regardless of what is installed in the environment).
133
+ super().__init__(
134
+ entry_point_group="praisonai.tool_sources",
135
+ builtins=None,
136
+ discover_entry_points=discover_entry_points,
137
+ )
138
+
139
+ def create_sources(self) -> List["ToolSource"]:
140
+ """Instantiate every registered entry-point source, skipping failures.
141
+
142
+ A misbehaving plugin (bad import, constructor error) is logged and
143
+ skipped rather than breaking tool resolution for everyone.
144
+ """
145
+ sources: List[ToolSource] = []
146
+ for name in self.list_names():
147
+ try:
148
+ obj = self.resolve(name)
149
+ sources.append(_coerce_source(obj))
150
+ except Exception: # pragma: no cover - defensive against bad plugins
151
+ logger.debug("Tool source plugin %r failed to load", name, exc_info=True)
152
+ return sources
153
+
154
+
155
+ def _is_tool_source(candidate: Any) -> bool:
156
+ """True if ``candidate`` satisfies the :class:`ToolSource` protocol."""
157
+ return (
158
+ callable(getattr(candidate, "lookup", None))
159
+ and isinstance(getattr(candidate, "name", None), str)
160
+ )
161
+
162
+
163
+ def _coerce_source(obj: Any) -> "ToolSource":
164
+ """Turn a resolved entry-point object into a :class:`ToolSource` instance.
165
+
166
+ A class (or other zero-arg callable *factory*) is instantiated; a ready-made
167
+ instance is used as-is. Classes are always instantiated even though the
168
+ class itself carries ``name`` / ``lookup`` attributes, because a class'
169
+ ``lookup`` is an unbound function that would receive ``name`` as ``self``.
170
+
171
+ Raises:
172
+ TypeError: If the resolved object is not (and does not produce) a valid
173
+ :class:`ToolSource`. Raising here lets :meth:`create_sources` skip a
174
+ misbehaving plugin instead of appending a broken source that would
175
+ raise on every lookup and disable negative caching.
176
+ """
177
+ if inspect.isclass(obj):
178
+ candidate = obj()
179
+ elif _is_tool_source(obj):
180
+ # Already a ToolSource instance.
181
+ candidate = obj
182
+ elif callable(obj):
183
+ # A factory function returning a ToolSource.
184
+ candidate = obj()
185
+ else:
186
+ candidate = obj
187
+
188
+ if _is_tool_source(candidate):
189
+ return candidate
190
+
191
+ raise TypeError(
192
+ "Tool source plugin must resolve to a ToolSource "
193
+ "(an object with a str 'name' and callable 'lookup')"
194
+ )
195
+
196
+
98
197
  class ToolResolver:
99
198
  """Resolves tool names to callables from multiple sources.
100
199
 
@@ -115,6 +214,8 @@ class ToolResolver:
115
214
  tools_py_path: Optional[str] = None,
116
215
  registry: Optional["ToolRegistry"] = None,
117
216
  sources: Optional[List[ToolSource]] = None,
217
+ *,
218
+ source_registry: Optional["ToolSourceRegistry"] = None,
118
219
  ):
119
220
  """Initialize the resolver.
120
221
 
@@ -122,6 +223,11 @@ class ToolResolver:
122
223
  tools_py_path: Optional path to tools.py. If None, uses ./tools.py
123
224
  registry: Optional ToolRegistry to include in resolution chain
124
225
  sources: Optional list of ToolSource objects. If None, uses defaults.
226
+ source_registry: Optional ToolSourceRegistry supplying third-party
227
+ entry-point tool sources. When ``sources`` is not provided,
228
+ these are appended after the built-in resolution chain. Defaults
229
+ to the process-default registry (``praisonai.tool_sources``
230
+ entry-point group). Pass an empty registry to opt out.
125
231
  """
126
232
  from pathlib import Path
127
233
  # Resolve path eagerly in constructor to make binding explicit and inspectable
@@ -139,16 +245,19 @@ class ToolResolver:
139
245
  self._local_tools_dir_cache: Dict[str, Dict[str, Any]] = {}
140
246
  self._local_tools_dir_lock = threading.Lock()
141
247
  self._registry = registry
248
+ self._source_registry = source_registry
142
249
 
143
250
  # Resolution chain as an ordered list of ToolSource objects. When a
144
251
  # caller supplies sources= they fully control resolution order; this is
145
252
  # the documented extension point. Otherwise we build the default chain
146
- # equivalent to the historical hardcoded order.
253
+ # equivalent to the historical hardcoded order, then append any
254
+ # third-party entry-point sources discovered via ToolSourceRegistry.
147
255
  if sources is not None:
148
256
  self._sources: List[ToolSource] = list(sources)
149
257
  self._uses_default_sources = False
150
258
  else:
151
259
  self._sources = self.default_sources(registry)
260
+ self._sources.extend(self._entry_point_sources())
152
261
  self._uses_default_sources = True
153
262
 
154
263
  # Auto-wire cache invalidation so register_function() on the registry
@@ -203,6 +312,23 @@ class ToolResolver:
203
312
  lambda n: self._resolve_from_registry(n)),
204
313
  ]
205
314
 
315
+ def _entry_point_sources(self) -> List[ToolSource]:
316
+ """Third-party tool sources discovered via ``praisonai.tool_sources``.
317
+
318
+ Returns an empty list when no plugins are installed, so single-tenant
319
+ callers pay nothing beyond a one-time entry-point scan. A caller can
320
+ pass ``source_registry=ToolSourceRegistry()`` for isolation, or an empty
321
+ custom registry to opt out entirely.
322
+ """
323
+ registry = self._source_registry
324
+ if registry is None:
325
+ registry = ToolSourceRegistry.default()
326
+ try:
327
+ return registry.create_sources()
328
+ except Exception: # pragma: no cover - defensive; never break resolution
329
+ logger.debug("Failed to load entry-point tool sources", exc_info=True)
330
+ return []
331
+
206
332
  def _load_local_tools(self) -> Mapping[str, Callable]:
207
333
  """Load tools from local tools.py file.
208
334
 
@@ -0,0 +1 @@
1
+ __version__ = "4.6.102"
@@ -12,7 +12,8 @@ dependencies = [
12
12
  "rich>=13.7",
13
13
  "markdown>=3.5",
14
14
  "pyparsing>=3.0.0",
15
- "praisonaiagents>=1.6.101",
15
+ "praisonaiagents>=1.6.102",
16
+ "praisonai-code",
16
17
  "python-dotenv>=0.19.0",
17
18
  "litellm>=1.83.14,<2",
18
19
  "PyYAML>=6.0",
@@ -22,6 +23,7 @@ dependencies = [
22
23
  "textual>=0.47.0",
23
24
  "pydantic>=2.0.0",
24
25
  "toml>=0.10.2",
26
+ "praisonai-code",
25
27
  ]
26
28
 
27
29
  [project.scripts]
@@ -280,6 +282,10 @@ Repository = "https://github.com/mervinpraison/PraisonAI"
280
282
 
281
283
  [tool.uv.sources]
282
284
  praisonaiagents = { path = "../praisonai-agents" }
285
+ # praisonai-code hosts the agentic terminal CLI (extracted incrementally,
286
+ # see issue #2512). Editable path dep during migration; runtime/ and
287
+ # cli_backends/ have moved here (C1), old praisonai.* paths kept via shims.
288
+ praisonai-code = { path = "../praisonai-code", editable = true }
283
289
 
284
290
  [tool.uv]
285
291
  # Exclude from lock resolution — these cause cross-extra conflicts that