unique_toolkit 1.16.1__tar.gz → 1.16.3__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 (172) hide show
  1. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/CHANGELOG.md +6 -0
  2. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/PKG-INFO +7 -1
  3. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/pyproject.toml +1 -1
  4. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/api_calling/human_verification_manager.py +3 -3
  5. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/endpoint_builder.py +15 -109
  6. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/endpoint_requestor.py +26 -33
  7. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +11 -0
  8. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/LICENSE +0 -0
  9. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/README.md +0 -0
  10. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/__init__.py +0 -0
  11. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/_base_service.py +0 -0
  12. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/_time_utils.py +0 -0
  13. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  14. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  15. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  16. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  17. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  18. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  19. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/default_language_model.py +0 -0
  20. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/exception.py +0 -0
  21. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  22. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  23. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  24. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/string_utilities.py +0 -0
  25. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  26. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/token/token_counting.py +0 -0
  27. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/utils/__init__.py +0 -0
  28. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/utils/files.py +0 -0
  29. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  30. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  31. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  32. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/validate_required_values.py +0 -0
  33. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/_common/validators.py +0 -0
  34. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/__init__.py +0 -0
  35. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  36. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  37. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/config.py +0 -0
  38. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  39. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  40. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  41. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  42. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  43. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  44. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  45. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  46. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  47. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  48. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  49. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  50. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  51. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  52. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  53. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  54. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  55. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  56. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  57. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  58. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  59. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  60. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  61. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  62. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  63. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  64. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/__init__.py +0 -0
  65. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  66. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  67. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  68. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  69. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  70. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  71. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  72. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  73. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  74. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  75. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  76. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  77. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  78. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  79. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  80. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  81. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  82. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  83. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  84. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  85. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  86. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  87. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  88. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/config.py +0 -0
  89. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/factory.py +0 -0
  90. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  91. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  92. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  93. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  94. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  95. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  96. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  97. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  98. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  99. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/schemas.py +0 -0
  100. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  101. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  102. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/tool.py +0 -0
  103. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  104. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  105. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  106. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  107. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  108. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  109. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  110. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  111. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  112. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/__init__.py +0 -0
  113. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/dev_util.py +0 -0
  114. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/init_logging.py +0 -0
  115. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/init_sdk.py +0 -0
  116. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/performance/async_tasks.py +0 -0
  117. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  118. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/schemas.py +0 -0
  119. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/unique_settings.py +0 -0
  120. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/app/verification.py +0 -0
  121. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/__init__.py +0 -0
  122. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/constants.py +0 -0
  123. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/deprecated/service.py +0 -0
  124. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/functions.py +0 -0
  125. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/responses_api.py +0 -0
  126. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/schemas.py +0 -0
  127. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/service.py +0 -0
  128. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/state.py +0 -0
  129. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/chat/utils.py +0 -0
  130. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/__init__.py +0 -0
  131. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/constants.py +0 -0
  132. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/functions.py +0 -0
  133. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/schemas.py +0 -0
  134. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/service.py +0 -0
  135. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/smart_rules.py +0 -0
  136. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/content/utils.py +0 -0
  137. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/__init__.py +0 -0
  138. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/constants.py +0 -0
  139. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/functions.py +0 -0
  140. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/schemas.py +0 -0
  141. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/service.py +0 -0
  142. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/embedding/utils.py +0 -0
  143. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/__init__.py +0 -0
  144. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  145. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  146. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  147. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  148. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  149. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/framework_utilities/utils.py +0 -0
  150. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/__init__.py +0 -0
  151. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/builder.py +0 -0
  152. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/constants.py +0 -0
  153. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/default_language_model.py +0 -0
  154. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/functions.py +0 -0
  155. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/infos.py +0 -0
  156. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/prompt.py +0 -0
  157. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/reference.py +0 -0
  158. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/schemas.py +0 -0
  159. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/service.py +0 -0
  160. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/language_model/utils.py +0 -0
  161. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/protocols/support.py +0 -0
  162. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/services/__init__.py +0 -0
  163. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/services/chat_service.py +0 -0
  164. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/services/knowledge_base.py +0 -0
  165. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/short_term_memory/__init__.py +0 -0
  166. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/short_term_memory/constants.py +0 -0
  167. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/short_term_memory/functions.py +0 -0
  168. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/short_term_memory/schemas.py +0 -0
  169. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/short_term_memory/service.py +0 -0
  170. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/smart_rules/__init__.py +0 -0
  171. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/smart_rules/compile.py +0 -0
  172. {unique_toolkit-1.16.1 → unique_toolkit-1.16.3}/unique_toolkit/test_utilities/events.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
+ ## [1.16.3] - 2025-10-18
9
+ - Add logging of MCP tool schema and constructed parameters
10
+
11
+ ## [1.16.2] - 2025-10-16
12
+ - Reduce operation dependency on path instead of full url
13
+
8
14
  ## [1.16.1] - 2025-10-16
9
15
  - Update debug info for better tool call tracking
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.16.1
3
+ Version: 1.16.3
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -118,6 +118,12 @@ 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.16.3] - 2025-10-18
122
+ - Add logging of MCP tool schema and constructed parameters
123
+
124
+ ## [1.16.2] - 2025-10-16
125
+ - Reduce operation dependency on path instead of full url
126
+
121
127
  ## [1.16.1] - 2025-10-16
122
128
  - Update debug info for better tool call tracking
123
129
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.16.1"
3
+ version = "1.16.3"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -280,9 +280,9 @@ if __name__ == "__main__":
280
280
  class CombinedParams(GetUserPathParams, GetUserRequestBody):
281
281
  pass
282
282
 
283
- UserEndpoint = build_api_operation(
283
+ UserApiOperation = build_api_operation(
284
284
  method=EndpointMethods.GET,
285
- url_template=Template("https://api.example.com/users/{user_id}"),
285
+ path_template=Template("/users/{user_id}"),
286
286
  path_params_constructor=GetUserPathParams,
287
287
  payload_constructor=GetUserRequestBody,
288
288
  response_model_type=UserResponse,
@@ -290,7 +290,7 @@ if __name__ == "__main__":
290
290
 
291
291
  human_verification_manager = HumanVerificationManagerForApiCalling(
292
292
  logger=logging.getLogger(__name__),
293
- operation=UserEndpoint,
293
+ operation=UserApiOperation,
294
294
  requestor_type=RequestorType.FAKE,
295
295
  return_value={"id": 100, "name": "John Doe"},
296
296
  )
@@ -4,7 +4,7 @@ the endpoints without having to know the details of the endpoints.
4
4
  """
5
5
 
6
6
  from enum import StrEnum
7
- from string import Formatter, Template
7
+ from string import Template
8
8
  from typing import (
9
9
  Any,
10
10
  Callable,
@@ -16,7 +16,6 @@ from typing import (
16
16
  )
17
17
 
18
18
  from pydantic import BaseModel
19
- from typing_extensions import deprecated
20
19
 
21
20
  # Paramspecs
22
21
  PayloadParamSpec = ParamSpec("PayloadParamSpec")
@@ -67,13 +66,12 @@ class ApiOperationProtocol(
67
66
  def response_model() -> type[ResponseType]: ...
68
67
 
69
68
  @staticmethod
70
- def create_url(
69
+ def create_path(
71
70
  *args: PathParamsSpec.args, **kwargs: PathParamsSpec.kwargs
72
71
  ) -> str: ...
73
72
 
74
73
  @staticmethod
75
- def create_url_from_model(path_params: PathParamsType) -> str: ...
76
-
74
+ def create_path_from_model(path_params: PathParamsType) -> str: ...
77
75
  @staticmethod
78
76
  def create_payload(
79
77
  *args: PayloadParamSpec.args, **kwargs: PayloadParamSpec.kwargs
@@ -98,7 +96,7 @@ class ApiOperationProtocol(
98
96
  def build_api_operation(
99
97
  *,
100
98
  method: HttpMethods,
101
- url_template: Template,
99
+ path_template: Template,
102
100
  path_params_constructor: Callable[PathParamsSpec, PathParamsType],
103
101
  payload_constructor: Callable[PayloadParamSpec, PayloadType],
104
102
  response_model_type: type[ResponseType],
@@ -143,33 +141,19 @@ def build_api_operation(
143
141
  return response_model_type
144
142
 
145
143
  @staticmethod
146
- def create_url(
147
- *args: PathParamsSpec.args,
148
- **kwargs: PathParamsSpec.kwargs,
149
- ) -> str:
150
- """Create URL from path parameters."""
151
- path_model = Operation.path_params_model()(*args, **kwargs)
152
- path_dict = path_model.model_dump(**dump_options)
153
-
154
- # Extract expected path parameters from template
155
- template_params = [
156
- fname
157
- for _, fname, _, _ in Formatter().parse(url_template.template)
158
- if fname is not None
159
- ]
160
-
161
- # Verify all required path parameters are present
162
- missing_params = [
163
- param for param in template_params if param not in path_dict
164
- ]
165
- if missing_params:
166
- raise ValueError(f"Missing path parameters: {missing_params}")
167
-
168
- return url_template.substitute(**path_dict)
144
+ def path_template() -> Template:
145
+ return path_template
169
146
 
170
147
  @staticmethod
171
- def create_url_from_model(path_params: PathParamsType) -> str:
172
- return url_template.substitute(**path_params.model_dump(**dump_options))
148
+ def create_path_from_model(path_params: PathParamsType) -> str:
149
+ return path_template.substitute(**path_params.model_dump(**dump_options))
150
+
151
+ @staticmethod
152
+ def create_path(
153
+ *args: PathParamsSpec.args, **kwargs: PathParamsSpec.kwargs
154
+ ) -> str:
155
+ model = Operation.path_params_model()(*args, **kwargs)
156
+ return Operation.create_path_from_model(model)
173
157
 
174
158
  @staticmethod
175
159
  def create_payload(
@@ -204,81 +188,3 @@ def build_api_operation(
204
188
  return path_params, payload
205
189
 
206
190
  return Operation
207
-
208
-
209
- @deprecated("Use ApiOperationProtocol instead")
210
- class EndpointClassProtocol(ApiOperationProtocol):
211
- pass
212
-
213
-
214
- @deprecated("Use build_api_operation instead")
215
- def build_endpoint_class(
216
- *,
217
- method: HttpMethods,
218
- url_template: Template,
219
- path_params_constructor: Callable[PathParamsSpec, PathParamsType],
220
- payload_constructor: Callable[PayloadParamSpec, PayloadType],
221
- response_model_type: type[ResponseType],
222
- dump_options: dict | None = None,
223
- ) -> type[
224
- ApiOperationProtocol[
225
- PathParamsSpec,
226
- PathParamsType,
227
- PayloadParamSpec,
228
- PayloadType,
229
- ResponseType,
230
- ]
231
- ]:
232
- return build_api_operation(
233
- method=method,
234
- url_template=url_template,
235
- path_params_constructor=path_params_constructor,
236
- payload_constructor=payload_constructor,
237
- response_model_type=response_model_type,
238
- dump_options=dump_options,
239
- )
240
-
241
-
242
- if __name__ == "__main__":
243
- # Example models
244
- class GetUserPathParams(BaseModel):
245
- """Path parameters for the user endpoint."""
246
-
247
- user_id: int
248
-
249
- class GetUserRequestBody(BaseModel):
250
- """Request body/query parameters for the user endpoint."""
251
-
252
- include_profile: bool = False
253
-
254
- class UserResponse(BaseModel):
255
- """Response model for user data."""
256
-
257
- id: int
258
- name: str
259
-
260
- # Example usage of make_endpoint_class
261
- UserOperation = build_endpoint_class(
262
- url_template=Template("/users/${user_id}"),
263
- path_params_constructor=GetUserPathParams,
264
- payload_constructor=GetUserRequestBody,
265
- response_model_type=UserResponse,
266
- method=EndpointMethods.GET,
267
- )
268
-
269
- # Create URL from path parameters
270
- url = UserOperation.create_url(user_id=123)
271
- print(f"URL: {url}")
272
-
273
- # Create payload from request body parameters
274
- payload = UserOperation.create_payload(include_profile=True)
275
- print(f"Payload: {payload}")
276
-
277
- # Create response from endpoint
278
- response = UserOperation.handle_response(
279
- {
280
- "id": 123,
281
- "name": "John Doe",
282
- }
283
- )
284
- print(f"Response: {response}")
@@ -2,7 +2,7 @@ from enum import StrEnum
2
2
  from typing import Any, Callable, Generic, Protocol, TypeVar
3
3
  from urllib.parse import urljoin, urlparse
4
4
 
5
- from pydantic import BaseModel
5
+ from pydantic import BaseModel, Field
6
6
  from typing_extensions import ParamSpec
7
7
 
8
8
  from unique_toolkit._common.endpoint_builder import (
@@ -25,25 +25,15 @@ CombinedParamsType = TypeVar("CombinedParamsType", bound=BaseModel)
25
25
  ResponseT_co = TypeVar("ResponseT_co", bound=BaseModel, covariant=True)
26
26
 
27
27
 
28
- def _construct_full_url(base_url: str, url: str) -> str:
29
- """
30
- Construct full URL from base_url and url.
31
- If base_url is provided and url is absolute, strip the scheme/netloc from url.
32
- """
33
- if not base_url:
34
- return url
35
-
36
- parsed = urlparse(url)
37
- if parsed.scheme:
38
- # URL is absolute, extract only path + query + fragment
39
- url = parsed._replace(scheme="", netloc="").geturl()
28
+ class RequestContext(BaseModel):
29
+ base_url: str
30
+ headers: dict[str, str] = Field(default_factory=dict)
40
31
 
41
- return urljoin(base_url, url)
42
32
 
43
-
44
- class RequestContext(BaseModel):
45
- base_url: str = ""
46
- headers: dict[str, str] | None = None
33
+ def _verify_url(url: str) -> None:
34
+ parse_result = urlparse(url)
35
+ if not (parse_result.netloc and parse_result.scheme):
36
+ raise ValueError("Scheme and netloc are required for url")
47
37
 
48
38
 
49
39
  class EndpointRequestorProtocol(Protocol, Generic[CombinedParamsSpec, ResponseT_co]):
@@ -142,12 +132,15 @@ def build_request_requestor(
142
132
  combined=kwargs
143
133
  )
144
134
 
145
- url = cls._operation.create_url_from_model(path_params)
135
+ path = cls._operation.create_path_from_model(path_params)
136
+ url = urljoin(context.base_url, path)
137
+ _verify_url(url)
138
+
146
139
  payload = cls._operation.create_payload_from_model(payload_model)
147
140
 
148
141
  response = requests.request(
149
142
  method=cls._operation.request_method(),
150
- url=_construct_full_url(context.base_url, url),
143
+ url=url,
151
144
  headers=context.headers,
152
145
  json=payload,
153
146
  )
@@ -198,13 +191,13 @@ def build_httpx_requestor(
198
191
  combined=kwargs
199
192
  )
200
193
 
194
+ path = cls._operation.create_path_from_model(path_params)
195
+ url = urljoin(context.base_url, path)
196
+ _verify_url(url)
201
197
  with httpx.Client() as client:
202
198
  response = client.request(
203
199
  method=cls._operation.request_method(),
204
- url=_construct_full_url(
205
- base_url=context.base_url,
206
- url=cls._operation.create_url_from_model(path_params),
207
- ),
200
+ url=url,
208
201
  headers=headers,
209
202
  json=cls._operation.create_payload_from_model(payload_model),
210
203
  )
@@ -223,13 +216,13 @@ def build_httpx_requestor(
223
216
  combined=kwargs
224
217
  )
225
218
 
219
+ path = cls._operation.create_path_from_model(path_params)
220
+ url = urljoin(context.base_url, path)
221
+ _verify_url(url)
226
222
  async with httpx.AsyncClient() as client:
227
223
  response = await client.request(
228
224
  method=cls._operation.request_method(),
229
- url=_construct_full_url(
230
- base_url=context.base_url,
231
- url=cls._operation.create_url_from_model(path_params),
232
- ),
225
+ url=url,
233
226
  headers=headers,
234
227
  json=cls._operation.create_payload_from_model(payload_model),
235
228
  )
@@ -279,14 +272,14 @@ def build_aiohttp_requestor(
279
272
  path_params, payload_model = cls._operation.models_from_combined(
280
273
  combined=kwargs
281
274
  )
275
+ path = cls._operation.create_path_from_model(path_params)
276
+ url = urljoin(context.base_url, path)
277
+ _verify_url(url)
282
278
 
283
279
  async with aiohttp.ClientSession() as session:
284
280
  response = await session.request(
285
281
  method=cls._operation.request_method(),
286
- url=_construct_full_url(
287
- base_url=context.base_url,
288
- url=cls._operation.create_url_from_model(path_params),
289
- ),
282
+ url=url,
290
283
  headers=headers,
291
284
  json=cls._operation.create_payload_from_model(payload_model),
292
285
  )
@@ -360,7 +353,7 @@ if __name__ == "__main__":
360
353
 
361
354
  UserEndpoint = build_api_operation(
362
355
  method=HttpMethods.GET,
363
- url_template=Template("https://api.example.com/users/{user_id}"),
356
+ path_template=Template("/users/{user_id}"),
364
357
  path_params_constructor=GetUserPathParams,
365
358
  payload_constructor=GetUserRequestBody,
366
359
  response_model_type=UserResponse,
@@ -1,4 +1,5 @@
1
1
  import json
2
+ import logging
2
3
  from typing import Any, Dict
3
4
 
4
5
  import unique_sdk
@@ -19,6 +20,8 @@ from unique_toolkit.language_model.schemas import (
19
20
  LanguageModelToolDescription,
20
21
  )
21
22
 
23
+ logger = logging.getLogger(__name__)
24
+
22
25
 
23
26
  class MCPToolWrapper(Tool[MCPToolConfig]):
24
27
  """Wrapper class for MCP tools that implements the Tool interface"""
@@ -39,7 +42,15 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
39
42
  def tool_description(self) -> LanguageModelToolDescription:
40
43
  """Convert MCP tool schema to LanguageModelToolDescription"""
41
44
  # Create a Pydantic model from the MCP tool's input schema
45
+ logger.info(
46
+ "MCP tool %s schema %s", self._mcp_tool.name, self._mcp_tool.input_schema
47
+ )
42
48
  parameters_model = self._create_parameters_model()
49
+ logger.info(
50
+ "MCP tool %s contructed params %s",
51
+ self._mcp_tool.name,
52
+ parameters_model.model_json_schema(),
53
+ )
43
54
 
44
55
  return LanguageModelToolDescription(
45
56
  name=self.name,
File without changes