unique_toolkit 1.21.0__tar.gz → 1.21.1__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.

Potentially problematic release.


This version of unique_toolkit might be problematic. Click here for more details.

Files changed (173) hide show
  1. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/CHANGELOG.md +3 -0
  2. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/PKG-INFO +4 -1
  3. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/pyproject.toml +1 -1
  4. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +33 -17
  5. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +27 -26
  6. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/LICENSE +0 -0
  7. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/README.md +0 -0
  8. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/__init__.py +0 -0
  9. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/_base_service.py +0 -0
  10. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/_time_utils.py +0 -0
  11. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  12. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  13. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  14. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  15. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  16. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  17. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  18. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/default_language_model.py +0 -0
  19. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  20. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  21. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/exception.py +0 -0
  22. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  23. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  24. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  25. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/string_utilities.py +0 -0
  26. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  27. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/token/token_counting.py +0 -0
  28. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/utils/__init__.py +0 -0
  29. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/utils/files.py +0 -0
  30. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  31. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  32. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  33. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/validate_required_values.py +0 -0
  34. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/_common/validators.py +0 -0
  35. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/__init__.py +0 -0
  36. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  37. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  38. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  39. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  40. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  41. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  42. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  43. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  44. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  45. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  46. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  47. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  48. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  49. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  50. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  51. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  52. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  53. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  54. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  55. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  56. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  57. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  58. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  59. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  60. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  61. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  62. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  63. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  64. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  65. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  66. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  67. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  68. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  69. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  70. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  71. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  72. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  73. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  74. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  75. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  76. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  77. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  78. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  79. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  80. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  81. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  82. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  83. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  84. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  85. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  86. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  87. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  88. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  89. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/config.py +0 -0
  90. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/factory.py +0 -0
  91. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  92. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  93. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  94. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  95. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  96. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  97. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  98. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  99. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  100. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  101. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  102. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  103. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/tool.py +0 -0
  104. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  105. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  106. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  107. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  108. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  109. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  110. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  111. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  112. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/__init__.py +0 -0
  113. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/dev_util.py +0 -0
  114. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/init_logging.py +0 -0
  115. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/init_sdk.py +0 -0
  116. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  117. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  118. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/schemas.py +0 -0
  119. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/unique_settings.py +0 -0
  120. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/app/verification.py +0 -0
  121. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/__init__.py +0 -0
  122. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/constants.py +0 -0
  123. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/deprecated/service.py +0 -0
  124. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/functions.py +0 -0
  125. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/rendering.py +0 -0
  126. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/responses_api.py +0 -0
  127. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/schemas.py +0 -0
  128. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/service.py +0 -0
  129. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/state.py +0 -0
  130. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/chat/utils.py +0 -0
  131. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/__init__.py +0 -0
  132. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/constants.py +0 -0
  133. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/functions.py +0 -0
  134. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/schemas.py +0 -0
  135. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/service.py +0 -0
  136. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/smart_rules.py +0 -0
  137. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/content/utils.py +0 -0
  138. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/__init__.py +0 -0
  139. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/constants.py +0 -0
  140. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/functions.py +0 -0
  141. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/schemas.py +0 -0
  142. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/service.py +0 -0
  143. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/embedding/utils.py +0 -0
  144. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  145. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  146. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  147. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  148. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  149. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  150. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/framework_utilities/utils.py +0 -0
  151. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/__init__.py +0 -0
  152. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/builder.py +0 -0
  153. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/constants.py +0 -0
  154. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/default_language_model.py +0 -0
  155. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/functions.py +0 -0
  156. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/infos.py +0 -0
  157. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/prompt.py +0 -0
  158. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/reference.py +0 -0
  159. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/schemas.py +0 -0
  160. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/service.py +0 -0
  161. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/language_model/utils.py +0 -0
  162. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/protocols/support.py +0 -0
  163. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/services/__init__.py +0 -0
  164. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/services/chat_service.py +0 -0
  165. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/services/knowledge_base.py +0 -0
  166. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  167. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/short_term_memory/constants.py +0 -0
  168. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/short_term_memory/functions.py +0 -0
  169. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  170. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/short_term_memory/service.py +0 -0
  171. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/smart_rules/__init__.py +0 -0
  172. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/smart_rules/compile.py +0 -0
  173. {unique_toolkit-1.21.0 → unique_toolkit-1.21.1}/unique_toolkit/test_utilities/events.py +0 -0
@@ -6,6 +6,9 @@ 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
8
 
9
+ ## [1.21.1] - 2025-10-30
10
+ - Improve Spaces 2.0 display of tool progress reporter configuration.
11
+
9
12
  ## [1.21.0] - 2025-10-30
10
13
  - Add option to customize the display of tool progress statuses.
11
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.21.0
3
+ Version: 1.21.1
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -119,6 +119,9 @@ 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
121
 
122
+ ## [1.21.1] - 2025-10-30
123
+ - Improve Spaces 2.0 display of tool progress reporter configuration.
124
+
122
125
  ## [1.21.0] - 2025-10-30
123
126
  - Add option to customize the display of tool progress statuses.
124
127
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.21.0"
3
+ version = "1.21.1"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -252,8 +252,10 @@ class TestToolProgressReporterConfig:
252
252
  # Arrange
253
253
  custom_config = ToolProgressReporterConfig(
254
254
  state_to_display_template={
255
- ProgressState.RUNNING: " {tool_name}: {message}",
256
- ProgressState.FINISHED: " {tool_name}: {message}",
255
+ "started": " {tool_name}: {message}",
256
+ "running": " {tool_name}: {message}",
257
+ "finished": "✅ {tool_name}: {message}",
258
+ "failed": "❌ {tool_name}: {message}",
257
259
  }
258
260
  )
259
261
  reporter = ToolProgressReporter(chat_service, config=custom_config)
@@ -275,19 +277,21 @@ class TestToolProgressReporterConfig:
275
277
 
276
278
  @pytest.mark.ai
277
279
  @pytest.mark.asyncio
278
- async def test_config__skips_states_not_in_template__when_state_excluded(
280
+ async def test_config__skips_states_with_empty_template__when_state_hidden(
279
281
  self, chat_service, tool_call
280
282
  ) -> None:
281
283
  """
282
- Purpose: Verify that states not in the config mapping are not displayed.
284
+ Purpose: Verify that states with empty string templates are not displayed.
283
285
  Why this matters: Allows selective display of only certain states (e.g., hide STARTED).
284
- Setup summary: Create config excluding RUNNING state, verify message is not displayed.
286
+ Setup summary: Create config with empty string for RUNNING state, verify message is not displayed.
285
287
  """
286
288
  # Arrange
287
289
  custom_config = ToolProgressReporterConfig(
288
290
  state_to_display_template={
289
- ProgressState.FINISHED: "✅ {tool_name}: {message}",
290
- # RUNNING state is intentionally excluded
291
+ "started": "",
292
+ "running": "", # Empty string hides RUNNING state
293
+ "finished": "✅ {tool_name}: {message}",
294
+ "failed": "❌ {tool_name}: {message}",
291
295
  }
292
296
  )
293
297
  reporter = ToolProgressReporter(chat_service, config=custom_config)
@@ -304,7 +308,7 @@ class TestToolProgressReporterConfig:
304
308
  chat_service.modify_assistant_message_async.assert_called()
305
309
  call_args = chat_service.modify_assistant_message_async.call_args
306
310
  content = call_args.kwargs["content"]
307
- # Content should not contain the message since RUNNING is excluded
311
+ # Content should not contain the message since RUNNING template is empty
308
312
  assert "Processing" not in content
309
313
  assert "Test Tool" not in content
310
314
 
@@ -321,8 +325,10 @@ class TestToolProgressReporterConfig:
321
325
  # Arrange
322
326
  custom_config = ToolProgressReporterConfig(
323
327
  state_to_display_template={
324
- ProgressState.RUNNING: "▶️ {tool_name} - {message}",
325
- ProgressState.FINISHED: " {tool_name} - {message}",
328
+ "started": " {tool_name} - {message}",
329
+ "running": "▶️ {tool_name} - {message}",
330
+ "finished": "✓ {tool_name} - {message}",
331
+ "failed": "✗ {tool_name} - {message}",
326
332
  }
327
333
  )
328
334
  reporter = ToolProgressReporter(chat_service, config=custom_config)
@@ -355,14 +361,17 @@ class TestToolProgressReporterConfig:
355
361
  self, chat_service, tool_call
356
362
  ) -> None:
357
363
  """
358
- Purpose: Verify selective state display shows only FINISHED when it's the only state configured.
364
+ Purpose: Verify selective state display shows only FINISHED when other states use empty templates.
359
365
  Why this matters: Use case where user only wants final results, not intermediate steps.
360
- Setup summary: Configure only FINISHED state, send STARTED and FINISHED, verify only FINISHED appears.
366
+ Setup summary: Configure only FINISHED with content, send STARTED and FINISHED, verify only FINISHED appears.
361
367
  """
362
368
  # Arrange
363
369
  custom_config = ToolProgressReporterConfig(
364
370
  state_to_display_template={
365
- ProgressState.FINISHED: "Done: {tool_name} - {message}",
371
+ "started": "", # Empty template hides STARTED
372
+ "running": "", # Empty template hides RUNNING
373
+ "finished": "Done: {tool_name} - {message}",
374
+ "failed": "Failed: {tool_name} - {message}",
366
375
  }
367
376
  )
368
377
  reporter = ToolProgressReporter(chat_service, config=custom_config)
@@ -399,16 +408,23 @@ class TestToolProgressReporterConfig:
399
408
 
400
409
  @pytest.mark.ai
401
410
  @pytest.mark.asyncio
402
- async def test_config__handles_empty_template_dict__when_all_states_excluded(
411
+ async def test_config__handles_all_empty_templates__when_all_states_hidden(
403
412
  self, chat_service, tool_call
404
413
  ) -> None:
405
414
  """
406
- Purpose: Verify that an empty template dict results in no messages being displayed.
415
+ Purpose: Verify that all empty string templates result in no messages being displayed.
407
416
  Why this matters: Edge case handling and allows disabling all progress display.
408
- Setup summary: Create config with empty dict, verify no tool messages appear.
417
+ Setup summary: Create config with all empty templates, verify no tool messages appear.
409
418
  """
410
419
  # Arrange
411
- custom_config = ToolProgressReporterConfig(state_to_display_template={})
420
+ custom_config = ToolProgressReporterConfig(
421
+ state_to_display_template={
422
+ "started": "",
423
+ "running": "",
424
+ "finished": "",
425
+ "failed": "",
426
+ }
427
+ )
412
428
  reporter = ToolProgressReporter(chat_service, config=custom_config)
413
429
 
414
430
  # Act
@@ -2,7 +2,7 @@ import re
2
2
  from datetime import datetime
3
3
  from enum import StrEnum
4
4
  from functools import wraps
5
- from typing import Protocol
5
+ from typing import Protocol, TypedDict
6
6
 
7
7
  from pydantic import BaseModel, Field
8
8
 
@@ -33,39 +33,37 @@ class ToolExecutionStatus(BaseModel):
33
33
  timestamp: datetime = Field(default_factory=datetime.now)
34
34
 
35
35
 
36
- _DEFAULT_STATE_TO_DISPLAY_TEMPLATE = {
37
- ProgressState.FINISHED: "{arrow}**{{tool_name}}** 🟢: {{message}}".format(
38
- arrow=ARROW
39
- ),
40
- ProgressState.RUNNING: "{arrow}**{{tool_name}}** 🟡: {{message}}".format(
41
- arrow=ARROW
42
- ),
43
- ProgressState.FAILED: "{arrow}**{{tool_name}}** 🔴: {{message}}".format(
44
- arrow=ARROW
45
- ),
46
- ProgressState.STARTED: "{arrow}**{{tool_name}}** ⚪: {{message}}".format(
47
- arrow=ARROW
48
- ),
36
+ class StateToDisplayTemplate(TypedDict):
37
+ started: str
38
+ running: str
39
+ failed: str
40
+ finished: str
41
+
42
+
43
+ _DEFAULT_STATE_TO_DISPLAY_TEMPLATE: StateToDisplayTemplate = {
44
+ "started": "{arrow}**{{tool_name}}** ⚪: {{message}}".format(arrow=ARROW),
45
+ "running": "{arrow}**{{tool_name}}** 🟡: {{message}}".format(arrow=ARROW),
46
+ "finished": "{arrow}**{{tool_name}}** 🟢: {{message}}".format(arrow=ARROW),
47
+ "failed": "{arrow}**{{tool_name}}** 🔴: {{message}}".format(arrow=ARROW),
49
48
  }
50
49
 
51
50
 
52
51
  state_to_display_template_description = """
53
- A mapping progress states to display templates.
54
- The display template is a string that will be used to display the progress status.
55
- The template can contain the following placeholders:
52
+ Display templates for the different progress states.
53
+ The template is a string that will be used to display the progress status.
54
+ It can contain the following placeholders:
56
55
  - `{tool_name}`: The name of the tool
57
56
  - `{message}`: The message to display (sent by the tool)
58
-
59
- If a state is not present in the mapping, then updates for that state will not be displayed.
60
57
  """.strip()
61
58
 
62
59
 
63
60
  class ToolProgressReporterConfig(BaseModel):
64
61
  model_config = get_configuration_dict()
65
62
 
66
- state_to_display_template: dict[ProgressState, str] = Field(
63
+ state_to_display_template: StateToDisplayTemplate = Field(
67
64
  default=_DEFAULT_STATE_TO_DISPLAY_TEMPLATE,
68
65
  description=state_to_display_template_description,
66
+ title="Display Templates",
69
67
  )
70
68
 
71
69
 
@@ -188,12 +186,15 @@ class ToolProgressReporter:
188
186
  def _get_tool_status_display_message(
189
187
  self, name: str, message: str, state: ProgressState
190
188
  ) -> str | None:
191
- if state in self._config.state_to_display_template:
192
- return self._config.state_to_display_template[state].format(
193
- tool_name=name,
194
- message=message,
195
- )
196
- return None
189
+ display_message = self._config.state_to_display_template[state.value].format(
190
+ tool_name=name,
191
+ message=message,
192
+ )
193
+ # Don't display empty messages
194
+ if display_message.strip() == "":
195
+ return None
196
+
197
+ return display_message
197
198
 
198
199
 
199
200
  class ToolWithToolProgressReporter(Protocol):
File without changes