unique_toolkit 1.1.4__tar.gz → 1.1.6__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 (135) hide show
  1. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/CHANGELOG.md +5 -0
  2. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/PKG-INFO +6 -1
  3. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/pyproject.toml +1 -1
  4. unique_toolkit-1.1.6/unique_toolkit/_common/utils/__init__.py +1 -0
  5. unique_toolkit-1.1.6/unique_toolkit/_common/utils/structured_output/__init__.py +1 -0
  6. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/config.py +48 -37
  7. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/schemas.py +1 -1
  8. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/tool.py +10 -0
  9. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/tool_manager.py +1 -4
  10. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/LICENSE +0 -0
  11. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/README.md +0 -0
  12. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/__init__.py +0 -0
  13. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  16. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/default_language_model.py +0 -0
  23. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/endpoint_builder.py +0 -0
  24. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  25. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/exception.py +0 -0
  26. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  27. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  28. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/string_utilities.py +0 -0
  29. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  30. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/token/token_counting.py +0 -0
  31. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  32. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  33. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/validate_required_values.py +0 -0
  34. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/_common/validators.py +0 -0
  35. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/__init__.py +0 -0
  36. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  37. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/config.py +0 -0
  38. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  39. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  40. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  41. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  42. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  43. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  44. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  45. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  46. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  47. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  48. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  49. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  50. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  51. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  52. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  53. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  54. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  55. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  56. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  57. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  58. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  59. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  60. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/__init__.py +0 -0
  61. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  62. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  63. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  64. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/memory.py +0 -0
  65. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/schema.py +0 -0
  66. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/a2a/service.py +0 -0
  67. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  68. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/factory.py +0 -0
  69. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  70. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  71. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  72. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  73. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  74. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  75. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  76. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  77. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  78. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  79. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  80. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  81. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  82. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  83. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/__init__.py +0 -0
  84. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/dev_util.py +0 -0
  85. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/init_logging.py +0 -0
  86. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/init_sdk.py +0 -0
  87. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/performance/async_tasks.py +0 -0
  88. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  89. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/schemas.py +0 -0
  90. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/unique_settings.py +0 -0
  91. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/app/verification.py +0 -0
  92. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/__init__.py +0 -0
  93. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/constants.py +0 -0
  94. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/functions.py +0 -0
  95. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/schemas.py +0 -0
  96. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/service.py +0 -0
  97. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/state.py +0 -0
  98. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/chat/utils.py +0 -0
  99. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/__init__.py +0 -0
  100. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/constants.py +0 -0
  101. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/functions.py +0 -0
  102. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/schemas.py +0 -0
  103. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/service.py +0 -0
  104. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/content/utils.py +0 -0
  105. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/__init__.py +0 -0
  106. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/constants.py +0 -0
  107. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/functions.py +0 -0
  108. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/schemas.py +0 -0
  109. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/service.py +0 -0
  110. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/embedding/utils.py +0 -0
  111. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/__init__.py +0 -0
  112. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  113. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  114. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  115. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  116. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  117. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/framework_utilities/utils.py +0 -0
  118. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/__init__.py +0 -0
  119. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/builder.py +0 -0
  120. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/constants.py +0 -0
  121. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/functions.py +0 -0
  122. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/infos.py +0 -0
  123. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/prompt.py +0 -0
  124. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/reference.py +0 -0
  125. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/schemas.py +0 -0
  126. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/service.py +0 -0
  127. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/language_model/utils.py +0 -0
  128. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/protocols/support.py +0 -0
  129. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/short_term_memory/__init__.py +0 -0
  130. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/short_term_memory/constants.py +0 -0
  131. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/short_term_memory/functions.py +0 -0
  132. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/short_term_memory/schemas.py +0 -0
  133. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/short_term_memory/service.py +0 -0
  134. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/smart_rules/__init__.py +0 -0
  135. {unique_toolkit-1.1.4 → unique_toolkit-1.1.6}/unique_toolkit/smart_rules/compile.py +0 -0
@@ -5,6 +5,11 @@ 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
+ ## [1.1.6] - 2025-09-23
9
+ - Fix model_dump for `ToolBuildConfig`
10
+
11
+ ## [1.1.5] - 2025-09-23
12
+ - Fix a circular import and add tests for `ToolBuildConfig`
8
13
 
9
14
  ## [1.1.4] - 2025-09-23
10
15
  - First version human verification on api calls
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -118,6 +118,11 @@ All notable changes to this project will be documented in this file.
118
118
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
119
119
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
120
120
 
121
+ ## [1.1.6] - 2025-09-23
122
+ - Fix model_dump for `ToolBuildConfig`
123
+
124
+ ## [1.1.5] - 2025-09-23
125
+ - Fix a circular import and add tests for `ToolBuildConfig`
121
126
 
122
127
  ## [1.1.4] - 2025-09-23
123
128
  - First version human verification on api calls
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.1.4"
3
+ version = "1.1.6"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -0,0 +1 @@
1
+ # Utils package for common utilities
@@ -0,0 +1 @@
1
+ # Structured output utilities package
@@ -1,41 +1,16 @@
1
+ import json
1
2
  from enum import StrEnum
2
- from typing import TYPE_CHECKING, Any
3
+ from typing import Any, Dict
3
4
 
4
- import humps
5
5
  from pydantic import (
6
6
  BaseModel,
7
- ConfigDict,
8
7
  Field,
9
8
  ValidationInfo,
10
9
  model_validator,
11
10
  )
12
- from pydantic.alias_generators import to_camel
13
- from pydantic.fields import ComputedFieldInfo, FieldInfo
14
11
 
15
- if TYPE_CHECKING:
16
- from unique_toolkit.agentic.tools.schemas import BaseToolConfig
17
-
18
-
19
- def field_title_generator(
20
- title: str,
21
- info: FieldInfo | ComputedFieldInfo,
22
- ) -> str:
23
- return humps.decamelize(title).replace("_", " ").title()
24
-
25
-
26
- def model_title_generator(model: type) -> str:
27
- return humps.decamelize(model.__name__).replace("_", " ").title()
28
-
29
-
30
- def get_configuration_dict(**kwargs) -> ConfigDict:
31
- return ConfigDict(
32
- alias_generator=to_camel,
33
- field_title_generator=field_title_generator,
34
- model_title_generator=model_title_generator,
35
- populate_by_name=True,
36
- protected_namespaces=(),
37
- **kwargs,
38
- )
12
+ from unique_toolkit._common.pydantic_helpers import get_configuration_dict
13
+ from unique_toolkit.agentic.tools.schemas import BaseToolConfig
39
14
 
40
15
 
41
16
  class ToolIcon(StrEnum):
@@ -63,7 +38,7 @@ class ToolBuildConfig(BaseModel):
63
38
  """Main tool configuration"""
64
39
 
65
40
  name: str
66
- configuration: "BaseToolConfig"
41
+ configuration: BaseToolConfig
67
42
  display_name: str = ""
68
43
  icon: ToolIcon = ToolIcon.BOOK
69
44
  selection_policy: ToolSelectionPolicy = Field(
@@ -124,10 +99,46 @@ class ToolBuildConfig(BaseModel):
124
99
  value["configuration"] = config
125
100
  return value
126
101
 
127
-
128
- def _rebuild_config_model():
129
- """Rebuild the ToolBuildConfig model to resolve forward references."""
130
- # Import here to avoid circular imports
131
- from unique_toolkit.agentic.tools.schemas import BaseToolConfig # noqa: F401
132
-
133
- ToolBuildConfig.model_rebuild()
102
+ def model_dump(self) -> Dict[str, Any]:
103
+ """
104
+ Returns a dict representation of the tool config that preserves
105
+ subclass fields from `configuration` by delegating to its own
106
+ model_dump. This prevents `{}` when `configuration` is typed
107
+ as `BaseToolConfig` but holds a subclass instance.
108
+ """
109
+ data: Dict[str, Any] = {
110
+ "name": self.name,
111
+ "configuration": self.configuration.model_dump()
112
+ if self.configuration
113
+ else None,
114
+ "display_name": self.display_name,
115
+ "icon": self.icon,
116
+ "selection_policy": self.selection_policy,
117
+ "is_exclusive": self.is_exclusive,
118
+ "is_sub_agent": self.is_sub_agent,
119
+ "is_enabled": self.is_enabled,
120
+ }
121
+ return data
122
+
123
+ def model_dump_json(self) -> str:
124
+ """
125
+ Returns a JSON string representation of the tool config.
126
+ Ensures `configuration` is fully serialized by using the
127
+ subclass's `model_dump_json()` when available.
128
+ """
129
+ config_json = (
130
+ self.configuration.model_dump_json() if self.configuration else None
131
+ )
132
+ config = json.loads(config_json) if config_json else None
133
+
134
+ data: Dict[str, Any] = {
135
+ "name": self.name,
136
+ "configuration": config,
137
+ "display_name": self.display_name,
138
+ "icon": self.icon,
139
+ "selection_policy": self.selection_policy,
140
+ "is_exclusive": self.is_exclusive,
141
+ "is_sub_agent": self.is_sub_agent,
142
+ "is_enabled": self.is_enabled,
143
+ }
144
+ return json.dumps(data)
@@ -5,7 +5,7 @@ from typing import Any, Optional
5
5
 
6
6
  from pydantic import BaseModel, ConfigDict, Field, field_serializer, field_validator
7
7
 
8
- from unique_toolkit.agentic.tools.config import get_configuration_dict
8
+ from unique_toolkit._common.pydantic_helpers import get_configuration_dict
9
9
  from unique_toolkit.agentic.tools.utils.source_handling.schema import SourceFormatConfig
10
10
  from unique_toolkit.content.schemas import ContentChunk
11
11
 
@@ -61,6 +61,11 @@ class Tool(ABC, Generic[ConfigType]):
61
61
  """
62
62
  return False
63
63
 
64
+ @property
65
+ def configuration(self) -> BaseToolConfig:
66
+ """The configuration of the tool."""
67
+ return self.settings.configuration
68
+
64
69
  @abstractmethod
65
70
  def tool_description(self) -> LanguageModelToolDescription:
66
71
  raise NotImplementedError
@@ -72,18 +77,23 @@ class Tool(ABC, Generic[ConfigType]):
72
77
  else:
73
78
  return cast("dict[str, Any]", parameters)
74
79
 
80
+ # TODO: This method should be a property
75
81
  def tool_description_for_system_prompt(self) -> str:
76
82
  return ""
77
83
 
84
+ # TODO: This method should be a property
78
85
  def tool_format_information_for_system_prompt(self) -> str:
79
86
  return ""
80
87
 
88
+ # TODO: This method should be a property
81
89
  def tool_description_for_user_prompt(self) -> str:
82
90
  return ""
83
91
 
92
+ # TODO: This method should be a property
84
93
  def tool_format_information_for_user_prompt(self) -> str:
85
94
  return ""
86
95
 
96
+ # TODO: This method should be a property
87
97
  def tool_format_reminder_for_user_prompt(self) -> str:
88
98
  """A short reminder for the user prompt for formatting rules for the tool.
89
99
  You can use this if the LLM fails to follow the formatting rules.
@@ -6,7 +6,7 @@ from pydantic import BaseModel, Field
6
6
 
7
7
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
8
8
  from unique_toolkit.agentic.tools.a2a.manager import A2AManager
9
- from unique_toolkit.agentic.tools.config import ToolBuildConfig, _rebuild_config_model
9
+ from unique_toolkit.agentic.tools.config import ToolBuildConfig
10
10
  from unique_toolkit.agentic.tools.factory import ToolFactory
11
11
  from unique_toolkit.agentic.tools.mcp.manager import MCPManager
12
12
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse, ToolPrompts
@@ -23,9 +23,6 @@ from unique_toolkit.language_model.schemas import (
23
23
  LanguageModelToolDescription,
24
24
  )
25
25
 
26
- # Rebuild the config model now that all imports are resolved
27
- _rebuild_config_model()
28
-
29
26
 
30
27
  class ForcedToolOption:
31
28
  type: str = "function"
File without changes
File without changes