PraisonAI 4.6.67__tar.gz → 4.6.70__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 (869) hide show
  1. {praisonai-4.6.67 → praisonai-4.6.70}/PKG-INFO +2 -2
  2. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/PKG-INFO +2 -2
  3. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/SOURCES.txt +9 -0
  4. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/requires.txt +1 -1
  5. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/__main__.py +2 -8
  6. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_approval_spec.py +50 -2
  7. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_async_bridge.py +22 -16
  8. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_framework_availability.py +5 -0
  9. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_lazy_cache.py +14 -5
  10. praisonai-4.6.70/praisonai/_lockmap.py +125 -0
  11. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/adapters/vector_stores.py +8 -47
  12. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/agents_generator.py +55 -20
  13. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/api/call.py +13 -4
  14. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/auto.py +59 -94
  15. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_commands.py +1 -0
  16. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_config_schema.py +2 -0
  17. praisonai-4.6.70/praisonai/bots/_delivery.py +576 -0
  18. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_http_approval.py +1 -1
  19. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_protocol_mixin.py +21 -0
  20. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_session.py +92 -0
  21. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/agentmail.py +21 -8
  22. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/delivery.py +80 -0
  23. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/discord.py +137 -35
  24. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/email.py +23 -11
  25. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/linear.py +5 -10
  26. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/slack.py +184 -54
  27. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/telegram.py +143 -39
  28. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/whatsapp.py +9 -25
  29. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/app.py +137 -2
  30. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/approval_backend.py +22 -13
  31. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/bot.py +116 -36
  32. praisonai-4.6.70/praisonai/cli/commands/models.py +264 -0
  33. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/run.py +158 -56
  34. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/schedule.py +19 -5
  35. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/serve.py +139 -0
  36. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/approval.py +12 -7
  37. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/bots_cli.py +37 -2
  38. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/sandbox_cli.py +18 -8
  39. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/main.py +2 -1
  40. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli_backends/claude.py +27 -3
  41. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/execute_command.py +24 -0
  42. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/search_replace.py +12 -0
  43. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/write_file.py +9 -0
  44. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/db/adapter.py +10 -2
  45. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/__init__.py +1 -0
  46. praisonai-4.6.70/praisonai/endpoints/providers/openai_compat.py +542 -0
  47. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/autogen_adapter.py +13 -11
  48. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/base.py +8 -4
  49. praisonai-4.6.70/praisonai/framework_adapters/praisonai_adapter.py +494 -0
  50. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/__init__.py +18 -0
  51. praisonai-4.6.70/praisonai/gateway/client.py +435 -0
  52. praisonai-4.6.70/praisonai/gateway/home_channels.py +218 -0
  53. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/server.py +787 -46
  54. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/llm/__init__.py +24 -0
  55. praisonai-4.6.70/praisonai/llm/catalogue.py +462 -0
  56. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/llm/credentials.py +74 -3
  57. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/llm/env.py +30 -1
  58. praisonai-4.6.70/praisonai/llm/gateways.py +211 -0
  59. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/llm/registry.py +5 -2
  60. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/transports/http_stream.py +30 -7
  61. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/observability/hooks.py +4 -6
  62. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/_registry.py +1 -1
  63. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/daytona.py +7 -31
  64. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/__init__.py +2 -1
  65. praisonai-4.6.70/praisonai/scheduler/_dispatch.py +28 -0
  66. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/async_agent_scheduler.py +2 -9
  67. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/base.py +4 -4
  68. praisonai-4.6.70/praisonai/scheduler/enhanced_executor.py +229 -0
  69. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/security/__init__.py +3 -3
  70. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/security/audit.py +23 -2
  71. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tool_registry.py +29 -8
  72. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tool_resolver.py +40 -24
  73. praisonai-4.6.70/praisonai/version.py +1 -0
  74. {praisonai-4.6.67 → praisonai-4.6.70}/pyproject.toml +1 -1
  75. praisonai-4.6.67/praisonai/_lockmap.py +0 -86
  76. praisonai-4.6.67/praisonai/framework_adapters/praisonai_adapter.py +0 -484
  77. praisonai-4.6.67/praisonai/version.py +0 -1
  78. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/dependency_links.txt +0 -0
  79. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/entry_points.txt +0 -0
  80. {praisonai-4.6.67 → praisonai-4.6.70}/PraisonAI.egg-info/top_level.txt +0 -0
  81. {praisonai-4.6.67 → praisonai-4.6.70}/README.md +0 -0
  82. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/__init__.py +0 -0
  83. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/__init__.py +0 -0
  84. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/api_md.py +0 -0
  85. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/__init__.py +0 -0
  86. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/docs_extractor.py +0 -0
  87. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/docs_generator.py +0 -0
  88. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/generator.py +0 -0
  89. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/python_docs_extractor.py +0 -0
  90. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/python_extractor.py +0 -0
  91. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/rust_docs_extractor.py +0 -0
  92. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/rust_extractor.py +0 -0
  93. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/topic_normalizer.py +0 -0
  94. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/ts_docs_extractor.py +0 -0
  95. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_dev/parity/typescript_extractor.py +0 -0
  96. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_entrypoint.py +0 -0
  97. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_logging.py +0 -0
  98. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_registry.py +0 -0
  99. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/_safe_loader.py +0 -0
  100. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/acp/__init__.py +0 -0
  101. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/acp/config.py +0 -0
  102. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/acp/safe_edit.py +0 -0
  103. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/acp/server.py +0 -0
  104. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/acp/session.py +0 -0
  105. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/adapters/__init__.py +0 -0
  106. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/adapters/readers.py +0 -0
  107. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/adapters/rerankers.py +0 -0
  108. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/adapters/retrievers.py +0 -0
  109. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/agent.py +0 -0
  110. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/agent_scheduler.py +0 -0
  111. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/api/agent_invoke.py +0 -0
  112. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/app/__init__.py +0 -0
  113. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/app/agentos.py +0 -0
  114. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/async_agent_scheduler.py +0 -0
  115. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/audit/__init__.py +0 -0
  116. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/audit/agent_centric.py +0 -0
  117. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/__init__.py +0 -0
  118. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_ack.py +0 -0
  119. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_approval.py +0 -0
  120. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_approval_base.py +0 -0
  121. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_auth.py +0 -0
  122. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_chunk.py +0 -0
  123. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_debounce.py +0 -0
  124. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_defaults.py +0 -0
  125. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_discord_approval.py +0 -0
  126. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_dlq.py +0 -0
  127. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_durable_adapter.py +0 -0
  128. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_email_utils.py +0 -0
  129. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_ingress.py +0 -0
  130. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_mirror.py +0 -0
  131. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_outbox.py +0 -0
  132. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_pairing_ui.py +0 -0
  133. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_presentation_approval.py +0 -0
  134. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_presentation_renderer.py +0 -0
  135. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_rate_limit.py +0 -0
  136. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_registry.py +0 -0
  137. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_reset_policy.py +0 -0
  138. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_resilience.py +0 -0
  139. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_run_control.py +0 -0
  140. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_slack_approval.py +0 -0
  141. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_status.py +0 -0
  142. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_streaming.py +0 -0
  143. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_telegram_approval.py +0 -0
  144. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_typing.py +0 -0
  145. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_typing_indicator.py +0 -0
  146. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_unknown_user.py +0 -0
  147. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_webhook_approval.py +0 -0
  148. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/_whatsapp_web_adapter.py +0 -0
  149. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/bot.py +0 -0
  150. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/botos.py +0 -0
  151. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/media.py +0 -0
  152. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/bots/webhook_security.py +0 -0
  153. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/__init__.py +0 -0
  154. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/agent.py +0 -0
  155. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/benchmark.py +0 -0
  156. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/cdp_agent.py +0 -0
  157. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/cdp_utils.py +0 -0
  158. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/cli.py +0 -0
  159. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/diagnostics.py +0 -0
  160. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/launcher.py +0 -0
  161. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/playwright_agent.py +0 -0
  162. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/profiling.py +0 -0
  163. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/protocol.py +0 -0
  164. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/report.py +0 -0
  165. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/server.py +0 -0
  166. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/sessions.py +0 -0
  167. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/browser/video.py +0 -0
  168. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/__init__.py +0 -0
  169. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/a2a.py +0 -0
  170. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/assistants.py +0 -0
  171. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/audio.py +0 -0
  172. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/batches.py +0 -0
  173. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/completions.py +0 -0
  174. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/container_files.py +0 -0
  175. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/containers.py +0 -0
  176. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/embeddings.py +0 -0
  177. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/files.py +0 -0
  178. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/fine_tuning.py +0 -0
  179. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/guardrails.py +0 -0
  180. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/images.py +0 -0
  181. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/mcp.py +0 -0
  182. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/messages.py +0 -0
  183. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/moderations.py +0 -0
  184. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/ocr.py +0 -0
  185. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/passthrough.py +0 -0
  186. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/rag.py +0 -0
  187. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/realtime.py +0 -0
  188. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/rerank.py +0 -0
  189. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/responses.py +0 -0
  190. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/search.py +0 -0
  191. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/skills.py +0 -0
  192. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/vector_store_files.py +0 -0
  193. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/vector_stores.py +0 -0
  194. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/capabilities/videos.py +0 -0
  195. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/claw/__init__.py +0 -0
  196. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/claw/default_app.py +0 -0
  197. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/__init__.py +0 -0
  198. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/_paths.py +0 -0
  199. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/_warnings.py +0 -0
  200. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/branding.py +0 -0
  201. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/__init__.py +0 -0
  202. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/acp.py +0 -0
  203. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/agent.py +0 -0
  204. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/agents.py +0 -0
  205. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/app.py +0 -0
  206. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/audit.py +0 -0
  207. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/auth.py +0 -0
  208. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/batch.py +0 -0
  209. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/benchmark.py +0 -0
  210. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/browser.py +0 -0
  211. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/call.py +0 -0
  212. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/chat.py +0 -0
  213. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/claw.py +0 -0
  214. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/code.py +0 -0
  215. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/command.py +0 -0
  216. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/commit.py +0 -0
  217. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/completion.py +0 -0
  218. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/config.py +0 -0
  219. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/context.py +0 -0
  220. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/dashboard.py +0 -0
  221. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/debug.py +0 -0
  222. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/deploy.py +0 -0
  223. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/diag.py +0 -0
  224. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/docs.py +0 -0
  225. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/doctor.py +0 -0
  226. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/endpoints.py +0 -0
  227. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/environment.py +0 -0
  228. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/eval.py +0 -0
  229. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/examples.py +0 -0
  230. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/flow.py +0 -0
  231. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/gateway.py +0 -0
  232. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/github.py +0 -0
  233. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/hooks.py +0 -0
  234. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/kanban.py +0 -0
  235. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/knowledge.py +0 -0
  236. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/langextract.py +0 -0
  237. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/langfuse.py +0 -0
  238. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/loop.py +0 -0
  239. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/lsp.py +0 -0
  240. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/managed.py +0 -0
  241. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/mcp.py +0 -0
  242. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/memory.py +0 -0
  243. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/mint_link.py +0 -0
  244. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/n8n.py +0 -0
  245. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/obs.py +0 -0
  246. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/onboard.py +0 -0
  247. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/package.py +0 -0
  248. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/pairing.py +0 -0
  249. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/paths.py +0 -0
  250. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/permissions.py +0 -0
  251. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/plugins.py +0 -0
  252. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/port.py +0 -0
  253. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/profile.py +0 -0
  254. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/publish.py +0 -0
  255. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/rag.py +0 -0
  256. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/realtime.py +0 -0
  257. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/recipe.py +0 -0
  258. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/registry.py +0 -0
  259. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/replay.py +0 -0
  260. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/research.py +0 -0
  261. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/retrieval.py +0 -0
  262. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/rules.py +0 -0
  263. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/sandbox.py +0 -0
  264. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/session.py +0 -0
  265. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/setup.py +0 -0
  266. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/skills.py +0 -0
  267. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/standardise.py +0 -0
  268. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/templates.py +0 -0
  269. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/test.py +0 -0
  270. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/todo.py +0 -0
  271. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/tools.py +0 -0
  272. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/traces.py +0 -0
  273. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/tracker.py +0 -0
  274. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/train.py +0 -0
  275. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/ui.py +0 -0
  276. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/up.py +0 -0
  277. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/version.py +0 -0
  278. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/commands/workflow.py +0 -0
  279. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/config_loader.py +0 -0
  280. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/__init__.py +0 -0
  281. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/credentials.py +0 -0
  282. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/loader.py +0 -0
  283. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/paths.py +0 -0
  284. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/resolver.py +0 -0
  285. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/configuration/schema.py +0 -0
  286. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/execution/__init__.py +0 -0
  287. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/execution/core.py +0 -0
  288. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/execution/profiler.py +0 -0
  289. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/execution/request.py +0 -0
  290. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/execution/result.py +0 -0
  291. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/fallback_schema.py +0 -0
  292. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/__init__.py +0 -0
  293. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/_endpoint_registry.py +0 -0
  294. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/_search_registry.py +0 -0
  295. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/acp.py +0 -0
  296. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/action_orchestrator.py +0 -0
  297. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/agent_scheduler.py +0 -0
  298. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/agent_tools.py +0 -0
  299. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/agents.py +0 -0
  300. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/at_mentions.py +0 -0
  301. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/audit_cli.py +0 -0
  302. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/auto_memory.py +0 -0
  303. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/auto_mode.py +0 -0
  304. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/autonomy_mode.py +0 -0
  305. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/background.py +0 -0
  306. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/base.py +0 -0
  307. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/benchmark.py +0 -0
  308. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/capabilities.py +0 -0
  309. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/checkpoints.py +0 -0
  310. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/cli_profiler.py +0 -0
  311. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/code_intelligence.py +0 -0
  312. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/compaction.py +0 -0
  313. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/compare.py +0 -0
  314. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/config_hierarchy.py +0 -0
  315. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/context_manager.py +0 -0
  316. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/cost_tracker.py +0 -0
  317. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/csv_test_runner.py +0 -0
  318. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/custom_definitions.py +0 -0
  319. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/debug.py +0 -0
  320. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/deploy.py +0 -0
  321. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/diag.py +0 -0
  322. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/display_jsonl.py +0 -0
  323. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/__init__.py +0 -0
  324. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/__init__.py +0 -0
  325. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/acp_checks.py +0 -0
  326. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/bot_checks.py +0 -0
  327. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/config_checks.py +0 -0
  328. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/db_checks.py +0 -0
  329. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/env_checks.py +0 -0
  330. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/gateway_checks.py +0 -0
  331. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/lsp_checks.py +0 -0
  332. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/mcp_checks.py +0 -0
  333. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/memory_checks.py +0 -0
  334. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/network_checks.py +0 -0
  335. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/obs_checks.py +0 -0
  336. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/packaging_checks.py +0 -0
  337. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/performance_checks.py +0 -0
  338. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/permissions_checks.py +0 -0
  339. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/runtime_checks.py +0 -0
  340. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/selftest_checks.py +0 -0
  341. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/serve_checks.py +0 -0
  342. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/skills_checks.py +0 -0
  343. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/checks/tools_checks.py +0 -0
  344. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/engine.py +0 -0
  345. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/formatters.py +0 -0
  346. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/handler.py +0 -0
  347. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/models.py +0 -0
  348. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/doctor/registry.py +0 -0
  349. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/endpoints.py +0 -0
  350. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/eval.py +0 -0
  351. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/examples.py +0 -0
  352. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/external_agents.py +0 -0
  353. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/fast_context.py +0 -0
  354. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/file_history.py +0 -0
  355. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/flow_display.py +0 -0
  356. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/gateway.py +0 -0
  357. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/git_attribution.py +0 -0
  358. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/git_integration.py +0 -0
  359. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/guardrail.py +0 -0
  360. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/handoff.py +0 -0
  361. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/hooks.py +0 -0
  362. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/hybrid_workflow.py +0 -0
  363. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/image.py +0 -0
  364. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/interactive_core_headless.py +0 -0
  365. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/interactive_runtime.py +0 -0
  366. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/interactive_test_harness.py +0 -0
  367. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/interactive_tools.py +0 -0
  368. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/interactive_tui.py +0 -0
  369. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/job_workflow.py +0 -0
  370. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/jobs.py +0 -0
  371. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/knowledge.py +0 -0
  372. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/knowledge_cli.py +0 -0
  373. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/lite.py +0 -0
  374. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/logs.py +0 -0
  375. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/lsp_cli.py +0 -0
  376. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/lsp_diagnostics.py +0 -0
  377. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/mcp.py +0 -0
  378. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/message_queue.py +0 -0
  379. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/metrics.py +0 -0
  380. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/migrate.py +0 -0
  381. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/migration_flow.py +0 -0
  382. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/migration_spec.py +0 -0
  383. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/n8n.py +0 -0
  384. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/observability.py +0 -0
  385. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/ollama.py +0 -0
  386. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/onboard.py +0 -0
  387. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/output_modes.py +0 -0
  388. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/output_style.py +0 -0
  389. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/package.py +0 -0
  390. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/performance.py +0 -0
  391. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/persistence.py +0 -0
  392. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/plugin_cli.py +0 -0
  393. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profile.py +0 -0
  394. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profiler/__init__.py +0 -0
  395. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profiler/core.py +0 -0
  396. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profiler/optimizations.py +0 -0
  397. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profiler/suite.py +0 -0
  398. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/profiling.py +0 -0
  399. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/__init__.py +0 -0
  400. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/manager.py +0 -0
  401. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/models.py +0 -0
  402. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/persistence.py +0 -0
  403. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/scheduler.py +0 -0
  404. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/queue/worker.py +0 -0
  405. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/recipe.py +0 -0
  406. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/recipe_creator.py +0 -0
  407. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/recipe_optimizer.py +0 -0
  408. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/recipe_prompts.py +0 -0
  409. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/recipes.py +0 -0
  410. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/registry.py +0 -0
  411. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/repo_map.py +0 -0
  412. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/router.py +0 -0
  413. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/safe_shell.py +0 -0
  414. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/sandbox_executor.py +0 -0
  415. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/sdk_knowledge.py +0 -0
  416. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/serve.py +0 -0
  417. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/session.py +0 -0
  418. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/setup/__init__.py +0 -0
  419. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/setup/handler.py +0 -0
  420. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/setup/templates.py +0 -0
  421. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/skills.py +0 -0
  422. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/slash_commands.py +0 -0
  423. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/telemetry.py +0 -0
  424. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/templates.py +0 -0
  425. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/thinking.py +0 -0
  426. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/todo.py +0 -0
  427. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tools.py +0 -0
  428. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/__init__.py +0 -0
  429. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/app.py +0 -0
  430. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/cli.py +0 -0
  431. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/config.py +0 -0
  432. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/debug.py +0 -0
  433. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/events.py +0 -0
  434. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/mock_provider.py +0 -0
  435. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/orchestrator.py +0 -0
  436. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/__init__.py +0 -0
  437. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/help.py +0 -0
  438. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/main.py +0 -0
  439. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/queue.py +0 -0
  440. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/session.py +0 -0
  441. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/screens/settings.py +0 -0
  442. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/session_store.py +0 -0
  443. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/__init__.py +0 -0
  444. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/chat.py +0 -0
  445. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/command_popup.py +0 -0
  446. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/composer.py +0 -0
  447. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/file_popup.py +0 -0
  448. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/queue_panel.py +0 -0
  449. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/status.py +0 -0
  450. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/tui/widgets/tool_panel.py +0 -0
  451. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/wizard.py +0 -0
  452. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/workflow.py +0 -0
  453. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/features/yaml_utils.py +0 -0
  454. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/__init__.py +0 -0
  455. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/async_tui.py +0 -0
  456. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/config.py +0 -0
  457. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/core.py +0 -0
  458. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/events.py +0 -0
  459. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/frontends/__init__.py +0 -0
  460. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/frontends/rich_frontend.py +0 -0
  461. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/frontends/textual_frontend.py +0 -0
  462. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/praison_io.py +0 -0
  463. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/repl.py +0 -0
  464. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/split_tui.py +0 -0
  465. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/interactive/tui_app.py +0 -0
  466. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/langfuse_client.py +0 -0
  467. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/output/__init__.py +0 -0
  468. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/output/console.py +0 -0
  469. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/schedule_cli.py +0 -0
  470. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/schema_provider.py +0 -0
  471. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/session/__init__.py +0 -0
  472. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/session/unified.py +0 -0
  473. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/state/__init__.py +0 -0
  474. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/state/identifiers.py +0 -0
  475. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/state/project_sessions.py +0 -0
  476. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/state/sessions.py +0 -0
  477. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/__init__.py +0 -0
  478. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/config.py +0 -0
  479. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/events.py +0 -0
  480. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/mg_backend.py +0 -0
  481. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/plain.py +0 -0
  482. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/ui/rich_backend.py +0 -0
  483. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/unified_schema.py +0 -0
  484. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/utils/env_utils.py +0 -0
  485. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli/utils/project.py +0 -0
  486. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli_backends/__init__.py +0 -0
  487. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/cli_backends/registry.py +0 -0
  488. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/__init__.py +0 -0
  489. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/agent_tools.py +0 -0
  490. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/diff/__init__.py +0 -0
  491. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/diff/diff_strategy.py +0 -0
  492. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/__init__.py +0 -0
  493. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/apply_diff.py +0 -0
  494. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/list_files.py +0 -0
  495. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/tools/read_file.py +0 -0
  496. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/utils/__init__.py +0 -0
  497. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/utils/file_utils.py +0 -0
  498. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/utils/ignore_utils.py +0 -0
  499. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/code/utils/text_utils.py +0 -0
  500. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/__init__.py +0 -0
  501. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/_storage_path.py +0 -0
  502. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/artifact_store.py +0 -0
  503. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/config.py +0 -0
  504. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/history_store.py +0 -0
  505. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/queue.py +0 -0
  506. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/setup.py +0 -0
  507. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/context/terminal_logger.py +0 -0
  508. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/daemon/__init__.py +0 -0
  509. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/daemon/launchd.py +0 -0
  510. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/daemon/systemd.py +0 -0
  511. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/daemon/windows.py +0 -0
  512. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/db/__init__.py +0 -0
  513. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/__init__.py +0 -0
  514. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/api.py +0 -0
  515. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/docker.py +0 -0
  516. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/doctor.py +0 -0
  517. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/main.py +0 -0
  518. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/models.py +0 -0
  519. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/__init__.py +0 -0
  520. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/_registry.py +0 -0
  521. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/aws.py +0 -0
  522. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/azure.py +0 -0
  523. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/base.py +0 -0
  524. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/providers/gcp.py +0 -0
  525. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/deploy/schema.py +0 -0
  526. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/__init__.py +0 -0
  527. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/classifier.py +0 -0
  528. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/executor.py +0 -0
  529. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/extractor.py +0 -0
  530. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/reporter.py +0 -0
  531. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/runner.py +0 -0
  532. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/docs_runner/workspace.py +0 -0
  533. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/__init__.py +0 -0
  534. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/a2u_server.py +0 -0
  535. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/discovery.py +0 -0
  536. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/a2a.py +0 -0
  537. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/a2u.py +0 -0
  538. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/agents_api.py +0 -0
  539. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/base.py +0 -0
  540. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/mcp.py +0 -0
  541. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/recipe.py +0 -0
  542. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/providers/tools_mcp.py +0 -0
  543. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/registry.py +0 -0
  544. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/endpoints/server.py +0 -0
  545. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/__init__.py +0 -0
  546. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/client.py +0 -0
  547. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/components/PraisonAI/praisonai_agent.py +0 -0
  548. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/components/PraisonAI/praisonai_agents.py +0 -0
  549. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/components/__init__.py +0 -0
  550. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/converter.py +0 -0
  551. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/flow/helpers.py +0 -0
  552. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/__init__.py +0 -0
  553. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/crewai_adapter.py +0 -0
  554. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/registry.py +0 -0
  555. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/framework_adapters/validators.py +0 -0
  556. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/auth.py +0 -0
  557. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/cookie_auth.py +0 -0
  558. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/exec_approval.py +0 -0
  559. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/gateway_approval.py +0 -0
  560. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/health_monitor.py +0 -0
  561. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/kanban_dispatcher.py +0 -0
  562. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/magic_link.py +0 -0
  563. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/origin_check.py +0 -0
  564. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/pairing.py +0 -0
  565. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/pairing_routes.py +0 -0
  566. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/port_utils.py +0 -0
  567. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/push_channels.py +0 -0
  568. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/push_delivery.py +0 -0
  569. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/push_polling.py +0 -0
  570. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/push_presence.py +0 -0
  571. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/rate_limiter.py +0 -0
  572. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/redis_pubsub.py +0 -0
  573. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/supervisor.py +0 -0
  574. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/gateway/unicode_utils.py +0 -0
  575. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/inbuilt_tools/__init__.py +0 -0
  576. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  577. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/inc/__init__.py +0 -0
  578. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/inc/config.py +0 -0
  579. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/inc/models.py +0 -0
  580. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/__init__.py +0 -0
  581. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/__init__.py +0 -0
  582. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/approvals_bridge.py +0 -0
  583. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/hooks_query.py +0 -0
  584. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/kanban_bridge.py +0 -0
  585. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/schedules_runner.py +0 -0
  586. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/usage_bridge.py +0 -0
  587. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/bridges/workflows_service.py +0 -0
  588. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/context_files.py +0 -0
  589. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/gateway_host.py +0 -0
  590. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/host_app.py +0 -0
  591. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/pages/__init__.py +0 -0
  592. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/pages/bot_health.py +0 -0
  593. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integration/pages/workflow_runs.py +0 -0
  594. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/__init__.py +0 -0
  595. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/_session_info.py +0 -0
  596. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/_tool_aliases.py +0 -0
  597. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/_unified_registry.py +0 -0
  598. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/base.py +0 -0
  599. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/claude_code.py +0 -0
  600. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/codex_cli.py +0 -0
  601. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/__init__.py +0 -0
  602. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/daytona.py +0 -0
  603. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/docker.py +0 -0
  604. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/e2b.py +0 -0
  605. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/flyio.py +0 -0
  606. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/local.py +0 -0
  607. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/compute/modal_compute.py +0 -0
  608. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/cursor_cli.py +0 -0
  609. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/db_session_adapter.py +0 -0
  610. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/gemini_cli.py +0 -0
  611. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/hosted_agent.py +0 -0
  612. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/local_agent.py +0 -0
  613. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/managed_agents.py +0 -0
  614. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/managed_local.py +0 -0
  615. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/registry.py +0 -0
  616. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/integrations/sandboxed_agent.py +0 -0
  617. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/__init__.py +0 -0
  618. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/executor.py +0 -0
  619. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/models.py +0 -0
  620. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/path_validation.py +0 -0
  621. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/router.py +0 -0
  622. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/server.py +0 -0
  623. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/jobs/store.py +0 -0
  624. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/kanban/__init__.py +0 -0
  625. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/kanban/models.py +0 -0
  626. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/kanban/paths.py +0 -0
  627. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/kanban/sqlite_store.py +0 -0
  628. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/__init__.py +0 -0
  629. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/__init__.py +0 -0
  630. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/agents.py +0 -0
  631. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/capabilities.py +0 -0
  632. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/cli_tools.py +0 -0
  633. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/extended_capabilities.py +0 -0
  634. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/knowledge.py +0 -0
  635. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/memory.py +0 -0
  636. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/prompts.py +0 -0
  637. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/resources.py +0 -0
  638. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/adapters/tools_bridge.py +0 -0
  639. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/auth/__init__.py +0 -0
  640. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/auth/api_key.py +0 -0
  641. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/auth/oauth.py +0 -0
  642. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/auth/oidc.py +0 -0
  643. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/auth/scopes.py +0 -0
  644. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/cli.py +0 -0
  645. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/elicitation.py +0 -0
  646. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/icons.py +0 -0
  647. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/recipe_adapter.py +0 -0
  648. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/recipe_cli.py +0 -0
  649. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/registry.py +0 -0
  650. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/sampling.py +0 -0
  651. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/server.py +0 -0
  652. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/tasks.py +0 -0
  653. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/tool_index.py +0 -0
  654. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/transports/__init__.py +0 -0
  655. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/mcp_server/transports/stdio.py +0 -0
  656. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/n8n/__init__.py +0 -0
  657. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/n8n/client.py +0 -0
  658. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/n8n/converter.py +0 -0
  659. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/n8n/preview.py +0 -0
  660. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/n8n/reverse_converter.py +0 -0
  661. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/observability/__init__.py +0 -0
  662. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/observability/langextract.py +0 -0
  663. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/observability/langfuse.py +0 -0
  664. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/__init__.py +0 -0
  665. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/_valkey_client.py +0 -0
  666. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/config.py +0 -0
  667. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/__init__.py +0 -0
  668. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/_sql_base.py +0 -0
  669. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/async_mysql.py +0 -0
  670. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/async_postgres.py +0 -0
  671. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/async_sqlite.py +0 -0
  672. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/base.py +0 -0
  673. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/json_store.py +0 -0
  674. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/mysql.py +0 -0
  675. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/postgres.py +0 -0
  676. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/singlestore.py +0 -0
  677. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/sqlite.py +0 -0
  678. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/supabase.py +0 -0
  679. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/surrealdb.py +0 -0
  680. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/sync_sqlite.py +0 -0
  681. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/conversation/turso.py +0 -0
  682. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/factory.py +0 -0
  683. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/hooks/__init__.py +0 -0
  684. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/hooks/agent_hooks.py +0 -0
  685. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/__init__.py +0 -0
  686. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/base.py +0 -0
  687. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/cassandra.py +0 -0
  688. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/chroma.py +0 -0
  689. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/clickhouse.py +0 -0
  690. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/cosmosdb_vector.py +0 -0
  691. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/couchbase.py +0 -0
  692. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/lancedb.py +0 -0
  693. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/langchain_adapter.py +0 -0
  694. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/lightrag_adapter.py +0 -0
  695. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/llamaindex_adapter.py +0 -0
  696. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/milvus.py +0 -0
  697. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/mongodb_vector.py +0 -0
  698. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/pgvector.py +0 -0
  699. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/pinecone.py +0 -0
  700. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/qdrant.py +0 -0
  701. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/redis_vector.py +0 -0
  702. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/singlestore_vector.py +0 -0
  703. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/surrealdb_vector.py +0 -0
  704. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/upstash_vector.py +0 -0
  705. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/valkey_vector.py +0 -0
  706. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/knowledge/weaviate.py +0 -0
  707. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/migrations/__init__.py +0 -0
  708. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/migrations/manager.py +0 -0
  709. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/orchestrator.py +0 -0
  710. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/registry.py +0 -0
  711. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/__init__.py +0 -0
  712. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/async_mongodb.py +0 -0
  713. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/base.py +0 -0
  714. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/dynamodb.py +0 -0
  715. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/firestore.py +0 -0
  716. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/gcs.py +0 -0
  717. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/memory.py +0 -0
  718. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/mongodb.py +0 -0
  719. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/redis.py +0 -0
  720. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/upstash.py +0 -0
  721. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/state/valkey.py +0 -0
  722. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/tests/__init__.py +0 -0
  723. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/tests/test_all_backends.py +0 -0
  724. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/persistence/tests/test_valkey_backends.py +0 -0
  725. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/profiler.py +0 -0
  726. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/push/__init__.py +0 -0
  727. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/push/client.py +0 -0
  728. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/push/transports.py +0 -0
  729. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/__init__.py +0 -0
  730. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/bridge.py +0 -0
  731. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/core.py +0 -0
  732. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/exceptions.py +0 -0
  733. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/history.py +0 -0
  734. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/models.py +0 -0
  735. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/operations.py +0 -0
  736. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/policy.py +0 -0
  737. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/registry.py +0 -0
  738. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/runtime.py +0 -0
  739. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/security.py +0 -0
  740. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/serve.py +0 -0
  741. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/recipe/server.py +0 -0
  742. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/__init__.py +0 -0
  743. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/analyzer.py +0 -0
  744. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/applier.py +0 -0
  745. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/judge.py +0 -0
  746. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/plan.py +0 -0
  747. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/player.py +0 -0
  748. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/reader.py +0 -0
  749. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/storage.py +0 -0
  750. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/replay/writer.py +0 -0
  751. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/__init__.py +0 -0
  752. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/_compat.py +0 -0
  753. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/_shell.py +0 -0
  754. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/docker.py +0 -0
  755. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/e2b.py +0 -0
  756. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/modal.py +0 -0
  757. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/sandlock.py +0 -0
  758. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/ssh.py +0 -0
  759. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/sandbox/subprocess.py +0 -0
  760. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/_base_scheduler.py +0 -0
  761. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/agent_scheduler.py +0 -0
  762. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/daemon_manager.py +0 -0
  763. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/deployment.py +0 -0
  764. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/executor.py +0 -0
  765. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/shared.py +0 -0
  766. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/state_manager.py +0 -0
  767. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/scheduler/yaml_loader.py +0 -0
  768. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/security/injection.py +0 -0
  769. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/security/protected.py +0 -0
  770. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/setup/__init__.py +0 -0
  771. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/setup/build.py +0 -0
  772. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/setup/post_install.py +0 -0
  773. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/setup/setup_conda_env.py +0 -0
  774. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/setup.py +0 -0
  775. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/__init__.py +0 -0
  776. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/ai_generator.py +0 -0
  777. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/config.py +0 -0
  778. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/dedupe.py +0 -0
  779. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/discovery.py +0 -0
  780. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/drift.py +0 -0
  781. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/engine.py +0 -0
  782. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/enhanced_templates.py +0 -0
  783. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/example_verifier.py +0 -0
  784. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/manifest.py +0 -0
  785. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/models.py +0 -0
  786. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/reports.py +0 -0
  787. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/templates.py +0 -0
  788. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/undo_redo.py +0 -0
  789. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/standardise/validator.py +0 -0
  790. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/__init__.py +0 -0
  791. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/dynamodb_adapter.py +0 -0
  792. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/mongodb_adapter.py +0 -0
  793. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/postgresql_adapter.py +0 -0
  794. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/redis_adapter.py +0 -0
  795. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/storage/valkey_adapter.py +0 -0
  796. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/__init__.py +0 -0
  797. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/batch_source.py +0 -0
  798. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/cli_docs_source.py +0 -0
  799. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/discovery.py +0 -0
  800. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/docs_source.py +0 -0
  801. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/examples_source.py +0 -0
  802. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/executor.py +0 -0
  803. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/models.py +0 -0
  804. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/report_viewer.py +0 -0
  805. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/reporter.py +0 -0
  806. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/suite_runner/runner.py +0 -0
  807. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/__init__.py +0 -0
  808. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/cache.py +0 -0
  809. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/dependency_checker.py +0 -0
  810. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/discovery.py +0 -0
  811. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/loader.py +0 -0
  812. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/registry.py +0 -0
  813. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/resolver.py +0 -0
  814. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/security.py +0 -0
  815. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/tool_override.py +0 -0
  816. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/templates/tools_doctor.py +0 -0
  817. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/test.py +0 -0
  818. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/__init__.py +0 -0
  819. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/audio.py +0 -0
  820. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/glob_tool.py +0 -0
  821. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/grep_tool.py +0 -0
  822. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/kanban_tools.py +0 -0
  823. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/multiedit.py +0 -0
  824. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/tools/skill_manage.py +0 -0
  825. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/__init__.py +0 -0
  826. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/_ollama.py +0 -0
  827. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/__init__.py +0 -0
  828. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/grader.py +0 -0
  829. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/hook.py +0 -0
  830. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/models.py +0 -0
  831. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/orchestrator.py +0 -0
  832. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/agents/storage.py +0 -0
  833. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/llm/__init__.py +0 -0
  834. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train/llm/trainer.py +0 -0
  835. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train.py +0 -0
  836. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/train_vision.py +0 -0
  837. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/_aiui_datastore.py +0 -0
  838. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/_external_agents.py +0 -0
  839. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/callbacks.py +0 -0
  840. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/components/aicoder.py +0 -0
  841. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/context.py +0 -0
  842. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui/database_config.py +0 -0
  843. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_agents/__init__.py +0 -0
  844. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_agents/default_app.py +0 -0
  845. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_bot/__init__.py +0 -0
  846. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_bot/default_app.py +0 -0
  847. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_chat/__init__.py +0 -0
  848. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_chat/default_app.py +0 -0
  849. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_dashboard/default_app.py +0 -0
  850. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_realtime/__init__.py +0 -0
  851. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/ui_realtime/default_app.py +0 -0
  852. {praisonai-4.6.67 → praisonai-4.6.70}/praisonai/upload_vision.py +0 -0
  853. {praisonai-4.6.67 → praisonai-4.6.70}/setup.cfg +0 -0
  854. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test.py +0 -0
  855. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_agents_playbook.py +0 -0
  856. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_approval_system.py +0 -0
  857. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_basic.py +0 -0
  858. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_cli_features.py +0 -0
  859. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_custom_tools_fix.py +0 -0
  860. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_double_api_fix.py +0 -0
  861. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_n8n_agent_invoke.py +0 -0
  862. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_n8n_cli_feature.py +0 -0
  863. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_n8n_integration.py +0 -0
  864. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_phase2_refactor.py +0 -0
  865. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_recipe.py +0 -0
  866. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_registry.py +0 -0
  867. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_runner.py +0 -0
  868. {praisonai-4.6.67 → praisonai-4.6.70}/tests/test_sandboxed_agent_compatibility.py +0 -0
  869. {praisonai-4.6.67 → praisonai-4.6.70}/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.67
3
+ Version: 4.6.70
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.67
14
+ Requires-Dist: praisonaiagents>=1.6.70
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PraisonAI
3
- Version: 4.6.67
3
+ Version: 4.6.70
4
4
  Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  License: MIT
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
  Requires-Dist: rich>=13.7
12
12
  Requires-Dist: markdown>=3.5
13
13
  Requires-Dist: pyparsing>=3.0.0
14
- Requires-Dist: praisonaiagents>=1.6.67
14
+ Requires-Dist: praisonaiagents>=1.6.70
15
15
  Requires-Dist: python-dotenv>=0.19.0
16
16
  Requires-Dist: litellm<2,>=1.83.14
17
17
  Requires-Dist: PyYAML>=6.0
@@ -70,6 +70,7 @@ praisonai/bots/_commands.py
70
70
  praisonai/bots/_config_schema.py
71
71
  praisonai/bots/_debounce.py
72
72
  praisonai/bots/_defaults.py
73
+ praisonai/bots/_delivery.py
73
74
  praisonai/bots/_discord_approval.py
74
75
  praisonai/bots/_dlq.py
75
76
  praisonai/bots/_durable_adapter.py
@@ -210,6 +211,7 @@ praisonai/cli/commands/managed.py
210
211
  praisonai/cli/commands/mcp.py
211
212
  praisonai/cli/commands/memory.py
212
213
  praisonai/cli/commands/mint_link.py
214
+ praisonai/cli/commands/models.py
213
215
  praisonai/cli/commands/n8n.py
214
216
  praisonai/cli/commands/obs.py
215
217
  praisonai/cli/commands/onboard.py
@@ -515,6 +517,7 @@ praisonai/endpoints/providers/a2u.py
515
517
  praisonai/endpoints/providers/agents_api.py
516
518
  praisonai/endpoints/providers/base.py
517
519
  praisonai/endpoints/providers/mcp.py
520
+ praisonai/endpoints/providers/openai_compat.py
518
521
  praisonai/endpoints/providers/recipe.py
519
522
  praisonai/endpoints/providers/tools_mcp.py
520
523
  praisonai/flow/__init__.py
@@ -533,10 +536,12 @@ praisonai/framework_adapters/registry.py
533
536
  praisonai/framework_adapters/validators.py
534
537
  praisonai/gateway/__init__.py
535
538
  praisonai/gateway/auth.py
539
+ praisonai/gateway/client.py
536
540
  praisonai/gateway/cookie_auth.py
537
541
  praisonai/gateway/exec_approval.py
538
542
  praisonai/gateway/gateway_approval.py
539
543
  praisonai/gateway/health_monitor.py
544
+ praisonai/gateway/home_channels.py
540
545
  praisonai/gateway/kanban_dispatcher.py
541
546
  praisonai/gateway/magic_link.py
542
547
  praisonai/gateway/origin_check.py
@@ -606,8 +611,10 @@ praisonai/kanban/models.py
606
611
  praisonai/kanban/paths.py
607
612
  praisonai/kanban/sqlite_store.py
608
613
  praisonai/llm/__init__.py
614
+ praisonai/llm/catalogue.py
609
615
  praisonai/llm/credentials.py
610
616
  praisonai/llm/env.py
617
+ praisonai/llm/gateways.py
611
618
  praisonai/llm/registry.py
612
619
  praisonai/mcp_server/__init__.py
613
620
  praisonai/mcp_server/cli.py
@@ -746,11 +753,13 @@ praisonai/sandbox/ssh.py
746
753
  praisonai/sandbox/subprocess.py
747
754
  praisonai/scheduler/__init__.py
748
755
  praisonai/scheduler/_base_scheduler.py
756
+ praisonai/scheduler/_dispatch.py
749
757
  praisonai/scheduler/agent_scheduler.py
750
758
  praisonai/scheduler/async_agent_scheduler.py
751
759
  praisonai/scheduler/base.py
752
760
  praisonai/scheduler/daemon_manager.py
753
761
  praisonai/scheduler/deployment.py
762
+ praisonai/scheduler/enhanced_executor.py
754
763
  praisonai/scheduler/executor.py
755
764
  praisonai/scheduler/shared.py
756
765
  praisonai/scheduler/state_manager.py
@@ -1,7 +1,7 @@
1
1
  rich>=13.7
2
2
  markdown>=3.5
3
3
  pyparsing>=3.0.0
4
- praisonaiagents>=1.6.67
4
+ praisonaiagents>=1.6.70
5
5
  python-dotenv>=0.19.0
6
6
  litellm<2,>=1.83.14
7
7
  PyYAML>=6.0
@@ -37,14 +37,8 @@ def _get_typer_commands():
37
37
  return _typer_commands_cache
38
38
 
39
39
  try:
40
- from praisonai.cli.app import app, register_commands
41
- register_commands()
42
-
43
- import typer.main
44
- import click
45
- click_app = typer.main.get_command(app)
46
- ctx = click.Context(click_app, info_name="praisonai")
47
- commands = set(click_app.list_commands(ctx))
40
+ from praisonai.cli.app import get_command_names
41
+ commands = get_command_names()
48
42
  except Exception:
49
43
  # Do NOT poison the cache on failure — let the next caller retry.
50
44
  import logging
@@ -7,9 +7,13 @@ ensuring consistent behavior across all entry points.
7
7
  """
8
8
  from dataclasses import dataclass
9
9
  from typing import Optional, Literal, Union, Dict, Any
10
+ import logging
10
11
 
11
12
  Backend = Literal["console", "slack", "telegram", "discord", "webhook", "http", "agent", "auto", "none"]
12
13
  ApprovalLevel = Literal["low", "medium", "high", "critical"]
14
+ DefaultPolicy = Literal["deny", "prompt", "allow"]
15
+
16
+ logger = logging.getLogger(__name__)
13
17
 
14
18
 
15
19
  def _parse_timeout(timeout_val: Optional[Union[str, int, float]]) -> Optional[float]:
@@ -32,12 +36,14 @@ class ApprovalSpec:
32
36
  This replaces the fragmented approval configuration scattered across
33
37
  multiple fields and provides consistent behavior across all surfaces.
34
38
  """
35
- enabled: bool = False
39
+ enabled: bool = True # Safe by default
36
40
  backend: Backend = "console"
37
41
  approve_all_tools: bool = False
38
42
  timeout: Optional[float] = None
39
43
  approve_level: Optional[ApprovalLevel] = None
40
44
  guardrails: Optional[str] = None
45
+ default_policy: DefaultPolicy = "prompt" # New: default approval policy
46
+ approve_tools: Optional[Dict[str, ApprovalLevel]] = None # New: per-tool granularity
41
47
 
42
48
  @classmethod
43
49
  def from_cli(cls, args) -> "ApprovalSpec":
@@ -95,7 +101,7 @@ class ApprovalSpec:
95
101
  # Validate allowed keys to catch typos early
96
102
  allowed = {
97
103
  "enabled", "backend", "approve_all_tools", "timeout",
98
- "approve_level", "guardrails",
104
+ "approve_level", "guardrails", "default_policy", "approve_tools",
99
105
  # Legacy aliases for backward compatibility
100
106
  "backend_name", "all_tools", "approval_timeout"
101
107
  }
@@ -121,6 +127,8 @@ class ApprovalSpec:
121
127
  timeout=_parse_timeout(timeout_val) if timeout_val is not None else None,
122
128
  approve_level=node.get("approve_level"),
123
129
  guardrails=node.get("guardrails"),
130
+ default_policy=node.get("default_policy", "prompt"), # type: ignore[arg-type]
131
+ approve_tools=node.get("approve_tools"),
124
132
  )
125
133
  raise TypeError(f"Unsupported approval node type: {type(node).__name__}")
126
134
 
@@ -137,4 +145,44 @@ class ApprovalSpec:
137
145
  result["approve_level"] = self.approve_level
138
146
  if self.guardrails is not None:
139
147
  result["guardrails"] = self.guardrails
148
+ if self.default_policy != "prompt":
149
+ result["default_policy"] = self.default_policy
150
+ if self.approve_tools is not None:
151
+ result["approve_tools"] = self.approve_tools
140
152
  return result
153
+
154
+ def install_hook(self) -> None:
155
+ """Install a before_tool hook to enforce approval."""
156
+ try:
157
+ from praisonaiagents.hooks import add_hook
158
+ from praisonaiagents.hooks.events import BeforeToolInput
159
+ from praisonaiagents.hooks.types import HookResult
160
+
161
+ def approval_hook(data: BeforeToolInput) -> Optional[HookResult]:
162
+ """Check if tool execution should be approved."""
163
+ if not self.enabled:
164
+ return None # No opinion, let other hooks decide
165
+
166
+ tool_name = data.tool_name
167
+
168
+ # Check per-tool policy
169
+ if self.approve_tools and tool_name in self.approve_tools:
170
+ level = self.approve_tools[tool_name]
171
+ # TODO: Implement actual approval logic based on level
172
+ logger.debug(f"Tool {tool_name} requires approval level: {level}")
173
+
174
+ # Apply default policy
175
+ if self.default_policy == "deny":
176
+ logger.warning(f"Tool {tool_name} denied by default policy")
177
+ return HookResult.deny(f"Tool {tool_name} denied by default policy")
178
+ elif self.default_policy == "allow":
179
+ return None # Allow
180
+ else: # "prompt"
181
+ # TODO: Implement prompting logic based on backend
182
+ logger.info(f"Tool {tool_name} would prompt for approval (backend: {self.backend})")
183
+ return None
184
+
185
+ add_hook("before_tool", approval_hook)
186
+ logger.info("Approval hook installed")
187
+ except ImportError:
188
+ logger.warning("Could not import praisonaiagents.hooks - approval enforcement unavailable")
@@ -85,26 +85,32 @@ class AsyncBridge:
85
85
  raise
86
86
 
87
87
  def shutdown(self, timeout: float = 5.0) -> None:
88
+ # Snapshot loop and thread outside lock to avoid holding lock during wait
88
89
  with self._lock:
89
90
  loop, thread = self._loop, self._thread
90
91
  if loop is None:
91
92
  return
92
- # Cancel outstanding tasks, then stop the loop.
93
- async def _cancel_all() -> None:
94
- tasks = [t for t in asyncio.all_tasks(loop) if not t.done()]
95
- for t in tasks:
96
- t.cancel()
97
- await asyncio.gather(*tasks, return_exceptions=True)
98
- try:
99
- asyncio.run_coroutine_threadsafe(_cancel_all(), loop).result(timeout)
100
- finally:
101
- loop.call_soon_threadsafe(loop.stop)
102
- if thread is not None:
103
- thread.join(timeout)
104
- if not loop.is_closed():
105
- loop.close()
106
- self._loop = None
107
- self._thread = None
93
+ # Clear references immediately to prevent new submissions
94
+ self._loop = None
95
+ self._thread = None
96
+
97
+ # Now do the actual shutdown without holding the lock
98
+ async def _cancel_all() -> None:
99
+ self_task = asyncio.current_task()
100
+ tasks = [t for t in asyncio.all_tasks(loop)
101
+ if not t.done() and t is not self_task]
102
+ for t in tasks:
103
+ t.cancel()
104
+ await asyncio.gather(*tasks, return_exceptions=True)
105
+
106
+ try:
107
+ asyncio.run_coroutine_threadsafe(_cancel_all(), loop).result(timeout)
108
+ finally:
109
+ loop.call_soon_threadsafe(loop.stop)
110
+ if thread is not None:
111
+ thread.join(timeout)
112
+ if not loop.is_closed():
113
+ loop.close()
108
114
 
109
115
  # Backwards-compatible module-level shared default:
110
116
  _DEFAULT_BRIDGE: AsyncBridge | None = None
@@ -35,6 +35,11 @@ _PROBES: dict[str, Callable[[], bool]] = {
35
35
  "rich": lambda: importlib.util.find_spec("rich") is not None,
36
36
  "gradio": lambda: importlib.util.find_spec("gradio") is not None,
37
37
  "unsloth": lambda: importlib.util.find_spec("unsloth") is not None,
38
+ # Vector store probes for Gap 3 fix
39
+ "chromadb": lambda: importlib.util.find_spec("chromadb") is not None,
40
+ "pinecone": lambda: importlib.util.find_spec("pinecone") is not None,
41
+ "qdrant_client": lambda: importlib.util.find_spec("qdrant_client") is not None,
42
+ "weaviate": lambda: importlib.util.find_spec("weaviate") is not None,
38
43
  }
39
44
 
40
45
  def is_available(name: str) -> bool:
@@ -6,7 +6,7 @@ T = TypeVar("T")
6
6
 
7
7
 
8
8
  class LazyCache:
9
- """Thread-safe double-checked lazy cache. Caches None for ImportError."""
9
+ """Thread-safe double-checked lazy cache. Caches and re-raises ImportError exceptions."""
10
10
 
11
11
  def __init__(self) -> None:
12
12
  self._cache: Dict[str, object] = {}
@@ -14,14 +14,23 @@ class LazyCache:
14
14
 
15
15
  def get(self, key: str, loader: Callable[[], T]) -> Optional[T]:
16
16
  if key in self._cache:
17
- return self._cache[key] # type: ignore[return-value]
17
+ cached = self._cache[key]
18
+ # Re-raise cached exception
19
+ if isinstance(cached, ImportError):
20
+ raise cached
21
+ return cached # type: ignore[return-value]
18
22
  with self._lock:
19
23
  if key in self._cache:
20
- return self._cache[key] # type: ignore[return-value]
24
+ cached = self._cache[key]
25
+ if isinstance(cached, ImportError):
26
+ raise cached
27
+ return cached # type: ignore[return-value]
21
28
  try:
22
29
  value: object = loader()
23
- except ImportError:
24
- value = None
30
+ except ImportError as e:
31
+ # Cache the exception and re-raise
32
+ self._cache[key] = e
33
+ raise
25
34
  self._cache[key] = value
26
35
  return value # type: ignore[return-value]
27
36
 
@@ -0,0 +1,125 @@
1
+ """Per-key asyncio.Lock map with bounded LRU eviction and optional TTL.
2
+
3
+ Use this anywhere you need 'a lock per (user_id|chat_id|key)' instead of
4
+ re-implementing the dict-of-Lock pattern.
5
+ """
6
+ from __future__ import annotations
7
+ import asyncio
8
+ import time
9
+ import weakref
10
+ from collections import OrderedDict
11
+ from typing import Hashable, Dict
12
+
13
+
14
+ class LockMap:
15
+ """Asyncio-safe per-key asyncio.Lock map with automatic cleanup.
16
+
17
+ Provides a lock per key with LRU eviction and TTL-based cleanup to prevent
18
+ unbounded memory growth in long-running applications.
19
+
20
+ Note: Safe for use within a single asyncio event loop (cooperative
21
+ multitasking means no interleaving between non-awaited calls), but NOT
22
+ safe for concurrent access from multiple OS threads.
23
+ """
24
+
25
+ def __init__(self, *, max_entries: int = 10_000, ttl_seconds: float = 3600.0):
26
+ """Initialize LockMap with bounds.
27
+
28
+ Args:
29
+ max_entries: Maximum number of locks to cache (LRU eviction)
30
+ ttl_seconds: Time-to-live for unused locks in seconds
31
+ """
32
+ # Bucket locks by event loop to avoid cross-loop issues
33
+ self._buckets: Dict[int, "OrderedDict[Hashable, tuple[asyncio.Lock, float]]"] = {}
34
+ self._loop_refs: Dict[int, weakref.ref] = {}
35
+ self._max = max_entries
36
+ self._ttl = ttl_seconds
37
+
38
+ def get(self, key: Hashable) -> asyncio.Lock:
39
+ """Get or create a lock for the given key.
40
+
41
+ Args:
42
+ key: The key to get a lock for
43
+
44
+ Returns:
45
+ asyncio.Lock for the key
46
+ """
47
+ # Get the current running loop
48
+ loop = asyncio.get_running_loop()
49
+ loop_id = id(loop)
50
+
51
+ # Clean up dead loops
52
+ self._cleanup_dead_loops()
53
+
54
+ # Get or create bucket for this loop
55
+ if loop_id not in self._buckets:
56
+ self._buckets[loop_id] = OrderedDict()
57
+ self._loop_refs[loop_id] = weakref.ref(loop)
58
+
59
+ bucket = self._buckets[loop_id]
60
+ now = time.monotonic()
61
+
62
+ entry = bucket.get(key)
63
+ if entry is not None:
64
+ lock, _ = entry
65
+ # Move to end (most recently used) and update timestamp
66
+ bucket.move_to_end(key)
67
+ bucket[key] = (lock, now)
68
+ return lock
69
+
70
+ # Create new lock + insert + LRU/TTL evict
71
+ lock = asyncio.Lock()
72
+ bucket[key] = (lock, now)
73
+ self._evict_stale_from_bucket(bucket, now)
74
+ return lock
75
+
76
+ def _evict_stale_from_bucket(self, bucket: "OrderedDict", now: float) -> None:
77
+ """Evict expired and excess entries from a bucket."""
78
+ # Expire by TTL (only if not currently locked)
79
+ expired = [
80
+ k for k, (lock, ts) in bucket.items()
81
+ if (now - ts) > self._ttl and not lock.locked()
82
+ ]
83
+ for k in expired:
84
+ bucket.pop(k, None)
85
+
86
+ # Cap by LRU (don't evict locks currently held)
87
+ seen = set()
88
+ while len(bucket) > self._max:
89
+ k, (lock, _) = next(iter(bucket.items()))
90
+ if k in seen:
91
+ # All remaining locks are held; give up to avoid infinite loop
92
+ break
93
+ if lock.locked():
94
+ # Don't evict locks currently held; bump them to the end
95
+ bucket.move_to_end(k)
96
+ seen.add(k)
97
+ # Continue trying to evict other unlocked entries
98
+ continue
99
+ bucket.popitem(last=False)
100
+ break
101
+
102
+ def _cleanup_dead_loops(self) -> None:
103
+ """Remove buckets for event loops that no longer exist."""
104
+ dead_loops = []
105
+ for loop_id, ref in self._loop_refs.items():
106
+ loop = ref()
107
+ if loop is None or loop.is_closed():
108
+ dead_loops.append(loop_id)
109
+
110
+ for loop_id in dead_loops:
111
+ del self._loop_refs[loop_id]
112
+ if loop_id in self._buckets:
113
+ del self._buckets[loop_id]
114
+
115
+ def drop(self, key: Hashable) -> None:
116
+ """Manually remove a lock for the given key."""
117
+ # Get the current running loop
118
+ loop = asyncio.get_running_loop()
119
+ loop_id = id(loop)
120
+ if loop_id in self._buckets:
121
+ self._buckets[loop_id].pop(key, None)
122
+
123
+ def size(self) -> int:
124
+ """Return current number of cached locks across all buckets."""
125
+ return sum(len(bucket) for bucket in self._buckets.values())
@@ -15,47 +15,8 @@ import uuid as uuid_module
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
- # Lazy import flags
19
- _CHROMA_AVAILABLE = None
20
- _PINECONE_AVAILABLE = None
21
- _QDRANT_AVAILABLE = None
22
- _WEAVIATE_AVAILABLE = None
23
-
24
-
25
- def _check_chroma():
26
- """Check if chromadb is available."""
27
- global _CHROMA_AVAILABLE
28
- if _CHROMA_AVAILABLE is None:
29
- import importlib.util
30
- _CHROMA_AVAILABLE = importlib.util.find_spec("chromadb") is not None
31
- return _CHROMA_AVAILABLE
32
-
33
-
34
- def _check_pinecone():
35
- """Check if pinecone is available."""
36
- global _PINECONE_AVAILABLE
37
- if _PINECONE_AVAILABLE is None:
38
- import importlib.util
39
- _PINECONE_AVAILABLE = importlib.util.find_spec("pinecone") is not None
40
- return _PINECONE_AVAILABLE
41
-
42
-
43
- def _check_qdrant():
44
- """Check if qdrant_client is available."""
45
- global _QDRANT_AVAILABLE
46
- if _QDRANT_AVAILABLE is None:
47
- import importlib.util
48
- _QDRANT_AVAILABLE = importlib.util.find_spec("qdrant_client") is not None
49
- return _QDRANT_AVAILABLE
50
-
51
-
52
- def _check_weaviate():
53
- """Check if weaviate is available."""
54
- global _WEAVIATE_AVAILABLE
55
- if _WEAVIATE_AVAILABLE is None:
56
- import importlib.util
57
- _WEAVIATE_AVAILABLE = importlib.util.find_spec("weaviate") is not None
58
- return _WEAVIATE_AVAILABLE
18
+ # Import centralized availability checking
19
+ from .._framework_availability import is_available
59
20
 
60
21
 
61
22
  class ChromaVectorStore:
@@ -69,7 +30,7 @@ class ChromaVectorStore:
69
30
  namespace: Optional[str] = None,
70
31
  persist_directory: Optional[str] = None
71
32
  ):
72
- if not _check_chroma():
33
+ if not is_available("chromadb"):
73
34
  raise ImportError(
74
35
  "chromadb is required for ChromaVectorStore. "
75
36
  "Install with: pip install chromadb"
@@ -82,8 +43,8 @@ class ChromaVectorStore:
82
43
  self.namespace = namespace or "default"
83
44
  self.persist_directory = persist_directory or self.config.get("path", ".praison/chroma")
84
45
 
85
- # Disable telemetry
86
- os.environ['ANONYMIZED_TELEMETRY'] = 'False'
46
+ # REMOVED: os.environ['ANONYMIZED_TELEMETRY'] = 'False'
47
+ # Per-instance Settings(anonymized_telemetry=False) already covers this safely.
87
48
 
88
49
  # Create client
89
50
  self._client = chromadb.PersistentClient(
@@ -252,7 +213,7 @@ class PineconeVectorStore:
252
213
  api_key: Optional[str] = None,
253
214
  index_name: Optional[str] = None
254
215
  ):
255
- if not _check_pinecone():
216
+ if not is_available("pinecone"):
256
217
  raise ImportError(
257
218
  "pinecone is required for PineconeVectorStore. "
258
219
  "Install with: pip install pinecone"
@@ -395,11 +356,11 @@ def register_default_vector_stores():
395
356
  registry = get_vector_store_registry()
396
357
 
397
358
  # Register ChromaDB
398
- if _check_chroma():
359
+ if is_available("chromadb"):
399
360
  registry.register("chroma", ChromaVectorStore)
400
361
 
401
362
  # Register Pinecone
402
- if _check_pinecone():
363
+ if is_available("pinecone"):
403
364
  registry.register("pinecone", PineconeVectorStore)
404
365
 
405
366
  logger.debug("Registered default vector stores")
@@ -223,7 +223,6 @@ class AgentsGenerator:
223
223
 
224
224
  # Keep tool registry for backward compatibility with autogen adapters
225
225
  self.tool_registry = ToolRegistry()
226
- self.tool_registry.register_builtin_autogen_adapters(_suppress_deprecation_warning=True)
227
226
 
228
227
  # Initialize tool resolver with the registry wired in (single source of truth for tool resolution)
229
228
  from .tool_resolver import ToolResolver
@@ -392,9 +391,6 @@ class AgentsGenerator:
392
391
  from .observability.hooks import init_observability
393
392
  init_observability(adapter.name)
394
393
 
395
- # Also initialize AgentOps if configured (separate from general observability)
396
- self._init_observability(adapter.name)
397
-
398
394
  # Run adapter setup hooks
399
395
  adapter.setup(framework_tag=adapter.name)
400
396
 
@@ -433,25 +429,12 @@ class AgentsGenerator:
433
429
  # Get the base adapter
434
430
  adapter = self._get_framework_adapter(framework)
435
431
 
436
- # Let the adapter resolve its own variant
437
- resolved_adapter = adapter.resolve_variant(config, self._adapter_registry)
432
+ # Let the adapter resolve its own variant using the standardized resolve() method
433
+ # This replaces the old resolve_variant approach and follows the Protocol
434
+ resolved_adapter = adapter.resolve(config=config)
438
435
 
439
436
  return resolved_adapter
440
437
 
441
- def _init_observability(self, framework: str) -> None:
442
- """Initialize observability tools if configured.
443
-
444
- Args:
445
- framework: The framework name for tagging
446
- """
447
- agentops_api_key = os.getenv("AGENTOPS_API_KEY")
448
- if agentops_api_key:
449
- try:
450
- import agentops
451
- agentops.init(agentops_api_key, default_tags=[framework])
452
- except ImportError:
453
- pass
454
-
455
438
  def _validate_cli_backend_compatibility(self, config, framework):
456
439
  """Validate that cli_backend and runtime are only used with compatible frameworks."""
457
440
  # Check if any agent/role defines cli_backend or runtime
@@ -523,6 +506,20 @@ class AgentsGenerator:
523
506
  'planning_tools', 'planning', 'autonomy', 'guardrails', 'streaming', 'stream',
524
507
  'approval', 'skills', 'cli_backend', 'runtime', 'reflection', 'handoff', 'web', 'web_fetch'
525
508
  }
509
+
510
+ # Collect YAML-local model aliases (valid even if not in global catalogue)
511
+ local_model_aliases = set()
512
+ models_cfg = config.get("models", {})
513
+ if isinstance(models_cfg, dict):
514
+ local_model_aliases = {k for k in models_cfg.keys() if isinstance(k, str)}
515
+
516
+ # Try to load model catalogue for validation
517
+ model_catalogue = None
518
+ try:
519
+ from .llm.catalogue import ModelCatalogue
520
+ model_catalogue = ModelCatalogue()
521
+ except ImportError:
522
+ pass # Catalogue not available
526
523
 
527
524
  for section_name in ('agents', 'roles'):
528
525
  section = config.get(section_name, {})
@@ -548,6 +545,44 @@ class AgentsGenerator:
548
545
  self.logger.warning(
549
546
  f"Unknown field '{field_name}' in {entity_name} '{name}'.{suggestion}"
550
547
  )
548
+
549
+ # Validate model/llm values if catalogue available
550
+ if model_catalogue:
551
+ for model_field in ('llm', 'function_calling_llm'):
552
+ model_value = section_config.get(model_field)
553
+ if model_value and isinstance(model_value, str):
554
+ # Skip validation for local model aliases defined in YAML
555
+ if model_value in local_model_aliases:
556
+ continue
557
+ try:
558
+ model_catalogue.validate_model(model_value)
559
+ except ValueError as e:
560
+ self.logger.warning(
561
+ f"Invalid model '{model_value}' in {entity_name} '{name}' field '{model_field}': {e}"
562
+ )
563
+
564
+ # Check for tools configured with non-tool-calling models
565
+ if section_config.get('tools'):
566
+ llm_value = section_config.get('llm')
567
+ if llm_value:
568
+ model_info = model_catalogue.describe_model(llm_value)
569
+ if model_info and not model_info.get('supports_tools'):
570
+ self.logger.warning(
571
+ f"{entity_name.capitalize()} '{name}' has tools configured but model '{llm_value}' does not support tool calling"
572
+ )
573
+
574
+ # Also validate top-level llm/model config
575
+ if model_catalogue:
576
+ for model_field in ('llm', 'model'):
577
+ model_value = config.get(model_field)
578
+ if model_value and isinstance(model_value, str):
579
+ # Skip validation for local model aliases defined in YAML
580
+ if model_value in local_model_aliases:
581
+ continue
582
+ try:
583
+ model_catalogue.validate_model(model_value)
584
+ except ValueError as e:
585
+ self.logger.warning(f"Invalid model '{model_value}' in top-level '{model_field}': {e}")
551
586
 
552
587
 
553
588