selectools 0.22.0__tar.gz → 0.23.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. {selectools-0.22.0/src/selectools.egg-info → selectools-0.23.0}/PKG-INFO +31 -6
  2. {selectools-0.22.0 → selectools-0.23.0}/README.md +28 -5
  3. {selectools-0.22.0 → selectools-0.23.0}/pyproject.toml +4 -1
  4. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/__init__.py +3 -1
  5. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.css +6 -1
  6. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.html +10 -0
  7. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.js +396 -30
  8. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/sessions.py +192 -0
  9. {selectools-0.22.0 → selectools-0.23.0/src/selectools.egg-info}/PKG-INFO +31 -6
  10. {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/SOURCES.txt +1 -0
  11. {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/requires.txt +3 -0
  12. selectools-0.23.0/tests/test_sessions_supabase.py +533 -0
  13. {selectools-0.22.0 → selectools-0.23.0}/tests/test_visual_builder.py +221 -5
  14. {selectools-0.22.0 → selectools-0.23.0}/LICENSE +0 -0
  15. {selectools-0.22.0 → selectools-0.23.0}/setup.cfg +0 -0
  16. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/_async_utils.py +0 -0
  17. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/__init__.py +0 -0
  18. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_lifecycle.py +0 -0
  19. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_memory_manager.py +0 -0
  20. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_provider_caller.py +0 -0
  21. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_tool_executor.py +0 -0
  22. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/config.py +0 -0
  23. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/config_groups.py +0 -0
  24. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/core.py +0 -0
  25. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/analytics.py +0 -0
  26. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/audit.py +0 -0
  27. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache.py +0 -0
  28. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache_redis.py +0 -0
  29. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache_semantic.py +0 -0
  30. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cancellation.py +0 -0
  31. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/checkpoint_postgres.py +0 -0
  32. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/coherence.py +0 -0
  33. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/compose.py +0 -0
  34. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/__init__.py +0 -0
  35. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/anthropic.py +0 -0
  36. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/cohere.py +0 -0
  37. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/gemini.py +0 -0
  38. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/openai.py +0 -0
  39. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/provider.py +0 -0
  40. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/entity_memory.py +0 -0
  41. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/env.py +0 -0
  42. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/__init__.py +0 -0
  43. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/__main__.py +0 -0
  44. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/badge.py +0 -0
  45. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/dataset.py +0 -0
  46. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/evaluators.py +0 -0
  47. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/generator.py +0 -0
  48. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/history.py +0 -0
  49. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/html.py +0 -0
  50. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/junit.py +0 -0
  51. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/llm_evaluators.py +0 -0
  52. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/pairwise.py +0 -0
  53. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/regression.py +0 -0
  54. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/report.py +0 -0
  55. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/serve.py +0 -0
  56. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/snapshot.py +0 -0
  57. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/suite.py +0 -0
  58. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/templates.py +0 -0
  59. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/types.py +0 -0
  60. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/exceptions.py +0 -0
  61. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/__init__.py +0 -0
  62. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/base.py +0 -0
  63. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/format.py +0 -0
  64. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/length.py +0 -0
  65. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/pii.py +0 -0
  66. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/pipeline.py +0 -0
  67. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/topic.py +0 -0
  68. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/toxicity.py +0 -0
  69. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge.py +0 -0
  70. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_graph.py +0 -0
  71. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_store_redis.py +0 -0
  72. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_store_supabase.py +0 -0
  73. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/loop_detection.py +0 -0
  74. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/__init__.py +0 -0
  75. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/_loop.py +0 -0
  76. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/bridge.py +0 -0
  77. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/client.py +0 -0
  78. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/config.py +0 -0
  79. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/multi.py +0 -0
  80. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/server.py +0 -0
  81. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/memory.py +0 -0
  82. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/models.py +0 -0
  83. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/__init__.py +0 -0
  84. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/langfuse.py +0 -0
  85. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/otel.py +0 -0
  86. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/trace_store.py +0 -0
  87. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observer.py +0 -0
  88. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/__init__.py +0 -0
  89. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/checkpoint.py +0 -0
  90. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/graph.py +0 -0
  91. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/node.py +0 -0
  92. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/state.py +0 -0
  93. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/supervisor.py +0 -0
  94. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/parser.py +0 -0
  95. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/__init__.py +0 -0
  96. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/debate.py +0 -0
  97. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/plan_and_execute.py +0 -0
  98. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/reflective.py +0 -0
  99. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/team_lead.py +0 -0
  100. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/pipeline.py +0 -0
  101. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/policy.py +0 -0
  102. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/pricing.py +0 -0
  103. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/prompt.py +0 -0
  104. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/__init__.py +0 -0
  105. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/_openai_compat.py +0 -0
  106. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/anthropic_provider.py +0 -0
  107. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/azure_openai_provider.py +0 -0
  108. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/base.py +0 -0
  109. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/fallback.py +0 -0
  110. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/gemini_provider.py +0 -0
  111. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/ollama_provider.py +0 -0
  112. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/openai_provider.py +0 -0
  113. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/stubs.py +0 -0
  114. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/__init__.py +0 -0
  115. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/bm25.py +0 -0
  116. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/chunking.py +0 -0
  117. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/hybrid.py +0 -0
  118. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/loaders.py +0 -0
  119. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/reranker.py +0 -0
  120. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/__init__.py +0 -0
  121. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/chroma.py +0 -0
  122. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/faiss.py +0 -0
  123. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/memory.py +0 -0
  124. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/pgvector.py +0 -0
  125. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/pinecone.py +0 -0
  126. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/qdrant.py +0 -0
  127. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/sqlite.py +0 -0
  128. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/tools.py +0 -0
  129. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/vector_store.py +0 -0
  130. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/security.py +0 -0
  131. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/__init__.py +0 -0
  132. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_starlette_app.py +0 -0
  133. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/app.py +0 -0
  134. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/builder.py +0 -0
  135. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/cli.py +0 -0
  136. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/models.py +0 -0
  137. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/playground.py +0 -0
  138. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/stability.py +0 -0
  139. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/structured.py +0 -0
  140. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/__init__.py +0 -0
  141. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/code_reviewer.py +0 -0
  142. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/customer_support.py +0 -0
  143. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/data_analyst.py +0 -0
  144. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/rag_chatbot.py +0 -0
  145. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/research_assistant.py +0 -0
  146. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/token_estimation.py +0 -0
  147. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/__init__.py +0 -0
  148. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/code_tools.py +0 -0
  149. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/data_tools.py +0 -0
  150. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/datetime_tools.py +0 -0
  151. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/db_tools.py +0 -0
  152. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/file_tools.py +0 -0
  153. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/github_tools.py +0 -0
  154. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/memory_tools.py +0 -0
  155. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/search_tools.py +0 -0
  156. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/text_tools.py +0 -0
  157. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/web_tools.py +0 -0
  158. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/__init__.py +0 -0
  159. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/base.py +0 -0
  160. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/decorators.py +0 -0
  161. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/loader.py +0 -0
  162. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/registry.py +0 -0
  163. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/trace.py +0 -0
  164. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/types.py +0 -0
  165. {selectools-0.22.0 → selectools-0.23.0}/src/selectools/usage.py +0 -0
  166. {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/dependency_links.txt +0 -0
  167. {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/entry_points.txt +0 -0
  168. {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/top_level.txt +0 -0
  169. {selectools-0.22.0 → selectools-0.23.0}/tests/test_approval_gate.py +0 -0
  170. {selectools-0.22.0 → selectools-0.23.0}/tests/test_architecture.py +0 -0
  171. {selectools-0.22.0 → selectools-0.23.0}/tests/test_async_observers.py +0 -0
  172. {selectools-0.22.0 → selectools-0.23.0}/tests/test_audit.py +0 -0
  173. {selectools-0.22.0 → selectools-0.23.0}/tests/test_budget.py +0 -0
  174. {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_core.py +0 -0
  175. {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_security.py +0 -0
  176. {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_tools.py +0 -0
  177. {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_regression.py +0 -0
  178. {selectools-0.22.0 → selectools-0.23.0}/tests/test_cache.py +0 -0
  179. {selectools-0.22.0 → selectools-0.23.0}/tests/test_cache_redis.py +0 -0
  180. {selectools-0.22.0 → selectools-0.23.0}/tests/test_cancellation.py +0 -0
  181. {selectools-0.22.0 → selectools-0.23.0}/tests/test_checkpoint_postgres.py +0 -0
  182. {selectools-0.22.0 → selectools-0.23.0}/tests/test_coherence.py +0 -0
  183. {selectools-0.22.0 → selectools-0.23.0}/tests/test_concurrency_smoke.py +0 -0
  184. {selectools-0.22.0 → selectools-0.23.0}/tests/test_consolidation_regression.py +0 -0
  185. {selectools-0.22.0 → selectools-0.23.0}/tests/test_conversation_branching.py +0 -0
  186. {selectools-0.22.0 → selectools-0.23.0}/tests/test_coverage_orchestration.py +0 -0
  187. {selectools-0.22.0 → selectools-0.23.0}/tests/test_document_loaders_extended.py +0 -0
  188. {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_langfuse_observer.py +0 -0
  189. {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_multimodal.py +0 -0
  190. {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_otel_observer.py +0 -0
  191. {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_v0_21_0_apps.py +0 -0
  192. {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_v0_21_0_simulations.py +0 -0
  193. {selectools-0.22.0 → selectools-0.23.0}/tests/test_entity_memory.py +0 -0
  194. {selectools-0.22.0 → selectools-0.23.0}/tests/test_env.py +0 -0
  195. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals.py +0 -0
  196. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_advanced.py +0 -0
  197. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_cli.py +0 -0
  198. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_e2e.py +0 -0
  199. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_final.py +0 -0
  200. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_hardening.py +0 -0
  201. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_html_report.py +0 -0
  202. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_new_evaluators.py +0 -0
  203. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_ralph_bugs.py +0 -0
  204. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_release.py +0 -0
  205. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_serve.py +0 -0
  206. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_v017_features.py +0 -0
  207. {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_v0191.py +0 -0
  208. {selectools-0.22.0 → selectools-0.23.0}/tests/test_features_in_graph.py +0 -0
  209. {selectools-0.22.0 → selectools-0.23.0}/tests/test_final_coverage_a.py +0 -0
  210. {selectools-0.22.0 → selectools-0.23.0}/tests/test_final_coverage_b.py +0 -0
  211. {selectools-0.22.0 → selectools-0.23.0}/tests/test_guardrails.py +0 -0
  212. {selectools-0.22.0 → selectools-0.23.0}/tests/test_hardening.py +0 -0
  213. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge.py +0 -0
  214. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_graph.py +0 -0
  215. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_store_redis.py +0 -0
  216. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_store_supabase.py +0 -0
  217. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_stores.py +0 -0
  218. {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_stores_error_handling.py +0 -0
  219. {selectools-0.22.0 → selectools-0.23.0}/tests/test_langfuse_observer.py +0 -0
  220. {selectools-0.22.0 → selectools-0.23.0}/tests/test_loop_detection.py +0 -0
  221. {selectools-0.22.0 → selectools-0.23.0}/tests/test_mcp.py +0 -0
  222. {selectools-0.22.0 → selectools-0.23.0}/tests/test_mcp_coverage.py +0 -0
  223. {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory.py +0 -0
  224. {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_async.py +0 -0
  225. {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_boundary.py +0 -0
  226. {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_integration.py +0 -0
  227. {selectools-0.22.0 → selectools-0.23.0}/tests/test_model_switching.py +0 -0
  228. {selectools-0.22.0 → selectools-0.23.0}/tests/test_multi_agent_edge_cases.py +0 -0
  229. {selectools-0.22.0 → selectools-0.23.0}/tests/test_multimodal.py +0 -0
  230. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_checkpoint.py +0 -0
  231. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_e2e.py +0 -0
  232. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_evals.py +0 -0
  233. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_graph.py +0 -0
  234. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_integration.py +0 -0
  235. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_primitives.py +0 -0
  236. {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_supervisor.py +0 -0
  237. {selectools-0.22.0 → selectools-0.23.0}/tests/test_otel_observer.py +0 -0
  238. {selectools-0.22.0 → selectools-0.23.0}/tests/test_parser.py +0 -0
  239. {selectools-0.22.0 → selectools-0.23.0}/tests/test_patterns.py +0 -0
  240. {selectools-0.22.0 → selectools-0.23.0}/tests/test_phase1_design_patterns.py +0 -0
  241. {selectools-0.22.0 → selectools-0.23.0}/tests/test_pipeline.py +0 -0
  242. {selectools-0.22.0 → selectools-0.23.0}/tests/test_pipeline_coverage.py +0 -0
  243. {selectools-0.22.0 → selectools-0.23.0}/tests/test_policy.py +0 -0
  244. {selectools-0.22.0 → selectools-0.23.0}/tests/test_prompt.py +0 -0
  245. {selectools-0.22.0 → selectools-0.23.0}/tests/test_prompt_compression.py +0 -0
  246. {selectools-0.22.0 → selectools-0.23.0}/tests/test_property_based.py +0 -0
  247. {selectools-0.22.0 → selectools-0.23.0}/tests/test_reasoning_strategy.py +0 -0
  248. {selectools-0.22.0 → selectools-0.23.0}/tests/test_remaining_coverage.py +0 -0
  249. {selectools-0.22.0 → selectools-0.23.0}/tests/test_routing_mode.py +0 -0
  250. {selectools-0.22.0 → selectools-0.23.0}/tests/test_security.py +0 -0
  251. {selectools-0.22.0 → selectools-0.23.0}/tests/test_semantic_cache.py +0 -0
  252. {selectools-0.22.0 → selectools-0.23.0}/tests/test_serve_app_coverage.py +0 -0
  253. {selectools-0.22.0 → selectools-0.23.0}/tests/test_serve_cli.py +0 -0
  254. {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions.py +0 -0
  255. {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions_edge_cases.py +0 -0
  256. {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions_redis.py +0 -0
  257. {selectools-0.22.0 → selectools-0.23.0}/tests/test_simple_observer.py +0 -0
  258. {selectools-0.22.0 → selectools-0.23.0}/tests/test_simulation_evals.py +0 -0
  259. {selectools-0.22.0 → selectools-0.23.0}/tests/test_stability.py +0 -0
  260. {selectools-0.22.0 → selectools-0.23.0}/tests/test_starlette_app.py +0 -0
  261. {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured.py +0 -0
  262. {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured_config.py +0 -0
  263. {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured_tool_results.py +0 -0
  264. {selectools-0.22.0 → selectools-0.23.0}/tests/test_summarize_on_trim.py +0 -0
  265. {selectools-0.22.0 → selectools-0.23.0}/tests/test_templates_coverage.py +0 -0
  266. {selectools-0.22.0 → selectools-0.23.0}/tests/test_terminal_actions.py +0 -0
  267. {selectools-0.22.0 → selectools-0.23.0}/tests/test_token_estimation.py +0 -0
  268. {selectools-0.22.0 → selectools-0.23.0}/tests/test_tool_caching.py +0 -0
  269. {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace.py +0 -0
  270. {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace_html.py +0 -0
  271. {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace_store.py +0 -0
  272. {selectools-0.22.0 → selectools-0.23.0}/tests/test_v016_regression.py +0 -0
  273. {selectools-0.22.0 → selectools-0.23.0}/tests/test_v019_features.py +0 -0
  274. {selectools-0.22.0 → selectools-0.23.0}/tests/test_yaml_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: selectools
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: Production-ready Python framework for AI agents with multi-agent graphs, hybrid RAG, guardrails, audit logging, 50 evaluators, and a visual builder. Supports OpenAI, Anthropic, Gemini, Ollama. By NichevLabs.
5
5
  Author-email: John Nichev <johnnichev@gmail.com>
6
6
  Maintainer-email: NichevLabs <support@nichevlabs.com>
@@ -61,6 +61,8 @@ Provides-Extra: mcp
61
61
  Requires-Dist: mcp<2.0.0,>=1.0.0; extra == "mcp"
62
62
  Provides-Extra: postgres
63
63
  Requires-Dist: psycopg2-binary>=2.9.0; extra == "postgres"
64
+ Provides-Extra: supabase
65
+ Requires-Dist: supabase>=2.0.0; extra == "supabase"
64
66
  Provides-Extra: serve
65
67
  Requires-Dist: pyyaml>=6.0.0; extra == "serve"
66
68
  Requires-Dist: starlette>=0.27.0; extra == "serve"
@@ -99,6 +101,29 @@ result = AgentGraph.chain(planner, writer, reviewer).run("Write a blog post")
99
101
  # selectools serve agent.yaml
100
102
  ```
101
103
 
104
+ ## What's New in v0.23
105
+
106
+ ### v0.23.0 — Supabase Sessions + Builder RAG
107
+
108
+ Two user-facing features plus a post-ship bug-hunt sweep that pinned 8 code-generator fixes in the visual builder.
109
+
110
+ - **`SupabaseSessionStore`** — 4th `SessionStore` backend alongside JSON, SQLite, and Redis. Postgres-backed via Supabase PostgREST, with idempotent upserts, namespace isolation, and the same validation guards as `RedisSessionStore`. Optional dep: `pip install selectools[supabase]`. Demo: [`examples/96_supabase_session_store.py`](https://github.com/johnnichev/selectools/blob/main/examples/96_supabase_session_store.py).
111
+
112
+ - **Visual builder: first-class RAG + session nodes** — drag `Retriever (RAG)` onto the canvas and pick any of 7 vector stores (memory, SQLite, Chroma, Pinecone, FAISS, Qdrant, pgvector), toggle Hybrid (BM25 + vector + RRF) and cross-encoder Rerank. Drag `Session Store` as a resource node and wire it into an agent via the new Session Store dropdown. Two new presets: **Hybrid RAG** and **Multi-Tenant RAG**. Python + YAML code generators emit real, runnable code.
113
+
114
+ ```python
115
+ from supabase import create_client
116
+ from selectools import SupabaseSessionStore, Agent, AgentConfig
117
+
118
+ store = SupabaseSessionStore(client=create_client(URL, KEY))
119
+ agent = Agent(
120
+ tools=[...],
121
+ config=AgentConfig(session_store=store, session_id="u-1", max_iterations=5),
122
+ )
123
+ ```
124
+
125
+ See `CHANGELOG.md` for the full entry including the 8 builder code-gen fixes.
126
+
102
127
  ## What's New in v0.22
103
128
 
104
129
  ### v0.22.0 — Competitor-Informed Bug Fixes
@@ -176,7 +201,7 @@ The first AI agent framework to ship a visual graph builder in a single `pip ins
176
201
 
177
202
  **[Try the builder in your browser →](https://selectools.dev/builder/)** — no install required.
178
203
 
179
- [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [![Examples Gallery](https://img.shields.io/badge/examples-94_scripts-06b6d4)](https://selectools.dev/examples/)
204
+ [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [![Examples Gallery](https://img.shields.io/badge/examples-96_scripts-06b6d4)](https://selectools.dev/examples/)
180
205
 
181
206
  ```bash
182
207
  pip install selectools
@@ -233,7 +258,7 @@ Path("trace.html").write_text(trace_to_html(result.trace))
233
258
  - **Trace HTML viewer** — `trace_to_html(trace)` renders a standalone waterfall timeline
234
259
  - **Deprecation policy** — 2-minor-version window, programmatic introspection via `.__stability__`
235
260
  - **Security audit** — all 41 `# nosec` annotations reviewed and published in `docs/SECURITY.md`
236
- - **Quality infrastructure** — property-based tests (Hypothesis), thread-safety smoke suite, 5 new production simulations (5343 tests total)
261
+ - **Quality infrastructure** — property-based tests (Hypothesis), thread-safety smoke suite, 5 new production simulations (5332 tests total)
237
262
 
238
263
  ### v0.19.1 — Advanced Agent Patterns
239
264
 
@@ -586,10 +611,10 @@ report.to_html("report.html")
586
611
  - **Conversation Branching**: `ConversationMemory.branch()` and `SessionStore.branch()` for A/B exploration and checkpointing
587
612
  - **Multi-Agent Orchestration**: `AgentGraph` with routing, parallel execution, HITL, checkpointing; `SupervisorAgent` with 4 strategies (plan_and_execute, round_robin, dynamic, magentic)
588
613
  - **Composable Pipelines**: `Pipeline` + `@step` + `|` operator + `parallel()` + `branch()` — chain agents, tools, and transforms
589
- - **76 Examples**: Multi-agent graphs, RAG, hybrid search, streaming, structured output, traces, batch, policy, observer, guardrails, audit, sessions, entity memory, knowledge graph, eval framework, advanced agent patterns, stability markers, HTML trace viewer, and more
614
+ - **96 Examples**: Multi-agent graphs, RAG, hybrid search, streaming, structured output, traces, batch, policy, observer, guardrails, audit, sessions (incl. Supabase), entity memory, knowledge graph, eval framework, advanced agent patterns, stability markers, HTML trace viewer, and more
590
615
  - **Built-in Eval Framework**: 50 evaluators (30 deterministic + 21 LLM-as-judge), A/B testing, regression detection, HTML reports, JUnit XML, snapshot testing
591
616
  - **AgentObserver Protocol**: 45 lifecycle events with `run_id` correlation, `LoggingObserver`, `SimpleStepObserver`, OTel export
592
- - **5343 Tests**: Unit, integration, regression, and E2E with real API calls
617
+ - **5332 Tests**: Unit, integration, regression, and E2E with real API calls
593
618
 
594
619
  ## Install
595
620
 
@@ -1213,7 +1238,7 @@ pytest tests/ -x -q # All tests
1213
1238
  pytest tests/ -k "not e2e" # Skip E2E (no API keys needed)
1214
1239
  ```
1215
1240
 
1216
- 5343 tests covering parsing, agent loop, providers, RAG pipeline, hybrid search, advanced chunking, dynamic tools, caching, streaming, guardrails, sessions, memory, eval framework, budget/cancellation, knowledge stores, orchestration, pipelines, agent patterns, stability markers, trace viewer, and E2E integration with real API calls.
1241
+ 5332 tests covering parsing, agent loop, providers, RAG pipeline, hybrid search, advanced chunking, dynamic tools, caching, streaming, guardrails, sessions, memory, eval framework, budget/cancellation, knowledge stores, orchestration, pipelines, agent patterns, stability markers, trace viewer, and E2E integration with real API calls.
1217
1242
 
1218
1243
  ## License
1219
1244
 
@@ -30,6 +30,29 @@ result = AgentGraph.chain(planner, writer, reviewer).run("Write a blog post")
30
30
  # selectools serve agent.yaml
31
31
  ```
32
32
 
33
+ ## What's New in v0.23
34
+
35
+ ### v0.23.0 — Supabase Sessions + Builder RAG
36
+
37
+ Two user-facing features plus a post-ship bug-hunt sweep that pinned 8 code-generator fixes in the visual builder.
38
+
39
+ - **`SupabaseSessionStore`** — 4th `SessionStore` backend alongside JSON, SQLite, and Redis. Postgres-backed via Supabase PostgREST, with idempotent upserts, namespace isolation, and the same validation guards as `RedisSessionStore`. Optional dep: `pip install selectools[supabase]`. Demo: [`examples/96_supabase_session_store.py`](https://github.com/johnnichev/selectools/blob/main/examples/96_supabase_session_store.py).
40
+
41
+ - **Visual builder: first-class RAG + session nodes** — drag `Retriever (RAG)` onto the canvas and pick any of 7 vector stores (memory, SQLite, Chroma, Pinecone, FAISS, Qdrant, pgvector), toggle Hybrid (BM25 + vector + RRF) and cross-encoder Rerank. Drag `Session Store` as a resource node and wire it into an agent via the new Session Store dropdown. Two new presets: **Hybrid RAG** and **Multi-Tenant RAG**. Python + YAML code generators emit real, runnable code.
42
+
43
+ ```python
44
+ from supabase import create_client
45
+ from selectools import SupabaseSessionStore, Agent, AgentConfig
46
+
47
+ store = SupabaseSessionStore(client=create_client(URL, KEY))
48
+ agent = Agent(
49
+ tools=[...],
50
+ config=AgentConfig(session_store=store, session_id="u-1", max_iterations=5),
51
+ )
52
+ ```
53
+
54
+ See `CHANGELOG.md` for the full entry including the 8 builder code-gen fixes.
55
+
33
56
  ## What's New in v0.22
34
57
 
35
58
  ### v0.22.0 — Competitor-Informed Bug Fixes
@@ -107,7 +130,7 @@ The first AI agent framework to ship a visual graph builder in a single `pip ins
107
130
 
108
131
  **[Try the builder in your browser →](https://selectools.dev/builder/)** — no install required.
109
132
 
110
- [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [![Examples Gallery](https://img.shields.io/badge/examples-94_scripts-06b6d4)](https://selectools.dev/examples/)
133
+ [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [![Examples Gallery](https://img.shields.io/badge/examples-96_scripts-06b6d4)](https://selectools.dev/examples/)
111
134
 
112
135
  ```bash
113
136
  pip install selectools
@@ -164,7 +187,7 @@ Path("trace.html").write_text(trace_to_html(result.trace))
164
187
  - **Trace HTML viewer** — `trace_to_html(trace)` renders a standalone waterfall timeline
165
188
  - **Deprecation policy** — 2-minor-version window, programmatic introspection via `.__stability__`
166
189
  - **Security audit** — all 41 `# nosec` annotations reviewed and published in `docs/SECURITY.md`
167
- - **Quality infrastructure** — property-based tests (Hypothesis), thread-safety smoke suite, 5 new production simulations (5343 tests total)
190
+ - **Quality infrastructure** — property-based tests (Hypothesis), thread-safety smoke suite, 5 new production simulations (5332 tests total)
168
191
 
169
192
  ### v0.19.1 — Advanced Agent Patterns
170
193
 
@@ -517,10 +540,10 @@ report.to_html("report.html")
517
540
  - **Conversation Branching**: `ConversationMemory.branch()` and `SessionStore.branch()` for A/B exploration and checkpointing
518
541
  - **Multi-Agent Orchestration**: `AgentGraph` with routing, parallel execution, HITL, checkpointing; `SupervisorAgent` with 4 strategies (plan_and_execute, round_robin, dynamic, magentic)
519
542
  - **Composable Pipelines**: `Pipeline` + `@step` + `|` operator + `parallel()` + `branch()` — chain agents, tools, and transforms
520
- - **76 Examples**: Multi-agent graphs, RAG, hybrid search, streaming, structured output, traces, batch, policy, observer, guardrails, audit, sessions, entity memory, knowledge graph, eval framework, advanced agent patterns, stability markers, HTML trace viewer, and more
543
+ - **96 Examples**: Multi-agent graphs, RAG, hybrid search, streaming, structured output, traces, batch, policy, observer, guardrails, audit, sessions (incl. Supabase), entity memory, knowledge graph, eval framework, advanced agent patterns, stability markers, HTML trace viewer, and more
521
544
  - **Built-in Eval Framework**: 50 evaluators (30 deterministic + 21 LLM-as-judge), A/B testing, regression detection, HTML reports, JUnit XML, snapshot testing
522
545
  - **AgentObserver Protocol**: 45 lifecycle events with `run_id` correlation, `LoggingObserver`, `SimpleStepObserver`, OTel export
523
- - **5343 Tests**: Unit, integration, regression, and E2E with real API calls
546
+ - **5332 Tests**: Unit, integration, regression, and E2E with real API calls
524
547
 
525
548
  ## Install
526
549
 
@@ -1144,7 +1167,7 @@ pytest tests/ -x -q # All tests
1144
1167
  pytest tests/ -k "not e2e" # Skip E2E (no API keys needed)
1145
1168
  ```
1146
1169
 
1147
- 5343 tests covering parsing, agent loop, providers, RAG pipeline, hybrid search, advanced chunking, dynamic tools, caching, streaming, guardrails, sessions, memory, eval framework, budget/cancellation, knowledge stores, orchestration, pipelines, agent patterns, stability markers, trace viewer, and E2E integration with real API calls.
1170
+ 5332 tests covering parsing, agent loop, providers, RAG pipeline, hybrid search, advanced chunking, dynamic tools, caching, streaming, guardrails, sessions, memory, eval framework, budget/cancellation, knowledge stores, orchestration, pipelines, agent patterns, stability markers, trace viewer, and E2E integration with real API calls.
1148
1171
 
1149
1172
  ## License
1150
1173
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "selectools"
7
- version = "0.22.0"
7
+ version = "0.23.0"
8
8
  description = "Production-ready Python framework for AI agents with multi-agent graphs, hybrid RAG, guardrails, audit logging, 50 evaluators, and a visual builder. Supports OpenAI, Anthropic, Gemini, Ollama. By NichevLabs."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -84,6 +84,9 @@ mcp = [
84
84
  postgres = [
85
85
  "psycopg2-binary>=2.9.0",
86
86
  ]
87
+ supabase = [
88
+ "supabase>=2.0.0",
89
+ ]
87
90
  serve = [
88
91
  "pyyaml>=6.0.0",
89
92
  "starlette>=0.27.0",
@@ -1,6 +1,6 @@
1
1
  """Public exports for the selectools package."""
2
2
 
3
- __version__ = "0.22.0"
3
+ __version__ = "0.23.0"
4
4
 
5
5
  # Import submodules (lazy loading for optional dependencies)
6
6
  from . import embeddings, evals, guardrails, models, observe, patterns, rag, toolbox
@@ -139,6 +139,7 @@ from .sessions import (
139
139
  SessionMetadata,
140
140
  SessionStore,
141
141
  SQLiteSessionStore,
142
+ SupabaseSessionStore,
142
143
  )
143
144
  from .stability import beta, deprecated, stable
144
145
  from .structured import ResponseFormat
@@ -263,6 +264,7 @@ __all__ = [
263
264
  "JsonFileSessionStore",
264
265
  "SQLiteSessionStore",
265
266
  "RedisSessionStore",
267
+ "SupabaseSessionStore",
266
268
  # Entity Memory
267
269
  "Entity",
268
270
  "EntityMemory",
@@ -430,6 +430,8 @@ select option { background: var(--surface); }
430
430
  .node-note { --glow: rgba(245,158,11,0.28); }
431
431
  .node-hitl { --glow: rgba(245,158,11,0.28); }
432
432
  .node-agent_tool { --glow: rgba(167,139,250,0.28); }
433
+ .node-retriever { --glow: rgba(6,182,212,0.28); }
434
+ .node-session { --glow: rgba(139,92,246,0.28); }
433
435
  .node-start .body { fill: rgba(34,197,94,0.12); stroke: #22c55e; stroke-width: 1.5; rx: 8; }
434
436
  .node-end .body { fill: rgba(239,68,68,0.12); stroke: #ef4444; stroke-width: 1.5; rx: 8; }
435
437
  .node-agent .body { fill: rgba(34,211,238,0.09); stroke: #22d3ee; stroke-width: 1.5; rx: 8; }
@@ -437,8 +439,11 @@ select option { background: var(--surface); }
437
439
  .node-subgraph .body { fill: rgba(168,85,247,0.09); stroke: #a855f7; stroke-width: 1.5; rx: 8; }
438
440
  .node-note .body { fill: rgba(245,158,11,0.09); stroke: #f59e0b; stroke-width: 1.5; rx: 8; }
439
441
  .node-hitl .body { fill: rgba(245,158,11,0.12); stroke: #f59e0b; stroke-width: 2; rx: 8; }
442
+ .node-retriever .body { fill: rgba(6,182,212,0.09); stroke: #06b6d4; stroke-width: 1.5; rx: 8; }
443
+ .node-session .body { fill: rgba(139,92,246,0.09); stroke: #8b5cf6; stroke-width: 1.5; stroke-dasharray: 4,3; rx: 8; }
440
444
  .node-agent.sel .body { stroke: var(--blue); stroke-width: 2.5; }
441
- .node-loop.sel .body, .node-subgraph.sel .body, .node-note.sel .body, .node-hitl.sel .body { stroke-width: 2.5; filter: drop-shadow(0 0 5px currentColor); }
445
+ .node-loop.sel .body, .node-subgraph.sel .body, .node-note.sel .body, .node-hitl.sel .body,
446
+ .node-retriever.sel .body, .node-session.sel .body { stroke-width: 2.5; filter: drop-shadow(0 0 5px currentColor); }
442
447
  .node-start.sel .body,
443
448
  .node-end.sel .body { stroke-width: 2.5; filter: drop-shadow(0 0 5px currentColor); }
444
449
  .node-label { fill: var(--text); font-family: var(--font-ui); font-size: 12px; font-weight: 600; }
@@ -42,6 +42,8 @@
42
42
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('simple_chatbot')">Simple Chatbot</div>
43
43
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('researcher_writer')">Researcher + Writer</div>
44
44
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('rag_pipeline')">RAG Pipeline</div>
45
+ <div class="tmpl-item tmpl-indent" onclick="loadTemplate('hybrid_rag')">Hybrid RAG (BM25 + vector + rerank)</div>
46
+ <div class="tmpl-item tmpl-indent" onclick="loadTemplate('multi_tenant_rag')">Multi-Tenant RAG (session-scoped)</div>
45
47
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('reviewer_loop')">Reviewer Loop</div>
46
48
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('hitl_approval')">HITL Approval</div>
47
49
  <div class="tmpl-item tmpl-indent" onclick="loadTemplate('multi_model_panel')">Multi-Model Panel</div>
@@ -113,6 +115,14 @@
113
115
  ondragstart="palDragStart(event,'agent_tool')">
114
116
  <div class="dot" style="background:#a78bfa"></div> Agent Tool
115
117
  </div>
118
+ <div class="palette-item" draggable="true" data-type="retriever"
119
+ ondragstart="palDragStart(event,'retriever')">
120
+ <div class="dot" style="background:#06b6d4"></div> Retriever (RAG)
121
+ </div>
122
+ <div class="palette-item" draggable="true" data-type="session"
123
+ ondragstart="palDragStart(event,'session')">
124
+ <div class="dot" style="background:#8b5cf6"></div> Session Store
125
+ </div>
116
126
 
117
127
  <div class="section-title" style="margin-top:10px">Tips</div>
118
128
  <div class="tip-box">