unique_deep_research 3.1.0__py3-none-any.whl → 3.2.0__py3-none-any.whl

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.
@@ -1,10 +1,10 @@
1
1
  from dataclasses import dataclass
2
2
  from enum import StrEnum
3
3
  from pathlib import Path
4
- from typing import Any, Generic, Literal, TypeVar
4
+ from typing import Generic, Literal, TypeVar
5
5
 
6
6
  from jinja2 import Environment, FileSystemLoader
7
- from pydantic import BaseModel, Field, field_validator
7
+ from pydantic import BaseModel, Field
8
8
  from unique_toolkit._common.validators import LMI, get_LMI_default_field
9
9
  from unique_toolkit.agentic.tools.config import get_configuration_dict
10
10
  from unique_toolkit.agentic.tools.schemas import BaseToolConfig
@@ -13,7 +13,6 @@ from unique_web_search.config import (
13
13
  ActivatedSearchEngine,
14
14
  DefaultSearchEngine,
15
15
  )
16
- from unique_web_search.services.search_engine import GoogleConfig
17
16
 
18
17
  # Global template environment for the deep research tool
19
18
  TEMPLATE_DIR = Path(__file__).parent / "templates"
@@ -80,11 +79,6 @@ class OpenAIEngine(BaseEngine[Literal[DeepResearchEngine.OPENAI]]):
80
79
  class WebToolsConfig(BaseModel):
81
80
  model_config = get_configuration_dict()
82
81
 
83
- enable: bool = Field(
84
- default=True,
85
- description="Allow agent to use web search tools to access the web",
86
- )
87
-
88
82
  search_engine: ActivatedSearchEngine = Field( # pyright: ignore[reportInvalidTypeForm]
89
83
  default_factory=DefaultSearchEngine, # pyright: ignore[reportArgumentType]
90
84
  description="Search Engine Configuration",
@@ -96,7 +90,11 @@ class WebToolsConfig(BaseModel):
96
90
  class Tools(BaseModel):
97
91
  model_config = get_configuration_dict()
98
92
 
99
- web_tools: WebToolsConfig = Field(
93
+ web_tools: bool = Field(
94
+ default=True,
95
+ description="Allow agent to use web search tools to access the web",
96
+ )
97
+ web_tools_config: WebToolsConfig = Field(
100
98
  default=WebToolsConfig(),
101
99
  description="Configuration for web search tools",
102
100
  )
@@ -105,19 +103,6 @@ class Tools(BaseModel):
105
103
  description="Allow agent to use internal search tools access information from the knowledge base and uploaded documents",
106
104
  )
107
105
 
108
- @field_validator("web_tools", mode="before")
109
- @classmethod
110
- def handle_bool_case(cls, v: Any) -> Any:
111
- if isinstance(v, bool):
112
- if v:
113
- # Backward compatibility with old config behaviour
114
- return WebToolsConfig(
115
- enable=True, search_engine=GoogleConfig(fetch_size=10)
116
- )
117
- else:
118
- return WebToolsConfig(enable=False)
119
- return v
120
-
121
106
 
122
107
  class UniqueEngine(BaseEngine[Literal[DeepResearchEngine.UNIQUE]]):
123
108
  model_config = get_configuration_dict()
@@ -427,7 +427,7 @@ class DeepResearchTool(Tool[DeepResearchToolConfig]):
427
427
  enable_web_tools = True
428
428
  enable_internal_tools = True
429
429
  if isinstance(self.config.engine, UniqueEngine):
430
- enable_web_tools = self.config.engine.tools.web_tools.enable
430
+ enable_web_tools = self.config.engine.tools.web_tools
431
431
  enable_internal_tools = self.config.engine.tools.internal_tools
432
432
 
433
433
  config = {
@@ -156,7 +156,7 @@ async def web_search(query: str, config: RunnableConfig) -> str:
156
156
  raise ValueError("RunnableConfig missing 'configurable' section")
157
157
 
158
158
  configurable = config["configurable"]
159
- engine_config = configurable["engine_config"].tools.web_tools.search_engine
159
+ engine_config = configurable["engine_config"].tools.web_tools_config.search_engine
160
160
 
161
161
  search_engine_service = get_search_engine_service(
162
162
  engine_config, configurable["language_model_service"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_deep_research
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: Deep Research Tool for complex research tasks
5
5
  License: Proprietary
6
6
  Author: Martin Fadler
@@ -36,7 +36,10 @@ All notable changes to this project will be documented in this file.
36
36
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
37
37
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
38
38
 
39
- ## [3.1.00] - 2026-01-30
39
+ ## [3.2.0] - 2026-02-03
40
+ - Use a backwards compatible config style
41
+
42
+ ## [3.1.0] - 2026-01-30
40
43
  - Support other search engines than Google
41
44
 
42
45
  ## [3.0.28] - 2026-01-26
@@ -1,7 +1,7 @@
1
1
  unique_deep_research/__init__.py,sha256=HMksc03A7au88XB0jjeIR3zGt3YGYTA7ZIAkR8hmQZs,396
2
- unique_deep_research/config.py,sha256=i6mFGQ7m0D0IYhcKsEotLX1kxl3xrHZ6cSsGITUNuug,4665
2
+ unique_deep_research/config.py,sha256=1DV3CBxNTDTDoxsxeMLI8ARDR3-iRlhL4yhXAKmxeI4,4137
3
3
  unique_deep_research/markdown_utils.py,sha256=zyKO4c9T_KnZzOYlYZEDEvC1NHRR9koCzcWmOJbrcok,11024
4
- unique_deep_research/service.py,sha256=M_dEBleP_5vqJp37dAg5VPQ5MONmfJoPO10BTogaaIg,36388
4
+ unique_deep_research/service.py,sha256=VaiozMdw7GfbpyxfO-UFJbJPQRYORiRVc7XT67nvXVU,36381
5
5
  unique_deep_research/templates/clarifying_agent.j2,sha256=TOgD5ezrlRyurpquBGT902oa7PpkdHxsvrkIFWBFa2A,3938
6
6
  unique_deep_research/templates/openai/oai_research_system_message.j2,sha256=2YipVh0V4eEikg9iXqIaBVtYwS8ycHMDu3xiFDoJ0vI,1362
7
7
  unique_deep_research/templates/report_cleanup_prompt.j2,sha256=9mjj3GX1HEQ0kkxzqvB3D_2wFgAJ-drMbTYDiSc2riI,2049
@@ -14,9 +14,9 @@ unique_deep_research/unique_custom/__init__.py,sha256=S1Rw16tPDfqOIZwAoJ6lAJT00P
14
14
  unique_deep_research/unique_custom/agents.py,sha256=zMJ8zCz-0714bMPZTzIlMqG79AdZAf5orEIJbPLIO3U,24039
15
15
  unique_deep_research/unique_custom/citation.py,sha256=dfElOqBTvbXlHXxshT6heNzeHVVKTlgSlIEFTuoNv20,4315
16
16
  unique_deep_research/unique_custom/state.py,sha256=tn4pIKN-ZCH6Tqu9XL31lziyrwFkhTVf_lBiUpETVyo,3515
17
- unique_deep_research/unique_custom/tools.py,sha256=QEjdKc44hMGpZ8SiF25nrgTvqeu9d_0zd2t27V7LBjY,25424
17
+ unique_deep_research/unique_custom/tools.py,sha256=vlR0cooDrXzKUNofPxXX1dcfnhoYoSBcFUylsiGyPqo,25431
18
18
  unique_deep_research/unique_custom/utils.py,sha256=ZOKABCVKODawfsig-72CcpXCMveg7K_y_rzwlkaJVz8,20069
19
- unique_deep_research-3.1.0.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
20
- unique_deep_research-3.1.0.dist-info/METADATA,sha256=Mu0KA77LolMjv99raWziiejX8Y1A7XVr-CjnfC63dXI,7167
21
- unique_deep_research-3.1.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
22
- unique_deep_research-3.1.0.dist-info/RECORD,,
19
+ unique_deep_research-3.2.0.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
20
+ unique_deep_research-3.2.0.dist-info/METADATA,sha256=sEVIodnzgPSX1lLHKX4uI199V50kiNjSK6LnWnX0JN4,7233
21
+ unique_deep_research-3.2.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
22
+ unique_deep_research-3.2.0.dist-info/RECORD,,