unique_web_search 2026.34.0.dev5__tar.gz → 2026.34.0.dev6__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.
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/PKG-INFO +2 -2
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/pyproject.toml +2 -2
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/schema.py +6 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/service.py +1 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/query_elicitation.py +15 -4
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/README.md +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/client_settings.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/invocation_stats.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/metrics.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/prompts.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/_registry.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/exceptions.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/guidelines.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/guidelines_with_keywords.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/rejection_response.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/prompts/user_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/argument_screening/service.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/client/proxy_config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/cleaning/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/cleaning/character_sanitize.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/cleaning/clean.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/cleaning/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/base.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/llm_guard_judge.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/llm_keyword_redact.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/llm_process.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/judge_and_sanitize_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/judge_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/keyword_extract_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/page_context.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/sanitize_rules.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/prompts/user_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/settings.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/processing_strategies/truncate.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/content_processing/service.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/README.md +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/base.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/basic.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/firecrawl.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/jina.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/registry.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/tavily.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/url_safety/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/crawlers/utils.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/README.md +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/base_config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/base_executor.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/context.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/modes.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/executor.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/prompts/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/prompts/refine_query_system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/prompts/tool_description.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/prompts/tool_description_for_system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v1/strategy.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/executor.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/prompts/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/prompts/step_query_description.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/prompts/tool_description.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/prompts/tool_description_for_system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v2/strategy.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/config.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/executor.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/prompts/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/prompts/tool_description.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/prompts/tool_description_for_system_prompt.j2 +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/executors/v3/strategy.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/helpers.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/message_log.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/proxy/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/proxy/bridge.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/proxy/mappers.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/README.md +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/base.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/bing.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/brave.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/custom_api.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/google.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/perplexity.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/registry.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/google/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/bing/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/bing/client.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/bing/models.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/bing/runner.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/models.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/response_parsing.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/vertexai/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/vertexai/client.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/vertexai/exceptions.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/vertexai/gemini.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/utils/grounding/vertexai/response_handler.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/search_engine/vertexai.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/snippet_judge/__init__.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/snippet_judge/prompts.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/snippet_judge/schema.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/snippet_judge/service.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/services/structured_llm.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/settings.py +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/skills/web-search-v3.md +0 -0
- {unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-web-search
|
|
3
|
-
Version: 2026.34.0.
|
|
3
|
+
Version: 2026.34.0.dev6
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Andreas Hauri, Gustav Hartz, Rami Azouz
|
|
6
6
|
Author-email: Andreas Hauri <andreas@unique.ch>, Gustav Hartz <gustav.hartz.ext@unique.ch>, Rami Azouz <rami.ext@unique.ch>
|
|
@@ -16,7 +16,7 @@ Requires-Dist: tavily-python>=0.7.11,<1
|
|
|
16
16
|
Requires-Dist: unidecode>=1.4.0,<2
|
|
17
17
|
Requires-Dist: azure-ai-projects>=2.3,<3
|
|
18
18
|
Requires-Dist: azure-identity>=1.25.0,<2
|
|
19
|
-
Requires-Dist: unique-toolkit[monitoring]>=2026.34.0.
|
|
19
|
+
Requires-Dist: unique-toolkit[monitoring]>=2026.34.0.dev16,<2026.34.0rc0
|
|
20
20
|
Requires-Dist: azure-core>=1.36.0,<2
|
|
21
21
|
Requires-Dist: google-cloud-aiplatform>=1.128.0,<2
|
|
22
22
|
Requires-Dist: google-auth>=2.43.0,<3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "unique_web_search"
|
|
3
|
-
version = "2026.34.0.
|
|
3
|
+
version = "2026.34.0.dev6"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12,<4.0"
|
|
@@ -22,7 +22,7 @@ dependencies = [
|
|
|
22
22
|
"unidecode>=1.4.0,<2",
|
|
23
23
|
"azure-ai-projects>=2.3,<3",
|
|
24
24
|
"azure-identity>=1.25.0,<2",
|
|
25
|
-
"unique-toolkit[monitoring]>=2026.34.0.
|
|
25
|
+
"unique-toolkit[monitoring]>=2026.34.0.dev16,<2026.34.0rc0",
|
|
26
26
|
"azure-core>=1.36.0,<2",
|
|
27
27
|
"google-cloud-aiplatform>=1.128.0,<2",
|
|
28
28
|
"google-auth>=2.43.0,<3",
|
|
@@ -53,6 +53,12 @@ class WebSearchDebugInfo(BaseModel):
|
|
|
53
53
|
web_page_chunks: list[WebPageChunk] = []
|
|
54
54
|
execution_time: float | None = None
|
|
55
55
|
num_chunks_in_final_prompts: int = 0
|
|
56
|
+
elicitation_approval: bool | None = Field(
|
|
57
|
+
default=None, exclude_if=lambda value: value is None
|
|
58
|
+
)
|
|
59
|
+
elicitation_prompt_change: bool | None = Field(
|
|
60
|
+
default=None, exclude_if=lambda value: value is None
|
|
61
|
+
)
|
|
56
62
|
|
|
57
63
|
def model_dump(self, *, with_debug_details: bool = True, **kwargs):
|
|
58
64
|
"""
|
|
@@ -20,6 +20,8 @@ from unique_toolkit.elicitation import (
|
|
|
20
20
|
ElicitationStatus,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
|
+
from unique_web_search.schema import WebSearchDebugInfo
|
|
24
|
+
|
|
23
25
|
_LOGGER = logging.getLogger(__name__)
|
|
24
26
|
|
|
25
27
|
|
|
@@ -92,17 +94,20 @@ class QueryElicitationService:
|
|
|
92
94
|
chat_service: ChatService,
|
|
93
95
|
display_name: str,
|
|
94
96
|
config: QueryElicitationConfig,
|
|
97
|
+
debug_info: WebSearchDebugInfo,
|
|
95
98
|
):
|
|
96
99
|
"""Initialize the query elicitation service.
|
|
97
100
|
|
|
98
101
|
Args:
|
|
99
102
|
chat_service: Service for interacting with chat/elicitation APIs
|
|
100
103
|
display_name: Display name for the tool in elicitation UI
|
|
101
|
-
|
|
104
|
+
config: Elicitation configuration
|
|
105
|
+
debug_info: Web search debug information updated with the outcome
|
|
102
106
|
"""
|
|
103
107
|
self._chat_service = chat_service
|
|
104
108
|
self._display_name = display_name
|
|
105
109
|
self._config = config
|
|
110
|
+
self._debug_info = debug_info
|
|
106
111
|
|
|
107
112
|
async def __call__(self, queries: list[str]) -> list[str]:
|
|
108
113
|
if not self._config.enable_elicitation:
|
|
@@ -118,6 +123,8 @@ class QueryElicitationService:
|
|
|
118
123
|
json_schema=model.model_json_schema(),
|
|
119
124
|
expires_in_seconds=self._config.timeout_seconds,
|
|
120
125
|
)
|
|
126
|
+
self._debug_info.elicitation_approval = False
|
|
127
|
+
self._debug_info.elicitation_prompt_change = False
|
|
121
128
|
_LOGGER.info(
|
|
122
129
|
f"Elicitation created: {elicitation.id}. Waiting for user response for {self._config.timeout_seconds} seconds..."
|
|
123
130
|
)
|
|
@@ -129,11 +136,15 @@ class QueryElicitationService:
|
|
|
129
136
|
)
|
|
130
137
|
if elicitation.status == ElicitationStatus.ACCEPTED:
|
|
131
138
|
_LOGGER.info(f"Query elicitation {elicitation.id} accepted")
|
|
132
|
-
|
|
139
|
+
self._debug_info.elicitation_approval = True
|
|
140
|
+
submitted_queries = QueryElicitationModel.model_validate(
|
|
133
141
|
elicitation.response_content
|
|
134
142
|
).queries
|
|
143
|
+
self._debug_info.elicitation_prompt_change = (
|
|
144
|
+
submitted_queries != queries
|
|
145
|
+
)
|
|
135
146
|
|
|
136
|
-
if len(
|
|
147
|
+
if len(submitted_queries) == 0:
|
|
137
148
|
raise ElicitationFailedException(
|
|
138
149
|
context="The user approved the web search request but removed all search queries from the form, resulting in zero queries to execute.",
|
|
139
150
|
instruction="The web search tool did not execute because no search queries were provided. "
|
|
@@ -144,7 +155,7 @@ class QueryElicitationService:
|
|
|
144
155
|
"Ask if they would like to retry the search with specific queries, or if they can describe what information they're looking for so you can help formulate appropriate search queries for the next approval.",
|
|
145
156
|
)
|
|
146
157
|
|
|
147
|
-
return
|
|
158
|
+
return submitted_queries
|
|
148
159
|
|
|
149
160
|
elif elicitation.status == ElicitationStatus.DECLINED:
|
|
150
161
|
_LOGGER.info(f"Query elicitation {elicitation.id} declined")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_web_search-2026.34.0.dev5 → unique_web_search-2026.34.0.dev6}/src/unique_web_search/utils.py
RENAMED
|
File without changes
|