unique_toolkit 0.8.44__tar.gz → 0.8.46__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 (139) hide show
  1. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/CHANGELOG.md +6 -0
  2. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/PKG-INFO +7 -1
  3. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/pyproject.toml +1 -1
  4. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/unique_settings.py +3 -1
  5. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/tool.py +8 -0
  6. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/tool_manager.py +7 -0
  7. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/LICENSE +0 -0
  8. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/README.md +0 -0
  9. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/_base_service.py +0 -0
  11. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/_time_utils.py +0 -0
  12. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  13. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  14. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  15. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  16. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  17. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  18. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/default_language_model.py +0 -0
  19. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/endpoint_builder.py +0 -0
  20. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  21. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/exception.py +0 -0
  22. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  23. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  24. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  25. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/token/token_counting.py +0 -0
  26. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  27. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/validate_required_values.py +0 -0
  28. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/_common/validators.py +0 -0
  29. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/__init__.py +0 -0
  30. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/dev_util.py +0 -0
  31. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/init_logging.py +0 -0
  32. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/init_sdk.py +0 -0
  33. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/performance/async_tasks.py +0 -0
  34. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  35. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/schemas.py +0 -0
  36. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/app/verification.py +0 -0
  37. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/__init__.py +0 -0
  38. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/constants.py +0 -0
  39. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/functions.py +0 -0
  40. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/schemas.py +0 -0
  41. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/service.py +0 -0
  42. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/state.py +0 -0
  43. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/chat/utils.py +0 -0
  44. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/__init__.py +0 -0
  45. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/constants.py +0 -0
  46. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/functions.py +0 -0
  47. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/schemas.py +0 -0
  48. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/service.py +0 -0
  49. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/content/utils.py +0 -0
  50. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/debug_info_manager/debug_info_manager.py +0 -0
  51. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/__init__.py +0 -0
  52. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/constants.py +0 -0
  53. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/functions.py +0 -0
  54. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/schemas.py +0 -0
  55. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/service.py +0 -0
  56. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/embedding/utils.py +0 -0
  57. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/config.py +0 -0
  58. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/context_relevancy/prompts.py +0 -0
  59. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/context_relevancy/schema.py +0 -0
  60. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/context_relevancy/service.py +0 -0
  61. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/evaluation_manager.py +0 -0
  62. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/exception.py +0 -0
  63. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/hallucination/constants.py +0 -0
  64. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/hallucination/hallucination_evaluation.py +0 -0
  65. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/hallucination/prompts.py +0 -0
  66. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/hallucination/service.py +0 -0
  67. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/hallucination/utils.py +0 -0
  68. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/output_parser.py +0 -0
  69. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/schemas.py +0 -0
  70. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/tests/test_context_relevancy_service.py +0 -0
  71. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evals/tests/test_output_parser.py +0 -0
  72. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/__init__.py +0 -0
  73. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/config.py +0 -0
  74. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/constants.py +0 -0
  75. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
  76. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
  77. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
  78. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
  79. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/exception.py +0 -0
  80. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
  81. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
  82. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/hallucination/service.py +0 -0
  83. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
  84. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/output_parser.py +0 -0
  85. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/evaluators/schemas.py +0 -0
  86. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/__init__.py +0 -0
  87. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  88. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  89. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  90. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  91. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  92. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/framework_utilities/utils.py +0 -0
  93. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/history_manager/history_construction_with_contents.py +0 -0
  94. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/history_manager/history_manager.py +0 -0
  95. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/history_manager/loop_token_reducer.py +0 -0
  96. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/history_manager/utils.py +0 -0
  97. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/__init__.py +0 -0
  98. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/builder.py +0 -0
  99. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/constants.py +0 -0
  100. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/functions.py +0 -0
  101. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/infos.py +0 -0
  102. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/prompt.py +0 -0
  103. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/reference.py +0 -0
  104. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/schemas.py +0 -0
  105. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/service.py +0 -0
  106. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/language_model/utils.py +0 -0
  107. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/postprocessor/postprocessor_manager.py +0 -0
  108. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/protocols/support.py +0 -0
  109. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/reference_manager/reference_manager.py +0 -0
  110. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/__init__.py +0 -0
  111. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/constants.py +0 -0
  112. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/functions.py +0 -0
  113. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/persistent_short_term_memory_manager.py +0 -0
  114. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/schemas.py +0 -0
  115. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/short_term_memory/service.py +0 -0
  116. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/smart_rules/__init__.py +0 -0
  117. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/smart_rules/compile.py +0 -0
  118. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/thinking_manager/thinking_manager.py +0 -0
  119. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/__init__.py +0 -0
  120. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/config.py +0 -0
  121. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/manager.py +0 -0
  122. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/memory.py +0 -0
  123. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/schema.py +0 -0
  124. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/a2a/service.py +0 -0
  125. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/agent_chunks_hanlder.py +0 -0
  126. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/config.py +0 -0
  127. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/factory.py +0 -0
  128. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/mcp/__init__.py +0 -0
  129. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/mcp/manager.py +0 -0
  130. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/mcp/models.py +0 -0
  131. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/mcp/tool_wrapper.py +0 -0
  132. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/schemas.py +0 -0
  133. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/test/test_mcp_manager.py +0 -0
  134. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
  135. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
  136. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/utils/execution/execution.py +0 -0
  137. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
  138. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
  139. {unique_toolkit-0.8.44 → unique_toolkit-0.8.46}/unique_toolkit/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.8.46] - 2025-09-04
9
+ - Bugfix for hostname identification inside Unique cluster in `unique_settings.py`
10
+
11
+ ## [0.8.45] - 2025-09-04
12
+ - Introduce handoff capability to tools. with the `takes_control()` function.
13
+
8
14
  ## [0.8.44] - 2025-09-03
9
15
  - Refine `EndpointClass` and create `EndpointRequestor`
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 0.8.44
3
+ Version: 0.8.46
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -117,6 +117,12 @@ All notable changes to this project will be documented in this file.
117
117
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
118
118
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
119
119
 
120
+ ## [0.8.46] - 2025-09-04
121
+ - Bugfix for hostname identification inside Unique cluster in `unique_settings.py`
122
+
123
+ ## [0.8.45] - 2025-09-04
124
+ - Introduce handoff capability to tools. with the `takes_control()` function.
125
+
120
126
  ## [0.8.44] - 2025-09-03
121
127
  - Refine `EndpointClass` and create `EndpointRequestor`
122
128
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "0.8.44"
3
+ version = "0.8.46"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -113,7 +113,9 @@ class UniqueApi(BaseSettings):
113
113
  ):
114
114
  base_path = "/public/chat-gen2/"
115
115
 
116
- if parsed.hostname and "localhost" in parsed.hostname:
116
+ if parsed.hostname and (
117
+ "localhost" in parsed.hostname or "svc.cluster.local" in parsed.hostname
118
+ ):
117
119
  base_path = "/public/"
118
120
 
119
121
  return parsed, base_path
@@ -49,6 +49,14 @@ class Tool(ABC, Generic[ConfigType]):
49
49
  """Whether the tool is enabled or not."""
50
50
  return self.settings.is_enabled
51
51
 
52
+ def takes_control(self):
53
+ """
54
+ Some tools require to take control of the conversation with the user and do not want the orchestrator to intervene.
55
+ this function indicates whether the tool takes control or not. It yanks the control away from the orchestrator.
56
+ A typical use-case is deep-research.
57
+ """
58
+ return False
59
+
52
60
  @abstractmethod
53
61
  def tool_description(self) -> LanguageModelToolDescription:
54
62
  raise NotImplementedError
@@ -164,6 +164,13 @@ class ToolManager:
164
164
  def get_tool_prompts(self) -> list[ToolPrompts]:
165
165
  return [tool.get_tool_prompts() for tool in self._tools]
166
166
 
167
+ def does_a_tool_take_control(self, tool_calls: list[LanguageModelFunction]) -> bool:
168
+ for tool_call in tool_calls:
169
+ tool_instance = self.get_tool_by_name(tool_call.name)
170
+ if tool_instance and tool_instance.takes_control():
171
+ return True
172
+ return False
173
+
167
174
  async def execute_selected_tools(
168
175
  self,
169
176
  tool_calls: list[LanguageModelFunction],
File without changes