unique_toolkit 0.8.55__tar.gz → 0.8.57__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 (130) hide show
  1. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/CHANGELOG.md +6 -0
  2. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/PKG-INFO +7 -1
  3. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/pyproject.toml +2 -2
  4. unique_toolkit-0.8.57/unique_toolkit/_common/utils/write_configuration.py +51 -0
  5. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/history_manager/history_manager.py +2 -2
  6. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/history_manager/utils.py +3 -3
  7. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/LICENSE +0 -0
  8. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/README.md +0 -0
  9. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/_base_service.py +0 -0
  11. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/_time_utils.py +0 -0
  12. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  13. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  14. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  15. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  16. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  17. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  18. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/default_language_model.py +0 -0
  19. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/endpoint_builder.py +0 -0
  20. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  21. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/exception.py +0 -0
  22. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  23. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  24. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  25. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/token/token_counting.py +0 -0
  26. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  27. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/validate_required_values.py +0 -0
  28. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/_common/validators.py +0 -0
  29. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/__init__.py +0 -0
  30. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/dev_util.py +0 -0
  31. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/init_logging.py +0 -0
  32. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/init_sdk.py +0 -0
  33. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/performance/async_tasks.py +0 -0
  34. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  35. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/schemas.py +0 -0
  36. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/unique_settings.py +0 -0
  37. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/app/verification.py +0 -0
  38. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/__init__.py +0 -0
  39. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/constants.py +0 -0
  40. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/functions.py +0 -0
  41. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/schemas.py +0 -0
  42. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/service.py +0 -0
  43. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/state.py +0 -0
  44. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/chat/utils.py +0 -0
  45. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/__init__.py +0 -0
  46. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/constants.py +0 -0
  47. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/functions.py +0 -0
  48. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/schemas.py +0 -0
  49. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/service.py +0 -0
  50. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/content/utils.py +0 -0
  51. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/debug_info_manager/debug_info_manager.py +0 -0
  52. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/__init__.py +0 -0
  53. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/constants.py +0 -0
  54. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/functions.py +0 -0
  55. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/schemas.py +0 -0
  56. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/service.py +0 -0
  57. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/embedding/utils.py +0 -0
  58. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/config.py +0 -0
  59. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/context_relevancy/prompts.py +0 -0
  60. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/context_relevancy/schema.py +0 -0
  61. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/context_relevancy/service.py +0 -0
  62. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/evaluation_manager.py +0 -0
  63. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/exception.py +0 -0
  64. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/hallucination/constants.py +0 -0
  65. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/hallucination/hallucination_evaluation.py +0 -0
  66. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/hallucination/prompts.py +0 -0
  67. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/hallucination/service.py +0 -0
  68. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/hallucination/utils.py +0 -0
  69. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/output_parser.py +0 -0
  70. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/schemas.py +0 -0
  71. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/tests/test_context_relevancy_service.py +0 -0
  72. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/evals/tests/test_output_parser.py +0 -0
  73. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/__init__.py +0 -0
  74. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  75. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  76. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  77. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  78. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  79. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/framework_utilities/utils.py +0 -0
  80. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/history_manager/history_construction_with_contents.py +0 -0
  81. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/history_manager/loop_token_reducer.py +0 -0
  82. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/__init__.py +0 -0
  83. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/builder.py +0 -0
  84. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/constants.py +0 -0
  85. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/functions.py +0 -0
  86. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/infos.py +0 -0
  87. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/prompt.py +0 -0
  88. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/reference.py +0 -0
  89. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/schemas.py +0 -0
  90. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/service.py +0 -0
  91. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/language_model/utils.py +0 -0
  92. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/postprocessor/postprocessor_manager.py +0 -0
  93. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/protocols/support.py +0 -0
  94. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/reference_manager/reference_manager.py +0 -0
  95. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/__init__.py +0 -0
  96. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/constants.py +0 -0
  97. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/functions.py +0 -0
  98. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/persistent_short_term_memory_manager.py +0 -0
  99. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/schemas.py +0 -0
  100. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/short_term_memory/service.py +0 -0
  101. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/smart_rules/__init__.py +0 -0
  102. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/smart_rules/compile.py +0 -0
  103. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/thinking_manager/thinking_manager.py +0 -0
  104. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/__init__.py +0 -0
  105. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/__init__.py +0 -0
  106. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/config.py +0 -0
  107. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/manager.py +0 -0
  108. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/memory.py +0 -0
  109. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/schema.py +0 -0
  110. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/a2a/service.py +0 -0
  111. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/agent_chunks_hanlder.py +0 -0
  112. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/config.py +0 -0
  113. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/factory.py +0 -0
  114. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/mcp/__init__.py +0 -0
  115. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/mcp/manager.py +0 -0
  116. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/mcp/models.py +0 -0
  117. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/mcp/tool_wrapper.py +0 -0
  118. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/schemas.py +0 -0
  119. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/test/test_mcp_manager.py +0 -0
  120. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
  121. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/tool.py +0 -0
  122. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/tool_manager.py +0 -0
  123. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
  124. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/__init__.py +0 -0
  125. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/execution/__init__.py +0 -0
  126. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/execution/execution.py +0 -0
  127. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/source_handling/__init__.py +0 -0
  128. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
  129. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
  130. {unique_toolkit-0.8.55 → unique_toolkit-0.8.57}/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.57] - 2025-09-14
9
+ - Added more utils to commons
10
+
11
+ ## [0.8.56] - 2025-09-12
12
+ - Fixed token counter in utils
13
+
8
14
  ## [0.8.55] - 2025-09-10
9
15
  - Update documentation with agentic managers
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 0.8.55
3
+ Version: 0.8.57
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -119,6 +119,12 @@ All notable changes to this project will be documented in this file.
119
119
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
120
120
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
121
121
 
122
+ ## [0.8.57] - 2025-09-14
123
+ - Added more utils to commons
124
+
125
+ ## [0.8.56] - 2025-09-12
126
+ - Fixed token counter in utils
127
+
122
128
  ## [0.8.55] - 2025-09-10
123
129
  - Update documentation with agentic managers
124
130
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "0.8.55"
3
+ version = "0.8.57"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -8,7 +8,7 @@ authors = [
8
8
  "Sadique Sheik <sadique@unique.ch>",
9
9
  "Fabian Schläpfer <fabian@unique.ch>",
10
10
  "Pascal Hauri <pascal@unique.ch>",
11
- "Ejiroghene Oki-Peter<oki-peter.ejiroghene@unique.ai>"
11
+ "Ejiroghene Oki-Peter<oki-peter.ejiroghene@unique.ai>",
12
12
  ]
13
13
  readme = ["README.md", "CHANGELOG.md"]
14
14
  license = "Proprietary"
@@ -0,0 +1,51 @@
1
+ import json
2
+ from pathlib import Path
3
+
4
+ from humps import kebabize, pascalize
5
+ from pydantic import BaseModel
6
+
7
+
8
+ def write_module_configuration_schema(
9
+ service_folderpath: Path,
10
+ write_folderpath: Path,
11
+ config: BaseModel,
12
+ sub_name: str = "",
13
+ ):
14
+ filename_prefix = pascalize(service_folderpath.name)
15
+
16
+ filepath = (
17
+ write_folderpath
18
+ / f"{filename_prefix}{f'-{sub_name}' if sub_name else ''}Schema.json"
19
+ )
20
+
21
+ with open(filepath, "w") as f:
22
+ json.dump(config.model_json_schema(by_alias=True), f, indent=4)
23
+
24
+
25
+ def write_service_configuration(
26
+ service_folderpath: Path,
27
+ write_folderpath: Path,
28
+ config: BaseModel,
29
+ sub_name: str = "",
30
+ ):
31
+ filename_prefix = kebabize(service_folderpath.name)
32
+
33
+ filepath = (
34
+ write_folderpath
35
+ / f"{filename_prefix}{f'-{sub_name}' if sub_name else ''}-configuration-schema.json"
36
+ )
37
+
38
+ with open(filepath, "w") as f:
39
+ json.dump(config.model_json_schema(by_alias=True), f, indent=4)
40
+ filepath = (
41
+ write_folderpath
42
+ / f"{filename_prefix}{f'-{sub_name}' if sub_name else ''}-default-configuration.json"
43
+ )
44
+
45
+ # We exclude language_model_info as it is infered from language_model_name
46
+ with open(filepath, "w") as f:
47
+ f.write(
48
+ config.model_dump_json(
49
+ by_alias=True, indent=4, exclude=set(["language_model_info"])
50
+ )
51
+ )
@@ -170,7 +170,7 @@ class HistoryManager:
170
170
  ) # it can be that the tool response does not have content chunks
171
171
 
172
172
  # Transform content chunks into sources to be appended to tool result
173
- sources = transform_chunks_to_string(
173
+ stringified_sources, sources = transform_chunks_to_string(
174
174
  content_chunks,
175
175
  self._source_enumerator,
176
176
  None, # Use None for SourceFormatConfig
@@ -183,7 +183,7 @@ class HistoryManager:
183
183
 
184
184
  # Append the result to the history
185
185
  return LanguageModelToolMessage(
186
- content=sources,
186
+ content=stringified_sources,
187
187
  tool_call_id=tool_response.id, # type: ignore
188
188
  name=tool_response.name,
189
189
  )
@@ -64,7 +64,7 @@ def transform_chunks_to_string(
64
64
  max_source_number: int,
65
65
  cfg: SourceFormatConfig | None,
66
66
  full_sources_serialize_dump: bool = False,
67
- ) -> str:
67
+ ) -> tuple[str, list[Source]]:
68
68
  """Transform content chunks into a string of sources.
69
69
 
70
70
  Args:
@@ -76,7 +76,7 @@ def transform_chunks_to_string(
76
76
  str: String for the tool call response
77
77
  """
78
78
  if not content_chunks:
79
- return "No relevant sources found."
79
+ return "No relevant sources found.", []
80
80
  if full_sources_serialize_dump:
81
81
  sources = [
82
82
  Source(
@@ -114,7 +114,7 @@ def transform_chunks_to_string(
114
114
  }
115
115
  for i, chunk in enumerate(content_chunks)
116
116
  ]
117
- return json.dumps(sources)
117
+ return json.dumps(sources), sources
118
118
 
119
119
 
120
120
  def load_sources_from_string(
File without changes