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.
- {selectools-0.22.0/src/selectools.egg-info → selectools-0.23.0}/PKG-INFO +31 -6
- {selectools-0.22.0 → selectools-0.23.0}/README.md +28 -5
- {selectools-0.22.0 → selectools-0.23.0}/pyproject.toml +4 -1
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/__init__.py +3 -1
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.css +6 -1
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.html +10 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_static/builder.js +396 -30
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/sessions.py +192 -0
- {selectools-0.22.0 → selectools-0.23.0/src/selectools.egg-info}/PKG-INFO +31 -6
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/SOURCES.txt +1 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/requires.txt +3 -0
- selectools-0.23.0/tests/test_sessions_supabase.py +533 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_visual_builder.py +221 -5
- {selectools-0.22.0 → selectools-0.23.0}/LICENSE +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/setup.cfg +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/_async_utils.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_lifecycle.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_memory_manager.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_provider_caller.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/_tool_executor.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/config.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/config_groups.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/agent/core.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/analytics.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/audit.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache_redis.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cache_semantic.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/cancellation.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/checkpoint_postgres.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/coherence.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/compose.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/anthropic.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/cohere.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/gemini.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/openai.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/embeddings/provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/entity_memory.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/env.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/__main__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/badge.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/dataset.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/evaluators.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/generator.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/history.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/html.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/junit.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/llm_evaluators.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/pairwise.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/regression.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/report.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/serve.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/snapshot.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/suite.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/templates.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/evals/types.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/exceptions.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/base.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/format.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/length.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/pii.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/pipeline.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/topic.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/guardrails/toxicity.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_graph.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_store_redis.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/knowledge_store_supabase.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/loop_detection.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/_loop.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/bridge.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/client.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/config.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/multi.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/mcp/server.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/memory.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/models.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/langfuse.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/otel.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observe/trace_store.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/checkpoint.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/graph.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/node.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/state.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/orchestration/supervisor.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/parser.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/debate.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/plan_and_execute.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/reflective.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/patterns/team_lead.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/pipeline.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/policy.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/pricing.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/prompt.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/_openai_compat.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/anthropic_provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/azure_openai_provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/base.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/fallback.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/gemini_provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/ollama_provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/openai_provider.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/providers/stubs.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/bm25.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/chunking.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/hybrid.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/loaders.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/reranker.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/chroma.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/faiss.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/memory.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/pgvector.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/pinecone.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/qdrant.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/stores/sqlite.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/rag/vector_store.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/security.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/_starlette_app.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/app.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/builder.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/cli.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/models.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/serve/playground.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/stability.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/structured.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/code_reviewer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/customer_support.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/data_analyst.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/rag_chatbot.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/templates/research_assistant.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/token_estimation.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/code_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/data_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/datetime_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/db_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/file_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/github_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/memory_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/search_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/text_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/toolbox/web_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/__init__.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/base.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/decorators.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/loader.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/tools/registry.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/trace.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/types.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools/usage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/dependency_links.txt +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/entry_points.txt +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/src/selectools.egg-info/top_level.txt +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_approval_gate.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_architecture.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_async_observers.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_audit.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_budget.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_core.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_security.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_batch1_tools.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_bug_hunt_regression.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_cache.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_cache_redis.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_cancellation.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_checkpoint_postgres.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_coherence.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_concurrency_smoke.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_consolidation_regression.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_conversation_branching.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_coverage_orchestration.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_document_loaders_extended.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_langfuse_observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_multimodal.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_otel_observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_v0_21_0_apps.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_e2e_v0_21_0_simulations.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_entity_memory.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_env.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_advanced.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_cli.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_e2e.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_final.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_hardening.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_html_report.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_new_evaluators.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_ralph_bugs.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_release.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_serve.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_v017_features.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_evals_v0191.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_features_in_graph.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_final_coverage_a.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_final_coverage_b.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_guardrails.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_hardening.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_graph.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_store_redis.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_store_supabase.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_stores.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_knowledge_stores_error_handling.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_langfuse_observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_loop_detection.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_mcp.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_mcp_coverage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_async.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_boundary.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_memory_integration.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_model_switching.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_multi_agent_edge_cases.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_multimodal.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_checkpoint.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_e2e.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_evals.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_graph.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_integration.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_primitives.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_orchestration_supervisor.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_otel_observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_parser.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_patterns.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_phase1_design_patterns.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_pipeline.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_pipeline_coverage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_policy.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_prompt.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_prompt_compression.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_property_based.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_reasoning_strategy.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_remaining_coverage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_routing_mode.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_security.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_semantic_cache.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_serve_app_coverage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_serve_cli.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions_edge_cases.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_sessions_redis.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_simple_observer.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_simulation_evals.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_stability.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_starlette_app.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured_config.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_structured_tool_results.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_summarize_on_trim.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_templates_coverage.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_terminal_actions.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_token_estimation.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_tool_caching.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace_html.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_trace_store.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_v016_regression.py +0 -0
- {selectools-0.22.0 → selectools-0.23.0}/tests/test_v019_features.py +0 -0
- {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.
|
|
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
|
-
[](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [](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 (
|
|
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
|
-
- **
|
|
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
|
-
- **
|
|
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
|
-
|
|
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
|
-
[](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [](https://colab.research.google.com/github/johnnichev/selectools/blob/main/notebooks/getting_started.ipynb) [](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 (
|
|
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
|
-
- **
|
|
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
|
-
- **
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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">
|