unique_toolkit 1.16.5__tar.gz → 1.17.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 (174) hide show
  1. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/CHANGELOG.md +5 -0
  2. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/PKG-INFO +6 -1
  3. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/pyproject.toml +1 -1
  4. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +11 -2
  5. unique_toolkit-1.17.1/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +174 -0
  6. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +9 -0
  7. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +7 -1
  8. unique_toolkit-1.17.1/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +1279 -0
  9. unique_toolkit-1.16.5/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -122
  10. unique_toolkit-1.16.5/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -391
  11. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/LICENSE +0 -0
  12. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/README.md +0 -0
  13. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/__init__.py +0 -0
  14. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/_base_service.py +0 -0
  15. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/_time_utils.py +0 -0
  16. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  17. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  18. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  19. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  20. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  21. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  22. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  23. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/default_language_model.py +0 -0
  24. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  25. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  26. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/exception.py +0 -0
  27. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  28. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  29. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  30. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/string_utilities.py +0 -0
  31. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  32. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/token/token_counting.py +0 -0
  33. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/__init__.py +0 -0
  34. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/files.py +0 -0
  35. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  36. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  37. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  38. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/validate_required_values.py +0 -0
  39. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/validators.py +0 -0
  40. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/__init__.py +0 -0
  41. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  42. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  43. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  44. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  45. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  46. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  47. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  48. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  49. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  50. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  51. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  52. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  53. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  54. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  55. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  56. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  57. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  58. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  59. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  60. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  61. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  62. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  63. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  64. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  65. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  66. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  67. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  68. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  69. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  70. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  71. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  72. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  73. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  74. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  75. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  76. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  77. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  78. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  79. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  80. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  81. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  82. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  83. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  84. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  85. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  86. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  87. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  88. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  89. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/config.py +0 -0
  90. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/factory.py +0 -0
  91. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  92. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  93. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  94. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  95. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  96. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  97. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  98. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  99. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  100. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  101. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  102. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  103. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  104. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool.py +0 -0
  105. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  106. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  107. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  108. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  109. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  110. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  111. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  112. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  113. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  114. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/__init__.py +0 -0
  115. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/dev_util.py +0 -0
  116. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/init_logging.py +0 -0
  117. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/init_sdk.py +0 -0
  118. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  119. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  120. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/schemas.py +0 -0
  121. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/unique_settings.py +0 -0
  122. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/verification.py +0 -0
  123. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/__init__.py +0 -0
  124. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/constants.py +0 -0
  125. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/deprecated/service.py +0 -0
  126. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/functions.py +0 -0
  127. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/responses_api.py +0 -0
  128. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/schemas.py +0 -0
  129. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/service.py +0 -0
  130. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/state.py +0 -0
  131. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/utils.py +0 -0
  132. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/__init__.py +0 -0
  133. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/constants.py +0 -0
  134. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/functions.py +0 -0
  135. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/schemas.py +0 -0
  136. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/service.py +0 -0
  137. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/smart_rules.py +0 -0
  138. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/utils.py +0 -0
  139. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/__init__.py +0 -0
  140. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/constants.py +0 -0
  141. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/functions.py +0 -0
  142. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/schemas.py +0 -0
  143. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/service.py +0 -0
  144. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/utils.py +0 -0
  145. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  146. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  147. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  148. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  149. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  150. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  151. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/utils.py +0 -0
  152. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/__init__.py +0 -0
  153. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/builder.py +0 -0
  154. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/constants.py +0 -0
  155. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/default_language_model.py +0 -0
  156. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/functions.py +0 -0
  157. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/infos.py +0 -0
  158. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/prompt.py +0 -0
  159. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/reference.py +0 -0
  160. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/schemas.py +0 -0
  161. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/service.py +0 -0
  162. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/utils.py +0 -0
  163. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/protocols/support.py +0 -0
  164. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/__init__.py +0 -0
  165. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/chat_service.py +0 -0
  166. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/knowledge_base.py +0 -0
  167. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  168. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/constants.py +0 -0
  169. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/functions.py +0 -0
  170. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  171. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/service.py +0 -0
  172. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/smart_rules/__init__.py +0 -0
  173. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/smart_rules/compile.py +0 -0
  174. {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/test_utilities/events.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.17.1] - 2025-10-23
9
+ - Fix hallucination check input with all cited reference chunks.
10
+ ## [1.17.0] - 2025-10-22
11
+ - Add more options to display sub agent answers in the chat.
12
+
8
13
  ## [1.16.5] - 2025-10-16
9
14
  - Adding litellm models `litellm:anthropic-claude-haiku-4-5`
10
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.16.5
3
+ Version: 1.17.1
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.17.1] - 2025-10-23
122
+ - Fix hallucination check input with all cited reference chunks.
123
+ ## [1.17.0] - 2025-10-22
124
+ - Add more options to display sub agent answers in the chat.
125
+
121
126
  ## [1.16.5] - 2025-10-16
122
127
  - Adding litellm models `litellm:anthropic-claude-haiku-4-5`
123
128
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.16.5"
3
+ version = "1.17.1"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -1,3 +1,5 @@
1
+ import regex as re
2
+
1
3
  from unique_toolkit.agentic.evaluation.evaluation_manager import Evaluation
2
4
  from unique_toolkit.agentic.evaluation.hallucination.constants import (
3
5
  HallucinationConfig,
@@ -40,13 +42,20 @@ class HallucinationEvaluation(Evaluation):
40
42
  async def run(
41
43
  self, loop_response: LanguageModelStreamResponse
42
44
  ) -> EvaluationMetricResult: # type: ignore
43
- chunks = self._reference_manager.get_latest_referenced_chunks()
45
+ all_chunks = self._reference_manager.get_chunks()
46
+ # source numbers from original text
47
+ ref_pattern = r"\[source(\d+)\]"
48
+ original_text = loop_response.message.original_text
49
+ source_number_matches = re.findall(ref_pattern, original_text)
50
+ source_numbers = {int(num) for num in source_number_matches}
51
+
52
+ referenced_chunks = [all_chunks[idx] for idx in source_numbers]
44
53
 
45
54
  evaluation_result: EvaluationMetricResult = await check_hallucination(
46
55
  company_id=self._company_id,
47
56
  input=EvaluationMetricInput(
48
57
  input_text=self._user_message,
49
- context_texts=[context.text for context in chunks],
58
+ context_texts=[context.text for context in referenced_chunks],
50
59
  history_messages=[], # TODO include loop_history messages
51
60
  output_text=loop_response.message.text,
52
61
  ),
@@ -0,0 +1,174 @@
1
+ import re
2
+ from typing import Literal
3
+
4
+ from unique_toolkit.agentic.tools.a2a.postprocessing.config import (
5
+ SubAgentResponseDisplayMode,
6
+ )
7
+
8
+
9
+ def _wrap_text(text: str, start_text: str, end_text: str) -> str:
10
+ text = text.strip()
11
+ start_text = start_text.strip()
12
+ end_text = end_text.strip()
13
+
14
+ if start_text != "":
15
+ start_text = f"{start_text}\n"
16
+
17
+ if end_text != "":
18
+ end_text = f"\n{end_text}"
19
+
20
+ return f"{start_text}{text}{end_text}"
21
+
22
+
23
+ def _join_text_blocks(*blocks: str, sep: str = "\n") -> str:
24
+ return sep.join(block.strip() for block in blocks)
25
+
26
+
27
+ def _wrap_with_details_tag(
28
+ text, mode: Literal["open", "closed"], summary_name: str | None = None
29
+ ) -> str:
30
+ if summary_name is not None:
31
+ summary_tag = _wrap_text(summary_name, "<summary>", "</summary>")
32
+ text = _join_text_blocks(summary_tag, text)
33
+
34
+ if mode == "open":
35
+ text = _wrap_text(text, "<details open>", "</details>")
36
+ else:
37
+ text = _wrap_text(text, "<details>", "</details>")
38
+
39
+ return text
40
+
41
+
42
+ _BLOCK_BORDER_STYLE = (
43
+ "overflow-y: auto; border: 1px solid #ccc; padding: 8px; margin-top: 8px;"
44
+ )
45
+
46
+
47
+ def _wrap_with_block_border(text: str) -> str:
48
+ return _wrap_text(text, f"<div style='{_BLOCK_BORDER_STYLE}'>", "</div>")
49
+
50
+
51
+ _QUOTE_BORDER_STYLE = (
52
+ "margin-left: 20px; border-left: 2px solid #ccc; padding-left: 10px;"
53
+ )
54
+
55
+
56
+ def _wrap_with_quote_border(text: str) -> str:
57
+ return _wrap_text(text, f"<div style='{_QUOTE_BORDER_STYLE}'>", "</div>")
58
+
59
+
60
+ def _wrap_strong(text: str) -> str:
61
+ return _wrap_text(text, "<strong>", "</strong>")
62
+
63
+
64
+ def _wrap_hidden_div(text: str) -> str:
65
+ return _wrap_text(text, '<div style="display: none;">', "</div>")
66
+
67
+
68
+ def _add_line_break(text: str, before: bool = True, after: bool = True) -> str:
69
+ start_tag = ""
70
+ if before:
71
+ start_tag = "<br>"
72
+
73
+ end_tag = ""
74
+ if after:
75
+ end_tag = "<br>"
76
+
77
+ return _wrap_text(text, start_tag, end_tag)
78
+
79
+
80
+ def _get_display_template(
81
+ mode: SubAgentResponseDisplayMode,
82
+ add_quote_border: bool,
83
+ add_block_border: bool,
84
+ answer_placeholder: str = "answer",
85
+ assistant_id_placeholder: str = "assistant_id",
86
+ display_name_placeholder: str = "display_name",
87
+ ) -> str:
88
+ if mode == SubAgentResponseDisplayMode.HIDDEN:
89
+ return ""
90
+
91
+ assistant_id_placeholder = _wrap_hidden_div("{%s}" % assistant_id_placeholder)
92
+ display_name_placeholder = _wrap_strong("{%s}" % display_name_placeholder)
93
+ template = _join_text_blocks(
94
+ assistant_id_placeholder, "{%s}" % answer_placeholder, sep="\n\n"
95
+ ) # Double line break is needed for markdown formatting
96
+
97
+ if add_quote_border:
98
+ template = _wrap_with_quote_border(template)
99
+
100
+ match mode:
101
+ case SubAgentResponseDisplayMode.DETAILS_OPEN:
102
+ template = _wrap_with_details_tag(
103
+ template, "open", display_name_placeholder
104
+ )
105
+ case SubAgentResponseDisplayMode.DETAILS_CLOSED:
106
+ template = _wrap_with_details_tag(
107
+ template, "closed", display_name_placeholder
108
+ )
109
+ case SubAgentResponseDisplayMode.PLAIN:
110
+ display_name_placeholder = _add_line_break(
111
+ display_name_placeholder, before=False, after=True
112
+ )
113
+ template = _join_text_blocks(display_name_placeholder, template)
114
+ # Add a hidden block border to seperate sub agent answers from the rest of the text.
115
+ hidden_block_border = _wrap_hidden_div("sub_agent_answer_block")
116
+ template = _join_text_blocks(template, hidden_block_border)
117
+
118
+ if add_block_border:
119
+ template = _wrap_with_block_border(template)
120
+
121
+ return template
122
+
123
+
124
+ def _get_display_removal_re(
125
+ assistant_id: str,
126
+ mode: SubAgentResponseDisplayMode,
127
+ add_quote_border: bool,
128
+ add_block_border: bool,
129
+ ) -> re.Pattern[str]:
130
+ template = _get_display_template(
131
+ mode=mode,
132
+ add_quote_border=add_quote_border,
133
+ add_block_border=add_block_border,
134
+ )
135
+
136
+ pattern = template.format(
137
+ assistant_id=re.escape(assistant_id), answer=r"(.*?)", display_name=r"(.*?)"
138
+ )
139
+
140
+ return re.compile(pattern, flags=re.DOTALL)
141
+
142
+
143
+ def _build_sub_agent_answer_display(
144
+ display_name: str,
145
+ display_mode: SubAgentResponseDisplayMode,
146
+ add_quote_border: bool,
147
+ add_block_border: bool,
148
+ answer: str,
149
+ assistant_id: str,
150
+ ) -> str:
151
+ template = _get_display_template(
152
+ mode=display_mode,
153
+ add_quote_border=add_quote_border,
154
+ add_block_border=add_block_border,
155
+ )
156
+ return template.format(
157
+ display_name=display_name, answer=answer, assistant_id=assistant_id
158
+ )
159
+
160
+
161
+ def _remove_sub_agent_answer_from_text(
162
+ display_mode: SubAgentResponseDisplayMode,
163
+ add_quote_border: bool,
164
+ add_block_border: bool,
165
+ text: str,
166
+ assistant_id: str,
167
+ ) -> str:
168
+ pattern = _get_display_removal_re(
169
+ assistant_id=assistant_id,
170
+ mode=display_mode,
171
+ add_quote_border=add_quote_border,
172
+ add_block_border=add_block_border,
173
+ )
174
+ return re.sub(pattern, "", text)
@@ -9,6 +9,7 @@ class SubAgentResponseDisplayMode(StrEnum):
9
9
  HIDDEN = "hidden"
10
10
  DETAILS_OPEN = "details_open"
11
11
  DETAILS_CLOSED = "details_closed"
12
+ PLAIN = "plain"
12
13
 
13
14
 
14
15
  class SubAgentDisplayConfig(BaseModel):
@@ -22,3 +23,11 @@ class SubAgentDisplayConfig(BaseModel):
22
23
  default=True,
23
24
  description="If set, sub agent responses will be removed from the history on subsequent calls to the assistant.",
24
25
  )
26
+ add_quote_border: bool = Field(
27
+ default=True,
28
+ description="If set, a quote border is added to the left of the sub agent response.",
29
+ )
30
+ add_block_border: bool = Field(
31
+ default=False,
32
+ description="If set, a block border is added around the sub agent response.",
33
+ )
@@ -107,6 +107,8 @@ class SubAgentResponsesPostprocessor(Postprocessor):
107
107
  assistant_id=assistant_id,
108
108
  display_mode=display_mode,
109
109
  answer=message["text"],
110
+ add_quote_border=tool_info["display_config"].add_quote_border,
111
+ add_block_border=tool_info["display_config"].add_block_border,
110
112
  )
111
113
  )
112
114
 
@@ -122,7 +124,9 @@ class SubAgentResponsesPostprocessor(Postprocessor):
122
124
  for ref in message["references"]
123
125
  )
124
126
 
125
- loop_response.message.text = "\n".join(answers) + loop_response.message.text
127
+ loop_response.message.text = (
128
+ "\n\n".join(answers) + "<br>\n\n" + loop_response.message.text.strip()
129
+ )
126
130
 
127
131
  return True
128
132
 
@@ -135,6 +139,8 @@ class SubAgentResponsesPostprocessor(Postprocessor):
135
139
  display_mode=display_config.mode,
136
140
  text=text,
137
141
  assistant_id=assistant_id,
142
+ add_quote_border=display_config.add_quote_border,
143
+ add_block_border=display_config.add_block_border,
138
144
  )
139
145
  return text
140
146